diff --git a/.version b/.version index 3e197472e2..e599014eab 100644 --- a/.version +++ b/.version @@ -1 +1 @@ -2.44.0 +2.45.0 diff --git a/cypress-tests/cypress/constants/selectors/postgreSql.js b/cypress-tests/cypress/constants/selectors/postgreSql.js index 5784383b40..49e0351656 100644 --- a/cypress-tests/cypress/constants/selectors/postgreSql.js +++ b/cypress-tests/cypress/constants/selectors/postgreSql.js @@ -4,6 +4,7 @@ export const postgreSqlSelector = { addDatasourceLink: "[data-cy='add-datasource-link']", allDatasourceLabelAndCount: '[data-cy="datasource-list-header"]', + commonlyUsedLabelAndCount: '[data-cy="commonlyused-datasource-button"]', databaseLabelAndCount: '[data-cy="databases-datasource-button"]', apiLabelAndCount: '[data-cy="apis-datasource-button"]', cloudStorageLabelAndCount: '[data-cy="cloudstorage-datasource-button"]', diff --git a/cypress-tests/cypress/constants/texts/postgreSql.js b/cypress-tests/cypress/constants/texts/postgreSql.js index 8536e7963e..c3733056c4 100644 --- a/cypress-tests/cypress/constants/texts/postgreSql.js +++ b/cypress-tests/cypress/constants/texts/postgreSql.js @@ -5,12 +5,13 @@ export const postgreSqlText = { allDataSources: () => { return Cypress.env("marketplace_action") ? "All data sources (44)" - : "All data sources (42)"; + : "All data sources (41)"; }, + commonlyUsed: "Commonly used (5)", allDatabase: () => { return Cypress.env("marketplace_action") ? "Databases (20)" - : "Databases (18)"; + : "Databases (17)"; }, allApis: "APIs (20)", allCloudStorage: "Cloud Storages (4)", diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/azureBlobStorageHappyPath.cy.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/azureBlobStorageHappyPath.cy.js index 8682c4bef9..81e2c2f192 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/azureBlobStorageHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/azureBlobStorageHappyPath.cy.js @@ -35,6 +35,10 @@ describe("Data source Azure Blob Storage", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/bigqueryHappyPath.cy.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/bigqueryHappyPath.cy.js index 9a86f5b466..e0e5db1bd4 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/bigqueryHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/bigqueryHappyPath.cy.js @@ -33,6 +33,10 @@ describe("Data source BigQuery", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/clickHouseHappyPath.cy.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/clickHouseHappyPath.cy.js index 8ab779704f..da601cbe30 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/clickHouseHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/clickHouseHappyPath.cy.js @@ -34,6 +34,10 @@ describe("Data sources", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/cosmosDbHappyPath.cy.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/cosmosDbHappyPath.cy.js index caa910dc53..12da4c9684 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/cosmosDbHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/cosmosDbHappyPath.cy.js @@ -34,6 +34,10 @@ describe("Data sources", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/couchDbHappyPath.cy.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/couchDbHappyPath.cy.js index 3c279a267c..240d8de87b 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/couchDbHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/couchDbHappyPath.cy.js @@ -35,6 +35,10 @@ describe("Data sources", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/dynamoDbHappyPath.cy.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/dynamoDbHappyPath.cy.js index 80c63daa2e..b8e588cf7d 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/dynamoDbHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/dynamoDbHappyPath.cy.js @@ -33,6 +33,10 @@ describe("Data source DynamoDB", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/elasticsearchHappyPath.cy.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/elasticsearchHappyPath.cy.js index 5996816931..774416c222 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/elasticsearchHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/elasticsearchHappyPath.cy.js @@ -29,6 +29,10 @@ describe("Data source Elasticsearch", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/fireStoreHappyPath.cy.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/fireStoreHappyPath.cy.js index 1a9eeb1c29..8792279352 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/fireStoreHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/fireStoreHappyPath.cy.js @@ -30,6 +30,10 @@ describe("Data source Firestore", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/influxDbHappyPath.cy.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/influxDbHappyPath.cy.js index 53ec069652..ee1d515a61 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/influxDbHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/influxDbHappyPath.cy.js @@ -37,6 +37,10 @@ describe("Data sources", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/mariaDbHappyPath.cy.skip.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/mariaDbHappyPath.cy.skip.js index 91b8baf933..3fafe5a23c 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/mariaDbHappyPath.cy.skip.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/mariaDbHappyPath.cy.skip.js @@ -33,6 +33,10 @@ describe("Data sources", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/mongoDbHappyPath.cy.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/mongoDbHappyPath.cy.js index ccf76e06fb..41d2a564fb 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/mongoDbHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/mongoDbHappyPath.cy.js @@ -40,6 +40,10 @@ describe("Data source MongoDB", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/mysqlHappyPath.cy.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/mysqlHappyPath.cy.js index e07f8d5c98..b6227b5d9d 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/mysqlHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/mysqlHappyPath.cy.js @@ -39,6 +39,10 @@ describe("Data sources MySql", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/oracleDbHappyPath.cy.skip.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/oracleDbHappyPath.cy.skip.js index fd90b4fd15..c42bda600b 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/oracleDbHappyPath.cy.skip.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/oracleDbHappyPath.cy.skip.js @@ -27,6 +27,10 @@ describe("Data sources", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/postgresHappyPath.cy.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/postgresHappyPath.cy.js index 4698deafa7..89b372e9d0 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/postgresHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/postgresHappyPath.cy.js @@ -35,6 +35,10 @@ describe("Data sources", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/redisHappyPath.cy.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/redisHappyPath.cy.js index ec3099b332..84658799b7 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/redisHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/redisHappyPath.cy.js @@ -32,6 +32,10 @@ describe("Data source Redis", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/rethinkDbHappyPath.cy.skip.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/rethinkDbHappyPath.cy.skip.js index fd1adba22e..8f04fa4572 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/rethinkDbHappyPath.cy.skip.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/rethinkDbHappyPath.cy.skip.js @@ -32,6 +32,10 @@ describe("Data sources", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/s3HappyPath.cy.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/s3HappyPath.cy.js index 1ce09d0e73..3e8a243c53 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/s3HappyPath.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/s3HappyPath.cy.js @@ -33,6 +33,10 @@ describe("Data sources AWS S3", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/sapHanaHappyPath.cy.skip.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/sapHanaHappyPath.cy.skip.js index 05eba6dfb9..813b2663c9 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/sapHanaHappyPath.cy.skip.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/sapHanaHappyPath.cy.skip.js @@ -30,6 +30,10 @@ describe("Data sources", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/smtpHappyPath.cy.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/smtpHappyPath.cy.js index 42f5e2ce43..90594f8122 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/smtpHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/smtpHappyPath.cy.js @@ -26,6 +26,10 @@ describe("Data source SMTP", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/snowflakeHappyPath.cy.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/snowflakeHappyPath.cy.js index 1b72ece15c..22f2afd08e 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/snowflakeHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/snowflakeHappyPath.cy.js @@ -33,6 +33,10 @@ describe("Data sources", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/sqlServerHappyPath.cy.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/sqlServerHappyPath.cy.js index c07fc0e118..aa578ed1df 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/sqlServerHappyPath.cy.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/sqlServerHappyPath.cy.js @@ -34,6 +34,10 @@ describe("Data sources", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/typeSenseHappyPath.cy.skip.js b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/typeSenseHappyPath.cy.skip.js index aaba0fb6ec..ff15053f09 100644 --- a/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/typeSenseHappyPath.cy.skip.js +++ b/cypress-tests/cypress/e2e/happyPath/marketplace/commonTestcases/data-source/typeSenseHappyPath.cy.skip.js @@ -34,6 +34,10 @@ describe("Data sources", () => { "have.text", postgreSqlText.allDataSources() ); + cy.get(postgreSqlSelector.commonlyUsedLabelAndCount).should( + "have.text", + postgreSqlText.commonlyUsed + ); cy.get(postgreSqlSelector.databaseLabelAndCount).should( "have.text", postgreSqlText.allDatabase() diff --git a/docs/docs/widgets/kanban-board.md b/docs/docs/widgets/kanban-board.md index ba6a9d90d3..ff7b6361fc 100644 --- a/docs/docs/widgets/kanban-board.md +++ b/docs/docs/widgets/kanban-board.md @@ -143,4 +143,4 @@ Under the General accordion, you can set the value in the string format. | Visibility | This is to control the visibility of the component. If `{{false}}`/disabled the component will not visible after the app is deployed. By default, it's enabled (set to `{{true}}`). | | Accent color | You can change the accent color of the column title by entering the Hex color code or choosing a color of your choice from the color picker. | - \ No newline at end of file + diff --git a/frontend/.version b/frontend/.version index 3e197472e2..e599014eab 100644 --- a/frontend/.version +++ b/frontend/.version @@ -1 +1 @@ -2.44.0 +2.45.0 diff --git a/frontend/assets/images/icons/copy.svg b/frontend/assets/images/icons/copy.svg index 9d9da36a32..959331cf3a 100644 --- a/frontend/assets/images/icons/copy.svg +++ b/frontend/assets/images/icons/copy.svg @@ -1,45 +1,4 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - + + + diff --git a/frontend/assets/images/icons/portal-open.svg b/frontend/assets/images/icons/portal-open.svg index 88acba83ad..db2c1b0630 100644 --- a/frontend/assets/images/icons/portal-open.svg +++ b/frontend/assets/images/icons/portal-open.svg @@ -1,3 +1,3 @@ - - + + \ No newline at end of file diff --git a/frontend/assets/images/icons/tj-info-error.svg b/frontend/assets/images/icons/tj-info-error.svg new file mode 100644 index 0000000000..f90d79beee --- /dev/null +++ b/frontend/assets/images/icons/tj-info-error.svg @@ -0,0 +1,3 @@ + + + diff --git a/frontend/package-lock.json b/frontend/package-lock.json index ed5bdede1f..3b4884c2aa 100644 --- a/frontend/package-lock.json +++ b/frontend/package-lock.json @@ -8,6 +8,14 @@ "name": "frontend", "version": "0.1.0", "dependencies": { + "@codemirror/autocomplete": "^6.12.0", + "@codemirror/commands": "^6.3.3", + "@codemirror/lang-javascript": "^6.2.1", + "@codemirror/lang-python": "^6.1.3", + "@codemirror/lang-sass": "^6.0.2", + "@codemirror/lang-sql": "^6.5.5", + "@codemirror/language": "^6.10.0", + "@codemirror/view": "^6.24.0", "@dnd-kit/core": "^6.0.7", "@dnd-kit/sortable": "^7.0.2", "@dnd-kit/utilities": "^3.2.1", @@ -22,9 +30,14 @@ "@sentry/tracing": "^7.100.1", "@sentry/webpack-plugin": "^2.14.0", "@tabler/icons-react": "^2.4.0", + "@textea/json-viewer": "^3.3.2", "@tooljet/plugins": "../plugins", - "@uiw/react-codemirror": "^3.0.6", + "@uiw/codemirror-theme-github": "^4.21.21", + "@uiw/codemirror-theme-okaidia": "^4.21.21", + "@uiw/codemirror-themes": "^4.21.21", + "@uiw/react-codemirror": "^4.21.21", "@y-presence/react": "^2.0.1", + "acorn": "^8.11.3", "array-move": "^4.0.0", "axios": "^1.3.3", "bootstrap": "^5.2.3", @@ -87,6 +100,7 @@ "react-loading-skeleton": "^3.1.1", "react-markdown": "^9.0.0", "react-mentions": "^4.4.7", + "react-moveable": "^0.54.1", "react-multi-select-component": "^4.3.4", "react-pdf": "^6.2.2", "react-phone-input-2": "^2.15.1", @@ -237,12179 +251,10 @@ "typescript": "^4.9.5" } }, - "../plugins/node_modules/@aws-crypto/crc32": { - "version": "3.0.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" - } - }, - "../plugins/node_modules/@aws-crypto/crc32c": { - "version": "3.0.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" - } - }, - "../plugins/node_modules/@aws-crypto/ie11-detection": { - "version": "3.0.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^1.11.1" - } - }, - "../plugins/node_modules/@aws-crypto/sha1-browser": { - "version": "3.0.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/ie11-detection": "^3.0.0", - "@aws-crypto/supports-web-crypto": "^3.0.0", - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" - } - }, - "../plugins/node_modules/@aws-crypto/sha256-browser": { - "version": "3.0.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/ie11-detection": "^3.0.0", - "@aws-crypto/sha256-js": "^3.0.0", - "@aws-crypto/supports-web-crypto": "^3.0.0", - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-locate-window": "^3.0.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" - } - }, - "../plugins/node_modules/@aws-crypto/sha256-js": { - "version": "3.0.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/util": "^3.0.0", - "@aws-sdk/types": "^3.222.0", - "tslib": "^1.11.1" - } - }, - "../plugins/node_modules/@aws-crypto/supports-web-crypto": { - "version": "3.0.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^1.11.1" - } - }, - "../plugins/node_modules/@aws-crypto/util": { - "version": "3.0.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "^3.222.0", - "@aws-sdk/util-utf8-browser": "^3.0.0", - "tslib": "^1.11.1" - } - }, - "../plugins/node_modules/@aws-sdk/abort-controller": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/abort-controller/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.289.0", - "@aws-sdk/config-resolver": "3.289.0", - "@aws-sdk/credential-provider-node": "3.289.0", - "@aws-sdk/fetch-http-handler": "3.289.0", - "@aws-sdk/hash-node": "3.289.0", - "@aws-sdk/invalid-dependency": "3.289.0", - "@aws-sdk/middleware-content-length": "3.289.0", - "@aws-sdk/middleware-endpoint": "3.289.0", - "@aws-sdk/middleware-host-header": "3.289.0", - "@aws-sdk/middleware-logger": "3.289.0", - "@aws-sdk/middleware-recursion-detection": "3.289.0", - "@aws-sdk/middleware-retry": "3.289.0", - "@aws-sdk/middleware-serde": "3.289.0", - "@aws-sdk/middleware-signing": "3.289.0", - "@aws-sdk/middleware-stack": "3.289.0", - "@aws-sdk/middleware-user-agent": "3.289.0", - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/node-http-handler": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/smithy-client": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.289.0", - "@aws-sdk/util-defaults-mode-node": "3.289.0", - "@aws-sdk/util-endpoints": "3.289.0", - "@aws-sdk/util-retry": "3.289.0", - "@aws-sdk/util-user-agent-browser": "3.289.0", - "@aws-sdk/util-user-agent-node": "3.289.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/abort-controller": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/client-sso": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.289.0", - "@aws-sdk/fetch-http-handler": "3.289.0", - "@aws-sdk/hash-node": "3.289.0", - "@aws-sdk/invalid-dependency": "3.289.0", - "@aws-sdk/middleware-content-length": "3.289.0", - "@aws-sdk/middleware-endpoint": "3.289.0", - "@aws-sdk/middleware-host-header": "3.289.0", - "@aws-sdk/middleware-logger": "3.289.0", - "@aws-sdk/middleware-recursion-detection": "3.289.0", - "@aws-sdk/middleware-retry": "3.289.0", - "@aws-sdk/middleware-serde": "3.289.0", - "@aws-sdk/middleware-stack": "3.289.0", - "@aws-sdk/middleware-user-agent": "3.289.0", - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/node-http-handler": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/smithy-client": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.289.0", - "@aws-sdk/util-defaults-mode-node": "3.289.0", - "@aws-sdk/util-endpoints": "3.289.0", - "@aws-sdk/util-retry": "3.289.0", - "@aws-sdk/util-user-agent-browser": "3.289.0", - "@aws-sdk/util-user-agent-node": "3.289.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.289.0", - "@aws-sdk/fetch-http-handler": "3.289.0", - "@aws-sdk/hash-node": "3.289.0", - "@aws-sdk/invalid-dependency": "3.289.0", - "@aws-sdk/middleware-content-length": "3.289.0", - "@aws-sdk/middleware-endpoint": "3.289.0", - "@aws-sdk/middleware-host-header": "3.289.0", - "@aws-sdk/middleware-logger": "3.289.0", - "@aws-sdk/middleware-recursion-detection": "3.289.0", - "@aws-sdk/middleware-retry": "3.289.0", - "@aws-sdk/middleware-serde": "3.289.0", - "@aws-sdk/middleware-stack": "3.289.0", - "@aws-sdk/middleware-user-agent": "3.289.0", - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/node-http-handler": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/smithy-client": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.289.0", - "@aws-sdk/util-defaults-mode-node": "3.289.0", - "@aws-sdk/util-endpoints": "3.289.0", - "@aws-sdk/util-retry": "3.289.0", - "@aws-sdk/util-user-agent-browser": "3.289.0", - "@aws-sdk/util-user-agent-node": "3.289.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/client-sts": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.289.0", - "@aws-sdk/credential-provider-node": "3.289.0", - "@aws-sdk/fetch-http-handler": "3.289.0", - "@aws-sdk/hash-node": "3.289.0", - "@aws-sdk/invalid-dependency": "3.289.0", - "@aws-sdk/middleware-content-length": "3.289.0", - "@aws-sdk/middleware-endpoint": "3.289.0", - "@aws-sdk/middleware-host-header": "3.289.0", - "@aws-sdk/middleware-logger": "3.289.0", - "@aws-sdk/middleware-recursion-detection": "3.289.0", - "@aws-sdk/middleware-retry": "3.289.0", - "@aws-sdk/middleware-sdk-sts": "3.289.0", - "@aws-sdk/middleware-serde": "3.289.0", - "@aws-sdk/middleware-signing": "3.289.0", - "@aws-sdk/middleware-stack": "3.289.0", - "@aws-sdk/middleware-user-agent": "3.289.0", - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/node-http-handler": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/smithy-client": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.289.0", - "@aws-sdk/util-defaults-mode-node": "3.289.0", - "@aws-sdk/util-endpoints": "3.289.0", - "@aws-sdk/util-retry": "3.289.0", - "@aws-sdk/util-user-agent-browser": "3.289.0", - "@aws-sdk/util-user-agent-node": "3.289.0", - "@aws-sdk/util-utf8": "3.254.0", - "fast-xml-parser": "4.1.2", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/config-resolver": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/signature-v4": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-config-provider": "3.208.0", - "@aws-sdk/util-middleware": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-imds": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.289.0", - "@aws-sdk/credential-provider-imds": "3.289.0", - "@aws-sdk/credential-provider-process": "3.289.0", - "@aws-sdk/credential-provider-sso": "3.289.0", - "@aws-sdk/credential-provider-web-identity": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.289.0", - "@aws-sdk/credential-provider-imds": "3.289.0", - "@aws-sdk/credential-provider-ini": "3.289.0", - "@aws-sdk/credential-provider-process": "3.289.0", - "@aws-sdk/credential-provider-sso": "3.289.0", - "@aws-sdk/credential-provider-web-identity": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-sso": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/token-providers": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/fetch-http-handler": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/querystring-builder": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-base64": "3.208.0", - "tslib": "^2.3.1" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/hash-node": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-buffer-from": "3.208.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/invalid-dependency": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-content-length": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-endpoint": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-serde": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/signature-v4": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "@aws-sdk/util-config-provider": "3.208.0", - "@aws-sdk/util-middleware": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-logger": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-retry": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/service-error-classification": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-middleware": "3.289.0", - "@aws-sdk/util-retry": "3.289.0", - "tslib": "^2.3.1", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-sdk-sts": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-signing": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/signature-v4": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-serde": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-signing": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/signature-v4": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-middleware": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-stack": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/node-config-provider": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/node-http-handler": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/abort-controller": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/querystring-builder": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/property-provider": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/protocol-http": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/querystring-builder": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-uri-escape": "3.201.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/querystring-parser": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/service-error-classification": { - "version": "3.289.0", - "license": "Apache-2.0", - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/shared-ini-file-loader": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/signature-v4": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/is-array-buffer": "3.201.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-hex-encoding": "3.201.0", - "@aws-sdk/util-middleware": "3.289.0", - "@aws-sdk/util-uri-escape": "3.201.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/smithy-client": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-stack": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/token-providers": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-sso-oidc": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/types": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/url-parser": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/querystring-parser": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/util-defaults-mode-browser": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "bowser": "^2.11.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/util-defaults-mode-node": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/config-resolver": "3.289.0", - "@aws-sdk/credential-provider-imds": "3.289.0", - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/util-endpoints": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/util-middleware": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/util-retry": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/service-error-classification": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "bowser": "^2.11.0", - "tslib": "^2.3.1" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/fast-xml-parser": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - }, - "funding": { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/client-cognito-identity/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3": { - "version": "3.454.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha1-browser": "3.0.0", - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.454.0", - "@aws-sdk/core": "3.451.0", - "@aws-sdk/credential-provider-node": "3.451.0", - "@aws-sdk/middleware-bucket-endpoint": "3.451.0", - "@aws-sdk/middleware-expect-continue": "3.451.0", - "@aws-sdk/middleware-flexible-checksums": "3.451.0", - "@aws-sdk/middleware-host-header": "3.451.0", - "@aws-sdk/middleware-location-constraint": "3.451.0", - "@aws-sdk/middleware-logger": "3.451.0", - "@aws-sdk/middleware-recursion-detection": "3.451.0", - "@aws-sdk/middleware-sdk-s3": "3.451.0", - "@aws-sdk/middleware-signing": "3.451.0", - "@aws-sdk/middleware-ssec": "3.451.0", - "@aws-sdk/middleware-user-agent": "3.451.0", - "@aws-sdk/region-config-resolver": "3.451.0", - "@aws-sdk/signature-v4-multi-region": "3.451.0", - "@aws-sdk/types": "3.451.0", - "@aws-sdk/util-endpoints": "3.451.0", - "@aws-sdk/util-user-agent-browser": "3.451.0", - "@aws-sdk/util-user-agent-node": "3.451.0", - "@aws-sdk/xml-builder": "3.310.0", - "@smithy/config-resolver": "^2.0.18", - "@smithy/eventstream-serde-browser": "^2.0.13", - "@smithy/eventstream-serde-config-resolver": "^2.0.13", - "@smithy/eventstream-serde-node": "^2.0.13", - "@smithy/fetch-http-handler": "^2.2.6", - "@smithy/hash-blob-browser": "^2.0.14", - "@smithy/hash-node": "^2.0.15", - "@smithy/hash-stream-node": "^2.0.15", - "@smithy/invalid-dependency": "^2.0.13", - "@smithy/md5-js": "^2.0.15", - "@smithy/middleware-content-length": "^2.0.15", - "@smithy/middleware-endpoint": "^2.2.0", - "@smithy/middleware-retry": "^2.0.20", - "@smithy/middleware-serde": "^2.0.13", - "@smithy/middleware-stack": "^2.0.7", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/node-http-handler": "^2.1.9", - "@smithy/protocol-http": "^3.0.9", - "@smithy/smithy-client": "^2.1.15", - "@smithy/types": "^2.5.0", - "@smithy/url-parser": "^2.0.13", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.19", - "@smithy/util-defaults-mode-node": "^2.0.25", - "@smithy/util-endpoints": "^1.0.4", - "@smithy/util-retry": "^2.0.6", - "@smithy/util-stream": "^2.0.20", - "@smithy/util-utf8": "^2.0.2", - "@smithy/util-waiter": "^2.0.13", - "fast-xml-parser": "4.2.5", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/client-sso": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.451.0", - "@aws-sdk/middleware-host-header": "3.451.0", - "@aws-sdk/middleware-logger": "3.451.0", - "@aws-sdk/middleware-recursion-detection": "3.451.0", - "@aws-sdk/middleware-user-agent": "3.451.0", - "@aws-sdk/region-config-resolver": "3.451.0", - "@aws-sdk/types": "3.451.0", - "@aws-sdk/util-endpoints": "3.451.0", - "@aws-sdk/util-user-agent-browser": "3.451.0", - "@aws-sdk/util-user-agent-node": "3.451.0", - "@smithy/config-resolver": "^2.0.18", - "@smithy/fetch-http-handler": "^2.2.6", - "@smithy/hash-node": "^2.0.15", - "@smithy/invalid-dependency": "^2.0.13", - "@smithy/middleware-content-length": "^2.0.15", - "@smithy/middleware-endpoint": "^2.2.0", - "@smithy/middleware-retry": "^2.0.20", - "@smithy/middleware-serde": "^2.0.13", - "@smithy/middleware-stack": "^2.0.7", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/node-http-handler": "^2.1.9", - "@smithy/protocol-http": "^3.0.9", - "@smithy/smithy-client": "^2.1.15", - "@smithy/types": "^2.5.0", - "@smithy/url-parser": "^2.0.13", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.19", - "@smithy/util-defaults-mode-node": "^2.0.25", - "@smithy/util-endpoints": "^1.0.4", - "@smithy/util-retry": "^2.0.6", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/client-sts": { - "version": "3.454.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/core": "3.451.0", - "@aws-sdk/credential-provider-node": "3.451.0", - "@aws-sdk/middleware-host-header": "3.451.0", - "@aws-sdk/middleware-logger": "3.451.0", - "@aws-sdk/middleware-recursion-detection": "3.451.0", - "@aws-sdk/middleware-sdk-sts": "3.451.0", - "@aws-sdk/middleware-signing": "3.451.0", - "@aws-sdk/middleware-user-agent": "3.451.0", - "@aws-sdk/region-config-resolver": "3.451.0", - "@aws-sdk/types": "3.451.0", - "@aws-sdk/util-endpoints": "3.451.0", - "@aws-sdk/util-user-agent-browser": "3.451.0", - "@aws-sdk/util-user-agent-node": "3.451.0", - "@smithy/config-resolver": "^2.0.18", - "@smithy/fetch-http-handler": "^2.2.6", - "@smithy/hash-node": "^2.0.15", - "@smithy/invalid-dependency": "^2.0.13", - "@smithy/middleware-content-length": "^2.0.15", - "@smithy/middleware-endpoint": "^2.2.0", - "@smithy/middleware-retry": "^2.0.20", - "@smithy/middleware-serde": "^2.0.13", - "@smithy/middleware-stack": "^2.0.7", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/node-http-handler": "^2.1.9", - "@smithy/protocol-http": "^3.0.9", - "@smithy/smithy-client": "^2.1.15", - "@smithy/types": "^2.5.0", - "@smithy/url-parser": "^2.0.13", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.19", - "@smithy/util-defaults-mode-node": "^2.0.25", - "@smithy/util-endpoints": "^1.0.4", - "@smithy/util-retry": "^2.0.6", - "@smithy/util-utf8": "^2.0.2", - "fast-xml-parser": "4.2.5", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.451.0", - "@aws-sdk/credential-provider-process": "3.451.0", - "@aws-sdk/credential-provider-sso": "3.451.0", - "@aws-sdk/credential-provider-web-identity": "3.451.0", - "@aws-sdk/types": "3.451.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.451.0", - "@aws-sdk/credential-provider-ini": "3.451.0", - "@aws-sdk/credential-provider-process": "3.451.0", - "@aws-sdk/credential-provider-sso": "3.451.0", - "@aws-sdk/credential-provider-web-identity": "3.451.0", - "@aws-sdk/types": "3.451.0", - "@smithy/credential-provider-imds": "^2.0.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-sso": "3.451.0", - "@aws-sdk/token-providers": "3.451.0", - "@aws-sdk/types": "3.451.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-logger": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@aws-sdk/util-arn-parser": "3.310.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/smithy-client": "^2.1.15", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-sdk-sts": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-signing": "3.451.0", - "@aws-sdk/types": "3.451.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-signing": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.5.0", - "@smithy/util-middleware": "^2.0.6", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@aws-sdk/util-endpoints": "3.451.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/signature-v4": "^2.0.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/token-providers": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/middleware-host-header": "3.451.0", - "@aws-sdk/middleware-logger": "3.451.0", - "@aws-sdk/middleware-recursion-detection": "3.451.0", - "@aws-sdk/middleware-user-agent": "3.451.0", - "@aws-sdk/region-config-resolver": "3.451.0", - "@aws-sdk/types": "3.451.0", - "@aws-sdk/util-endpoints": "3.451.0", - "@aws-sdk/util-user-agent-browser": "3.451.0", - "@aws-sdk/util-user-agent-node": "3.451.0", - "@smithy/config-resolver": "^2.0.18", - "@smithy/fetch-http-handler": "^2.2.6", - "@smithy/hash-node": "^2.0.15", - "@smithy/invalid-dependency": "^2.0.13", - "@smithy/middleware-content-length": "^2.0.15", - "@smithy/middleware-endpoint": "^2.2.0", - "@smithy/middleware-retry": "^2.0.20", - "@smithy/middleware-serde": "^2.0.13", - "@smithy/middleware-stack": "^2.0.7", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/node-http-handler": "^2.1.9", - "@smithy/property-provider": "^2.0.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/shared-ini-file-loader": "^2.0.6", - "@smithy/smithy-client": "^2.1.15", - "@smithy/types": "^2.5.0", - "@smithy/url-parser": "^2.0.13", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-body-length-browser": "^2.0.0", - "@smithy/util-body-length-node": "^2.1.0", - "@smithy/util-defaults-mode-browser": "^2.0.19", - "@smithy/util-defaults-mode-node": "^2.0.25", - "@smithy/util-endpoints": "^1.0.4", - "@smithy/util-retry": "^2.0.6", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/types": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-arn-parser": { - "version": "3.310.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-endpoints": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/util-endpoints": "^1.0.4", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/types": "^2.5.0", - "bowser": "^2.11.0", - "tslib": "^2.5.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/fast-xml-parser": { - "version": "4.2.5", - "funding": [ - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - }, - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - } - ], - "license": "MIT", - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, - "../plugins/node_modules/@aws-sdk/client-s3/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/client-sesv2": { - "version": "3.264.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/client-sts": "3.264.0", - "@aws-sdk/config-resolver": "3.259.0", - "@aws-sdk/credential-provider-node": "3.264.0", - "@aws-sdk/fetch-http-handler": "3.257.0", - "@aws-sdk/hash-node": "3.257.0", - "@aws-sdk/invalid-dependency": "3.257.0", - "@aws-sdk/middleware-content-length": "3.257.0", - "@aws-sdk/middleware-endpoint": "3.264.0", - "@aws-sdk/middleware-host-header": "3.257.0", - "@aws-sdk/middleware-logger": "3.257.0", - "@aws-sdk/middleware-recursion-detection": "3.257.0", - "@aws-sdk/middleware-retry": "3.259.0", - "@aws-sdk/middleware-serde": "3.257.0", - "@aws-sdk/middleware-signing": "3.257.0", - "@aws-sdk/middleware-stack": "3.257.0", - "@aws-sdk/middleware-user-agent": "3.257.0", - "@aws-sdk/node-config-provider": "3.259.0", - "@aws-sdk/node-http-handler": "3.257.0", - "@aws-sdk/protocol-http": "3.257.0", - "@aws-sdk/smithy-client": "3.261.0", - "@aws-sdk/types": "3.257.0", - "@aws-sdk/url-parser": "3.257.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.261.0", - "@aws-sdk/util-defaults-mode-node": "3.261.0", - "@aws-sdk/util-endpoints": "3.257.0", - "@aws-sdk/util-retry": "3.257.0", - "@aws-sdk/util-user-agent-browser": "3.257.0", - "@aws-sdk/util-user-agent-node": "3.259.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-sesv2/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/client-sso": { - "version": "3.264.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.259.0", - "@aws-sdk/fetch-http-handler": "3.257.0", - "@aws-sdk/hash-node": "3.257.0", - "@aws-sdk/invalid-dependency": "3.257.0", - "@aws-sdk/middleware-content-length": "3.257.0", - "@aws-sdk/middleware-endpoint": "3.264.0", - "@aws-sdk/middleware-host-header": "3.257.0", - "@aws-sdk/middleware-logger": "3.257.0", - "@aws-sdk/middleware-recursion-detection": "3.257.0", - "@aws-sdk/middleware-retry": "3.259.0", - "@aws-sdk/middleware-serde": "3.257.0", - "@aws-sdk/middleware-stack": "3.257.0", - "@aws-sdk/middleware-user-agent": "3.257.0", - "@aws-sdk/node-config-provider": "3.259.0", - "@aws-sdk/node-http-handler": "3.257.0", - "@aws-sdk/protocol-http": "3.257.0", - "@aws-sdk/smithy-client": "3.261.0", - "@aws-sdk/types": "3.257.0", - "@aws-sdk/url-parser": "3.257.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.261.0", - "@aws-sdk/util-defaults-mode-node": "3.261.0", - "@aws-sdk/util-endpoints": "3.257.0", - "@aws-sdk/util-retry": "3.257.0", - "@aws-sdk/util-user-agent-browser": "3.257.0", - "@aws-sdk/util-user-agent-node": "3.259.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.264.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.259.0", - "@aws-sdk/fetch-http-handler": "3.257.0", - "@aws-sdk/hash-node": "3.257.0", - "@aws-sdk/invalid-dependency": "3.257.0", - "@aws-sdk/middleware-content-length": "3.257.0", - "@aws-sdk/middleware-endpoint": "3.264.0", - "@aws-sdk/middleware-host-header": "3.257.0", - "@aws-sdk/middleware-logger": "3.257.0", - "@aws-sdk/middleware-recursion-detection": "3.257.0", - "@aws-sdk/middleware-retry": "3.259.0", - "@aws-sdk/middleware-serde": "3.257.0", - "@aws-sdk/middleware-stack": "3.257.0", - "@aws-sdk/middleware-user-agent": "3.257.0", - "@aws-sdk/node-config-provider": "3.259.0", - "@aws-sdk/node-http-handler": "3.257.0", - "@aws-sdk/protocol-http": "3.257.0", - "@aws-sdk/smithy-client": "3.261.0", - "@aws-sdk/types": "3.257.0", - "@aws-sdk/url-parser": "3.257.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.261.0", - "@aws-sdk/util-defaults-mode-node": "3.261.0", - "@aws-sdk/util-endpoints": "3.257.0", - "@aws-sdk/util-retry": "3.257.0", - "@aws-sdk/util-user-agent-browser": "3.257.0", - "@aws-sdk/util-user-agent-node": "3.259.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-sso-oidc/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/client-sso/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/client-sts": { - "version": "3.264.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.259.0", - "@aws-sdk/credential-provider-node": "3.264.0", - "@aws-sdk/fetch-http-handler": "3.257.0", - "@aws-sdk/hash-node": "3.257.0", - "@aws-sdk/invalid-dependency": "3.257.0", - "@aws-sdk/middleware-content-length": "3.257.0", - "@aws-sdk/middleware-endpoint": "3.264.0", - "@aws-sdk/middleware-host-header": "3.257.0", - "@aws-sdk/middleware-logger": "3.257.0", - "@aws-sdk/middleware-recursion-detection": "3.257.0", - "@aws-sdk/middleware-retry": "3.259.0", - "@aws-sdk/middleware-sdk-sts": "3.257.0", - "@aws-sdk/middleware-serde": "3.257.0", - "@aws-sdk/middleware-signing": "3.257.0", - "@aws-sdk/middleware-stack": "3.257.0", - "@aws-sdk/middleware-user-agent": "3.257.0", - "@aws-sdk/node-config-provider": "3.259.0", - "@aws-sdk/node-http-handler": "3.257.0", - "@aws-sdk/protocol-http": "3.257.0", - "@aws-sdk/smithy-client": "3.261.0", - "@aws-sdk/types": "3.257.0", - "@aws-sdk/url-parser": "3.257.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.261.0", - "@aws-sdk/util-defaults-mode-node": "3.261.0", - "@aws-sdk/util-endpoints": "3.257.0", - "@aws-sdk/util-retry": "3.257.0", - "@aws-sdk/util-user-agent-browser": "3.257.0", - "@aws-sdk/util-user-agent-node": "3.259.0", - "@aws-sdk/util-utf8": "3.254.0", - "fast-xml-parser": "4.0.11", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/client-sts/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/config-resolver": { - "version": "3.259.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/signature-v4": "3.257.0", - "@aws-sdk/types": "3.257.0", - "@aws-sdk/util-config-provider": "3.208.0", - "@aws-sdk/util-middleware": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/config-resolver/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/core": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/smithy-client": "^2.1.15", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/core/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/credential-provider-cognito-identity": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-cognito-identity": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-provider-cognito-identity/node_modules/@aws-sdk/property-provider": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-provider-cognito-identity/node_modules/@aws-sdk/types": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-provider-cognito-identity/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/property-provider": "3.257.0", - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-provider-env/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/credential-provider-imds": { - "version": "3.259.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/node-config-provider": "3.259.0", - "@aws-sdk/property-provider": "3.257.0", - "@aws-sdk/types": "3.257.0", - "@aws-sdk/url-parser": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-provider-imds/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.264.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.257.0", - "@aws-sdk/credential-provider-imds": "3.259.0", - "@aws-sdk/credential-provider-process": "3.257.0", - "@aws-sdk/credential-provider-sso": "3.264.0", - "@aws-sdk/credential-provider-web-identity": "3.257.0", - "@aws-sdk/property-provider": "3.257.0", - "@aws-sdk/shared-ini-file-loader": "3.257.0", - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-provider-ini/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.264.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.257.0", - "@aws-sdk/credential-provider-imds": "3.259.0", - "@aws-sdk/credential-provider-ini": "3.264.0", - "@aws-sdk/credential-provider-process": "3.257.0", - "@aws-sdk/credential-provider-sso": "3.264.0", - "@aws-sdk/credential-provider-web-identity": "3.257.0", - "@aws-sdk/property-provider": "3.257.0", - "@aws-sdk/shared-ini-file-loader": "3.257.0", - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-provider-node/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/property-provider": "3.257.0", - "@aws-sdk/shared-ini-file-loader": "3.257.0", - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-provider-process/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.264.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-sso": "3.264.0", - "@aws-sdk/property-provider": "3.257.0", - "@aws-sdk/shared-ini-file-loader": "3.257.0", - "@aws-sdk/token-providers": "3.264.0", - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-provider-sso/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/property-provider": "3.257.0", - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-provider-web-identity/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/credential-providers": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-cognito-identity": "3.289.0", - "@aws-sdk/client-sso": "3.289.0", - "@aws-sdk/client-sts": "3.289.0", - "@aws-sdk/credential-provider-cognito-identity": "3.289.0", - "@aws-sdk/credential-provider-env": "3.289.0", - "@aws-sdk/credential-provider-imds": "3.289.0", - "@aws-sdk/credential-provider-ini": "3.289.0", - "@aws-sdk/credential-provider-node": "3.289.0", - "@aws-sdk/credential-provider-process": "3.289.0", - "@aws-sdk/credential-provider-sso": "3.289.0", - "@aws-sdk/credential-provider-web-identity": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/abort-controller": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/client-sso": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.289.0", - "@aws-sdk/fetch-http-handler": "3.289.0", - "@aws-sdk/hash-node": "3.289.0", - "@aws-sdk/invalid-dependency": "3.289.0", - "@aws-sdk/middleware-content-length": "3.289.0", - "@aws-sdk/middleware-endpoint": "3.289.0", - "@aws-sdk/middleware-host-header": "3.289.0", - "@aws-sdk/middleware-logger": "3.289.0", - "@aws-sdk/middleware-recursion-detection": "3.289.0", - "@aws-sdk/middleware-retry": "3.289.0", - "@aws-sdk/middleware-serde": "3.289.0", - "@aws-sdk/middleware-stack": "3.289.0", - "@aws-sdk/middleware-user-agent": "3.289.0", - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/node-http-handler": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/smithy-client": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.289.0", - "@aws-sdk/util-defaults-mode-node": "3.289.0", - "@aws-sdk/util-endpoints": "3.289.0", - "@aws-sdk/util-retry": "3.289.0", - "@aws-sdk/util-user-agent-browser": "3.289.0", - "@aws-sdk/util-user-agent-node": "3.289.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/client-sso-oidc": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.289.0", - "@aws-sdk/fetch-http-handler": "3.289.0", - "@aws-sdk/hash-node": "3.289.0", - "@aws-sdk/invalid-dependency": "3.289.0", - "@aws-sdk/middleware-content-length": "3.289.0", - "@aws-sdk/middleware-endpoint": "3.289.0", - "@aws-sdk/middleware-host-header": "3.289.0", - "@aws-sdk/middleware-logger": "3.289.0", - "@aws-sdk/middleware-recursion-detection": "3.289.0", - "@aws-sdk/middleware-retry": "3.289.0", - "@aws-sdk/middleware-serde": "3.289.0", - "@aws-sdk/middleware-stack": "3.289.0", - "@aws-sdk/middleware-user-agent": "3.289.0", - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/node-http-handler": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/smithy-client": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.289.0", - "@aws-sdk/util-defaults-mode-node": "3.289.0", - "@aws-sdk/util-endpoints": "3.289.0", - "@aws-sdk/util-retry": "3.289.0", - "@aws-sdk/util-user-agent-browser": "3.289.0", - "@aws-sdk/util-user-agent-node": "3.289.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/client-sts": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/sha256-browser": "3.0.0", - "@aws-crypto/sha256-js": "3.0.0", - "@aws-sdk/config-resolver": "3.289.0", - "@aws-sdk/credential-provider-node": "3.289.0", - "@aws-sdk/fetch-http-handler": "3.289.0", - "@aws-sdk/hash-node": "3.289.0", - "@aws-sdk/invalid-dependency": "3.289.0", - "@aws-sdk/middleware-content-length": "3.289.0", - "@aws-sdk/middleware-endpoint": "3.289.0", - "@aws-sdk/middleware-host-header": "3.289.0", - "@aws-sdk/middleware-logger": "3.289.0", - "@aws-sdk/middleware-recursion-detection": "3.289.0", - "@aws-sdk/middleware-retry": "3.289.0", - "@aws-sdk/middleware-sdk-sts": "3.289.0", - "@aws-sdk/middleware-serde": "3.289.0", - "@aws-sdk/middleware-signing": "3.289.0", - "@aws-sdk/middleware-stack": "3.289.0", - "@aws-sdk/middleware-user-agent": "3.289.0", - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/node-http-handler": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/smithy-client": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "@aws-sdk/util-base64": "3.208.0", - "@aws-sdk/util-body-length-browser": "3.188.0", - "@aws-sdk/util-body-length-node": "3.208.0", - "@aws-sdk/util-defaults-mode-browser": "3.289.0", - "@aws-sdk/util-defaults-mode-node": "3.289.0", - "@aws-sdk/util-endpoints": "3.289.0", - "@aws-sdk/util-retry": "3.289.0", - "@aws-sdk/util-user-agent-browser": "3.289.0", - "@aws-sdk/util-user-agent-node": "3.289.0", - "@aws-sdk/util-utf8": "3.254.0", - "fast-xml-parser": "4.1.2", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/config-resolver": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/signature-v4": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-config-provider": "3.208.0", - "@aws-sdk/util-middleware": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-env": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-imds": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-ini": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.289.0", - "@aws-sdk/credential-provider-imds": "3.289.0", - "@aws-sdk/credential-provider-process": "3.289.0", - "@aws-sdk/credential-provider-sso": "3.289.0", - "@aws-sdk/credential-provider-web-identity": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-node": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/credential-provider-env": "3.289.0", - "@aws-sdk/credential-provider-imds": "3.289.0", - "@aws-sdk/credential-provider-ini": "3.289.0", - "@aws-sdk/credential-provider-process": "3.289.0", - "@aws-sdk/credential-provider-sso": "3.289.0", - "@aws-sdk/credential-provider-web-identity": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-process": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-sso": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-sso": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/token-providers": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/credential-provider-web-identity": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/fetch-http-handler": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/querystring-builder": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-base64": "3.208.0", - "tslib": "^2.3.1" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/hash-node": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-buffer-from": "3.208.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/invalid-dependency": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-content-length": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-endpoint": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-serde": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/signature-v4": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/url-parser": "3.289.0", - "@aws-sdk/util-config-provider": "3.208.0", - "@aws-sdk/util-middleware": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-logger": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-retry": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/service-error-classification": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-middleware": "3.289.0", - "@aws-sdk/util-retry": "3.289.0", - "tslib": "^2.3.1", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-sdk-sts": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-signing": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/signature-v4": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-serde": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-signing": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/signature-v4": "3.289.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-middleware": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-stack": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/node-config-provider": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/node-http-handler": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/abort-controller": "3.289.0", - "@aws-sdk/protocol-http": "3.289.0", - "@aws-sdk/querystring-builder": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/property-provider": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/protocol-http": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/querystring-builder": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-uri-escape": "3.201.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/querystring-parser": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/service-error-classification": { - "version": "3.289.0", - "license": "Apache-2.0", - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/shared-ini-file-loader": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/signature-v4": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/is-array-buffer": "3.201.0", - "@aws-sdk/types": "3.289.0", - "@aws-sdk/util-hex-encoding": "3.201.0", - "@aws-sdk/util-middleware": "3.289.0", - "@aws-sdk/util-uri-escape": "3.201.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/smithy-client": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-stack": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/token-providers": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-sso-oidc": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/shared-ini-file-loader": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/types": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/url-parser": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/querystring-parser": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/util-defaults-mode-browser": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "bowser": "^2.11.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/util-defaults-mode-node": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/config-resolver": "3.289.0", - "@aws-sdk/credential-provider-imds": "3.289.0", - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/property-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/util-endpoints": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/util-middleware": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/util-retry": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/service-error-classification": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.289.0", - "bowser": "^2.11.0", - "tslib": "^2.3.1" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.289.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/node-config-provider": "3.289.0", - "@aws-sdk/types": "3.289.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/fast-xml-parser": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - }, - "funding": { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/credential-providers/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "../plugins/node_modules/@aws-sdk/fetch-http-handler": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/protocol-http": "3.257.0", - "@aws-sdk/querystring-builder": "3.257.0", - "@aws-sdk/types": "3.257.0", - "@aws-sdk/util-base64": "3.208.0", - "tslib": "^2.3.1" - } - }, - "../plugins/node_modules/@aws-sdk/fetch-http-handler/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/hash-node": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.257.0", - "@aws-sdk/util-buffer-from": "3.208.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/hash-node/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/invalid-dependency": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - } - }, - "../plugins/node_modules/@aws-sdk/invalid-dependency/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/is-array-buffer": { - "version": "3.201.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/is-array-buffer/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/middleware-bucket-endpoint": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@aws-sdk/util-arn-parser": "3.310.0", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/protocol-http": "^3.0.9", - "@smithy/types": "^2.5.0", - "@smithy/util-config-provider": "^2.0.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@aws-sdk/types": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/@aws-sdk/util-arn-parser": { - "version": "3.310.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-bucket-endpoint/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/middleware-content-length": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/protocol-http": "3.257.0", - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-content-length/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/middleware-endpoint": { - "version": "3.264.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-serde": "3.257.0", - "@aws-sdk/protocol-http": "3.257.0", - "@aws-sdk/signature-v4": "3.257.0", - "@aws-sdk/types": "3.257.0", - "@aws-sdk/url-parser": "3.257.0", - "@aws-sdk/util-config-provider": "3.208.0", - "@aws-sdk/util-middleware": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-endpoint/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/middleware-expect-continue": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-expect-continue/node_modules/@aws-sdk/types": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-expect-continue/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/middleware-flexible-checksums": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/crc32": "3.0.0", - "@aws-crypto/crc32c": "3.0.0", - "@aws-sdk/types": "3.451.0", - "@smithy/is-array-buffer": "^2.0.0", - "@smithy/protocol-http": "^3.0.9", - "@smithy/types": "^2.5.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/@aws-sdk/types": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-flexible-checksums/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/middleware-host-header": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/protocol-http": "3.257.0", - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-host-header/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/middleware-location-constraint": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-location-constraint/node_modules/@aws-sdk/types": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-location-constraint/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/middleware-logger": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-logger/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/middleware-recursion-detection": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/protocol-http": "3.257.0", - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-recursion-detection/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/middleware-retry": { - "version": "3.259.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/protocol-http": "3.257.0", - "@aws-sdk/service-error-classification": "3.257.0", - "@aws-sdk/types": "3.257.0", - "@aws-sdk/util-middleware": "3.257.0", - "@aws-sdk/util-retry": "3.257.0", - "tslib": "^2.3.1", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-retry/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/middleware-retry/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-sdk-s3": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/protocol-http": "3.257.0", - "@aws-sdk/types": "3.257.0", - "@aws-sdk/util-arn-parser": "3.208.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-sdk-s3/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/middleware-sdk-sts": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-signing": "3.257.0", - "@aws-sdk/property-provider": "3.257.0", - "@aws-sdk/protocol-http": "3.257.0", - "@aws-sdk/signature-v4": "3.257.0", - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-sdk-sts/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/middleware-serde": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-serde/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/middleware-signing": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/property-provider": "3.257.0", - "@aws-sdk/protocol-http": "3.257.0", - "@aws-sdk/signature-v4": "3.257.0", - "@aws-sdk/types": "3.257.0", - "@aws-sdk/util-middleware": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-signing/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/middleware-ssec": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.451.0", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-ssec/node_modules/@aws-sdk/types": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-ssec/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/middleware-stack": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-stack/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/middleware-user-agent": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/protocol-http": "3.257.0", - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/middleware-user-agent/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/node-config-provider": { - "version": "3.259.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/property-provider": "3.257.0", - "@aws-sdk/shared-ini-file-loader": "3.257.0", - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/node-config-provider/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/node-http-handler": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/abort-controller": "3.257.0", - "@aws-sdk/protocol-http": "3.257.0", - "@aws-sdk/querystring-builder": "3.257.0", - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/node-http-handler/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/property-provider": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/property-provider/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/protocol-http": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/protocol-http/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/querystring-builder": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.257.0", - "@aws-sdk/util-uri-escape": "3.201.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/querystring-builder/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/querystring-parser": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/querystring-parser/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/region-config-resolver": { - "version": "3.451.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^2.1.5", - "@smithy/types": "^2.5.0", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.6", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/region-config-resolver/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/s3-request-presigner": { - "version": "3.264.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-endpoint": "3.264.0", - "@aws-sdk/middleware-sdk-s3": "3.257.0", - "@aws-sdk/protocol-http": "3.257.0", - "@aws-sdk/signature-v4-multi-region": "3.264.0", - "@aws-sdk/smithy-client": "3.261.0", - "@aws-sdk/types": "3.257.0", - "@aws-sdk/util-create-request": "3.261.0", - "@aws-sdk/util-format-url": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/s3-request-presigner/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/service-error-classification": { - "version": "3.257.0", - "license": "Apache-2.0", - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/shared-ini-file-loader": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/shared-ini-file-loader/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/signature-v4": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/is-array-buffer": "3.201.0", - "@aws-sdk/types": "3.257.0", - "@aws-sdk/util-hex-encoding": "3.201.0", - "@aws-sdk/util-middleware": "3.257.0", - "@aws-sdk/util-uri-escape": "3.201.0", - "@aws-sdk/util-utf8": "3.254.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/signature-v4-multi-region": { - "version": "3.264.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/protocol-http": "3.257.0", - "@aws-sdk/signature-v4": "3.257.0", - "@aws-sdk/types": "3.257.0", - "@aws-sdk/util-arn-parser": "3.208.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "@aws-sdk/signature-v4-crt": "^3.118.0" - }, - "peerDependenciesMeta": { - "@aws-sdk/signature-v4-crt": { - "optional": true - } - } - }, - "../plugins/node_modules/@aws-sdk/signature-v4-multi-region/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/signature-v4/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/smithy-client": { - "version": "3.261.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-stack": "3.257.0", - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/smithy-client/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/token-providers": { - "version": "3.264.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-sso-oidc": "3.264.0", - "@aws-sdk/property-provider": "3.257.0", - "@aws-sdk/shared-ini-file-loader": "3.257.0", - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/token-providers/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/types": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/types/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/url-parser": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/querystring-parser": "3.257.0", - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - } - }, - "../plugins/node_modules/@aws-sdk/url-parser/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/util-arn-parser": { - "version": "3.208.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/util-arn-parser/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/util-base64": { - "version": "3.208.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/util-buffer-from": "3.208.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/util-base64/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/util-body-length-browser": { - "version": "3.188.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.3.1" - } - }, - "../plugins/node_modules/@aws-sdk/util-body-length-browser/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/util-body-length-node": { - "version": "3.208.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/util-body-length-node/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/util-buffer-from": { - "version": "3.208.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/is-array-buffer": "3.201.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/util-buffer-from/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/util-config-provider": { - "version": "3.208.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/util-config-provider/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/util-create-request": { - "version": "3.261.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/middleware-stack": "3.257.0", - "@aws-sdk/smithy-client": "3.261.0", - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/util-create-request/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/util-defaults-mode-browser": { - "version": "3.261.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/property-provider": "3.257.0", - "@aws-sdk/types": "3.257.0", - "bowser": "^2.11.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/util-defaults-mode-browser/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/util-defaults-mode-node": { - "version": "3.261.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/config-resolver": "3.259.0", - "@aws-sdk/credential-provider-imds": "3.259.0", - "@aws-sdk/node-config-provider": "3.259.0", - "@aws-sdk/property-provider": "3.257.0", - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/util-defaults-mode-node/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/util-endpoints": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/util-endpoints/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/util-format-url": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/querystring-builder": "3.257.0", - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/util-format-url/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/util-hex-encoding": { - "version": "3.201.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/util-hex-encoding/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/util-locate-window": { - "version": "3.208.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/util-locate-window/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/util-middleware": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/util-middleware/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/util-retry": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/service-error-classification": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/util-retry/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/util-uri-escape": { - "version": "3.201.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/util-uri-escape/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/util-user-agent-browser": { - "version": "3.257.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/types": "3.257.0", - "bowser": "^2.11.0", - "tslib": "^2.3.1" - } - }, - "../plugins/node_modules/@aws-sdk/util-user-agent-browser/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/util-user-agent-node": { - "version": "3.259.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/node-config-provider": "3.259.0", - "@aws-sdk/types": "3.257.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "aws-crt": ">=1.0.0" - }, - "peerDependenciesMeta": { - "aws-crt": { - "optional": true - } - } - }, - "../plugins/node_modules/@aws-sdk/util-user-agent-node/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/util-utf8": { - "version": "3.254.0", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/util-buffer-from": "3.208.0", - "tslib": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/util-utf8-browser": { - "version": "3.259.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.3.1" - } - }, - "../plugins/node_modules/@aws-sdk/util-utf8-browser/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/util-utf8/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@aws-sdk/xml-builder": { - "version": "3.310.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@aws-sdk/xml-builder/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@azure/abort-controller": { - "version": "1.1.0", - "license": "MIT", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../plugins/node_modules/@azure/abort-controller/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@azure/core-auth": { - "version": "1.4.0", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../plugins/node_modules/@azure/core-auth/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@azure/core-client": { - "version": "1.7.1", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.4.0", - "@azure/core-rest-pipeline": "^1.9.1", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.0.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@azure/core-client/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@azure/core-http": { - "version": "2.3.1", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-tracing": "1.0.0-preview.13", - "@azure/core-util": "^1.1.1", - "@azure/logger": "^1.0.0", - "@types/node-fetch": "^2.5.0", - "@types/tunnel": "^0.0.3", - "form-data": "^4.0.0", - "node-fetch": "^2.6.7", - "process": "^0.11.10", - "tough-cookie": "^4.0.0", - "tslib": "^2.2.0", - "tunnel": "^0.0.6", - "uuid": "^8.3.0", - "xml2js": "^0.4.19" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@azure/core-http-compat": { - "version": "1.3.0", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^1.0.4", - "@azure/core-client": "^1.3.0", - "@azure/core-rest-pipeline": "^1.3.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../plugins/node_modules/@azure/core-http/node_modules/@azure/core-tracing": { - "version": "1.0.0-preview.13", - "license": "MIT", - "dependencies": { - "@opentelemetry/api": "^1.0.1", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../plugins/node_modules/@azure/core-http/node_modules/form-data": { - "version": "4.0.0", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "../plugins/node_modules/@azure/core-http/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@azure/core-http/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "../plugins/node_modules/@azure/core-lro": { - "version": "2.5.1", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@azure/core-lro/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@azure/core-paging": { - "version": "1.5.0", - "license": "MIT", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@azure/core-paging/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@azure/core-rest-pipeline": { - "version": "1.10.1", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.4.0", - "@azure/core-tracing": "^1.0.1", - "@azure/core-util": "^1.0.0", - "@azure/logger": "^1.0.0", - "form-data": "^4.0.0", - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "tslib": "^2.2.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@azure/core-rest-pipeline/node_modules/@tootallnate/once": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "../plugins/node_modules/@azure/core-rest-pipeline/node_modules/form-data": { - "version": "4.0.0", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "../plugins/node_modules/@azure/core-rest-pipeline/node_modules/http-proxy-agent": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "../plugins/node_modules/@azure/core-rest-pipeline/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@azure/core-rest-pipeline/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "../plugins/node_modules/@azure/core-tracing": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../plugins/node_modules/@azure/core-tracing/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@azure/core-util": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../plugins/node_modules/@azure/core-util/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@azure/cosmos": { - "version": "3.17.2", - "license": "MIT", - "dependencies": { - "@azure/core-auth": "^1.3.0", - "@azure/core-rest-pipeline": "^1.2.0", - "@azure/core-tracing": "^1.0.0", - "debug": "^4.1.1", - "fast-json-stable-stringify": "^2.1.0", - "jsbi": "^3.1.3", - "node-abort-controller": "^3.0.0", - "priorityqueuejs": "^1.0.0", - "semaphore": "^1.0.5", - "tslib": "^2.2.0", - "universal-user-agent": "^6.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@azure/cosmos/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@azure/cosmos/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "../plugins/node_modules/@azure/identity": { - "version": "1.5.2", - "license": "MIT", - "dependencies": { - "@azure/core-auth": "^1.3.0", - "@azure/core-client": "^1.0.0", - "@azure/core-rest-pipeline": "^1.1.0", - "@azure/core-tracing": "1.0.0-preview.12", - "@azure/logger": "^1.0.0", - "@azure/msal-node": "1.0.0-beta.6", - "@types/stoppable": "^1.1.0", - "axios": "^0.21.1", - "events": "^3.0.0", - "jws": "^4.0.0", - "msal": "^1.0.2", - "open": "^7.0.0", - "qs": "^6.7.0", - "stoppable": "^1.1.0", - "tslib": "^2.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=12.0.0" - }, - "optionalDependencies": { - "keytar": "^7.3.0" - } - }, - "../plugins/node_modules/@azure/identity/node_modules/@azure/core-tracing": { - "version": "1.0.0-preview.12", - "license": "MIT", - "dependencies": { - "@opentelemetry/api": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../plugins/node_modules/@azure/identity/node_modules/axios": { - "version": "0.21.4", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "../plugins/node_modules/@azure/identity/node_modules/events": { - "version": "3.3.0", - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "../plugins/node_modules/@azure/identity/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@azure/identity/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "../plugins/node_modules/@azure/keyvault-keys": { - "version": "4.6.0", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.3.0", - "@azure/core-client": "^1.5.0", - "@azure/core-http-compat": "^1.3.0", - "@azure/core-lro": "^2.2.0", - "@azure/core-paging": "^1.1.1", - "@azure/core-rest-pipeline": "^1.8.0", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.0.0", - "@azure/logger": "^1.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../plugins/node_modules/@azure/keyvault-keys/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@azure/logger": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../plugins/node_modules/@azure/logger/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@azure/ms-rest-azure-env": { - "version": "2.0.0", - "license": "MIT" - }, - "../plugins/node_modules/@azure/ms-rest-js": { - "version": "2.6.4", - "license": "MIT", - "dependencies": { - "@azure/core-auth": "^1.1.4", - "abort-controller": "^3.0.0", - "form-data": "^2.5.0", - "node-fetch": "^2.6.7", - "tough-cookie": "^3.0.1", - "tslib": "^1.10.0", - "tunnel": "0.0.6", - "uuid": "^8.3.2", - "xml2js": "^0.4.19" - } - }, - "../plugins/node_modules/@azure/ms-rest-js/node_modules/form-data": { - "version": "2.5.1", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "../plugins/node_modules/@azure/ms-rest-js/node_modules/tough-cookie": { - "version": "3.0.1", - "license": "BSD-3-Clause", - "dependencies": { - "ip-regex": "^2.1.0", - "psl": "^1.1.28", - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/@azure/ms-rest-js/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "../plugins/node_modules/@azure/ms-rest-nodeauth": { - "version": "3.1.1", - "license": "MIT", - "dependencies": { - "@azure/ms-rest-azure-env": "^2.0.0", - "@azure/ms-rest-js": "^2.0.4", - "adal-node": "^0.2.2" - } - }, - "../plugins/node_modules/@azure/msal-common": { - "version": "4.5.1", - "license": "MIT", - "dependencies": { - "debug": "^4.1.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "../plugins/node_modules/@azure/msal-node": { - "version": "1.0.0-beta.6", - "license": "MIT", - "dependencies": { - "@azure/msal-common": "^4.0.0", - "axios": "^0.21.1", - "jsonwebtoken": "^8.5.1", - "uuid": "^8.3.0" - } - }, - "../plugins/node_modules/@azure/msal-node/node_modules/axios": { - "version": "0.21.4", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "../plugins/node_modules/@azure/msal-node/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "../plugins/node_modules/@azure/storage-blob": { - "version": "12.12.0", - "license": "MIT", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-http": "^2.0.0", - "@azure/core-lro": "^2.2.0", - "@azure/core-paging": "^1.1.1", - "@azure/core-tracing": "1.0.0-preview.13", - "@azure/logger": "^1.0.0", - "events": "^3.0.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../plugins/node_modules/@azure/storage-blob/node_modules/@azure/core-tracing": { - "version": "1.0.0-preview.13", - "license": "MIT", - "dependencies": { - "@opentelemetry/api": "^1.0.1", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../plugins/node_modules/@azure/storage-blob/node_modules/events": { - "version": "3.3.0", - "license": "MIT", - "engines": { - "node": ">=0.8.x" - } - }, - "../plugins/node_modules/@azure/storage-blob/node_modules/tslib": { - "version": "2.5.0", - "license": "0BSD" - }, - "../plugins/node_modules/@babel/runtime": { - "version": "7.20.13", - "license": "MIT", - "peer": true, - "dependencies": { - "regenerator-runtime": "^0.13.11" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../plugins/node_modules/@colors/colors": { - "version": "1.5.0", - "license": "MIT", - "engines": { - "node": ">=0.1.90" - } - }, - "../plugins/node_modules/@dabh/diagnostics": { - "version": "2.0.3", - "license": "MIT", - "dependencies": { - "colorspace": "1.1.x", - "enabled": "2.0.x", - "kuler": "^2.0.0" - } - }, - "../plugins/node_modules/@google-cloud/bigquery": { - "version": "5.12.0", - "license": "Apache-2.0", - "dependencies": { - "@google-cloud/common": "^3.9.0", - "@google-cloud/paginator": "^3.0.0", - "@google-cloud/promisify": "^2.0.0", - "arrify": "^2.0.1", - "big.js": "^6.0.0", - "duplexify": "^4.0.0", - "extend": "^3.0.2", - "is": "^3.3.0", - "p-event": "^4.1.0", - "readable-stream": "^3.6.0", - "stream-events": "^1.0.5", - "uuid": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/@google-cloud/bigquery/node_modules/arrify": { - "version": "2.0.1", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/@google-cloud/bigquery/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "../plugins/node_modules/@google-cloud/common": { - "version": "3.10.0", - "license": "Apache-2.0", - "dependencies": { - "@google-cloud/projectify": "^2.0.0", - "@google-cloud/promisify": "^2.0.0", - "arrify": "^2.0.1", - "duplexify": "^4.1.1", - "ent": "^2.2.0", - "extend": "^3.0.2", - "google-auth-library": "^7.14.0", - "retry-request": "^4.2.2", - "teeny-request": "^7.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/@google-cloud/common/node_modules/arrify": { - "version": "2.0.1", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/@google-cloud/firestore": { - "version": "5.0.2", - "license": "Apache-2.0", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "functional-red-black-tree": "^1.0.1", - "google-gax": "^2.24.1", - "protobufjs": "^6.8.6" - }, - "engines": { - "node": ">=10.10.0" - } - }, - "../plugins/node_modules/@google-cloud/paginator": { - "version": "3.0.7", - "license": "Apache-2.0", - "dependencies": { - "arrify": "^2.0.0", - "extend": "^3.0.2" - }, - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/@google-cloud/paginator/node_modules/arrify": { - "version": "2.0.1", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/@google-cloud/projectify": { - "version": "2.1.1", - "license": "Apache-2.0", - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/@google-cloud/promisify": { - "version": "2.0.4", - "license": "Apache-2.0", - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/@google-cloud/storage": { - "version": "5.20.5", - "license": "Apache-2.0", - "dependencies": { - "@google-cloud/paginator": "^3.0.7", - "@google-cloud/projectify": "^2.0.0", - "@google-cloud/promisify": "^2.0.0", - "abort-controller": "^3.0.0", - "arrify": "^2.0.0", - "async-retry": "^1.3.3", - "compressible": "^2.0.12", - "configstore": "^5.0.0", - "duplexify": "^4.0.0", - "ent": "^2.2.0", - "extend": "^3.0.2", - "gaxios": "^4.0.0", - "google-auth-library": "^7.14.1", - "hash-stream-validation": "^0.2.2", - "mime": "^3.0.0", - "mime-types": "^2.0.8", - "p-limit": "^3.0.1", - "pumpify": "^2.0.0", - "retry-request": "^4.2.2", - "stream-events": "^1.0.4", - "teeny-request": "^7.1.3", - "uuid": "^8.0.0", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/@google-cloud/storage/node_modules/arrify": { - "version": "2.0.1", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/@google-cloud/storage/node_modules/p-limit": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/node_modules/@google-cloud/storage/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "../plugins/node_modules/@grpc/grpc-js": { - "version": "1.6.12", - "license": "Apache-2.0", - "dependencies": { - "@grpc/proto-loader": "^0.7.0", - "@types/node": ">=12.12.47" - }, - "engines": { - "node": "^8.13.0 || >=10.10.0" - } - }, - "../plugins/node_modules/@grpc/grpc-js/node_modules/@grpc/proto-loader": { - "version": "0.7.4", - "license": "Apache-2.0", - "dependencies": { - "@types/long": "^4.0.1", - "lodash.camelcase": "^4.3.0", - "long": "^4.0.0", - "protobufjs": "^7.0.0", - "yargs": "^16.2.0" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" - }, - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/@grpc/grpc-js/node_modules/protobufjs": { - "version": "7.2.1", - "hasInstallScript": true, - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../plugins/node_modules/@grpc/grpc-js/node_modules/protobufjs/node_modules/long": { - "version": "5.2.1", - "license": "Apache-2.0" - }, - "../plugins/node_modules/@grpc/proto-loader": { - "version": "0.6.13", - "license": "Apache-2.0", - "dependencies": { - "@types/long": "^4.0.1", - "lodash.camelcase": "^4.3.0", - "long": "^4.0.0", - "protobufjs": "^6.11.3", - "yargs": "^16.2.0" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" - }, - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/@js-joda/core": { - "version": "3.2.0", - "license": "BSD-3-Clause" - }, - "../plugins/node_modules/@notionhq/client": { - "version": "1.0.4", - "license": "MIT", - "dependencies": { - "@types/node-fetch": "^2.5.10", - "node-fetch": "^2.6.1" - }, - "engines": { - "node": ">=12" - } - }, - "../plugins/node_modules/@opensearch-project/opensearch": { - "version": "1.1.0", - "license": "Apache-2.0", - "dependencies": { - "debug": "^4.3.1", - "hpagent": "^0.1.1", - "ms": "^2.1.3", - "secure-json-parse": "^2.4.0" - }, - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/@opensearch-project/opensearch/node_modules/ms": { - "version": "2.1.3", - "license": "MIT" - }, - "../plugins/node_modules/@opentelemetry/api": { - "version": "1.4.0", - "license": "Apache-2.0", - "engines": { - "node": ">=8.0.0" - } - }, - "../plugins/node_modules/@protobufjs/aspromise": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "../plugins/node_modules/@protobufjs/base64": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "../plugins/node_modules/@protobufjs/codegen": { - "version": "2.0.4", - "license": "BSD-3-Clause" - }, - "../plugins/node_modules/@protobufjs/eventemitter": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "../plugins/node_modules/@protobufjs/fetch": { - "version": "1.1.0", - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.1", - "@protobufjs/inquire": "^1.1.0" - } - }, - "../plugins/node_modules/@protobufjs/float": { - "version": "1.0.2", - "license": "BSD-3-Clause" - }, - "../plugins/node_modules/@protobufjs/inquire": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "../plugins/node_modules/@protobufjs/path": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "../plugins/node_modules/@protobufjs/pool": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "../plugins/node_modules/@protobufjs/utf8": { - "version": "1.1.0", - "license": "BSD-3-Clause" - }, - "../plugins/node_modules/@sap/hana-client": { - "version": "2.15.22", - "hasInstallScript": true, - "license": "SEE LICENSE IN developer-license-3_1.txt", - "dependencies": { - "debug": "3.1.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "../plugins/node_modules/@sap/hana-client/node_modules/debug": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "../plugins/node_modules/@sap/hana-client/node_modules/ms": { - "version": "2.0.0", - "license": "MIT" - }, - "../plugins/node_modules/@sendgrid/client": { - "version": "7.7.0", - "license": "MIT", - "dependencies": { - "@sendgrid/helpers": "^7.7.0", - "axios": "^0.26.0" - }, - "engines": { - "node": "6.* || 8.* || >=10.*" - } - }, - "../plugins/node_modules/@sendgrid/helpers": { - "version": "7.7.0", - "license": "MIT", - "dependencies": { - "deepmerge": "^4.2.2" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "../plugins/node_modules/@sendgrid/mail": { - "version": "7.7.0", - "license": "MIT", - "dependencies": { - "@sendgrid/client": "^7.7.0", - "@sendgrid/helpers": "^7.7.0" - }, - "engines": { - "node": "6.* || 8.* || >=10.*" - } - }, - "../plugins/node_modules/@sindresorhus/is": { - "version": "4.6.0", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "../plugins/node_modules/@smithy/abort-controller": { - "version": "2.0.13", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/abort-controller/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/chunked-blob-reader": { - "version": "2.0.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.5.0" - } - }, - "../plugins/node_modules/@smithy/chunked-blob-reader-native": { - "version": "2.0.1", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-base64": "^2.0.1", - "tslib": "^2.5.0" - } - }, - "../plugins/node_modules/@smithy/chunked-blob-reader-native/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/chunked-blob-reader/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/config-resolver": { - "version": "2.0.18", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^2.1.5", - "@smithy/types": "^2.5.0", - "@smithy/util-config-provider": "^2.0.0", - "@smithy/util-middleware": "^2.0.6", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/config-resolver/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/credential-provider-imds": { - "version": "2.1.1", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^2.1.5", - "@smithy/property-provider": "^2.0.14", - "@smithy/types": "^2.5.0", - "@smithy/url-parser": "^2.0.13", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/credential-provider-imds/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/eventstream-codec": { - "version": "2.0.13", - "license": "Apache-2.0", - "dependencies": { - "@aws-crypto/crc32": "3.0.0", - "@smithy/types": "^2.5.0", - "@smithy/util-hex-encoding": "^2.0.0", - "tslib": "^2.5.0" - } - }, - "../plugins/node_modules/@smithy/eventstream-codec/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/eventstream-serde-browser": { - "version": "2.0.13", - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-serde-universal": "^2.0.13", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/eventstream-serde-browser/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/eventstream-serde-config-resolver": { - "version": "2.0.13", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/eventstream-serde-config-resolver/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/eventstream-serde-node": { - "version": "2.0.13", - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-serde-universal": "^2.0.13", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/eventstream-serde-node/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/eventstream-serde-universal": { - "version": "2.0.13", - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-codec": "^2.0.13", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/eventstream-serde-universal/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/fetch-http-handler": { - "version": "2.2.6", - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^3.0.9", - "@smithy/querystring-builder": "^2.0.13", - "@smithy/types": "^2.5.0", - "@smithy/util-base64": "^2.0.1", - "tslib": "^2.5.0" - } - }, - "../plugins/node_modules/@smithy/fetch-http-handler/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/hash-blob-browser": { - "version": "2.0.14", - "license": "Apache-2.0", - "dependencies": { - "@smithy/chunked-blob-reader": "^2.0.0", - "@smithy/chunked-blob-reader-native": "^2.0.1", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - } - }, - "../plugins/node_modules/@smithy/hash-blob-browser/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/hash-node": { - "version": "2.0.15", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.5.0", - "@smithy/util-buffer-from": "^2.0.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/hash-node/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/hash-stream-node": { - "version": "2.0.15", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.5.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/hash-stream-node/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/invalid-dependency": { - "version": "2.0.13", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - } - }, - "../plugins/node_modules/@smithy/invalid-dependency/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/is-array-buffer": { - "version": "2.0.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/is-array-buffer/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/md5-js": { - "version": "2.0.15", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.5.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" - } - }, - "../plugins/node_modules/@smithy/md5-js/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/middleware-content-length": { - "version": "2.0.15", - "license": "Apache-2.0", - "dependencies": { - "@smithy/protocol-http": "^3.0.9", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/middleware-content-length/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/middleware-endpoint": { - "version": "2.2.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/middleware-serde": "^2.0.13", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/shared-ini-file-loader": "^2.2.4", - "@smithy/types": "^2.5.0", - "@smithy/url-parser": "^2.0.13", - "@smithy/util-middleware": "^2.0.6", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/middleware-endpoint/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/middleware-retry": { - "version": "2.0.20", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^2.1.5", - "@smithy/protocol-http": "^3.0.9", - "@smithy/service-error-classification": "^2.0.6", - "@smithy/types": "^2.5.0", - "@smithy/util-middleware": "^2.0.6", - "@smithy/util-retry": "^2.0.6", - "tslib": "^2.5.0", - "uuid": "^8.3.2" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/middleware-retry/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/middleware-retry/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "../plugins/node_modules/@smithy/middleware-serde": { - "version": "2.0.13", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/middleware-serde/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/middleware-stack": { - "version": "2.0.7", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/middleware-stack/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/node-config-provider": { - "version": "2.1.5", - "license": "Apache-2.0", - "dependencies": { - "@smithy/property-provider": "^2.0.14", - "@smithy/shared-ini-file-loader": "^2.2.4", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/node-config-provider/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/node-http-handler": { - "version": "2.1.9", - "license": "Apache-2.0", - "dependencies": { - "@smithy/abort-controller": "^2.0.13", - "@smithy/protocol-http": "^3.0.9", - "@smithy/querystring-builder": "^2.0.13", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/node-http-handler/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/property-provider": { - "version": "2.0.14", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/property-provider/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/protocol-http": { - "version": "3.0.9", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/protocol-http/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/querystring-builder": { - "version": "2.0.13", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.5.0", - "@smithy/util-uri-escape": "^2.0.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/querystring-builder/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/querystring-parser": { - "version": "2.0.13", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/querystring-parser/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/service-error-classification": { - "version": "2.0.6", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/shared-ini-file-loader": { - "version": "2.2.4", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/shared-ini-file-loader/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/signature-v4": { - "version": "2.0.15", - "license": "Apache-2.0", - "dependencies": { - "@smithy/eventstream-codec": "^2.0.13", - "@smithy/is-array-buffer": "^2.0.0", - "@smithy/types": "^2.5.0", - "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-middleware": "^2.0.6", - "@smithy/util-uri-escape": "^2.0.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/signature-v4/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/smithy-client": { - "version": "2.1.15", - "license": "Apache-2.0", - "dependencies": { - "@smithy/middleware-stack": "^2.0.7", - "@smithy/types": "^2.5.0", - "@smithy/util-stream": "^2.0.20", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/smithy-client/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/types": { - "version": "2.5.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/types/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/url-parser": { - "version": "2.0.13", - "license": "Apache-2.0", - "dependencies": { - "@smithy/querystring-parser": "^2.0.13", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - } - }, - "../plugins/node_modules/@smithy/url-parser/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/util-base64": { - "version": "2.0.1", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.0.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/util-base64/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/util-body-length-browser": { - "version": "2.0.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.5.0" - } - }, - "../plugins/node_modules/@smithy/util-body-length-browser/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/util-body-length-node": { - "version": "2.1.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/util-body-length-node/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/util-buffer-from": { - "version": "2.0.0", - "license": "Apache-2.0", - "dependencies": { - "@smithy/is-array-buffer": "^2.0.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/util-buffer-from/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/util-config-provider": { - "version": "2.0.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/util-config-provider/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/util-defaults-mode-browser": { - "version": "2.0.19", - "license": "Apache-2.0", - "dependencies": { - "@smithy/property-provider": "^2.0.14", - "@smithy/smithy-client": "^2.1.15", - "@smithy/types": "^2.5.0", - "bowser": "^2.11.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "../plugins/node_modules/@smithy/util-defaults-mode-browser/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/util-defaults-mode-node": { - "version": "2.0.25", - "license": "Apache-2.0", - "dependencies": { - "@smithy/config-resolver": "^2.0.18", - "@smithy/credential-provider-imds": "^2.1.1", - "@smithy/node-config-provider": "^2.1.5", - "@smithy/property-provider": "^2.0.14", - "@smithy/smithy-client": "^2.1.15", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "../plugins/node_modules/@smithy/util-defaults-mode-node/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/util-endpoints": { - "version": "1.0.4", - "license": "Apache-2.0", - "dependencies": { - "@smithy/node-config-provider": "^2.1.5", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "../plugins/node_modules/@smithy/util-endpoints/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/util-hex-encoding": { - "version": "2.0.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/util-hex-encoding/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/util-middleware": { - "version": "2.0.6", - "license": "Apache-2.0", - "dependencies": { - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/util-middleware/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/util-retry": { - "version": "2.0.6", - "license": "Apache-2.0", - "dependencies": { - "@smithy/service-error-classification": "^2.0.6", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "../plugins/node_modules/@smithy/util-retry/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/util-stream": { - "version": "2.0.20", - "license": "Apache-2.0", - "dependencies": { - "@smithy/fetch-http-handler": "^2.2.6", - "@smithy/node-http-handler": "^2.1.9", - "@smithy/types": "^2.5.0", - "@smithy/util-base64": "^2.0.1", - "@smithy/util-buffer-from": "^2.0.0", - "@smithy/util-hex-encoding": "^2.0.0", - "@smithy/util-utf8": "^2.0.2", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/util-stream/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/util-uri-escape": { - "version": "2.0.0", - "license": "Apache-2.0", - "dependencies": { - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/util-uri-escape/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/util-utf8": { - "version": "2.0.2", - "license": "Apache-2.0", - "dependencies": { - "@smithy/util-buffer-from": "^2.0.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/util-utf8/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@smithy/util-waiter": { - "version": "2.0.13", - "license": "Apache-2.0", - "dependencies": { - "@smithy/abort-controller": "^2.0.13", - "@smithy/types": "^2.5.0", - "tslib": "^2.5.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "../plugins/node_modules/@smithy/util-waiter/node_modules/tslib": { - "version": "2.6.2", - "license": "0BSD" - }, - "../plugins/node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "license": "MIT", - "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/@techteamer/ocsp": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "asn1.js": "^5.4.1", - "asn1.js-rfc2560": "^5.0.1", - "asn1.js-rfc5280": "^3.0.0", - "async": "^3.2.4", - "simple-lru-cache": "^0.0.2" - } - }, - "../plugins/node_modules/@tooljet-plugins/airtable": { - "resolved": "../plugins/packages/airtable", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/amazonses": { - "resolved": "../plugins/packages/amazonses", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/appwrite": { - "resolved": "../plugins/packages/appwrite", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/athena": { - "resolved": "../plugins/packages/athena", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/azureblobstorage": { - "resolved": "../plugins/packages/azureblobstorage", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/baserow": { - "resolved": "../plugins/packages/baserow", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/bigquery": { - "resolved": "../plugins/packages/bigquery", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/clickhouse": { - "resolved": "../plugins/packages/clickhouse", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/common": { - "resolved": "../plugins/packages/common", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/cosmosdb": { - "resolved": "../plugins/packages/cosmosdb", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/couchdb": { - "resolved": "../plugins/packages/couchdb", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/dynamodb": { - "resolved": "../plugins/packages/dynamodb", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/elasticsearch": { - "resolved": "../plugins/packages/elasticsearch", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/firestore": { - "resolved": "../plugins/packages/firestore", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/gcs": { - "resolved": "../plugins/packages/gcs", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/googlesheets": { - "resolved": "../plugins/packages/googlesheets", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/graphql": { - "resolved": "../plugins/packages/graphql", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/grpc": { - "resolved": "../plugins/packages/grpc", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/influxdb": { - "resolved": "../plugins/packages/influxdb", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/mailgun": { - "resolved": "../plugins/packages/mailgun", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/mariadb": { - "resolved": "../plugins/packages/mariadb", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/minio": { - "resolved": "../plugins/packages/minio", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/mongodb": { - "resolved": "../plugins/packages/mongodb", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/mssql": { - "resolved": "../plugins/packages/mssql", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/mysql": { - "resolved": "../plugins/packages/mysql", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/n8n": { - "resolved": "../plugins/packages/n8n", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/notion": { - "resolved": "../plugins/packages/notion", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/openapi": { - "resolved": "../plugins/packages/openapi", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/oracledb": { - "resolved": "../plugins/packages/oracledb", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/postgresql": { - "resolved": "../plugins/packages/postgresql", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/redis": { - "resolved": "../plugins/packages/redis", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/restapi": { - "resolved": "../plugins/packages/restapi", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/rethinkdb": { - "resolved": "../plugins/packages/rethinkdb", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/s3": { - "resolved": "../plugins/packages/s3", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/saphana": { - "resolved": "../plugins/packages/saphana", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/sendgrid": { - "resolved": "../plugins/packages/sendgrid", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/slack": { - "resolved": "../plugins/packages/slack", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/smtp": { - "resolved": "../plugins/packages/smtp", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/snowflake": { - "resolved": "../plugins/packages/snowflake", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/stripe": { - "resolved": "../plugins/packages/stripe", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/twilio": { - "resolved": "../plugins/packages/twilio", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/typesense": { - "resolved": "../plugins/packages/typesense", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/woocommerce": { - "resolved": "../plugins/packages/woocommerce", - "link": true - }, - "../plugins/node_modules/@tooljet-plugins/zendesk": { - "resolved": "../plugins/packages/zendesk", - "link": true - }, - "../plugins/node_modules/@types/cacheable-request": { - "version": "6.0.3", - "license": "MIT", - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" - } - }, - "../plugins/node_modules/@types/geojson": { - "version": "7946.0.10", - "license": "MIT" - }, - "../plugins/node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "license": "MIT" - }, - "../plugins/node_modules/@types/keyv": { - "version": "3.1.4", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "../plugins/node_modules/@types/long": { - "version": "4.0.2", - "license": "MIT" - }, - "../plugins/node_modules/@types/node": { - "version": "18.11.19", - "license": "MIT" - }, - "../plugins/node_modules/@types/node-fetch": { - "version": "2.6.2", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "form-data": "^3.0.0" - } - }, - "../plugins/node_modules/@types/responselike": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "../plugins/node_modules/@types/snowflake-sdk": { - "version": "1.6.17", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "generic-pool": "^3.9.0" - } - }, - "../plugins/node_modules/@types/stoppable": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "../plugins/node_modules/@types/tunnel": { - "version": "0.0.3", - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, - "../plugins/node_modules/@types/webidl-conversions": { - "version": "7.0.0", - "license": "MIT" - }, - "../plugins/node_modules/@types/whatwg-url": { - "version": "8.2.2", - "license": "MIT", - "dependencies": { - "@types/node": "*", - "@types/webidl-conversions": "*" - } - }, - "../plugins/node_modules/@woocommerce/woocommerce-rest-api": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "axios": "^0.19.0", - "create-hmac": "^1.1.7", - "oauth-1.0a": "^2.2.6", - "url-parse": "^1.4.7" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "../plugins/node_modules/@woocommerce/woocommerce-rest-api/node_modules/axios": { - "version": "0.19.2", - "license": "MIT", - "dependencies": { - "follow-redirects": "1.5.10" - } - }, - "../plugins/node_modules/@woocommerce/woocommerce-rest-api/node_modules/debug": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "../plugins/node_modules/@woocommerce/woocommerce-rest-api/node_modules/follow-redirects": { - "version": "1.5.10", - "license": "MIT", - "dependencies": { - "debug": "=3.1.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "../plugins/node_modules/@woocommerce/woocommerce-rest-api/node_modules/ms": { - "version": "2.0.0", - "license": "MIT" - }, - "../plugins/node_modules/@xmldom/xmldom": { - "version": "0.8.6", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } - }, - "../plugins/node_modules/@zxing/text-encoding": { - "version": "0.9.0", - "license": "(Unlicense OR Apache-2.0)", - "optional": true - }, - "../plugins/node_modules/abort-controller": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "event-target-shim": "^5.0.0" - }, - "engines": { - "node": ">=6.5" - } - }, - "../plugins/node_modules/adal-node": { - "version": "0.2.4", - "license": "Apache-2.0", - "dependencies": { - "@xmldom/xmldom": "^0.8.3", - "async": "^2.6.3", - "axios": "^0.21.1", - "date-utils": "*", - "jws": "3.x.x", - "underscore": ">= 1.3.1", - "uuid": "^3.1.0", - "xpath.js": "~1.1.0" - }, - "engines": { - "node": ">= 0.6.15" - } - }, - "../plugins/node_modules/adal-node/node_modules/async": { - "version": "2.6.4", - "license": "MIT", - "dependencies": { - "lodash": "^4.17.14" - } - }, - "../plugins/node_modules/adal-node/node_modules/axios": { - "version": "0.21.4", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.14.0" - } - }, - "../plugins/node_modules/adal-node/node_modules/jwa": { - "version": "1.4.1", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "../plugins/node_modules/adal-node/node_modules/jws": { - "version": "3.2.2", - "license": "MIT", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "../plugins/node_modules/agent-base": { - "version": "6.0.2", - "license": "MIT", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "../plugins/node_modules/ajv": { - "version": "6.12.6", - "license": "MIT", - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "../plugins/node_modules/ansi-align": { - "version": "3.0.1", - "license": "ISC", - "dependencies": { - "string-width": "^4.1.0" - } - }, - "../plugins/node_modules/ansi-regex": { - "version": "5.0.1", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/ansi-styles": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "../plugins/node_modules/argparse": { - "version": "1.0.10", - "license": "MIT", - "dependencies": { - "sprintf-js": "~1.0.2" - } - }, - "../plugins/node_modules/asap": { - "version": "2.0.6", - "license": "MIT" - }, - "../plugins/node_modules/asn1": { - "version": "0.2.6", - "license": "MIT", - "dependencies": { - "safer-buffer": "~2.1.0" - } - }, - "../plugins/node_modules/asn1.js": { - "version": "5.4.1", - "license": "MIT", - "dependencies": { - "bn.js": "^4.0.0", - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0", - "safer-buffer": "^2.1.0" - } - }, - "../plugins/node_modules/asn1.js-rfc2560": { - "version": "5.0.1", - "license": "MIT", - "dependencies": { - "asn1.js-rfc5280": "^3.0.0" - }, - "peerDependencies": { - "asn1.js": "^5.0.0" - } - }, - "../plugins/node_modules/asn1.js-rfc5280": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "asn1.js": "^5.0.0" - } - }, - "../plugins/node_modules/asn1.js/node_modules/bn.js": { - "version": "4.12.0", - "license": "MIT" - }, - "../plugins/node_modules/assert-plus": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">=0.8" - } - }, - "../plugins/node_modules/async": { - "version": "3.2.4", - "license": "MIT" - }, - "../plugins/node_modules/async-retry": { - "version": "1.3.3", - "license": "MIT", - "dependencies": { - "retry": "0.13.1" - } - }, - "../plugins/node_modules/async-retry/node_modules/retry": { - "version": "0.13.1", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "../plugins/node_modules/asynckit": { - "version": "0.4.0", - "license": "MIT" - }, - "../plugins/node_modules/athena-express": { - "version": "7.1.5", - "license": "MIT", - "dependencies": { - "csvtojson": "^2.0.10" - } - }, - "../plugins/node_modules/available-typed-arrays": { - "version": "1.0.5", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../plugins/node_modules/aws-sdk": { - "version": "2.1309.0", - "license": "Apache-2.0", - "dependencies": { - "buffer": "4.9.2", - "events": "1.1.1", - "ieee754": "1.1.13", - "jmespath": "0.16.0", - "querystring": "0.2.0", - "sax": "1.2.1", - "url": "0.10.3", - "util": "^0.12.4", - "uuid": "8.0.0", - "xml2js": "0.4.19" - }, - "engines": { - "node": ">= 10.0.0" - } - }, - "../plugins/node_modules/aws-sdk/node_modules/punycode": { - "version": "1.3.2", - "license": "MIT" - }, - "../plugins/node_modules/aws-sdk/node_modules/url": { - "version": "0.10.3", - "license": "MIT", - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "../plugins/node_modules/aws-sdk/node_modules/uuid": { - "version": "8.0.0", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "../plugins/node_modules/aws-sign2": { - "version": "0.7.0", - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "../plugins/node_modules/aws4": { - "version": "1.12.0", - "license": "MIT" - }, - "../plugins/node_modules/axios": { - "version": "0.26.1", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.14.8" - } - }, - "../plugins/node_modules/balanced-match": { - "version": "1.0.2", - "license": "MIT" - }, - "../plugins/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" - } - ], - "license": "MIT" - }, - "../plugins/node_modules/bcrypt-pbkdf": { - "version": "1.0.2", - "license": "BSD-3-Clause", - "dependencies": { - "tweetnacl": "^0.14.3" - } - }, - "../plugins/node_modules/big-integer": { - "version": "1.6.51", - "license": "Unlicense", - "engines": { - "node": ">=0.6" - } - }, - "../plugins/node_modules/big.js": { - "version": "6.2.1", - "license": "MIT", - "engines": { - "node": "*" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/bigjs" - } - }, - "../plugins/node_modules/bignumber.js": { - "version": "9.1.2", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "../plugins/node_modules/binascii": { - "version": "0.0.2" - }, - "../plugins/node_modules/bl": { - "version": "5.1.0", - "license": "MIT", - "dependencies": { - "buffer": "^6.0.3", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "../plugins/node_modules/bl/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" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.2.1" - } - }, - "../plugins/node_modules/bl/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" - } - ], - "license": "BSD-3-Clause" - }, - "../plugins/node_modules/block-stream2": { - "version": "2.1.0", - "license": "MIT", - "dependencies": { - "readable-stream": "^3.4.0" - } - }, - "../plugins/node_modules/bluebird": { - "version": "3.7.2", - "license": "MIT" - }, - "../plugins/node_modules/bn.js": { - "version": "5.2.1", - "license": "MIT" - }, - "../plugins/node_modules/bowser": { - "version": "2.11.0", - "license": "MIT" - }, - "../plugins/node_modules/boxen": { - "version": "3.2.0", - "license": "MIT", - "dependencies": { - "ansi-align": "^3.0.0", - "camelcase": "^5.3.1", - "chalk": "^2.4.2", - "cli-boxes": "^2.2.0", - "string-width": "^3.0.0", - "term-size": "^1.2.0", - "type-fest": "^0.3.0", - "widest-line": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/boxen/node_modules/ansi-regex": { - "version": "4.1.1", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/boxen/node_modules/ansi-styles": { - "version": "3.2.1", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/boxen/node_modules/chalk": { - "version": "2.4.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/boxen/node_modules/color-convert": { - "version": "1.9.3", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "../plugins/node_modules/boxen/node_modules/color-name": { - "version": "1.1.3", - "license": "MIT" - }, - "../plugins/node_modules/boxen/node_modules/emoji-regex": { - "version": "7.0.3", - "license": "MIT" - }, - "../plugins/node_modules/boxen/node_modules/escape-string-regexp": { - "version": "1.0.5", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "../plugins/node_modules/boxen/node_modules/has-flag": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/boxen/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/boxen/node_modules/string-width": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "emoji-regex": "^7.0.1", - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^5.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/boxen/node_modules/strip-ansi": { - "version": "5.2.0", - "license": "MIT", - "dependencies": { - "ansi-regex": "^4.1.0" - }, - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/boxen/node_modules/supports-color": { - "version": "5.5.0", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/boxen/node_modules/type-fest": { - "version": "0.3.1", - "license": "(MIT OR CC0-1.0)", - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/brace-expansion": { - "version": "1.1.11", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "../plugins/node_modules/brorand": { - "version": "1.1.0", - "license": "MIT" - }, - "../plugins/node_modules/browser-or-node": { - "version": "1.3.0", - "license": "MIT" - }, - "../plugins/node_modules/browser-request": { - "version": "0.3.3", - "engines": [ - "node" - ] - }, - "../plugins/node_modules/browserify-aes": { - "version": "1.2.0", - "license": "MIT", - "dependencies": { - "buffer-xor": "^1.0.3", - "cipher-base": "^1.0.0", - "create-hash": "^1.1.0", - "evp_bytestokey": "^1.0.3", - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "../plugins/node_modules/browserify-cipher": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "browserify-aes": "^1.0.4", - "browserify-des": "^1.0.0", - "evp_bytestokey": "^1.0.0" - } - }, - "../plugins/node_modules/browserify-des": { - "version": "1.0.2", - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "des.js": "^1.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "../plugins/node_modules/browserify-rsa": { - "version": "4.1.0", - "license": "MIT", - "dependencies": { - "bn.js": "^5.0.0", - "randombytes": "^2.0.1" - } - }, - "../plugins/node_modules/browserify-sign": { - "version": "4.2.1", - "license": "ISC", - "dependencies": { - "bn.js": "^5.1.1", - "browserify-rsa": "^4.0.1", - "create-hash": "^1.2.0", - "create-hmac": "^1.1.7", - "elliptic": "^6.5.3", - "inherits": "^2.0.4", - "parse-asn1": "^5.1.5", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - } - }, - "../plugins/node_modules/bson": { - "version": "4.7.2", - "license": "Apache-2.0", - "dependencies": { - "buffer": "^5.6.0" - }, - "engines": { - "node": ">=6.9.0" - } - }, - "../plugins/node_modules/bson/node_modules/buffer": { - "version": "5.7.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" - } - ], - "license": "MIT", - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "../plugins/node_modules/buffer": { - "version": "4.9.2", - "license": "MIT", - "dependencies": { - "base64-js": "^1.0.2", - "ieee754": "^1.1.4", - "isarray": "^1.0.0" - } - }, - "../plugins/node_modules/buffer-crc32": { - "version": "0.2.13", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "../plugins/node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "license": "BSD-3-Clause" - }, - "../plugins/node_modules/buffer-from": { - "version": "1.1.2", - "license": "MIT" - }, - "../plugins/node_modules/buffer-writer": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/buffer-xor": { - "version": "1.0.3", - "license": "MIT" - }, - "../plugins/node_modules/builtins": { - "version": "1.0.3", - "license": "MIT" - }, - "../plugins/node_modules/cacheable-lookup": { - "version": "5.0.4", - "license": "MIT", - "engines": { - "node": ">=10.6.0" - } - }, - "../plugins/node_modules/cacheable-request": { - "version": "7.0.2", - "license": "MIT", - "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": ">=8" - } - }, - "../plugins/node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/node_modules/call-bind": { - "version": "1.0.2", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../plugins/node_modules/camelcase": { - "version": "5.3.1", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/caseless": { - "version": "0.12.0", - "license": "Apache-2.0" - }, - "../plugins/node_modules/cint": { - "version": "8.2.1", - "license": "ISC" - }, - "../plugins/node_modules/cipher-base": { - "version": "1.0.4", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - } - }, - "../plugins/node_modules/cli-boxes": { - "version": "2.2.1", - "license": "MIT", - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/node_modules/cli-table": { - "version": "0.3.11", - "dependencies": { - "colors": "1.0.3" - }, - "engines": { - "node": ">= 0.2.0" - } - }, - "../plugins/node_modules/clickhouse": { - "version": "2.6.0", - "license": "ISC", - "dependencies": { - "JSONStream": "1.3.4", - "lodash": "4.17.21", - "querystring": "0.2.0", - "request": "2.88.0", - "stream2asynciter": "1.0.3", - "through": "2.3.8", - "tsv": "0.2.0", - "uuid": "3.4.0" - } - }, - "../plugins/node_modules/clickhouse/node_modules/form-data": { - "version": "2.3.3", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "../plugins/node_modules/clickhouse/node_modules/JSONStream": { - "version": "1.3.4", - "license": "(MIT OR Apache-2.0)", - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "../plugins/node_modules/clickhouse/node_modules/punycode": { - "version": "1.4.1", - "license": "MIT" - }, - "../plugins/node_modules/clickhouse/node_modules/qs": { - "version": "6.5.3", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.6" - } - }, - "../plugins/node_modules/clickhouse/node_modules/request": { - "version": "2.88.0", - "license": "Apache-2.0", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 4" - } - }, - "../plugins/node_modules/clickhouse/node_modules/tough-cookie": { - "version": "2.4.3", - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "../plugins/node_modules/cliui": { - "version": "7.0.4", - "license": "ISC", - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "../plugins/node_modules/clone-response": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/node_modules/cluster-key-slot": { - "version": "1.1.2", - "license": "Apache-2.0", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/color": { - "version": "3.2.1", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.3", - "color-string": "^1.6.0" - } - }, - "../plugins/node_modules/color-convert": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "../plugins/node_modules/color-name": { - "version": "1.1.4", - "license": "MIT" - }, - "../plugins/node_modules/color-string": { - "version": "1.9.1", - "license": "MIT", - "dependencies": { - "color-name": "^1.0.0", - "simple-swizzle": "^0.2.2" - } - }, - "../plugins/node_modules/color/node_modules/color-convert": { - "version": "1.9.3", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "../plugins/node_modules/color/node_modules/color-name": { - "version": "1.1.3", - "license": "MIT" - }, - "../plugins/node_modules/colorette": { - "version": "2.0.16", - "license": "MIT" - }, - "../plugins/node_modules/colors": { - "version": "1.0.3", - "license": "MIT", - "engines": { - "node": ">=0.1.90" - } - }, - "../plugins/node_modules/colorspace": { - "version": "1.1.4", - "license": "MIT", - "dependencies": { - "color": "^3.1.3", - "text-hex": "1.0.x" - } - }, - "../plugins/node_modules/combined-stream": { - "version": "1.0.8", - "license": "MIT", - "dependencies": { - "delayed-stream": "~1.0.0" - }, - "engines": { - "node": ">= 0.8" - } - }, - "../plugins/node_modules/commander": { - "version": "7.2.0", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "../plugins/node_modules/compressible": { - "version": "2.0.18", - "license": "MIT", - "dependencies": { - "mime-db": ">= 1.43.0 < 2" - }, - "engines": { - "node": ">= 0.6" - } - }, - "../plugins/node_modules/concat-map": { - "version": "0.0.1", - "license": "MIT" - }, - "../plugins/node_modules/configstore": { - "version": "5.0.1", - "license": "BSD-2-Clause", - "dependencies": { - "dot-prop": "^5.2.0", - "graceful-fs": "^4.1.2", - "make-dir": "^3.0.0", - "unique-string": "^2.0.0", - "write-file-atomic": "^3.0.0", - "xdg-basedir": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/configstore/node_modules/dot-prop": { - "version": "5.3.0", - "license": "MIT", - "dependencies": { - "is-obj": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/copy-concurrently": { - "version": "1.0.5", - "license": "ISC", - "dependencies": { - "aproba": "^1.1.1", - "fs-write-stream-atomic": "^1.0.8", - "iferr": "^0.1.5", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.0" - } - }, - "../plugins/node_modules/copy-concurrently/node_modules/aproba": { - "version": "1.2.0", - "license": "ISC" - }, - "../plugins/node_modules/copy-concurrently/node_modules/mkdirp": { - "version": "0.5.6", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "../plugins/node_modules/copy-concurrently/node_modules/rimraf": { - "version": "2.7.1", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "../plugins/node_modules/core-util-is": { - "version": "1.0.2", - "license": "MIT" - }, - "../plugins/node_modules/create-ecdh": { - "version": "4.0.4", - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "elliptic": "^6.5.3" - } - }, - "../plugins/node_modules/create-ecdh/node_modules/bn.js": { - "version": "4.12.0", - "license": "MIT" - }, - "../plugins/node_modules/create-hash": { - "version": "1.2.0", - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.1", - "inherits": "^2.0.1", - "md5.js": "^1.3.4", - "ripemd160": "^2.0.1", - "sha.js": "^2.4.0" - } - }, - "../plugins/node_modules/create-hmac": { - "version": "1.1.7", - "license": "MIT", - "dependencies": { - "cipher-base": "^1.0.3", - "create-hash": "^1.1.0", - "inherits": "^2.0.1", - "ripemd160": "^2.0.0", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - } - }, - "../plugins/node_modules/crypto-browserify": { - "version": "3.12.0", - "license": "MIT", - "dependencies": { - "browserify-cipher": "^1.0.0", - "browserify-sign": "^4.0.0", - "create-ecdh": "^4.0.0", - "create-hash": "^1.1.0", - "create-hmac": "^1.1.0", - "diffie-hellman": "^5.0.0", - "inherits": "^2.0.1", - "pbkdf2": "^3.0.3", - "public-encrypt": "^4.0.0", - "randombytes": "^2.0.0", - "randomfill": "^1.0.3" - }, - "engines": { - "node": "*" - } - }, - "../plugins/node_modules/crypto-random-string": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/csvtojson": { - "version": "2.0.10", - "license": "MIT", - "dependencies": { - "bluebird": "^3.5.1", - "lodash": "^4.17.3", - "strip-bom": "^2.0.0" - }, - "bin": { - "csvtojson": "bin/csvtojson" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "../plugins/node_modules/csvtojson/node_modules/strip-bom": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "is-utf8": "^0.2.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/cyclist": { - "version": "1.0.1", - "license": "MIT" - }, - "../plugins/node_modules/dashdash": { - "version": "1.14.1", - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "../plugins/node_modules/date-utils": { - "version": "1.2.21", - "license": "MIT", - "engines": { - "node": ">0.4.0" - } - }, - "../plugins/node_modules/dayjs": { - "version": "1.11.7", - "license": "MIT" - }, - "../plugins/node_modules/debug": { - "version": "4.3.4", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "../plugins/node_modules/decode-uri-component": { - "version": "0.2.2", - "license": "MIT", - "engines": { - "node": ">=0.10" - } - }, - "../plugins/node_modules/decompress-response": { - "version": "6.0.0", - "license": "MIT", - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/node_modules/deep-extend": { - "version": "0.6.0", - "license": "MIT", - "engines": { - "node": ">=4.0.0" - } - }, - "../plugins/node_modules/deepmerge": { - "version": "4.3.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/defer-to-connect": { - "version": "2.0.1", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/delayed-stream": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "../plugins/node_modules/denque": { - "version": "1.5.1", - "license": "Apache-2.0", - "engines": { - "node": ">=0.10" - } - }, - "../plugins/node_modules/des.js": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "../plugins/node_modules/detect-libc": { - "version": "2.0.1", - "license": "Apache-2.0", - "optional": true, - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/diffie-hellman": { - "version": "5.0.3", - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "miller-rabin": "^4.0.0", - "randombytes": "^2.0.0" - } - }, - "../plugins/node_modules/diffie-hellman/node_modules/bn.js": { - "version": "4.12.0", - "license": "MIT" - }, - "../plugins/node_modules/duplexer3": { - "version": "0.1.5", - "license": "BSD-3-Clause" - }, - "../plugins/node_modules/duplexify": { - "version": "4.1.2", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.4.1", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1", - "stream-shift": "^1.0.0" - } - }, - "../plugins/node_modules/ecc-jsbn": { - "version": "0.1.2", - "license": "MIT", - "dependencies": { - "jsbn": "~0.1.0", - "safer-buffer": "^2.1.0" - } - }, - "../plugins/node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "../plugins/node_modules/elliptic": { - "version": "6.5.4", - "license": "MIT", - "dependencies": { - "bn.js": "^4.11.9", - "brorand": "^1.1.0", - "hash.js": "^1.0.0", - "hmac-drbg": "^1.0.1", - "inherits": "^2.0.4", - "minimalistic-assert": "^1.0.1", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "../plugins/node_modules/elliptic/node_modules/bn.js": { - "version": "4.12.0", - "license": "MIT" - }, - "../plugins/node_modules/emoji-regex": { - "version": "8.0.0", - "license": "MIT" - }, - "../plugins/node_modules/enabled": { - "version": "2.0.0", - "license": "MIT" - }, - "../plugins/node_modules/encoding": { - "version": "0.1.13", - "license": "MIT", - "dependencies": { - "iconv-lite": "^0.6.2" - } - }, - "../plugins/node_modules/encoding/node_modules/iconv-lite": { - "version": "0.6.3", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/end-of-stream": { - "version": "1.4.4", - "license": "MIT", - "dependencies": { - "once": "^1.4.0" - } - }, - "../plugins/node_modules/ent": { - "version": "2.2.0", - "license": "MIT" - }, - "../plugins/node_modules/es6-error": { - "version": "4.1.1", - "license": "MIT" - }, - "../plugins/node_modules/es6-promise": { - "version": "4.2.8", - "license": "MIT" - }, - "../plugins/node_modules/es6-promisify": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "es6-promise": "^4.0.3" - } - }, - "../plugins/node_modules/escalade": { - "version": "3.1.1", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/esm": { - "version": "3.2.25", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/esprima": { - "version": "4.0.1", - "license": "BSD-2-Clause", - "bin": { - "esparse": "bin/esparse.js", - "esvalidate": "bin/esvalidate.js" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/event-target-shim": { - "version": "5.0.1", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/events": { - "version": "1.1.1", - "license": "MIT", - "engines": { - "node": ">=0.4.x" - } - }, - "../plugins/node_modules/evp_bytestokey": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "md5.js": "^1.3.4", - "safe-buffer": "^5.1.1" - } - }, - "../plugins/node_modules/expand-template": { - "version": "2.0.3", - "license": "(MIT OR WTFPL)", - "optional": true, - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/expand-tilde": { - "version": "2.0.2", - "license": "MIT", - "dependencies": { - "homedir-polyfill": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/extend": { - "version": "3.0.2", - "license": "MIT" - }, - "../plugins/node_modules/extsprintf": { - "version": "1.3.0", - "engines": [ - "node >=0.6.0" - ], - "license": "MIT" - }, - "../plugins/node_modules/fast-deep-equal": { - "version": "3.1.3", - "license": "MIT" - }, - "../plugins/node_modules/fast-diff": { - "version": "1.2.0", - "license": "Apache-2.0" - }, - "../plugins/node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "license": "MIT" - }, - "../plugins/node_modules/fast-text-encoding": { - "version": "1.0.6", - "license": "Apache-2.0" - }, - "../plugins/node_modules/fast-xml-parser": { - "version": "4.0.11", - "license": "MIT", - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - }, - "funding": { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - }, - "../plugins/node_modules/fastest-levenshtein": { - "version": "1.0.16", - "license": "MIT", - "engines": { - "node": ">= 4.9.1" - } - }, - "../plugins/node_modules/fecha": { - "version": "4.2.3", - "license": "MIT" - }, - "../plugins/node_modules/figgy-pudding": { - "version": "3.5.2", - "license": "ISC" - }, - "../plugins/node_modules/filter-obj": { - "version": "1.1.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/find-up": { - "version": "4.1.0", - "license": "MIT", - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/flush-write-stream": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "readable-stream": "^2.3.6" - } - }, - "../plugins/node_modules/flush-write-stream/node_modules/readable-stream": { - "version": "2.3.7", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "../plugins/node_modules/flush-write-stream/node_modules/safe-buffer": { - "version": "5.1.2", - "license": "MIT" - }, - "../plugins/node_modules/flush-write-stream/node_modules/string_decoder": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "../plugins/node_modules/fn.name": { - "version": "1.1.0", - "license": "MIT" - }, - "../plugins/node_modules/follow-redirects": { - "version": "1.15.2", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "license": "MIT", - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "../plugins/node_modules/for-each": { - "version": "0.3.3", - "license": "MIT", - "dependencies": { - "is-callable": "^1.1.3" - } - }, - "../plugins/node_modules/forever-agent": { - "version": "0.6.1", - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "../plugins/node_modules/form-data": { - "version": "3.0.1", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "../plugins/node_modules/form-data-encoder": { - "version": "2.1.4", - "license": "MIT", - "engines": { - "node": ">= 14.17" - } - }, - "../plugins/node_modules/from2": { - "version": "2.3.0", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "readable-stream": "^2.0.0" - } - }, - "../plugins/node_modules/from2/node_modules/readable-stream": { - "version": "2.3.7", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "../plugins/node_modules/from2/node_modules/safe-buffer": { - "version": "5.1.2", - "license": "MIT" - }, - "../plugins/node_modules/from2/node_modules/string_decoder": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "../plugins/node_modules/fs-constants": { - "version": "1.0.0", - "license": "MIT", - "optional": true - }, - "../plugins/node_modules/fs-write-stream-atomic": { - "version": "1.0.10", - "license": "ISC", - "dependencies": { - "graceful-fs": "^4.1.2", - "iferr": "^0.1.5", - "imurmurhash": "^0.1.4", - "readable-stream": "1 || 2" - } - }, - "../plugins/node_modules/fs-write-stream-atomic/node_modules/readable-stream": { - "version": "2.3.7", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "../plugins/node_modules/fs-write-stream-atomic/node_modules/safe-buffer": { - "version": "5.1.2", - "license": "MIT" - }, - "../plugins/node_modules/fs-write-stream-atomic/node_modules/string_decoder": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "../plugins/node_modules/fs.realpath": { - "version": "1.0.0", - "license": "ISC" - }, - "../plugins/node_modules/function-bind": { - "version": "1.1.1", - "license": "MIT" - }, - "../plugins/node_modules/functional-red-black-tree": { - "version": "1.0.1", - "license": "MIT" - }, - "../plugins/node_modules/gaxios": { - "version": "4.3.3", - "license": "Apache-2.0", - "dependencies": { - "abort-controller": "^3.0.0", - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.7" - }, - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/gcp-metadata": { - "version": "4.3.1", - "license": "Apache-2.0", - "dependencies": { - "gaxios": "^4.0.0", - "json-bigint": "^1.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/generate-function": { - "version": "2.3.1", - "license": "MIT", - "dependencies": { - "is-property": "^1.0.2" - } - }, - "../plugins/node_modules/generic-pool": { - "version": "3.9.0", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, - "../plugins/node_modules/genfun": { - "version": "5.0.0", - "license": "MIT" - }, - "../plugins/node_modules/get-caller-file": { - "version": "2.0.5", - "license": "ISC", - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "../plugins/node_modules/get-intrinsic": { - "version": "1.2.0", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../plugins/node_modules/get-stdin": { - "version": "7.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/get-stream": { - "version": "6.0.1", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/node_modules/getopts": { - "version": "2.2.5", - "license": "MIT" - }, - "../plugins/node_modules/getpass": { - "version": "0.1.7", - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0" - } - }, - "../plugins/node_modules/github-from-package": { - "version": "0.0.0", - "license": "MIT", - "optional": true - }, - "../plugins/node_modules/glob": { - "version": "7.2.3", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../plugins/node_modules/global-dirs": { - "version": "0.1.1", - "license": "MIT", - "dependencies": { - "ini": "^1.3.4" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/google-auth-library": { - "version": "7.14.1", - "license": "Apache-2.0", - "dependencies": { - "arrify": "^2.0.0", - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "fast-text-encoding": "^1.0.0", - "gaxios": "^4.0.0", - "gcp-metadata": "^4.2.0", - "gtoken": "^5.0.4", - "jws": "^4.0.0", - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/google-auth-library/node_modules/arrify": { - "version": "2.0.1", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/google-auth-library/node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/google-auth-library/node_modules/yallist": { - "version": "4.0.0", - "license": "ISC" - }, - "../plugins/node_modules/google-gax": { - "version": "2.30.5", - "license": "Apache-2.0", - "dependencies": { - "@grpc/grpc-js": "~1.6.0", - "@grpc/proto-loader": "^0.6.12", - "@types/long": "^4.0.0", - "abort-controller": "^3.0.0", - "duplexify": "^4.0.0", - "fast-text-encoding": "^1.0.3", - "google-auth-library": "^7.14.0", - "is-stream-ended": "^0.1.4", - "node-fetch": "^2.6.1", - "object-hash": "^3.0.0", - "proto3-json-serializer": "^0.1.8", - "protobufjs": "6.11.3", - "retry-request": "^4.0.0" - }, - "bin": { - "compileProtos": "build/tools/compileProtos.js" - }, - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/google-p12-pem": { - "version": "3.1.4", - "license": "MIT", - "dependencies": { - "node-forge": "^1.3.1" - }, - "bin": { - "gp12-pem": "build/src/bin/gp12-pem.js" - }, - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/gopd": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../plugins/node_modules/got": { - "version": "11.8.6", - "license": "MIT", - "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": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "../plugins/node_modules/graceful-fs": { - "version": "4.2.10", - "license": "ISC" - }, - "../plugins/node_modules/gtoken": { - "version": "5.3.2", - "license": "MIT", - "dependencies": { - "gaxios": "^4.0.0", - "google-p12-pem": "^3.1.3", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/har-schema": { - "version": "2.0.0", - "license": "ISC", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/har-validator": { - "version": "5.1.5", - "license": "MIT", - "dependencies": { - "ajv": "^6.12.3", - "har-schema": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/has": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "../plugins/node_modules/has-ansi": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/has-ansi/node_modules/ansi-regex": { - "version": "2.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/has-symbols": { - "version": "1.0.3", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../plugins/node_modules/has-tostringtag": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "has-symbols": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../plugins/node_modules/has-yarn": { - "version": "2.1.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/hash-base": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "^3.6.0", - "safe-buffer": "^5.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/hash-stream-validation": { - "version": "0.2.4", - "license": "MIT" - }, - "../plugins/node_modules/hash.js": { - "version": "1.1.7", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "minimalistic-assert": "^1.0.1" - } - }, - "../plugins/node_modules/hmac-drbg": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "hash.js": "^1.0.3", - "minimalistic-assert": "^1.0.0", - "minimalistic-crypto-utils": "^1.0.1" - } - }, - "../plugins/node_modules/homedir-polyfill": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "parse-passwd": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/hpagent": { - "version": "0.1.2", - "license": "MIT" - }, - "../plugins/node_modules/http-cache-semantics": { - "version": "4.1.1", - "license": "BSD-2-Clause" - }, - "../plugins/node_modules/http-signature": { - "version": "1.2.0", - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "jsprim": "^1.2.2", - "sshpk": "^1.7.0" - }, - "engines": { - "node": ">=0.8", - "npm": ">=1.3.7" - } - }, - "../plugins/node_modules/http2-wrapper": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "../plugins/node_modules/http2-wrapper/node_modules/quick-lru": { - "version": "5.1.1", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/node_modules/https-proxy-agent": { - "version": "5.0.1", - "license": "MIT", - "dependencies": { - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "../plugins/node_modules/humanize-ms": { - "version": "1.2.1", - "license": "MIT", - "dependencies": { - "ms": "^2.0.0" - } - }, - "../plugins/node_modules/ieee754": { - "version": "1.1.13", - "license": "BSD-3-Clause" - }, - "../plugins/node_modules/iferr": { - "version": "0.1.5", - "license": "MIT" - }, - "../plugins/node_modules/ignore-walk": { - "version": "3.0.4", - "license": "ISC", - "dependencies": { - "minimatch": "^3.0.4" - } - }, - "../plugins/node_modules/import-lazy": { - "version": "2.1.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/imurmurhash": { - "version": "0.1.4", - "license": "MIT", - "engines": { - "node": ">=0.8.19" - } - }, - "../plugins/node_modules/infer-owner": { - "version": "1.0.4", - "license": "ISC" - }, - "../plugins/node_modules/inflight": { - "version": "1.0.6", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "../plugins/node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "../plugins/node_modules/ini": { - "version": "1.3.8", - "license": "ISC" - }, - "../plugins/node_modules/interpret": { - "version": "2.2.0", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "../plugins/node_modules/ioredis": { - "version": "4.28.5", - "license": "MIT", - "dependencies": { - "cluster-key-slot": "^1.1.0", - "debug": "^4.3.1", - "denque": "^1.1.0", - "lodash.defaults": "^4.2.0", - "lodash.flatten": "^4.4.0", - "lodash.isarguments": "^3.1.0", - "p-map": "^2.1.0", - "redis-commands": "1.7.0", - "redis-errors": "^1.2.0", - "redis-parser": "^3.0.0", - "standard-as-callback": "^2.1.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/ioredis" - } - }, - "../plugins/node_modules/ioredis/node_modules/p-map": { - "version": "2.1.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/ip": { - "version": "2.0.0", - "license": "MIT" - }, - "../plugins/node_modules/ip-regex": { - "version": "2.1.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/ipaddr.js": { - "version": "2.0.1", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "../plugins/node_modules/is": { - "version": "3.3.0", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "../plugins/node_modules/is-arguments": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../plugins/node_modules/is-callable": { - "version": "1.2.7", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../plugins/node_modules/is-ci": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "ci-info": "^2.0.0" - }, - "bin": { - "is-ci": "bin.js" - } - }, - "../plugins/node_modules/is-ci/node_modules/ci-info": { - "version": "2.0.0", - "license": "MIT" - }, - "../plugins/node_modules/is-core-module": { - "version": "2.11.0", - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../plugins/node_modules/is-docker": { - "version": "2.2.1", - "license": "MIT", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/is-generator-function": { - "version": "1.0.10", - "license": "MIT", - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../plugins/node_modules/is-installed-globally": { - "version": "0.1.0", - "license": "MIT", - "dependencies": { - "global-dirs": "^0.1.0", - "is-path-inside": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/is-npm": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/is-obj": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/is-path-inside": { - "version": "1.0.1", - "license": "MIT", - "dependencies": { - "path-is-inside": "^1.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/is-property": { - "version": "1.0.2", - "license": "MIT" - }, - "../plugins/node_modules/is-stream": { - "version": "2.0.1", - "license": "MIT", - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/node_modules/is-stream-ended": { - "version": "0.1.4", - "license": "MIT" - }, - "../plugins/node_modules/is-typed-array": { - "version": "1.1.10", - "license": "MIT", - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../plugins/node_modules/is-typedarray": { - "version": "1.0.0", - "license": "MIT" - }, - "../plugins/node_modules/is-utf8": { - "version": "0.2.1", - "license": "MIT" - }, - "../plugins/node_modules/is-wsl": { - "version": "2.2.0", - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/is-yarn-global": { - "version": "0.3.0", - "license": "MIT" - }, - "../plugins/node_modules/isarray": { - "version": "1.0.0", - "license": "MIT" - }, - "../plugins/node_modules/isexe": { - "version": "2.0.0", - "license": "ISC" - }, - "../plugins/node_modules/isstream": { - "version": "0.1.2", - "license": "MIT" - }, - "../plugins/node_modules/jju": { - "version": "1.4.0", - "license": "MIT" - }, - "../plugins/node_modules/jmespath": { - "version": "0.16.0", - "license": "Apache-2.0", - "engines": { - "node": ">= 0.6.0" - } - }, - "../plugins/node_modules/js-tokens": { - "version": "4.0.0", - "license": "MIT" - }, - "../plugins/node_modules/js-yaml": { - "version": "3.14.1", - "license": "MIT", - "dependencies": { - "argparse": "^1.0.7", - "esprima": "^4.0.0" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "../plugins/node_modules/jsbi": { - "version": "3.2.5", - "license": "Apache-2.0" - }, - "../plugins/node_modules/jsbn": { - "version": "0.1.1", - "license": "MIT" - }, - "../plugins/node_modules/json-bigint": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "bignumber.js": "^9.0.0" - } - }, - "../plugins/node_modules/json-buffer": { - "version": "3.0.1", - "license": "MIT" - }, - "../plugins/node_modules/json-parse-better-errors": { - "version": "1.0.2", - "license": "MIT" - }, - "../plugins/node_modules/json-parse-helpfulerror": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "jju": "^1.1.0" - } - }, - "../plugins/node_modules/json-schema": { - "version": "0.4.0", - "license": "(AFL-2.1 OR BSD-3-Clause)" - }, - "../plugins/node_modules/json-schema-traverse": { - "version": "0.4.1", - "license": "MIT" - }, - "../plugins/node_modules/json-stream": { - "version": "1.0.0", - "license": "MIT" - }, - "../plugins/node_modules/json-stringify-safe": { - "version": "5.0.1", - "license": "ISC" - }, - "../plugins/node_modules/json5": { - "version": "2.2.3", - "license": "MIT", - "bin": { - "json5": "lib/cli.js" - }, - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/jsonparse": { - "version": "1.3.1", - "engines": [ - "node >= 0.2.0" - ], - "license": "MIT" - }, - "../plugins/node_modules/JSONStream": { - "version": "1.3.5", - "license": "(MIT OR Apache-2.0)", - "dependencies": { - "jsonparse": "^1.2.0", - "through": ">=2.2.7 <3" - }, - "bin": { - "JSONStream": "bin.js" - }, - "engines": { - "node": "*" - } - }, - "../plugins/node_modules/jsonwebtoken": { - "version": "8.5.1", - "license": "MIT", - "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^5.6.0" - }, - "engines": { - "node": ">=4", - "npm": ">=1.4.28" - } - }, - "../plugins/node_modules/jsonwebtoken/node_modules/jwa": { - "version": "1.4.1", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "../plugins/node_modules/jsonwebtoken/node_modules/jws": { - "version": "3.2.2", - "license": "MIT", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "../plugins/node_modules/jsonwebtoken/node_modules/semver": { - "version": "5.7.1", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "../plugins/node_modules/jsprim": { - "version": "1.4.2", - "license": "MIT", - "dependencies": { - "assert-plus": "1.0.0", - "extsprintf": "1.3.0", - "json-schema": "0.4.0", - "verror": "1.10.0" - }, - "engines": { - "node": ">=0.6.0" - } - }, - "../plugins/node_modules/jwa": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "../plugins/node_modules/jws": { - "version": "4.0.0", - "license": "MIT", - "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, - "../plugins/node_modules/keytar": { - "version": "7.9.0", - "hasInstallScript": true, - "license": "MIT", - "optional": true, - "dependencies": { - "node-addon-api": "^4.3.0", - "prebuild-install": "^7.0.1" - } - }, - "../plugins/node_modules/keyv": { - "version": "4.5.2", - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "../plugins/node_modules/kleur": { - "version": "3.0.3", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/knex": { - "version": "0.95.15", - "license": "MIT", - "dependencies": { - "colorette": "2.0.16", - "commander": "^7.1.0", - "debug": "4.3.2", - "escalade": "^3.1.1", - "esm": "^3.2.25", - "getopts": "2.2.5", - "interpret": "^2.2.0", - "lodash": "^4.17.21", - "pg-connection-string": "2.5.0", - "rechoir": "0.7.0", - "resolve-from": "^5.0.0", - "tarn": "^3.0.1", - "tildify": "2.0.0" - }, - "bin": { - "knex": "bin/cli.js" - }, - "engines": { - "node": ">=10" - }, - "peerDependenciesMeta": { - "mysql": { - "optional": true - }, - "mysql2": { - "optional": true - }, - "pg": { - "optional": true - }, - "pg-native": { - "optional": true - }, - "sqlite3": { - "optional": true - }, - "tedious": { - "optional": true - } - } - }, - "../plugins/node_modules/knex/node_modules/debug": { - "version": "4.3.2", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "../plugins/node_modules/knex/node_modules/resolve-from": { - "version": "5.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/kuler": { - "version": "2.0.0", - "license": "MIT" - }, - "../plugins/node_modules/latest-version": { - "version": "5.1.0", - "license": "MIT", - "dependencies": { - "package-json": "^6.3.0" - }, - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/libnpmconfig": { - "version": "1.2.1", - "license": "ISC", - "dependencies": { - "figgy-pudding": "^3.5.1", - "find-up": "^3.0.0", - "ini": "^1.3.5" - } - }, - "../plugins/node_modules/libnpmconfig/node_modules/find-up": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "locate-path": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/libnpmconfig/node_modules/locate-path": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "p-locate": "^3.0.0", - "path-exists": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/libnpmconfig/node_modules/p-locate": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "p-limit": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/libnpmconfig/node_modules/path-exists": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/locate-path": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/lodash": { - "version": "4.17.21", - "license": "MIT" - }, - "../plugins/node_modules/lodash.camelcase": { - "version": "4.3.0", - "license": "MIT" - }, - "../plugins/node_modules/lodash.defaults": { - "version": "4.2.0", - "license": "MIT" - }, - "../plugins/node_modules/lodash.flatten": { - "version": "4.4.0", - "license": "MIT" - }, - "../plugins/node_modules/lodash.includes": { - "version": "4.3.0", - "license": "MIT" - }, - "../plugins/node_modules/lodash.isarguments": { - "version": "3.1.0", - "license": "MIT" - }, - "../plugins/node_modules/lodash.isboolean": { - "version": "3.0.3", - "license": "MIT" - }, - "../plugins/node_modules/lodash.isinteger": { - "version": "4.0.4", - "license": "MIT" - }, - "../plugins/node_modules/lodash.isnumber": { - "version": "3.0.3", - "license": "MIT" - }, - "../plugins/node_modules/lodash.isplainobject": { - "version": "4.0.6", - "license": "MIT" - }, - "../plugins/node_modules/lodash.isstring": { - "version": "4.0.1", - "license": "MIT" - }, - "../plugins/node_modules/lodash.once": { - "version": "4.1.1", - "license": "MIT" - }, - "../plugins/node_modules/logform": { - "version": "2.4.2", - "license": "MIT", - "dependencies": { - "@colors/colors": "1.5.0", - "fecha": "^4.2.0", - "ms": "^2.1.1", - "safe-stable-stringify": "^2.3.1", - "triple-beam": "^1.3.0" - } - }, - "../plugins/node_modules/loglevel": { - "version": "1.8.1", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - }, - "funding": { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/loglevel" - } - }, - "../plugins/node_modules/long": { - "version": "4.0.0", - "license": "Apache-2.0" - }, - "../plugins/node_modules/loose-envify": { - "version": "1.4.0", - "license": "MIT", - "dependencies": { - "js-tokens": "^3.0.0 || ^4.0.0" - }, - "bin": { - "loose-envify": "cli.js" - } - }, - "../plugins/node_modules/lowercase-keys": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/lru-cache": { - "version": "5.1.1", - "license": "ISC", - "dependencies": { - "yallist": "^3.0.2" - } - }, - "../plugins/node_modules/make-dir": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/node_modules/make-dir/node_modules/semver": { - "version": "6.3.0", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "../plugins/node_modules/mariadb": { - "version": "3.0.2", - "license": "LGPL-2.1-or-later", - "dependencies": { - "@types/geojson": "^7946.0.10", - "@types/node": "^17.0.45", - "denque": "^2.1.0", - "iconv-lite": "^0.6.3", - "lru-cache": "^7.14.0", - "moment-timezone": "^0.5.38" - }, - "engines": { - "node": ">= 12" - } - }, - "../plugins/node_modules/mariadb/node_modules/@types/node": { - "version": "17.0.45", - "license": "MIT" - }, - "../plugins/node_modules/mariadb/node_modules/denque": { - "version": "2.1.0", - "license": "Apache-2.0", - "engines": { - "node": ">=0.10" - } - }, - "../plugins/node_modules/mariadb/node_modules/iconv-lite": { - "version": "0.6.3", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/mariadb/node_modules/lru-cache": { - "version": "7.14.1", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "../plugins/node_modules/md5.js": { - "version": "1.3.5", - "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "../plugins/node_modules/memory-pager": { - "version": "1.5.0", - "license": "MIT", - "optional": true - }, - "../plugins/node_modules/miller-rabin": { - "version": "4.0.1", - "license": "MIT", - "dependencies": { - "bn.js": "^4.0.0", - "brorand": "^1.0.1" - }, - "bin": { - "miller-rabin": "bin/miller-rabin" - } - }, - "../plugins/node_modules/miller-rabin/node_modules/bn.js": { - "version": "4.12.0", - "license": "MIT" - }, - "../plugins/node_modules/mime": { - "version": "3.0.0", - "license": "MIT", - "bin": { - "mime": "cli.js" - }, - "engines": { - "node": ">=10.0.0" - } - }, - "../plugins/node_modules/mime-db": { - "version": "1.52.0", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "../plugins/node_modules/mime-types": { - "version": "2.1.35", - "license": "MIT", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "../plugins/node_modules/mimic-response": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/minimalistic-assert": { - "version": "1.0.1", - "license": "ISC" - }, - "../plugins/node_modules/minimalistic-crypto-utils": { - "version": "1.0.1", - "license": "MIT" - }, - "../plugins/node_modules/minimatch": { - "version": "3.1.2", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "../plugins/node_modules/minimist": { - "version": "1.2.7", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../plugins/node_modules/minio": { - "version": "7.0.32", - "license": "Apache-2.0", - "dependencies": { - "async": "^3.1.0", - "block-stream2": "^2.0.0", - "browser-or-node": "^1.3.0", - "buffer-crc32": "^0.2.13", - "crypto-browserify": "^3.12.0", - "es6-error": "^4.1.1", - "fast-xml-parser": "^3.17.5", - "ipaddr.js": "^2.0.1", - "json-stream": "^1.0.0", - "lodash": "^4.17.21", - "mime-types": "^2.1.14", - "mkdirp": "^0.5.1", - "query-string": "^7.1.1", - "through2": "^3.0.1", - "web-encoding": "^1.1.5", - "xml": "^1.0.0", - "xml2js": "^0.4.15" - }, - "engines": { - "node": ">8 <=18" - } - }, - "../plugins/node_modules/minio/node_modules/fast-xml-parser": { - "version": "3.21.1", - "license": "MIT", - "dependencies": { - "strnum": "^1.0.4" - }, - "bin": { - "xml2js": "cli.js" - }, - "funding": { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - }, - "../plugins/node_modules/minio/node_modules/mkdirp": { - "version": "0.5.6", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "../plugins/node_modules/minio/node_modules/query-string": { - "version": "7.1.3", - "license": "MIT", - "dependencies": { - "decode-uri-component": "^0.2.2", - "filter-obj": "^1.1.0", - "split-on-first": "^1.0.0", - "strict-uri-encode": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/node_modules/minio/node_modules/through2": { - "version": "3.0.2", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.4", - "readable-stream": "2 || 3" - } - }, - "../plugins/node_modules/mississippi": { - "version": "3.0.0", - "license": "BSD-2-Clause", - "dependencies": { - "concat-stream": "^1.5.0", - "duplexify": "^3.4.2", - "end-of-stream": "^1.1.0", - "flush-write-stream": "^1.0.0", - "from2": "^2.1.0", - "parallel-transform": "^1.1.0", - "pump": "^3.0.0", - "pumpify": "^1.3.3", - "stream-each": "^1.1.0", - "through2": "^2.0.0" - }, - "engines": { - "node": ">=4.0.0" - } - }, - "../plugins/node_modules/mississippi/node_modules/concat-stream": { - "version": "1.6.2", - "engines": [ - "node >= 0.8" - ], - "license": "MIT", - "dependencies": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "../plugins/node_modules/mississippi/node_modules/duplexify": { - "version": "3.7.1", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.0.0", - "inherits": "^2.0.1", - "readable-stream": "^2.0.0", - "stream-shift": "^1.0.0" - } - }, - "../plugins/node_modules/mississippi/node_modules/pumpify": { - "version": "1.5.1", - "license": "MIT", - "dependencies": { - "duplexify": "^3.6.0", - "inherits": "^2.0.3", - "pump": "^2.0.0" - } - }, - "../plugins/node_modules/mississippi/node_modules/pumpify/node_modules/pump": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "../plugins/node_modules/mississippi/node_modules/readable-stream": { - "version": "2.3.7", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "../plugins/node_modules/mississippi/node_modules/safe-buffer": { - "version": "5.1.2", - "license": "MIT" - }, - "../plugins/node_modules/mississippi/node_modules/string_decoder": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "../plugins/node_modules/mississippi/node_modules/through2": { - "version": "2.0.5", - "license": "MIT", - "dependencies": { - "readable-stream": "~2.3.6", - "xtend": "~4.0.1" - } - }, - "../plugins/node_modules/mkdirp": { - "version": "1.0.4", - "license": "MIT", - "bin": { - "mkdirp": "bin/cmd.js" - }, - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/mkdirp-classic": { - "version": "0.5.3", - "license": "MIT", - "optional": true - }, - "../plugins/node_modules/moment": { - "version": "2.29.4", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "../plugins/node_modules/moment-timezone": { - "version": "0.5.40", - "license": "MIT", - "dependencies": { - "moment": ">= 2.9.0" - }, - "engines": { - "node": "*" - } - }, - "../plugins/node_modules/mongodb": { - "version": "4.13.0", - "license": "Apache-2.0", - "dependencies": { - "bson": "^4.7.0", - "mongodb-connection-string-url": "^2.5.4", - "socks": "^2.7.1" - }, - "engines": { - "node": ">=12.9.0" - }, - "optionalDependencies": { - "@aws-sdk/credential-providers": "^3.186.0", - "saslprep": "^1.0.3" - } - }, - "../plugins/node_modules/mongodb-connection-string-url": { - "version": "2.6.0", - "license": "Apache-2.0", - "dependencies": { - "@types/whatwg-url": "^8.2.1", - "whatwg-url": "^11.0.0" - } - }, - "../plugins/node_modules/mongodb-connection-string-url/node_modules/tr46": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "punycode": "^2.1.1" - }, - "engines": { - "node": ">=12" - } - }, - "../plugins/node_modules/mongodb-connection-string-url/node_modules/webidl-conversions": { - "version": "7.0.0", - "license": "BSD-2-Clause", - "engines": { - "node": ">=12" - } - }, - "../plugins/node_modules/mongodb-connection-string-url/node_modules/whatwg-url": { - "version": "11.0.0", - "license": "MIT", - "dependencies": { - "tr46": "^3.0.0", - "webidl-conversions": "^7.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "../plugins/node_modules/move-concurrently": { - "version": "1.0.1", - "license": "ISC", - "dependencies": { - "aproba": "^1.1.1", - "copy-concurrently": "^1.0.0", - "fs-write-stream-atomic": "^1.0.8", - "mkdirp": "^0.5.1", - "rimraf": "^2.5.4", - "run-queue": "^1.0.3" - } - }, - "../plugins/node_modules/move-concurrently/node_modules/aproba": { - "version": "1.2.0", - "license": "ISC" - }, - "../plugins/node_modules/move-concurrently/node_modules/mkdirp": { - "version": "0.5.6", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "../plugins/node_modules/move-concurrently/node_modules/rimraf": { - "version": "2.7.1", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "../plugins/node_modules/ms": { - "version": "2.1.2", - "license": "MIT" - }, - "../plugins/node_modules/msal": { - "version": "1.4.17", - "license": "MIT", - "dependencies": { - "tslib": "^1.9.3" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "../plugins/node_modules/mysql2": { - "version": "3.6.0", - "license": "MIT", - "dependencies": { - "denque": "^2.1.0", - "generate-function": "^2.3.1", - "iconv-lite": "^0.6.3", - "long": "^5.2.1", - "lru-cache": "^8.0.0", - "named-placeholders": "^1.1.3", - "seq-queue": "^0.0.5", - "sqlstring": "^2.3.2" - }, - "engines": { - "node": ">= 8.0" - } - }, - "../plugins/node_modules/mysql2/node_modules/denque": { - "version": "2.1.0", - "license": "Apache-2.0", - "engines": { - "node": ">=0.10" - } - }, - "../plugins/node_modules/mysql2/node_modules/iconv-lite": { - "version": "0.6.3", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/mysql2/node_modules/long": { - "version": "5.2.3", - "license": "Apache-2.0" - }, - "../plugins/node_modules/mysql2/node_modules/lru-cache": { - "version": "8.0.5", - "license": "ISC", - "engines": { - "node": ">=16.14" - } - }, - "../plugins/node_modules/mysql2/node_modules/sqlstring": { - "version": "2.3.3", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "../plugins/node_modules/named-placeholders": { - "version": "1.1.3", - "license": "MIT", - "dependencies": { - "lru-cache": "^7.14.1" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../plugins/node_modules/named-placeholders/node_modules/lru-cache": { - "version": "7.18.3", - "license": "ISC", - "engines": { - "node": ">=12" - } - }, - "../plugins/node_modules/napi-build-utils": { - "version": "1.0.2", - "license": "MIT", - "optional": true - }, - "../plugins/node_modules/native-duplexpair": { - "version": "1.0.0", - "license": "MIT" - }, - "../plugins/node_modules/nested-error-stacks": { - "version": "2.0.1", - "license": "MIT" - }, - "../plugins/node_modules/nock": { - "version": "13.3.0", - "license": "MIT", - "dependencies": { - "debug": "^4.1.0", - "json-stringify-safe": "^5.0.1", - "lodash": "^4.17.21", - "propagate": "^2.0.0" - }, - "engines": { - "node": ">= 10.13" - } - }, - "../plugins/node_modules/node-abi": { - "version": "3.31.0", - "license": "MIT", - "optional": true, - "dependencies": { - "semver": "^7.3.5" - }, - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/node-abort-controller": { - "version": "3.1.1", - "license": "MIT" - }, - "../plugins/node_modules/node-addon-api": { - "version": "4.3.0", - "license": "MIT", - "optional": true - }, - "../plugins/node_modules/node-alias": { - "version": "1.0.4", - "license": "MIT", - "dependencies": { - "chalk": "^1.1.1", - "lodash": "^4.2.0" - }, - "engines": { - "node": ">=0.10" - } - }, - "../plugins/node_modules/node-alias/node_modules/ansi-regex": { - "version": "2.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/node-alias/node_modules/ansi-styles": { - "version": "2.2.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/node-alias/node_modules/chalk": { - "version": "1.1.3", - "license": "MIT", - "dependencies": { - "ansi-styles": "^2.2.1", - "escape-string-regexp": "^1.0.2", - "has-ansi": "^2.0.0", - "strip-ansi": "^3.0.0", - "supports-color": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/node-alias/node_modules/escape-string-regexp": { - "version": "1.0.5", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "../plugins/node_modules/node-alias/node_modules/strip-ansi": { - "version": "3.0.1", - "license": "MIT", - "dependencies": { - "ansi-regex": "^2.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/node-alias/node_modules/supports-color": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "../plugins/node_modules/node-appwrite": { - "version": "5.1.0", - "license": "BSD-3-Clause", - "dependencies": { - "axios": "^0.26.1", - "form-data": "^4.0.0" - } - }, - "../plugins/node_modules/node-appwrite/node_modules/form-data": { - "version": "4.0.0", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "../plugins/node_modules/node-fetch": { - "version": "2.6.9", - "license": "MIT", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "../plugins/node_modules/node-fetch-npm": { - "version": "2.0.4", - "license": "MIT", - "dependencies": { - "encoding": "^0.1.11", - "json-parse-better-errors": "^1.0.0", - "safe-buffer": "^5.1.1" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/node-fetch/node_modules/tr46": { - "version": "0.0.3", - "license": "MIT" - }, - "../plugins/node_modules/node-fetch/node_modules/webidl-conversions": { - "version": "3.0.1", - "license": "BSD-2-Clause" - }, - "../plugins/node_modules/node-fetch/node_modules/whatwg-url": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "../plugins/node_modules/node-forge": { - "version": "1.3.1", - "license": "(BSD-3-Clause OR GPL-2.0)", - "engines": { - "node": ">= 6.13.0" - } - }, - "../plugins/node_modules/nodemailer": { - "version": "6.9.1", - "license": "MIT", - "engines": { - "node": ">=6.0.0" - } - }, - "../plugins/node_modules/normalize-url": { - "version": "6.1.0", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/node_modules/npm-bundled": { - "version": "1.1.2", - "license": "ISC", - "dependencies": { - "npm-normalize-package-bin": "^1.0.1" - } - }, - "../plugins/node_modules/npm-check-updates": { - "version": "3.1.20", - "license": "Apache-2.0", - "dependencies": { - "chalk": "^2.4.2", - "cint": "^8.2.1", - "cli-table": "^0.3.1", - "commander": "^2.20.0", - "fast-diff": "^1.2.0", - "find-up": "4.1.0", - "get-stdin": "^7.0.0", - "json-parse-helpfulerror": "^1.0.3", - "libnpmconfig": "^1.2.1", - "lodash": "^4.17.13", - "node-alias": "^1.0.4", - "pacote": "^9.5.1", - "progress": "^2.0.3", - "prompts": "^2.1.0", - "rc-config-loader": "^2.0.4", - "requireg": "^0.2.2", - "semver": "^6.2.0", - "semver-utils": "^1.1.4", - "spawn-please": "^0.3.0", - "update-notifier": "^3.0.1" - }, - "bin": { - "ncu": "bin/ncu", - "npm-check-updates": "bin/npm-check-updates" - }, - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/agent-base": { - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "es6-promisify": "^5.0.0" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/agentkeepalive": { - "version": "3.5.2", - "license": "MIT", - "dependencies": { - "humanize-ms": "^1.2.1" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/ansi-styles": { - "version": "3.2.1", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/cacache": { - "version": "12.0.4", - "license": "ISC", - "dependencies": { - "bluebird": "^3.5.5", - "chownr": "^1.1.1", - "figgy-pudding": "^3.5.1", - "glob": "^7.1.4", - "graceful-fs": "^4.1.15", - "infer-owner": "^1.0.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "move-concurrently": "^1.0.1", - "promise-inflight": "^1.0.1", - "rimraf": "^2.6.3", - "ssri": "^6.0.1", - "unique-filename": "^1.1.1", - "y18n": "^4.0.0" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/chalk": { - "version": "2.4.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/chownr": { - "version": "1.1.4", - "license": "ISC" - }, - "../plugins/node_modules/npm-check-updates/node_modules/color-convert": { - "version": "1.9.3", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/color-name": { - "version": "1.1.3", - "license": "MIT" - }, - "../plugins/node_modules/npm-check-updates/node_modules/commander": { - "version": "2.20.3", - "license": "MIT" - }, - "../plugins/node_modules/npm-check-updates/node_modules/debug": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "ms": "2.0.0" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/err-code": { - "version": "1.1.2", - "license": "MIT" - }, - "../plugins/node_modules/npm-check-updates/node_modules/escape-string-regexp": { - "version": "1.0.5", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/fs-minipass": { - "version": "1.2.7", - "license": "ISC", - "dependencies": { - "minipass": "^2.6.0" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/get-stream": { - "version": "4.1.0", - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/has-flag": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/hosted-git-info": { - "version": "2.8.9", - "license": "ISC" - }, - "../plugins/node_modules/npm-check-updates/node_modules/http-cache-semantics": { - "version": "3.8.1", - "license": "BSD-2-Clause" - }, - "../plugins/node_modules/npm-check-updates/node_modules/http-proxy-agent": { - "version": "2.1.0", - "license": "MIT", - "dependencies": { - "agent-base": "4", - "debug": "3.1.0" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/https-proxy-agent": { - "version": "2.2.4", - "license": "MIT", - "dependencies": { - "agent-base": "^4.3.0", - "debug": "^3.1.0" - }, - "engines": { - "node": ">= 4.5.0" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/ip": { - "version": "1.1.5", - "license": "MIT" - }, - "../plugins/node_modules/npm-check-updates/node_modules/make-fetch-happen": { - "version": "5.0.2", - "license": "ISC", - "dependencies": { - "agentkeepalive": "^3.4.1", - "cacache": "^12.0.0", - "http-cache-semantics": "^3.8.1", - "http-proxy-agent": "^2.1.0", - "https-proxy-agent": "^2.2.3", - "lru-cache": "^5.1.1", - "mississippi": "^3.0.0", - "node-fetch-npm": "^2.0.2", - "promise-retry": "^1.1.1", - "socks-proxy-agent": "^4.0.0", - "ssri": "^6.0.0" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/minipass": { - "version": "2.9.0", - "license": "ISC", - "dependencies": { - "safe-buffer": "^5.1.2", - "yallist": "^3.0.0" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/minizlib": { - "version": "1.3.3", - "license": "MIT", - "dependencies": { - "minipass": "^2.9.0" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/mkdirp": { - "version": "0.5.6", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/ms": { - "version": "2.0.0", - "license": "MIT" - }, - "../plugins/node_modules/npm-check-updates/node_modules/normalize-package-data": { - "version": "2.5.0", - "license": "BSD-2-Clause", - "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.1", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/npm-package-arg": { - "version": "6.1.1", - "license": "ISC", - "dependencies": { - "hosted-git-info": "^2.7.1", - "osenv": "^0.1.5", - "semver": "^5.6.0", - "validate-npm-package-name": "^3.0.0" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/npm-package-arg/node_modules/semver": { - "version": "5.7.1", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/npm-packlist": { - "version": "1.4.8", - "license": "ISC", - "dependencies": { - "ignore-walk": "^3.0.1", - "npm-bundled": "^1.0.1", - "npm-normalize-package-bin": "^1.0.1" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/npm-pick-manifest": { - "version": "3.0.2", - "license": "ISC", - "dependencies": { - "figgy-pudding": "^3.5.1", - "npm-package-arg": "^6.0.0", - "semver": "^5.4.1" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/npm-pick-manifest/node_modules/semver": { - "version": "5.7.1", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/npm-registry-fetch": { - "version": "4.0.7", - "license": "ISC", - "dependencies": { - "bluebird": "^3.5.1", - "figgy-pudding": "^3.4.1", - "JSONStream": "^1.3.4", - "lru-cache": "^5.1.1", - "make-fetch-happen": "^5.0.0", - "npm-package-arg": "^6.1.0", - "safe-buffer": "^5.2.0" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/pacote": { - "version": "9.5.12", - "license": "MIT", - "dependencies": { - "bluebird": "^3.5.3", - "cacache": "^12.0.2", - "chownr": "^1.1.2", - "figgy-pudding": "^3.5.1", - "get-stream": "^4.1.0", - "glob": "^7.1.3", - "infer-owner": "^1.0.4", - "lru-cache": "^5.1.1", - "make-fetch-happen": "^5.0.0", - "minimatch": "^3.0.4", - "minipass": "^2.3.5", - "mississippi": "^3.0.0", - "mkdirp": "^0.5.1", - "normalize-package-data": "^2.4.0", - "npm-normalize-package-bin": "^1.0.0", - "npm-package-arg": "^6.1.0", - "npm-packlist": "^1.1.12", - "npm-pick-manifest": "^3.0.0", - "npm-registry-fetch": "^4.0.0", - "osenv": "^0.1.5", - "promise-inflight": "^1.0.1", - "promise-retry": "^1.1.1", - "protoduck": "^5.0.1", - "rimraf": "^2.6.2", - "safe-buffer": "^5.1.2", - "semver": "^5.6.0", - "ssri": "^6.0.1", - "tar": "^4.4.10", - "unique-filename": "^1.1.1", - "which": "^1.3.1" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/pacote/node_modules/semver": { - "version": "5.7.1", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/promise-retry": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "err-code": "^1.0.0", - "retry": "^0.10.0" - }, - "engines": { - "node": ">=0.12" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/retry": { - "version": "0.10.1", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/rimraf": { - "version": "2.7.1", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/semver": { - "version": "6.3.0", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/socks": { - "version": "2.3.3", - "license": "MIT", - "dependencies": { - "ip": "1.1.5", - "smart-buffer": "^4.1.0" - }, - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/socks-proxy-agent": { - "version": "4.0.2", - "license": "MIT", - "dependencies": { - "agent-base": "~4.2.1", - "socks": "~2.3.2" - }, - "engines": { - "node": ">= 6" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/socks-proxy-agent/node_modules/agent-base": { - "version": "4.2.1", - "license": "MIT", - "dependencies": { - "es6-promisify": "^5.0.0" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/ssri": { - "version": "6.0.2", - "license": "ISC", - "dependencies": { - "figgy-pudding": "^3.5.1" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/supports-color": { - "version": "5.5.0", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/tar": { - "version": "4.4.19", - "license": "ISC", - "dependencies": { - "chownr": "^1.1.4", - "fs-minipass": "^1.2.7", - "minipass": "^2.9.0", - "minizlib": "^1.3.3", - "mkdirp": "^0.5.5", - "safe-buffer": "^5.2.1", - "yallist": "^3.1.1" - }, - "engines": { - "node": ">=4.5" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/which": { - "version": "1.3.1", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "../plugins/node_modules/npm-check-updates/node_modules/y18n": { - "version": "4.0.3", - "license": "ISC" - }, - "../plugins/node_modules/npm-normalize-package-bin": { - "version": "1.0.1", - "license": "ISC" - }, - "../plugins/node_modules/oauth-1.0a": { - "version": "2.2.6", - "license": "MIT" - }, - "../plugins/node_modules/oauth-sign": { - "version": "0.9.0", - "license": "Apache-2.0", - "engines": { - "node": "*" - } - }, - "../plugins/node_modules/object-assign": { - "version": "4.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/object-hash": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">= 6" - } - }, - "../plugins/node_modules/object-inspect": { - "version": "1.12.3", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../plugins/node_modules/object-keys": { - "version": "1.1.1", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "../plugins/node_modules/once": { - "version": "1.4.0", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "../plugins/node_modules/one-time": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "fn.name": "1.x.x" - } - }, - "../plugins/node_modules/open": { - "version": "7.4.2", - "license": "MIT", - "dependencies": { - "is-docker": "^2.0.0", - "is-wsl": "^2.1.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/node_modules/oracledb": { - "version": "6.0.0", - "hasInstallScript": true, - "license": "(Apache-2.0 OR UPL-1.0)", - "engines": { - "node": ">=14.6" - } - }, - "../plugins/node_modules/os-homedir": { - "version": "1.0.2", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/os-tmpdir": { - "version": "1.0.2", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/osenv": { - "version": "0.1.5", - "license": "ISC", - "dependencies": { - "os-homedir": "^1.0.0", - "os-tmpdir": "^1.0.0" - } - }, - "../plugins/node_modules/p-cancelable": { - "version": "2.1.1", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/p-event": { - "version": "4.2.0", - "license": "MIT", - "dependencies": { - "p-timeout": "^3.1.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/node_modules/p-finally": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/p-limit": { - "version": "2.3.0", - "license": "MIT", - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/node_modules/p-locate": { - "version": "4.1.0", - "license": "MIT", - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/p-timeout": { - "version": "3.2.0", - "license": "MIT", - "dependencies": { - "p-finally": "^1.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/p-try": { - "version": "2.2.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/package-json": { - "version": "6.5.0", - "license": "MIT", - "dependencies": { - "got": "^9.6.0", - "registry-auth-token": "^4.0.0", - "registry-url": "^5.0.0", - "semver": "^6.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/package-json/node_modules/@sindresorhus/is": { - "version": "0.14.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/package-json/node_modules/@szmarczak/http-timer": { - "version": "1.1.2", - "license": "MIT", - "dependencies": { - "defer-to-connect": "^1.0.1" - }, - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/package-json/node_modules/cacheable-request": { - "version": "6.1.0", - "license": "MIT", - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^3.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^4.1.0", - "responselike": "^1.0.2" - }, - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/package-json/node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/node_modules/package-json/node_modules/decompress-response": { - "version": "3.3.0", - "license": "MIT", - "dependencies": { - "mimic-response": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/package-json/node_modules/defer-to-connect": { - "version": "1.1.3", - "license": "MIT" - }, - "../plugins/node_modules/package-json/node_modules/get-stream": { - "version": "4.1.0", - "license": "MIT", - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/package-json/node_modules/got": { - "version": "9.6.0", - "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^0.14.0", - "@szmarczak/http-timer": "^1.1.2", - "cacheable-request": "^6.0.0", - "decompress-response": "^3.3.0", - "duplexer3": "^0.1.4", - "get-stream": "^4.1.0", - "lowercase-keys": "^1.0.1", - "mimic-response": "^1.0.1", - "p-cancelable": "^1.0.0", - "to-readable-stream": "^1.0.0", - "url-parse-lax": "^3.0.0" - }, - "engines": { - "node": ">=8.6" - } - }, - "../plugins/node_modules/package-json/node_modules/got/node_modules/lowercase-keys": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/package-json/node_modules/json-buffer": { - "version": "3.0.0", - "license": "MIT" - }, - "../plugins/node_modules/package-json/node_modules/keyv": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "json-buffer": "3.0.0" - } - }, - "../plugins/node_modules/package-json/node_modules/normalize-url": { - "version": "4.5.1", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/package-json/node_modules/p-cancelable": { - "version": "1.1.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/package-json/node_modules/responselike": { - "version": "1.0.2", - "license": "MIT", - "dependencies": { - "lowercase-keys": "^1.0.0" - } - }, - "../plugins/node_modules/package-json/node_modules/responselike/node_modules/lowercase-keys": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/package-json/node_modules/semver": { - "version": "6.3.0", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - } - }, - "../plugins/node_modules/packet-reader": { - "version": "1.0.0", - "license": "MIT" - }, - "../plugins/node_modules/parallel-transform": { - "version": "1.2.0", - "license": "MIT", - "dependencies": { - "cyclist": "^1.0.1", - "inherits": "^2.0.3", - "readable-stream": "^2.1.5" - } - }, - "../plugins/node_modules/parallel-transform/node_modules/readable-stream": { - "version": "2.3.7", - "license": "MIT", - "dependencies": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, - "../plugins/node_modules/parallel-transform/node_modules/safe-buffer": { - "version": "5.1.2", - "license": "MIT" - }, - "../plugins/node_modules/parallel-transform/node_modules/string_decoder": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.1.0" - } - }, - "../plugins/node_modules/parse-asn1": { - "version": "5.1.6", - "license": "ISC", - "dependencies": { - "asn1.js": "^5.2.0", - "browserify-aes": "^1.0.0", - "evp_bytestokey": "^1.0.0", - "pbkdf2": "^3.0.3", - "safe-buffer": "^5.1.1" - } - }, - "../plugins/node_modules/parse-passwd": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/path-exists": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/path-is-absolute": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/path-is-inside": { - "version": "1.0.2", - "license": "(WTFPL OR MIT)" - }, - "../plugins/node_modules/path-parse": { - "version": "1.0.7", - "license": "MIT" - }, - "../plugins/node_modules/pbkdf2": { - "version": "3.1.2", - "license": "MIT", - "dependencies": { - "create-hash": "^1.1.2", - "create-hmac": "^1.1.4", - "ripemd160": "^2.0.1", - "safe-buffer": "^5.0.1", - "sha.js": "^2.4.8" - }, - "engines": { - "node": ">=0.12" - } - }, - "../plugins/node_modules/performance-now": { - "version": "2.1.0", - "license": "MIT" - }, - "../plugins/node_modules/pg": { - "version": "8.9.0", - "license": "MIT", - "dependencies": { - "buffer-writer": "2.0.0", - "packet-reader": "1.0.0", - "pg-connection-string": "^2.5.0", - "pg-pool": "^3.5.2", - "pg-protocol": "^1.6.0", - "pg-types": "^2.1.0", - "pgpass": "1.x" - }, - "engines": { - "node": ">= 8.0.0" - }, - "peerDependencies": { - "pg-native": ">=3.0.1" - }, - "peerDependenciesMeta": { - "pg-native": { - "optional": true - } - } - }, - "../plugins/node_modules/pg-connection-string": { - "version": "2.5.0", - "license": "MIT" - }, - "../plugins/node_modules/pg-int8": { - "version": "1.0.1", - "license": "ISC", - "engines": { - "node": ">=4.0.0" - } - }, - "../plugins/node_modules/pg-pool": { - "version": "3.5.2", - "license": "MIT", - "peerDependencies": { - "pg": ">=8.0" - } - }, - "../plugins/node_modules/pg-protocol": { - "version": "1.6.0", - "license": "MIT" - }, - "../plugins/node_modules/pg-types": { - "version": "2.2.0", - "license": "MIT", - "dependencies": { - "pg-int8": "1.0.1", - "postgres-array": "~2.0.0", - "postgres-bytea": "~1.0.0", - "postgres-date": "~1.0.4", - "postgres-interval": "^1.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/pgpass": { - "version": "1.0.5", - "license": "MIT", - "dependencies": { - "split2": "^4.1.0" - } - }, - "../plugins/node_modules/pgpass/node_modules/split2": { - "version": "4.1.0", - "license": "ISC", - "engines": { - "node": ">= 10.x" - } - }, - "../plugins/node_modules/pop-iterate": { - "version": "1.0.1", - "license": "MIT" - }, - "../plugins/node_modules/postgres-array": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/postgres-bytea": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/postgres-date": { - "version": "1.0.7", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/postgres-interval": { - "version": "1.2.0", - "license": "MIT", - "dependencies": { - "xtend": "^4.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/prebuild-install": { - "version": "7.1.1", - "license": "MIT", - "optional": true, - "dependencies": { - "detect-libc": "^2.0.0", - "expand-template": "^2.0.3", - "github-from-package": "0.0.0", - "minimist": "^1.2.3", - "mkdirp-classic": "^0.5.3", - "napi-build-utils": "^1.0.1", - "node-abi": "^3.3.0", - "pump": "^3.0.0", - "rc": "^1.2.7", - "simple-get": "^4.0.0", - "tar-fs": "^2.0.0", - "tunnel-agent": "^0.6.0" - }, - "bin": { - "prebuild-install": "bin.js" - }, - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/prepend-http": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/priorityqueuejs": { - "version": "1.0.0", - "license": "MIT" - }, - "../plugins/node_modules/process": { - "version": "0.11.10", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "../plugins/node_modules/process-nextick-args": { - "version": "2.0.1", - "license": "MIT" - }, - "../plugins/node_modules/progress": { - "version": "2.0.3", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "../plugins/node_modules/promise-inflight": { - "version": "1.0.1", - "license": "ISC" - }, - "../plugins/node_modules/prompts": { - "version": "2.4.2", - "license": "MIT", - "dependencies": { - "kleur": "^3.0.3", - "sisteransi": "^1.0.5" - }, - "engines": { - "node": ">= 6" - } - }, - "../plugins/node_modules/propagate": { - "version": "2.0.1", - "license": "MIT", - "engines": { - "node": ">= 8" - } - }, - "../plugins/node_modules/proto3-json-serializer": { - "version": "0.1.9", - "license": "Apache-2.0", - "dependencies": { - "protobufjs": "^6.11.2" - } - }, - "../plugins/node_modules/protobufjs": { - "version": "6.11.3", - "hasInstallScript": true, - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/long": "^4.0.1", - "@types/node": ">=13.7.0", - "long": "^4.0.0" - }, - "bin": { - "pbjs": "bin/pbjs", - "pbts": "bin/pbts" - } - }, - "../plugins/node_modules/protoduck": { - "version": "5.0.1", - "license": "MIT", - "dependencies": { - "genfun": "^5.0.0" - } - }, - "../plugins/node_modules/proxy-from-env": { - "version": "1.1.0", - "license": "MIT" - }, - "../plugins/node_modules/pseudomap": { - "version": "1.0.2", - "license": "ISC" - }, - "../plugins/node_modules/psl": { - "version": "1.9.0", - "license": "MIT" - }, - "../plugins/node_modules/public-encrypt": { - "version": "4.0.3", - "license": "MIT", - "dependencies": { - "bn.js": "^4.1.0", - "browserify-rsa": "^4.0.0", - "create-hash": "^1.1.0", - "parse-asn1": "^5.0.0", - "randombytes": "^2.0.1", - "safe-buffer": "^5.1.2" - } - }, - "../plugins/node_modules/public-encrypt/node_modules/bn.js": { - "version": "4.12.0", - "license": "MIT" - }, - "../plugins/node_modules/pump": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "../plugins/node_modules/pumpify": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "duplexify": "^4.1.1", - "inherits": "^2.0.3", - "pump": "^3.0.0" - } - }, - "../plugins/node_modules/punycode": { - "version": "2.3.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/python-struct": { - "version": "1.1.3", - "license": "MIT", - "dependencies": { - "long": "^4.0.0" - } - }, - "../plugins/node_modules/qs": { - "version": "6.11.0", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../plugins/node_modules/querystring": { - "version": "0.2.0", - "engines": { - "node": ">=0.4.x" - } - }, - "../plugins/node_modules/querystringify": { - "version": "2.2.0", - "license": "MIT" - }, - "../plugins/node_modules/randombytes": { - "version": "2.1.0", - "license": "MIT", - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "../plugins/node_modules/randomfill": { - "version": "1.0.4", - "license": "MIT", - "dependencies": { - "randombytes": "^2.0.5", - "safe-buffer": "^5.1.0" - } - }, - "../plugins/node_modules/rc": { - "version": "1.2.8", - "license": "(BSD-2-Clause OR MIT OR Apache-2.0)", - "dependencies": { - "deep-extend": "^0.6.0", - "ini": "~1.3.0", - "minimist": "^1.2.0", - "strip-json-comments": "~2.0.1" - }, - "bin": { - "rc": "cli.js" - } - }, - "../plugins/node_modules/rc-config-loader": { - "version": "2.0.5", - "license": "MIT", - "dependencies": { - "debug": "^4.1.1", - "js-yaml": "^3.12.0", - "json5": "^2.1.0", - "object-assign": "^4.1.0", - "object-keys": "^1.0.12", - "path-exists": "^3.0.0", - "require-from-string": "^2.0.2" - } - }, - "../plugins/node_modules/rc-config-loader/node_modules/path-exists": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/rc/node_modules/strip-json-comments": { - "version": "2.0.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/react": { - "version": "17.0.2", - "license": "MIT", - "dependencies": { - "loose-envify": "^1.1.0", - "object-assign": "^4.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/readable-stream": { - "version": "3.6.0", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "../plugins/node_modules/rechoir": { - "version": "0.7.0", - "license": "MIT", - "dependencies": { - "resolve": "^1.9.0" - }, - "engines": { - "node": ">= 0.10" - } - }, - "../plugins/node_modules/redis-commands": { - "version": "1.7.0", - "license": "MIT" - }, - "../plugins/node_modules/redis-errors": { - "version": "1.2.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/redis-parser": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "redis-errors": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/regenerator-runtime": { - "version": "0.13.11", - "license": "MIT", - "peer": true - }, - "../plugins/node_modules/registry-auth-token": { - "version": "4.2.2", - "license": "MIT", - "dependencies": { - "rc": "1.2.8" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "../plugins/node_modules/registry-url": { - "version": "5.1.0", - "license": "MIT", - "dependencies": { - "rc": "^1.2.8" - }, - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/require-directory": { - "version": "2.1.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/require-from-string": { - "version": "2.0.2", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/requireg": { - "version": "0.2.2", - "dependencies": { - "nested-error-stacks": "~2.0.1", - "rc": "~1.2.7", - "resolve": "~1.7.1" - }, - "engines": { - "node": ">= 4.0.0" - } - }, - "../plugins/node_modules/requireg/node_modules/resolve": { - "version": "1.7.1", - "license": "MIT", - "dependencies": { - "path-parse": "^1.0.5" - } - }, - "../plugins/node_modules/requires-port": { - "version": "1.0.0", - "license": "MIT" - }, - "../plugins/node_modules/resolve": { - "version": "1.22.1", - "license": "MIT", - "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../plugins/node_modules/resolve-alpn": { - "version": "1.2.1", - "license": "MIT" - }, - "../plugins/node_modules/responselike": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/node_modules/rethinkdb": { - "version": "2.4.2", - "dependencies": { - "bluebird": ">= 2.3.2 < 3" - }, - "engines": { - "node": ">= 0.10.0" - } - }, - "../plugins/node_modules/rethinkdb/node_modules/bluebird": { - "version": "2.11.0", - "license": "MIT" - }, - "../plugins/node_modules/retry-request": { - "version": "4.2.2", - "license": "MIT", - "dependencies": { - "debug": "^4.1.1", - "extend": "^3.0.2" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "../plugins/node_modules/rimraf": { - "version": "3.0.2", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "../plugins/node_modules/ripemd160": { - "version": "2.0.2", - "license": "MIT", - "dependencies": { - "hash-base": "^3.0.0", - "inherits": "^2.0.1" - } - }, - "../plugins/node_modules/rootpath": { - "version": "0.1.2", - "license": "MIT" - }, - "../plugins/node_modules/run-queue": { - "version": "1.0.3", - "license": "ISC", - "dependencies": { - "aproba": "^1.1.1" - } - }, - "../plugins/node_modules/run-queue/node_modules/aproba": { - "version": "1.2.0", - "license": "ISC" - }, - "../plugins/node_modules/safe-buffer": { - "version": "5.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" - } - ], - "license": "MIT" - }, - "../plugins/node_modules/safe-stable-stringify": { - "version": "2.4.2", - "license": "MIT", - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/safer-buffer": { - "version": "2.1.2", - "license": "MIT" - }, - "../plugins/node_modules/saslprep": { - "version": "1.0.3", - "license": "MIT", - "optional": true, - "dependencies": { - "sparse-bitfield": "^3.0.3" - }, - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/sax": { - "version": "1.2.1", - "license": "ISC" - }, - "../plugins/node_modules/scmp": { - "version": "2.1.0", - "license": "BSD-3-Clause" - }, - "../plugins/node_modules/secure-json-parse": { - "version": "2.7.0", - "license": "BSD-3-Clause" - }, - "../plugins/node_modules/semaphore": { - "version": "1.1.0", - "engines": { - "node": ">=0.8.0" - } - }, - "../plugins/node_modules/semver": { - "version": "7.3.8", - "license": "ISC", - "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/semver-diff": { - "version": "2.1.0", - "license": "MIT", - "dependencies": { - "semver": "^5.0.3" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/semver-diff/node_modules/semver": { - "version": "5.7.1", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "../plugins/node_modules/semver-utils": { - "version": "1.1.4", - "license": "APACHEv2" - }, - "../plugins/node_modules/semver/node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/semver/node_modules/yallist": { - "version": "4.0.0", - "license": "ISC" - }, - "../plugins/node_modules/seq-queue": { - "version": "0.0.5" - }, - "../plugins/node_modules/sha.js": { - "version": "2.4.11", - "license": "(MIT AND BSD-3-Clause)", - "dependencies": { - "inherits": "^2.0.1", - "safe-buffer": "^5.0.1" - }, - "bin": { - "sha.js": "bin.js" - } - }, - "../plugins/node_modules/side-channel": { - "version": "1.0.4", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../plugins/node_modules/signal-exit": { - "version": "3.0.7", - "license": "ISC" - }, - "../plugins/node_modules/simple-concat": { - "version": "1.0.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" - } - ], - "license": "MIT", - "optional": true - }, - "../plugins/node_modules/simple-get": { - "version": "4.0.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" - } - ], - "license": "MIT", - "optional": true, - "dependencies": { - "decompress-response": "^6.0.0", - "once": "^1.3.1", - "simple-concat": "^1.0.0" - } - }, - "../plugins/node_modules/simple-lru-cache": { - "version": "0.0.2" - }, - "../plugins/node_modules/simple-swizzle": { - "version": "0.2.2", - "license": "MIT", - "dependencies": { - "is-arrayish": "^0.3.1" - } - }, - "../plugins/node_modules/simple-swizzle/node_modules/is-arrayish": { - "version": "0.3.2", - "license": "MIT" - }, - "../plugins/node_modules/sisteransi": { - "version": "1.0.5", - "license": "MIT" - }, - "../plugins/node_modules/smart-buffer": { - "version": "4.2.0", - "license": "MIT", - "engines": { - "node": ">= 6.0.0", - "npm": ">= 3.0.0" - } - }, - "../plugins/node_modules/snowflake-sdk": { - "version": "1.9.1", - "license": "Apache-2.0", - "dependencies": { - "@aws-sdk/client-s3": "^3.388.0", - "@azure/storage-blob": "^12.11.0", - "@google-cloud/storage": "^6.9.3", - "@techteamer/ocsp": "1.0.1", - "agent-base": "^6.0.2", - "asn1.js-rfc2560": "^5.0.0", - "asn1.js-rfc5280": "^3.0.0", - "axios": "^1.6.0", - "big-integer": "^1.6.43", - "bignumber.js": "^9.1.2", - "binascii": "0.0.2", - "bn.js": "^5.2.1", - "browser-request": "^0.3.3", - "debug": "^3.2.6", - "expand-tilde": "^2.0.2", - "extend": "^3.0.2", - "fast-xml-parser": "^4.2.5", - "fastest-levenshtein": "^1.0.16", - "generic-pool": "^3.8.2", - "glob": "^7.1.6", - "https-proxy-agent": "^5.0.1", - "jsonwebtoken": "^9.0.0", - "mime-types": "^2.1.29", - "mkdirp": "^1.0.3", - "moment": "^2.29.4", - "moment-timezone": "^0.5.15", - "open": "^7.3.1", - "python-struct": "^1.1.3", - "simple-lru-cache": "^0.0.2", - "tmp": "^0.2.1", - "uuid": "^8.3.2", - "winston": "^3.1.0" - }, - "peerDependencies": { - "asn1.js": "^5.4.1" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/@google-cloud/projectify": { - "version": "3.0.0", - "license": "Apache-2.0", - "engines": { - "node": ">=12.0.0" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/@google-cloud/promisify": { - "version": "3.0.1", - "license": "Apache-2.0", - "engines": { - "node": ">=12" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/@google-cloud/storage": { - "version": "6.10.1", - "license": "Apache-2.0", - "dependencies": { - "@google-cloud/paginator": "^3.0.7", - "@google-cloud/projectify": "^3.0.0", - "@google-cloud/promisify": "^3.0.0", - "abort-controller": "^3.0.0", - "async-retry": "^1.3.3", - "compressible": "^2.0.12", - "duplexify": "^4.0.0", - "ent": "^2.2.0", - "extend": "^3.0.2", - "gaxios": "^5.0.0", - "google-auth-library": "^8.0.1", - "mime": "^3.0.0", - "mime-types": "^2.0.8", - "p-limit": "^3.0.1", - "retry-request": "^5.0.0", - "teeny-request": "^8.0.0", - "uuid": "^8.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/@tootallnate/once": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/arrify": { - "version": "2.0.1", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/axios": { - "version": "1.6.2", - "license": "MIT", - "dependencies": { - "follow-redirects": "^1.15.0", - "form-data": "^4.0.0", - "proxy-from-env": "^1.1.0" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/debug": { - "version": "3.2.7", - "license": "MIT", - "dependencies": { - "ms": "^2.1.1" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/fast-xml-parser": { - "version": "4.3.2", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/NaturalIntelligence" - }, - { - "type": "paypal", - "url": "https://paypal.me/naturalintelligence" - } - ], - "license": "MIT", - "dependencies": { - "strnum": "^1.0.5" - }, - "bin": { - "fxparser": "src/cli/cli.js" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/form-data": { - "version": "4.0.0", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/gaxios": { - "version": "5.1.0", - "license": "Apache-2.0", - "dependencies": { - "extend": "^3.0.2", - "https-proxy-agent": "^5.0.0", - "is-stream": "^2.0.0", - "node-fetch": "^2.6.7" - }, - "engines": { - "node": ">=12" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/gcp-metadata": { - "version": "5.2.0", - "license": "Apache-2.0", - "dependencies": { - "gaxios": "^5.0.0", - "json-bigint": "^1.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/google-auth-library": { - "version": "8.8.0", - "license": "Apache-2.0", - "dependencies": { - "arrify": "^2.0.0", - "base64-js": "^1.3.0", - "ecdsa-sig-formatter": "^1.0.11", - "fast-text-encoding": "^1.0.0", - "gaxios": "^5.0.0", - "gcp-metadata": "^5.2.0", - "gtoken": "^6.1.0", - "jws": "^4.0.0", - "lru-cache": "^6.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/google-p12-pem": { - "version": "4.0.1", - "license": "MIT", - "dependencies": { - "node-forge": "^1.3.1" - }, - "bin": { - "gp12-pem": "build/src/bin/gp12-pem.js" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/gtoken": { - "version": "6.1.2", - "license": "MIT", - "dependencies": { - "gaxios": "^5.0.1", - "google-p12-pem": "^4.0.0", - "jws": "^4.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/http-proxy-agent": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/http-proxy-agent/node_modules/debug": { - "version": "4.3.4", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/jsonwebtoken": { - "version": "9.0.0", - "license": "MIT", - "dependencies": { - "jws": "^3.2.2", - "lodash": "^4.17.21", - "ms": "^2.1.1", - "semver": "^7.3.8" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/jsonwebtoken/node_modules/jws": { - "version": "3.2.2", - "license": "MIT", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/jwa": { - "version": "1.4.1", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/lru-cache": { - "version": "6.0.0", - "license": "ISC", - "dependencies": { - "yallist": "^4.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/p-limit": { - "version": "3.1.0", - "license": "MIT", - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/retry-request": { - "version": "5.0.2", - "license": "MIT", - "dependencies": { - "debug": "^4.1.1", - "extend": "^3.0.2" - }, - "engines": { - "node": ">=12" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/retry-request/node_modules/debug": { - "version": "4.3.4", - "license": "MIT", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/teeny-request": { - "version": "8.0.3", - "license": "Apache-2.0", - "dependencies": { - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.1", - "stream-events": "^1.0.5", - "uuid": "^9.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/teeny-request/node_modules/uuid": { - "version": "9.0.0", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/tmp": { - "version": "0.2.1", - "license": "MIT", - "dependencies": { - "rimraf": "^3.0.0" - }, - "engines": { - "node": ">=8.17.0" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "../plugins/node_modules/snowflake-sdk/node_modules/yallist": { - "version": "4.0.0", - "license": "ISC" - }, - "../plugins/node_modules/socks": { - "version": "2.7.1", - "license": "MIT", - "dependencies": { - "ip": "^2.0.0", - "smart-buffer": "^4.2.0" - }, - "engines": { - "node": ">= 10.13.0", - "npm": ">= 3.0.0" - } - }, - "../plugins/node_modules/sparse-bitfield": { - "version": "3.0.3", - "license": "MIT", - "optional": true, - "dependencies": { - "memory-pager": "^1.0.2" - } - }, - "../plugins/node_modules/spawn-please": { - "version": "0.3.0", - "license": "ISC", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/spdx-correct": { - "version": "3.1.1", - "license": "Apache-2.0", - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } - }, - "../plugins/node_modules/spdx-exceptions": { - "version": "2.3.0", - "license": "CC-BY-3.0" - }, - "../plugins/node_modules/spdx-expression-parse": { - "version": "3.0.1", - "license": "MIT", - "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" - } - }, - "../plugins/node_modules/spdx-license-ids": { - "version": "3.0.12", - "license": "CC0-1.0" - }, - "../plugins/node_modules/split-on-first": { - "version": "1.1.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/sprintf-js": { - "version": "1.0.3", - "license": "BSD-3-Clause" - }, - "../plugins/node_modules/sshpk": { - "version": "1.17.0", - "license": "MIT", - "dependencies": { - "asn1": "~0.2.3", - "assert-plus": "^1.0.0", - "bcrypt-pbkdf": "^1.0.0", - "dashdash": "^1.12.0", - "ecc-jsbn": "~0.1.1", - "getpass": "^0.1.1", - "jsbn": "~0.1.0", - "safer-buffer": "^2.0.2", - "tweetnacl": "~0.14.0" - }, - "bin": { - "sshpk-conv": "bin/sshpk-conv", - "sshpk-sign": "bin/sshpk-sign", - "sshpk-verify": "bin/sshpk-verify" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/stack-trace": { - "version": "0.0.10", - "license": "MIT", - "engines": { - "node": "*" - } - }, - "../plugins/node_modules/standard-as-callback": { - "version": "2.1.0", - "license": "MIT" - }, - "../plugins/node_modules/stoppable": { - "version": "1.1.0", - "license": "MIT", - "engines": { - "node": ">=4", - "npm": ">=6" - } - }, - "../plugins/node_modules/stream-each": { - "version": "1.2.3", - "license": "MIT", - "dependencies": { - "end-of-stream": "^1.1.0", - "stream-shift": "^1.0.0" - } - }, - "../plugins/node_modules/stream-events": { - "version": "1.0.5", - "license": "MIT", - "dependencies": { - "stubs": "^3.0.0" - } - }, - "../plugins/node_modules/stream-shift": { - "version": "1.0.1", - "license": "MIT" - }, - "../plugins/node_modules/stream2asynciter": { - "version": "1.0.3", - "license": "ISC" - }, - "../plugins/node_modules/strict-uri-encode": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/string_decoder": { - "version": "1.3.0", - "license": "MIT", - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, - "../plugins/node_modules/string-width": { - "version": "4.2.3", - "license": "MIT", - "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/strip-ansi": { - "version": "6.0.1", - "license": "MIT", - "dependencies": { - "ansi-regex": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/strip-eof": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/strnum": { - "version": "1.0.5", - "license": "MIT" - }, - "../plugins/node_modules/stubs": { - "version": "3.0.0", - "license": "MIT" - }, - "../plugins/node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../plugins/node_modules/tar-fs": { - "version": "2.1.1", - "license": "MIT", - "optional": true, - "dependencies": { - "chownr": "^1.1.1", - "mkdirp-classic": "^0.5.2", - "pump": "^3.0.0", - "tar-stream": "^2.1.4" - } - }, - "../plugins/node_modules/tar-fs/node_modules/chownr": { - "version": "1.1.4", - "license": "ISC", - "optional": true - }, - "../plugins/node_modules/tar-stream": { - "version": "2.2.0", - "license": "MIT", - "optional": true, - "dependencies": { - "bl": "^4.0.3", - "end-of-stream": "^1.4.1", - "fs-constants": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^3.1.1" - }, - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/tar-stream/node_modules/bl": { - "version": "4.1.0", - "license": "MIT", - "optional": true, - "dependencies": { - "buffer": "^5.5.0", - "inherits": "^2.0.4", - "readable-stream": "^3.4.0" - } - }, - "../plugins/node_modules/tar-stream/node_modules/buffer": { - "version": "5.7.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" - } - ], - "license": "MIT", - "optional": true, - "dependencies": { - "base64-js": "^1.3.1", - "ieee754": "^1.1.13" - } - }, - "../plugins/node_modules/tarn": { - "version": "3.0.2", - "license": "MIT", - "engines": { - "node": ">=8.0.0" - } - }, - "../plugins/node_modules/tedious": { - "version": "11.8.0", - "license": "MIT", - "dependencies": { - "@azure/identity": "^1.3.0", - "@azure/keyvault-keys": "^4.1.0", - "@azure/ms-rest-nodeauth": "^3.0.6", - "@js-joda/core": "^3.2.0", - "adal-node": "^0.2.1", - "bl": "^5.0.0", - "depd": "^2.0.0", - "iconv-lite": "^0.6.3", - "jsbi": "^3.1.5", - "native-duplexpair": "^1.0.0", - "node-abort-controller": "^2.0.0", - "punycode": "^2.1.0", - "sprintf-js": "^1.1.2" - }, - "engines": { - "node": ">= 10" - } - }, - "../plugins/node_modules/tedious/node_modules/depd": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">= 0.8" - } - }, - "../plugins/node_modules/tedious/node_modules/iconv-lite": { - "version": "0.6.3", - "license": "MIT", - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/tedious/node_modules/node-abort-controller": { - "version": "2.0.0", - "license": "MIT" - }, - "../plugins/node_modules/tedious/node_modules/sprintf-js": { - "version": "1.1.2", - "license": "BSD-3-Clause" - }, - "../plugins/node_modules/teeny-request": { - "version": "7.2.0", - "license": "Apache-2.0", - "dependencies": { - "http-proxy-agent": "^5.0.0", - "https-proxy-agent": "^5.0.0", - "node-fetch": "^2.6.1", - "stream-events": "^1.0.5", - "uuid": "^8.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/teeny-request/node_modules/@tootallnate/once": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">= 10" - } - }, - "../plugins/node_modules/teeny-request/node_modules/http-proxy-agent": { - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "@tootallnate/once": "2", - "agent-base": "6", - "debug": "4" - }, - "engines": { - "node": ">= 6" - } - }, - "../plugins/node_modules/teeny-request/node_modules/uuid": { - "version": "8.3.2", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "../plugins/node_modules/term-size": { - "version": "1.2.0", - "license": "MIT", - "dependencies": { - "execa": "^0.7.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/term-size/node_modules/cross-spawn": { - "version": "5.1.0", - "license": "MIT", - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "../plugins/node_modules/term-size/node_modules/execa": { - "version": "0.7.0", - "license": "MIT", - "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" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/term-size/node_modules/get-stream": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/term-size/node_modules/is-stream": { - "version": "1.1.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/term-size/node_modules/lru-cache": { - "version": "4.1.5", - "license": "ISC", - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "../plugins/node_modules/term-size/node_modules/npm-run-path": { - "version": "2.0.2", - "license": "MIT", - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/term-size/node_modules/path-key": { - "version": "2.0.1", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/term-size/node_modules/shebang-command": { - "version": "1.2.0", - "license": "MIT", - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/term-size/node_modules/shebang-regex": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/term-size/node_modules/which": { - "version": "1.3.1", - "license": "ISC", - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "../plugins/node_modules/term-size/node_modules/yallist": { - "version": "2.1.2", - "license": "ISC" - }, - "../plugins/node_modules/text-hex": { - "version": "1.0.0", - "license": "MIT" - }, - "../plugins/node_modules/through": { - "version": "2.3.8", - "license": "MIT" - }, - "../plugins/node_modules/tildify": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/to-readable-stream": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/tough-cookie": { - "version": "4.1.3", - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.33", - "punycode": "^2.1.1", - "universalify": "^0.2.0", - "url-parse": "^1.5.3" - }, - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/tough-cookie/node_modules/universalify": { - "version": "0.2.0", - "license": "MIT", - "engines": { - "node": ">= 4.0.0" - } - }, - "../plugins/node_modules/triple-beam": { - "version": "1.3.0", - "license": "MIT" - }, - "../plugins/node_modules/tslib": { - "version": "1.14.1", - "license": "0BSD" - }, - "../plugins/node_modules/tsv": { - "version": "0.2.0", - "license": "MIT (ricardo.mit-license.org)" - }, - "../plugins/node_modules/tunnel": { - "version": "0.0.6", - "license": "MIT", - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "../plugins/node_modules/tunnel-agent": { - "version": "0.6.0", - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - }, - "engines": { - "node": "*" - } - }, - "../plugins/node_modules/tweetnacl": { - "version": "0.14.5", - "license": "Unlicense" - }, - "../plugins/node_modules/twilio": { - "version": "3.84.1", - "license": "MIT", - "dependencies": { - "axios": "^0.26.1", - "dayjs": "^1.8.29", - "https-proxy-agent": "^5.0.0", - "jsonwebtoken": "^8.5.1", - "lodash": "^4.17.21", - "q": "2.0.x", - "qs": "^6.9.4", - "rootpath": "^0.1.2", - "scmp": "^2.1.0", - "url-parse": "^1.5.9", - "xmlbuilder": "^13.0.2" - }, - "engines": { - "node": ">=6.0" - } - }, - "../plugins/node_modules/twilio/node_modules/q": { - "version": "2.0.3", - "license": "MIT", - "dependencies": { - "asap": "^2.0.0", - "pop-iterate": "^1.0.1", - "weak-map": "^1.0.5" - } - }, - "../plugins/node_modules/typedarray": { - "version": "0.0.6", - "license": "MIT" - }, - "../plugins/node_modules/typedarray-to-buffer": { - "version": "3.1.5", - "license": "MIT", - "dependencies": { - "is-typedarray": "^1.0.0" - } - }, - "../plugins/node_modules/typescript": { - "version": "4.9.5", - "license": "Apache-2.0", - "peer": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "../plugins/node_modules/typesense": { - "version": "1.5.1", - "license": "Apache-2.0", - "dependencies": { - "axios": "^0.26.0", - "loglevel": "^1.8.0" - }, - "peerDependencies": { - "@babel/runtime": "^7.17.2" - } - }, - "../plugins/node_modules/underscore": { - "version": "1.13.6", - "license": "MIT" - }, - "../plugins/node_modules/unique-filename": { - "version": "1.1.1", - "license": "ISC", - "dependencies": { - "unique-slug": "^2.0.0" - } - }, - "../plugins/node_modules/unique-slug": { - "version": "2.0.2", - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4" - } - }, - "../plugins/node_modules/unique-string": { - "version": "2.0.0", - "license": "MIT", - "dependencies": { - "crypto-random-string": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/universal-user-agent": { - "version": "6.0.0", - "license": "ISC" - }, - "../plugins/node_modules/update-notifier": { - "version": "3.0.1", - "license": "BSD-2-Clause", - "dependencies": { - "boxen": "^3.0.0", - "chalk": "^2.0.1", - "configstore": "^4.0.0", - "has-yarn": "^2.1.0", - "import-lazy": "^2.1.0", - "is-ci": "^2.0.0", - "is-installed-globally": "^0.1.0", - "is-npm": "^3.0.0", - "is-yarn-global": "^0.3.0", - "latest-version": "^5.0.0", - "semver-diff": "^2.0.0", - "xdg-basedir": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/update-notifier/node_modules/ansi-styles": { - "version": "3.2.1", - "license": "MIT", - "dependencies": { - "color-convert": "^1.9.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/update-notifier/node_modules/chalk": { - "version": "2.4.2", - "license": "MIT", - "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/update-notifier/node_modules/color-convert": { - "version": "1.9.3", - "license": "MIT", - "dependencies": { - "color-name": "1.1.3" - } - }, - "../plugins/node_modules/update-notifier/node_modules/color-name": { - "version": "1.1.3", - "license": "MIT" - }, - "../plugins/node_modules/update-notifier/node_modules/configstore": { - "version": "4.0.0", - "license": "BSD-2-Clause", - "dependencies": { - "dot-prop": "^4.1.0", - "graceful-fs": "^4.1.2", - "make-dir": "^1.0.0", - "unique-string": "^1.0.0", - "write-file-atomic": "^2.0.0", - "xdg-basedir": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "../plugins/node_modules/update-notifier/node_modules/crypto-random-string": { - "version": "1.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/update-notifier/node_modules/dot-prop": { - "version": "4.2.1", - "license": "MIT", - "dependencies": { - "is-obj": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/update-notifier/node_modules/escape-string-regexp": { - "version": "1.0.5", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "../plugins/node_modules/update-notifier/node_modules/has-flag": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/update-notifier/node_modules/is-obj": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "../plugins/node_modules/update-notifier/node_modules/make-dir": { - "version": "1.3.0", - "license": "MIT", - "dependencies": { - "pify": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/update-notifier/node_modules/pify": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/update-notifier/node_modules/supports-color": { - "version": "5.5.0", - "license": "MIT", - "dependencies": { - "has-flag": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/update-notifier/node_modules/unique-string": { - "version": "1.0.0", - "license": "MIT", - "dependencies": { - "crypto-random-string": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/update-notifier/node_modules/write-file-atomic": { - "version": "2.4.3", - "license": "ISC", - "dependencies": { - "graceful-fs": "^4.1.11", - "imurmurhash": "^0.1.4", - "signal-exit": "^3.0.2" - } - }, - "../plugins/node_modules/update-notifier/node_modules/xdg-basedir": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/uri-js": { - "version": "4.4.1", - "license": "BSD-2-Clause", - "dependencies": { - "punycode": "^2.1.0" - } - }, - "../plugins/node_modules/url": { - "version": "0.11.0", - "license": "MIT", - "dependencies": { - "punycode": "1.3.2", - "querystring": "0.2.0" - } - }, - "../plugins/node_modules/url-parse": { - "version": "1.5.10", - "license": "MIT", - "dependencies": { - "querystringify": "^2.1.1", - "requires-port": "^1.0.0" - } - }, - "../plugins/node_modules/url-parse-lax": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "prepend-http": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/url/node_modules/punycode": { - "version": "1.3.2", - "license": "MIT" - }, - "../plugins/node_modules/util": { - "version": "0.12.5", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.3", - "is-arguments": "^1.0.4", - "is-generator-function": "^1.0.7", - "is-typed-array": "^1.1.3", - "which-typed-array": "^1.1.2" - } - }, - "../plugins/node_modules/util-deprecate": { - "version": "1.0.2", - "license": "MIT" - }, - "../plugins/node_modules/uuid": { - "version": "3.4.0", - "license": "MIT", - "bin": { - "uuid": "bin/uuid" - } - }, - "../plugins/node_modules/validate-npm-package-license": { - "version": "3.0.4", - "license": "Apache-2.0", - "dependencies": { - "spdx-correct": "^3.0.0", - "spdx-expression-parse": "^3.0.0" - } - }, - "../plugins/node_modules/validate-npm-package-name": { - "version": "3.0.0", - "license": "ISC", - "dependencies": { - "builtins": "^1.0.3" - } - }, - "../plugins/node_modules/verror": { - "version": "1.10.0", - "engines": [ - "node >=0.6.0" - ], - "license": "MIT", - "dependencies": { - "assert-plus": "^1.0.0", - "core-util-is": "1.0.2", - "extsprintf": "^1.2.0" - } - }, - "../plugins/node_modules/weak-map": { - "version": "1.0.8", - "license": "Apache-2.0" - }, - "../plugins/node_modules/web-encoding": { - "version": "1.1.5", - "license": "MIT", - "dependencies": { - "util": "^0.12.3" - }, - "optionalDependencies": { - "@zxing/text-encoding": "0.9.0" - } - }, - "../plugins/node_modules/which-typed-array": { - "version": "1.1.9", - "license": "MIT", - "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" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "../plugins/node_modules/widest-line": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "string-width": "^2.1.1" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/widest-line/node_modules/ansi-regex": { - "version": "3.0.1", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/widest-line/node_modules/is-fullwidth-code-point": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/widest-line/node_modules/string-width": { - "version": "2.1.1", - "license": "MIT", - "dependencies": { - "is-fullwidth-code-point": "^2.0.0", - "strip-ansi": "^4.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/widest-line/node_modules/strip-ansi": { - "version": "4.0.0", - "license": "MIT", - "dependencies": { - "ansi-regex": "^3.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "../plugins/node_modules/winston": { - "version": "3.8.2", - "license": "MIT", - "dependencies": { - "@colors/colors": "1.5.0", - "@dabh/diagnostics": "^2.0.2", - "async": "^3.2.3", - "is-stream": "^2.0.0", - "logform": "^2.4.0", - "one-time": "^1.0.0", - "readable-stream": "^3.4.0", - "safe-stable-stringify": "^2.3.1", - "stack-trace": "0.0.x", - "triple-beam": "^1.3.0", - "winston-transport": "^4.5.0" - }, - "engines": { - "node": ">= 12.0.0" - } - }, - "../plugins/node_modules/winston-transport": { - "version": "4.5.0", - "license": "MIT", - "dependencies": { - "logform": "^2.3.2", - "readable-stream": "^3.6.0", - "triple-beam": "^1.3.0" - }, - "engines": { - "node": ">= 6.4.0" - } - }, - "../plugins/node_modules/woocommerce-api": { - "version": "1.5.0", - "license": "MIT", - "dependencies": { - "bluebird": "3.5.5", - "create-hmac": "1.1.7", - "npm-check-updates": "3.1.20", - "oauth-1.0a": "2.2.6", - "request": "2.88.0" - } - }, - "../plugins/node_modules/woocommerce-api/node_modules/bluebird": { - "version": "3.5.5", - "license": "MIT" - }, - "../plugins/node_modules/woocommerce-api/node_modules/form-data": { - "version": "2.3.3", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 0.12" - } - }, - "../plugins/node_modules/woocommerce-api/node_modules/punycode": { - "version": "1.4.1", - "license": "MIT" - }, - "../plugins/node_modules/woocommerce-api/node_modules/qs": { - "version": "6.5.3", - "license": "BSD-3-Clause", - "engines": { - "node": ">=0.6" - } - }, - "../plugins/node_modules/woocommerce-api/node_modules/request": { - "version": "2.88.0", - "license": "Apache-2.0", - "dependencies": { - "aws-sign2": "~0.7.0", - "aws4": "^1.8.0", - "caseless": "~0.12.0", - "combined-stream": "~1.0.6", - "extend": "~3.0.2", - "forever-agent": "~0.6.1", - "form-data": "~2.3.2", - "har-validator": "~5.1.0", - "http-signature": "~1.2.0", - "is-typedarray": "~1.0.0", - "isstream": "~0.1.2", - "json-stringify-safe": "~5.0.1", - "mime-types": "~2.1.19", - "oauth-sign": "~0.9.0", - "performance-now": "^2.1.0", - "qs": "~6.5.2", - "safe-buffer": "^5.1.2", - "tough-cookie": "~2.4.3", - "tunnel-agent": "^0.6.0", - "uuid": "^3.3.2" - }, - "engines": { - "node": ">= 4" - } - }, - "../plugins/node_modules/woocommerce-api/node_modules/tough-cookie": { - "version": "2.4.3", - "license": "BSD-3-Clause", - "dependencies": { - "psl": "^1.1.24", - "punycode": "^1.4.1" - }, - "engines": { - "node": ">=0.8" - } - }, - "../plugins/node_modules/wrap-ansi": { - "version": "7.0.0", - "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" - } - }, - "../plugins/node_modules/wrappy": { - "version": "1.0.2", - "license": "ISC" - }, - "../plugins/node_modules/write-file-atomic": { - "version": "3.0.3", - "license": "ISC", - "dependencies": { - "imurmurhash": "^0.1.4", - "is-typedarray": "^1.0.0", - "signal-exit": "^3.0.2", - "typedarray-to-buffer": "^3.1.5" - } - }, - "../plugins/node_modules/xdg-basedir": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": ">=8" - } - }, - "../plugins/node_modules/xml": { - "version": "1.0.1", - "license": "MIT" - }, - "../plugins/node_modules/xml2js": { - "version": "0.4.19", - "license": "MIT", - "dependencies": { - "sax": ">=0.6.0", - "xmlbuilder": "~9.0.1" - } - }, - "../plugins/node_modules/xml2js/node_modules/xmlbuilder": { - "version": "9.0.7", - "license": "MIT", - "engines": { - "node": ">=4.0" - } - }, - "../plugins/node_modules/xmlbuilder": { - "version": "13.0.2", - "license": "MIT", - "engines": { - "node": ">=6.0" - } - }, - "../plugins/node_modules/xpath.js": { - "version": "1.1.0", - "license": "MIT", - "engines": { - "node": ">=0.4.0" - } - }, - "../plugins/node_modules/xtend": { - "version": "4.0.2", - "license": "MIT", - "engines": { - "node": ">=0.4" - } - }, - "../plugins/node_modules/y18n": { - "version": "5.0.8", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/yallist": { - "version": "3.1.1", - "license": "ISC" - }, - "../plugins/node_modules/yargs": { - "version": "16.2.0", - "license": "MIT", - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/yargs-parser": { - "version": "20.2.4", - "license": "ISC", - "engines": { - "node": ">=10" - } - }, - "../plugins/node_modules/yocto-queue": { - "version": "0.1.0", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "../plugins/packages/airtable": { "name": "@tooljet-plugins/airtable", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "got": "^11.8.6", @@ -12421,6 +266,7 @@ "../plugins/packages/amazonses": { "name": "@tooljet-plugins/amazonses", "version": "1.0.0", + "extraneous": true, "dependencies": { "@aws-sdk/client-sesv2": "^3.264.0", "@aws-sdk/credential-providers": "^3.267.0", @@ -12432,6 +278,7 @@ "../plugins/packages/appwrite": { "name": "@tooljet-plugins/appwrite", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "node-appwrite": "^5.1.0", @@ -12441,6 +288,7 @@ "../plugins/packages/athena": { "name": "@tooljet-plugins/athena", "version": "1.0.0", + "extraneous": true, "dependencies": { "@aws-sdk/credential-providers": "^3.267.0", "@tooljet-plugins/common": "file:../common", @@ -12449,18 +297,10 @@ "react": "^17.0.2" } }, - "../plugins/packages/azureblobstorage": { - "name": "@tooljet-plugins/azureblobstorage", - "version": "1.0.0", - "dependencies": { - "@azure/storage-blob": "^12.12.0", - "@tooljet-plugins/common": "file:../common", - "react": "^17.0.2" - } - }, "../plugins/packages/baserow": { "name": "@tooljet-plugins/baserow", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "got": "^12.0.3", @@ -12468,146 +308,10 @@ "react": "^17.0.2" } }, - "../plugins/packages/baserow/node_modules/@sindresorhus/is": { - "version": "5.3.0", - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "../plugins/packages/baserow/node_modules/@szmarczak/http-timer": { - "version": "5.0.1", - "license": "MIT", - "dependencies": { - "defer-to-connect": "^2.0.1" - }, - "engines": { - "node": ">=14.16" - } - }, - "../plugins/packages/baserow/node_modules/cacheable-lookup": { - "version": "7.0.0", - "license": "MIT", - "engines": { - "node": ">=14.16" - } - }, - "../plugins/packages/baserow/node_modules/cacheable-request": { - "version": "10.2.6", - "license": "MIT", - "dependencies": { - "@types/http-cache-semantics": "^4.0.1", - "get-stream": "^6.0.1", - "http-cache-semantics": "^4.1.0", - "keyv": "^4.5.2", - "mimic-response": "^4.0.0", - "normalize-url": "^8.0.0", - "responselike": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - } - }, - "../plugins/packages/baserow/node_modules/got": { - "version": "12.5.3", - "license": "MIT", - "dependencies": { - "@sindresorhus/is": "^5.2.0", - "@szmarczak/http-timer": "^5.0.1", - "cacheable-lookup": "^7.0.0", - "cacheable-request": "^10.2.1", - "decompress-response": "^6.0.0", - "form-data-encoder": "^2.1.2", - "get-stream": "^6.0.1", - "http2-wrapper": "^2.1.10", - "lowercase-keys": "^3.0.0", - "p-cancelable": "^3.0.0", - "responselike": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, - "../plugins/packages/baserow/node_modules/http2-wrapper": { - "version": "2.2.0", - "license": "MIT", - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.2.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, - "../plugins/packages/baserow/node_modules/lowercase-keys": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/packages/baserow/node_modules/mimic-response": { - "version": "4.0.0", - "license": "MIT", - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/packages/baserow/node_modules/normalize-url": { - "version": "8.0.0", - "license": "MIT", - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/packages/baserow/node_modules/p-cancelable": { - "version": "3.0.0", - "license": "MIT", - "engines": { - "node": ">=12.20" - } - }, - "../plugins/packages/baserow/node_modules/quick-lru": { - "version": "5.1.1", - "license": "MIT", - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "../plugins/packages/baserow/node_modules/responselike": { - "version": "3.0.0", - "license": "MIT", - "dependencies": { - "lowercase-keys": "^3.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "../plugins/packages/bigquery": { "name": "@tooljet-plugins/bigquery", "version": "1.0.0", + "extraneous": true, "dependencies": { "@google-cloud/bigquery": "^5.12.0", "@tooljet-plugins/common": "file:../common", @@ -12618,6 +322,7 @@ "../plugins/packages/clickhouse": { "name": "@tooljet-plugins/clickhouse", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "clickhouse": "^2.6.0", @@ -12627,6 +332,7 @@ "../plugins/packages/common": { "name": "@tooljet-plugins/common", "version": "1.0.0", + "extraneous": true, "dependencies": { "react": "^17.0.2", "rimraf": "^3.0.2", @@ -12639,6 +345,7 @@ "../plugins/packages/cosmosdb": { "name": "@tooljet-plugins/cosmosdb", "version": "1.0.0", + "extraneous": true, "dependencies": { "@azure/cosmos": "^3.17.2", "@tooljet-plugins/common": "file:../common", @@ -12648,6 +355,7 @@ "../plugins/packages/couchdb": { "name": "@tooljet-plugins/couchdb", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "react": "^17.0.2" @@ -12656,6 +364,7 @@ "../plugins/packages/dynamodb": { "name": "@tooljet-plugins/dynamodb", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "aws-sdk": "^2.1309.0", @@ -12666,6 +375,7 @@ "../plugins/packages/elasticsearch": { "name": "@tooljet-plugins/elasticsearch", "version": "1.0.0", + "extraneous": true, "dependencies": { "@opensearch-project/opensearch": "^1.1.0", "@tooljet-plugins/common": "file:../common", @@ -12676,8 +386,9 @@ "../plugins/packages/firestore": { "name": "@tooljet-plugins/firestore", "version": "1.0.0", + "extraneous": true, "dependencies": { - "@google-cloud/firestore": "^7.1.0", + "@google-cloud/firestore": "^5.0.2", "@tooljet-plugins/common": "file:../common", "react": "^17.0.2", "rimraf": "^3.0.2" @@ -12686,6 +397,7 @@ "../plugins/packages/gcs": { "name": "@tooljet-plugins/gcs", "version": "1.0.0", + "extraneous": true, "dependencies": { "@google-cloud/storage": "^5.20.5", "@tooljet-plugins/common": "file:../common", @@ -12696,6 +408,7 @@ "../plugins/packages/googlesheets": { "name": "@tooljet-plugins/googlesheets", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "got": "^11.8.6", @@ -12706,6 +419,7 @@ "../plugins/packages/graphql": { "name": "@tooljet-plugins/graphql", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "got": "^11.8.6", @@ -12713,73 +427,10 @@ "rimraf": "^3.0.2" } }, - "../plugins/packages/grpc": { - "name": "@tooljet-plugins/grpc", - "version": "1.0.0", - "dependencies": { - "@grpc/grpc-js": "^1.8.14", - "@grpc/proto-loader": "^0.7.6", - "@tooljet-plugins/common": "file:../common", - "react": "^17.0.2" - } - }, - "../plugins/packages/grpc/node_modules/@grpc/grpc-js": { - "version": "1.8.14", - "license": "Apache-2.0", - "dependencies": { - "@grpc/proto-loader": "^0.7.0", - "@types/node": ">=12.12.47" - }, - "engines": { - "node": "^8.13.0 || >=10.10.0" - } - }, - "../plugins/packages/grpc/node_modules/@grpc/proto-loader": { - "version": "0.7.6", - "license": "Apache-2.0", - "dependencies": { - "@types/long": "^4.0.1", - "lodash.camelcase": "^4.3.0", - "long": "^4.0.0", - "protobufjs": "^7.0.0", - "yargs": "^16.2.0" - }, - "bin": { - "proto-loader-gen-types": "build/bin/proto-loader-gen-types.js" - }, - "engines": { - "node": ">=6" - } - }, - "../plugins/packages/grpc/node_modules/protobufjs": { - "version": "7.2.3", - "hasInstallScript": true, - "license": "BSD-3-Clause", - "dependencies": { - "@protobufjs/aspromise": "^1.1.2", - "@protobufjs/base64": "^1.1.2", - "@protobufjs/codegen": "^2.0.4", - "@protobufjs/eventemitter": "^1.1.0", - "@protobufjs/fetch": "^1.1.0", - "@protobufjs/float": "^1.0.2", - "@protobufjs/inquire": "^1.1.0", - "@protobufjs/path": "^1.1.2", - "@protobufjs/pool": "^1.1.0", - "@protobufjs/utf8": "^1.1.0", - "@types/node": ">=13.7.0", - "long": "^5.0.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "../plugins/packages/grpc/node_modules/protobufjs/node_modules/long": { - "version": "5.2.3", - "license": "Apache-2.0" - }, "../plugins/packages/influxdb": { "name": "@tooljet-plugins/influxdb", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "react": "^17.0.2" @@ -12788,6 +439,7 @@ "../plugins/packages/mailgun": { "name": "@tooljet-plugins/mailgun", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "react": "^17.0.2" @@ -12796,6 +448,7 @@ "../plugins/packages/mariadb": { "name": "@tooljet-plugins/mariadb", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "mariadb": "^3.2.3", @@ -12805,6 +458,7 @@ "../plugins/packages/minio": { "name": "@tooljet-plugins/minio", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "minio": "^7.0.32", @@ -12814,6 +468,7 @@ "../plugins/packages/mongodb": { "name": "@tooljet-plugins/mongodb", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "json5": "^2.2.3", @@ -12825,6 +480,7 @@ "../plugins/packages/mssql": { "name": "@tooljet-plugins/mssql", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "knex": "^0.95.15", @@ -12836,6 +492,7 @@ "../plugins/packages/mysql": { "name": "@tooljet-plugins/mysql", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "knex": "^0.95.15", @@ -12847,6 +504,7 @@ "../plugins/packages/n8n": { "name": "@tooljet-plugins/n8n", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "react": "^17.0.2" @@ -12855,6 +513,7 @@ "../plugins/packages/notion": { "name": "@tooljet-plugins/notion", "version": "1.0.0", + "extraneous": true, "dependencies": { "@notionhq/client": "^1.0.4", "@tooljet-plugins/common": "file:../common", @@ -12864,6 +523,7 @@ "../plugins/packages/openapi": { "name": "@tooljet-plugins/openapi", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "got": "^11.8.6", @@ -12874,19 +534,18 @@ "../plugins/packages/oracledb": { "name": "@tooljet-plugins/oracledb", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "knex": "^0.95.14", - "oracledb": "^6.0.0", + "oracledb": "https://github.com/oracle/node-oracledb/releases/download/v5.3.0/oracledb-src-5.3.0.tgz", "react": "^17.0.2" - }, - "devDependencies": { - "@types/oracledb": "^5.2.2" } }, "../plugins/packages/postgresql": { "name": "@tooljet-plugins/postgresql", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "pg": "^8.9.0", @@ -12897,6 +556,7 @@ "../plugins/packages/redis": { "name": "@tooljet-plugins/redis", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "ioredis": "^4.28.5", @@ -12907,6 +567,7 @@ "../plugins/packages/restapi": { "name": "@tooljet-plugins/restapi", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "form-data": "^4.0.0", @@ -12916,21 +577,10 @@ "url": "^0.11.0" } }, - "../plugins/packages/restapi/node_modules/form-data": { - "version": "4.0.0", - "license": "MIT", - "dependencies": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.8", - "mime-types": "^2.1.12" - }, - "engines": { - "node": ">= 6" - } - }, "../plugins/packages/rethinkdb": { "name": "@tooljet-plugins/rethinkdb", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "react": "^17.0.2", @@ -12940,6 +590,7 @@ "../plugins/packages/s3": { "name": "@tooljet-plugins/s3", "version": "1.0.0", + "extraneous": true, "dependencies": { "@aws-sdk/client-s3": "^3.264.0", "@aws-sdk/credential-providers": "^3.266.1", @@ -12952,6 +603,7 @@ "../plugins/packages/saphana": { "name": "@tooljet-plugins/saphana", "version": "1.0.0", + "extraneous": true, "dependencies": { "@sap/hana-client": "^2.12.22", "@tooljet-plugins/common": "file:../common", @@ -12961,6 +613,7 @@ "../plugins/packages/sendgrid": { "name": "@tooljet-plugins/sendgrid", "version": "1.0.0", + "extraneous": true, "dependencies": { "@sendgrid/mail": "^7.7.0", "@tooljet-plugins/common": "file:../common", @@ -12971,6 +624,7 @@ "../plugins/packages/slack": { "name": "@tooljet-plugins/slack", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "got": "^11.8.6", @@ -12981,6 +635,7 @@ "../plugins/packages/smtp": { "name": "@tooljet-plugins/smtp", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "nodemailer": "^6.9.1", @@ -12993,6 +648,7 @@ "../plugins/packages/snowflake": { "name": "@tooljet-plugins/snowflake", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "@types/snowflake-sdk": "^1.6.17", @@ -13003,6 +659,7 @@ "../plugins/packages/stripe": { "name": "@tooljet-plugins/stripe", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "got": "^11.8.6", @@ -13013,6 +670,7 @@ "../plugins/packages/twilio": { "name": "@tooljet-plugins/twilio", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "react": "^17.0.2", @@ -13023,6 +681,7 @@ "../plugins/packages/typesense": { "name": "@tooljet-plugins/typesense", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "react": "^17.0.2", @@ -13033,6 +692,7 @@ "../plugins/packages/woocommerce": { "name": "@tooljet-plugins/woocommerce", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "@woocommerce/woocommerce-rest-api": "^1.0.1", @@ -13043,6 +703,7 @@ "../plugins/packages/zendesk": { "name": "@tooljet-plugins/zendesk", "version": "1.0.0", + "extraneous": true, "dependencies": { "@tooljet-plugins/common": "file:../common", "react": "^17.0.2" @@ -13050,20 +711,23 @@ }, "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, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/@adobe/css-tools": { "version": "4.3.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@adobe/css-tools/-/css-tools-4.3.2.tgz", + "integrity": "sha512-DA5a1C0gD/pLOvhv33YMrbf2FK3oUzwNl9oOJqE4XVjuEtt6XIakRcsd7eLiOSPkp1kTRQGICTA8cKra/vFbjw==", + "dev": true }, "node_modules/@ampproject/remapping": { "version": "2.2.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.2.1.tgz", + "integrity": "sha512-lFMjJTrFL3j7L9yBxwYfCq2k6qqwHyzuUl/XBnif78PWTJYyL/dfowQHWE3sp6U6ZzqWiiIZnpTMO96zhkjwtg==", "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -13085,7 +749,8 @@ }, "node_modules/@babel/code-frame": { "version": "7.23.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.23.5.tgz", + "integrity": "sha512-CgH3s1a96LipHCmSUmYFPwY7MNx8C3avkq7i4Wl3cfa662ldtUe4VM1TPXX70pfmrlWTb6jLqTYrZyT2ZTJBgA==", "dependencies": { "@babel/highlight": "^7.23.4", "chalk": "^2.4.2" @@ -13096,14 +761,16 @@ }, "node_modules/@babel/compat-data": { "version": "7.23.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.23.5.tgz", + "integrity": "sha512-uU27kfDRlhfKl+w1U6vp16IuvSLtjAxdArVXPa9BvLkrr7CYIsxH5adpHObeAGY/41+syctUWOZ140a2Rvkgjw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/core": { "version": "7.23.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.23.5.tgz", + "integrity": "sha512-Cwc2XjUrG4ilcfOw4wBAK+enbdgwAcAJCfGUItPBKR7Mjw4aEfAFYrLxeRp4jWgtNIKn3n2AlBOfwwafl+42/g==", "dependencies": { "@ampproject/remapping": "^2.2.0", "@babel/code-frame": "^7.23.5", @@ -13131,7 +798,8 @@ }, "node_modules/@babel/core/node_modules/convert-source-map": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==" }, "node_modules/@babel/core/node_modules/semver": { "version": "6.3.1", @@ -13142,8 +810,9 @@ }, "node_modules/@babel/eslint-parser": { "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/eslint-parser/-/eslint-parser-7.23.3.tgz", + "integrity": "sha512-9bTuNlyx7oSstodm1cR1bECj4fkiknsDa1YniISkJemMY3DGhJNYBECbe6QD/q54mp2J8VO66jW3/7uP//iFCw==", "dev": true, - "license": "MIT", "dependencies": { "@nicolo-ribaudo/eslint-scope-5-internals": "5.1.1-v1", "eslint-visitor-keys": "^2.1.0", @@ -13159,15 +828,17 @@ }, "node_modules/@babel/eslint-parser/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/generator": { "version": "7.23.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.23.5.tgz", + "integrity": "sha512-BPssCHrBD+0YrxviOa3QzpqwhNIXKEtOa2jQrm4FlmkC2apYgRnQcmPWiGZDlGxiNtltnUFolMe8497Esry+jA==", "dependencies": { "@babel/types": "^7.23.5", "@jridgewell/gen-mapping": "^0.3.2", @@ -13190,7 +861,8 @@ }, "node_modules/@babel/helper-builder-binary-assignment-operator-visitor": { "version": "7.22.15", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-builder-binary-assignment-operator-visitor/-/helper-builder-binary-assignment-operator-visitor-7.22.15.tgz", + "integrity": "sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==", "dependencies": { "@babel/types": "^7.22.15" }, @@ -13200,7 +872,8 @@ }, "node_modules/@babel/helper-compilation-targets": { "version": "7.22.15", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.22.15.tgz", + "integrity": "sha512-y6EEzULok0Qvz8yyLkCvVX+02ic+By2UdOhylwUOvOn9dvYc9mKICJuuU1n1XBI02YWsNsnrY1kc6DVbjcXbtw==", "dependencies": { "@babel/compat-data": "^7.22.9", "@babel/helper-validator-option": "^7.22.15", @@ -13221,7 +894,8 @@ }, "node_modules/@babel/helper-create-class-features-plugin": { "version": "7.23.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-create-class-features-plugin/-/helper-create-class-features-plugin-7.23.5.tgz", + "integrity": "sha512-QELlRWxSpgdwdJzSJn4WAhKC+hvw/AtHbbrIoncKHkhKKR/luAlKkgBDcri1EzWAo8f8VvYVryEHN4tax/V67A==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", @@ -13249,7 +923,8 @@ }, "node_modules/@babel/helper-create-regexp-features-plugin": { "version": "7.22.15", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-create-regexp-features-plugin/-/helper-create-regexp-features-plugin-7.22.15.tgz", + "integrity": "sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "regexpu-core": "^5.3.1", @@ -13271,7 +946,8 @@ }, "node_modules/@babel/helper-define-polyfill-provider": { "version": "0.4.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-define-polyfill-provider/-/helper-define-polyfill-provider-0.4.3.tgz", + "integrity": "sha512-WBrLmuPP47n7PNwsZ57pqam6G/RGo1vw/87b0Blc53tZNGZ4x7YvZ6HgQe2vo1W/FR20OgjeZuGXzudPiXHFug==", "dependencies": { "@babel/helper-compilation-targets": "^7.22.6", "@babel/helper-plugin-utils": "^7.22.5", @@ -13285,14 +961,16 @@ }, "node_modules/@babel/helper-environment-visitor": { "version": "7.22.20", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.22.20.tgz", + "integrity": "sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-function-name": { "version": "7.23.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.23.0.tgz", + "integrity": "sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==", "dependencies": { "@babel/template": "^7.22.15", "@babel/types": "^7.23.0" @@ -13313,7 +991,8 @@ }, "node_modules/@babel/helper-member-expression-to-functions": { "version": "7.23.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-member-expression-to-functions/-/helper-member-expression-to-functions-7.23.0.tgz", + "integrity": "sha512-6gfrPwh7OuT6gZyJZvd6WbTfrqAo7vm4xCzAXOusKqq/vWdKXphTpj5klHKNmRUU6/QRGlBsyU9mAIPaWHlqJA==", "dependencies": { "@babel/types": "^7.23.0" }, @@ -13323,7 +1002,8 @@ }, "node_modules/@babel/helper-module-imports": { "version": "7.22.15", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.22.15.tgz", + "integrity": "sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==", "dependencies": { "@babel/types": "^7.22.15" }, @@ -13333,7 +1013,8 @@ }, "node_modules/@babel/helper-module-transforms": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.23.3.tgz", + "integrity": "sha512-7bBs4ED9OmswdfDzpz4MpWgSrV7FXlc3zIagvLFjS5H+Mk7Snr21vQ6QwrsoCGMfNC4e4LQPdoULEt4ykz0SRQ==", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-module-imports": "^7.22.15", @@ -13367,7 +1048,8 @@ }, "node_modules/@babel/helper-remap-async-to-generator": { "version": "7.22.20", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-remap-async-to-generator/-/helper-remap-async-to-generator-7.22.20.tgz", + "integrity": "sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-environment-visitor": "^7.22.20", @@ -13382,7 +1064,8 @@ }, "node_modules/@babel/helper-replace-supers": { "version": "7.22.20", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-replace-supers/-/helper-replace-supers-7.22.20.tgz", + "integrity": "sha512-qsW0In3dbwQUbK8kejJ4R7IHVGwHJlV6lpG6UA7a9hSa2YEiAib+N1T2kr6PEeUT+Fl7najmSOS6SmAwCHK6Tw==", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-member-expression-to-functions": "^7.22.15", @@ -13427,28 +1110,32 @@ }, "node_modules/@babel/helper-string-parser": { "version": "7.23.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.23.4.tgz", + "integrity": "sha512-803gmbQdqwdf4olxrX4AJyFBV/RTr3rSmOj0rKwesmzlfhYNDEs+/iOcznzpNWlJlIlTJC2QfPFcHB6DlzdVLQ==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-identifier": { "version": "7.22.20", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.22.20.tgz", + "integrity": "sha512-Y4OZ+ytlatR8AI+8KZfKuL5urKp7qey08ha31L8b3BwewJAoJamTzyvxPR/5D+KkdJCGPq/+8TukHBlY10FX9A==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-validator-option": { "version": "7.23.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.23.5.tgz", + "integrity": "sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==", "engines": { "node": ">=6.9.0" } }, "node_modules/@babel/helper-wrap-function": { "version": "7.22.20", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helper-wrap-function/-/helper-wrap-function-7.22.20.tgz", + "integrity": "sha512-pms/UwkOpnQe/PDAEdV/d7dVCoBbB+R4FvYoHGZz+4VPcg7RtYy2KP7S2lbuWM6FCSgob5wshfGESbC/hzNXZw==", "dependencies": { "@babel/helper-function-name": "^7.22.5", "@babel/template": "^7.22.15", @@ -13460,7 +1147,8 @@ }, "node_modules/@babel/helpers": { "version": "7.23.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.23.5.tgz", + "integrity": "sha512-oO7us8FzTEsG3U6ag9MfdF1iA/7Z6dz+MtFhifZk8C8o453rGJFFWUP1t+ULM9TUIAzC9uxXEiXjOiVMyd7QPg==", "dependencies": { "@babel/template": "^7.22.15", "@babel/traverse": "^7.23.5", @@ -13472,7 +1160,8 @@ }, "node_modules/@babel/highlight": { "version": "7.23.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.23.4.tgz", + "integrity": "sha512-acGdbYSfp2WheJoJm/EBBBLh/ID8KDc64ISZ9DYtBmC8/Q204PZJLHyzeB5qMzJ5trcOkybd78M4x2KWsUq++A==", "dependencies": { "@babel/helper-validator-identifier": "^7.22.20", "chalk": "^2.4.2", @@ -13484,7 +1173,8 @@ }, "node_modules/@babel/parser": { "version": "7.23.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.23.5.tgz", + "integrity": "sha512-hOOqoiNXrmGdFbhgCzu6GiURxUgM27Xwd/aPuu8RfHEZPBzL1Z54okAHAQjXfcQNwvrlkAmAp4SlRTZ45vlthQ==", "bin": { "parser": "bin/babel-parser.js" }, @@ -13494,7 +1184,8 @@ }, "node_modules/@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression": { "version": "7.23.3", - "license": "MIT", + "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.23.3.tgz", + "integrity": "sha512-iRkKcCqb7iGnq9+3G6rZ+Ciz5VywC4XNRHe57lKM+jOeYAoR0lVqdeeDRfh0tQcTfw/+vBhHn926FmQhLtlFLQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -13507,7 +1198,8 @@ }, "node_modules/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining/-/plugin-bugfix-v8-spread-parameters-in-optional-chaining-7.23.3.tgz", + "integrity": "sha512-WwlxbfMNdVEpQjZmK5mhm7oSwD3dS6eU+Iwsi4Knl9wAletWem7kaRsGOG+8UEbRyqxY4SS5zvtfXwX+jMxUwQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -13522,7 +1214,8 @@ }, "node_modules/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly/-/plugin-bugfix-v8-static-class-fields-redefine-readonly-7.23.3.tgz", + "integrity": "sha512-XaJak1qcityzrX0/IU5nKHb34VaibwP3saKqG6a/tppelgllOH13LUann4ZCIBcVOeE6H18K4Vx9QKkVww3z/w==", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5" @@ -13536,7 +1229,9 @@ }, "node_modules/@babel/plugin-proposal-async-generator-functions": { "version": "7.20.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-async-generator-functions/-/plugin-proposal-async-generator-functions-7.20.7.tgz", + "integrity": "sha512-xMbiLsn/8RK7Wq7VeVytytS2L6qE69bXPB10YCmMdDZbKF4okCqY74pI/jJQ/8U0b/F6NrT2+14b8/P9/3AMGA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-async-generator-functions instead.", "peer": true, "dependencies": { "@babel/helper-environment-visitor": "^7.18.9", @@ -13553,7 +1248,9 @@ }, "node_modules/@babel/plugin-proposal-class-properties": { "version": "7.18.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-class-properties/-/plugin-proposal-class-properties-7.18.6.tgz", + "integrity": "sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-class-properties instead.", "peer": true, "dependencies": { "@babel/helper-create-class-features-plugin": "^7.18.6", @@ -13568,7 +1265,8 @@ }, "node_modules/@babel/plugin-proposal-export-default-from": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-export-default-from/-/plugin-proposal-export-default-from-7.23.3.tgz", + "integrity": "sha512-Q23MpLZfSGZL1kU7fWqV262q65svLSCIP5kZ/JCW/rKTCm/FrLjpvEd2kfUYMVeHh4QhV/xzyoRAHWrAZJrE3Q==", "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", @@ -13583,7 +1281,9 @@ }, "node_modules/@babel/plugin-proposal-nullish-coalescing-operator": { "version": "7.18.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-nullish-coalescing-operator/-/plugin-proposal-nullish-coalescing-operator-7.18.6.tgz", + "integrity": "sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-nullish-coalescing-operator instead.", "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", @@ -13598,7 +1298,9 @@ }, "node_modules/@babel/plugin-proposal-numeric-separator": { "version": "7.18.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-numeric-separator/-/plugin-proposal-numeric-separator-7.18.6.tgz", + "integrity": "sha512-ozlZFogPqoLm8WBr5Z8UckIoE4YQ5KESVcNudyXOR8uqIkliTEgJ3RoketfG6pmzLdeZF0H/wjE9/cCEitBl7Q==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-numeric-separator instead.", "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", @@ -13613,7 +1315,9 @@ }, "node_modules/@babel/plugin-proposal-object-rest-spread": { "version": "7.20.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-object-rest-spread/-/plugin-proposal-object-rest-spread-7.20.7.tgz", + "integrity": "sha512-d2S98yCiLxDVmBmE8UjGcfPvNEUbA1U5q5WxaWFUGRzJSVAZqm5W6MbPct0jxnegUZ0niLeNX+IOzEs7wYg9Dg==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-object-rest-spread instead.", "peer": true, "dependencies": { "@babel/compat-data": "^7.20.5", @@ -13631,7 +1335,9 @@ }, "node_modules/@babel/plugin-proposal-optional-catch-binding": { "version": "7.18.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-catch-binding/-/plugin-proposal-optional-catch-binding-7.18.6.tgz", + "integrity": "sha512-Q40HEhs9DJQyaZfUjjn6vE8Cv4GmMHCYuMGIWUnlxH6400VGxOuwWsPt4FxXxJkC/5eOzgn0z21M9gMT4MOhbw==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-catch-binding instead.", "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.18.6", @@ -13646,7 +1352,9 @@ }, "node_modules/@babel/plugin-proposal-optional-chaining": { "version": "7.21.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-proposal-optional-chaining/-/plugin-proposal-optional-chaining-7.21.0.tgz", + "integrity": "sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==", + "deprecated": "This proposal has been merged to the ECMAScript standard and thus this plugin is no longer maintained. Please use @babel/plugin-transform-optional-chaining instead.", "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.20.2", @@ -13672,7 +1380,8 @@ }, "node_modules/@babel/plugin-syntax-async-generators": { "version": "7.8.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -13682,8 +1391,9 @@ }, "node_modules/@babel/plugin-syntax-bigint": { "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -13693,7 +1403,8 @@ }, "node_modules/@babel/plugin-syntax-class-properties": { "version": "7.12.13", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", "dependencies": { "@babel/helper-plugin-utils": "^7.12.13" }, @@ -13716,7 +1427,8 @@ }, "node_modules/@babel/plugin-syntax-dynamic-import": { "version": "7.8.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-dynamic-import/-/plugin-syntax-dynamic-import-7.8.3.tgz", + "integrity": "sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -13726,7 +1438,8 @@ }, "node_modules/@babel/plugin-syntax-export-default-from": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-export-default-from/-/plugin-syntax-export-default-from-7.23.3.tgz", + "integrity": "sha512-KeENO5ck1IeZ/l2lFZNy+mpobV3D2Zy5C1YFnWm+YuY5mQiAWc4yAp13dqgguwsBsFVLh4LPCEqCa5qW13N+hw==", "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -13750,7 +1463,8 @@ }, "node_modules/@babel/plugin-syntax-flow": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-flow/-/plugin-syntax-flow-7.23.3.tgz", + "integrity": "sha512-YZiAIpkJAwQXBJLIQbRFayR5c+gJ35Vcz3bg954k7cd73zqjvhacJuL9RbrzPz8qPmZdgqP6EUKwy0PCNhaaPA==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -13763,7 +1477,8 @@ }, "node_modules/@babel/plugin-syntax-import-assertions": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-assertions/-/plugin-syntax-import-assertions-7.23.3.tgz", + "integrity": "sha512-lPgDSU+SJLK3xmFDTV2ZRQAiM7UuUjGidwBywFavObCiZc1BeAAcMtHJKUya92hPHO+at63JJPLygilZard8jw==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -13776,7 +1491,8 @@ }, "node_modules/@babel/plugin-syntax-import-attributes": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.23.3.tgz", + "integrity": "sha512-pawnE0P9g10xgoP7yKr6CK63K2FMsTE+FZidZO/1PwRdzmAPVs+HS1mAURUsgaoxammTJvULUdIkEK0gOcU2tA==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -13789,7 +1505,8 @@ }, "node_modules/@babel/plugin-syntax-import-meta": { "version": "7.10.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -13799,7 +1516,8 @@ }, "node_modules/@babel/plugin-syntax-json-strings": { "version": "7.8.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -13809,7 +1527,8 @@ }, "node_modules/@babel/plugin-syntax-jsx": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.23.3.tgz", + "integrity": "sha512-EB2MELswq55OHUoRZLGg/zC7QWUKfNLpE57m/S2yr1uEneIgsTgrSzXP3NXEsMkVn76OlaVVnzN+ugObuYGwhg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -13822,7 +1541,8 @@ }, "node_modules/@babel/plugin-syntax-logical-assignment-operators": { "version": "7.10.4", - "license": "MIT", + "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==", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -13832,7 +1552,8 @@ }, "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { "version": "7.8.3", - "license": "MIT", + "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==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -13842,7 +1563,8 @@ }, "node_modules/@babel/plugin-syntax-numeric-separator": { "version": "7.10.4", - "license": "MIT", + "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==", "dependencies": { "@babel/helper-plugin-utils": "^7.10.4" }, @@ -13852,7 +1574,8 @@ }, "node_modules/@babel/plugin-syntax-object-rest-spread": { "version": "7.8.3", - "license": "MIT", + "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==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -13862,7 +1585,8 @@ }, "node_modules/@babel/plugin-syntax-optional-catch-binding": { "version": "7.8.3", - "license": "MIT", + "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==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -13872,7 +1596,8 @@ }, "node_modules/@babel/plugin-syntax-optional-chaining": { "version": "7.8.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", "dependencies": { "@babel/helper-plugin-utils": "^7.8.0" }, @@ -13895,7 +1620,8 @@ }, "node_modules/@babel/plugin-syntax-top-level-await": { "version": "7.14.5", - "license": "MIT", + "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==", "dependencies": { "@babel/helper-plugin-utils": "^7.14.5" }, @@ -13908,7 +1634,8 @@ }, "node_modules/@babel/plugin-syntax-typescript": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.23.3.tgz", + "integrity": "sha512-9EiNjVJOMwCO+43TqoTrgQ8jMwcAd0sWyXi9RPfIsLTj4R2MADDDQXELhffaUx/uJv2AYcxBgPwH6j4TIA4ytQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -13935,7 +1662,8 @@ }, "node_modules/@babel/plugin-transform-arrow-functions": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-arrow-functions/-/plugin-transform-arrow-functions-7.23.3.tgz", + "integrity": "sha512-NzQcQrzaQPkaEwoTm4Mhyl8jI1huEL/WWIEvudjTCMJ9aBZNpsJbMASx7EQECtQQPS/DcnFpo0FIh3LvEO9cxQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -13948,7 +1676,8 @@ }, "node_modules/@babel/plugin-transform-async-generator-functions": { "version": "7.23.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-generator-functions/-/plugin-transform-async-generator-functions-7.23.4.tgz", + "integrity": "sha512-efdkfPhHYTtn0G6n2ddrESE91fgXxjlqLsnUtPWnJs4a4mZIbUaK7ffqKIIUKXSHwcDvaCVX6GXkaJJFqtX7jw==", "dependencies": { "@babel/helper-environment-visitor": "^7.22.20", "@babel/helper-plugin-utils": "^7.22.5", @@ -13964,7 +1693,8 @@ }, "node_modules/@babel/plugin-transform-async-to-generator": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-async-to-generator/-/plugin-transform-async-to-generator-7.23.3.tgz", + "integrity": "sha512-A7LFsKi4U4fomjqXJlZg/u0ft/n8/7n7lpffUP/ZULx/DtV9SGlNKZolHH6PE8Xl1ngCc0M11OaeZptXVkfKSw==", "dependencies": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -13979,7 +1709,8 @@ }, "node_modules/@babel/plugin-transform-block-scoped-functions": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoped-functions/-/plugin-transform-block-scoped-functions-7.23.3.tgz", + "integrity": "sha512-vI+0sIaPIO6CNuM9Kk5VmXcMVRiOpDh7w2zZt9GXzmE/9KD70CUEVhvPR/etAeNK/FAEkhxQtXOzVF3EuRL41A==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -13992,7 +1723,8 @@ }, "node_modules/@babel/plugin-transform-block-scoping": { "version": "7.23.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-block-scoping/-/plugin-transform-block-scoping-7.23.4.tgz", + "integrity": "sha512-0QqbP6B6HOh7/8iNR4CQU2Th/bbRtBp4KS9vcaZd1fZ0wSh5Fyssg0UCIHwxh+ka+pNDREbVLQnHCMHKZfPwfw==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -14005,7 +1737,8 @@ }, "node_modules/@babel/plugin-transform-class-properties": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-properties/-/plugin-transform-class-properties-7.23.3.tgz", + "integrity": "sha512-uM+AN8yCIjDPccsKGlw271xjJtGii+xQIF/uMPS8H15L12jZTsLfF4o5vNO7d/oUguOyfdikHGc/yi9ge4SGIg==", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -14019,7 +1752,8 @@ }, "node_modules/@babel/plugin-transform-class-static-block": { "version": "7.23.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-class-static-block/-/plugin-transform-class-static-block-7.23.4.tgz", + "integrity": "sha512-nsWu/1M+ggti1SOALj3hfx5FXzAY06fwPJsUZD4/A5e1bWi46VUIWtD+kOX6/IdhXGsXBWllLFDSnqSCdUNydQ==", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -14034,7 +1768,8 @@ }, "node_modules/@babel/plugin-transform-classes": { "version": "7.23.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-classes/-/plugin-transform-classes-7.23.5.tgz", + "integrity": "sha512-jvOTR4nicqYC9yzOHIhXG5emiFEOpappSJAl73SDSEDcybD+Puuze8Tnpb9p9qEyYup24tq891gkaygIFvWDqg==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-compilation-targets": "^7.22.15", @@ -14055,7 +1790,8 @@ }, "node_modules/@babel/plugin-transform-computed-properties": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-computed-properties/-/plugin-transform-computed-properties-7.23.3.tgz", + "integrity": "sha512-dTj83UVTLw/+nbiHqQSFdwO9CbTtwq1DsDqm3CUEtDrZNET5rT5E6bIdTlOftDTDLMYxvxHNEYO4B9SLl8SLZw==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/template": "^7.22.15" @@ -14069,7 +1805,8 @@ }, "node_modules/@babel/plugin-transform-destructuring": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-destructuring/-/plugin-transform-destructuring-7.23.3.tgz", + "integrity": "sha512-n225npDqjDIr967cMScVKHXJs7rout1q+tt50inyBCPkyZ8KxeI6d+GIbSBTT/w/9WdlWDOej3V9HE5Lgk57gw==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -14082,7 +1819,8 @@ }, "node_modules/@babel/plugin-transform-dotall-regex": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dotall-regex/-/plugin-transform-dotall-regex-7.23.3.tgz", + "integrity": "sha512-vgnFYDHAKzFaTVp+mneDsIEbnJ2Np/9ng9iviHw3P/KVcgONxpNULEW/51Z/BaFojG2GI2GwwXck5uV1+1NOYQ==", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -14096,7 +1834,8 @@ }, "node_modules/@babel/plugin-transform-duplicate-keys": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-duplicate-keys/-/plugin-transform-duplicate-keys-7.23.3.tgz", + "integrity": "sha512-RrqQ+BQmU3Oyav3J+7/myfvRCq7Tbz+kKLLshUmMwNlDHExbGL7ARhajvoBJEvc+fCguPPu887N+3RRXBVKZUA==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -14109,7 +1848,8 @@ }, "node_modules/@babel/plugin-transform-dynamic-import": { "version": "7.23.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-dynamic-import/-/plugin-transform-dynamic-import-7.23.4.tgz", + "integrity": "sha512-V6jIbLhdJK86MaLh4Jpghi8ho5fGzt3imHOBu/x0jlBaPYqDoWz4RDXjmMOfnh+JWNaQleEAByZLV0QzBT4YQQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-dynamic-import": "^7.8.3" @@ -14123,7 +1863,8 @@ }, "node_modules/@babel/plugin-transform-exponentiation-operator": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-exponentiation-operator/-/plugin-transform-exponentiation-operator-7.23.3.tgz", + "integrity": "sha512-5fhCsl1odX96u7ILKHBj4/Y8vipoqwsJMh4csSA8qFfxrZDEA4Ssku2DyNvMJSmZNOEBT750LfFPbtrnTP90BQ==", "dependencies": { "@babel/helper-builder-binary-assignment-operator-visitor": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -14137,7 +1878,8 @@ }, "node_modules/@babel/plugin-transform-export-namespace-from": { "version": "7.23.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-export-namespace-from/-/plugin-transform-export-namespace-from-7.23.4.tgz", + "integrity": "sha512-GzuSBcKkx62dGzZI1WVgTWvkkz84FZO5TC5T8dl/Tht/rAla6Dg/Mz9Yhypg+ezVACf/rgDuQt3kbWEv7LdUDQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-export-namespace-from": "^7.8.3" @@ -14151,7 +1893,8 @@ }, "node_modules/@babel/plugin-transform-flow-strip-types": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-flow-strip-types/-/plugin-transform-flow-strip-types-7.23.3.tgz", + "integrity": "sha512-26/pQTf9nQSNVJCrLB1IkHUKyPxR+lMrH2QDPG89+Znu9rAMbtrybdbWeE9bb7gzjmE5iXHEY+e0HUwM6Co93Q==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-flow": "^7.23.3" @@ -14165,7 +1908,8 @@ }, "node_modules/@babel/plugin-transform-for-of": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-for-of/-/plugin-transform-for-of-7.23.3.tgz", + "integrity": "sha512-X8jSm8X1CMwxmK878qsUGJRmbysKNbdpTv/O1/v0LuY/ZkZrng5WYiekYSdg9m09OTmDDUWeEDsTE+17WYbAZw==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -14178,7 +1922,8 @@ }, "node_modules/@babel/plugin-transform-function-name": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-function-name/-/plugin-transform-function-name-7.23.3.tgz", + "integrity": "sha512-I1QXp1LxIvt8yLaib49dRW5Okt7Q4oaxao6tFVKS/anCdEOMtYwWVKoiOA1p34GOWIZjUK0E+zCp7+l1pfQyiw==", "dependencies": { "@babel/helper-compilation-targets": "^7.22.15", "@babel/helper-function-name": "^7.23.0", @@ -14193,7 +1938,8 @@ }, "node_modules/@babel/plugin-transform-json-strings": { "version": "7.23.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-json-strings/-/plugin-transform-json-strings-7.23.4.tgz", + "integrity": "sha512-81nTOqM1dMwZ/aRXQ59zVubN9wHGqk6UtqRK+/q+ciXmRy8fSolhGVvG09HHRGo4l6fr/c4ZhXUQH0uFW7PZbg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-json-strings": "^7.8.3" @@ -14207,7 +1953,8 @@ }, "node_modules/@babel/plugin-transform-literals": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-literals/-/plugin-transform-literals-7.23.3.tgz", + "integrity": "sha512-wZ0PIXRxnwZvl9AYpqNUxpZ5BiTGrYt7kueGQ+N5FiQ7RCOD4cm8iShd6S6ggfVIWaJf2EMk8eRzAh52RfP4rQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -14220,7 +1967,8 @@ }, "node_modules/@babel/plugin-transform-logical-assignment-operators": { "version": "7.23.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-logical-assignment-operators/-/plugin-transform-logical-assignment-operators-7.23.4.tgz", + "integrity": "sha512-Mc/ALf1rmZTP4JKKEhUwiORU+vcfarFVLfcFiolKUo6sewoxSEgl36ak5t+4WamRsNr6nzjZXQjM35WsU+9vbg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4" @@ -14234,7 +1982,8 @@ }, "node_modules/@babel/plugin-transform-member-expression-literals": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-member-expression-literals/-/plugin-transform-member-expression-literals-7.23.3.tgz", + "integrity": "sha512-sC3LdDBDi5x96LA+Ytekz2ZPk8i/Ck+DEuDbRAll5rknJ5XRTSaPKEYwomLcs1AA8wg9b3KjIQRsnApj+q51Ag==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -14247,7 +1996,8 @@ }, "node_modules/@babel/plugin-transform-modules-amd": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-amd/-/plugin-transform-modules-amd-7.23.3.tgz", + "integrity": "sha512-vJYQGxeKM4t8hYCKVBlZX/gtIY2I7mRGFNcm85sgXGMTBcoV3QdVtdpbcWEbzbfUIUZKwvgFT82mRvaQIebZzw==", "dependencies": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" @@ -14261,7 +2011,8 @@ }, "node_modules/@babel/plugin-transform-modules-commonjs": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-commonjs/-/plugin-transform-modules-commonjs-7.23.3.tgz", + "integrity": "sha512-aVS0F65LKsdNOtcz6FRCpE4OgsP2OFnW46qNxNIX9h3wuzaNcSQsJysuMwqSibC98HPrf2vCgtxKNwS0DAlgcA==", "dependencies": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5", @@ -14276,7 +2027,8 @@ }, "node_modules/@babel/plugin-transform-modules-systemjs": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-systemjs/-/plugin-transform-modules-systemjs-7.23.3.tgz", + "integrity": "sha512-ZxyKGTkF9xT9YJuKQRo19ewf3pXpopuYQd8cDXqNzc3mUNbOME0RKMoZxviQk74hwzfQsEe66dE92MaZbdHKNQ==", "dependencies": { "@babel/helper-hoist-variables": "^7.22.5", "@babel/helper-module-transforms": "^7.23.3", @@ -14292,7 +2044,8 @@ }, "node_modules/@babel/plugin-transform-modules-umd": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-modules-umd/-/plugin-transform-modules-umd-7.23.3.tgz", + "integrity": "sha512-zHsy9iXX2nIsCBFPud3jKn1IRPWg3Ing1qOZgeKV39m1ZgIdpJqvlWVeiHBZC6ITRG0MfskhYe9cLgntfSFPIg==", "dependencies": { "@babel/helper-module-transforms": "^7.23.3", "@babel/helper-plugin-utils": "^7.22.5" @@ -14320,7 +2073,8 @@ }, "node_modules/@babel/plugin-transform-new-target": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-new-target/-/plugin-transform-new-target-7.23.3.tgz", + "integrity": "sha512-YJ3xKqtJMAT5/TIZnpAR3I+K+WaDowYbN3xyxI8zxx/Gsypwf9B9h0VB+1Nh6ACAAPRS5NSRje0uVv5i79HYGQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -14333,7 +2087,8 @@ }, "node_modules/@babel/plugin-transform-nullish-coalescing-operator": { "version": "7.23.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-nullish-coalescing-operator/-/plugin-transform-nullish-coalescing-operator-7.23.4.tgz", + "integrity": "sha512-jHE9EVVqHKAQx+VePv5LLGHjmHSJR76vawFPTdlxR/LVJPfOEGxREQwQfjuZEOPTwG92X3LINSh3M40Rv4zpVA==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3" @@ -14347,7 +2102,8 @@ }, "node_modules/@babel/plugin-transform-numeric-separator": { "version": "7.23.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-numeric-separator/-/plugin-transform-numeric-separator-7.23.4.tgz", + "integrity": "sha512-mps6auzgwjRrwKEZA05cOwuDc9FAzoyFS4ZsG/8F43bTLf/TgkJg7QXOrPO1JO599iA3qgK9MXdMGOEC8O1h6Q==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-numeric-separator": "^7.10.4" @@ -14361,7 +2117,8 @@ }, "node_modules/@babel/plugin-transform-object-rest-spread": { "version": "7.23.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-rest-spread/-/plugin-transform-object-rest-spread-7.23.4.tgz", + "integrity": "sha512-9x9K1YyeQVw0iOXJlIzwm8ltobIIv7j2iLyP2jIhEbqPRQ7ScNgwQufU2I0Gq11VjyG4gI4yMXt2VFags+1N3g==", "dependencies": { "@babel/compat-data": "^7.23.3", "@babel/helper-compilation-targets": "^7.22.15", @@ -14378,7 +2135,8 @@ }, "node_modules/@babel/plugin-transform-object-super": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-object-super/-/plugin-transform-object-super-7.23.3.tgz", + "integrity": "sha512-BwQ8q0x2JG+3lxCVFohg+KbQM7plfpBwThdW9A6TMtWwLsbDA01Ek2Zb/AgDN39BiZsExm4qrXxjk+P1/fzGrA==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-replace-supers": "^7.22.20" @@ -14392,7 +2150,8 @@ }, "node_modules/@babel/plugin-transform-optional-catch-binding": { "version": "7.23.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-catch-binding/-/plugin-transform-optional-catch-binding-7.23.4.tgz", + "integrity": "sha512-XIq8t0rJPHf6Wvmbn9nFxU6ao4c7WhghTR5WyV8SrJfUFzyxhCm4nhC+iAp3HFhbAKLfYpgzhJ6t4XCtVwqO5A==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/plugin-syntax-optional-catch-binding": "^7.8.3" @@ -14406,7 +2165,8 @@ }, "node_modules/@babel/plugin-transform-optional-chaining": { "version": "7.23.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-optional-chaining/-/plugin-transform-optional-chaining-7.23.4.tgz", + "integrity": "sha512-ZU8y5zWOfjM5vZ+asjgAPwDaBjJzgufjES89Rs4Lpq63O300R/kOz30WCLo6BxxX6QVEilwSlpClnG5cZaikTA==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5", @@ -14421,7 +2181,8 @@ }, "node_modules/@babel/plugin-transform-parameters": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-parameters/-/plugin-transform-parameters-7.23.3.tgz", + "integrity": "sha512-09lMt6UsUb3/34BbECKVbVwrT9bO6lILWln237z7sLaWnMsTi7Yc9fhX5DLpkJzAGfaReXI22wP41SZmnAA3Vw==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -14434,7 +2195,8 @@ }, "node_modules/@babel/plugin-transform-private-methods": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-methods/-/plugin-transform-private-methods-7.23.3.tgz", + "integrity": "sha512-UzqRcRtWsDMTLrRWFvUBDwmw06tCQH9Rl1uAjfh6ijMSmGYQ+fpdB+cnqRC8EMh5tuuxSv0/TejGL+7vyj+50g==", "dependencies": { "@babel/helper-create-class-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -14448,7 +2210,8 @@ }, "node_modules/@babel/plugin-transform-private-property-in-object": { "version": "7.23.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-private-property-in-object/-/plugin-transform-private-property-in-object-7.23.4.tgz", + "integrity": "sha512-9G3K1YqTq3F4Vt88Djx1UZ79PDyj+yKRnUy7cZGSMe+a7jkwD259uKKuUzQlPkGam7R+8RJwh5z4xO27fA1o2A==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-create-class-features-plugin": "^7.22.15", @@ -14464,7 +2227,8 @@ }, "node_modules/@babel/plugin-transform-property-literals": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-property-literals/-/plugin-transform-property-literals-7.23.3.tgz", + "integrity": "sha512-jR3Jn3y7cZp4oEWPFAlRsSWjxKe4PZILGBSd4nis1TsC5qeSpb+nrtihJuDhNI7QHiVbUaiXa0X2RZY3/TI6Nw==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -14477,8 +2241,9 @@ }, "node_modules/@babel/plugin-transform-react-constant-elements": { "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-constant-elements/-/plugin-transform-react-constant-elements-7.23.3.tgz", + "integrity": "sha512-zP0QKq/p6O42OL94udMgSfKXyse4RyJ0JqbQ34zDAONWjyrEsghYEyTSK5FIpmXmCpB55SHokL1cRRKHv8L2Qw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -14491,7 +2256,8 @@ }, "node_modules/@babel/plugin-transform-react-display-name": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-display-name/-/plugin-transform-react-display-name-7.23.3.tgz", + "integrity": "sha512-GnvhtVfA2OAtzdX58FJxU19rhoGeQzyVndw3GgtdECQvQFXPEZIOVULHVZGAYmOgmqjXpVpfocAbSjh99V/Fqw==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -14504,7 +2270,8 @@ }, "node_modules/@babel/plugin-transform-react-jsx": { "version": "7.23.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.23.4.tgz", + "integrity": "sha512-5xOpoPguCZCRbo/JeHlloSkTA8Bld1J/E1/kLfD1nsuiW1m8tduTA1ERCgIZokDflX/IBzKcqR3l7VlRgiIfHA==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-module-imports": "^7.22.15", @@ -14535,7 +2302,8 @@ }, "node_modules/@babel/plugin-transform-react-jsx-self": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-self/-/plugin-transform-react-jsx-self-7.23.3.tgz", + "integrity": "sha512-qXRvbeKDSfwnlJnanVRp0SfuWE5DQhwQr5xtLBzp56Wabyo+4CMosF6Kfp+eOD/4FYpql64XVJ2W0pVLlJZxOQ==", "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -14549,7 +2317,8 @@ }, "node_modules/@babel/plugin-transform-react-jsx-source": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-source/-/plugin-transform-react-jsx-source-7.23.3.tgz", + "integrity": "sha512-91RS0MDnAWDNvGC6Wio5XYkyWI39FMFO+JK9+4AlgaTH+yWwVTsw7/sn6LK0lH7c5F+TFkpv/3LfCJ1Ydwof/g==", "peer": true, "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" @@ -14563,6 +2332,8 @@ }, "node_modules/@babel/plugin-transform-react-pure-annotations": { "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-pure-annotations/-/plugin-transform-react-pure-annotations-7.23.3.tgz", + "integrity": "sha512-qMFdSS+TUhB7Q/3HVPnEdYJDQIk57jkntAwSuz9xfSE4n+3I+vHYCli3HoHawN1Z3RfCz/y1zXA/JXjG6cVImQ==", "dev": true, "license": "MIT", "dependencies": { @@ -14578,7 +2349,8 @@ }, "node_modules/@babel/plugin-transform-regenerator": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-regenerator/-/plugin-transform-regenerator-7.23.3.tgz", + "integrity": "sha512-KP+75h0KghBMcVpuKisx3XTu9Ncut8Q8TuvGO4IhY+9D5DFEckQefOuIsB/gQ2tG71lCke4NMrtIPS8pOj18BQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "regenerator-transform": "^0.15.2" @@ -14592,7 +2364,8 @@ }, "node_modules/@babel/plugin-transform-reserved-words": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-reserved-words/-/plugin-transform-reserved-words-7.23.3.tgz", + "integrity": "sha512-QnNTazY54YqgGxwIexMZva9gqbPa15t/x9VS+0fsEFWplwVpXYZivtgl43Z1vMpc1bdPP2PP8siFeVcnFvA3Cg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -14605,7 +2378,8 @@ }, "node_modules/@babel/plugin-transform-runtime": { "version": "7.23.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-runtime/-/plugin-transform-runtime-7.23.4.tgz", + "integrity": "sha512-ITwqpb6V4btwUG0YJR82o2QvmWrLgDnx/p2A3CTPYGaRgULkDiC0DRA2C4jlRB9uXGUEfaSS/IGHfVW+ohzYDw==", "dependencies": { "@babel/helper-module-imports": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5", @@ -14623,14 +2397,16 @@ }, "node_modules/@babel/plugin-transform-runtime/node_modules/semver": { "version": "6.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, "node_modules/@babel/plugin-transform-shorthand-properties": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-shorthand-properties/-/plugin-transform-shorthand-properties-7.23.3.tgz", + "integrity": "sha512-ED2fgqZLmexWiN+YNFX26fx4gh5qHDhn1O2gvEhreLW2iI63Sqm4llRLCXALKrCnbN4Jy0VcMQZl/SAzqug/jg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -14643,7 +2419,8 @@ }, "node_modules/@babel/plugin-transform-spread": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-spread/-/plugin-transform-spread-7.23.3.tgz", + "integrity": "sha512-VvfVYlrlBVu+77xVTOAoxQ6mZbnIq5FM0aGBSFEcIh03qHf+zNqA4DC/3XMUozTg7bZV3e3mZQ0i13VB6v5yUg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-skip-transparent-expression-wrappers": "^7.22.5" @@ -14657,7 +2434,8 @@ }, "node_modules/@babel/plugin-transform-sticky-regex": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-sticky-regex/-/plugin-transform-sticky-regex-7.23.3.tgz", + "integrity": "sha512-HZOyN9g+rtvnOU3Yh7kSxXrKbzgrm5X4GncPY1QOquu7epga5MxKHVpYu2hvQnry/H+JjckSYRb93iNfsioAGg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -14670,7 +2448,8 @@ }, "node_modules/@babel/plugin-transform-template-literals": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-template-literals/-/plugin-transform-template-literals-7.23.3.tgz", + "integrity": "sha512-Flok06AYNp7GV2oJPZZcP9vZdszev6vPBkHLwxwSpaIqx75wn6mUd3UFWsSsA0l8nXAKkyCmL/sR02m8RYGeHg==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -14683,7 +2462,8 @@ }, "node_modules/@babel/plugin-transform-typeof-symbol": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typeof-symbol/-/plugin-transform-typeof-symbol-7.23.3.tgz", + "integrity": "sha512-4t15ViVnaFdrPC74be1gXBSMzXk3B4Us9lP7uLRQHTFpV5Dvt33pn+2MyyNxmN3VTTm3oTrZVMUmuw3oBnQ2oQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -14696,7 +2476,8 @@ }, "node_modules/@babel/plugin-transform-typescript": { "version": "7.23.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-typescript/-/plugin-transform-typescript-7.23.5.tgz", + "integrity": "sha512-2fMkXEJkrmwgu2Bsv1Saxgj30IXZdJ+84lQcKKI7sm719oXs0BBw2ZENKdJdR1PjWndgLCEBNXJOri0fk7RYQA==", "dependencies": { "@babel/helper-annotate-as-pure": "^7.22.5", "@babel/helper-create-class-features-plugin": "^7.23.5", @@ -14712,7 +2493,8 @@ }, "node_modules/@babel/plugin-transform-unicode-escapes": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-escapes/-/plugin-transform-unicode-escapes-7.23.3.tgz", + "integrity": "sha512-OMCUx/bU6ChE3r4+ZdylEqAjaQgHAgipgW8nsCfu5pGqDcFytVd91AwRvUJSBZDz0exPGgnjoqhgRYLRjFZc9Q==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5" }, @@ -14725,7 +2507,8 @@ }, "node_modules/@babel/plugin-transform-unicode-property-regex": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-property-regex/-/plugin-transform-unicode-property-regex-7.23.3.tgz", + "integrity": "sha512-KcLIm+pDZkWZQAFJ9pdfmh89EwVfmNovFBcXko8szpBeF8z68kWIPeKlmSOkT9BXJxs2C0uk+5LxoxIv62MROA==", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -14739,7 +2522,8 @@ }, "node_modules/@babel/plugin-transform-unicode-regex": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-regex/-/plugin-transform-unicode-regex-7.23.3.tgz", + "integrity": "sha512-wMHpNA4x2cIA32b/ci3AfwNgheiva2W0WUKWTK7vBHBhDKfPsc5cFGNWm69WBqpwd86u1qwZ9PWevKqm1A3yAw==", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -14753,7 +2537,8 @@ }, "node_modules/@babel/plugin-transform-unicode-sets-regex": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/plugin-transform-unicode-sets-regex/-/plugin-transform-unicode-sets-regex-7.23.3.tgz", + "integrity": "sha512-W7lliA/v9bNR83Qc3q1ip9CQMZ09CcHDbHfbLRDNuAhn1Mvkr1ZNF7hPmztMQvtTGVLJ9m8IZqWsTkXOml8dbw==", "dependencies": { "@babel/helper-create-regexp-features-plugin": "^7.22.15", "@babel/helper-plugin-utils": "^7.22.5" @@ -14767,7 +2552,8 @@ }, "node_modules/@babel/preset-env": { "version": "7.23.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/preset-env/-/preset-env-7.23.5.tgz", + "integrity": "sha512-0d/uxVD6tFGWXGDSfyMD1p2otoaKmu6+GD+NfAx0tMaH+dxORnp7T9TaVQ6mKyya7iBtCIVxHjWT7MuzzM9z+A==", "dependencies": { "@babel/compat-data": "^7.23.5", "@babel/helper-compilation-targets": "^7.22.15", @@ -14866,7 +2652,8 @@ }, "node_modules/@babel/preset-flow": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/preset-flow/-/preset-flow-7.23.3.tgz", + "integrity": "sha512-7yn6hl8RIv+KNk6iIrGZ+D06VhVY35wLVf23Cz/mMu1zOr7u4MMP4j0nZ9tLf8+4ZFpnib8cFYgB/oYg9hfswA==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-option": "^7.22.15", @@ -14893,6 +2680,8 @@ }, "node_modules/@babel/preset-react": { "version": "7.23.3", + "resolved": "https://registry.npmjs.org/@babel/preset-react/-/preset-react-7.23.3.tgz", + "integrity": "sha512-tbkHOS9axH6Ysf2OUEqoSZ6T3Fa2SrNH6WTWSPBboxKzdxNc9qOICeLXkNG0ZEwbQ1HY8liwOce4aN/Ceyuq6w==", "dev": true, "license": "MIT", "dependencies": { @@ -14912,7 +2701,8 @@ }, "node_modules/@babel/preset-typescript": { "version": "7.23.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/preset-typescript/-/preset-typescript-7.23.3.tgz", + "integrity": "sha512-17oIGVlqz6CchO9RFYn5U6ZpWRZIngayYCtrPRSgANSwC2V1Jb+iP74nVxzzXJte8b8BYxrL1yY96xfhTBrNNQ==", "dependencies": { "@babel/helper-plugin-utils": "^7.22.5", "@babel/helper-validator-option": "^7.22.15", @@ -14929,7 +2719,8 @@ }, "node_modules/@babel/register": { "version": "7.22.15", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/register/-/register-7.22.15.tgz", + "integrity": "sha512-V3Q3EqoQdn65RCgTLwauZaTfd1ShhwPmbBv+1dkZV/HpCGMKVyn6oFcRlI7RaKqiDQjX2Qd3AuoEguBgdjIKlg==", "dependencies": { "clone-deep": "^4.0.1", "find-cache-dir": "^2.0.0", @@ -14946,7 +2737,8 @@ }, "node_modules/@babel/register/node_modules/find-cache-dir": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/find-cache-dir/-/find-cache-dir-2.1.0.tgz", + "integrity": "sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==", "dependencies": { "commondir": "^1.0.1", "make-dir": "^2.0.0", @@ -14958,7 +2750,8 @@ }, "node_modules/@babel/register/node_modules/find-up": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-3.0.0.tgz", + "integrity": "sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==", "dependencies": { "locate-path": "^3.0.0" }, @@ -14968,7 +2761,8 @@ }, "node_modules/@babel/register/node_modules/locate-path": { "version": "3.0.0", - "license": "MIT", + "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" @@ -14979,7 +2773,8 @@ }, "node_modules/@babel/register/node_modules/make-dir": { "version": "2.1.0", - "license": "MIT", + "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" @@ -14990,7 +2785,8 @@ }, "node_modules/@babel/register/node_modules/p-limit": { "version": "2.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dependencies": { "p-try": "^2.0.0" }, @@ -15003,7 +2799,8 @@ }, "node_modules/@babel/register/node_modules/p-locate": { "version": "3.0.0", - "license": "MIT", + "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" }, @@ -15013,14 +2810,16 @@ }, "node_modules/@babel/register/node_modules/path-exists": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "engines": { "node": ">=4" } }, "node_modules/@babel/register/node_modules/pkg-dir": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-3.0.0.tgz", + "integrity": "sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==", "dependencies": { "find-up": "^3.0.0" }, @@ -15030,21 +2829,24 @@ }, "node_modules/@babel/register/node_modules/semver": { "version": "5.7.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { "semver": "bin/semver" } }, "node_modules/@babel/register/node_modules/source-map": { "version": "0.6.1", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "engines": { "node": ">=0.10.0" } }, "node_modules/@babel/register/node_modules/source-map-support": { "version": "0.5.21", - "license": "MIT", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -15055,8 +2857,9 @@ "license": "MIT" }, "node_modules/@babel/runtime": { - "version": "7.23.5", - "license": "MIT", + "version": "7.23.9", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.9.tgz", + "integrity": "sha512-0CX6F+BI2s9dkUqr08KFrAIZgNFj75rdBU/DjCyYLIaV/quFjkk6T+EJ2LkZHyZTbEV4L5p97mNkUsHl2wLFAw==", "dependencies": { "regenerator-runtime": "^0.14.0" }, @@ -15066,7 +2869,8 @@ }, "node_modules/@babel/template": { "version": "7.22.15", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.22.15.tgz", + "integrity": "sha512-QPErUVm4uyJa60rkI73qneDacvdvzxshT3kksGqlGWYdOTIUOwJ7RDUL8sGqslY1uXWSL6xMFKEXDS3ox2uF0w==", "dependencies": { "@babel/code-frame": "^7.22.13", "@babel/parser": "^7.22.15", @@ -15078,7 +2882,8 @@ }, "node_modules/@babel/traverse": { "version": "7.23.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.23.5.tgz", + "integrity": "sha512-czx7Xy5a6sapWWRx61m1Ke1Ra4vczu1mCTtJam5zRTBOonfdJ+S/B6HYmGYu3fJtr8GGET3si6IhgWVBhJ/m8w==", "dependencies": { "@babel/code-frame": "^7.23.5", "@babel/generator": "^7.23.5", @@ -15097,7 +2902,8 @@ }, "node_modules/@babel/types": { "version": "7.23.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.23.5.tgz", + "integrity": "sha512-ON5kSOJwVO6xXVRTvOI0eOnWe7VdUcIpsovGo9U/Br4Ie4UVFQTboO2cYnDhAGU6Fp+UxSiT+pMft0SMHfuq6w==", "dependencies": { "@babel/helper-string-parser": "^7.23.4", "@babel/helper-validator-identifier": "^7.22.20", @@ -15114,19 +2920,22 @@ }, "node_modules/@bcoe/v8-coverage": { "version": "0.2.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true }, "node_modules/@cfcs/core": { "version": "0.0.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@cfcs/core/-/core-0.0.6.tgz", + "integrity": "sha512-FxfJMwoLB8MEMConeXUCqtMGqxdtePQxRBOiGip9ULcYYam3WfCgoY6xdnMaSkYvRvmosp5iuG+TiPofm65+Pw==", "dependencies": { "@egjs/component": "^3.0.2" } }, "node_modules/@choojs/findup": { "version": "0.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@choojs/findup/-/findup-0.2.1.tgz", + "integrity": "sha512-YstAqNb0MCN8PjdLCDfRsBcGVRN41f3vgLvaI0IrIcBp4AqILRSS0DeWNGkicC+f/zRIPJLc+9RURVSepwvfBw==", "peer": true, "dependencies": { "commander": "^2.15.1" @@ -15137,9 +2946,158 @@ }, "node_modules/@choojs/findup/node_modules/commander": { "version": "2.20.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "peer": true }, + "node_modules/@codemirror/autocomplete": { + "version": "6.12.0", + "resolved": "https://registry.npmjs.org/@codemirror/autocomplete/-/autocomplete-6.12.0.tgz", + "integrity": "sha512-r4IjdYFthwbCQyvqnSlx0WBHRHi8nBvU+WjJxFUij81qsBfhNudf/XKKmmC2j3m0LaOYUQTf3qiEK1J8lO1sdg==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0" + }, + "peerDependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@codemirror/commands": { + "version": "6.3.3", + "resolved": "https://registry.npmjs.org/@codemirror/commands/-/commands-6.3.3.tgz", + "integrity": "sha512-dO4hcF0fGT9tu1Pj1D2PvGvxjeGkbC6RGcZw6Qs74TH+Ed1gw98jmUgd2axWvIZEqTeTuFrg1lEB1KV6cK9h1A==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.4.0", + "@codemirror/view": "^6.0.0", + "@lezer/common": "^1.1.0" + } + }, + "node_modules/@codemirror/lang-css": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@codemirror/lang-css/-/lang-css-6.2.1.tgz", + "integrity": "sha512-/UNWDNV5Viwi/1lpr/dIXJNWiwDxpw13I4pTUAsNxZdg6E0mI2kTQb0P2iHczg1Tu+H4EBgJR+hYhKiHKko7qg==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.2", + "@lezer/css": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-javascript": { + "version": "6.2.1", + "resolved": "https://registry.npmjs.org/@codemirror/lang-javascript/-/lang-javascript-6.2.1.tgz", + "integrity": "sha512-jlFOXTejVyiQCW3EQwvKH0m99bUYIw40oPmFjSX2VS78yzfe0HELZ+NEo9Yfo1MkGRpGlj3Gnu4rdxV1EnAs5A==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.6.0", + "@codemirror/lint": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.17.0", + "@lezer/common": "^1.0.0", + "@lezer/javascript": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-python": { + "version": "6.1.3", + "resolved": "https://registry.npmjs.org/@codemirror/lang-python/-/lang-python-6.1.3.tgz", + "integrity": "sha512-S9w2Jl74hFlD5nqtUMIaXAq9t5WlM0acCkyuQWUUSvZclk1sV+UfnpFiZzuZSG+hfEaOmxKR5UxY/Uxswn7EhQ==", + "dependencies": { + "@codemirror/autocomplete": "^6.3.2", + "@codemirror/language": "^6.8.0", + "@lezer/python": "^1.1.4" + } + }, + "node_modules/@codemirror/lang-sass": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/@codemirror/lang-sass/-/lang-sass-6.0.2.tgz", + "integrity": "sha512-l/bdzIABvnTo1nzdY6U+kPAC51czYQcOErfzQ9zSm9D8GmNPD0WTW8st/CJwBTPLO8jlrbyvlSEcN20dc4iL0Q==", + "dependencies": { + "@codemirror/lang-css": "^6.2.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.0.2", + "@lezer/sass": "^1.0.0" + } + }, + "node_modules/@codemirror/lang-sql": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@codemirror/lang-sql/-/lang-sql-6.5.5.tgz", + "integrity": "sha512-DvOaP2RXLb2xlxJxxydTFfwyYw5YDqEFea6aAfgh9UH0kUD6J1KFZ0xPgPpw1eo/5s2w3L6uh5PVR7GM23GxkQ==", + "dependencies": { + "@codemirror/autocomplete": "^6.0.0", + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@codemirror/language": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/@codemirror/language/-/language-6.10.0.tgz", + "integrity": "sha512-2vaNn9aPGCRFKWcHPFksctzJ8yS5p7YoaT+jHpc0UGKzNuAIx4qy6R5wiqbP+heEEdyaABA582mNqSHzSoYdmg==", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.23.0", + "@lezer/common": "^1.1.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0", + "style-mod": "^4.0.0" + } + }, + "node_modules/@codemirror/lint": { + "version": "6.4.2", + "resolved": "https://registry.npmjs.org/@codemirror/lint/-/lint-6.4.2.tgz", + "integrity": "sha512-wzRkluWb1ptPKdzlsrbwwjYCPLgzU6N88YBAmlZi8WFyuiEduSd05MnJYNogzyc8rPK7pj6m95ptUApc8sHKVA==", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/search": { + "version": "6.5.5", + "resolved": "https://registry.npmjs.org/@codemirror/search/-/search-6.5.5.tgz", + "integrity": "sha512-PIEN3Ke1buPod2EHbJsoQwlbpkz30qGZKcnmH1eihq9+bPQx8gelauUwLYaY4vBOuBAuEhmpDLii4rj/uO0yMA==", + "dependencies": { + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "crelt": "^1.0.5" + } + }, + "node_modules/@codemirror/state": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/@codemirror/state/-/state-6.4.0.tgz", + "integrity": "sha512-hm8XshYj5Fo30Bb922QX9hXB/bxOAVH+qaqHBzw5TKa72vOeslyGwd4X8M0c1dJ9JqxlaMceOQ8RsL9tC7gU0A==" + }, + "node_modules/@codemirror/theme-one-dark": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/@codemirror/theme-one-dark/-/theme-one-dark-6.1.2.tgz", + "integrity": "sha512-F+sH0X16j/qFLMAfbciKTxVOwkdAS336b7AXTKOZhy8BR3eH/RelsnLgLFINrpST63mmN2OuwUt0W2ndUgYwUA==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0", + "@lezer/highlight": "^1.0.0" + } + }, + "node_modules/@codemirror/view": { + "version": "6.24.0", + "resolved": "https://registry.npmjs.org/@codemirror/view/-/view-6.24.0.tgz", + "integrity": "sha512-zK6m5pNkdhdJl8idPP1gA4N8JKTiSsOz8U/Iw+C1ChMwyLG7+MLiNXnH/wFuAk6KeGEe33/adOiAh5jMqee03w==", + "dependencies": { + "@codemirror/state": "^6.4.0", + "style-mod": "^4.1.0", + "w3c-keyname": "^2.2.4" + } + }, "node_modules/@colors/colors": { "version": "1.5.0", "dev": true, @@ -15151,19 +3109,22 @@ }, "node_modules/@daybrush/utils": { "version": "1.13.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@daybrush/utils/-/utils-1.13.0.tgz", + "integrity": "sha512-ALK12C6SQNNHw1enXK+UO8bdyQ+jaWNQ1Af7Z3FNxeAwjYhQT7do+TRE4RASAJ3ObaS2+TJ7TXR3oz2Gzbw0PQ==" }, "node_modules/@discoveryjs/json-ext": { "version": "0.5.7", + "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.7.tgz", + "integrity": "sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.0.0" } }, "node_modules/@dnd-kit/accessibility": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@dnd-kit/accessibility/-/accessibility-3.1.0.tgz", + "integrity": "sha512-ea7IkhKvlJUv9iSHJOnxinBcoOI3ppGnnL+VDJ75O45Nss6HtZd8IdN8touXPDtASfeI2T2LImb8VOZcL47wjQ==", "dependencies": { "tslib": "^2.0.0" }, @@ -15173,7 +3134,8 @@ }, "node_modules/@dnd-kit/core": { "version": "6.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@dnd-kit/core/-/core-6.1.0.tgz", + "integrity": "sha512-J3cQBClB4TVxwGo3KEjssGEXNJqGVWx17aRTZ1ob0FliR5IjYgTxl5YJbKTzA6IzrtelotH19v6y7uoIRUZPSg==", "dependencies": { "@dnd-kit/accessibility": "^3.1.0", "@dnd-kit/utilities": "^3.2.2", @@ -15186,7 +3148,8 @@ }, "node_modules/@dnd-kit/sortable": { "version": "7.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@dnd-kit/sortable/-/sortable-7.0.2.tgz", + "integrity": "sha512-wDkBHHf9iCi1veM834Gbk1429bd4lHX4RpAwT0y2cHLf246GAvU2sVw/oxWNpPKQNQRQaeGXhAVgrOl1IT+iyA==", "dependencies": { "@dnd-kit/utilities": "^3.2.0", "tslib": "^2.0.0" @@ -15198,7 +3161,8 @@ }, "node_modules/@dnd-kit/utilities": { "version": "3.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@dnd-kit/utilities/-/utilities-3.2.2.tgz", + "integrity": "sha512-+MKAJEOfaBe5SmV6t34p80MMKhjvUz0vRrvVJbPT0WElzaOJ/1xs+D+KDv+tD/NE5ujfrChEcshd4fLn0wpiqg==", "dependencies": { "tslib": "^2.0.0" }, @@ -15206,28 +3170,38 @@ "react": ">=16.8.0" } }, + "node_modules/@egjs/agent": { + "version": "2.4.3", + "resolved": "https://registry.npmjs.org/@egjs/agent/-/agent-2.4.3.tgz", + "integrity": "sha512-XvksSENe8wPeFlEVouvrOhKdx8HMniJ3by7sro2uPF3M6QqWwjzVcmvwoPtdjiX8O1lfRoLhQMp1a7NGlVTdIA==" + }, "node_modules/@egjs/children-differ": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@egjs/children-differ/-/children-differ-1.0.1.tgz", + "integrity": "sha512-DRvyqMf+CPCOzAopQKHtW+X8iN6Hy6SFol+/7zCUiE5y4P/OB8JP8FtU4NxtZwtafvSL4faD5KoQYPj3JHzPFQ==", "dependencies": { "@egjs/list-differ": "^1.0.0" } }, "node_modules/@egjs/component": { "version": "3.0.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@egjs/component/-/component-3.0.5.tgz", + "integrity": "sha512-cLcGizTrrUNA2EYE3MBmEDt2tQv1joVP1Q3oDisZ5nw0MZDx2kcgEXM+/kZpfa/PAkFvYVhRUZwytIQWoN3V/w==" }, "node_modules/@egjs/list-differ": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@egjs/list-differ/-/list-differ-1.0.1.tgz", + "integrity": "sha512-OTFTDQcWS+1ZREOdCWuk5hCBgYO4OsD30lXcOCyVOAjXMhgL5rBRDnt/otb6Nz8CzU0L/igdcaQBDLWc4t9gvg==" }, "node_modules/@emoji-mart/data": { "version": "1.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emoji-mart/data/-/data-1.1.2.tgz", + "integrity": "sha512-1HP8BxD2azjqWJvxIaWAMyTySeZY0Osr83ukYjltPVkNXeJvTz7yDrPLBtnrD5uqJ3tg4CcLuuBW09wahqL/fg==" }, "node_modules/@emoji-mart/react": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@emoji-mart/react/-/react-1.1.1.tgz", + "integrity": "sha512-NMlFNeWgv1//uPsvLxvGQoIerPuVdXwK/EUek8OOkJ6wVOWPUizRBJU0hDqWZCOROVpfBgCemaC3m6jDOXi03g==", "peerDependencies": { "emoji-mart": "^5.2", "react": "^16.8 || ^17 || ^18" @@ -15235,7 +3209,8 @@ }, "node_modules/@emotion/babel-plugin": { "version": "11.11.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@emotion/babel-plugin/-/babel-plugin-11.11.0.tgz", + "integrity": "sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==", "dependencies": { "@babel/helper-module-imports": "^7.16.7", "@babel/runtime": "^7.18.3", @@ -15252,11 +3227,13 @@ }, "node_modules/@emotion/babel-plugin/node_modules/convert-source-map": { "version": "1.9.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.9.0.tgz", + "integrity": "sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==" }, "node_modules/@emotion/babel-plugin/node_modules/escape-string-regexp": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "engines": { "node": ">=10" }, @@ -15266,14 +3243,16 @@ }, "node_modules/@emotion/babel-plugin/node_modules/source-map": { "version": "0.5.7", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "engines": { "node": ">=0.10.0" } }, "node_modules/@emotion/cache": { "version": "11.11.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@emotion/cache/-/cache-11.11.0.tgz", + "integrity": "sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==", "dependencies": { "@emotion/memoize": "^0.8.1", "@emotion/sheet": "^1.2.2", @@ -15284,15 +3263,27 @@ }, "node_modules/@emotion/hash": { "version": "0.9.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/hash/-/hash-0.9.1.tgz", + "integrity": "sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==" + }, + "node_modules/@emotion/is-prop-valid": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@emotion/is-prop-valid/-/is-prop-valid-1.2.1.tgz", + "integrity": "sha512-61Mf7Ufx4aDxx1xlDeOm8aFFigGHE4z+0sKCa+IHCeZKiyP9RLD0Mmx7m8b9/Cf37f7NAvQOOJAbQQGVr5uERw==", + "peer": true, + "dependencies": { + "@emotion/memoize": "^0.8.1" + } }, "node_modules/@emotion/memoize": { "version": "0.8.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/memoize/-/memoize-0.8.1.tgz", + "integrity": "sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==" }, "node_modules/@emotion/react": { "version": "11.11.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@emotion/react/-/react-11.11.1.tgz", + "integrity": "sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==", "dependencies": { "@babel/runtime": "^7.18.3", "@emotion/babel-plugin": "^11.11.0", @@ -15314,7 +3305,8 @@ }, "node_modules/@emotion/serialize": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@emotion/serialize/-/serialize-1.1.2.tgz", + "integrity": "sha512-zR6a/fkFP4EAcCMQtLOhIgpprZOwNmCldtpaISpvz348+DP4Mz8ZoKaGGCQpbzepNIUWbq4w6hNZkwDyKoS+HA==", "dependencies": { "@emotion/hash": "^0.9.1", "@emotion/memoize": "^0.8.1", @@ -15325,34 +3317,111 @@ }, "node_modules/@emotion/sheet": { "version": "1.2.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/sheet/-/sheet-1.2.2.tgz", + "integrity": "sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==" + }, + "node_modules/@emotion/styled": { + "version": "11.11.0", + "resolved": "https://registry.npmjs.org/@emotion/styled/-/styled-11.11.0.tgz", + "integrity": "sha512-hM5Nnvu9P3midq5aaXj4I+lnSfNi7Pmd4EWk1fOZ3pxookaQTNew6bp4JaCBYM4HVFZF9g7UjJmsUmC2JlxOng==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.18.3", + "@emotion/babel-plugin": "^11.11.0", + "@emotion/is-prop-valid": "^1.2.1", + "@emotion/serialize": "^1.1.2", + "@emotion/use-insertion-effect-with-fallbacks": "^1.0.1", + "@emotion/utils": "^1.2.1" + }, + "peerDependencies": { + "@emotion/react": "^11.0.0-rc.0", + "react": ">=16.8.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } }, "node_modules/@emotion/unitless": { "version": "0.8.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/unitless/-/unitless-0.8.1.tgz", + "integrity": "sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==" }, "node_modules/@emotion/use-insertion-effect-with-fallbacks": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@emotion/use-insertion-effect-with-fallbacks/-/use-insertion-effect-with-fallbacks-1.0.1.tgz", + "integrity": "sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==", "peerDependencies": { "react": ">=16.8.0" } }, "node_modules/@emotion/utils": { "version": "1.2.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/utils/-/utils-1.2.1.tgz", + "integrity": "sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==" }, "node_modules/@emotion/weak-memoize": { "version": "0.3.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@emotion/weak-memoize/-/weak-memoize-0.3.1.tgz", + "integrity": "sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==" }, - "node_modules/@esbuild/darwin-arm64": { + "node_modules/@esbuild/android-arm": { "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.17.19.tgz", + "integrity": "sha512-rIKddzqhmav7MSmoFCmDIb6e2W57geRsM94gV2l38fzhXMwq7hZoClug9USI2pFRGL06f4IOPHHpFNOkWieR8A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.17.19.tgz", + "integrity": "sha512-KBMWvEZooR7+kzY0BtbTQn0OAYY7CsiydT63pVEaPtVYF0hXbUaOyZog37DKxK7NF3XacBJOpYT4adIJh+avxA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.17.19.tgz", + "integrity": "sha512-uUTTc4xGNDT7YSArp/zbtmbhO0uEEK9/ETW29Wk1thYUJBz3IVnvgEiEwEa9IeLyvnpKrWK64Utw2bgUmDveww==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.17.19.tgz", + "integrity": "sha512-80wEoCfF/hFKM6WE1FyBHc9SfUblloAWx6FJkFWTWiCoht9Mc0ARGEM47e67W9rI09YoUxJL68WHfDRYEAvOhg==", "cpu": [ "arm64" ], "dev": true, - "license": "MIT", "optional": true, "os": [ "darwin" @@ -15361,6 +3430,294 @@ "node": ">=12" } }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.17.19.tgz", + "integrity": "sha512-IJM4JJsLhRYr9xdtLytPLSH9k/oxR3boaUIYiHkAawtwNOXKE8KoU8tMvryogdcT8AU+Bflmh81Xn6Q0vTZbQw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.17.19.tgz", + "integrity": "sha512-pBwbc7DufluUeGdjSU5Si+P3SoMF5DQ/F/UmTSb8HXO80ZEAJmrykPyzo1IfNbAoaqw48YRpv8shwd1NoI0jcQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.17.19.tgz", + "integrity": "sha512-4lu+n8Wk0XlajEhbEffdy2xy53dpR06SlzvhGByyg36qJw6Kpfk7cp45DR/62aPH9mtJRmIyrXAS5UWBrJT6TQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.17.19.tgz", + "integrity": "sha512-cdmT3KxjlOQ/gZ2cjfrQOtmhG4HJs6hhvm3mWSRDPtZ/lP5oe8FWceS10JaSJC13GBd4eH/haHnqf7hhGNLerA==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.17.19.tgz", + "integrity": "sha512-ct1Tg3WGwd3P+oZYqic+YZF4snNl2bsnMKRkb3ozHmnM0dGWuxcPTTntAF6bOP0Sp4x0PjSF+4uHQ1xvxfRKqg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.17.19.tgz", + "integrity": "sha512-w4IRhSy1VbsNxHRQpeGCHEmibqdTUx61Vc38APcsRbuVgK0OPEnQ0YD39Brymn96mOx48Y2laBQGqgZ0j9w6SQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.17.19.tgz", + "integrity": "sha512-2iAngUbBPMq439a+z//gE+9WBldoMp1s5GWsUSgqHLzLJ9WoZLZhpwWuym0u0u/4XmZ3gpHmzV84PonE+9IIdQ==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.17.19.tgz", + "integrity": "sha512-LKJltc4LVdMKHsrFe4MGNPp0hqDFA1Wpt3jE1gEyM3nKUvOiO//9PheZZHfYRfYl6AwdTH4aTcXSqBerX0ml4A==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.17.19.tgz", + "integrity": "sha512-/c/DGybs95WXNS8y3Ti/ytqETiW7EU44MEKuCAcpPto3YjQbyK3IQVKfF6nbghD7EcLUGl0NbiL5Rt5DMhn5tg==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.17.19.tgz", + "integrity": "sha512-FC3nUAWhvFoutlhAkgHf8f5HwFWUL6bYdvLc/TTuxKlvLi3+pPzdZiFKSWz/PF30TB1K19SuCxDTI5KcqASJqA==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.17.19.tgz", + "integrity": "sha512-IbFsFbxMWLuKEbH+7sTkKzL6NJmG2vRyy6K7JJo55w+8xDk7RElYn6xvXtDW8HCfoKBFK69f3pgBJSUSQPr+4Q==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.17.19.tgz", + "integrity": "sha512-68ngA9lg2H6zkZcyp22tsVt38mlhWde8l3eJLWkyLrp4HwMUr3c1s/M2t7+kHIhvMjglIBrFpncX1SzMckomGw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.17.19.tgz", + "integrity": "sha512-CwFq42rXCR8TYIjIfpXCbRX0rp1jo6cPIUPSaWwzbVI4aOfX96OXY8M6KNmtPcg7QjYeDmN+DD0Wp3LaBOLf4Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.17.19.tgz", + "integrity": "sha512-cnq5brJYrSZ2CF6c35eCmviIN3k3RczmHz8eYaVlNasVqsNY+JKohZU5MKmaOI+KkllCdzOKKdPs762VCPC20g==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.17.19.tgz", + "integrity": "sha512-vCRT7yP3zX+bKWFeP/zdS6SqdWB8OIpaRq/mbXQxTGHnIxspRtigpkUcDMlSCOejlHowLqII7K2JKevwyRP2rg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.17.19.tgz", + "integrity": "sha512-yYx+8jwowUstVdorcMdNlzklLYhPxjniHWFKgRqH7IFlUEa0Umu3KuYplf1HUZZ422e3NU9F4LGb+4O0Kdcaag==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.17.19.tgz", + "integrity": "sha512-eggDKanJszUtCdlVs0RB+h35wNlb5v4TWEkq4vZcmVt5u/HiDZrTXe2bWFQUez3RgNHwx/x4sk5++4NSSicKkw==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.17.19", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.17.19.tgz", + "integrity": "sha512-lAhycmKnVOuRYNtRtatQR1LPQf2oYCkRGkSFnseDAKPl8lu5SOsK/e1sXe5a0Pc5kHIHe6P2I/ilntNv2xf3cA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@eslint-community/eslint-utils": { "version": "4.4.0", "dev": true, @@ -15377,6 +3734,8 @@ }, "node_modules/@eslint-community/eslint-utils/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, "license": "Apache-2.0", "engines": { @@ -15388,6 +3747,8 @@ }, "node_modules/@eslint-community/regexpp": { "version": "4.10.0", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.10.0.tgz", + "integrity": "sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==", "dev": true, "license": "MIT", "engines": { @@ -15396,6 +3757,8 @@ }, "node_modules/@eslint/eslintrc": { "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", "dev": true, "license": "MIT", "dependencies": { @@ -15423,6 +3786,8 @@ }, "node_modules/@eslint/eslintrc/node_modules/globals": { "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, "license": "MIT", "dependencies": { @@ -15459,6 +3824,8 @@ }, "node_modules/@eslint/js": { "version": "8.55.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.55.0.tgz", + "integrity": "sha512-qQfo2mxH5yVom1kacMtZZJFVdW+E70mqHMJvVg6WTLo+VBuQJ4TojZlfWBjK0ve5BdEeNAVxOsl/nvNMpJOaJA==", "dev": true, "license": "MIT", "engines": { @@ -15471,25 +3838,28 @@ "license": "MIT" }, "node_modules/@floating-ui/core": { - "version": "1.5.1", - "license": "MIT", + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/@floating-ui/core/-/core-1.6.0.tgz", + "integrity": "sha512-PcF++MykgmTj3CIyOQbKA/hDzOAiqI3mhuoN44WRCopIs1sgoDoU4oty4Jtqaj/y3oDU6fnVSm4QG0a3t5i0+g==", "dependencies": { - "@floating-ui/utils": "^0.1.3" + "@floating-ui/utils": "^0.2.1" } }, "node_modules/@floating-ui/dom": { - "version": "1.5.3", - "license": "MIT", + "version": "1.6.1", + "resolved": "https://registry.npmjs.org/@floating-ui/dom/-/dom-1.6.1.tgz", + "integrity": "sha512-iA8qE43/H5iGozC3W0YSnVSW42Vh522yyM1gj+BqRwVsTNOyr231PsXDaV04yT39PsO0QL2QpbI/M0ZaLUQgRQ==", "dependencies": { - "@floating-ui/core": "^1.4.2", - "@floating-ui/utils": "^0.1.3" + "@floating-ui/core": "^1.6.0", + "@floating-ui/utils": "^0.2.1" } }, "node_modules/@floating-ui/react-dom": { - "version": "2.0.4", - "license": "MIT", + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/@floating-ui/react-dom/-/react-dom-2.0.8.tgz", + "integrity": "sha512-HOdqOt3R3OGeTKidaLvJKcgg75S6tibQ3Tif4eyd91QnIJWr0NLvoXFpJA/j8HqkFSL68GDca9AuyWEHlhyClw==", "dependencies": { - "@floating-ui/dom": "^1.5.1" + "@floating-ui/dom": "^1.6.1" }, "peerDependencies": { "react": ">=16.8.0", @@ -15497,24 +3867,28 @@ } }, "node_modules/@floating-ui/utils": { - "version": "0.1.6", - "license": "MIT" + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/@floating-ui/utils/-/utils-0.2.1.tgz", + "integrity": "sha512-9TANp6GPoMtYzQdt54kfAyMmz1+osLlXdg2ENroU7zzrtflTLrrC/lgrIfaSe+Wu0b89GKccT7vxXA0MoAIO+Q==" }, "node_modules/@gar/promisify": { "version": "1.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@gar/promisify/-/promisify-1.1.3.tgz", + "integrity": "sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==", + "dev": true }, "node_modules/@googlemaps/js-api-loader": { "version": "1.16.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@googlemaps/js-api-loader/-/js-api-loader-1.16.2.tgz", + "integrity": "sha512-psGw5u0QM6humao48Hn4lrChOM2/rA43ZCm3tKK9qQsEj1/VzqkCqnvGfEOshDbBQflydfaRovbKwZMF4AyqbA==", "dependencies": { "fast-deep-equal": "^3.1.3" } }, "node_modules/@googlemaps/markerclusterer": { "version": "2.3.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@googlemaps/markerclusterer/-/markerclusterer-2.3.2.tgz", + "integrity": "sha512-zb9OQP8XscZp2Npt1uQUYnGKu1miuq4DPP28JyDuFd6HV17HCEcjV9MtBi4muG/iVRXXvuHW9bRCnHbao9ITfw==", "dependencies": { "fast-deep-equal": "^3.1.3", "supercluster": "^8.0.1" @@ -15522,12 +3896,14 @@ }, "node_modules/@hapi/hoek": { "version": "9.3.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@hapi/hoek/-/hoek-9.3.0.tgz", + "integrity": "sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==", "peer": true }, "node_modules/@hapi/topo": { "version": "5.1.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@hapi/topo/-/topo-5.1.0.tgz", + "integrity": "sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==", "peer": true, "dependencies": { "@hapi/hoek": "^9.0.0" @@ -15535,8 +3911,9 @@ }, "node_modules/@humanwhocodes/config-array": { "version": "0.11.13", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.13.tgz", + "integrity": "sha512-JSBDMiDKSzQVngfRjOdFXgFfklaXI4K9nLF49Auh21lmBWRLIK3+xTErTWD4KU54pb6coM6ESE7Awz/FNU3zgQ==", "dev": true, - "license": "Apache-2.0", "dependencies": { "@humanwhocodes/object-schema": "^2.0.1", "debug": "^4.1.1", @@ -15548,8 +3925,9 @@ }, "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, - "license": "Apache-2.0", "engines": { "node": ">=12.22" }, @@ -15560,12 +3938,14 @@ }, "node_modules/@humanwhocodes/object-schema": { "version": "2.0.1", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.1.tgz", + "integrity": "sha512-dvuCeX5fC9dXgJn9t+X5atfmgQAzUOWqS1254Gh0m6i8wKd10ebXkfNKiRK+1GWi/yTvvLDHpoxLr0xxxeslWw==", + "dev": true }, "node_modules/@icons/material": { "version": "0.2.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@icons/material/-/material-0.2.4.tgz", + "integrity": "sha512-QPcGmICAPbGLGb6F/yNf/KzKqvFx8z5qx3D1yFqVAjoFmXK35EgyW+cJ57Te3CNsmzblwtzakLGFqHPqrfb4Tw==", "peerDependencies": { "react": "*" } @@ -15661,8 +4041,9 @@ }, "node_modules/@istanbuljs/load-nyc-config": { "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", "dev": true, - "license": "ISC", "dependencies": { "camelcase": "^5.3.1", "find-up": "^4.1.0", @@ -15676,16 +4057,18 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/camelcase": { "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -15696,8 +4079,9 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -15707,8 +4091,9 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -15721,8 +4106,9 @@ }, "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -15732,16 +4118,18 @@ }, "node_modules/@istanbuljs/schema": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jest/console": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -15756,8 +4144,9 @@ }, "node_modules/@jest/console/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -15770,8 +4159,9 @@ }, "node_modules/@jest/console/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -15785,16 +4175,18 @@ }, "node_modules/@jest/console/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jest/console/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -15804,8 +4196,9 @@ }, "node_modules/@jest/core": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", "dev": true, - "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", "@jest/reporters": "^29.7.0", @@ -15850,8 +4243,9 @@ }, "node_modules/@jest/core/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -15864,8 +4258,9 @@ }, "node_modules/@jest/core/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -15879,16 +4274,18 @@ }, "node_modules/@jest/core/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jest/core/node_modules/pretty-format": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -15900,8 +4297,9 @@ }, "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, - "license": "MIT", "engines": { "node": ">=10" }, @@ -15911,13 +4309,15 @@ }, "node_modules/@jest/core/node_modules/react-is": { "version": "18.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true }, "node_modules/@jest/core/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -15927,7 +4327,8 @@ }, "node_modules/@jest/create-cache-key-function": { "version": "29.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@jest/create-cache-key-function/-/create-cache-key-function-29.7.0.tgz", + "integrity": "sha512-4QqS3LY5PBmTRHj9sAg1HLoPzqAI0uOX6wI/TRqHIcOxlFidy6YEmCQJk6FSZjNLGCeubDMfmkWL+qaLKhSGQA==", "peer": true, "dependencies": { "@jest/types": "^29.6.3" @@ -15938,7 +4339,8 @@ }, "node_modules/@jest/environment": { "version": "29.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", "dependencies": { "@jest/fake-timers": "^29.7.0", "@jest/types": "^29.6.3", @@ -15951,7 +4353,8 @@ }, "node_modules/@jest/environment/node_modules/jest-mock": { "version": "29.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -15963,8 +4366,9 @@ }, "node_modules/@jest/expect": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", "dev": true, - "license": "MIT", "dependencies": { "expect": "^29.7.0", "jest-snapshot": "^29.7.0" @@ -15975,8 +4379,9 @@ }, "node_modules/@jest/expect-utils": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", "dev": true, - "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3" }, @@ -15986,7 +4391,8 @@ }, "node_modules/@jest/fake-timers": { "version": "29.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", "dependencies": { "@jest/types": "^29.6.3", "@sinonjs/fake-timers": "^10.0.2", @@ -16001,7 +4407,8 @@ }, "node_modules/@jest/fake-timers/node_modules/jest-mock": { "version": "29.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -16013,8 +4420,9 @@ }, "node_modules/@jest/globals": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/expect": "^29.7.0", @@ -16027,8 +4435,9 @@ }, "node_modules/@jest/globals/node_modules/jest-mock": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -16040,8 +4449,9 @@ }, "node_modules/@jest/reporters": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", "dev": true, - "license": "MIT", "dependencies": { "@bcoe/v8-coverage": "^0.2.3", "@jest/console": "^29.7.0", @@ -16082,8 +4492,9 @@ }, "node_modules/@jest/reporters/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -16096,8 +4507,9 @@ }, "node_modules/@jest/reporters/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -16111,8 +4523,9 @@ }, "node_modules/@jest/reporters/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -16130,16 +4543,18 @@ }, "node_modules/@jest/reporters/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jest/reporters/node_modules/istanbul-lib-instrument": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.1.tgz", + "integrity": "sha512-EAMEJBsYuyyztxMxW3g7ugGPkrZsV57v0Hmv3mm1uQsmB+QnZuepg731CRaIgeUVSdmsTngOkSnauNF8p7FIhA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -16153,8 +4568,9 @@ }, "node_modules/@jest/reporters/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -16164,7 +4580,8 @@ }, "node_modules/@jest/schemas": { "version": "29.6.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", "dependencies": { "@sinclair/typebox": "^0.27.8" }, @@ -16174,8 +4591,9 @@ }, "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, - "license": "MIT", "dependencies": { "@jridgewell/trace-mapping": "^0.3.18", "callsites": "^3.0.0", @@ -16187,8 +4605,9 @@ }, "node_modules/@jest/test-result": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", "dev": true, - "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", "@jest/types": "^29.6.3", @@ -16201,8 +4620,9 @@ }, "node_modules/@jest/test-sequencer": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", "graceful-fs": "^4.2.9", @@ -16215,8 +4635,9 @@ }, "node_modules/@jest/transform": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@jest/types": "^29.6.3", @@ -16240,8 +4661,9 @@ }, "node_modules/@jest/transform/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -16254,8 +4676,9 @@ }, "node_modules/@jest/transform/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -16269,16 +4692,18 @@ }, "node_modules/@jest/transform/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@jest/transform/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -16288,7 +4713,8 @@ }, "node_modules/@jest/types": { "version": "29.6.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", "dependencies": { "@jest/schemas": "^29.6.3", "@types/istanbul-lib-coverage": "^2.0.0", @@ -16303,7 +4729,8 @@ }, "node_modules/@jest/types/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -16316,7 +4743,8 @@ }, "node_modules/@jest/types/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "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" @@ -16330,14 +4758,16 @@ }, "node_modules/@jest/types/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, "node_modules/@jest/types/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "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" }, @@ -16347,7 +4777,8 @@ }, "node_modules/@jridgewell/gen-mapping": { "version": "0.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dependencies": { "@jridgewell/set-array": "^1.0.1", "@jridgewell/sourcemap-codec": "^1.4.10", @@ -16359,21 +4790,24 @@ }, "node_modules/@jridgewell/resolve-uri": { "version": "3.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.1.tgz", + "integrity": "sha512-dSYZh7HhCDtCKm4QakX0xFpsRDqjjtZf/kjI/v3T3Nwt5r8/qz/M19F9ySyOqU94SXBmeG9ttTul+YnR4LOxFA==", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/set-array": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "engines": { "node": ">=6.0.0" } }, "node_modules/@jridgewell/source-map": { "version": "0.3.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.5.tgz", + "integrity": "sha512-UTYAUj/wviwdsMfzoSJspJxbkH5o1snzwX0//0ENX1u/55kkZZkcTZP6u9bwKGkv+dkk9at4m1Cpt0uY80kcpQ==", "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -16381,11 +4815,13 @@ }, "node_modules/@jridgewell/sourcemap-codec": { "version": "1.4.15", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", + "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==" }, "node_modules/@jridgewell/trace-mapping": { "version": "0.3.20", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.20.tgz", + "integrity": "sha512-R8LcPeWZol2zR8mmH3JeKQ6QRCFb7XgUhV9ZlGhHLGyg4wpPiPZNQOOWhFZhxKw8u//yTbNGI42Bx/3paXEQ+Q==", "dependencies": { "@jridgewell/resolve-uri": "^3.1.0", "@jridgewell/sourcemap-codec": "^1.4.14" @@ -16398,12 +4834,74 @@ }, "node_modules/@leichtgewicht/ip-codec": { "version": "2.0.4", - "dev": true, - "license": "MIT" + "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.2.0", + "resolved": "https://registry.npmjs.org/@lezer/common/-/common-1.2.0.tgz", + "integrity": "sha512-Wmvlm4q6tRpwiy20TnB3yyLTZim38Tkc50dPY8biQRwqE+ati/wD84rm3N15hikvdT4uSg9phs9ubjvcLmkpKg==" + }, + "node_modules/@lezer/css": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/@lezer/css/-/css-1.1.8.tgz", + "integrity": "sha512-7JhxupKuMBaWQKjQoLtzhGj83DdnZY9MckEOG5+/iLKNK2ZJqKc6hf6uc0HjwCX7Qlok44jBNqZhHKDhEhZYLA==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/highlight": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@lezer/highlight/-/highlight-1.2.0.tgz", + "integrity": "sha512-WrS5Mw51sGrpqjlh3d4/fOwpEV2Hd3YOkp9DBt4k8XZQcoTHZFB7sx030A6OcahF4J1nDQAa3jXlTVVYH50IFA==", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/javascript": { + "version": "1.4.12", + "resolved": "https://registry.npmjs.org/@lezer/javascript/-/javascript-1.4.12.tgz", + "integrity": "sha512-kwO5MftUiyfKBcECMEDc4HYnc10JME9kTJNPVoCXqJj/Y+ASWF0rgstORi3BThlQI6SoPSshrK5TjuiLFnr29A==", + "dependencies": { + "@lezer/highlight": "^1.1.3", + "@lezer/lr": "^1.3.0" + } + }, + "node_modules/@lezer/lr": { + "version": "1.3.14", + "resolved": "https://registry.npmjs.org/@lezer/lr/-/lr-1.3.14.tgz", + "integrity": "sha512-z5mY4LStlA3yL7aHT/rqgG614cfcvklS+8oFRFBYrs4YaWLJyKKM4+nN6KopToX0o9Hj6zmH6M5kinOYuy06ug==", + "dependencies": { + "@lezer/common": "^1.0.0" + } + }, + "node_modules/@lezer/python": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/@lezer/python/-/python-1.1.11.tgz", + "integrity": "sha512-C3QeLCcdAKJDUOsYjfFP6a1wdn8jhUNX200bgFm8TpKH1eM2PlgYQS5ugw6E38qGeEx7CP21I1Q52SoybXt0OQ==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } + }, + "node_modules/@lezer/sass": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@lezer/sass/-/sass-1.0.6.tgz", + "integrity": "sha512-w/RCO2dIzZH1To8p+xjs8cE+yfgGus8NZ/dXeWl/QzHyr+TeBs71qiE70KPImEwvTsmEjoWh0A5SxMzKd5BWBQ==", + "dependencies": { + "@lezer/common": "^1.2.0", + "@lezer/highlight": "^1.0.0", + "@lezer/lr": "^1.0.0" + } }, "node_modules/@mapbox/geojson-rewind": { "version": "0.5.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz", + "integrity": "sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==", "peer": true, "dependencies": { "get-stream": "^6.0.1", @@ -16415,11 +4913,14 @@ }, "node_modules/@mapbox/geojson-types": { "version": "1.0.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/@mapbox/geojson-types/-/geojson-types-1.0.2.tgz", + "integrity": "sha512-e9EBqHHv3EORHrSfbR9DqecPNn+AmuAoQxV6aL8Xu30bJMJR1o8PZLZzpk1Wq7/NfCbuhmakHTPYRhoqLsXRnw==", "peer": true }, "node_modules/@mapbox/jsonlint-lines-primitives": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz", + "integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==", "peer": true, "engines": { "node": ">= 0.6" @@ -16427,7 +4928,8 @@ }, "node_modules/@mapbox/mapbox-gl-supported": { "version": "1.5.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-1.5.0.tgz", + "integrity": "sha512-/PT1P6DNf7vjEEiPkVIRJkvibbqWtqnyGaBz3nfRdcxclNSnSdaLU5tfAgcD7I8Yt5i+L19s406YLl1koLnLbg==", "peer": true, "peerDependencies": { "mapbox-gl": ">=0.32.1 <2.0.0" @@ -16435,22 +4937,26 @@ }, "node_modules/@mapbox/point-geometry": { "version": "0.1.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz", + "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==", "peer": true }, "node_modules/@mapbox/tiny-sdf": { "version": "1.2.5", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-1.2.5.tgz", + "integrity": "sha512-cD8A/zJlm6fdJOk6DqPUV8mcpyJkRz2x2R+/fYcWDYG3oWbG7/L7Yl/WqQ1VZCjnL9OTIMAn6c+BC5Eru4sQEw==", "peer": true }, "node_modules/@mapbox/unitbezier": { "version": "0.0.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.0.tgz", + "integrity": "sha512-HPnRdYO0WjFjRTSwO3frz1wKaU649OBFPX3Zo/2WZvuRi6zMiRGui8SnPQiQABgqCf8YikDe5t3HViTVw1WUzA==", "peer": true }, "node_modules/@mapbox/vector-tile": { "version": "1.3.1", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz", + "integrity": "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==", "peer": true, "dependencies": { "@mapbox/point-geometry": "~0.1.0" @@ -16458,7 +4964,8 @@ }, "node_modules/@mapbox/whoots-js": { "version": "3.1.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz", + "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==", "peer": true, "engines": { "node": ">=6.0.0" @@ -16480,6 +4987,273 @@ "react": ">=16" } }, + "node_modules/@mui/base": { + "version": "5.0.0-beta.36", + "resolved": "https://registry.npmjs.org/@mui/base/-/base-5.0.0-beta.36.tgz", + "integrity": "sha512-6A8fYiXgjqTO6pgj31Hc8wm1M3rFYCxDRh09dBVk0L0W4cb2lnurRJa3cAyic6hHY+we1S58OdGYRbKmOsDpGQ==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "@floating-ui/react-dom": "^2.0.8", + "@mui/types": "^7.2.13", + "@mui/utils": "^5.15.9", + "@popperjs/core": "^2.11.8", + "clsx": "^2.1.0", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/base/node_modules/clsx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", + "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/core-downloads-tracker": { + "version": "5.15.9", + "resolved": "https://registry.npmjs.org/@mui/core-downloads-tracker/-/core-downloads-tracker-5.15.9.tgz", + "integrity": "sha512-CSDpVevGaxsvMkiYBZ8ztki1z/eT0mM2MqUT21eCRiMz3DU4zQw5rXG5ML/yTuJF9Z2Wv9SliIeaRAuSR/9Nig==", + "peer": true, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + } + }, + "node_modules/@mui/material": { + "version": "5.15.9", + "resolved": "https://registry.npmjs.org/@mui/material/-/material-5.15.9.tgz", + "integrity": "sha512-kbHTZDcFmN8GHKzRpImUEl9AJfFWI/0Kl+DsYVT3kHzQWUuHiKm3uHXR1RCOqr7H8IgHFPdbxItmCSQ/mj7zgg==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/base": "5.0.0-beta.36", + "@mui/core-downloads-tracker": "^5.15.9", + "@mui/system": "^5.15.9", + "@mui/types": "^7.2.13", + "@mui/utils": "^5.15.9", + "@types/react-transition-group": "^4.4.10", + "clsx": "^2.1.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1", + "react-is": "^18.2.0", + "react-transition-group": "^4.4.5" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0", + "react-dom": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/material/node_modules/clsx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", + "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/material/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "peer": true + }, + "node_modules/@mui/private-theming": { + "version": "5.15.9", + "resolved": "https://registry.npmjs.org/@mui/private-theming/-/private-theming-5.15.9.tgz", + "integrity": "sha512-/aMJlDOxOTAXyp4F2rIukW1O0anodAMCkv1DfBh/z9vaKHY3bd5fFf42wmP+0GRmwMinC5aWPpNfHXOED1fEtg==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/utils": "^5.15.9", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/styled-engine": { + "version": "5.15.9", + "resolved": "https://registry.npmjs.org/@mui/styled-engine/-/styled-engine-5.15.9.tgz", + "integrity": "sha512-NRKtYkL5PZDH7dEmaLEIiipd3mxNnQSO+Yo8rFNBNptY8wzQnQ+VjayTq39qH7Sast5cwHKYFusUrQyD+SS4Og==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "@emotion/cache": "^11.11.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.4.1", + "@emotion/styled": "^11.3.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + } + } + }, + "node_modules/@mui/system": { + "version": "5.15.9", + "resolved": "https://registry.npmjs.org/@mui/system/-/system-5.15.9.tgz", + "integrity": "sha512-SxkaaZ8jsnIJ77bBXttfG//LUf6nTfOcaOuIgItqfHv60ZCQy/Hu7moaob35kBb+guxVJnoSZ+7vQJrA/E7pKg==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "@mui/private-theming": "^5.15.9", + "@mui/styled-engine": "^5.15.9", + "@mui/types": "^7.2.13", + "@mui/utils": "^5.15.9", + "clsx": "^2.1.0", + "csstype": "^3.1.3", + "prop-types": "^15.8.1" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@emotion/react": "^11.5.0", + "@emotion/styled": "^11.3.0", + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@emotion/react": { + "optional": true + }, + "@emotion/styled": { + "optional": true + }, + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/system/node_modules/clsx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", + "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", + "peer": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/@mui/types": { + "version": "7.2.13", + "resolved": "https://registry.npmjs.org/@mui/types/-/types-7.2.13.tgz", + "integrity": "sha512-qP9OgacN62s+l8rdDhSFRe05HWtLLJ5TGclC9I1+tQngbssu0m2dmFZs+Px53AcOs9fD7TbYd4gc9AXzVqO/+g==", + "peer": true, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils": { + "version": "5.15.9", + "resolved": "https://registry.npmjs.org/@mui/utils/-/utils-5.15.9.tgz", + "integrity": "sha512-yDYfr61bCYUz1QtwvpqYy/3687Z8/nS4zv7lv/ih/6ZFGMl1iolEvxRmR84v2lOYxlds+kq1IVYbXxDKh8Z9sg==", + "peer": true, + "dependencies": { + "@babel/runtime": "^7.23.9", + "@types/prop-types": "^15.7.11", + "prop-types": "^15.8.1", + "react-is": "^18.2.0" + }, + "engines": { + "node": ">=12.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/mui-org" + }, + "peerDependencies": { + "@types/react": "^17.0.0 || ^18.0.0", + "react": "^17.0.0 || ^18.0.0" + }, + "peerDependenciesMeta": { + "@types/react": { + "optional": true + } + } + }, + "node_modules/@mui/utils/node_modules/react-is": { + "version": "18.2.0", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "peer": true + }, "node_modules/@ndelangen/get-tarball": { "version": "3.0.9", "dev": true, @@ -16492,16 +5266,18 @@ }, "node_modules/@nicolo-ribaudo/eslint-scope-5-internals": { "version": "5.1.1-v1", + "resolved": "https://registry.npmjs.org/@nicolo-ribaudo/eslint-scope-5-internals/-/eslint-scope-5-internals-5.1.1-v1.tgz", + "integrity": "sha512-54/JRvkLIzzDWshCWfuhadfrfZVPiElY8Fcgmg1HroEly/EDSszzhBAsarCux+D/kOslTRquNzuyGSmUSTTHGg==", "dev": true, - "license": "MIT", "dependencies": { "eslint-scope": "5.1.1" } }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "2.0.5", "run-parallel": "^1.1.9" @@ -16512,16 +5288,18 @@ }, "node_modules/@nodelib/fs.stat": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/@nodelib/fs.walk": { "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.scandir": "2.1.5", "fastq": "^1.6.0" @@ -16532,8 +5310,9 @@ }, "node_modules/@npmcli/fs": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-2.1.2.tgz", + "integrity": "sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==", "dev": true, - "license": "ISC", "dependencies": { "@gar/promisify": "^1.1.3", "semver": "^7.3.5" @@ -16544,8 +5323,10 @@ }, "node_modules/@npmcli/move-file": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-2.0.1.tgz", + "integrity": "sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==", + "deprecated": "This functionality has been moved to @npmcli/fs", "dev": true, - "license": "MIT", "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -16565,12 +5346,14 @@ }, "node_modules/@plotly/d3": { "version": "3.8.1", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@plotly/d3/-/d3-3.8.1.tgz", + "integrity": "sha512-x49ThEu1FRA00kTso4Jdfyf2byaCPLBGmLjAYQz5OzaPyLUhHesX3/Nfv2OHEhynhdy2UB39DLXq6thYe2L2kg==", "peer": true }, "node_modules/@plotly/d3-sankey": { "version": "0.7.2", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@plotly/d3-sankey/-/d3-sankey-0.7.2.tgz", + "integrity": "sha512-2jdVos1N3mMp3QW0k2q1ph7Gd6j5PY1YihBrwpkFnKqO+cqtZq3AdEYUeSGXMeLsBDQYiqTVcihYfk8vr5tqhw==", "peer": true, "dependencies": { "d3-array": "1", @@ -16580,7 +5363,8 @@ }, "node_modules/@plotly/d3-sankey-circular": { "version": "0.33.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@plotly/d3-sankey-circular/-/d3-sankey-circular-0.33.1.tgz", + "integrity": "sha512-FgBV1HEvCr3DV7RHhDsPXyryknucxtfnLwPtCKKxdolKyTFYoLX/ibEfX39iFYIL7DYbVeRtP43dbFcrHNE+KQ==", "peer": true, "dependencies": { "d3-array": "^1.2.1", @@ -16591,7 +5375,8 @@ }, "node_modules/@plotly/point-cluster": { "version": "3.1.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@plotly/point-cluster/-/point-cluster-3.1.9.tgz", + "integrity": "sha512-MwaI6g9scKf68Orpr1pHZ597pYx9uP8UEFXLPbsCmuw3a84obwz6pnMXGc90VhgDNeNiLEdlmuK7CPo+5PIxXw==", "peer": true, "dependencies": { "array-bounds": "^1.0.1", @@ -16608,8 +5393,9 @@ }, "node_modules/@pmmmwh/react-refresh-webpack-plugin": { "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, - "license": "MIT", "dependencies": { "ansi-html-community": "^0.0.8", "common-path-prefix": "^3.0.0", @@ -16657,7 +5443,8 @@ }, "node_modules/@popperjs/core": { "version": "2.11.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@popperjs/core/-/core-2.11.8.tgz", + "integrity": "sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==", "funding": { "type": "opencollective", "url": "https://opencollective.com/popperjs" @@ -16665,7 +5452,8 @@ }, "node_modules/@radix-ui/colors": { "version": "0.1.9", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@radix-ui/colors/-/colors-0.1.9.tgz", + "integrity": "sha512-Vxq944ErPJsdVepjEUhOLO9ApUVOocA63knc+V2TkJ09D/AVOjiMIgkca/7VoYgODcla0qbSIBjje0SMfZMbAw==" }, "node_modules/@radix-ui/number": { "version": "1.0.1", @@ -16676,14 +5464,16 @@ }, "node_modules/@radix-ui/primitive": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@radix-ui/primitive/-/primitive-1.0.1.tgz", + "integrity": "sha512-yQ8oGX2GVsEYMWGxcovu1uGWPCxV5BFfeeYxqPmuAzUyLT9qmaMXSAhXpb0WrspIeqYzdJpkh2vHModJPgRIaw==", "dependencies": { "@babel/runtime": "^7.13.10" } }, "node_modules/@radix-ui/react-arrow": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@radix-ui/react-arrow/-/react-arrow-1.0.3.tgz", + "integrity": "sha512-wSP+pHsB/jQRaL6voubsQ/ZlrGBHHrOjmBnr19hxYgtS0WvAFwZhK2WP/YY5yF9uKECCEEDGxuLxq1NBK51wFA==", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/react-primitive": "1.0.3" @@ -16778,7 +5568,8 @@ }, "node_modules/@radix-ui/react-dismissable-layer": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@radix-ui/react-dismissable-layer/-/react-dismissable-layer-1.0.5.tgz", + "integrity": "sha512-aJeDjQhywg9LBu2t/At58hCvr7pEm0o2Ke1x33B+MhjNmmZ17sy4KImo0KPLgsnc/zN7GPdce8Cnn0SWvwZO7g==", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/primitive": "1.0.1", @@ -16804,7 +5595,8 @@ }, "node_modules/@radix-ui/react-focus-guards": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-guards/-/react-focus-guards-1.0.1.tgz", + "integrity": "sha512-Rect2dWbQ8waGzhMavsIbmSVCgYxkXLxxR3ZvCX79JOglzdEy4JXMb98lq4hPxUbLr77nP0UOGf4rcMU+s1pUA==", "dependencies": { "@babel/runtime": "^7.13.10" }, @@ -16820,7 +5612,8 @@ }, "node_modules/@radix-ui/react-focus-scope": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@radix-ui/react-focus-scope/-/react-focus-scope-1.0.4.tgz", + "integrity": "sha512-sL04Mgvf+FmyvZeYfNu1EPAaaxD+aw7cYeIB9L9Fvq8+urhltTRaEo5ysKOpHuKPclsZcSUMKlN05x4u+CINpA==", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/react-compose-refs": "1.0.1", @@ -16844,7 +5637,8 @@ }, "node_modules/@radix-ui/react-id": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@radix-ui/react-id/-/react-id-1.0.1.tgz", + "integrity": "sha512-tI7sT/kqYp8p96yGWY1OAnLHrqDgzHefRBKQ2YAkBS5ja7QLcZ9Z/uY7bEjPUatf8RomoXM8/1sMj1IJaE5UzQ==", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/react-use-layout-effect": "1.0.1" @@ -16861,7 +5655,8 @@ }, "node_modules/@radix-ui/react-popover": { "version": "1.0.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popover/-/react-popover-1.0.7.tgz", + "integrity": "sha512-shtvVnlsxT6faMnK/a7n0wptwBD23xc1Z5mdrtKLwVEfsEMXodS0r5s0/g5P0hX//EKYZS2sxUjqfzlg52ZSnQ==", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/primitive": "1.0.1", @@ -16897,7 +5692,8 @@ }, "node_modules/@radix-ui/react-popper": { "version": "1.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@radix-ui/react-popper/-/react-popper-1.1.3.tgz", + "integrity": "sha512-cKpopj/5RHZWjrbF2846jBNacjQVwkP068DfmgrNJXpvVWrOvlAmE9xSiy5OqeE+Gi8D9fP+oDhUnPqNMY8/5w==", "dependencies": { "@babel/runtime": "^7.13.10", "@floating-ui/react-dom": "^2.0.0", @@ -16928,7 +5724,8 @@ }, "node_modules/@radix-ui/react-portal": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@radix-ui/react-portal/-/react-portal-1.0.4.tgz", + "integrity": "sha512-Qki+C/EuGUVCQTOTD5vzJzJuMUlewbzuKyUy+/iHM2uwGiru9gZeBJtHAPKAEkB5KWGi9mP/CHKcY0wt1aW45Q==", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/react-primitive": "1.0.3" @@ -16950,7 +5747,8 @@ }, "node_modules/@radix-ui/react-presence": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@radix-ui/react-presence/-/react-presence-1.0.1.tgz", + "integrity": "sha512-UXLW4UAbIY5ZjcvzjfRFo5gxva8QirC9hF7wRE4U5gz+TP0DbRk+//qyuAQ1McDxBt1xNMBTaciFGvEmJvAZCg==", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/react-compose-refs": "1.0.1", @@ -16973,7 +5771,8 @@ }, "node_modules/@radix-ui/react-primitive": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@radix-ui/react-primitive/-/react-primitive-1.0.3.tgz", + "integrity": "sha512-yi58uVyoAcK/Nq1inRY56ZSjKypBNKTa/1mcL8qdl6oJeEaDbOldlzrGn7P6Q3Id5d+SYNGc5AJgc4vGhjs5+g==", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/react-slot": "1.0.2" @@ -17175,6 +5974,8 @@ }, "node_modules/@radix-ui/react-separator": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/@radix-ui/react-separator/-/react-separator-1.0.3.tgz", + "integrity": "sha512-itYmTy/kokS21aiV5+Z56MZB54KrhPgn6eHDKkFeOLR34HMN2s8PaN47qZZAGnvupcjxHaFZnW4pQEh0BvvVuw==", "dev": true, "license": "MIT", "dependencies": { @@ -17200,7 +6001,6 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/@radix-ui/react-slider/-/react-slider-1.1.2.tgz", "integrity": "sha512-NKs15MJylfzVsCagVSWKhGGLNR1W9qWs+HtgbmjjVUB3B9+lb3PYoXxVju3kOrpf0VKyVCtZp+iTwVoqpa1Chw==", - "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/number": "1.0.1", @@ -17232,7 +6032,8 @@ }, "node_modules/@radix-ui/react-slot": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@radix-ui/react-slot/-/react-slot-1.0.2.tgz", + "integrity": "sha512-YeTpuq4deV+6DusvVUW4ivBgnkHwECUu0BiN43L5UCDFgdhsRUWAghhTF5MbvNTPzmiFOx90asDSUjWuCNapwg==", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/react-compose-refs": "1.0.1" @@ -17301,8 +6102,9 @@ }, "node_modules/@radix-ui/react-toolbar": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/@radix-ui/react-toolbar/-/react-toolbar-1.0.4.tgz", + "integrity": "sha512-tBgmM/O7a07xbaEkYJWYTXkIdU/1pW4/KZORR43toC/4XWyBCURK0ei9kMUdp+gTPPKBgYLxXmRSH1EVcIDp8Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/primitive": "1.0.1", @@ -17330,7 +6132,8 @@ }, "node_modules/@radix-ui/react-use-callback-ref": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-callback-ref/-/react-use-callback-ref-1.0.1.tgz", + "integrity": "sha512-D94LjX4Sp0xJFVaoQOd3OO9k7tpBYNOXdVhkltUbGv2Qb9OXdrg/CpsjlZv7ia14Sylv398LswWBVVu5nqKzAQ==", "dependencies": { "@babel/runtime": "^7.13.10" }, @@ -17346,7 +6149,8 @@ }, "node_modules/@radix-ui/react-use-controllable-state": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-controllable-state/-/react-use-controllable-state-1.0.1.tgz", + "integrity": "sha512-Svl5GY5FQeN758fWKrjM6Qb7asvXeiZltlT4U2gVfl8Gx5UAv2sMR0LWo8yhsIZh2oQ0eFdZ59aoOOMV7b47VA==", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/react-use-callback-ref": "1.0.1" @@ -17363,7 +6167,8 @@ }, "node_modules/@radix-ui/react-use-escape-keydown": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-escape-keydown/-/react-use-escape-keydown-1.0.3.tgz", + "integrity": "sha512-vyL82j40hcFicA+M4Ex7hVkB9vHgSse1ZWomAqV2Je3RleKGO5iM8KMOEtfoSB0PnIelMd2lATjTGMYqN5ylTg==", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/react-use-callback-ref": "1.0.1" @@ -17380,7 +6185,8 @@ }, "node_modules/@radix-ui/react-use-layout-effect": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-layout-effect/-/react-use-layout-effect-1.0.1.tgz", + "integrity": "sha512-v/5RegiJWYdoCvMnITBkNNx6bCj20fiaJnWtRkU18yITptraXjffz5Qbn05uOiQnOvi+dbkznkoaMltz1GnszQ==", "dependencies": { "@babel/runtime": "^7.13.10" }, @@ -17412,7 +6218,8 @@ }, "node_modules/@radix-ui/react-use-rect": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-rect/-/react-use-rect-1.0.1.tgz", + "integrity": "sha512-Cq5DLuSiuYVKNU8orzJMbl15TXilTnJKUCltMVQg53BQOF1/C5toAaGrowkgksdBQ9H+SRL23g0HDmg9tvmxXw==", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/rect": "1.0.1" @@ -17429,7 +6236,8 @@ }, "node_modules/@radix-ui/react-use-size": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@radix-ui/react-use-size/-/react-use-size-1.0.1.tgz", + "integrity": "sha512-ibay+VqrgcaI6veAojjofPATwledXiSmX+C0KrBk/xgpX9rBzPV3OsfwlhQdUOFbh+LKQorLYT+xTXW9V8yd0g==", "dependencies": { "@babel/runtime": "^7.13.10", "@radix-ui/react-use-layout-effect": "1.0.1" @@ -17469,14 +6277,16 @@ }, "node_modules/@radix-ui/rect": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@radix-ui/rect/-/rect-1.0.1.tgz", + "integrity": "sha512-fyrgCaedtvMg9NK3en0pnOYJdtfwxUcNolezkNPUsoX57X8oQk+NkqcvzHXD2uKNij6GXmWU9NDru2IWjrO4BQ==", "dependencies": { "@babel/runtime": "^7.13.10" } }, "node_modules/@react-aria/ssr": { "version": "3.9.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@react-aria/ssr/-/ssr-3.9.0.tgz", + "integrity": "sha512-Bz6BqP6ZorCme9tSWHZVmmY+s7AU8l6Vl2NUYmBzezD//fVHHfFo4lFBn5tBuAaJEm3AuCLaJQ6H2qhxNSb7zg==", "dependencies": { "@swc/helpers": "^0.5.0" }, @@ -17489,19 +6299,23 @@ }, "node_modules/@react-dnd/asap": { "version": "5.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@react-dnd/asap/-/asap-5.0.2.tgz", + "integrity": "sha512-WLyfoHvxhs0V9U+GTsGilGgf2QsPl6ZZ44fnv0/b8T3nQyvzxidxsg/ZltbWssbsRDlYW8UKSQMTGotuTotZ6A==" }, "node_modules/@react-dnd/invariant": { "version": "4.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@react-dnd/invariant/-/invariant-4.0.2.tgz", + "integrity": "sha512-xKCTqAK/FFauOM9Ta2pswIyT3D8AQlfrYdOi/toTPEhqCuAs1v5tcJ3Y08Izh1cJ5Jchwy9SeAXmMg6zrKs2iw==" }, "node_modules/@react-dnd/shallowequal": { "version": "4.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@react-dnd/shallowequal/-/shallowequal-4.0.2.tgz", + "integrity": "sha512-/RVXdLvJxLg4QKvMoM5WlwNR9ViO9z8B/qPcc+C0Sa/teJY7QG7kJ441DwzOjMYEY7GmU4dj5EcGHIkKZiQZCA==" }, "node_modules/@react-google-maps/api": { "version": "2.19.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-google-maps/api/-/api-2.19.2.tgz", + "integrity": "sha512-Vt57XWzCKfsUjKOmFUl2erVVfOePkPK5OigF/f+q7UuV/Nm9KDDy1PMFBx+wNahEqOd6a32BxfsykEhBnbU9wQ==", "dependencies": { "@googlemaps/js-api-loader": "1.16.2", "@googlemaps/markerclusterer": "2.3.2", @@ -17517,15 +6331,18 @@ }, "node_modules/@react-google-maps/infobox": { "version": "2.19.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@react-google-maps/infobox/-/infobox-2.19.2.tgz", + "integrity": "sha512-6wvBqeJsQ/eFSvoxg+9VoncQvNoVCdmxzxRpLvmjPD+nNC6mHM0vJH1xSqaKijkMrfLJT0nfkTGpovrF896jwg==" }, "node_modules/@react-google-maps/marker-clusterer": { "version": "2.19.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@react-google-maps/marker-clusterer/-/marker-clusterer-2.19.2.tgz", + "integrity": "sha512-x9ibmsP0ZVqzyCo1Pitbw+4b6iEXRw/r1TCy3vOUR3eKrzWLnHYZMR325BkZW2r8fnuWE/V3Fp4QZOP9qYORCw==" }, "node_modules/@react-native-community/cli": { "version": "11.3.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-native-community/cli/-/cli-11.3.10.tgz", + "integrity": "sha512-bIx0t5s9ewH1PlcEcuQUD+UnVrCjPGAfjhVR5Gew565X60nE+GTIHRn70nMv9G4he/amBF+Z+vf5t8SNZEWMwg==", "peer": true, "dependencies": { "@react-native-community/cli-clean": "11.3.10", @@ -17555,7 +6372,8 @@ }, "node_modules/@react-native-community/cli-clean": { "version": "11.3.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-clean/-/cli-clean-11.3.10.tgz", + "integrity": "sha512-g6QjW+DSqoWRHzmIQW3AH22k1AnynWuOdy2YPwYEGgPddTeXZtJphIpEVwDOiC0L4mZv2VmiX33/cGNUwO0cIA==", "peer": true, "dependencies": { "@react-native-community/cli-tools": "11.3.10", @@ -17566,7 +6384,8 @@ }, "node_modules/@react-native-community/cli-clean/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "peer": true, "dependencies": { "color-convert": "^2.0.1" @@ -17580,7 +6399,8 @@ }, "node_modules/@react-native-community/cli-clean/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "peer": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -17595,7 +6415,8 @@ }, "node_modules/@react-native-community/cli-clean/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "peer": true, "engines": { "node": ">=8" @@ -17603,7 +6424,8 @@ }, "node_modules/@react-native-community/cli-clean/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -17614,7 +6436,8 @@ }, "node_modules/@react-native-community/cli-config": { "version": "11.3.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-config/-/cli-config-11.3.10.tgz", + "integrity": "sha512-YYu14nm1JYLS6mDRBz78+zDdSFudLBFpPkhkOoj4LuBhNForQBIqFFHzQbd9/gcguJxfW3vlYSnudfaUI7oGLg==", "peer": true, "dependencies": { "@react-native-community/cli-tools": "11.3.10", @@ -17627,7 +6450,8 @@ }, "node_modules/@react-native-community/cli-config/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "peer": true, "dependencies": { "color-convert": "^2.0.1" @@ -17641,7 +6465,8 @@ }, "node_modules/@react-native-community/cli-config/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "peer": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -17656,7 +6481,8 @@ }, "node_modules/@react-native-community/cli-config/node_modules/cosmiconfig": { "version": "5.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "peer": true, "dependencies": { "import-fresh": "^2.0.0", @@ -17670,7 +6496,8 @@ }, "node_modules/@react-native-community/cli-config/node_modules/glob": { "version": "7.2.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "peer": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -17689,7 +6516,8 @@ }, "node_modules/@react-native-community/cli-config/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "peer": true, "engines": { "node": ">=8" @@ -17697,7 +6525,8 @@ }, "node_modules/@react-native-community/cli-config/node_modules/import-fresh": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", "peer": true, "dependencies": { "caller-path": "^2.0.0", @@ -17709,7 +6538,8 @@ }, "node_modules/@react-native-community/cli-config/node_modules/parse-json": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "peer": true, "dependencies": { "error-ex": "^1.3.1", @@ -17721,7 +6551,8 @@ }, "node_modules/@react-native-community/cli-config/node_modules/resolve-from": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", "peer": true, "engines": { "node": ">=4" @@ -17729,7 +6560,8 @@ }, "node_modules/@react-native-community/cli-config/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -17740,7 +6572,8 @@ }, "node_modules/@react-native-community/cli-debugger-ui": { "version": "11.3.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-debugger-ui/-/cli-debugger-ui-11.3.10.tgz", + "integrity": "sha512-kyitGV3RsjlXIioq9lsuawha2GUBPCTAyXV6EBlm3qlyF3dMniB3twEvz+fIOid/e1ZeucH3Tzy5G3qcP8yWoA==", "peer": true, "dependencies": { "serve-static": "^1.13.1" @@ -17748,7 +6581,8 @@ }, "node_modules/@react-native-community/cli-doctor": { "version": "11.3.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-doctor/-/cli-doctor-11.3.10.tgz", + "integrity": "sha512-DpMsfCWKZ15L9nFK/SyDvpl5v6MjV+arMHMC1i8kR+DOmf2xWmp/pgMywKk0/u50yGB9GwxBHt3i/S/IMK5Ylg==", "peer": true, "dependencies": { "@react-native-community/cli-config": "11.3.10", @@ -17773,7 +6607,8 @@ }, "node_modules/@react-native-community/cli-doctor/node_modules/ansi-regex": { "version": "4.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "peer": true, "engines": { "node": ">=6" @@ -17781,7 +6616,8 @@ }, "node_modules/@react-native-community/cli-doctor/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "peer": true, "dependencies": { "color-convert": "^2.0.1" @@ -17795,7 +6631,8 @@ }, "node_modules/@react-native-community/cli-doctor/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "peer": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -17810,7 +6647,8 @@ }, "node_modules/@react-native-community/cli-doctor/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "peer": true, "engines": { "node": ">=8" @@ -17818,7 +6656,8 @@ }, "node_modules/@react-native-community/cli-doctor/node_modules/strip-ansi": { "version": "5.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "peer": true, "dependencies": { "ansi-regex": "^4.1.0" @@ -17829,7 +6668,8 @@ }, "node_modules/@react-native-community/cli-doctor/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -17840,7 +6680,8 @@ }, "node_modules/@react-native-community/cli-doctor/node_modules/yaml": { "version": "2.3.4", - "license": "ISC", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.4.tgz", + "integrity": "sha512-8aAvwVUSHpfEqTQ4w/KMlf3HcRdt50E5ODIQJBw1fQ5RL34xabzxtUlzTXVqc4rkZsPbvrXKWnABCD7kWSmocA==", "peer": true, "engines": { "node": ">= 14" @@ -17848,7 +6689,8 @@ }, "node_modules/@react-native-community/cli-hermes": { "version": "11.3.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-hermes/-/cli-hermes-11.3.10.tgz", + "integrity": "sha512-vqINuzAlcHS9ImNwJtT43N7kfBQ7ro9A8O1Gpc5TQ0A8V36yGG8eoCHeauayklVVgMZpZL6f6mcoLLr9IOgBZQ==", "peer": true, "dependencies": { "@react-native-community/cli-platform-android": "11.3.10", @@ -17860,7 +6702,8 @@ }, "node_modules/@react-native-community/cli-hermes/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "peer": true, "dependencies": { "color-convert": "^2.0.1" @@ -17874,7 +6717,8 @@ }, "node_modules/@react-native-community/cli-hermes/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "peer": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -17889,7 +6733,8 @@ }, "node_modules/@react-native-community/cli-hermes/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "peer": true, "engines": { "node": ">=8" @@ -17897,7 +6742,8 @@ }, "node_modules/@react-native-community/cli-hermes/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -17908,7 +6754,8 @@ }, "node_modules/@react-native-community/cli-platform-android": { "version": "11.3.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-android/-/cli-platform-android-11.3.10.tgz", + "integrity": "sha512-RGu9KuDIXnrcNkacSHj5ETTQtp/D/835L6veE2jMigO21p//gnKAjw3AVLCysGr8YXYfThF8OSOALrwNc94puQ==", "peer": true, "dependencies": { "@react-native-community/cli-tools": "11.3.10", @@ -17920,7 +6767,8 @@ }, "node_modules/@react-native-community/cli-platform-android/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "peer": true, "dependencies": { "color-convert": "^2.0.1" @@ -17934,7 +6782,8 @@ }, "node_modules/@react-native-community/cli-platform-android/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "peer": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -17949,7 +6798,8 @@ }, "node_modules/@react-native-community/cli-platform-android/node_modules/glob": { "version": "7.2.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "peer": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -17968,7 +6818,8 @@ }, "node_modules/@react-native-community/cli-platform-android/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "peer": true, "engines": { "node": ">=8" @@ -17976,7 +6827,8 @@ }, "node_modules/@react-native-community/cli-platform-android/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -17987,7 +6839,8 @@ }, "node_modules/@react-native-community/cli-platform-ios": { "version": "11.3.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-platform-ios/-/cli-platform-ios-11.3.10.tgz", + "integrity": "sha512-JjduMrBM567/j4Hvjsff77dGSLMA0+p9rr0nShlgnKPcc+0J4TDy0hgWpUceM7OG00AdDjpetAPupz0kkAh4cQ==", "peer": true, "dependencies": { "@react-native-community/cli-tools": "11.3.10", @@ -18000,7 +6853,8 @@ }, "node_modules/@react-native-community/cli-platform-ios/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "peer": true, "dependencies": { "color-convert": "^2.0.1" @@ -18014,7 +6868,8 @@ }, "node_modules/@react-native-community/cli-platform-ios/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "peer": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -18029,7 +6884,8 @@ }, "node_modules/@react-native-community/cli-platform-ios/node_modules/glob": { "version": "7.2.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "peer": true, "dependencies": { "fs.realpath": "^1.0.0", @@ -18048,7 +6904,8 @@ }, "node_modules/@react-native-community/cli-platform-ios/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "peer": true, "engines": { "node": ">=8" @@ -18056,7 +6913,8 @@ }, "node_modules/@react-native-community/cli-platform-ios/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -18067,7 +6925,8 @@ }, "node_modules/@react-native-community/cli-plugin-metro": { "version": "11.3.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-plugin-metro/-/cli-plugin-metro-11.3.10.tgz", + "integrity": "sha512-ZYAc5Hc+QVqJgj1XFbpKnIPbSJ9xKcBnfQrRhR+jFyt2DWx85u4bbzY1GSVc/USs0UbSUXv4dqPbnmOJz52EYQ==", "peer": true, "dependencies": { "@react-native-community/cli-server-api": "11.3.10", @@ -18085,7 +6944,8 @@ }, "node_modules/@react-native-community/cli-plugin-metro/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "peer": true, "dependencies": { "color-convert": "^2.0.1" @@ -18099,7 +6959,8 @@ }, "node_modules/@react-native-community/cli-plugin-metro/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "peer": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -18114,7 +6975,8 @@ }, "node_modules/@react-native-community/cli-plugin-metro/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "peer": true, "engines": { "node": ">=8" @@ -18122,7 +6984,8 @@ }, "node_modules/@react-native-community/cli-plugin-metro/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -18133,7 +6996,8 @@ }, "node_modules/@react-native-community/cli-server-api": { "version": "11.3.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-server-api/-/cli-server-api-11.3.10.tgz", + "integrity": "sha512-WEwHWIpqx3gA6Da+lrmq8+z78E1XbxxjBlvHAXevhjJj42N4SO417eZiiUVrFzEFVVJSUee9n9aRa0kUR+0/2w==", "peer": true, "dependencies": { "@react-native-community/cli-debugger-ui": "11.3.10", @@ -18149,7 +7013,8 @@ }, "node_modules/@react-native-community/cli-server-api/node_modules/@jest/types": { "version": "26.6.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "peer": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", @@ -18164,7 +7029,8 @@ }, "node_modules/@react-native-community/cli-server-api/node_modules/@types/yargs": { "version": "15.0.19", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", "peer": true, "dependencies": { "@types/yargs-parser": "*" @@ -18172,7 +7038,8 @@ }, "node_modules/@react-native-community/cli-server-api/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "peer": true, "dependencies": { "color-convert": "^2.0.1" @@ -18186,7 +7053,8 @@ }, "node_modules/@react-native-community/cli-server-api/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "peer": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -18201,7 +7069,8 @@ }, "node_modules/@react-native-community/cli-server-api/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "peer": true, "engines": { "node": ">=8" @@ -18209,7 +7078,8 @@ }, "node_modules/@react-native-community/cli-server-api/node_modules/pretty-format": { "version": "26.6.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", "peer": true, "dependencies": { "@jest/types": "^26.6.2", @@ -18223,12 +7093,14 @@ }, "node_modules/@react-native-community/cli-server-api/node_modules/react-is": { "version": "17.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "peer": true }, "node_modules/@react-native-community/cli-server-api/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -18239,7 +7111,8 @@ }, "node_modules/@react-native-community/cli-server-api/node_modules/ws": { "version": "7.5.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "peer": true, "engines": { "node": ">=8.3.0" @@ -18259,7 +7132,8 @@ }, "node_modules/@react-native-community/cli-tools": { "version": "11.3.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-tools/-/cli-tools-11.3.10.tgz", + "integrity": "sha512-4kCuCwVcGagSrNg9vxMNVhynwpByuC/J5UnKGEet3HuqmoDhQW15m18fJXiehA8J+u9WBvHduefy9nZxO0C06Q==", "peer": true, "dependencies": { "appdirsjs": "^1.2.4", @@ -18275,7 +7149,8 @@ }, "node_modules/@react-native-community/cli-tools/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "peer": true, "dependencies": { "color-convert": "^2.0.1" @@ -18289,7 +7164,8 @@ }, "node_modules/@react-native-community/cli-tools/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "peer": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -18304,7 +7180,8 @@ }, "node_modules/@react-native-community/cli-tools/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "peer": true, "engines": { "node": ">=8" @@ -18312,7 +7189,8 @@ }, "node_modules/@react-native-community/cli-tools/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -18323,7 +7201,8 @@ }, "node_modules/@react-native-community/cli-types": { "version": "11.3.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-native-community/cli-types/-/cli-types-11.3.10.tgz", + "integrity": "sha512-0FHK/JE7bTn0x1y8Lk5m3RISDHIBQqWLltO2Mf7YQ6cAeKs8iNOJOeKaHJEY+ohjsOyCziw+XSC4cY57dQrwNA==", "peer": true, "dependencies": { "joi": "^17.2.1" @@ -18331,7 +7210,8 @@ }, "node_modules/@react-native-community/cli/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "peer": true, "dependencies": { "color-convert": "^2.0.1" @@ -18345,7 +7225,8 @@ }, "node_modules/@react-native-community/cli/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "peer": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -18360,7 +7241,8 @@ }, "node_modules/@react-native-community/cli/node_modules/commander": { "version": "9.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/commander/-/commander-9.5.0.tgz", + "integrity": "sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==", "peer": true, "engines": { "node": "^12.20.0 || >=14" @@ -18368,7 +7250,8 @@ }, "node_modules/@react-native-community/cli/node_modules/find-up": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "peer": true, "dependencies": { "locate-path": "^5.0.0", @@ -18380,7 +7263,8 @@ }, "node_modules/@react-native-community/cli/node_modules/fs-extra": { "version": "8.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", "peer": true, "dependencies": { "graceful-fs": "^4.2.0", @@ -18393,7 +7277,8 @@ }, "node_modules/@react-native-community/cli/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "peer": true, "engines": { "node": ">=8" @@ -18401,7 +7286,8 @@ }, "node_modules/@react-native-community/cli/node_modules/jsonfile": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==", "peer": true, "optionalDependencies": { "graceful-fs": "^4.1.6" @@ -18409,7 +7295,8 @@ }, "node_modules/@react-native-community/cli/node_modules/locate-path": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "peer": true, "dependencies": { "p-locate": "^4.1.0" @@ -18420,7 +7307,8 @@ }, "node_modules/@react-native-community/cli/node_modules/p-limit": { "version": "2.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "peer": true, "dependencies": { "p-try": "^2.0.0" @@ -18434,7 +7322,8 @@ }, "node_modules/@react-native-community/cli/node_modules/p-locate": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "peer": true, "dependencies": { "p-limit": "^2.2.0" @@ -18445,7 +7334,8 @@ }, "node_modules/@react-native-community/cli/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -18456,7 +7346,8 @@ }, "node_modules/@react-native-community/cli/node_modules/universalify": { "version": "0.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", "peer": true, "engines": { "node": ">= 4.0.0" @@ -18464,12 +7355,14 @@ }, "node_modules/@react-native/assets-registry": { "version": "0.72.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-native/assets-registry/-/assets-registry-0.72.0.tgz", + "integrity": "sha512-Im93xRJuHHxb1wniGhBMsxLwcfzdYreSZVQGDoMJgkd6+Iky61LInGEHnQCTN0fKNYF1Dvcofb4uMmE1RQHXHQ==", "peer": true }, "node_modules/@react-native/codegen": { "version": "0.72.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-native/codegen/-/codegen-0.72.7.tgz", + "integrity": "sha512-O7xNcGeXGbY+VoqBGNlZ3O05gxfATlwE1Q1qQf5E38dK+tXn5BY4u0jaQ9DPjfE8pBba8g/BYI1N44lynidMtg==", "peer": true, "dependencies": { "@babel/parser": "^7.20.0", @@ -18483,22 +7376,26 @@ }, "node_modules/@react-native/gradle-plugin": { "version": "0.72.11", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-native/gradle-plugin/-/gradle-plugin-0.72.11.tgz", + "integrity": "sha512-P9iRnxiR2w7EHcZ0mJ+fmbPzMby77ZzV6y9sJI3lVLJzF7TLSdbwcQyD3lwMsiL+q5lKUHoZJS4sYmih+P2HXw==", "peer": true }, "node_modules/@react-native/js-polyfills": { "version": "0.72.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-native/js-polyfills/-/js-polyfills-0.72.1.tgz", + "integrity": "sha512-cRPZh2rBswFnGt5X5EUEPs0r+pAsXxYsifv/fgy9ZLQokuT52bPH+9xjDR+7TafRua5CttGW83wP4TntRcWNDA==", "peer": true }, "node_modules/@react-native/normalize-colors": { "version": "0.72.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-native/normalize-colors/-/normalize-colors-0.72.0.tgz", + "integrity": "sha512-285lfdqSXaqKuBbbtP9qL2tDrfxdOFtIMvkKadtleRQkdOxx+uzGvFr82KHmc/sSiMtfXGp7JnFYWVh4sFl7Yw==", "peer": true }, "node_modules/@react-native/virtualized-lists": { "version": "0.72.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-native/virtualized-lists/-/virtualized-lists-0.72.8.tgz", + "integrity": "sha512-J3Q4Bkuo99k7mu+jPS9gSUSgq+lLRSI/+ahXNwV92XgJ/8UgOTxu2LPwhJnBk/sQKxq7E8WkZBnBiozukQMqrw==", "peer": true, "dependencies": { "invariant": "^2.2.4", @@ -18510,7 +7407,8 @@ }, "node_modules/@react-spring/animated": { "version": "9.7.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-spring/animated/-/animated-9.7.3.tgz", + "integrity": "sha512-5CWeNJt9pNgyvuSzQH+uy2pvTg8Y4/OisoscZIR8/ZNLIOI+CatFBhGZpDGTF/OzdNFsAoGk3wiUYTwoJ0YIvw==", "dependencies": { "@react-spring/shared": "~9.7.3", "@react-spring/types": "~9.7.3" @@ -18521,7 +7419,8 @@ }, "node_modules/@react-spring/core": { "version": "9.7.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-spring/core/-/core-9.7.3.tgz", + "integrity": "sha512-IqFdPVf3ZOC1Cx7+M0cXf4odNLxDC+n7IN3MDcVCTIOSBfqEcBebSv+vlY5AhM0zw05PDbjKrNmBpzv/AqpjnQ==", "dependencies": { "@react-spring/animated": "~9.7.3", "@react-spring/shared": "~9.7.3", @@ -18537,7 +7436,8 @@ }, "node_modules/@react-spring/konva": { "version": "9.7.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-spring/konva/-/konva-9.7.3.tgz", + "integrity": "sha512-R9sY6SiPGYqz1383P5qppg5z57YfChVknOC1UxxaGxpw+WiZa8fZ4zmZobslrw+os3/+HAXZv8O+EvU/nQpf7g==", "dependencies": { "@react-spring/animated": "~9.7.3", "@react-spring/core": "~9.7.3", @@ -18552,7 +7452,8 @@ }, "node_modules/@react-spring/native": { "version": "9.7.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-spring/native/-/native-9.7.3.tgz", + "integrity": "sha512-4mpxX3FuEBCUT6ae2fjhxcJW6bhr2FBwFf274eXB7n+U30Gdg8Wo2qYwcUnmiAA0S3dvP8vLTazx3+CYWFShnA==", "dependencies": { "@react-spring/animated": "~9.7.3", "@react-spring/core": "~9.7.3", @@ -18566,7 +7467,8 @@ }, "node_modules/@react-spring/shared": { "version": "9.7.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-spring/shared/-/shared-9.7.3.tgz", + "integrity": "sha512-NEopD+9S5xYyQ0pGtioacLhL2luflh6HACSSDUZOwLHoxA5eku1UPuqcJqjwSD6luKjjLfiLOspxo43FUHKKSA==", "dependencies": { "@react-spring/types": "~9.7.3" }, @@ -18576,7 +7478,8 @@ }, "node_modules/@react-spring/three": { "version": "9.7.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-spring/three/-/three-9.7.3.tgz", + "integrity": "sha512-Q1p512CqUlmMK8UMBF/Rj79qndhOWq4XUTayxMP9S892jiXzWQuj+xC3Xvm59DP/D4JXusXpxxqfgoH+hmOktA==", "dependencies": { "@react-spring/animated": "~9.7.3", "@react-spring/core": "~9.7.3", @@ -18591,11 +7494,13 @@ }, "node_modules/@react-spring/types": { "version": "9.7.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@react-spring/types/-/types-9.7.3.tgz", + "integrity": "sha512-Kpx/fQ/ZFX31OtlqVEFfgaD1ACzul4NksrvIgYfIFq9JpDHFwQkMVZ10tbo0FU/grje4rcL4EIrjekl3kYwgWw==" }, "node_modules/@react-spring/web": { "version": "9.7.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-spring/web/-/web-9.7.3.tgz", + "integrity": "sha512-BXt6BpS9aJL/QdVqEIX9YoUy8CE6TJrU0mNCqSoxdXlIeNcEBWOfIyE6B14ENNsyQKS3wOWkiJfco0tCr/9tUg==", "dependencies": { "@react-spring/animated": "~9.7.3", "@react-spring/core": "~9.7.3", @@ -18609,7 +7514,8 @@ }, "node_modules/@react-spring/zdog": { "version": "9.7.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-spring/zdog/-/zdog-9.7.3.tgz", + "integrity": "sha512-L+yK/1PvNi9n8cldiJ309k4LdxcPkeWE0W18l1zrP1IBIyd5NB5EPA8DMsGr9gtNnnIujtEzZk+4JIOjT8u/tw==", "dependencies": { "@react-spring/animated": "~9.7.3", "@react-spring/core": "~9.7.3", @@ -18625,7 +7531,8 @@ }, "node_modules/@react-three/fiber": { "version": "8.15.11", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@react-three/fiber/-/fiber-8.15.11.tgz", + "integrity": "sha512-jOJjrjVMBJQwIK6Uirc3bErUCTiclbS2alJG1eU8pV1jIwDZwPwcfHzSi2TautxoA4ddMt5DmlpatK4rIqM4jA==", "peer": true, "dependencies": { "@babel/runtime": "^7.17.8", @@ -18673,7 +7580,8 @@ }, "node_modules/@react-three/fiber/node_modules/scheduler": { "version": "0.21.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", + "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", "peer": true, "dependencies": { "loose-envify": "^1.1.0" @@ -18681,7 +7589,8 @@ }, "node_modules/@react-three/fiber/node_modules/zustand": { "version": "3.7.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-3.7.2.tgz", + "integrity": "sha512-PIJDIZKtokhof+9+60cpockVOq05sJzHCriyvaLBmEJixseQ1a5Kdov6fWZfWOu5SK9c+FhH1jU0tntLxRJYMA==", "peer": true, "engines": { "node": ">=12.7.0" @@ -18697,14 +7606,16 @@ }, "node_modules/@remix-run/router": { "version": "1.13.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@remix-run/router/-/router-1.13.1.tgz", + "integrity": "sha512-so+DHzZKsoOcoXrILB4rqDkMDy7NLMErRdOxvzvOKb507YINKUP4Di+shbTZDhSE/pBZ+vr7XGIpcOO0VLSA+Q==", "engines": { "node": ">=14.0.0" } }, "node_modules/@restart/hooks": { "version": "0.4.11", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@restart/hooks/-/hooks-0.4.11.tgz", + "integrity": "sha512-Ft/ncTULZN6ldGHiF/k5qt72O8JyRMOeg0tApvCni8LkoiEahO+z3TNxfXIVGy890YtWVDvJAl662dVJSJXvMw==", "dependencies": { "dequal": "^2.0.3" }, @@ -18714,7 +7625,8 @@ }, "node_modules/@restart/ui": { "version": "1.6.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@restart/ui/-/ui-1.6.6.tgz", + "integrity": "sha512-eC3puKuWE1SRYbojWHXnvCNHGgf3uzHCb6JOhnF4OXPibOIPEkR1sqDSkL643ydigxwh+ruCa1CmYHlzk7ikKA==", "dependencies": { "@babel/runtime": "^7.21.0", "@popperjs/core": "^2.11.6", @@ -18733,14 +7645,16 @@ }, "node_modules/@restart/ui/node_modules/uncontrollable": { "version": "8.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-8.0.4.tgz", + "integrity": "sha512-ulRWYWHvscPFc0QQXvyJjY6LIXU56f0h8pQFvhxiKk5V1fcI8gp9Ht9leVAhrVjzqMw0BgjspBINx9r6oyJUvQ==", "peerDependencies": { "react": ">=16.14.0" } }, "node_modules/@scena/dragscroll": { "version": "1.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@scena/dragscroll/-/dragscroll-1.4.0.tgz", + "integrity": "sha512-3O8daaZD9VXA9CP3dra6xcgt/qrm0mg0xJCwiX6druCteQ9FFsXffkF8PrqxY4Z4VJ58fFKEa0RlKqbsi/XnRA==", "dependencies": { "@daybrush/utils": "^1.6.0", "@scena/event-emitter": "^1.0.2" @@ -18748,90 +7662,92 @@ }, "node_modules/@scena/event-emitter": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@scena/event-emitter/-/event-emitter-1.0.5.tgz", + "integrity": "sha512-AzY4OTb0+7ynefmWFQ6hxDdk0CySAq/D4efljfhtRHCOP7MBF9zUfhKG3TJiroVjASqVgkRJFdenS8ArZo6Olg==", "dependencies": { "@daybrush/utils": "^1.1.1" } }, "node_modules/@scena/matrix": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@scena/matrix/-/matrix-1.1.1.tgz", + "integrity": "sha512-JVKBhN0tm2Srl+Yt+Ywqu0oLgLcdemDQlD1OxmN9jaCTwaFPZ7tY8n6dhVgMEaR9qcR7r+kAlMXnSfNyYdE+Vg==", "dependencies": { "@daybrush/utils": "^1.4.0" } }, "node_modules/@sentry-internal/feedback": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.100.1.tgz", - "integrity": "sha512-yqcRVnjf+qS+tC4NxOKLJOaSJ+csHmh/dHUzvCTkf5rLsplwXYRnny2r0tqGTQ4tuXMxwgSMKPYwicg81P+xuw==", + "version": "7.101.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/feedback/-/feedback-7.101.1.tgz", + "integrity": "sha512-fOKDMVvLX+FuJHJszKBvRg1m7+fd4hchqRnZ9DDfitT6P5Ppl0gbEt/LStqu8Wq5M0tna+hpdwHlVEt7gZVKzw==", "dependencies": { - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/replay-canvas": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.100.1.tgz", - "integrity": "sha512-TnqxqJGhbFhhYRhTG2WLFer+lVieV7mNGeIxFBiw1L4kuj8KGl+C0sknssKyZSRVJFSahhHIosHJGRMkkD//7g==", + "version": "7.101.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/replay-canvas/-/replay-canvas-7.101.1.tgz", + "integrity": "sha512-09l6nD+lxWvwkpXLlIZuzj/z79Llbo6mcH33TJvxrUTjAqSGF/i3Pd5bTLWro9atippOyQgIV/yTGG4Bc5FhyQ==", "dependencies": { - "@sentry/core": "7.100.1", - "@sentry/replay": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/core": "7.101.1", + "@sentry/replay": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "engines": { "node": ">=12" } }, "node_modules/@sentry-internal/tracing": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.100.1.tgz", - "integrity": "sha512-+u9RRf5eL3StiyiRyAHZmdkAR7GTSGx4Mt4Lmi5NEtCcWlTGZ1QgW2r8ZbhouVmTiJkjhQgYCyej3cojtazeJg==", + "version": "7.101.1", + "resolved": "https://registry.npmjs.org/@sentry-internal/tracing/-/tracing-7.101.1.tgz", + "integrity": "sha512-ihjWG8x4x0ozx6t+EHoXLKbsPrgzYLCpeBLWyS+M6n3hn6cmHM76c8nZw3ldhUQi5UYL3LFC/JZ50b4oSxtlrg==", "dependencies": { - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/babel-plugin-component-annotate": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.14.0.tgz", - "integrity": "sha512-FWU4+Lx6fgxjAkwmc3S9j1Q/6pqKZyZzfi52B+8WMNw7a5QjGXgxc5ucBazZYgrcsJKCFBp4QG3PPxNAieFimQ==", + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/@sentry/babel-plugin-component-annotate/-/babel-plugin-component-annotate-2.14.1.tgz", + "integrity": "sha512-NHVOr6m0vOoh1UNSZr+OpWQERjjQM7lO48WN/N/MzobIIxc2pymw2KAq3lNJ1SnVAy1t9RNP8u+g6aEFEMGZ/w==", "engines": { "node": ">= 14" } }, "node_modules/@sentry/browser": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.100.1.tgz", - "integrity": "sha512-IxHQ08ixf0bmaWpe4yt1J4UUsOpg02fxax9z3tOQYXw5MSzz5pDXn8M8DFUVJB3wWuyXhHXTub9yD3VIP9fnoA==", + "version": "7.101.1", + "resolved": "https://registry.npmjs.org/@sentry/browser/-/browser-7.101.1.tgz", + "integrity": "sha512-+rIFoWPdO29AHVYsAwq8QEl2Ihv17Xh9Bt2aPFvLTGDA0caHjnx98g2jSOvLIOah6HI7Nwp3Njg2zBEzDtHkNw==", "dependencies": { - "@sentry-internal/feedback": "7.100.1", - "@sentry-internal/replay-canvas": "7.100.1", - "@sentry-internal/tracing": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/replay": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry-internal/feedback": "7.101.1", + "@sentry-internal/replay-canvas": "7.101.1", + "@sentry-internal/tracing": "7.101.1", + "@sentry/core": "7.101.1", + "@sentry/replay": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/bundler-plugin-core": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.14.0.tgz", - "integrity": "sha512-jVM47EPs8Na2z5HOWgthLFhpHLU9hwL2wY4TzHEnS1Bj+ODgXFa8QcIxQR2SO+W+L8YhSbY7z+BpPsYTpeZWUg==", + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/@sentry/bundler-plugin-core/-/bundler-plugin-core-2.14.1.tgz", + "integrity": "sha512-JbYkeQQ+FTy4KjuJmnjjRGKv1LOSH+Q9cbcMHkr+vNrwAbdxkQ7WURGEKUCFTciIekToMCOiFk+g3FQlRmzLPg==", "dependencies": { "@babel/core": "7.18.5", - "@sentry/babel-plugin-component-annotate": "2.14.0", + "@sentry/babel-plugin-component-annotate": "2.14.1", "@sentry/cli": "^2.22.3", "@sentry/node": "^7.60.0", "@sentry/utils": "^7.60.0", @@ -18888,9 +7804,9 @@ } }, "node_modules/@sentry/cli": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.28.0.tgz", - "integrity": "sha512-0vdMTeN3Ip1wI9T7F6GupuaOocIrfyHpAN3iUztsO7PY2j7e/+m69DRkU99aPTlmUgQikZjtVaHkTsEMLt3lgA==", + "version": "2.28.6", + "resolved": "https://registry.npmjs.org/@sentry/cli/-/cli-2.28.6.tgz", + "integrity": "sha512-o2Ngz7xXuhwHxMi+4BFgZ4qjkX0tdZeOSIZkFAGnTbRhQe5T8bxq6CcQRLdPhqMgqvDn7XuJ3YlFtD3ZjHvD7g==", "hasInstallScript": true, "dependencies": { "https-proxy-agent": "^5.0.0", @@ -18906,19 +7822,19 @@ "node": ">= 10" }, "optionalDependencies": { - "@sentry/cli-darwin": "2.28.0", - "@sentry/cli-linux-arm": "2.28.0", - "@sentry/cli-linux-arm64": "2.28.0", - "@sentry/cli-linux-i686": "2.28.0", - "@sentry/cli-linux-x64": "2.28.0", - "@sentry/cli-win32-i686": "2.28.0", - "@sentry/cli-win32-x64": "2.28.0" + "@sentry/cli-darwin": "2.28.6", + "@sentry/cli-linux-arm": "2.28.6", + "@sentry/cli-linux-arm64": "2.28.6", + "@sentry/cli-linux-i686": "2.28.6", + "@sentry/cli-linux-x64": "2.28.6", + "@sentry/cli-win32-i686": "2.28.6", + "@sentry/cli-win32-x64": "2.28.6" } }, "node_modules/@sentry/cli-darwin": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.28.0.tgz", - "integrity": "sha512-GgpayUQcGjT55Dc7oojjbqIYIUaBAr4za7D9yU5foMTJ6QjMTovmtE1bVj4bVKzK+0aIiZvZ2dg2g6jF0iGqfg==", + "version": "2.28.6", + "resolved": "https://registry.npmjs.org/@sentry/cli-darwin/-/cli-darwin-2.28.6.tgz", + "integrity": "sha512-KRf0VvTltHQ5gA7CdbUkaIp222LAk/f1+KqpDzO6nB/jC/tL4sfiy6YyM4uiH6IbVEudB8WpHCECiatmyAqMBA==", "optional": true, "os": [ "darwin" @@ -18928,9 +7844,9 @@ } }, "node_modules/@sentry/cli-linux-arm": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.28.0.tgz", - "integrity": "sha512-hjCRyZBNri+gNoMO22g2qevKcUOnDGhTjmyq14q2rXT0KHb4LjyMpebSgE63YTLDj/qxq4MSq8kcjD/jDzSpLw==", + "version": "2.28.6", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm/-/cli-linux-arm-2.28.6.tgz", + "integrity": "sha512-ANG7U47yEHD1g3JrfhpT4/MclEvmDZhctWgSP5gVw5X4AlcI87E6dTqccnLgvZjiIAQTaJJAZuSHVVF3Jk403w==", "cpu": [ "arm" ], @@ -18944,9 +7860,9 @@ } }, "node_modules/@sentry/cli-linux-arm64": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.28.0.tgz", - "integrity": "sha512-QZtl4dyVMrsWEuRCN8h3RMQSjekM6LmdAWiEIxCgVMvTueau31EQz1jokGpaYotAsWK2GyzFALiCA3QwMCTtnA==", + "version": "2.28.6", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-arm64/-/cli-linux-arm64-2.28.6.tgz", + "integrity": "sha512-caMDt37FI752n4/3pVltDjlrRlPFCOxK4PHvoZGQ3KFMsai0ZhE/0CLBUMQqfZf0M0r8KB2x7wqLm7xSELjefQ==", "cpu": [ "arm64" ], @@ -18960,9 +7876,9 @@ } }, "node_modules/@sentry/cli-linux-i686": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.28.0.tgz", - "integrity": "sha512-fgT0G6b1OCBHtrIClNrFfO8w5pVw7yIqtVsq4Bf+FJOwkD2buaPx1Qt66aGP+3+AexXO5pXfagN4+ykSsKqKZA==", + "version": "2.28.6", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-i686/-/cli-linux-i686-2.28.6.tgz", + "integrity": "sha512-Tj1+GMc6lFsDRquOqaGKXFpW9QbmNK4TSfynkWKiJxdTEn5jSMlXXfr0r9OQrxu3dCCqEHkhEyU63NYVpgxIPw==", "cpu": [ "x86", "ia32" @@ -18977,9 +7893,9 @@ } }, "node_modules/@sentry/cli-linux-x64": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.28.0.tgz", - "integrity": "sha512-mrqbxpo6dF8iC4nz0+TS8ymIeNKy6gngcmlRVfOBuVEP9+Ry8HAeIzuKwbt4QAA6lwKCbPsEwK5ZLsrJEJIC6A==", + "version": "2.28.6", + "resolved": "https://registry.npmjs.org/@sentry/cli-linux-x64/-/cli-linux-x64-2.28.6.tgz", + "integrity": "sha512-Dt/Xz784w/z3tEObfyJEMmRIzn0D5qoK53H9kZ6e0yNvJOSKNCSOq5cQk4n1/qeG0K/6SU9dirmvHwFUiVNyYg==", "cpu": [ "x64" ], @@ -18993,9 +7909,9 @@ } }, "node_modules/@sentry/cli-win32-i686": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.28.0.tgz", - "integrity": "sha512-yzji557eqz4XW7z8k0LF4LiIwFAqxPlpVnoeN8ntk8hi/ehXm9AdvPqA+bw7cRK5iu4/Tqr4OJeGPbcI5iKpgQ==", + "version": "2.28.6", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-i686/-/cli-win32-i686-2.28.6.tgz", + "integrity": "sha512-zkpWtvY3kt+ogVaAbfFr2MEkgMMHJNJUnNMO8Ixce9gh38sybIkDkZNFnVPBXMClJV0APa4QH0EwumYBFZUMuQ==", "cpu": [ "x86", "ia32" @@ -19009,9 +7925,9 @@ } }, "node_modules/@sentry/cli-win32-x64": { - "version": "2.28.0", - "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.28.0.tgz", - "integrity": "sha512-5frag3uV+niuMVYQ3ME5Nwlv5uftV88xDUyaCe1UD9jfM8WqJPgvQYUNPgBQKynxwLAUp5zXII+47Vnn8mriOA==", + "version": "2.28.6", + "resolved": "https://registry.npmjs.org/@sentry/cli-win32-x64/-/cli-win32-x64-2.28.6.tgz", + "integrity": "sha512-TG2YzZ9JMeNFzbicdr5fbtsusVGACbrEfHmPgzWGDeLUP90mZxiMTjkXsE1X/5jQEQjB2+fyfXloba/Ugo51hA==", "cpu": [ "x64" ], @@ -19024,40 +7940,40 @@ } }, "node_modules/@sentry/core": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.100.1.tgz", - "integrity": "sha512-f+ItUge/o9AjlveQq0ZUbQauKlPH1FIJbC1TRaYLJ4KNfOdrsh8yZ29RmWv0cFJ/e+FGTr603gWpRPObF5rM8Q==", + "version": "7.101.1", + "resolved": "https://registry.npmjs.org/@sentry/core/-/core-7.101.1.tgz", + "integrity": "sha512-XSmXXeYT1d4O14eDF3OXPJFUgaN2qYEeIGUztqPX9nBs9/ij8y/kZOayFqlIMnfGvjOUM+63sy/2xDBOpFn6ug==", "dependencies": { - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/node": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.100.1.tgz", - "integrity": "sha512-jB6tBLr7BpgdE2SlYZu343vvpa5jMFnqyFlprr+jdDu/ayNF4idB0qFwQe8p4C6LI6M/MNDRLVOgPBiCjjZSpw==", + "version": "7.101.1", + "resolved": "https://registry.npmjs.org/@sentry/node/-/node-7.101.1.tgz", + "integrity": "sha512-iXSxUT6Zbt/KUY0+fRcW5II6Tgp2zdTfhBW+fQuDt/UUZt7Ypvb+6n4U2oom3LJfttmD7mdjQuT4+vsNImDjTQ==", "dependencies": { - "@sentry-internal/tracing": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry-internal/tracing": "7.101.1", + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/react": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.100.1.tgz", - "integrity": "sha512-EdrBtrXVLK2LSx4Rvz/nQP7HZUZQmr+t3GHV8436RAhF6vs5mntACVMBoQJRWiUvtZ1iRo3rIsIdah7DLiFPgQ==", + "version": "7.101.1", + "resolved": "https://registry.npmjs.org/@sentry/react/-/react-7.101.1.tgz", + "integrity": "sha512-CwaBXntX2e3XHZQZVuv/tcfm5H+UHcS6aVChGfUiBHIBi2JpAqdnLdQIFGTkE8BSnKyolKgIsnvIU3BQ//QTig==", "dependencies": { - "@sentry/browser": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1", + "@sentry/browser": "7.101.1", + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1", "hoist-non-react-statics": "^3.3.2" }, "engines": { @@ -19068,55 +7984,55 @@ } }, "node_modules/@sentry/replay": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.100.1.tgz", - "integrity": "sha512-B1NFjzGEFaqejxBRdUyEzH8ChXc2kfiqlA/W/Lg0aoWIl2/7nuMk+l4ld9gW5F5bIAXDTVd5vYltb1lWEbpr7w==", + "version": "7.101.1", + "resolved": "https://registry.npmjs.org/@sentry/replay/-/replay-7.101.1.tgz", + "integrity": "sha512-l4jmj2Rf/myzk3TA83PdMiomassG8okdBh1b2Hp1+ycBRVZFDmsR81gKPvnefSXwGwGNGKEmp6Q2bdGzekpp3Q==", "dependencies": { - "@sentry-internal/tracing": "7.100.1", - "@sentry/core": "7.100.1", - "@sentry/types": "7.100.1", - "@sentry/utils": "7.100.1" + "@sentry-internal/tracing": "7.101.1", + "@sentry/core": "7.101.1", + "@sentry/types": "7.101.1", + "@sentry/utils": "7.101.1" }, "engines": { "node": ">=12" } }, "node_modules/@sentry/tracing": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.100.1.tgz", - "integrity": "sha512-cmm2yz0qvOcW0RPegCn88X5nwbJdLx3w+Wl8319Kzkivc200e2tXQiDNwJ8kQdUvFsJg7Jz3G+hfZoy3ejtH7Q==", + "version": "7.101.1", + "resolved": "https://registry.npmjs.org/@sentry/tracing/-/tracing-7.101.1.tgz", + "integrity": "sha512-g62ol80fc8bpp1c3H96hb4S8onaAS1y7Lg/quiPL4Df0hWKfIYz22fdnCIm2meEFf73g8yBrHOhmqoH7T9xt0w==", "dependencies": { - "@sentry-internal/tracing": "7.100.1" + "@sentry-internal/tracing": "7.101.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/types": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.100.1.tgz", - "integrity": "sha512-fLM+LedHuKzOd8IhXBqaQuym+AA519MGjeczBa5kGakes/BbAsUMwsNfjsKQedp7Kh44RgYF99jwoRPK2oDrXw==", + "version": "7.101.1", + "resolved": "https://registry.npmjs.org/@sentry/types/-/types-7.101.1.tgz", + "integrity": "sha512-bwtkQvrCZ6JGc7vqX7TEAKBgkbQFORt84FFS3JQQb8G3efTt9fZd2ReY4buteKQdlALl8h1QWVngTLmI+kyUuw==", "engines": { "node": ">=8" } }, "node_modules/@sentry/utils": { - "version": "7.100.1", - "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.100.1.tgz", - "integrity": "sha512-Ve6dXr1o6xiBe3VCoJgiutmBKrugryI65EZAbYto5XI+t+PjiLLf9wXtEMF24ZrwImo4Lv3E9Uqza+fWkEbw6A==", + "version": "7.101.1", + "resolved": "https://registry.npmjs.org/@sentry/utils/-/utils-7.101.1.tgz", + "integrity": "sha512-Nrg0nrEI3nrOCd9SLJ/WGzxS5KMQE4cryLOvrDcHJRWpsSyGBF1hLLerk84Nsw/0myMsn7zTYU+xoq7idNsX5A==", "dependencies": { - "@sentry/types": "7.100.1" + "@sentry/types": "7.101.1" }, "engines": { "node": ">=8" } }, "node_modules/@sentry/webpack-plugin": { - "version": "2.14.0", - "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-2.14.0.tgz", - "integrity": "sha512-6lYxabSSkoMqz+zsACamYfu8amLSIiYFj+CQBLvWKSW7N6wJvaZKfFVHj5bGlmU7K0X0eJyQdxdk6VfLg129Jw==", + "version": "2.14.1", + "resolved": "https://registry.npmjs.org/@sentry/webpack-plugin/-/webpack-plugin-2.14.1.tgz", + "integrity": "sha512-mOGu/D68MQW46eya3z0r3Xk9Cv6/bfqW4zC2AAX7KwJdlq5/6+W0PLo0v3kNxUGRXWg732eHb4wTKGrShmIu2A==", "dependencies": { - "@sentry/bundler-plugin-core": "2.14.0", + "@sentry/bundler-plugin-core": "2.14.1", "unplugin": "1.0.1", "uuid": "^9.0.0" }, @@ -19129,7 +8045,8 @@ }, "node_modules/@sideway/address": { "version": "4.1.4", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@sideway/address/-/address-4.1.4.tgz", + "integrity": "sha512-7vwq+rOHVWjyXxVlR76Agnvhy8I9rpzjosTESvmhNeXOXdZZB15Fl+TI9x1SiHZH5Jv2wTGduSxFDIaq0m3DUw==", "peer": true, "dependencies": { "@hapi/hoek": "^9.0.0" @@ -19137,34 +8054,41 @@ }, "node_modules/@sideway/formula": { "version": "3.0.1", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@sideway/formula/-/formula-3.0.1.tgz", + "integrity": "sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==", "peer": true }, "node_modules/@sideway/pinpoint": { "version": "2.0.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@sideway/pinpoint/-/pinpoint-2.0.0.tgz", + "integrity": "sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==", "peer": true }, "node_modules/@sinclair/typebox": { "version": "0.27.8", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==" }, "node_modules/@sinonjs/commons": { "version": "3.0.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.0.tgz", + "integrity": "sha512-jXBtWAF4vmdNmZgD5FoKsVLv3rPgDnLgPbU84LIJ3otV44vJlDRokVng5v8NFJdCf/da9legHcKaRuZs4L7faA==", "dependencies": { "type-detect": "4.0.8" } }, "node_modules/@sinonjs/fake-timers": { "version": "10.3.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", "dependencies": { "@sinonjs/commons": "^3.0.0" } }, "node_modules/@storybook/addon-actions": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-actions/-/addon-actions-7.6.3.tgz", + "integrity": "sha512-f4HXteYE8IJXztAK+ab5heSjXWNWvyIAU63T3Fqe3zmqONwCerUKY54Op+RkAZc/R6aALTxvGRKAH2ff8g2vjQ==", "dev": true, "license": "MIT", "dependencies": { @@ -19182,6 +8106,8 @@ }, "node_modules/@storybook/addon-backgrounds": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-backgrounds/-/addon-backgrounds-7.6.3.tgz", + "integrity": "sha512-ZZFNf8FBYBsuXvXdVk3sBgxJTn6s0HznuEE9OmAA7tMsLEDlUiWS9LEvjX2jX5K0kWivHTkJDTXV0NcLL1vWAg==", "dev": true, "license": "MIT", "dependencies": { @@ -19196,6 +8122,8 @@ }, "node_modules/@storybook/addon-controls": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-controls/-/addon-controls-7.6.3.tgz", + "integrity": "sha512-xsM3z+CY1YOPqrcCldQLoon947fbd/o3gSO7hM3NwKiw/2WikExPO3VM4R2oi4W4PvnhkSOIO+ZDRuSs1yFmOg==", "dev": true, "license": "MIT", "dependencies": { @@ -19210,6 +8138,8 @@ }, "node_modules/@storybook/addon-docs": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-docs/-/addon-docs-7.6.3.tgz", + "integrity": "sha512-2Ts+3EFg9ehkQdbjBWnCH1SE0BdyCLN6hO2N030tGxi0Vko9t9O7NLj5qdBwxLcEzb/XzL4zWukzfU17pktQwA==", "dev": true, "license": "MIT", "dependencies": { @@ -19244,6 +8174,8 @@ }, "node_modules/@storybook/addon-essentials": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-essentials/-/addon-essentials-7.6.3.tgz", + "integrity": "sha512-bpbt5O0wcB83VLZg8QMXut+8g+7EF4iuevpwiynN9mbpQFvG49c6SE6T2eFJKTvVb4zszyfcNA0Opne2G83wZw==", "dev": true, "license": "MIT", "dependencies": { @@ -19273,6 +8205,8 @@ }, "node_modules/@storybook/addon-highlight": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-highlight/-/addon-highlight-7.6.3.tgz", + "integrity": "sha512-Z9AJ05XCTzFZPAxQSkQf9/Hazf5/QQI0jYSsvKqt7Vk+03q5727oD9KcIY5IHPYqQqN9fHExQh1eyqY8AnS8mg==", "dev": true, "license": "MIT", "dependencies": { @@ -19285,6 +8219,8 @@ }, "node_modules/@storybook/addon-interactions": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-interactions/-/addon-interactions-7.6.3.tgz", + "integrity": "sha512-Gm2UJvQC8xs9KIbVZQegTLT3VBsEZIRsXy3htNqWjSdoJZK5M4/YJ3jB247CA/Jc+Mkj7d5SlJe+bCGEzjKTbw==", "dev": true, "license": "MIT", "dependencies": { @@ -19301,6 +8237,8 @@ }, "node_modules/@storybook/addon-links": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-links/-/addon-links-7.6.3.tgz", + "integrity": "sha512-dUIf6Y0nckxZfVQvQSqcthaycRxy69dCJLo3aORrOPL8NvGz3v1bK0AUded5wv8vnOVxfSx/Zqu7MyFr9xyjOA==", "dev": true, "license": "MIT", "dependencies": { @@ -19323,6 +8261,8 @@ }, "node_modules/@storybook/addon-measure": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-measure/-/addon-measure-7.6.3.tgz", + "integrity": "sha512-DqxADof04ktA5GSA8XnckYGdVYyC4oN8vfKSGcPzpcKrJ2uVr0BXbcyJAEcJAshEJimmpA6nH5TxabXDFBZgPQ==", "dev": true, "license": "MIT", "dependencies": { @@ -19336,6 +8276,8 @@ }, "node_modules/@storybook/addon-onboarding": { "version": "1.0.9", + "resolved": "https://registry.npmjs.org/@storybook/addon-onboarding/-/addon-onboarding-1.0.9.tgz", + "integrity": "sha512-HlHm05Py18XOf4g7abiWkvb2WteoHcRNk1PY3Wtsmjuu5aAAjBmp4mVEg59xEeA2HAMICZ2fb72NIpFlBvDN+g==", "dev": true, "license": "MIT", "dependencies": { @@ -19349,6 +8291,8 @@ }, "node_modules/@storybook/addon-outline": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-outline/-/addon-outline-7.6.3.tgz", + "integrity": "sha512-M7d2tcqBBl+mPBUS6Nrwis50QYSCcmT/uKamud7CnlIWsMH/5GZFfAzGSLY5ETfiGsSFYssOwrXLOV4y0enu2g==", "dev": true, "license": "MIT", "dependencies": { @@ -19362,8 +8306,9 @@ }, "node_modules/@storybook/addon-toolbars": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-toolbars/-/addon-toolbars-7.6.3.tgz", + "integrity": "sha512-8GpwOt0J5yLrJhTr9/h0a/LTDjt49FhdvdxiVWLlLMrjIXSIc7j193ZgoHfnlwVhJS5zojcjB+HmRw/E+AneoA==", "dev": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/storybook" @@ -19371,6 +8316,8 @@ }, "node_modules/@storybook/addon-viewport": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/addon-viewport/-/addon-viewport-7.6.3.tgz", + "integrity": "sha512-I9FQxHi4W7RUyZut4NziYa+nkBCpD1k2YpEDE5IwSC3lqQpDzFZN89eNWQtZ38tIU4c90jL3L1k69IHvANGHsA==", "dev": true, "license": "MIT", "dependencies": { @@ -19383,6 +8330,8 @@ }, "node_modules/@storybook/blocks": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/blocks/-/blocks-7.6.3.tgz", + "integrity": "sha512-EyjyNNCZMcV9UnBSujwduiq+F1VLVX/f16fTTPqqZOHigyfrG5LoEYC6dwOC4yO/xfWY+h3qJ51yiugMxVl0Vg==", "dev": true, "license": "MIT", "dependencies": { @@ -19421,6 +8370,8 @@ }, "node_modules/@storybook/builder-manager": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/builder-manager/-/builder-manager-7.6.3.tgz", + "integrity": "sha512-eLMjRudhiRsg7kgbmPcCkuVf2ut753fbiVR7REtqIYwq5vu8UeNOzt1vA6HgfsUj77/7+1zG8/zeyBv/5nY5mw==", "dev": true, "license": "MIT", "dependencies": { @@ -19446,6 +8397,54 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@storybook/builder-manager/node_modules/@esbuild/darwin-arm64": { "version": "0.18.20", "cpu": [ @@ -19461,6 +8460,294 @@ "node": ">=12" } }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/builder-manager/node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@storybook/builder-manager/node_modules/esbuild": { "version": "0.18.20", "dev": true, @@ -19499,6 +8786,8 @@ }, "node_modules/@storybook/builder-webpack5": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/builder-webpack5/-/builder-webpack5-7.6.3.tgz", + "integrity": "sha512-hK8eOTihB61L+R4wUfHBffPoV3u6Bu7QEnhCQYd6AimNOgjnCvN33ceZjtYFM3taYpQgI6Q723vtOyL1IMh48Q==", "dev": true, "license": "MIT", "dependencies": { @@ -19552,6 +8841,8 @@ }, "node_modules/@storybook/builder-webpack5/node_modules/@types/node": { "version": "18.19.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.1.tgz", + "integrity": "sha512-mZJ9V11gG5Vp0Ox2oERpeFDl+JvCwK24PGy76vVY/UgBtjwJWc5rYBThFxmbnYOm9UPZNm6wEl/sxHt2SU7x9A==", "dev": true, "license": "MIT", "dependencies": { @@ -19560,8 +8851,9 @@ }, "node_modules/@storybook/builder-webpack5/node_modules/magic-string": { "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", "dev": true, - "license": "MIT", "dependencies": { "@jridgewell/sourcemap-codec": "^1.4.15" }, @@ -19571,6 +8863,8 @@ }, "node_modules/@storybook/channels": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/channels/-/channels-7.6.3.tgz", + "integrity": "sha512-o9J0TBbFon16tUlU5V6kJgzAlsloJcS1cTHWqh3VWczohbRm+X1PLNUihJ7Q8kBWXAuuJkgBu7RQH7Ib46WyYg==", "dev": true, "license": "MIT", "dependencies": { @@ -19588,6 +8882,8 @@ }, "node_modules/@storybook/cli": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/cli/-/cli-7.6.3.tgz", + "integrity": "sha512-OuYnzZlAtpGm4rDgI4ZWkNbAkddutlJh6KmoU9oQAlZP0zmETyJN8REUWjj5T9Z1AS2iXjCMGlFVd4TC8nKocw==", "dev": true, "license": "MIT", "dependencies": { @@ -19689,6 +8985,8 @@ }, "node_modules/@storybook/cli/node_modules/jscodeshift": { "version": "0.15.1", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.1.tgz", + "integrity": "sha512-hIJfxUy8Rt4HkJn/zZPU9ChKfKZM1342waJ1QC2e2YsPcWhM+3BJ4dcfQCzArTrk1jJeNLB341H+qOcEHRxJZg==", "dev": true, "license": "MIT", "dependencies": { @@ -19748,6 +9046,8 @@ }, "node_modules/@storybook/client-logger": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/client-logger/-/client-logger-7.6.3.tgz", + "integrity": "sha512-BpsCnefrBFdxD6ukMjAblm1D6zB4U5HR1I85VWw6LOqZrfzA6l/1uBxItz0XG96HTjngbvAabWf5k7ZFCx5UCg==", "dev": true, "license": "MIT", "dependencies": { @@ -19760,6 +9060,8 @@ }, "node_modules/@storybook/codemod": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/codemod/-/codemod-7.6.3.tgz", + "integrity": "sha512-A1i8+WQfNg3frVcwSyu8E/cDkCu88Sw7JiGNnq9iW2e2oWMr2awpCDgXp8WfTK+HiDb2X1Pq5y/GmUlh3qr77Q==", "dev": true, "license": "MIT", "dependencies": { @@ -19822,6 +9124,8 @@ }, "node_modules/@storybook/codemod/node_modules/jscodeshift": { "version": "0.15.1", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.15.1.tgz", + "integrity": "sha512-hIJfxUy8Rt4HkJn/zZPU9ChKfKZM1342waJ1QC2e2YsPcWhM+3BJ4dcfQCzArTrk1jJeNLB341H+qOcEHRxJZg==", "dev": true, "license": "MIT", "dependencies": { @@ -19881,6 +9185,8 @@ }, "node_modules/@storybook/components": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/components/-/components-7.6.3.tgz", + "integrity": "sha512-UNV0WoUo+W0huOLvoEMuqRN/VB4p0CNswrXN1mi/oGWvAFJ8idu63lSuV4uQ/LKxAZ6v3Kpdd+oK/o+OeOoL6w==", "dev": true, "license": "MIT", "dependencies": { @@ -19906,6 +9212,8 @@ }, "node_modules/@storybook/core-client": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/core-client/-/core-client-7.6.3.tgz", + "integrity": "sha512-RM0Svlajddl8PP4Vq7LK8T22sFefNcTDgo82iRPZzGz0oH8LT0oXGFanj2Nkn0jruOBFClkiJ7EcwrbGJZHELg==", "dev": true, "license": "MIT", "dependencies": { @@ -19919,6 +9227,8 @@ }, "node_modules/@storybook/core-common": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/core-common/-/core-common-7.6.3.tgz", + "integrity": "sha512-/ZE4BEyGwBHCQCOo681GyBKF4IqCiwVV/ZJCHTMTHFCPLJT2r+Qwv4tnI7xt1kwflOlbBlG6B6CvAqTjjVw/Ew==", "dev": true, "license": "MIT", "dependencies": { @@ -19951,6 +9261,54 @@ "url": "https://opencollective.com/storybook" } }, + "node_modules/@storybook/core-common/node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@storybook/core-common/node_modules/@esbuild/darwin-arm64": { "version": "0.18.20", "cpu": [ @@ -19966,10 +9324,299 @@ "node": ">=12" } }, + "node_modules/@storybook/core-common/node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@storybook/core-common/node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, "node_modules/@storybook/core-common/node_modules/@types/node": { "version": "18.19.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.1.tgz", + "integrity": "sha512-mZJ9V11gG5Vp0Ox2oERpeFDl+JvCwK24PGy76vVY/UgBtjwJWc5rYBThFxmbnYOm9UPZNm6wEl/sxHt2SU7x9A==", "dev": true, - "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } @@ -20049,6 +9696,8 @@ }, "node_modules/@storybook/core-common/node_modules/glob": { "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, "license": "ISC", "dependencies": { @@ -20092,6 +9741,8 @@ }, "node_modules/@storybook/core-common/node_modules/minipass": { "version": "7.0.4", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "dev": true, "license": "ISC", "engines": { @@ -20111,8 +9762,9 @@ }, "node_modules/@storybook/core-events": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/core-events/-/core-events-7.6.3.tgz", + "integrity": "sha512-Vu3JX1mjtR8AX84lyqWsi2s2lhD997jKRWVznI3wx+UpTk8t7TTMLFk2rGYJRjaornhrqwvLYpnmtxRSxW9BOQ==", "dev": true, - "license": "MIT", "dependencies": { "ts-dedent": "^2.0.0" }, @@ -20123,6 +9775,8 @@ }, "node_modules/@storybook/core-server": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/core-server/-/core-server-7.6.3.tgz", + "integrity": "sha512-IsM24MmiFmtZeyqoijiExpIPkJNBaWQg9ttkkHS6iYwf3yFNBpYVbvuX2OpT7FDdiF3uTl0R8IvfnJR58tHD7w==", "dev": true, "license": "MIT", "dependencies": { @@ -20175,8 +9829,9 @@ }, "node_modules/@storybook/core-server/node_modules/@types/node": { "version": "18.19.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.1.tgz", + "integrity": "sha512-mZJ9V11gG5Vp0Ox2oERpeFDl+JvCwK24PGy76vVY/UgBtjwJWc5rYBThFxmbnYOm9UPZNm6wEl/sxHt2SU7x9A==", "dev": true, - "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } @@ -20220,11 +9875,14 @@ }, "node_modules/@storybook/core-server/node_modules/ip": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true }, "node_modules/@storybook/core-server/node_modules/is-wsl": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, "license": "MIT", "dependencies": { @@ -20236,8 +9894,9 @@ }, "node_modules/@storybook/core-server/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, - "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -20263,6 +9922,8 @@ }, "node_modules/@storybook/core-server/node_modules/ws": { "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", "dev": true, "license": "MIT", "engines": { @@ -20283,6 +9944,8 @@ }, "node_modules/@storybook/core-webpack": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/core-webpack/-/core-webpack-7.6.3.tgz", + "integrity": "sha512-dM1orHixZWF5tKYoyMYBxg7OJ8joR2r5Ckj9SShXd8lutL7so5ljyxfEz/+pYakTNK7ezeQmMIFYZQD3JTr5JA==", "dev": true, "license": "MIT", "dependencies": { @@ -20299,14 +9962,17 @@ }, "node_modules/@storybook/core-webpack/node_modules/@types/node": { "version": "18.19.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.1.tgz", + "integrity": "sha512-mZJ9V11gG5Vp0Ox2oERpeFDl+JvCwK24PGy76vVY/UgBtjwJWc5rYBThFxmbnYOm9UPZNm6wEl/sxHt2SU7x9A==", "dev": true, - "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@storybook/csf": { "version": "0.1.2", + "resolved": "https://registry.npmjs.org/@storybook/csf/-/csf-0.1.2.tgz", + "integrity": "sha512-ePrvE/pS1vsKR9Xr+o+YwdqNgHUyXvg+1Xjx0h9LrVx7Zq4zNe06pd63F5EvzTbCbJsHj7GHr9tkiaqm7U8WRA==", "dev": true, "license": "MIT", "dependencies": { @@ -20315,6 +9981,8 @@ }, "node_modules/@storybook/csf-plugin": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/csf-plugin/-/csf-plugin-7.6.3.tgz", + "integrity": "sha512-8bMYPsWw2tv+fqZ5H436l4x1KLSB6gIcm6snsjyF916yCHG6WcWm+EI6+wNUoySEtrQY2AiwFJqE37wI5OUJFg==", "dev": true, "license": "MIT", "dependencies": { @@ -20326,19 +9994,10 @@ "url": "https://opencollective.com/storybook" } }, - "node_modules/@storybook/csf-plugin/node_modules/acorn": { - "version": "8.11.2", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/@storybook/csf-plugin/node_modules/unplugin": { "version": "1.5.1", + "resolved": "https://registry.npmjs.org/unplugin/-/unplugin-1.5.1.tgz", + "integrity": "sha512-0QkvG13z6RD+1L1FoibQqnvTwVBXvS4XSPwAyinVgoOCl2jAgwzdUKmEj05o4Lt8xwQI85Hb6mSyYkcAGwZPew==", "dev": true, "license": "MIT", "dependencies": { @@ -20350,13 +10009,15 @@ }, "node_modules/@storybook/csf-plugin/node_modules/webpack-virtual-modules": { "version": "0.6.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/webpack-virtual-modules/-/webpack-virtual-modules-0.6.1.tgz", + "integrity": "sha512-poXpCylU7ExuvZK8z+On3kX+S8o/2dQ/SVYueKA0D4WEMXROXgY8Ez50/bQEUmvoSMMrWcrJqCHuhAbsiwg7Dg==", + "dev": true }, "node_modules/@storybook/csf-tools": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/csf-tools/-/csf-tools-7.6.3.tgz", + "integrity": "sha512-Zi3pg2pg88/mvBKewkfWhFUR1J4uYpHI5fSjOE+J/FeZObX/DIE7r+wJxZ0UBGyrk0Wy7Jajlb2uSP56Y0i19w==", "dev": true, - "license": "MIT", "dependencies": { "@babel/generator": "^7.23.0", "@babel/parser": "^7.23.0", @@ -20380,6 +10041,8 @@ }, "node_modules/@storybook/docs-tools": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/docs-tools/-/docs-tools-7.6.3.tgz", + "integrity": "sha512-6MtirRCQIkBeQ3bksPignZgUuFmjWqcFleTEN6vrNEfbCzMlMvuBGfm9tl4sS3n8ATWmKGj87DcJepPOT3FB4A==", "dev": true, "license": "MIT", "dependencies": { @@ -20403,6 +10066,8 @@ }, "node_modules/@storybook/manager": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/manager/-/manager-7.6.3.tgz", + "integrity": "sha512-6eMaogHANCSVV2zLPt4Q7fp8RT+AdlOe6IR0583AuqpepcFzj33iGNYABk2rmXAlkD0WzoLcC4H5mouU0fduLA==", "dev": true, "license": "MIT", "funding": { @@ -20412,6 +10077,8 @@ }, "node_modules/@storybook/manager-api": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/manager-api/-/manager-api-7.6.3.tgz", + "integrity": "sha512-soDH7GZuukkhYRGzlw4jhCm5EzjfkuIAtb37/DFplqxuVbvlyJEVzkMUM2KQO7kq0/8GlWPiZ5mn56wagYyhKQ==", "dev": true, "license": "MIT", "dependencies": { @@ -20443,6 +10110,8 @@ }, "node_modules/@storybook/node-logger": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/node-logger/-/node-logger-7.6.3.tgz", + "integrity": "sha512-7yL0CMHuh1DhpUAoKCU0a53DvxBpkUom9SX5RaC1G2A9BK/B3XcHtDPAC0uyUwNCKLJMZo9QtmJspvxWjR0LtA==", "dev": true, "license": "MIT", "funding": { @@ -20452,6 +10121,8 @@ }, "node_modules/@storybook/postinstall": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/postinstall/-/postinstall-7.6.3.tgz", + "integrity": "sha512-WpgdpJpY6rionluxjFZLbKiSDjvQJ5cPgufjvBRuXTsnVOsH3JNRWnPdkQkJLT9uTUMoNcyBMxbjYkK3vU6wSg==", "dev": true, "license": "MIT", "funding": { @@ -20461,6 +10132,8 @@ }, "node_modules/@storybook/preset-react-webpack": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/preset-react-webpack/-/preset-react-webpack-7.6.3.tgz", + "integrity": "sha512-rWDzjl4g3+UDG/qKYou7NFU8s+RrgF3PSKtzTPsmqOUF/Edntzr7Z2VYqlK4RD5Wmr2VChtu3EC/frFcqSJQBQ==", "dev": true, "license": "MIT", "dependencies": { @@ -20505,6 +10178,8 @@ }, "node_modules/@storybook/preset-react-webpack/node_modules/@types/node": { "version": "18.19.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.1.tgz", + "integrity": "sha512-mZJ9V11gG5Vp0Ox2oERpeFDl+JvCwK24PGy76vVY/UgBtjwJWc5rYBThFxmbnYOm9UPZNm6wEl/sxHt2SU7x9A==", "dev": true, "license": "MIT", "dependencies": { @@ -20513,6 +10188,8 @@ }, "node_modules/@storybook/preset-react-webpack/node_modules/magic-string": { "version": "0.30.5", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.5.tgz", + "integrity": "sha512-7xlpfBaQaP/T6Vh8MO/EqXSW5En6INHEvEXQiuff7Gku0PWjU3uf6w/j9o7O+SpB5fOAkrI5HeoNgwjEO0pFsA==", "dev": true, "license": "MIT", "dependencies": { @@ -20524,6 +10201,8 @@ }, "node_modules/@storybook/preview": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/preview/-/preview-7.6.3.tgz", + "integrity": "sha512-obSmKN8arWSHuLbCDM1H0lTVRMvAP/l7vOi6TQtFi6TxBz9MRCJA3Ugc0PZrbDADVZP+cp0ZJA0JQtAm+SqNAA==", "dev": true, "license": "MIT", "funding": { @@ -20533,6 +10212,8 @@ }, "node_modules/@storybook/preview-api": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/preview-api/-/preview-api-7.6.3.tgz", + "integrity": "sha512-uPaK7yLE1P++F+IOb/1j9pgdCwfMYZrUPHogF/Mf9r4cfEjDCcIeKgGMcsbU1KnkzNQQGPh8JRzRr/iYnLjswg==", "dev": true, "license": "MIT", "dependencies": { @@ -20558,6 +10239,8 @@ }, "node_modules/@storybook/react": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/react/-/react-7.6.3.tgz", + "integrity": "sha512-W+530cC0BAU+yBc7NzSXYWR3e8Lo5qMsmFJjWYK7zGW/YZGhSG3mjhF9pDzNM+cMtHvUS6qf5PJPQM8jePpPhg==", "dev": true, "license": "MIT", "dependencies": { @@ -20621,6 +10304,8 @@ }, "node_modules/@storybook/react-dom-shim": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/react-dom-shim/-/react-dom-shim-7.6.3.tgz", + "integrity": "sha512-UtaEaTQB27aBsAmn5IfAYkX2xl4wWWXkoAO/jUtx86FQ/r85FG0zxh/rac6IgzjYUqzjJtjIeLdeciG/48hMMA==", "dev": true, "license": "MIT", "funding": { @@ -20634,6 +10319,8 @@ }, "node_modules/@storybook/react-webpack5": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/react-webpack5/-/react-webpack5-7.6.3.tgz", + "integrity": "sha512-5427xYUQhCL2CUkFuYmq6Sz9R3PXBRspzZ/BUW3UII3hjrtSPJkwxkrV+rnisaokrF7jXCYtzkwV2VATpJv8Cw==", "dev": true, "license": "MIT", "dependencies": { @@ -20666,22 +10353,38 @@ }, "node_modules/@storybook/react-webpack5/node_modules/@types/node": { "version": "18.19.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.1.tgz", + "integrity": "sha512-mZJ9V11gG5Vp0Ox2oERpeFDl+JvCwK24PGy76vVY/UgBtjwJWc5rYBThFxmbnYOm9UPZNm6wEl/sxHt2SU7x9A==", "dev": true, - "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@storybook/react/node_modules/@types/node": { "version": "18.19.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.1.tgz", + "integrity": "sha512-mZJ9V11gG5Vp0Ox2oERpeFDl+JvCwK24PGy76vVY/UgBtjwJWc5rYBThFxmbnYOm9UPZNm6wEl/sxHt2SU7x9A==", "dev": true, - "license": "MIT", "dependencies": { "undici-types": "~5.26.4" } }, + "node_modules/@storybook/react/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/@storybook/router": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/router/-/router-7.6.3.tgz", + "integrity": "sha512-NZfhJqsXYca9mZCL/LGx6FmZDbrxX2S4ImW7Tqdtcc/sSlZ0BpCDkNUTesCA287cmoKMhXZRh/+bU+C2h2a+bw==", "dev": true, "license": "MIT", "dependencies": { @@ -20696,6 +10399,8 @@ }, "node_modules/@storybook/telemetry": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/telemetry/-/telemetry-7.6.3.tgz", + "integrity": "sha512-NDCZWhVIUI3M6Lq4M/HPOvZqDXqANDNbI3kyHr4pFGoVaCUXuDPokL9wR+CZcMvATkJ1gHrfLPBdcRq6Biw3Iw==", "dev": true, "license": "MIT", "dependencies": { @@ -20763,6 +10468,8 @@ }, "node_modules/@storybook/testing-library": { "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@storybook/testing-library/-/testing-library-0.2.2.tgz", + "integrity": "sha512-L8sXFJUHmrlyU2BsWWZGuAjv39Jl1uAqUHdxmN42JY15M4+XCMjGlArdCCjDe1wpTSW6USYISA9axjZojgtvnw==", "dev": true, "license": "MIT", "dependencies": { @@ -20773,6 +10480,8 @@ }, "node_modules/@storybook/theming": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/theming/-/theming-7.6.3.tgz", + "integrity": "sha512-9ToNU2LM6a2kVBjOXitXEeEOuMurVLhn+uaZO1dJjv8NGnJVYiLwNPwrLsImiUD8/XXNuil972aanBR6+Aj9jw==", "dev": true, "license": "MIT", "dependencies": { @@ -20792,6 +10501,8 @@ }, "node_modules/@storybook/types": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/@storybook/types/-/types-7.6.3.tgz", + "integrity": "sha512-vj9Jzg5eR52l8O9512QywbQpNdo67Z6BQWR8QoZRcG+/Bhzt08YI8IZMPQLFMKzcmWDPK0blQ4GfyKDYplMjPA==", "dev": true, "license": "MIT", "dependencies": { @@ -20807,8 +10518,9 @@ }, "node_modules/@svgr/babel-plugin-add-jsx-attribute": { "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-add-jsx-attribute/-/babel-plugin-add-jsx-attribute-6.5.1.tgz", + "integrity": "sha512-9PYGcXrAxitycIjRmZB+Q0JaN07GZIWaTBIGQzfaZv+qr1n8X1XUEJ5rZ/vx6OVD9RRYlrNnXWExQXcmZeD/BQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -20822,8 +10534,9 @@ }, "node_modules/@svgr/babel-plugin-remove-jsx-attribute": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-attribute/-/babel-plugin-remove-jsx-attribute-8.0.0.tgz", + "integrity": "sha512-BcCkm/STipKvbCl6b7QFrMh/vx00vIP63k2eM66MfHJzPr6O2U0jYEViXkHJWqXqQYjdeA9cuCl5KWmlwjDvbA==", "dev": true, - "license": "MIT", "engines": { "node": ">=14" }, @@ -20837,8 +10550,9 @@ }, "node_modules/@svgr/babel-plugin-remove-jsx-empty-expression": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-remove-jsx-empty-expression/-/babel-plugin-remove-jsx-empty-expression-8.0.0.tgz", + "integrity": "sha512-5BcGCBfBxB5+XSDSWnhTThfI9jcO5f0Ai2V24gZpG+wXF14BzwxxdDb4g6trdOux0rhibGs385BeFMSmxtS3uA==", "dev": true, - "license": "MIT", "engines": { "node": ">=14" }, @@ -20852,8 +10566,9 @@ }, "node_modules/@svgr/babel-plugin-replace-jsx-attribute-value": { "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-replace-jsx-attribute-value/-/babel-plugin-replace-jsx-attribute-value-6.5.1.tgz", + "integrity": "sha512-8DPaVVE3fd5JKuIC29dqyMB54sA6mfgki2H2+swh+zNJoynC8pMPzOkidqHOSc6Wj032fhl8Z0TVn1GiPpAiJg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -20867,8 +10582,9 @@ }, "node_modules/@svgr/babel-plugin-svg-dynamic-title": { "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-dynamic-title/-/babel-plugin-svg-dynamic-title-6.5.1.tgz", + "integrity": "sha512-FwOEi0Il72iAzlkaHrlemVurgSQRDFbk0OC8dSvD5fSBPHltNh7JtLsxmZUhjYBZo2PpcU/RJvvi6Q0l7O7ogw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -20882,8 +10598,9 @@ }, "node_modules/@svgr/babel-plugin-svg-em-dimensions": { "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-svg-em-dimensions/-/babel-plugin-svg-em-dimensions-6.5.1.tgz", + "integrity": "sha512-gWGsiwjb4tw+ITOJ86ndY/DZZ6cuXMNE/SjcDRg+HLuCmwpcjOktwRF9WgAiycTqJD/QXqL2f8IzE2Rzh7aVXA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -20897,8 +10614,9 @@ }, "node_modules/@svgr/babel-plugin-transform-react-native-svg": { "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-react-native-svg/-/babel-plugin-transform-react-native-svg-6.5.1.tgz", + "integrity": "sha512-2jT3nTayyYP7kI6aGutkyfJ7UMGtuguD72OjeGLwVNyfPRBD8zQthlvL+fAbAKk5n9ZNcvFkp/b1lZ7VsYqVJg==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -20912,8 +10630,9 @@ }, "node_modules/@svgr/babel-plugin-transform-svg-component": { "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-plugin-transform-svg-component/-/babel-plugin-transform-svg-component-6.5.1.tgz", + "integrity": "sha512-a1p6LF5Jt33O3rZoVRBqdxL350oge54iZWHNI6LJB5tQ7EelvD/Mb1mfBiZNAan0dt4i3VArkFRjA4iObuNykQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=12" }, @@ -20927,8 +10646,9 @@ }, "node_modules/@svgr/babel-preset": { "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/babel-preset/-/babel-preset-6.5.1.tgz", + "integrity": "sha512-6127fvO/FF2oi5EzSQOAjo1LE3OtNVh11R+/8FXa+mHx1ptAaS4cknIjnUA7e6j6fwGGJ17NzaTJFUwOV2zwCw==", "dev": true, - "license": "MIT", "dependencies": { "@svgr/babel-plugin-add-jsx-attribute": "^6.5.1", "@svgr/babel-plugin-remove-jsx-attribute": "*", @@ -20952,8 +10672,9 @@ }, "node_modules/@svgr/core": { "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/core/-/core-6.5.1.tgz", + "integrity": "sha512-/xdLSWxK5QkqG524ONSjvg3V/FkNyCv538OIBdQqPNaAta3AsXj/Bd2FbvR87yMbXO2hFSWiAe/Q6IkVPDw+mw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.19.6", "@svgr/babel-preset": "^6.5.1", @@ -20971,8 +10692,9 @@ }, "node_modules/@svgr/hast-util-to-babel-ast": { "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/hast-util-to-babel-ast/-/hast-util-to-babel-ast-6.5.1.tgz", + "integrity": "sha512-1hnUxxjd83EAxbL4a0JDJoD3Dao3hmjvyvyEV8PzWmLK3B9m9NPlW7GKjFyoWE8nM7HnXzPcmmSyOW8yOddSXw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.20.0", "entities": "^4.4.0" @@ -20987,8 +10709,9 @@ }, "node_modules/@svgr/plugin-jsx": { "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-jsx/-/plugin-jsx-6.5.1.tgz", + "integrity": "sha512-+UdQxI3jgtSjCykNSlEMuy1jSRQlGC7pqBCPvkG/2dATdWo082zHTTK3uhnAju2/6XpE6B5mZ3z4Z8Ns01S8Gw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.19.6", "@svgr/babel-preset": "^6.5.1", @@ -21008,8 +10731,9 @@ }, "node_modules/@svgr/plugin-svgo": { "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/plugin-svgo/-/plugin-svgo-6.5.1.tgz", + "integrity": "sha512-omvZKf8ixP9z6GWgwbtmP9qQMPX4ODXi+wzbVZgomNFsUIlHA1sf4fThdwTWSsZGgvGAG6yE+b/F5gWUkcZ/iQ==", "dev": true, - "license": "MIT", "dependencies": { "cosmiconfig": "^7.0.1", "deepmerge": "^4.2.2", @@ -21028,8 +10752,9 @@ }, "node_modules/@svgr/webpack": { "version": "6.5.1", + "resolved": "https://registry.npmjs.org/@svgr/webpack/-/webpack-6.5.1.tgz", + "integrity": "sha512-cQ/AsnBkXPkEK8cLbv4Dm7JGXq2XrumKnL1dRpJD9rIO2fTIlJI9a1uCciYG1F2aUsox/hJQyNGbt3soDxSRkA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.19.6", "@babel/plugin-transform-react-constant-elements": "^7.18.12", @@ -21050,9 +10775,10 @@ }, "node_modules/@swc/core": { "version": "1.3.100", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.100.tgz", + "integrity": "sha512-7dKgTyxJjlrMwFZYb1auj3Xq0D8ZBe+5oeIgfMlRU05doXZypYJe0LAk0yjj3WdbwYzpF+T1PLxwTWizI0pckw==", "dev": true, "hasInstallScript": true, - "license": "Apache-2.0", "dependencies": { "@swc/counter": "^0.1.1", "@swc/types": "^0.1.5" @@ -21086,6 +10812,8 @@ }, "node_modules/@swc/core-darwin-arm64": { "version": "1.3.100", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.100.tgz", + "integrity": "sha512-XVWFsKe6ei+SsDbwmsuRkYck1SXRpO60Hioa4hoLwR8fxbA9eVp6enZtMxzVVMBi8ej5seZ4HZQeAWepbukiBw==", "cpu": [ "arm64" ], @@ -21099,26 +10827,158 @@ "node": ">=10" } }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.3.100", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.100.tgz", + "integrity": "sha512-KF/MXrnH1nakm1wbt4XV8FS7kvqD9TGmVxeJ0U4bbvxXMvzeYUurzg3AJUTXYmXDhH/VXOYJE5N5RkwZZPs5iA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.100", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.100.tgz", + "integrity": "sha512-p8hikNnAEJrw5vHCtKiFT4hdlQxk1V7vqPmvUDgL/qe2menQDK/i12tbz7/3BEQ4UqUPnvwpmVn2d19RdEMNxw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.100", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.100.tgz", + "integrity": "sha512-BWx/0EeY89WC4q3AaIaBSGfQxkYxIlS3mX19dwy2FWJs/O+fMvF9oLk/CyJPOZzbp+1DjGeeoGFuDYpiNO91JA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.100", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.100.tgz", + "integrity": "sha512-XUdGu3dxAkjsahLYnm8WijPfKebo+jHgHphDxaW0ovI6sTdmEGFDew7QzKZRlbYL2jRkUuuKuDGvD6lO5frmhA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.100", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.100.tgz", + "integrity": "sha512-PhoXKf+f0OaNW/GCuXjJ0/KfK9EJX7z2gko+7nVnEA0p3aaPtbP6cq1Ubbl6CMoPL+Ci3gZ7nYumDqXNc3CtLQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.100", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.100.tgz", + "integrity": "sha512-PwLADZN6F9cXn4Jw52FeP/MCLVHm8vwouZZSOoOScDtihjY495SSjdPnlosMaRSR4wJQssGwiD/4MbpgQPqbAw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.3.100", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.100.tgz", + "integrity": "sha512-0f6nicKSLlDKlyPRl2JEmkpBV4aeDfRQg6n8mPqgL7bliZIcDahG0ej+HxgNjZfS3e0yjDxsNRa6sAqWU2Z60A==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.100", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.100.tgz", + "integrity": "sha512-b7J0rPoMkRTa3XyUGt8PwCaIBuYWsL2DqbirrQKRESzgCvif5iNpqaM6kjIjI/5y5q1Ycv564CB51YDpiS8EtQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, "node_modules/@swc/counter": { "version": "0.1.2", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.2.tgz", + "integrity": "sha512-9F4ys4C74eSTEUNndnER3VJ15oru2NumfQxS8geE+f3eB5xvfxpWyqE5XlVnxb/R14uoXi6SLbBwwiDSkv+XEw==", + "dev": true }, "node_modules/@swc/helpers": { "version": "0.5.3", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@swc/helpers/-/helpers-0.5.3.tgz", + "integrity": "sha512-FaruWX6KdudYloq1AHD/4nU+UsMTdNE8CKyrseXWEcgjDAbvkwJg2QGPAnfIJLIWsjZOSPLOAykK6fuYp4vp4A==", "dependencies": { "tslib": "^2.4.0" } }, "node_modules/@swc/types": { "version": "0.1.5", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", + "dev": true }, "node_modules/@tabler/icons": { "version": "2.42.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@tabler/icons/-/icons-2.42.0.tgz", + "integrity": "sha512-ynV4iaC1c1mUhuAr9HRaoq8KrWYmZ0bJEpOh7qTBE+OfdDsdvQUe+0S7FW+DHkJ4RuxQMdO8djrZK7HrUw9YMA==", "funding": { "type": "github", "url": "https://github.com/sponsors/codecalm" @@ -21126,7 +10986,8 @@ }, "node_modules/@tabler/icons-react": { "version": "2.42.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@tabler/icons-react/-/icons-react-2.42.0.tgz", + "integrity": "sha512-2APr++u24P2mx9vJymJQJORRpu2Qej0rPrtAvgXu8YomHjLXVP+O1VtToSGyoSPH1ysA569XbxrwzOau9Ne12A==", "dependencies": { "@tabler/icons": "2.42.0", "prop-types": "^15.7.2" @@ -21141,8 +11002,9 @@ }, "node_modules/@testing-library/dom": { "version": "9.3.3", + "resolved": "https://registry.npmjs.org/@testing-library/dom/-/dom-9.3.3.tgz", + "integrity": "sha512-fB0R+fa3AUqbLHWyxXa2kGVtf1Fe1ZZFr0Zp6AIbIAzXb2mKbEXl+PCQNUOaq5lbTab5tfctfXRNsWXxa2f7Aw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -21159,8 +11021,9 @@ }, "node_modules/@testing-library/dom/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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -21173,8 +11036,9 @@ }, "node_modules/@testing-library/dom/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, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -21188,16 +11052,18 @@ }, "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", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "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", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -21207,8 +11073,9 @@ }, "node_modules/@testing-library/jest-dom": { "version": "5.17.0", + "resolved": "https://registry.npmjs.org/@testing-library/jest-dom/-/jest-dom-5.17.0.tgz", + "integrity": "sha512-ynmNeT7asXyH3aSVv4vvX4Rb+0qjOhdNHnO/3vuZNqPmhDpV/+rCSGwQ7bLcmU2cJ4dvoheIO85LQj0IbJHEtg==", "dev": true, - "license": "MIT", "dependencies": { "@adobe/css-tools": "^4.0.1", "@babel/runtime": "^7.9.2", @@ -21228,8 +11095,9 @@ }, "node_modules/@testing-library/jest-dom/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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -21242,8 +11110,9 @@ }, "node_modules/@testing-library/jest-dom/node_modules/chalk": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-3.0.0.tgz", + "integrity": "sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -21254,16 +11123,18 @@ }, "node_modules/@testing-library/jest-dom/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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@testing-library/jest-dom/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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -21273,8 +11144,9 @@ }, "node_modules/@testing-library/react": { "version": "13.4.0", + "resolved": "https://registry.npmjs.org/@testing-library/react/-/react-13.4.0.tgz", + "integrity": "sha512-sXOGON+WNTh3MLE9rve97ftaZukN3oNf2KjDy7YTx6hcTO2uuLHuCGynMDhFwGw/jYf4OJ2Qk0i4i79qMNNkyw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/runtime": "^7.12.5", "@testing-library/dom": "^8.5.0", @@ -21290,8 +11162,9 @@ }, "node_modules/@testing-library/react/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==", "dev": true, - "license": "MIT", "dependencies": { "@babel/code-frame": "^7.10.4", "@babel/runtime": "^7.12.5", @@ -21308,8 +11181,9 @@ }, "node_modules/@testing-library/react/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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -21322,8 +11196,9 @@ }, "node_modules/@testing-library/react/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, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -21337,16 +11212,18 @@ }, "node_modules/@testing-library/react/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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/@testing-library/react/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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -21356,8 +11233,9 @@ }, "node_modules/@testing-library/user-event": { "version": "14.5.1", + "resolved": "https://registry.npmjs.org/@testing-library/user-event/-/user-event-14.5.1.tgz", + "integrity": "sha512-UCcUKrUYGj7ClomOo2SpNVvx4/fkd/2BbIHDCle8A0ax+P3bU7yJwDBDrS6ZwdTMARWTGODX1hEsCcO+7beJjg==", "dev": true, - "license": "MIT", "engines": { "node": ">=12", "npm": ">=6" @@ -21366,29 +11244,57 @@ "@testing-library/dom": ">=7.21.4" } }, + "node_modules/@textea/json-viewer": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/@textea/json-viewer/-/json-viewer-3.3.2.tgz", + "integrity": "sha512-YE2n8dkQguLdbxYr3lLAycfxC6zqPVq//h4YPNyA4BsXJG792jPAoUYWXjV9KyHL/YG3qUJx1aur04HTslW6Cg==", + "dependencies": { + "clsx": "^2.0.0", + "copy-to-clipboard": "^3.3.3", + "zustand": "^4.4.7" + }, + "peerDependencies": { + "@emotion/react": "^11", + "@emotion/styled": "^11", + "@mui/material": "^5", + "react": "^17 || ^18", + "react-dom": "^17 || ^18" + } + }, + "node_modules/@textea/json-viewer/node_modules/clsx": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/clsx/-/clsx-2.1.0.tgz", + "integrity": "sha512-m3iNNWpd9rl3jvvcBnu70ylMdrXt8Vlq4HYadnU5fwcOtvkSQWPmj7amUcDT2qYI7risszBjI5AUIUox9D16pg==", + "engines": { + "node": ">=6" + } + }, "node_modules/@tooljet/plugins": { "resolved": "../plugins", "link": true }, "node_modules/@tootallnate/once": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@tootallnate/once/-/once-2.0.0.tgz", + "integrity": "sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/@trysound/sax": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", "dev": true, - "license": "ISC", "engines": { "node": ">=10.13.0" } }, "node_modules/@turf/area": { "version": "6.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@turf/area/-/area-6.5.0.tgz", + "integrity": "sha512-xCZdiuojokLbQ+29qR6qoMD89hv+JAgWjLrwSEWL+3JV8IXKeNFl6XkEJz9HGkVpnXvQKJoRz4/liT+8ZZ5Jyg==", "peer": true, "dependencies": { "@turf/helpers": "^6.5.0", @@ -21400,7 +11306,8 @@ }, "node_modules/@turf/bbox": { "version": "6.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-6.5.0.tgz", + "integrity": "sha512-RBbLaao5hXTYyyg577iuMtDB8ehxMlUqHEJiMs8jT1GHkFhr6sYre3lmLsPeYEi/ZKj5TP5tt7fkzNdJ4GIVyw==", "peer": true, "dependencies": { "@turf/helpers": "^6.5.0", @@ -21412,7 +11319,8 @@ }, "node_modules/@turf/centroid": { "version": "6.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-6.5.0.tgz", + "integrity": "sha512-MwE1oq5E3isewPprEClbfU5pXljIK/GUOMbn22UM3IFPDJX0KeoyLNwghszkdmFp/qMGL/M13MMWvU+GNLXP/A==", "peer": true, "dependencies": { "@turf/helpers": "^6.5.0", @@ -21424,7 +11332,8 @@ }, "node_modules/@turf/helpers": { "version": "6.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-6.5.0.tgz", + "integrity": "sha512-VbI1dV5bLFzohYYdgqwikdMVpe7pJ9X3E+dlr425wa2/sMJqYDhTO++ec38/pcPvPE6oD9WEEeU3Xu3gza+VPw==", "peer": true, "funding": { "url": "https://opencollective.com/turf" @@ -21432,7 +11341,8 @@ }, "node_modules/@turf/meta": { "version": "6.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-6.5.0.tgz", + "integrity": "sha512-RrArvtsV0vdsCBegoBtOalgdSOfkBrTJ07VkpiCnq/491W67hnMWmDu7e6Ztw0C3WldRYTXkg3SumfdzZxLBHA==", "peer": true, "dependencies": { "@turf/helpers": "^6.5.0" @@ -21443,13 +11353,15 @@ }, "node_modules/@types/aria-query": { "version": "5.0.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/aria-query/-/aria-query-5.0.4.tgz", + "integrity": "sha512-rfT93uj5s0PRL7EzccGMs3brplhcrghnDoV26NqKhCAS1hVo+WdNsPvE/yb6ilfr5hi2MEk6d5EWJTKdxg8jVw==", + "dev": true }, "node_modules/@types/babel__core": { "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/parser": "^7.20.7", "@babel/types": "^7.20.7", @@ -21460,16 +11372,18 @@ }, "node_modules/@types/babel__generator": { "version": "7.6.7", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.7.tgz", + "integrity": "sha512-6Sfsq+EaaLrw4RmdFWE9Onp63TOUue71AWb4Gpa6JxzgTYtimbM086WnYTy2U67AofR++QKCo08ZP6pwx8YFHQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.0.0" } }, "node_modules/@types/babel__template": { "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", "dev": true, - "license": "MIT", "dependencies": { "@babel/parser": "^7.1.0", "@babel/types": "^7.0.0" @@ -21477,20 +11391,23 @@ }, "node_modules/@types/babel__traverse": { "version": "7.20.4", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.4.tgz", + "integrity": "sha512-mSM/iKUk5fDDrEV/e83qY+Cr3I1+Q3qqTuEn++HAWYjEa1+NxZr6CNrcJGf2ZTnq4HoFGC3zaTPZTobCzCFukA==", "dev": true, - "license": "MIT", "dependencies": { "@babel/types": "^7.20.7" } }, "node_modules/@types/base16": { "version": "1.0.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/base16/-/base16-1.0.5.tgz", + "integrity": "sha512-OzOWrTluG9cwqidEzC/Q6FAmIPcnZfm8BFRlIx0+UIUqnuAmi5OS88O0RpT3Yz6qdmqObvUhasrbNsCofE4W9A==" }, "node_modules/@types/body-parser": { "version": "1.19.5", + "resolved": "https://registry.npmjs.org/@types/body-parser/-/body-parser-1.19.5.tgz", + "integrity": "sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==", "dev": true, - "license": "MIT", "dependencies": { "@types/connect": "*", "@types/node": "*" @@ -21498,24 +11415,27 @@ }, "node_modules/@types/bonjour": { "version": "3.5.13", + "resolved": "https://registry.npmjs.org/@types/bonjour/-/bonjour-3.5.13.tgz", + "integrity": "sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/connect": { "version": "3.4.38", + "resolved": "https://registry.npmjs.org/@types/connect/-/connect-3.4.38.tgz", + "integrity": "sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/connect-history-api-fallback": { "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/connect-history-api-fallback/-/connect-history-api-fallback-1.5.4.tgz", + "integrity": "sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==", "dev": true, - "license": "MIT", "dependencies": { "@types/express-serve-static-core": "*", "@types/node": "*" @@ -21523,6 +11443,8 @@ }, "node_modules/@types/cross-spawn": { "version": "6.0.6", + "resolved": "https://registry.npmjs.org/@types/cross-spawn/-/cross-spawn-6.0.6.tgz", + "integrity": "sha512-fXRhhUkG4H3TQk5dBhQ7m/JDdSNHKwR2BBia62lhwEIq9xGiQKLxd6LymNhn47SjXhsUEPmxi+PKw2OkW4LLjA==", "dev": true, "license": "MIT", "dependencies": { @@ -21539,8 +11461,9 @@ }, "node_modules/@types/detect-port": { "version": "1.3.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/detect-port/-/detect-port-1.3.5.tgz", + "integrity": "sha512-Rf3/lB9WkDfIL9eEKaSYKc+1L/rNVYBjThk22JTqQw0YozXarX8YljFAz+HCoC6h4B4KwCMsBPZHaFezwT4BNA==", + "dev": true }, "node_modules/@types/doctrine": { "version": "0.0.3", @@ -21549,13 +11472,15 @@ }, "node_modules/@types/ejs": { "version": "3.1.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/ejs/-/ejs-3.1.5.tgz", + "integrity": "sha512-nv+GSx77ZtXiJzwKdsASqi+YQ5Z7vwHsTP0JY2SiQgjGckkBRKZnk8nIM+7oUZ1VCtuTz0+By4qVR7fqzp/Dfg==", + "dev": true }, "node_modules/@types/emscripten": { "version": "1.39.10", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/emscripten/-/emscripten-1.39.10.tgz", + "integrity": "sha512-TB/6hBkYQJxsZHSqyeuO1Jt0AB/bW6G7rHt9g7lML7SOF6lbgcHvw/Lr+69iqN0qxgXLhWKScAon73JNnptuDw==", + "dev": true }, "node_modules/@types/escodegen": { "version": "0.0.6", @@ -21564,7 +11489,8 @@ }, "node_modules/@types/eslint": { "version": "8.44.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.44.8.tgz", + "integrity": "sha512-4K8GavROwhrYl2QXDXm0Rv9epkA8GBFu0EI+XrrnnuCl7u8CWBRusX7fXJfanhZTDWSAL24gDI/UqXyUM0Injw==", "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -21572,7 +11498,8 @@ }, "node_modules/@types/eslint-scope": { "version": "3.7.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", + "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -21580,7 +11507,8 @@ }, "node_modules/@types/estree": { "version": "0.0.51", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-0.0.51.tgz", + "integrity": "sha512-CuPgU6f3eT/XgKKPqKd/gLZV1Xmvf1a2R5POBOGQa6uv82xpls89HU5zKeVoyR8XzHd1RGNOlQlvUe3CFkjWNQ==" }, "node_modules/@types/estree-jsx": { "version": "1.0.4", @@ -21592,8 +11520,9 @@ }, "node_modules/@types/express": { "version": "4.17.21", + "resolved": "https://registry.npmjs.org/@types/express/-/express-4.17.21.tgz", + "integrity": "sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/body-parser": "*", "@types/express-serve-static-core": "^4.17.33", @@ -21603,8 +11532,9 @@ }, "node_modules/@types/express-serve-static-core": { "version": "4.17.41", + "resolved": "https://registry.npmjs.org/@types/express-serve-static-core/-/express-serve-static-core-4.17.41.tgz", + "integrity": "sha512-OaJ7XLaelTgrvlZD8/aa0vvvxZdUmlCn6MtWeB7TkiKW70BQLc9XEPpDLPdbo52ZhXUCrznlWdCHWxJWtdyajA==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", "@types/qs": "*", @@ -21619,12 +11549,14 @@ }, "node_modules/@types/google.maps": { "version": "3.53.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/google.maps/-/google.maps-3.53.5.tgz", + "integrity": "sha512-HoRq4Te8J6krH7hj+TfdYepqegoKZCj3kkaK5gf+ySFSHLvyqYkDvkrtbcVJXQ6QBphQ0h1TF7p4J6sOh4r/zg==" }, "node_modules/@types/graceful-fs": { "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } @@ -21639,7 +11571,8 @@ }, "node_modules/@types/hoist-non-react-statics": { "version": "3.3.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/hoist-non-react-statics/-/hoist-non-react-statics-3.3.5.tgz", + "integrity": "sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==", "dependencies": { "@types/react": "*", "hoist-non-react-statics": "^3.3.0" @@ -21647,44 +11580,51 @@ }, "node_modules/@types/html-minifier-terser": { "version": "6.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==", + "dev": true }, "node_modules/@types/http-errors": { "version": "2.0.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/http-errors/-/http-errors-2.0.4.tgz", + "integrity": "sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==", + "dev": true }, "node_modules/@types/http-proxy": { "version": "1.17.14", + "resolved": "https://registry.npmjs.org/@types/http-proxy/-/http-proxy-1.17.14.tgz", + "integrity": "sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/istanbul-lib-coverage": { "version": "2.0.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==" }, "node_modules/@types/istanbul-lib-report": { "version": "3.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", "dependencies": { "@types/istanbul-lib-coverage": "*" } }, "node_modules/@types/istanbul-reports": { "version": "3.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", "dependencies": { "@types/istanbul-lib-report": "*" } }, "node_modules/@types/jest": { "version": "29.5.10", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.10.tgz", + "integrity": "sha512-tE4yxKEphEyxj9s4inideLHktW/x6DwesIwWZ9NN1FKf9zbJYsnhBoA9vrHA/IuIOKwPa5PcFBNV4lpMIOEzyQ==", "dev": true, - "license": "MIT", "dependencies": { "expect": "^29.0.0", "pretty-format": "^29.0.0" @@ -21692,8 +11632,9 @@ }, "node_modules/@types/jest/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, - "license": "MIT", "engines": { "node": ">=10" }, @@ -21703,8 +11644,9 @@ }, "node_modules/@types/jest/node_modules/pretty-format": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -21716,21 +11658,25 @@ }, "node_modules/@types/jest/node_modules/react-is": { "version": "18.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true }, "node_modules/@types/json-schema": { "version": "7.0.15", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==" }, "node_modules/@types/json5": { "version": "0.0.29", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true }, "node_modules/@types/lodash": { "version": "4.14.202", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.202.tgz", + "integrity": "sha512-OvlIYQK9tNneDlS0VN54LLd5uiPCBOp7gS5Z0f1mjoJYBrtStzgmJBxONW3U6OZqdtNzZPmn9BS/7WI7BFFcFQ==" }, "node_modules/@types/mdast": { "version": "4.0.3", @@ -21742,23 +11688,27 @@ }, "node_modules/@types/mdx": { "version": "2.0.10", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/mdx/-/mdx-2.0.10.tgz", + "integrity": "sha512-Rllzc5KHk0Al5/WANwgSPl1/CwjqCy+AZrGd78zuK+jO9aDM6ffblZ+zIjgPNAaEBmlO0RYDvLNh7wD0zKVgEg==", + "dev": true }, "node_modules/@types/mime": { "version": "1.3.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/mime/-/mime-1.3.5.tgz", + "integrity": "sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==", + "dev": true }, "node_modules/@types/mime-types": { "version": "2.1.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/mime-types/-/mime-types-2.1.4.tgz", + "integrity": "sha512-lfU4b34HOri+kAY5UheuFMWPDOI+OPceBSHZKp69gEyTL/mmJ4cnU6Y/rlme3UL3GyOn6Y42hyIEw0/q8sWx5w==", + "dev": true }, "node_modules/@types/minimist": { "version": "1.2.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/minimist/-/minimist-1.2.5.tgz", + "integrity": "sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==", + "dev": true }, "node_modules/@types/ms": { "version": "0.7.34", @@ -21767,13 +11717,16 @@ }, "node_modules/@types/node": { "version": "20.10.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.10.2.tgz", + "integrity": "sha512-37MXfxkb0vuIlRKHNxwCkb60PNBpR94u4efQuN4JgIAm66zfCDXGSAFCef9XUWFovX2R1ok6Z7MHhtdVXXkkIw==", "dependencies": { "undici-types": "~5.26.4" } }, "node_modules/@types/node-fetch": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/@types/node-fetch/-/node-fetch-2.6.9.tgz", + "integrity": "sha512-bQVlnMLFJ2d35DkPNjEPmd9ueO/rh5EiaZt2bhqiSarPjZIuIV6bPQVqcrEyvNo+AfTrRGVazle1tl597w3gfA==", "dev": true, "license": "MIT", "dependencies": { @@ -21783,6 +11736,8 @@ }, "node_modules/@types/node-forge": { "version": "1.3.10", + "resolved": "https://registry.npmjs.org/@types/node-forge/-/node-forge-1.3.10.tgz", + "integrity": "sha512-y6PJDYN4xYBxwd22l+OVH35N+1fCYWiuC3aiP2SlXVE6Lo7SS+rSx9r89hLxrP4pn6n1lBGhHJ12pj3F3Mpttw==", "dev": true, "license": "MIT", "dependencies": { @@ -21791,40 +11746,48 @@ }, "node_modules/@types/normalize-package-data": { "version": "2.4.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/normalize-package-data/-/normalize-package-data-2.4.4.tgz", + "integrity": "sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==", + "dev": true }, "node_modules/@types/parse-json": { "version": "4.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.2.tgz", + "integrity": "sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==" }, "node_modules/@types/pretty-hrtime": { "version": "1.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-nj39q0wAIdhwn7DGUyT9irmsKK1tV0bd5WFEhgpqNTMFZ8cE+jieuTphCW0tfdm47S2zVT5mr09B28b1chmQMA==", + "dev": true }, "node_modules/@types/prop-types": { "version": "15.7.11", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/prop-types/-/prop-types-15.7.11.tgz", + "integrity": "sha512-ga8y9v9uyeiLdpKddhxYQkxNDrfvuPrlFb0N1qnZZByvcElJaXthF1UhvCh9TLWJBEHeNtdnbysW7Y6Uq8CVng==" }, "node_modules/@types/qs": { "version": "6.9.10", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.10.tgz", + "integrity": "sha512-3Gnx08Ns1sEoCrWssEgTSJs/rsT2vhGP+Ja9cnnk9k4ALxinORlQneLXFeFKOTJMOeZUFD1s7w+w2AphTpvzZw==", + "dev": true }, "node_modules/@types/raf": { "version": "3.4.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/raf/-/raf-3.4.3.tgz", + "integrity": "sha512-c4YAvMedbPZ5tEyxzQdMoOhhJ4RD3rngZIdwC2/qDN3d7JpEhB6fiBRKVY1lg5B7Wk+uPBjn5f39j1/2MY1oOw==", "optional": true }, "node_modules/@types/range-parser": { "version": "1.2.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/range-parser/-/range-parser-1.2.7.tgz", + "integrity": "sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==", + "dev": true }, "node_modules/@types/react": { "version": "18.2.41", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/react/-/react-18.2.41.tgz", + "integrity": "sha512-CwOGr/PiLiNBxEBqpJ7fO3kocP/2SSuC9fpH5K7tusrg4xPSRT/193rzolYwQnTN02We/ATXKnb6GqA5w4fRxw==", "dependencies": { "@types/prop-types": "*", "@types/scheduler": "*", @@ -21833,15 +11796,17 @@ }, "node_modules/@types/react-dom": { "version": "18.2.17", + "resolved": "https://registry.npmjs.org/@types/react-dom/-/react-dom-18.2.17.tgz", + "integrity": "sha512-rvrT/M7Df5eykWFxn6MYt5Pem/Dbyc1N8Y0S9Mrkw2WFCRiqUgw9P7ul2NpwsXCSM1DVdENzdG9J5SreqfAIWg==", "devOptional": true, - "license": "MIT", "dependencies": { "@types/react": "*" } }, "node_modules/@types/react-reconciler": { "version": "0.26.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.26.7.tgz", + "integrity": "sha512-mBDYl8x+oyPX/VBb3E638N0B7xG+SPk/EAMcVPeexqus/5aTpTphQi0curhhshOqRrc9t6OPoJfEUkbymse/lQ==", "peer": true, "dependencies": { "@types/react": "*" @@ -21849,7 +11814,8 @@ }, "node_modules/@types/react-redux": { "version": "7.1.31", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/react-redux/-/react-redux-7.1.31.tgz", + "integrity": "sha512-merF9AH72krBUekQY6uObXnMsEo1xTeZy9NONNRnqSwvwVe3HtLeRvNIPaKmPDIOWPsSFE51rc2WGpPMqmuCWg==", "dependencies": { "@types/hoist-non-react-statics": "^3.3.0", "@types/react": "*", @@ -21858,35 +11824,41 @@ } }, "node_modules/@types/react-transition-group": { - "version": "4.4.9", - "license": "MIT", + "version": "4.4.10", + "resolved": "https://registry.npmjs.org/@types/react-transition-group/-/react-transition-group-4.4.10.tgz", + "integrity": "sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==", "dependencies": { "@types/react": "*" } }, "node_modules/@types/resolve": { "version": "1.20.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.6.tgz", + "integrity": "sha512-A4STmOXPhMUtHH+S6ymgE2GiBSMqf4oTvcQZMcHzokuTLVYzXTB8ttjcgxOVaAp2lGwEdzZ0J+cRbbeevQj1UQ==", + "dev": true }, "node_modules/@types/retry": { "version": "0.12.0", - "dev": true, - "license": "MIT" + "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.8", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/scheduler/-/scheduler-0.16.8.tgz", + "integrity": "sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==" }, "node_modules/@types/semver": { "version": "7.5.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.6.tgz", + "integrity": "sha512-dn1l8LaMea/IjDoHNd9J52uBbInB796CDffS6VdIxvqYCPSG0V0DzHp76GpaWnlhg88uYyPbXCDIowa86ybd5A==", + "dev": true }, "node_modules/@types/send": { "version": "0.17.4", + "resolved": "https://registry.npmjs.org/@types/send/-/send-0.17.4.tgz", + "integrity": "sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==", "dev": true, - "license": "MIT", "dependencies": { "@types/mime": "^1", "@types/node": "*" @@ -21894,16 +11866,18 @@ }, "node_modules/@types/serve-index": { "version": "1.9.4", + "resolved": "https://registry.npmjs.org/@types/serve-index/-/serve-index-1.9.4.tgz", + "integrity": "sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==", "dev": true, - "license": "MIT", "dependencies": { "@types/express": "*" } }, "node_modules/@types/serve-static": { "version": "1.15.5", + "resolved": "https://registry.npmjs.org/@types/serve-static/-/serve-static-1.15.5.tgz", + "integrity": "sha512-PDRk21MnK70hja/YF8AHfC7yIsiQHn1rcXx7ijCFBX/k+XQJhQT/gw3xekXKJvx+5SXaMMS8oqQy09Mzvz2TuQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/http-errors": "*", "@types/mime": "*", @@ -21912,65 +11886,76 @@ }, "node_modules/@types/sockjs": { "version": "0.3.36", + "resolved": "https://registry.npmjs.org/@types/sockjs/-/sockjs-0.3.36.tgz", + "integrity": "sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/stack-utils": { "version": "2.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==" }, "node_modules/@types/testing-library__jest-dom": { "version": "5.14.9", + "resolved": "https://registry.npmjs.org/@types/testing-library__jest-dom/-/testing-library__jest-dom-5.14.9.tgz", + "integrity": "sha512-FSYhIjFlfOpGSRyVoMBMuS3ws5ehFQODymf3vlI7U1K8c7PHwWwFY7VREfmsuzHSOnoKs/9/Y983ayOs7eRzqw==", "dev": true, - "license": "MIT", "dependencies": { "@types/jest": "*" } }, "node_modules/@types/unist": { "version": "2.0.10", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/unist/-/unist-2.0.10.tgz", + "integrity": "sha512-IfYcSBWE3hLpBg8+X2SEa8LVkJdJEkT2Ese2aaLs3ptGdVtABxndrMaxuFlQ1qdFf9Q5rDvDpxI3WwgvKFAsQA==" }, "node_modules/@types/uuid": { "version": "9.0.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-9.0.7.tgz", + "integrity": "sha512-WUtIVRUZ9i5dYXefDEAI7sh9/O7jGvHg7Df/5O/gtH3Yabe5odI3UWopVR1qbPXQtvOxWu3mM4XxlYeZtMWF4g==", + "dev": true }, "node_modules/@types/warning": { "version": "3.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/warning/-/warning-3.0.3.tgz", + "integrity": "sha512-D1XC7WK8K+zZEveUPY+cf4+kgauk8N4eHr/XIHXGlGYkHLud6hK9lYfZk1ry1TNh798cZUCgb6MqGEG8DkJt6Q==" }, "node_modules/@types/webxr": { "version": "0.5.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/webxr/-/webxr-0.5.10.tgz", + "integrity": "sha512-n3u5sqXQJhf1CS68mw3Wf16FQ4cRPNBBwdYLFzq3UddiADOim1Pn3Y6PBdDilz1vOJF3ybLxJ8ZEDlLIzrOQZg==", "peer": true }, "node_modules/@types/ws": { "version": "8.5.10", + "resolved": "https://registry.npmjs.org/@types/ws/-/ws-8.5.10.tgz", + "integrity": "sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*" } }, "node_modules/@types/yargs": { "version": "17.0.32", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.32.tgz", + "integrity": "sha512-xQ67Yc/laOG5uMfX/093MRlGGCIBzZMarVa+gfNKJxWAIgykYpVGkBdbqEzGDDfCrVUj6Hiff4mTZ5BA6TmAog==", "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/@types/yargs-parser": { "version": "21.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==" }, "node_modules/@typescript-eslint/scope-manager": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-5.62.0.tgz", + "integrity": "sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0" @@ -21985,8 +11970,9 @@ }, "node_modules/@typescript-eslint/types": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-5.62.0.tgz", + "integrity": "sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==", "dev": true, - "license": "MIT", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -21997,8 +11983,9 @@ }, "node_modules/@typescript-eslint/typescript-estree": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-5.62.0.tgz", + "integrity": "sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "@typescript-eslint/types": "5.62.0", "@typescript-eslint/visitor-keys": "5.62.0", @@ -22023,8 +12010,9 @@ }, "node_modules/@typescript-eslint/utils": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-5.62.0.tgz", + "integrity": "sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==", "dev": true, - "license": "MIT", "dependencies": { "@eslint-community/eslint-utils": "^4.2.0", "@types/json-schema": "^7.0.9", @@ -22048,8 +12036,9 @@ }, "node_modules/@typescript-eslint/visitor-keys": { "version": "5.62.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-5.62.0.tgz", + "integrity": "sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/types": "5.62.0", "eslint-visitor-keys": "^3.3.0" @@ -22064,8 +12053,9 @@ }, "node_modules/@typescript-eslint/visitor-keys/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, - "license": "Apache-2.0", "engines": { "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, @@ -22073,27 +12063,106 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/@uiw/react-codemirror": { - "version": "3.2.10", - "license": "MIT", + "node_modules/@uiw/codemirror-extensions-basic-setup": { + "version": "4.21.21", + "resolved": "https://registry.npmjs.org/@uiw/codemirror-extensions-basic-setup/-/codemirror-extensions-basic-setup-4.21.21.tgz", + "integrity": "sha512-+0i9dPrRSa8Mf0CvyrMvnAhajnqwsP3IMRRlaHDRgsSGL8igc4z7MhvUPn+7cWFAAqWzQRhMdMSWzo6/TEa3EA==", "dependencies": { - "@babel/runtime": "^7.18.9", - "codemirror": "^5.65.8" + "@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" + }, + "funding": { + "url": "https://jaywcjlove.github.io/#/sponsor" + }, + "peerDependencies": { + "@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/@uiw/codemirror-theme-github": { + "version": "4.21.21", + "resolved": "https://registry.npmjs.org/@uiw/codemirror-theme-github/-/codemirror-theme-github-4.21.21.tgz", + "integrity": "sha512-msrpNrKk/CZQHk58TshI8aH7FpEyL404m/vWlGUdL2jGW7IRKm0nXn1lXXQ/snzk65h88GO6u9fiiv0pxRuZfQ==", + "dependencies": { + "@uiw/codemirror-themes": "4.21.21" + }, + "funding": { + "url": "https://jaywcjlove.github.io/#/sponsor" + } + }, + "node_modules/@uiw/codemirror-theme-okaidia": { + "version": "4.21.21", + "resolved": "https://registry.npmjs.org/@uiw/codemirror-theme-okaidia/-/codemirror-theme-okaidia-4.21.21.tgz", + "integrity": "sha512-jZQ3YV+taTroqGmnAnFwU1uhAc+BZmuN1vjOJ9of7b6nmav1cohd8pdinZgDLag/ZrJt6TVr/KYBH8NF1Sm//g==", + "dependencies": { + "@uiw/codemirror-themes": "4.21.21" + }, + "funding": { + "url": "https://jaywcjlove.github.io/#/sponsor" + } + }, + "node_modules/@uiw/codemirror-themes": { + "version": "4.21.21", + "resolved": "https://registry.npmjs.org/@uiw/codemirror-themes/-/codemirror-themes-4.21.21.tgz", + "integrity": "sha512-ljVcMGdaxo75UaH+EqxJ+jLyMVVgeSfW2AKyT1VeLy+4SDpuqNQ7wq5XVxktsG6LH+OvgSFndWXgPANf4+gQcA==", + "dependencies": { + "@codemirror/language": "^6.0.0", + "@codemirror/state": "^6.0.0", + "@codemirror/view": "^6.0.0" + }, + "funding": { + "url": "https://jaywcjlove.github.io/#/sponsor" + }, + "peerDependencies": { + "@codemirror/language": ">=6.0.0", + "@codemirror/state": ">=6.0.0", + "@codemirror/view": ">=6.0.0" + } + }, + "node_modules/@uiw/react-codemirror": { + "version": "4.21.21", + "resolved": "https://registry.npmjs.org/@uiw/react-codemirror/-/react-codemirror-4.21.21.tgz", + "integrity": "sha512-PaxBMarufMWoR0qc5zuvBSt76rJ9POm9qoOaJbqRmnNL2viaF+d+Paf2blPSlm1JSnqn7hlRjio+40nZJ9TKzw==", + "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.21", + "codemirror": "^6.0.0" + }, + "funding": { + "url": "https://jaywcjlove.github.io/#/sponsor" }, "peerDependencies": { "@babel/runtime": ">=7.11.0", - "codemirror": ">=5.49.2", + "@codemirror/state": ">=6.0.0", + "@codemirror/theme-one-dark": ">=6.0.0", + "@codemirror/view": ">=6.0.0", + "codemirror": ">=6.0.0", "react": ">=16.8.0", "react-dom": ">=16.8.0" } }, "node_modules/@ungap/structured-clone": { "version": "1.2.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==" }, "node_modules/@webassemblyjs/ast": { "version": "1.11.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.6.tgz", + "integrity": "sha512-IN1xI7PwOvLPgjcf180gC1bqn3q/QaOCwYUahIOhbYUu8KA/3tw2RT/T0Gidi1l7Hhj5D/INhJxiICObqpMu4Q==", "dependencies": { "@webassemblyjs/helper-numbers": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6" @@ -22101,19 +12170,23 @@ }, "node_modules/@webassemblyjs/floating-point-hex-parser": { "version": "1.11.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", + "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==" }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", + "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==" }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.11.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.6.tgz", + "integrity": "sha512-z3nFzdcp1mb8nEOFFk8DrYLpHvhKC3grJD2ardfKOzmbmJvEf/tPIqCY+sNcwZIY8ZD7IkB2l7/pqhUhqm7hLA==" }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", + "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -22122,11 +12195,13 @@ }, "node_modules/@webassemblyjs/helper-wasm-bytecode": { "version": "1.11.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", + "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==" }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.11.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.6.tgz", + "integrity": "sha512-LPpZbSOwTpEC2cgn4hTydySy1Ke+XEu+ETXuoyvuyezHO3Kjdu90KK95Sh9xTbmjrCsUwvWwCOQQNta37VrS9g==", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -22136,25 +12211,29 @@ }, "node_modules/@webassemblyjs/ieee754": { "version": "1.11.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", + "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", "dependencies": { "@xtuc/ieee754": "^1.2.0" } }, "node_modules/@webassemblyjs/leb128": { "version": "1.11.6", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", + "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", "dependencies": { "@xtuc/long": "4.2.2" } }, "node_modules/@webassemblyjs/utf8": { "version": "1.11.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", + "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==" }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.11.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.6.tgz", + "integrity": "sha512-Ybn2I6fnfIGuCR+Faaz7YcvtBKxvoLV3Lebn1tM4o/IAJzmi9AWYIPWpyBfU8cC+JxAO57bk4+zdsTjJR+VTOw==", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -22168,7 +12247,8 @@ }, "node_modules/@webassemblyjs/wasm-gen": { "version": "1.11.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.6.tgz", + "integrity": "sha512-3XOqkZP/y6B4F0PBAXvI1/bky7GryoogUtfwExeP/v7Nzwo1QLcq5oQmpKlftZLbT+ERUOAZVQjuNVak6UXjPA==", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-wasm-bytecode": "1.11.6", @@ -22179,7 +12259,8 @@ }, "node_modules/@webassemblyjs/wasm-opt": { "version": "1.11.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.6.tgz", + "integrity": "sha512-cOrKuLRE7PCe6AsOVl7WasYf3wbSo4CeOk6PkrjS7g57MFfVUF9u6ysQBBODX0LdgSvQqRiGz3CXvIDKcPNy4g==", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-buffer": "1.11.6", @@ -22189,7 +12270,8 @@ }, "node_modules/@webassemblyjs/wasm-parser": { "version": "1.11.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.6.tgz", + "integrity": "sha512-6ZwPeGzMJM3Dqp3hCsLgESxBGtT/OeCvCZ4TA1JUPYgmhAx38tTPR9JaKy0S5H3evQpO/h2uWs2j6Yc/fjkpTQ==", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@webassemblyjs/helper-api-error": "1.11.6", @@ -22201,7 +12283,8 @@ }, "node_modules/@webassemblyjs/wast-printer": { "version": "1.11.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.6.tgz", + "integrity": "sha512-JM7AhRcE+yW2GWYaKeHL5vt4xqee5N2WcezptmgyhNS+ScggqcT1OtXykhAb13Sn5Yas0j2uv9tHgrjwvzAP4A==", "dependencies": { "@webassemblyjs/ast": "1.11.6", "@xtuc/long": "4.2.2" @@ -22209,8 +12292,9 @@ }, "node_modules/@webpack-cli/configtest": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.15.0" }, @@ -22221,8 +12305,9 @@ }, "node_modules/@webpack-cli/info": { "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, - "license": "MIT", "engines": { "node": ">=14.15.0" }, @@ -22233,8 +12318,9 @@ }, "node_modules/@webpack-cli/serve": { "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=14.15.0" }, @@ -22250,15 +12336,18 @@ }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==" }, "node_modules/@xtuc/long": { "version": "4.2.2", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==" }, "node_modules/@y-presence/client": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@y-presence/client/-/client-2.0.1.tgz", + "integrity": "sha512-E6tANH7ztoIpTLCM9RcLaZsWOvKG15YfWX4L08Wiryq03Nv+bbzFvV2TGq4QCVHfsTcD2AJ2hQP46lMwzI3sng==", "dependencies": { "y-webrtc": "^10.2.3", "y-websocket": "^1.4.3" @@ -22266,7 +12355,8 @@ }, "node_modules/@y-presence/react": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@y-presence/react/-/react-2.0.1.tgz", + "integrity": "sha512-cUwihDtzaTP6aqeY19JPpxQEL6enghkboUxE3Mi8AlgUfRtlwm/GI4COFnkXAgOvMJtKllPSt8nPcX0OUwdbcA==", "dependencies": { "@y-presence/client": "*", "y-webrtc": "^10.2.3", @@ -22326,12 +12416,14 @@ }, "node_modules/abbrev": { "version": "1.1.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz", + "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==", + "dev": true }, "node_modules/abort-controller": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", + "integrity": "sha512-h8lQ8tacZYnR3vNQTgibj+tODHI5/+l06Au2Pcriv/Gmet0eaj4TwWH41sO9wnHDiQsEj19q0drzdWdeAHtweg==", "peer": true, "dependencies": { "event-target-shim": "^5.0.0" @@ -22342,12 +12434,14 @@ }, "node_modules/abs-svg-path": { "version": "0.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/abs-svg-path/-/abs-svg-path-0.1.1.tgz", + "integrity": "sha512-d8XPSGjfyzlXC3Xx891DJRyZfqk5JU0BJrDQcsWomFIV1/BIzPW5HDH5iDdWpqWaav0YVIEzT1RHTwWr0FFshA==", "peer": true }, "node_modules/abstract-leveldown": { "version": "6.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/abstract-leveldown/-/abstract-leveldown-6.2.3.tgz", + "integrity": "sha512-BsLm5vFMRUrrLeCcRc+G0t2qOaTzpoJQLOubq2XM72eNpjF5UdU5o/5NvlNhx95XHcAvcl8OMXr4mlg/fRgUXQ==", "optional": true, "dependencies": { "buffer": "^5.5.0", @@ -22362,6 +12456,8 @@ }, "node_modules/abstract-leveldown/node_modules/buffer": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "funding": [ { "type": "github", @@ -22376,7 +12472,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "optional": true, "dependencies": { "base64-js": "^1.3.1", @@ -22385,7 +12480,8 @@ }, "node_modules/accepts": { "version": "1.3.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.8.tgz", + "integrity": "sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==", "dependencies": { "mime-types": "~2.1.34", "negotiator": "0.6.3" @@ -22395,8 +12491,9 @@ } }, "node_modules/acorn": { - "version": "7.4.1", - "license": "MIT", + "version": "8.11.3", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", + "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", "bin": { "acorn": "bin/acorn" }, @@ -22430,14 +12527,16 @@ }, "node_modules/adler-32": { "version": "1.3.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/adler-32/-/adler-32-1.3.1.tgz", + "integrity": "sha512-ynZ4w/nUUv5rrsR8UUGoe1VC9hZj6V5hU9Qw1HlMDJGEJw5S7TfTErWTjMys6M7vr0YWcPqs3qAr4ss0nDfP+A==", "engines": { "node": ">=0.8" } }, "node_modules/agent-base": { "version": "6.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", "dependencies": { "debug": "4" }, @@ -22447,8 +12546,9 @@ }, "node_modules/agentkeepalive": { "version": "4.5.0", + "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", + "integrity": "sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==", "dev": true, - "license": "MIT", "dependencies": { "humanize-ms": "^1.2.1" }, @@ -22458,8 +12558,9 @@ }, "node_modules/aggregate-error": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/aggregate-error/-/aggregate-error-3.1.0.tgz", + "integrity": "sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==", "dev": true, - "license": "MIT", "dependencies": { "clean-stack": "^2.0.0", "indent-string": "^4.0.0" @@ -22470,7 +12571,8 @@ }, "node_modules/airbnb-prop-types": { "version": "2.16.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/airbnb-prop-types/-/airbnb-prop-types-2.16.0.tgz", + "integrity": "sha512-7WHOFolP/6cS96PhKNrslCLMYAI8yB1Pp6u6XmxozQOiZbsI5ycglZr5cHhBFfuRcQQjzCMith5ZPZdYiJCxUg==", "dependencies": { "array.prototype.find": "^2.1.1", "function.prototype.name": "^1.1.2", @@ -22491,7 +12593,8 @@ }, "node_modules/ajv": { "version": "6.12.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", "dependencies": { "fast-deep-equal": "^3.1.1", "fast-json-stable-stringify": "^2.0.0", @@ -22505,8 +12608,9 @@ }, "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, - "license": "MIT", "dependencies": { "ajv": "^8.0.0" }, @@ -22521,8 +12625,9 @@ }, "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, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -22536,24 +12641,28 @@ }, "node_modules/ajv-formats/node_modules/json-schema-traverse": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "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", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", "peerDependencies": { "ajv": "^6.9.1" } }, "node_modules/almost-equal": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/almost-equal/-/almost-equal-1.1.0.tgz", + "integrity": "sha512-0V/PkoculFl5+0Lp47JoxUcO0xSxhIBvm+BxHdD/OgXNmdRpRHCFnKVuUoWyS9EzQP+otSGv0m9Lb4yVkQBn2A==", "peer": true }, "node_modules/amdefine": { "version": "1.0.1", - "license": "BSD-3-Clause OR MIT", + "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", + "integrity": "sha512-S2Hw0TtNkMJhIabBwIojKL9YHO5T0n5eNqWJ7Lrlel/zDbftQpxpapi8tZs3X1HWa+u+QeydGmzzNU0m09+Rcg==", "optional": true, "engines": { "node": ">=0.4.2" @@ -22561,13 +12670,15 @@ }, "node_modules/anser": { "version": "1.4.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/anser/-/anser-1.4.10.tgz", + "integrity": "sha512-hCv9AqTQ8ycjpSd3upOJd7vFwW1JaoYQ7tpham03GJ1ca8/65rqn0RpaWpItOAd6ylW9wAw6luXYPJIyPFVOww==", "peer": true }, "node_modules/ansi-escapes": { "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.21.3" }, @@ -22580,8 +12691,9 @@ }, "node_modules/ansi-escapes/node_modules/type-fest": { "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -22591,7 +12703,8 @@ }, "node_modules/ansi-fragments": { "version": "0.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-fragments/-/ansi-fragments-0.2.1.tgz", + "integrity": "sha512-DykbNHxuXQwUDRv5ibc2b0x7uw7wmwOGLBUd5RmaQ5z8Lhx19vwvKV+FAsM5rEA6dEcHxX+/Ad5s9eF2k2bB+w==", "peer": true, "dependencies": { "colorette": "^1.0.7", @@ -22601,7 +12714,8 @@ }, "node_modules/ansi-fragments/node_modules/ansi-regex": { "version": "4.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-4.1.1.tgz", + "integrity": "sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==", "peer": true, "engines": { "node": ">=6" @@ -22609,7 +12723,8 @@ }, "node_modules/ansi-fragments/node_modules/strip-ansi": { "version": "5.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-5.2.0.tgz", + "integrity": "sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==", "peer": true, "dependencies": { "ansi-regex": "^4.1.0" @@ -22620,25 +12735,28 @@ }, "node_modules/ansi-html-community": { "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ansi-html-community/-/ansi-html-community-0.0.8.tgz", + "integrity": "sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==", "dev": true, "engines": [ "node >= 0.8.0" ], - "license": "Apache-2.0", "bin": { "ansi-html": "bin/ansi-html" } }, "node_modules/ansi-regex": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", "engines": { "node": ">=8" } }, "node_modules/ansi-styles": { "version": "3.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", "dependencies": { "color-convert": "^1.9.0" }, @@ -22648,18 +12766,21 @@ }, "node_modules/ansi-styles/node_modules/color-convert": { "version": "1.9.3", - "license": "MIT", + "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/ansi-styles/node_modules/color-name": { "version": "1.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/anymatch": { "version": "3.1.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", "dependencies": { "normalize-path": "^3.0.0", "picomatch": "^2.0.4" @@ -22675,18 +12796,21 @@ }, "node_modules/appdirsjs": { "version": "1.2.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/appdirsjs/-/appdirsjs-1.2.7.tgz", + "integrity": "sha512-Quji6+8kLBC3NnBeo14nPDq0+2jUs5s3/xEye+udFHumHhRk4M7aAMXp/PBJqkKYGuuyR9M/6Dq7d2AViiGmhw==", "peer": true }, "node_modules/aproba": { "version": "2.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/aproba/-/aproba-2.0.0.tgz", + "integrity": "sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==", + "dev": true }, "node_modules/are-we-there-yet": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-3.0.1.tgz", + "integrity": "sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==", "dev": true, - "license": "ISC", "dependencies": { "delegates": "^1.0.0", "readable-stream": "^3.6.0" @@ -22697,14 +12821,16 @@ }, "node_modules/argparse": { "version": "1.0.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", "dependencies": { "sprintf-js": "~1.0.2" } }, "node_modules/aria-hidden": { "version": "1.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/aria-hidden/-/aria-hidden-1.2.3.tgz", + "integrity": "sha512-xcLxITLe2HYa1cnYnwCjkOO1PqUHQpozB8x9AR0OgWN2woOBi5kSDVxKfd0b7sb1hw5qFeJhXm9H1nu3xSfLeQ==", "dependencies": { "tslib": "^2.0.0" }, @@ -22714,20 +12840,23 @@ }, "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, - "license": "Apache-2.0", "dependencies": { "deep-equal": "^2.0.5" } }, "node_modules/array-bounds": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/array-bounds/-/array-bounds-1.0.1.tgz", + "integrity": "sha512-8wdW3ZGk6UjMPJx/glyEt0sLzzwAE1bhToPsO1W2pbpR2gULyxe3BjSiuJFheP50T/GgODVPz2fuMUmIywt8cQ==", "peer": true }, "node_modules/array-buffer-byte-length": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.0.tgz", + "integrity": "sha512-LPuwb2P+NrQw3XhxGc36+XSvuBPopovXYTR9Ew++Du9Yb/bx5AzBfrIsBoj0EZUifjQU+sHL21sseZ3jerWO/A==", "dependencies": { "call-bind": "^1.0.2", "is-array-buffer": "^3.0.1" @@ -22738,7 +12867,8 @@ }, "node_modules/array-find-index": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/array-find-index/-/array-find-index-1.0.2.tgz", + "integrity": "sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==", "peer": true, "engines": { "node": ">=0.10.0" @@ -22746,13 +12876,15 @@ }, "node_modules/array-flatten": { "version": "1.1.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-1.1.1.tgz", + "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", + "dev": true }, "node_modules/array-includes": { "version": "3.1.7", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.7.tgz", + "integrity": "sha512-dlcsNBIiWhPkHdOEEKnehA+RNUWDc4UqFtnIXU4uuYDPtA4LDkr7qip2p0VvFAEXNDr0yWZ9PJyIRiGjRLQzwQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -22769,7 +12901,8 @@ }, "node_modules/array-move": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/array-move/-/array-move-4.0.0.tgz", + "integrity": "sha512-+RY54S8OuVvg94THpneQvFRmqWdAHeqtMzgMW6JNurHxe8rsS07cHQdfGkXnTUXiBcyZ0j3SiDIxxj0RPiqCkQ==", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, @@ -22779,7 +12912,8 @@ }, "node_modules/array-normalize": { "version": "1.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/array-normalize/-/array-normalize-1.1.4.tgz", + "integrity": "sha512-fCp0wKFLjvSPmCn4F5Tiw4M3lpMZoHlCjfcs7nNzuj3vqQQ1/a8cgB9DXcpDSn18c+coLnaW7rqfcYCvKbyJXg==", "peer": true, "dependencies": { "array-bounds": "^1.0.0" @@ -22787,25 +12921,29 @@ }, "node_modules/array-range": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/array-range/-/array-range-1.0.1.tgz", + "integrity": "sha512-shdaI1zT3CVNL2hnx9c0JMc0ZogGaxDs5e85akgHWKYa0yVbIyp06Ind3dVkTj/uuFrzaHBOyqFzo+VV6aXgtA==", "peer": true }, "node_modules/array-rearrange": { "version": "2.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/array-rearrange/-/array-rearrange-2.2.2.tgz", + "integrity": "sha512-UfobP5N12Qm4Qu4fwLDIi2v6+wZsSf6snYSxAMeKhrh37YGnNWZPRmVEKc/2wfms53TLQnzfpG8wCx2Y/6NG1w==", "peer": true }, "node_modules/array-union": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/array.prototype.find": { "version": "2.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/array.prototype.find/-/array.prototype.find-2.2.2.tgz", + "integrity": "sha512-DRumkfW97iZGOfn+lIXbkVrXL04sfYKX+EfOodo8XboR5sxPDVvOjZTF/rysusa9lmhmSOeD6Vp6RKQP+eP4Tg==", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -22818,8 +12956,9 @@ }, "node_modules/array.prototype.findlastindex": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.3.tgz", + "integrity": "sha512-LzLoiOMAxvy+Gd3BAq3B7VeIgPdo+Q8hthvKtXybMvRV0jrXfJM/t8mw7nNlpEcVlVUnCnM2KSX4XU5HmpodOA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -22836,7 +12975,8 @@ }, "node_modules/array.prototype.flat": { "version": "1.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -22852,8 +12992,9 @@ }, "node_modules/array.prototype.flatmap": { "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -22869,8 +13010,9 @@ }, "node_modules/array.prototype.tosorted": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.2.tgz", + "integrity": "sha512-HuQCHOlk1Weat5jzStICBCd83NxiIMwqDg/dHEsoefabn/hJRj5pVdWcPUSpRrwhwxZOsQassMpgN/xRYFBMIg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -22881,7 +13023,8 @@ }, "node_modules/arraybuffer.prototype.slice": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.2.tgz", + "integrity": "sha512-yMBKppFur/fbHu9/6USUe03bZ4knMYiwFBcyiaXB8Go0qNehwX6inYPzK9U0NeQvGxKthcmHcaR8P5MStSRBAw==", "dependencies": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.2", @@ -22900,18 +13043,22 @@ }, "node_modules/arrify": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/asap": { "version": "2.0.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" }, "node_modules/assert": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/assert/-/assert-2.1.0.tgz", + "integrity": "sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==", "dev": true, "license": "MIT", "dependencies": { @@ -22924,7 +13071,8 @@ }, "node_modules/ast-transform": { "version": "0.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ast-transform/-/ast-transform-0.0.0.tgz", + "integrity": "sha512-e/JfLiSoakfmL4wmTGPjv0HpTICVmxwXgYOB8x+mzozHL8v+dSfCbrJ8J8hJ0YBP0XcYu1aLZ6b/3TnxNK3P2A==", "dependencies": { "escodegen": "~1.2.0", "esprima": "~1.0.4", @@ -22933,6 +13081,8 @@ }, "node_modules/ast-transform/node_modules/escodegen": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.2.0.tgz", + "integrity": "sha512-yLy3Cc+zAC0WSmoT2fig3J87TpQ8UaZGx8ahCAs9FL8qNbyV7CVyPKS74DG4bsHiL5ew9sxdYx131OkBQMFnvA==", "dependencies": { "esprima": "~1.0.4", "estraverse": "~1.5.0", @@ -22951,6 +13101,8 @@ }, "node_modules/ast-transform/node_modules/esprima": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-1.0.4.tgz", + "integrity": "sha512-rp5dMKN8zEs9dfi9g0X1ClLmV//WRyk/R15mppFNICIFRG5P92VP7Z04p8pk++gABo9W2tY+kHyu6P1mEHgmTA==", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -22961,18 +13113,24 @@ }, "node_modules/ast-transform/node_modules/estraverse": { "version": "1.5.1", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-1.5.1.tgz", + "integrity": "sha512-FpCjJDfmo3vsc/1zKSeqR5k42tcIhxFIlvq+h9j0fO2q/h2uLKyweq7rYJ+0CoVvrGQOxIS5wyBrW/+vF58BUQ==", "engines": { "node": ">=0.4.0" } }, "node_modules/ast-transform/node_modules/esutils": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-1.0.0.tgz", + "integrity": "sha512-x/iYH53X3quDwfHRz4y8rn4XcEwwCJeWsul9pF1zldMbGtgOtMNBEOuYWwB1EQlK2LRa1fev3YAgym/RElp5Cg==", "engines": { "node": ">=0.10.0" } }, "node_modules/ast-transform/node_modules/source-map": { "version": "0.1.43", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.1.43.tgz", + "integrity": "sha512-VtCvB9SIQhk3aF6h+N85EaqIaBFIAfZ9Cu+NJHHVvc8BbEcnvDcFw6sqQ2dQrT6SlOrZq3tIvyD9+EGq/lJryQ==", "optional": true, "dependencies": { "amdefine": ">=0.0.4" @@ -22983,14 +13141,16 @@ }, "node_modules/ast-types": { "version": "0.7.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.7.8.tgz", + "integrity": "sha512-RIOpVnVlltB6PcBJ5BMLx+H+6JJ/zjDGU0t7f0L6c2M1dqcK92VQopLBlPQ9R80AVXelfqYgjcPLtHtDbNFg0Q==", "engines": { "node": ">= 0.6" } }, "node_modules/astral-regex": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/astral-regex/-/astral-regex-1.0.0.tgz", + "integrity": "sha512-+Ryf6g3BKoRc7jfp7ad8tM4TtMiaWvbF/1/sQcZPkkS7ag3D5nMBCe2UfOTONtAkaG0tO0ij3C5Lwmf1EiyjHg==", "peer": true, "engines": { "node": ">=4" @@ -22998,10 +13158,13 @@ }, "node_modules/async": { "version": "3.2.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", + "integrity": "sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==" }, "node_modules/async-foreach": { "version": "0.1.3", + "resolved": "https://registry.npmjs.org/async-foreach/-/async-foreach-0.1.3.tgz", + "integrity": "sha512-VUeSMD8nEGBWaZK4lizI1sf3yEC7pnAQ/mrI7pC2fBz2s/tq5jWWEngTwaf0Gruu/OoXRGLGg1XFqpYBiGTYJA==", "dev": true, "engines": { "node": "*" @@ -23009,23 +13172,27 @@ }, "node_modules/async-limiter": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/async-limiter/-/async-limiter-1.0.1.tgz", + "integrity": "sha512-csOlWGAcRFJaI6m+F2WKdnMKr4HhdhFVBk0H/QbJFMCr+uO2kwohwXQPxw/9OCxp05r5ghVBFSyioixx3gfkNQ==" }, "node_modules/asynciterator.prototype": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/asynciterator.prototype/-/asynciterator.prototype-1.0.0.tgz", + "integrity": "sha512-wwHYEIS0Q80f5mosx3L/dfG5t5rjEa9Ft51GTaNt862EnpyGHpgz2RkZvLPp1oF5TnAiTohkEKVEu8pQPJI7Vg==", "dev": true, - "license": "MIT", "dependencies": { "has-symbols": "^1.0.3" } }, "node_modules/asynckit": { "version": "0.4.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" }, "node_modules/atob": { "version": "2.1.2", - "license": "(MIT OR Apache-2.0)", + "resolved": "https://registry.npmjs.org/atob/-/atob-2.1.2.tgz", + "integrity": "sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==", "bin": { "atob": "bin/atob.js" }, @@ -23035,14 +13202,16 @@ }, "node_modules/attr-accept": { "version": "2.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/attr-accept/-/attr-accept-2.2.2.tgz", + "integrity": "sha512-7prDjvt9HmqiZ0cl5CRjtS84sEyhsHP2coDkaZKRKVfCDo9s7iw7ChVmar78Gu9pC4SoR/28wFu/G5JJhTnqEg==", "engines": { "node": ">=4" } }, "node_modules/available-typed-arrays": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", "engines": { "node": ">= 0.4" }, @@ -23052,7 +13221,8 @@ }, "node_modules/axios": { "version": "1.6.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.6.2.tgz", + "integrity": "sha512-7i24Ri4pmDRfJTR7LDBhsOTtcm+9kjX5WiY1X3wIisx6G9So3pfMkEiU7emUBe46oceVImccTEM3k6C5dbVW8A==", "dependencies": { "follow-redirects": "^1.15.0", "form-data": "^4.0.0", @@ -23061,15 +13231,17 @@ }, "node_modules/babel-core": { "version": "7.0.0-bridge.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/babel-core/-/babel-core-7.0.0-bridge.0.tgz", + "integrity": "sha512-poPX9mZH/5CSanm50Q+1toVci6pv5KSRv/5TWCwtzQS5XEwn40BcCrgIeMFWP9CKKIniKXNxoIOnOq4VVlGXhg==", "peerDependencies": { "@babel/core": "^7.0.0-0" } }, "node_modules/babel-jest": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", "dev": true, - "license": "MIT", "dependencies": { "@jest/transform": "^29.7.0", "@types/babel__core": "^7.1.14", @@ -23088,8 +13260,9 @@ }, "node_modules/babel-jest/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -23102,8 +13275,9 @@ }, "node_modules/babel-jest/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -23117,16 +13291,18 @@ }, "node_modules/babel-jest/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/babel-jest/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -23136,8 +13312,9 @@ }, "node_modules/babel-loader": { "version": "9.1.3", + "resolved": "https://registry.npmjs.org/babel-loader/-/babel-loader-9.1.3.tgz", + "integrity": "sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==", "dev": true, - "license": "MIT", "dependencies": { "find-cache-dir": "^4.0.0", "schema-utils": "^4.0.0" @@ -23152,8 +13329,9 @@ }, "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, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -23167,8 +13345,9 @@ }, "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, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -23178,8 +13357,9 @@ }, "node_modules/babel-loader/node_modules/find-cache-dir": { "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, - "license": "MIT", "dependencies": { "common-path-prefix": "^3.0.0", "pkg-dir": "^7.0.0" @@ -23193,8 +13373,9 @@ }, "node_modules/babel-loader/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, - "license": "MIT", "dependencies": { "locate-path": "^7.1.0", "path-exists": "^5.0.0" @@ -23208,13 +13389,15 @@ }, "node_modules/babel-loader/node_modules/json-schema-traverse": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "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/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, - "license": "MIT", "dependencies": { "p-locate": "^6.0.0" }, @@ -23227,8 +13410,9 @@ }, "node_modules/babel-loader/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, - "license": "MIT", "dependencies": { "yocto-queue": "^1.0.0" }, @@ -23241,8 +13425,9 @@ }, "node_modules/babel-loader/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, - "license": "MIT", "dependencies": { "p-limit": "^4.0.0" }, @@ -23255,16 +13440,18 @@ }, "node_modules/babel-loader/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, - "license": "MIT", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, "node_modules/babel-loader/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, - "license": "MIT", "dependencies": { "find-up": "^6.3.0" }, @@ -23277,8 +13464,9 @@ }, "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, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -23295,8 +13483,9 @@ }, "node_modules/babel-loader/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, - "license": "MIT", "engines": { "node": ">=12.20" }, @@ -23311,21 +13500,24 @@ }, "node_modules/babel-plugin-console-source": { "version": "2.0.5", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/babel-plugin-console-source/-/babel-plugin-console-source-2.0.5.tgz", + "integrity": "sha512-yzQpv5ur9IeSH8EuFdDogGYR19u69Ez7cYolOde3jiyZlpy04Vn5HzCyOshylXACjLzWZIFi4RZa7ZYQxADJIg==", + "dev": true }, "node_modules/babel-plugin-import": { "version": "1.13.8", + "resolved": "https://registry.npmjs.org/babel-plugin-import/-/babel-plugin-import-1.13.8.tgz", + "integrity": "sha512-36babpjra5m3gca44V6tSTomeBlPA7cHUynrE2WiQIm3rEGD9xy28MKsx5IdO45EbnpJY7Jrgd00C6Dwt/l/2Q==", "dev": true, - "license": "MIT", "dependencies": { "@babel/helper-module-imports": "^7.0.0" } }, "node_modules/babel-plugin-istanbul": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "@babel/helper-plugin-utils": "^7.0.0", "@istanbuljs/load-nyc-config": "^1.0.0", @@ -23339,8 +13531,9 @@ }, "node_modules/babel-plugin-jest-hoist": { "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", "dev": true, - "license": "MIT", "dependencies": { "@babel/template": "^7.3.3", "@babel/types": "^7.3.3", @@ -23366,7 +13559,8 @@ }, "node_modules/babel-plugin-polyfill-corejs2": { "version": "0.4.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs2/-/babel-plugin-polyfill-corejs2-0.4.6.tgz", + "integrity": "sha512-jhHiWVZIlnPbEUKSSNb9YoWcQGdlTLq7z1GHL4AjFxaoOUMuuEVJ+Y4pAaQUGOGk93YsVCKPbqbfw3m0SM6H8Q==", "dependencies": { "@babel/compat-data": "^7.22.6", "@babel/helper-define-polyfill-provider": "^0.4.3", @@ -23378,14 +13572,16 @@ }, "node_modules/babel-plugin-polyfill-corejs2/node_modules/semver": { "version": "6.3.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "bin": { "semver": "bin/semver.js" } }, "node_modules/babel-plugin-polyfill-corejs3": { "version": "0.8.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-corejs3/-/babel-plugin-polyfill-corejs3-0.8.6.tgz", + "integrity": "sha512-leDIc4l4tUgU7str5BWLS2h8q2N4Nf6lGZP6UrNDxdtfF2g69eJ5L0H7S8A5Ln/arfFAfHor5InAdZuIOwZdgQ==", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.4.3", "core-js-compat": "^3.33.1" @@ -23396,7 +13592,8 @@ }, "node_modules/babel-plugin-polyfill-regenerator": { "version": "0.5.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/babel-plugin-polyfill-regenerator/-/babel-plugin-polyfill-regenerator-0.5.3.tgz", + "integrity": "sha512-8sHeDOmXC8csczMrYEOf0UTNa4yE2SxV5JGeT/LP1n0OYVDUUFPxG9vdk2AlDlIit4t+Kf0xCtpgXPBwnn/9pw==", "dependencies": { "@babel/helper-define-polyfill-provider": "^0.4.3" }, @@ -23406,12 +13603,14 @@ }, "node_modules/babel-plugin-syntax-trailing-function-commas": { "version": "7.0.0-beta.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/babel-plugin-syntax-trailing-function-commas/-/babel-plugin-syntax-trailing-function-commas-7.0.0-beta.0.tgz", + "integrity": "sha512-Xj9XuRuz3nTSbaTXWv3itLOcxyF4oPD8douBBmj7U9BBC6nEBYfyOJYQMf/8PJAFotC62UY5dFfIGEPr7WswzQ==", "peer": true }, "node_modules/babel-plugin-transform-flow-enums": { "version": "0.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/babel-plugin-transform-flow-enums/-/babel-plugin-transform-flow-enums-0.0.2.tgz", + "integrity": "sha512-g4aaCrDDOsWjbm0PUUeVnkcVd6AKJsVc/MbnPhEotEpkeJQP6b8nzewohQi7+QS8UyPehOhGWn0nOwjvWpmMvQ==", "peer": true, "dependencies": { "@babel/plugin-syntax-flow": "^7.12.1" @@ -23419,8 +13618,9 @@ }, "node_modules/babel-preset-current-node-syntax": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.0.1.tgz", + "integrity": "sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/plugin-syntax-async-generators": "^7.8.4", "@babel/plugin-syntax-bigint": "^7.8.3", @@ -23441,7 +13641,8 @@ }, "node_modules/babel-preset-fbjs": { "version": "3.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/babel-preset-fbjs/-/babel-preset-fbjs-3.4.0.tgz", + "integrity": "sha512-9ywCsCvo1ojrw0b+XYk7aFvTH6D9064t0RIL1rtMf3nsa02Xw41MS7sZw216Im35xj/UY0PDBQsa1brUDDF1Ow==", "peer": true, "dependencies": { "@babel/plugin-proposal-class-properties": "^7.0.0", @@ -23478,8 +13679,9 @@ }, "node_modules/babel-preset-jest": { "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", "dev": true, - "license": "MIT", "dependencies": { "babel-plugin-jest-hoist": "^29.6.3", "babel-preset-current-node-syntax": "^1.0.0" @@ -23502,15 +13704,18 @@ }, "node_modules/balanced-match": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/base16": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/base16/-/base16-1.0.0.tgz", + "integrity": "sha512-pNdYkNPiJUnEhnfXV56+sQy8+AaPcG3POZAUnwr4EeqCUZFz4u2PePbo3e5Gj4ziYPCWGUZT9RHisvJKnwFuBQ==" }, "node_modules/base64-arraybuffer": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-I3yl4r9QB5ZRY3XuJVEPfc2XhZO6YweFPI+UovAzn+8/hb3oJ6lnysaFcjVpkCPfVWFUDvoZ8kmVDP7WyRtYtQ==", "optional": true, "engines": { "node": ">= 0.6.0" @@ -23518,6 +13723,8 @@ }, "node_modules/base64-js": { "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "funding": [ { "type": "github", @@ -23531,13 +13738,13 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/batch": { "version": "0.6.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/batch/-/batch-0.6.1.tgz", + "integrity": "sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==", + "dev": true }, "node_modules/better-opn": { "version": "3.0.2", @@ -23552,8 +13759,9 @@ }, "node_modules/better-opn/node_modules/is-wsl": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, - "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -23563,8 +13771,9 @@ }, "node_modules/better-opn/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, - "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -23579,6 +13788,8 @@ }, "node_modules/big-integer": { "version": "1.6.52", + "resolved": "https://registry.npmjs.org/big-integer/-/big-integer-1.6.52.tgz", + "integrity": "sha512-QxD8cf2eVqJOOz63z6JIN9BzvVs/dlySa5HGSBH5xtR8dPteIRQnBxxKqkNTiT6jbDTF6jAfrd4oMcND9RGbQg==", "dev": true, "license": "Unlicense", "engines": { @@ -23587,36 +13798,42 @@ }, "node_modules/big.js": { "version": "5.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/big.js/-/big.js-5.2.2.tgz", + "integrity": "sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==", "engines": { "node": "*" } }, "node_modules/binary-extensions": { "version": "2.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", "engines": { "node": ">=8" } }, "node_modules/binary-search-bounds": { "version": "2.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/binary-search-bounds/-/binary-search-bounds-2.0.5.tgz", + "integrity": "sha512-H0ea4Fd3lS1+sTEB2TgcLoK21lLhwEJzlQv3IN47pJS976Gx4zoWe0ak3q+uYh60ppQxg9F16Ri4tS1sfD4+jA==", "peer": true }, "node_modules/bit-twiddle": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/bit-twiddle/-/bit-twiddle-1.0.2.tgz", + "integrity": "sha512-B9UhK0DKFZhoTFcfvAzhqsjStvGJp9vYWf3+6SNTtdSQnvIgfkHbgHrg/e4+TH71N2GDu8tpmCVoyfrL1d7ntA==", "peer": true }, "node_modules/bitmap-sdf": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/bitmap-sdf/-/bitmap-sdf-1.0.4.tgz", + "integrity": "sha512-1G3U4n5JE6RAiALMxu0p1XmeZkTeCwGKykzsLTCqVzfSDaN6S7fKnkIkfejogz+iwqBWc0UYAIKnKHNN7pSfDg==", "peer": true }, "node_modules/bl": { "version": "2.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/bl/-/bl-2.2.1.tgz", + "integrity": "sha512-6Pesp1w0DEX1N550i/uGV/TqucVL4AM/pgThFSN/Qq9si1/DF9aIHs1BxD8V/QU0HoeHO6cQRTAuYnLPKq1e4g==", "peer": true, "dependencies": { "readable-stream": "^2.3.5", @@ -23625,12 +13842,14 @@ }, "node_modules/bl/node_modules/isarray": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "peer": true }, "node_modules/bl/node_modules/readable-stream": { "version": "2.3.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "peer": true, "dependencies": { "core-util-is": "~1.0.0", @@ -23644,12 +13863,14 @@ }, "node_modules/bl/node_modules/safe-buffer": { "version": "5.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "peer": true }, "node_modules/bl/node_modules/string_decoder": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "peer": true, "dependencies": { "safe-buffer": "~5.1.0" @@ -23657,8 +13878,9 @@ }, "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, - "license": "MIT", "dependencies": { "bytes": "3.1.2", "content-type": "~1.0.4", @@ -23680,21 +13902,24 @@ }, "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, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/body-parser/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, "node_modules/body-parser/node_modules/qs": { "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -23707,8 +13932,9 @@ }, "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, - "license": "MIT", "dependencies": { "array-flatten": "^2.1.2", "dns-equal": "^1.0.0", @@ -23718,16 +13944,20 @@ }, "node_modules/bonjour-service/node_modules/array-flatten": { "version": "2.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/array-flatten/-/array-flatten-2.1.2.tgz", + "integrity": "sha512-hNfzcOV8W4NdualtqBFPyVO+54DSJuZGY9qT4pRroB6S9e3iiido2ISIC5h9R2sPJ8H3FHCIiEnsv1lPXO3KtQ==", + "dev": true }, "node_modules/boolbase": { "version": "1.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true }, "node_modules/bootstrap": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/bootstrap/-/bootstrap-5.3.2.tgz", + "integrity": "sha512-D32nmNWiQHo94BKHLmOrdjlL05q1c8oxbtBphQFb9Z5to6eGRDCm0QgeaZ4zFBHzfg2++rqa2JkqCcxDy0sH0g==", "funding": [ { "type": "github", @@ -23738,7 +13968,6 @@ "url": "https://opencollective.com/bootstrap" } ], - "license": "MIT", "peerDependencies": { "@popperjs/core": "^2.11.8" } @@ -23756,7 +13985,8 @@ }, "node_modules/brace-expansion": { "version": "1.1.11", - "license": "MIT", + "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" @@ -23764,7 +13994,8 @@ }, "node_modules/braces": { "version": "3.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", "dependencies": { "fill-range": "^7.0.1" }, @@ -23774,7 +14005,8 @@ }, "node_modules/brcast": { "version": "2.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/brcast/-/brcast-2.0.2.tgz", + "integrity": "sha512-Tfn5JSE7hrUlFcOoaLzVvkbgIemIorMIyoMr3TgvszWW7jFt2C9PdeMLtysYD9RU0MmU17b69+XJG1eRY2OBRg==" }, "node_modules/browser-assert": { "version": "1.2.1", @@ -23782,18 +14014,21 @@ }, "node_modules/browser-resolve": { "version": "1.11.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/browser-resolve/-/browser-resolve-1.11.3.tgz", + "integrity": "sha512-exDi1BYWB/6raKHmDTCicQfTkqwN5fioMFV4j8BsfMU4R2DK/QfZfK7kOVkmWCNANf0snkBzqGqAJBao9gZMdQ==", "dependencies": { "resolve": "1.1.7" } }, "node_modules/browser-resolve/node_modules/resolve": { "version": "1.1.7", - "license": "MIT" + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.1.7.tgz", + "integrity": "sha512-9znBF0vBcaSN3W2j7wKvdERPwqTxSpCq+if5C0WoTCyV9n24rua28jeuQ2pL/HOf+yUe/Mef+H/5p60K0Id3bg==" }, "node_modules/browserify-optional": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/browserify-optional/-/browserify-optional-1.0.1.tgz", + "integrity": "sha512-VrhjbZ+Ba5mDiSYEuPelekQMfTbhcA2DhLk2VQWqdcCROWeFqlTcXZ7yfRkXCIl8E+g4gINJYJiRB7WEtfomAQ==", "dependencies": { "ast-transform": "0.0.0", "ast-types": "^0.7.0", @@ -23810,6 +14045,8 @@ }, "node_modules/browserslist": { "version": "4.22.2", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.2.tgz", + "integrity": "sha512-0UgcrvQmBDvZHFGdYUehrCNIazki7/lUP3kkoi/r3YB2amZbFM9J43ZRkJTXBUZK4gmx56+Sqk9+Vs9mwZx9+A==", "funding": [ { "type": "opencollective", @@ -23840,14 +14077,16 @@ }, "node_modules/bser": { "version": "2.1.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", "dependencies": { "node-int64": "^0.4.0" } }, "node_modules/btoa": { "version": "1.2.1", - "license": "(MIT OR Apache-2.0)", + "resolved": "https://registry.npmjs.org/btoa/-/btoa-1.2.1.tgz", + "integrity": "sha512-SB4/MIGlsiVkMcHmT+pSmIPoNDoHg+7cMzmt3Uxt628MTz2487DKSqK/fuhFBrkuqrYv5UCEnACpF4dTFNKc/g==", "bin": { "btoa": "bin/btoa.js" }, @@ -23857,6 +14096,8 @@ }, "node_modules/buffer": { "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", "funding": [ { "type": "github", @@ -23871,7 +14112,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.2.1" @@ -23887,20 +14127,23 @@ }, "node_modules/buffer-from": { "version": "1.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" }, "node_modules/bytes": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.1.2.tgz", + "integrity": "sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8" } }, "node_modules/cacache": { "version": "16.1.3", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-16.1.3.tgz", + "integrity": "sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/fs": "^2.1.0", "@npmcli/move-file": "^2.0.0", @@ -23927,16 +14170,18 @@ }, "node_modules/cacache/node_modules/brace-expansion": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "license": "MIT", "dependencies": { "balanced-match": "^1.0.0" } }, "node_modules/cacache/node_modules/glob": { "version": "8.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -23953,16 +14198,18 @@ }, "node_modules/cacache/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/cacache/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, - "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" }, @@ -23972,8 +14219,9 @@ }, "node_modules/cacache/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -23983,12 +14231,14 @@ }, "node_modules/cacache/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/call-bind": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", "dependencies": { "function-bind": "^1.1.2", "get-intrinsic": "^1.2.1", @@ -24000,7 +14250,8 @@ }, "node_modules/caller-callsite": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/caller-callsite/-/caller-callsite-2.0.0.tgz", + "integrity": "sha512-JuG3qI4QOftFsZyOn1qq87fq5grLIyk1JYd5lJmdA+fG7aQ9pA/i3JIJGcO3q0MrRcHlOt1U+ZeHW8Dq9axALQ==", "peer": true, "dependencies": { "callsites": "^2.0.0" @@ -24011,7 +14262,8 @@ }, "node_modules/caller-callsite/node_modules/callsites": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-2.0.0.tgz", + "integrity": "sha512-ksWePWBloaWPxJYQ8TL0JHvtci6G5QTKwQ95RcWAa/lzoAKuAOflGdAK92hpHXjkwb8zLxoLNUoNYZgVsaJzvQ==", "peer": true, "engines": { "node": ">=4" @@ -24019,7 +14271,8 @@ }, "node_modules/caller-path": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/caller-path/-/caller-path-2.0.0.tgz", + "integrity": "sha512-MCL3sf6nCSXOwCTzvPKhN18TU7AHTvdtam8DAogxcrJ8Rjfbbg7Lgng64H9Iy+vUV6VGFClN/TyxBkAebLRR4A==", "peer": true, "dependencies": { "caller-callsite": "^2.0.0" @@ -24030,15 +14283,17 @@ }, "node_modules/callsites": { "version": "3.1.0", - "license": "MIT", + "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, - "license": "MIT", "dependencies": { "pascal-case": "^3.1.2", "tslib": "^2.0.3" @@ -24046,7 +14301,8 @@ }, "node_modules/camelcase": { "version": "6.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", "engines": { "node": ">=10" }, @@ -24056,8 +14312,9 @@ }, "node_modules/camelcase-keys": { "version": "6.2.2", + "resolved": "https://registry.npmjs.org/camelcase-keys/-/camelcase-keys-6.2.2.tgz", + "integrity": "sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==", "dev": true, - "license": "MIT", "dependencies": { "camelcase": "^5.3.1", "map-obj": "^4.0.0", @@ -24072,21 +14329,25 @@ }, "node_modules/camelcase-keys/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, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/camelize": { "version": "1.0.1", - "license": "MIT", + "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.30001565", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001565.tgz", + "integrity": "sha512-xrE//a3O7TP0vaJ8ikzkD2c2NgcVUvsEe2IvFTntV4Yd1Z9FVzh+gW+enX96L0psrbaFMcVcH2l90xNuGDWc8w==", "funding": [ { "type": "opencollective", @@ -24105,7 +14366,8 @@ }, "node_modules/canvas-fit": { "version": "1.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/canvas-fit/-/canvas-fit-1.5.0.tgz", + "integrity": "sha512-onIcjRpz69/Hx5bB5HGbYKUF2uC6QT6Gp+pfpGm3A7mPfcluSLV5v4Zu+oflDUwLdUw0rLIBhUbi0v8hM4FJQQ==", "peer": true, "dependencies": { "element-size": "^1.1.1" @@ -24113,7 +14375,8 @@ }, "node_modules/canvg": { "version": "3.0.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/canvg/-/canvg-3.0.10.tgz", + "integrity": "sha512-qwR2FRNO9NlzTeKIPIKpnTY6fqwuYSequ8Ru8c0YkYU7U0oW+hLUvWadLvAu1Rl72OMNiFhoLu4f8eUjQ7l/+Q==", "optional": true, "dependencies": { "@babel/runtime": "^7.12.5", @@ -24131,7 +14394,8 @@ }, "node_modules/canvg/node_modules/regenerator-runtime": { "version": "0.13.11", - "license": "MIT", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "optional": true }, "node_modules/case-sensitive-paths-webpack-plugin": { @@ -24153,7 +14417,8 @@ }, "node_modules/cfb": { "version": "1.2.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/cfb/-/cfb-1.2.2.tgz", + "integrity": "sha512-KfdUZsSOw19/ObEWasvBP/Ac4reZvAGauZhs6S/gqNhXhI7cKwvlH7ulj+dOEYnca4bm4SGo8C1bTAQvnTjgQA==", "dependencies": { "adler-32": "~1.3.0", "crc-32": "~1.2.0" @@ -24176,8 +14441,9 @@ }, "node_modules/char-regex": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" } @@ -24220,13 +14486,14 @@ }, "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/" } ], - "license": "MIT", "dependencies": { "anymatch": "~3.1.2", "braces": "~3.0.2", @@ -24245,7 +14512,8 @@ }, "node_modules/chokidar/node_modules/glob-parent": { "version": "5.1.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dependencies": { "is-glob": "^4.0.1" }, @@ -24255,50 +14523,57 @@ }, "node_modules/chownr": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-2.0.0.tgz", + "integrity": "sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/chrome-trace-event": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "engines": { "node": ">=6.0" } }, "node_modules/ci-info": { "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/sibiraj-s" } ], - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/cjs-module-lexer": { "version": "1.2.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.2.3.tgz", + "integrity": "sha512-0TNiGstbQmCFwt4akjjBg5pLRTSyj/PkWQ1ZoO2zntmg9yLqSRxwEa4iCfQLGjqhiqBfOJa7W/E8wfGrTDmlZQ==", + "dev": true }, "node_modules/clamp": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/clamp/-/clamp-1.0.1.tgz", + "integrity": "sha512-kgMuFyE78OC6Dyu3Dy7vcx4uy97EIbVxJB/B0eJ3bUNAkwdNcxYzgKltnyADiYwsR7SEqkkUPsEUT//OVS6XMA==", "peer": true }, "node_modules/classnames": { "version": "2.3.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/classnames/-/classnames-2.3.2.tgz", + "integrity": "sha512-CSbhY4cFEJRe6/GQzIk5qXZ4Jeg5pcsP7b5peFSDpffpe1cqjASH/n9UTjBwOp6XpMSTwQ8Za2K5V02ueA7Tmw==" }, "node_modules/clean-css": { "version": "5.3.3", + "resolved": "https://registry.npmjs.org/clean-css/-/clean-css-5.3.3.tgz", + "integrity": "sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==", "dev": true, - "license": "MIT", "dependencies": { "source-map": "~0.6.0" }, @@ -24308,23 +14583,26 @@ }, "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, - "license": "BSD-3-Clause", "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==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/cli-cursor": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cli-cursor/-/cli-cursor-3.1.0.tgz", + "integrity": "sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==", "dependencies": { "restore-cursor": "^3.1.0" }, @@ -24334,7 +14612,8 @@ }, "node_modules/cli-spinners": { "version": "2.9.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cli-spinners/-/cli-spinners-2.9.2.tgz", + "integrity": "sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==", "engines": { "node": ">=6" }, @@ -24358,7 +14637,8 @@ }, "node_modules/cliui": { "version": "8.0.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", "dependencies": { "string-width": "^4.2.0", "strip-ansi": "^6.0.1", @@ -24370,14 +14650,16 @@ }, "node_modules/clone": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/clone/-/clone-1.0.4.tgz", + "integrity": "sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==", "engines": { "node": ">=0.8" } }, "node_modules/clone-deep": { "version": "4.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", "dependencies": { "is-plain-object": "^2.0.4", "kind-of": "^6.0.2", @@ -24389,7 +14671,8 @@ }, "node_modules/clone-deep/node_modules/is-plain-object": { "version": "2.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dependencies": { "isobject": "^3.0.1" }, @@ -24399,39 +14682,54 @@ }, "node_modules/clsx": { "version": "1.2.1", - "license": "MIT", + "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, - "license": "MIT", "engines": { "iojs": ">= 1.0.0", "node": ">= 0.12.0" } }, "node_modules/codemirror": { - "version": "5.65.16", - "license": "MIT" + "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/codepage": { "version": "1.15.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/codepage/-/codepage-1.15.0.tgz", + "integrity": "sha512-3g6NUTPd/YtuuGrhMnOMRjFc+LJw/bnMp3+0r/Wcz3IXUuCosKRJvMphm5+Q+bvTVGcJJuRvVLuYba+WojaFaA==", "engines": { "node": ">=0.8" } }, "node_modules/collect-v8-coverage": { "version": "1.0.2", - "dev": true, - "license": "MIT" + "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": { "version": "3.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color/-/color-3.2.1.tgz", + "integrity": "sha512-aBl7dZI9ENN6fUGC7mWpMTPNHmWUSNan9tuWN6ahh5ZLNk9baLJOnSMlrQkHcrfFgz2/RigjUVAjdx36VcemKA==", "dependencies": { "color-convert": "^1.9.3", "color-string": "^1.6.0" @@ -24439,7 +14737,8 @@ }, "node_modules/color-alpha": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-alpha/-/color-alpha-1.0.4.tgz", + "integrity": "sha512-lr8/t5NPozTSqli+duAN+x+no/2WaKTeWvxhHGN+aXT6AJ8vPlzLa7UriyjWak0pSC2jHol9JgjBYnnHsGha9A==", "peer": true, "dependencies": { "color-parse": "^1.3.8" @@ -24447,7 +14746,8 @@ }, "node_modules/color-convert": { "version": "2.0.1", - "license": "MIT", + "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" }, @@ -24457,7 +14757,8 @@ }, "node_modules/color-id": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-id/-/color-id-1.1.0.tgz", + "integrity": "sha512-2iRtAn6dC/6/G7bBIo0uupVrIne1NsQJvJxZOBCzQOfk7jRq97feaDZ3RdzuHakRXXnHGNwglto3pqtRx1sX0g==", "peer": true, "dependencies": { "clamp": "^1.0.1" @@ -24465,11 +14766,13 @@ }, "node_modules/color-name": { "version": "1.1.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" }, "node_modules/color-normalize": { "version": "1.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-normalize/-/color-normalize-1.5.0.tgz", + "integrity": "sha512-rUT/HDXMr6RFffrR53oX3HGWkDOP9goSAQGBkUaAYKjOE2JxozccdGyufageWDlInRAjm/jYPrf/Y38oa+7obw==", "peer": true, "dependencies": { "clamp": "^1.0.1", @@ -24479,7 +14782,8 @@ }, "node_modules/color-parse": { "version": "1.3.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-parse/-/color-parse-1.3.8.tgz", + "integrity": "sha512-1Y79qFv0n1xair3lNMTNeoFvmc3nirMVBij24zbs1f13+7fPpQClMg5b4AuKXLt3szj7BRlHMCXHplkce6XlmA==", "peer": true, "dependencies": { "color-name": "^1.0.0", @@ -24489,7 +14793,8 @@ }, "node_modules/color-rgba": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-rgba/-/color-rgba-2.1.1.tgz", + "integrity": "sha512-VaX97wsqrMwLSOR6H7rU1Doa2zyVdmShabKrPEIFywLlHoibgD3QW9Dw6fSqM4+H/LfjprDNAUUW31qEQcGzNw==", "peer": true, "dependencies": { "clamp": "^1.0.1", @@ -24499,7 +14804,8 @@ }, "node_modules/color-space": { "version": "1.16.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-space/-/color-space-1.16.0.tgz", + "integrity": "sha512-A6WMiFzunQ8KEPFmj02OnnoUnqhmSaHaZ/0LVFcPTdlvm8+3aMJ5x1HRHy3bDHPkovkf4sS0f4wsVvwk71fKkg==", "peer": true, "dependencies": { "hsluv": "^0.0.3", @@ -24508,7 +14814,8 @@ }, "node_modules/color-string": { "version": "1.9.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.1.tgz", + "integrity": "sha512-shrVawQFojnZv6xM40anx4CkoDP+fZsw/ZerEMsW/pyzsRbElpsL/DBVW7q3ExxwusdNXI3lXpuhEZkzs8p5Eg==", "dependencies": { "color-name": "^1.0.0", "simple-swizzle": "^0.2.2" @@ -24516,31 +14823,36 @@ }, "node_modules/color-support": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-support/-/color-support-1.1.3.tgz", + "integrity": "sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==", "dev": true, - "license": "ISC", "bin": { "color-support": "bin.js" } }, "node_modules/color/node_modules/color-convert": { "version": "1.9.3", - "license": "MIT", + "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/node_modules/color-name": { "version": "1.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" }, "node_modules/colorette": { "version": "1.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-1.4.0.tgz", + "integrity": "sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==", "peer": true }, "node_modules/combined-stream": { "version": "1.0.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", "dependencies": { "delayed-stream": "~1.0.0" }, @@ -24559,13 +14871,15 @@ }, "node_modules/command-exists": { "version": "1.2.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/command-exists/-/command-exists-1.2.9.tgz", + "integrity": "sha512-LTQ/SGc+s0Xc0Fu5WaKnR0YiygZkm9eKFvyS+fRsU7/ZWFF8ykFM6Pc9aCVf1+xasOOZpO3BAVgVrKvsqKHV7w==", "peer": true }, "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, - "license": "MIT", "engines": { "node": ">=14" } @@ -24577,11 +14891,13 @@ }, "node_modules/commondir": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", + "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==" }, "node_modules/compressible": { "version": "2.0.18", - "license": "MIT", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", "dependencies": { "mime-db": ">= 1.43.0 < 2" }, @@ -24591,7 +14907,8 @@ }, "node_modules/compression": { "version": "1.7.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", "dependencies": { "accepts": "~1.3.5", "bytes": "3.0.0", @@ -24607,8 +14924,9 @@ }, "node_modules/compression-webpack-plugin": { "version": "10.0.0", + "resolved": "https://registry.npmjs.org/compression-webpack-plugin/-/compression-webpack-plugin-10.0.0.tgz", + "integrity": "sha512-wLXLIBwpul/ALcm7Aj+69X0pYT3BYt6DdPn3qrgBIh9YejV9Bju9ShhlAsjujLyWMo6SAweFIWaUoFmXZNuNrg==", "dev": true, - "license": "MIT", "dependencies": { "schema-utils": "^4.0.0", "serialize-javascript": "^6.0.0" @@ -24626,8 +14944,9 @@ }, "node_modules/compression-webpack-plugin/node_modules/ajv": { "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", "dev": true, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -24641,8 +14960,9 @@ }, "node_modules/compression-webpack-plugin/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, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -24652,13 +14972,15 @@ }, "node_modules/compression-webpack-plugin/node_modules/json-schema-traverse": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true }, "node_modules/compression-webpack-plugin/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, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -24675,36 +14997,42 @@ }, "node_modules/compression/node_modules/bytes": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==", "engines": { "node": ">= 0.8" } }, "node_modules/compression/node_modules/debug": { "version": "2.6.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { "ms": "2.0.0" } }, "node_modules/compression/node_modules/ms": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/compression/node_modules/safe-buffer": { "version": "5.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/concat-map": { "version": "0.0.1", - "license": "MIT" + "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" ], - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "inherits": "^2.0.3", @@ -24714,11 +15042,13 @@ }, "node_modules/concat-stream/node_modules/isarray": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/concat-stream/node_modules/readable-stream": { "version": "2.3.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -24731,18 +15061,21 @@ }, "node_modules/concat-stream/node_modules/safe-buffer": { "version": "5.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/concat-stream/node_modules/string_decoder": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/connect": { "version": "3.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/connect/-/connect-3.7.0.tgz", + "integrity": "sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==", "peer": true, "dependencies": { "debug": "2.6.9", @@ -24756,15 +15089,17 @@ }, "node_modules/connect-history-api-fallback": { "version": "2.0.0", + "resolved": "https://registry.npmjs.org/connect-history-api-fallback/-/connect-history-api-fallback-2.0.0.tgz", + "integrity": "sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.8" } }, "node_modules/connect/node_modules/debug": { "version": "2.6.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "peer": true, "dependencies": { "ms": "2.0.0" @@ -24772,7 +15107,8 @@ }, "node_modules/connect/node_modules/finalhandler": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.1.2.tgz", + "integrity": "sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==", "peer": true, "dependencies": { "debug": "2.6.9", @@ -24789,12 +15125,14 @@ }, "node_modules/connect/node_modules/ms": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "peer": true }, "node_modules/connect/node_modules/on-finished": { "version": "2.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==", "peer": true, "dependencies": { "ee-first": "1.1.1" @@ -24805,7 +15143,8 @@ }, "node_modules/connect/node_modules/statuses": { "version": "1.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "peer": true, "engines": { "node": ">= 0.6" @@ -24813,12 +15152,14 @@ }, "node_modules/console-control-strings": { "version": "1.1.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz", + "integrity": "sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==", + "dev": true }, "node_modules/consolidated-events": { "version": "2.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/consolidated-events/-/consolidated-events-2.0.2.tgz", + "integrity": "sha512-2/uRVMdRypf5z/TW/ncD/66l75P5hH2vM/GR8Jf8HLc2xnfJtmina6F6du8+v4Z2vTrMo7jC+W1tmEEuuELgkQ==" }, "node_modules/constants-browserify": { "version": "1.0.0", @@ -24827,8 +15168,9 @@ }, "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, - "license": "MIT", "dependencies": { "safe-buffer": "5.2.1" }, @@ -24838,41 +15180,47 @@ }, "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, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/convert-source-map": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true }, "node_modules/cookie": { "version": "0.5.0", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.5.0.tgz", + "integrity": "sha512-YZ3GUyn/o8gfKJlnlX7g7xq4gyO6OSuhGPKaaGssGB2qgDUS0gPgtTvoyZLTt9Ab6dC4hfc9dV5arkvc/OCmrw==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/cookie-signature": { "version": "1.0.6", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/cookie-signature/-/cookie-signature-1.0.6.tgz", + "integrity": "sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==", + "dev": true }, "node_modules/copy-to-clipboard": { "version": "3.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/copy-to-clipboard/-/copy-to-clipboard-3.3.3.tgz", + "integrity": "sha512-2KV8NhB5JqC3ky0r9PMCAZKbUHSwtEo4CwCs0KXgruG43gX5PMqDEBbVU4OUzw2MuAWUfsuFmWvEKG5QRfSnJA==", "dependencies": { "toggle-selection": "^1.0.6" } }, "node_modules/core-js": { "version": "3.33.3", + "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.33.3.tgz", + "integrity": "sha512-lo0kOocUlLKmm6kv/FswQL8zbkH7mVsLJ/FULClOhv8WRVmKLVcs6XPNQAzstfeJTCHMyButEwG+z1kHxHoDZw==", "hasInstallScript": true, - "license": "MIT", "funding": { "type": "opencollective", "url": "https://opencollective.com/core-js" @@ -24880,7 +15228,8 @@ }, "node_modules/core-js-compat": { "version": "3.33.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/core-js-compat/-/core-js-compat-3.33.3.tgz", + "integrity": "sha512-cNzGqFsh3Ot+529GIXacjTJ7kegdt5fPXxCBVS1G0iaZpuo/tBz399ymceLJveQhFFZ8qThHiP3fzuoQjKN2ow==", "dependencies": { "browserslist": "^4.22.1" }, @@ -24891,6 +15240,8 @@ }, "node_modules/core-js-pure": { "version": "3.33.3", + "resolved": "https://registry.npmjs.org/core-js-pure/-/core-js-pure-3.33.3.tgz", + "integrity": "sha512-taJ00IDOP+XYQEA2dAe4ESkmHt1fL8wzYDo3mRWQey8uO9UojlBFMneA65kMyxfYP7106c6LzWaq7/haDT6BCQ==", "dev": true, "hasInstallScript": true, "license": "MIT", @@ -24901,11 +15252,13 @@ }, "node_modules/core-util-is": { "version": "1.0.3", - "license": "MIT" + "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", - "license": "MIT", + "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", @@ -24919,12 +15272,14 @@ }, "node_modules/country-regex": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/country-regex/-/country-regex-1.1.0.tgz", + "integrity": "sha512-iSPlClZP8vX7MC3/u6s3lrDuoQyhQukh5LyABJ3hvfzbQ3Yyayd4fp04zjLnfi267B/B2FkumcWWgrbban7sSA==", "peer": true }, "node_modules/crc-32": { "version": "1.2.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/crc-32/-/crc-32-1.2.2.tgz", + "integrity": "sha512-ROmzCKrTnOwybPcJApAA6WBWij23HVfGVNKqqrZpuyZOHqK2CwHSvpGuyt/UNNvaIjEd8X5IFGp4Mh+Ie1IHJQ==", "bin": { "crc32": "bin/crc32.njs" }, @@ -24934,8 +15289,9 @@ }, "node_modules/create-jest": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "chalk": "^4.0.0", @@ -24954,8 +15310,9 @@ }, "node_modules/create-jest/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -24968,8 +15325,9 @@ }, "node_modules/create-jest/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -24983,16 +15341,18 @@ }, "node_modules/create-jest/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/create-jest/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -25000,16 +15360,23 @@ "node": ">=8" } }, + "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-fetch": { "version": "3.1.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-3.1.8.tgz", + "integrity": "sha512-cvA+JwZoU0Xq+h6WkMvAUqPEYy92Obet6UdKLfW60qn99ftItKjB5T+BkyWOFWe2pUyfQ+IJHmpOTznqk1M6Kg==", "dependencies": { "node-fetch": "^2.6.12" } }, "node_modules/cross-spawn": { "version": "7.0.3", - "license": "MIT", + "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", @@ -25029,21 +15396,24 @@ }, "node_modules/css-box-model": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/css-box-model/-/css-box-model-1.2.1.tgz", + "integrity": "sha512-a7Vr4Q/kd/aw96bnJG332W9V9LkJO69JRcaCYDUqjp6/z0w6VcZjgAcTbgFxEPfBgdnAwlh3iwu+hLopa+flJw==", "dependencies": { "tiny-invariant": "^1.0.6" } }, "node_modules/css-color-keywords": { "version": "1.0.0", - "license": "ISC", + "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-font": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/css-font/-/css-font-1.2.0.tgz", + "integrity": "sha512-V4U4Wps4dPDACJ4WpgofJ2RT5Yqwe1lEH6wlOOaIxMi0gTjdIijsc5FmxQlZ7ZZyKQkkutqqvULOp07l9c7ssA==", "peer": true, "dependencies": { "css-font-size-keywords": "^1.0.0", @@ -25059,32 +15429,38 @@ }, "node_modules/css-font-size-keywords": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/css-font-size-keywords/-/css-font-size-keywords-1.0.0.tgz", + "integrity": "sha512-Q+svMDbMlelgCfH/RVDKtTDaf5021O486ZThQPIpahnIjUkMUslC+WuOQSWTgGSrNCH08Y7tYNEmmy0hkfMI8Q==", "peer": true }, "node_modules/css-font-stretch-keywords": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/css-font-stretch-keywords/-/css-font-stretch-keywords-1.0.1.tgz", + "integrity": "sha512-KmugPO2BNqoyp9zmBIUGwt58UQSfyk1X5DbOlkb2pckDXFSAfjsD5wenb88fNrD6fvS+vu90a/tsPpb9vb0SLg==", "peer": true }, "node_modules/css-font-style-keywords": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/css-font-style-keywords/-/css-font-style-keywords-1.0.1.tgz", + "integrity": "sha512-0Fn0aTpcDktnR1RzaBYorIxQily85M2KXRpzmxQPgh8pxUN9Fcn00I8u9I3grNr1QXVgCl9T5Imx0ZwKU973Vg==", "peer": true }, "node_modules/css-font-weight-keywords": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/css-font-weight-keywords/-/css-font-weight-keywords-1.0.0.tgz", + "integrity": "sha512-5So8/NH+oDD+EzsnF4iaG4ZFHQ3vaViePkL1ZbZ5iC/KrsCY+WHq/lvOgrtmuOQ9pBBZ1ADGpaf+A4lj1Z9eYA==", "peer": true }, "node_modules/css-global-keywords": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/css-global-keywords/-/css-global-keywords-1.0.1.tgz", + "integrity": "sha512-X1xgQhkZ9n94WDwntqst5D/FKkmiU0GlJSFZSV3kLvyJ1WC5VeyoXDOuleUD+SIuH9C7W05is++0Woh0CGfKjQ==", "peer": true }, "node_modules/css-line-break": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/css-line-break/-/css-line-break-2.1.0.tgz", + "integrity": "sha512-FHcKFCZcAha3LwfVBhCQbW2nCNbkZXn7KVUJcsT5/P8YmfsVja0FMPJr0B903j/E69HUphKiV9iQArX8SDYA4w==", "optional": true, "dependencies": { "utrie": "^1.0.2" @@ -25092,8 +15468,9 @@ }, "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, - "license": "MIT", "dependencies": { "icss-utils": "^5.1.0", "postcss": "^8.4.21", @@ -25117,8 +15494,9 @@ }, "node_modules/css-select": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-4.3.0.tgz", + "integrity": "sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0", "css-what": "^6.0.1", @@ -25132,19 +15510,22 @@ }, "node_modules/css-styled": { "version": "1.0.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/css-styled/-/css-styled-1.0.8.tgz", + "integrity": "sha512-tCpP7kLRI8dI95rCh3Syl7I+v7PP+2JYOzWkl0bUEoSbJM+u8ITbutjlQVf0NC2/g4ULROJPi16sfwDIO8/84g==", "dependencies": { "@daybrush/utils": "^1.13.0" } }, "node_modules/css-system-font-keywords": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/css-system-font-keywords/-/css-system-font-keywords-1.0.0.tgz", + "integrity": "sha512-1umTtVd/fXS25ftfjB71eASCrYhilmEsvDEI6wG/QplnmlfmVM5HkZ/ZX46DT5K3eblFPgLUHt5BRCb0YXkSFA==", "peer": true }, "node_modules/css-to-mat": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/css-to-mat/-/css-to-mat-1.1.1.tgz", + "integrity": "sha512-kvpxFYZb27jRd2vium35G7q5XZ2WJ9rWjDUMNT36M3Hc41qCrLXFM5iEKMGXcrPsKfXEN+8l/riB4QzwwwiEyQ==", "dependencies": { "@daybrush/utils": "^1.13.0", "@scena/matrix": "^1.0.0" @@ -25152,7 +15533,8 @@ }, "node_modules/css-to-react-native": { "version": "2.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/css-to-react-native/-/css-to-react-native-2.3.2.tgz", + "integrity": "sha512-VOFaeZA053BqvvvqIA8c9n0+9vFppVBAHCp6JgFTtTMU3Mzi+XnelJ9XC9ul3BqFzZyQ5N+H0SnwsWT2Ebchxw==", "dependencies": { "camelize": "^1.0.0", "css-color-keywords": "^1.0.0", @@ -25161,12 +15543,14 @@ }, "node_modules/css-to-react-native/node_modules/postcss-value-parser": { "version": "3.3.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-3.3.1.tgz", + "integrity": "sha512-pISE66AbVkp4fDQ7VHBwRNXzAAKJjw4Vw7nWI/+Q3vuly7SNfgYXvm6i5IgFylHGK5sP/xHAbB7N49OS4gWNyQ==" }, "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, - "license": "MIT", "dependencies": { "mdn-data": "2.0.14", "source-map": "^0.6.1" @@ -25177,16 +15561,18 @@ }, "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, - "license": "BSD-3-Clause", "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, - "license": "BSD-2-Clause", "engines": { "node": ">= 6" }, @@ -25196,18 +15582,21 @@ }, "node_modules/css.escape": { "version": "1.5.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/css.escape/-/css.escape-1.5.1.tgz", + "integrity": "sha512-YUifsXXuknHlUsmlgyY0PKzgPOr7/FjCePfHNt0jxm83wHZi44VDMQ7/fGNkjY3/jV1MC+1CmZbaHzugyeRtpg==", + "dev": true }, "node_modules/csscolorparser": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz", + "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==", "peer": true }, "node_modules/cssesc": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", "dev": true, - "license": "MIT", "bin": { "cssesc": "bin/cssesc" }, @@ -25217,8 +15606,9 @@ }, "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, - "license": "MIT", "dependencies": { "css-tree": "^1.1.2" }, @@ -25227,12 +15617,14 @@ } }, "node_modules/csstype": { - "version": "3.1.2", - "license": "MIT" + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" }, "node_modules/d": { "version": "1.0.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/d/-/d-1.0.1.tgz", + "integrity": "sha512-m62ShEObQ39CfralilEQRjH6oAMtNCV1xJyEx5LpRYUVN+EviphDgUc/F3hnYbADmkiNs67Y+3ylmlG7Lnu+FA==", "peer": true, "dependencies": { "es5-ext": "^0.10.50", @@ -25241,17 +15633,20 @@ }, "node_modules/d3-array": { "version": "1.2.4", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", + "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==", "peer": true }, "node_modules/d3-collection": { "version": "1.0.7", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/d3-collection/-/d3-collection-1.0.7.tgz", + "integrity": "sha512-ii0/r5f4sjKNTfh84Di+DpztYwqKhEyUlKoPrzUFfeSkWxjW49xU2QzO9qrPrNkpdI0XJkfzvmTu8V2Zylln6A==", "peer": true }, "node_modules/d3-color": { "version": "3.1.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", "peer": true, "engines": { "node": ">=12" @@ -25259,12 +15654,14 @@ }, "node_modules/d3-dispatch": { "version": "1.0.6", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-1.0.6.tgz", + "integrity": "sha512-fVjoElzjhCEy+Hbn8KygnmMS7Or0a9sI2UzGwoB7cCtvI1XpVN9GpoYlnb3xt2YV66oXYb1fLJ8GMvP4hdU1RA==", "peer": true }, "node_modules/d3-force": { "version": "1.2.1", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-1.2.1.tgz", + "integrity": "sha512-HHvehyaiUlVo5CxBJ0yF/xny4xoaxFxDnBXNvNcfW9adORGZfyNF1dj6DGLKyk4Yh3brP/1h3rnDzdIAwL08zg==", "peer": true, "dependencies": { "d3-collection": "1", @@ -25275,12 +15672,14 @@ }, "node_modules/d3-format": { "version": "1.4.5", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-1.4.5.tgz", + "integrity": "sha512-J0piedu6Z8iB6TbIGfZgDzfXxUFN3qQRMofy2oPdXzQibYGqPB/9iMcxr/TGalU+2RsyDO+U4f33id8tbnSRMQ==", "peer": true }, "node_modules/d3-geo": { "version": "1.12.1", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.12.1.tgz", + "integrity": "sha512-XG4d1c/UJSEX9NfU02KwBL6BYPj8YKHxgBEw5om2ZnTRSbIcego6dhHwcxuSR3clxh0EpE38os1DVPOmnYtTPg==", "peer": true, "dependencies": { "d3-array": "1" @@ -25288,7 +15687,8 @@ }, "node_modules/d3-geo-projection": { "version": "2.9.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/d3-geo-projection/-/d3-geo-projection-2.9.0.tgz", + "integrity": "sha512-ZULvK/zBn87of5rWAfFMc9mJOipeSo57O+BBitsKIXmU4rTVAnX1kSsJkE0R+TxY8pGNoM1nbyRRE7GYHhdOEQ==", "peer": true, "dependencies": { "commander": "2", @@ -25306,17 +15706,20 @@ }, "node_modules/d3-geo-projection/node_modules/commander": { "version": "2.20.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "peer": true }, "node_modules/d3-hierarchy": { "version": "1.1.9", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-1.1.9.tgz", + "integrity": "sha512-j8tPxlqh1srJHAtxfvOUwKNYJkQuBFdM1+JAUfq6xqH5eAqf93L7oG1NVqDa4CpFZNvnNKtCYEUC8KY9yEn9lQ==", "peer": true }, "node_modules/d3-interpolate": { "version": "3.0.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", "peer": true, "dependencies": { "d3-color": "1 - 3" @@ -25327,17 +15730,20 @@ }, "node_modules/d3-path": { "version": "1.0.9", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-1.0.9.tgz", + "integrity": "sha512-VLaYcn81dtHVTjEHd8B+pbe9yHWpXKZUC87PzoFmsFrJqgFwDe/qxfp5MlfsfM1V5E/iVt0MmEbWQ7FVIXh/bg==", "peer": true }, "node_modules/d3-quadtree": { "version": "1.0.7", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-1.0.7.tgz", + "integrity": "sha512-RKPAeXnkC59IDGD0Wu5mANy0Q2V28L+fNe65pOCXVdVuTJS3WPKaJlFHer32Rbh9gIo9qMuJXio8ra4+YmIymA==", "peer": true }, "node_modules/d3-shape": { "version": "1.3.7", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-1.3.7.tgz", + "integrity": "sha512-EUkvKjqPFUAZyOlhY5gzCxCeI0Aep04LwIRpsZ/mLFelJiUfnK56jo5JMDSE7yyP2kLSb6LtF+S5chMk7uqPqw==", "peer": true, "dependencies": { "d3-path": "1" @@ -25345,12 +15751,14 @@ }, "node_modules/d3-time": { "version": "1.1.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-1.1.0.tgz", + "integrity": "sha512-Xh0isrZ5rPYYdqhAVk8VLnMEidhz5aP7htAADH6MfzgmmicPkTo8LhkLxci61/lCB7n7UmE3bN0leRt+qvkLxA==", "peer": true }, "node_modules/d3-time-format": { "version": "2.3.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-2.3.0.tgz", + "integrity": "sha512-guv6b2H37s2Uq/GefleCDtbe0XZAuy7Wa49VGkPVPMfLL9qObgBST3lEHJBMUp8S7NdLQAGIvr2KXk8Hc98iKQ==", "peer": true, "dependencies": { "d3-time": "1" @@ -25358,16 +15766,19 @@ }, "node_modules/d3-timer": { "version": "1.0.10", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-1.0.10.tgz", + "integrity": "sha512-B1JDm0XDaQC+uvo4DT79H0XmBskgS3l6Ve+1SBCfxgmtIb1AVrPIoqd+nPSv+loMX8szQ0sVUhGngL7D5QPiXw==", "peer": true }, "node_modules/date-arithmetic": { "version": "4.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/date-arithmetic/-/date-arithmetic-4.1.0.tgz", + "integrity": "sha512-QWxYLR5P/6GStZcdem+V1xoto6DMadYWpMXU82ES3/RfR3Wdwr3D0+be7mgOJ+Ov0G9D5Dmb9T17sNLQYj9XOg==" }, "node_modules/date-fns": { "version": "2.30.0", - "license": "MIT", + "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" }, @@ -25381,16 +15792,19 @@ }, "node_modules/dayjs": { "version": "1.11.10", - "license": "MIT" + "resolved": "https://registry.npmjs.org/dayjs/-/dayjs-1.11.10.tgz", + "integrity": "sha512-vjAczensTgRcqDERK0SR2XMwsF/tSvnvlv6VcF2GIhg6Sx4yOIt/irsr1RDJsKiIyBzJDpCoXiWWq28MqH2cnQ==" }, "node_modules/debounce": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debounce/-/debounce-1.2.1.tgz", + "integrity": "sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==", "peer": true }, "node_modules/debug": { "version": "4.3.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dependencies": { "ms": "2.1.2" }, @@ -25405,15 +15819,17 @@ }, "node_modules/decamelize": { "version": "1.2.0", - "license": "MIT", + "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/decamelize-keys": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/decamelize-keys/-/decamelize-keys-1.1.1.tgz", + "integrity": "sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==", "dev": true, - "license": "MIT", "dependencies": { "decamelize": "^1.1.0", "map-obj": "^1.0.0" @@ -25427,8 +15843,9 @@ }, "node_modules/decamelize-keys/node_modules/map-obj": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-1.0.1.tgz", + "integrity": "sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } @@ -25447,20 +15864,23 @@ }, "node_modules/decode-uri-component": { "version": "0.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/decode-uri-component/-/decode-uri-component-0.4.1.tgz", + "integrity": "sha512-+8VxcR21HhTy8nOt6jf20w0c9CADrw1O8d+VZ/YzzCt4bJ3uBjw+D1q2osAB8RnpwwaeYBxy0HyKQxD5JBMuuQ==", "engines": { "node": ">=14.16" } }, "node_modules/dedent": { "version": "0.7.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/dedent/-/dedent-0.7.0.tgz", + "integrity": "sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==", + "dev": true }, "node_modules/deep-equal": { "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", "dev": true, - "license": "MIT", "dependencies": { "array-buffer-byte-length": "^1.0.0", "call-bind": "^1.0.5", @@ -25490,15 +15910,18 @@ }, "node_modules/deep-is": { "version": "0.1.4", - "license": "MIT" + "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/deep-object-diff": { "version": "1.1.9", - "license": "MIT" + "resolved": "https://registry.npmjs.org/deep-object-diff/-/deep-object-diff-1.1.9.tgz", + "integrity": "sha512-Rn+RuwkmkDwCi2/oXOFS9Gsr5lJZu/yTGpK7wAaAIE75CC+LCGEZHpY6VQJa/RoJcrmaA/docWJZvYohlNkWPA==" }, "node_modules/deepmerge": { "version": "4.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", "engines": { "node": ">=0.10.0" } @@ -25520,8 +15943,9 @@ }, "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, - "license": "BSD-2-Clause", "dependencies": { "execa": "^5.0.0" }, @@ -25531,7 +15955,8 @@ }, "node_modules/defaults": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/defaults/-/defaults-1.0.4.tgz", + "integrity": "sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==", "dependencies": { "clone": "^1.0.2" }, @@ -25541,7 +15966,8 @@ }, "node_modules/deferred-leveldown": { "version": "5.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/deferred-leveldown/-/deferred-leveldown-5.3.0.tgz", + "integrity": "sha512-a59VOT+oDy7vtAbLRCZwWgxu2BaCfd5Hk7wxJd48ei7I+nsg8Orlb9CLG0PMZienk9BSUKgeAqkO2+Lw+1+Ukw==", "optional": true, "dependencies": { "abstract-leveldown": "~6.2.1", @@ -25553,7 +15979,8 @@ }, "node_modules/define-data-property": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", "dependencies": { "get-intrinsic": "^1.2.1", "gopd": "^1.0.1", @@ -25565,15 +15992,17 @@ }, "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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/define-properties": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", "dependencies": { "define-data-property": "^1.0.1", "has-property-descriptors": "^1.0.0", @@ -25588,7 +16017,8 @@ }, "node_modules/defined": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.1.tgz", + "integrity": "sha512-hsBd2qSVCRE+5PmNdHt1uzyrFu5d3RwmFDKzyNZMFq/EwDNJF7Ee5+D5oEKF0hU6LhtoUF1macFvOe4AskQC1Q==", "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -25596,8 +16026,9 @@ }, "node_modules/defu": { "version": "6.1.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/defu/-/defu-6.1.3.tgz", + "integrity": "sha512-Vy2wmG3NTkmHNg/kzpuvHhkqeIx3ODWqasgCRbKtbXEN0G+HpEEv9BtJLp7ZG1CZloFaC41Ah3ZFbq7aqCqMeQ==", + "dev": true }, "node_modules/del": { "version": "6.1.1", @@ -25622,31 +16053,36 @@ }, "node_modules/delayed-stream": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", "engines": { "node": ">=0.4.0" } }, "node_modules/delegates": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz", + "integrity": "sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==", + "dev": true }, "node_modules/denodeify": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/denodeify/-/denodeify-1.2.1.tgz", + "integrity": "sha512-KNTihKNmQENUZeKu5fzfpzRqR5S2VMp4gl9RFHiWzj9DfvYQPMJ6XHKNaQxaGCXwPk6y9yme3aUoaiAe+KX+vg==", "peer": true }, "node_modules/depd": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/depd/-/depd-2.0.0.tgz", + "integrity": "sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==", "engines": { "node": ">= 0.8" } }, "node_modules/deprecated-react-native-prop-types": { "version": "4.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/deprecated-react-native-prop-types/-/deprecated-react-native-prop-types-4.2.3.tgz", + "integrity": "sha512-2rLTiMKidIFFYpIVM69UnQKngLqQfL6I11Ch8wGSBftS18FUXda+o2we2950X+1dmbgps28niI3qwyH4eX3Z1g==", "peer": true, "dependencies": { "@react-native/normalize-colors": "<0.73.0", @@ -25656,14 +16092,16 @@ }, "node_modules/dequal": { "version": "2.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/dequal/-/dequal-2.0.3.tgz", + "integrity": "sha512-0je+qPKHEMohvfRTCEo3CrPG6cAzAYgmzKyxRiYSSDkS6eGJdyVJm7WaYA5ECaAD9wLB2T4EEeymA5aFVcYXCA==", "engines": { "node": ">=6" } }, "node_modules/destroy": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.2.0.tgz", + "integrity": "sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==", "engines": { "node": ">= 0.8", "npm": "1.2.8000 || >= 1.4.16" @@ -25679,25 +16117,29 @@ }, "node_modules/detect-kerning": { "version": "2.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/detect-kerning/-/detect-kerning-2.1.2.tgz", + "integrity": "sha512-I3JIbrnKPAntNLl1I6TpSQQdQ4AutYzv/sKMFKbepawV/hlH0GmYKhUoOEMd4xqaUHT+Bm0f4127lh5qs1m1tw==", "peer": true }, "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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/detect-node": { "version": "2.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/detect-node/-/detect-node-2.1.0.tgz", + "integrity": "sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==", + "dev": true }, "node_modules/detect-node-es": { "version": "1.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/detect-node-es/-/detect-node-es-1.1.0.tgz", + "integrity": "sha512-ypdmJU/TbBby2Dxibuv7ZLW3Bs1QEmM7nHjEANfohJLvE0XVujisn1qPJcZxg+qDucsr+bP6fLD1rPS3AhJ7EQ==" }, "node_modules/detect-package-manager": { "version": "2.0.1", @@ -25737,16 +16179,18 @@ }, "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, - "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/dir-glob": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, - "license": "MIT", "dependencies": { "path-type": "^4.0.0" }, @@ -25756,7 +16200,8 @@ }, "node_modules/direction": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/direction/-/direction-1.0.4.tgz", + "integrity": "sha512-GYqKi1aH7PJXxdhTeZBFrg8vUBeKXi+cNprXsC1kpJcbcVnV9wBsrOu1cQEdG0WeQwlfHiy3XvnKfIrJ2R0NzQ==", "bin": { "direction": "cli.js" }, @@ -25767,7 +16212,8 @@ }, "node_modules/dnd-core": { "version": "16.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/dnd-core/-/dnd-core-16.0.1.tgz", + "integrity": "sha512-HK294sl7tbw6F6IeuK16YSBUoorvHpY8RHO+9yFfaJyCDVb6n7PRcezrOEOa2SBCqiYpemh5Jx20ZcjKdFAVng==", "dependencies": { "@react-dnd/asap": "^5.0.1", "@react-dnd/invariant": "^4.0.1", @@ -25776,13 +16222,15 @@ }, "node_modules/dns-equal": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "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.1", + "resolved": "https://registry.npmjs.org/dns-packet/-/dns-packet-5.6.1.tgz", + "integrity": "sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==", "dev": true, - "license": "MIT", "dependencies": { "@leichtgewicht/ip-codec": "^2.0.1" }, @@ -25792,8 +16240,9 @@ }, "node_modules/doctrine": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, - "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -25803,7 +16252,8 @@ }, "node_modules/document.contains": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/document.contains/-/document.contains-1.0.2.tgz", + "integrity": "sha512-YcvYFs15mX8m3AO1QNQy3BlIpSMfNRj3Ujk2BEJxsZG+HZf7/hZ6jr7mDpXrF8q+ff95Vef5yjhiZxm8CGJr6Q==", "dependencies": { "define-properties": "^1.1.3" }, @@ -25813,20 +16263,23 @@ }, "node_modules/dom-accessibility-api": { "version": "0.5.16", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/dom-accessibility-api/-/dom-accessibility-api-0.5.16.tgz", + "integrity": "sha512-X7BJ2yElsnOJ30pZF4uIIDfBEVgF4XEBxL9Bxhy6dnrm5hkzqmsWHGTiHqRiITNhMyFLyAiWndIJP7Z1NTteDg==", + "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==", "dev": true, - "license": "MIT", "dependencies": { "utila": "~0.4" } }, "node_modules/dom-helpers": { "version": "5.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/dom-helpers/-/dom-helpers-5.2.1.tgz", + "integrity": "sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==", "dependencies": { "@babel/runtime": "^7.8.7", "csstype": "^3.0.2" @@ -25834,8 +16287,9 @@ }, "node_modules/dom-serializer": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-1.4.1.tgz", + "integrity": "sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==", "dev": true, - "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.2.0", @@ -25847,27 +16301,30 @@ }, "node_modules/dom-serializer/node_modules/entities": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, - "license": "BSD-2-Clause", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, "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" } - ], - "license": "BSD-2-Clause" + ] }, "node_modules/domhandler": { "version": "4.3.1", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-4.3.1.tgz", + "integrity": "sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "domelementtype": "^2.2.0" }, @@ -25880,16 +16337,20 @@ }, "node_modules/dommatrix": { "version": "1.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/dommatrix/-/dommatrix-1.0.3.tgz", + "integrity": "sha512-l32Xp/TLgWb8ReqbVJAFIvXmY7go4nTxxlWiAFyhoQw9RKEOHBZNnyGvJWqDVSPmq3Y9HlM4npqF/T6VMOXhww==", + "deprecated": "dommatrix is no longer maintained. Please use @thednp/dommatrix." }, "node_modules/dompurify": { "version": "3.0.6", - "license": "(MPL-2.0 OR Apache-2.0)" + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.6.tgz", + "integrity": "sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w==" }, "node_modules/domutils": { "version": "2.8.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-2.8.0.tgz", + "integrity": "sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "dom-serializer": "^1.0.1", "domelementtype": "^2.2.0", @@ -25901,8 +16362,9 @@ }, "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, - "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -25928,7 +16390,8 @@ }, "node_modules/draft-js": { "version": "0.11.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/draft-js/-/draft-js-0.11.7.tgz", + "integrity": "sha512-ne7yFfN4sEL82QPQEn80xnADR8/Q6ALVworbC5UOSzOvjffmYfFsr3xSZtxbIirti14R7Y33EZC5rivpLgIbsg==", "dependencies": { "fbjs": "^2.0.0", "immutable": "~3.7.4", @@ -25941,7 +16404,8 @@ }, "node_modules/draft-js-export-html": { "version": "1.4.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/draft-js-export-html/-/draft-js-export-html-1.4.1.tgz", + "integrity": "sha512-G4VGBSalPowktIE4wp3rFbhjs+Ln9IZ2FhXeHjsZDSw0a2+h+BjKu5Enq+mcsyVb51RW740GBK8Xbf7Iic51tw==", "dependencies": { "draft-js-utils": "^1.4.0" }, @@ -25952,7 +16416,8 @@ }, "node_modules/draft-js-utils": { "version": "1.4.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/draft-js-utils/-/draft-js-utils-1.4.1.tgz", + "integrity": "sha512-xE81Y+z/muC5D5z9qWmKfxEW1XyXfsBzSbSBk2JRsoD0yzMGGHQm/0MtuqHl/EUDkaBJJLjJ2EACycoDMY/OOg==", "peerDependencies": { "draft-js": ">=0.10.0", "immutable": "3.x.x" @@ -25960,14 +16425,16 @@ }, "node_modules/draft-js/node_modules/immutable": { "version": "3.7.6", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.7.6.tgz", + "integrity": "sha512-AizQPcaofEtO11RZhPPHBOJRdo/20MKQF9mBLnVkBoyHi1/zXK8fzVdnEpSV9gxqtnh6Qomfp3F0xT5qP/vThw==", "engines": { "node": ">=0.8.0" } }, "node_modules/draw-svg-path": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/draw-svg-path/-/draw-svg-path-1.0.0.tgz", + "integrity": "sha512-P8j3IHxcgRMcY6sDzr0QvJDLzBnJJqpTG33UZ2Pvp8rw0apCHhJCWqYprqrXjrgHnJ6tuhP1iTJSAodPDHxwkg==", "peer": true, "dependencies": { "abs-svg-path": "~0.1.1", @@ -25976,11 +16443,13 @@ }, "node_modules/driver.js": { "version": "0.9.8", - "license": "MIT" + "resolved": "https://registry.npmjs.org/driver.js/-/driver.js-0.9.8.tgz", + "integrity": "sha512-bczjyKdX6XmFyCDkwtRmlaORDwfBk1xXmRO0CAe5VwNQTM98aWaG2LAIiIdTe53iV/B7W5lXlIy2xYtf0JRb7Q==" }, "node_modules/dtype": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/dtype/-/dtype-2.0.0.tgz", + "integrity": "sha512-s2YVcLKdFGS0hpFqJaTwscsyt0E8nNFdmo73Ocd81xNPj4URI4rj6D60A+vFMIw7BXWlb4yRkEwfBqcZzPGiZg==", "peer": true, "engines": { "node": ">= 0.8.0" @@ -25988,12 +16457,14 @@ }, "node_modules/dup": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/dup/-/dup-1.0.0.tgz", + "integrity": "sha512-Bz5jxMMC0wgp23Zm15ip1x8IhYRqJvF3nFC0UInJUDkN1z4uNPk9jTnfCUJXbOGiQ1JbXLQsiV41Fb+HXcj5BA==", "peer": true }, "node_modules/duplexify": { "version": "3.7.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/duplexify/-/duplexify-3.7.1.tgz", + "integrity": "sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==", "dependencies": { "end-of-stream": "^1.0.0", "inherits": "^2.0.1", @@ -26003,11 +16474,13 @@ }, "node_modules/duplexify/node_modules/isarray": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/duplexify/node_modules/readable-stream": { "version": "2.3.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -26020,18 +16493,21 @@ }, "node_modules/duplexify/node_modules/safe-buffer": { "version": "5.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/duplexify/node_modules/string_decoder": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/earcut": { "version": "2.2.4", - "license": "ISC", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==", "peer": true }, "node_modules/eastasianwidth": { @@ -26041,7 +16517,8 @@ }, "node_modules/ee-first": { "version": "1.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==" }, "node_modules/ejs": { "version": "3.1.9", @@ -26059,16 +16536,19 @@ }, "node_modules/electron-to-chromium": { "version": "1.4.601", - "license": "ISC" + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.601.tgz", + "integrity": "sha512-SpwUMDWe9tQu8JX5QCO1+p/hChAi9AE9UpoC3rcHVc+gdCGlbT3SGb5I1klgb952HRIyvt9wZhSz9bNBYz9swA==" }, "node_modules/element-size": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/element-size/-/element-size-1.1.1.tgz", + "integrity": "sha512-eaN+GMOq/Q+BIWy0ybsgpcYImjGIdNLyjLFJU4XsLHXYQao5jCNb36GyN6C2qwmDDYSfIBmKpPpr4VnBdLCsPQ==", "peer": true }, "node_modules/elementary-circuits-directed-graph": { "version": "1.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/elementary-circuits-directed-graph/-/elementary-circuits-directed-graph-1.3.1.tgz", + "integrity": "sha512-ZEiB5qkn2adYmpXGnJKkxT8uJHlW/mxmBpmeqawEHzPxh9HkLD4/1mFYX5l0On+f6rcPIt8/EWlRU2Vo3fX6dQ==", "peer": true, "dependencies": { "strongly-connected-components": "^1.0.1" @@ -26076,8 +16556,9 @@ }, "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, - "license": "MIT", "engines": { "node": ">=12" }, @@ -26087,36 +16568,42 @@ }, "node_modules/emoji-mart": { "version": "5.5.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-mart/-/emoji-mart-5.5.2.tgz", + "integrity": "sha512-Sqc/nso4cjxhOwWJsp9xkVm8OF5c+mJLZJFoFfzRuKO+yWiN7K8c96xmtughYb0d/fZ8UC6cLIQ/p4BR6Pv3/A==" }, "node_modules/emoji-regex": { "version": "8.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" }, "node_modules/emojis-list": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/emojis-list/-/emojis-list-3.0.0.tgz", + "integrity": "sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==", "engines": { "node": ">= 4" } }, "node_modules/encodeurl": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", "engines": { "node": ">= 0.8" } }, "node_modules/encoding": { "version": "0.1.13", - "license": "MIT", + "resolved": "https://registry.npmjs.org/encoding/-/encoding-0.1.13.tgz", + "integrity": "sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==", "dependencies": { "iconv-lite": "^0.6.2" } }, "node_modules/encoding-down": { "version": "6.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/encoding-down/-/encoding-down-6.3.0.tgz", + "integrity": "sha512-QKrV0iKR6MZVJV08QY0wp1e7vF6QbhnbQhb07bwpEyuz4uZiZgPlEGdkCROuFkUwdxlFaiPIhjyarH1ee/3vhw==", "optional": true, "dependencies": { "abstract-leveldown": "^6.2.1", @@ -26130,7 +16617,8 @@ }, "node_modules/encoding/node_modules/iconv-lite": { "version": "0.6.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dependencies": { "safer-buffer": ">= 2.1.2 < 3.0.0" }, @@ -26140,7 +16628,8 @@ }, "node_modules/end-of-stream": { "version": "1.4.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dependencies": { "once": "^1.4.0" } @@ -26157,6 +16646,8 @@ }, "node_modules/enhanced-resolve": { "version": "0.9.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-0.9.1.tgz", + "integrity": "sha512-kxpoMgrdtkXZ5h0SeraBS1iRntpTpQ3R8ussdb38+UAFnMGX5DDyJXePm+OCHOcoXvHDw7mc2erbJBpDnl7TPw==", "dev": true, "dependencies": { "graceful-fs": "^4.1.2", @@ -26169,8 +16660,9 @@ }, "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, - "license": "BSD-2-Clause", "engines": { "node": ">=0.12" }, @@ -26180,15 +16672,17 @@ }, "node_modules/env-paths": { "version": "2.2.1", + "resolved": "https://registry.npmjs.org/env-paths/-/env-paths-2.2.1.tgz", + "integrity": "sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/envinfo": { "version": "7.11.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.11.0.tgz", + "integrity": "sha512-G9/6xF1FPbIw0TtalAMaVPpiq2aDEuKLXM314jPVAO9r2fo2a4BLqMNkmRS7O/xPPZ+COAhGIz3ETvHEV3eUcg==", "bin": { "envinfo": "dist/cli.js" }, @@ -26198,7 +16692,8 @@ }, "node_modules/enzyme-shallow-equal": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/enzyme-shallow-equal/-/enzyme-shallow-equal-1.0.5.tgz", + "integrity": "sha512-i6cwm7hN630JXenxxJFBKzgLC3hMTafFQXflvzHgPmDhOBhxUWDe8AeRv1qp2/uWJ2Y8z5yLWMzmAfkTOiOCZg==", "dependencies": { "has": "^1.0.3", "object-is": "^1.1.5" @@ -26209,12 +16704,14 @@ }, "node_modules/err-code": { "version": "2.0.3", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/err-code/-/err-code-2.0.3.tgz", + "integrity": "sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==", + "dev": true }, "node_modules/errno": { "version": "0.1.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "optional": true, "dependencies": { "prr": "~1.0.1" @@ -26225,21 +16722,24 @@ }, "node_modules/error-ex": { "version": "1.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", "dependencies": { "is-arrayish": "^0.2.1" } }, "node_modules/error-stack-parser": { "version": "2.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/error-stack-parser/-/error-stack-parser-2.1.4.tgz", + "integrity": "sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==", "dependencies": { "stackframe": "^1.3.4" } }, "node_modules/errorhandler": { "version": "1.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/errorhandler/-/errorhandler-1.5.1.tgz", + "integrity": "sha512-rcOwbfvP1WTViVoUjcfZicVzjhjTuhSMntHh6mW3IrEiyE6mJyXvsToJUJGlGlw/2xU9P5whlWNGlIDVeCiT4A==", "peer": true, "dependencies": { "accepts": "~1.3.7", @@ -26251,7 +16751,8 @@ }, "node_modules/es-abstract": { "version": "1.22.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.22.3.tgz", + "integrity": "sha512-eiiY8HQeYfYH2Con2berK+To6GrK2RxbPawDkGq4UiCQQfZHb6wX9qQqkbpPqaxQFcl8d9QzZqo0tGE0VcrdwA==", "dependencies": { "array-buffer-byte-length": "^1.0.0", "arraybuffer.prototype.slice": "^1.0.2", @@ -26302,8 +16803,9 @@ }, "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, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -26321,8 +16823,9 @@ }, "node_modules/es-iterator-helpers": { "version": "1.0.15", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.15.tgz", + "integrity": "sha512-GhoY8uYqd6iwUl2kgjTm4CZAf6oo5mHK7BPqx3rKgx893YSsy0LGHV6gfqqQvZt/8xM8xeOnfXBCfqclMKkJ5g==", "dev": true, - "license": "MIT", "dependencies": { "asynciterator.prototype": "^1.0.0", "call-bind": "^1.0.2", @@ -26342,11 +16845,13 @@ }, "node_modules/es-module-lexer": { "version": "1.4.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.4.1.tgz", + "integrity": "sha512-cXLGjP0c4T3flZJKQSuziYoq7MlT+rnvfZjfp7h+I7K9BNX54kP9nyWvdbwjQ4u1iWbOL4u96fgeZLToQlZC7w==" }, "node_modules/es-set-tostringtag": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.2.tgz", + "integrity": "sha512-BuDyupZt65P9D2D2vA/zqcI3G5xRsklm5N3xCwuiy+/vKy8i0ifdsQP1sLgO4tZDSCaQUSnmC48khknGMV3D2Q==", "dependencies": { "get-intrinsic": "^1.2.2", "has-tostringtag": "^1.0.0", @@ -26358,14 +16863,16 @@ }, "node_modules/es-shim-unscopables": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", "dependencies": { "hasown": "^2.0.0" } }, "node_modules/es-to-primitive": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dependencies": { "is-callable": "^1.1.4", "is-date-object": "^1.0.1", @@ -26380,8 +16887,9 @@ }, "node_modules/es5-ext": { "version": "0.10.62", + "resolved": "https://registry.npmjs.org/es5-ext/-/es5-ext-0.10.62.tgz", + "integrity": "sha512-BHLqn0klhEpnOKSrzn/Xsz2UIW8j+cGmo9JLzr8BiUapV8hPL9+FliFqjwr9ngW7jWdnxv6eO+/LqyhJVqgrjA==", "hasInstallScript": true, - "license": "ISC", "peer": true, "dependencies": { "es6-iterator": "^2.0.3", @@ -26394,7 +16902,8 @@ }, "node_modules/es6-iterator": { "version": "2.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/es6-iterator/-/es6-iterator-2.0.3.tgz", + "integrity": "sha512-zw4SRzoUkd+cl+ZoE15A9o1oQd920Bb0iOJMQkQhl3jNc03YqVjAhG7scf9C5KWRU/R13Orf588uCC6525o02g==", "peer": true, "dependencies": { "d": "1", @@ -26404,7 +16913,8 @@ }, "node_modules/es6-symbol": { "version": "3.1.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/es6-symbol/-/es6-symbol-3.1.3.tgz", + "integrity": "sha512-NJ6Yn3FuDinBaBRWl/q5X/s4koRHBrgKAu+yGI6JCBeiu3qrcbJhwT2GeR/EXVfylRk8dpQVJoLEFhK+Mu31NA==", "peer": true, "dependencies": { "d": "^1.0.1", @@ -26413,7 +16923,8 @@ }, "node_modules/es6-weak-map": { "version": "2.0.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/es6-weak-map/-/es6-weak-map-2.0.3.tgz", + "integrity": "sha512-p5um32HOTO1kP+w7PRnB+5lQ43Z6muuMuIMffvDN8ZB4GcnjLBV6zGStpbASIMk4DCAvEaamhe2zhyCb/QXXsA==", "peer": true, "dependencies": { "d": "1", @@ -26424,9 +16935,10 @@ }, "node_modules/esbuild": { "version": "0.17.19", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.17.19.tgz", + "integrity": "sha512-XQ0jAPFkK/u3LcVRcvVHQcTIqD6E2H1fvZMA5dQPSOWb3suUbWbfbRf94pjc0bNzRYLfIrDRQXr7X+LHIm5oHw==", "dev": true, "hasInstallScript": true, - "license": "MIT", "bin": { "esbuild": "bin/esbuild" }, @@ -26465,6 +16977,8 @@ }, "node_modules/esbuild-register": { "version": "3.5.0", + "resolved": "https://registry.npmjs.org/esbuild-register/-/esbuild-register-3.5.0.tgz", + "integrity": "sha512-+4G/XmakeBAsvJuDugJvtyF1x+XJT4FMocynNpxrvEBViirpfUn2PgNpCHedfWhF4WokNsO/OvMKrmJOIJsI5A==", "dev": true, "license": "MIT", "dependencies": { @@ -26476,14 +16990,16 @@ }, "node_modules/escalade": { "version": "3.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "engines": { "node": ">=6" } }, "node_modules/escape-html": { "version": "1.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==" }, "node_modules/escape-string-regexp": { "version": "1.0.5", @@ -26514,8 +17030,9 @@ }, "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, - "license": "BSD-3-Clause", "optional": true, "engines": { "node": ">=0.10.0" @@ -26523,6 +17040,8 @@ }, "node_modules/eslint": { "version": "8.55.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.55.0.tgz", + "integrity": "sha512-iyUUAM0PCKj5QpwGfmCAG9XXbZCWsqP/eWAWrG/W0umvjuLRBECwSFdt+rCntju0xEH7teIABPwXpahftIaTdA==", "dev": true, "license": "MIT", "dependencies": { @@ -26577,8 +17096,9 @@ }, "node_modules/eslint-config-prettier": { "version": "8.10.0", + "resolved": "https://registry.npmjs.org/eslint-config-prettier/-/eslint-config-prettier-8.10.0.tgz", + "integrity": "sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==", "dev": true, - "license": "MIT", "bin": { "eslint-config-prettier": "bin/cli.js" }, @@ -26588,8 +17108,9 @@ }, "node_modules/eslint-import-resolver-node": { "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^3.2.7", "is-core-module": "^2.13.0", @@ -26598,16 +17119,18 @@ }, "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, - "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-import-resolver-webpack": { "version": "0.13.8", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-webpack/-/eslint-import-resolver-webpack-0.13.8.tgz", + "integrity": "sha512-Y7WIaXWV+Q21Rz/PJgUxiW/FTBOWmU8NTLdz+nz9mMoiz5vAev/fOaQxwD7qRzTfE3HSm1qsxZ5uRd7eX+VEtA==", "dev": true, - "license": "MIT", "dependencies": { "array.prototype.find": "^2.2.2", "debug": "^3.2.7", @@ -26631,16 +17154,18 @@ }, "node_modules/eslint-import-resolver-webpack/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-import-resolver-webpack/node_modules/resolve": { "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, - "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -26655,16 +17180,18 @@ }, "node_modules/eslint-import-resolver-webpack/node_modules/semver": { "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "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, - "license": "MIT", "dependencies": { "debug": "^3.2.7" }, @@ -26679,16 +17206,18 @@ }, "node_modules/eslint-module-utils/node_modules/debug": { "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-plugin-import": { "version": "2.29.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.29.0.tgz", + "integrity": "sha512-QPOO5NO6Odv5lpoTkddtutccQjysJuFxoPS7fAHO+9m9udNHvTCPSAMW9zGAYj8lAIdr40I8yPCdUYrncXtrwg==", "dev": true, - "license": "MIT", "dependencies": { "array-includes": "^3.1.7", "array.prototype.findlastindex": "^1.2.3", @@ -26717,16 +17246,18 @@ }, "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, - "license": "MIT", "dependencies": { "ms": "^2.1.1" } }, "node_modules/eslint-plugin-import/node_modules/doctrine": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", "dev": true, - "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -26736,16 +17267,18 @@ }, "node_modules/eslint-plugin-import/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/eslint-plugin-jest": { "version": "27.6.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jest/-/eslint-plugin-jest-27.6.0.tgz", + "integrity": "sha512-MTlusnnDMChbElsszJvrwD1dN3x6nZl//s4JD23BxB6MgR66TZlL064su24xEIS3VACfAoHV1vgyMgPw8nkdng==", "dev": true, - "license": "MIT", "dependencies": { "@typescript-eslint/utils": "^5.10.0" }, @@ -26768,8 +17301,9 @@ }, "node_modules/eslint-plugin-prettier": { "version": "4.2.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-prettier/-/eslint-plugin-prettier-4.2.1.tgz", + "integrity": "sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==", "dev": true, - "license": "MIT", "dependencies": { "prettier-linter-helpers": "^1.0.0" }, @@ -26788,8 +17322,9 @@ }, "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, - "license": "MIT", "dependencies": { "array-includes": "^3.1.6", "array.prototype.flatmap": "^1.3.1", @@ -26817,8 +17352,9 @@ }, "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, - "license": "MIT", "engines": { "node": ">=10" }, @@ -26828,8 +17364,9 @@ }, "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, - "license": "Apache-2.0", "dependencies": { "esutils": "^2.0.2" }, @@ -26839,8 +17376,9 @@ }, "node_modules/eslint-plugin-react/node_modules/resolve": { "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", "dev": true, - "license": "MIT", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -26855,14 +17393,17 @@ }, "node_modules/eslint-plugin-react/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/eslint-plugin-storybook": { "version": "0.6.15", + "resolved": "https://registry.npmjs.org/eslint-plugin-storybook/-/eslint-plugin-storybook-0.6.15.tgz", + "integrity": "sha512-lAGqVAJGob47Griu29KXYowI4G7KwMoJDOkEip8ujikuDLxU+oWJ1l0WL6F2oDO4QiyUFXvtDkEkISMOPzo+7w==", "dev": true, "license": "MIT", "dependencies": { @@ -26888,7 +17429,8 @@ }, "node_modules/eslint-scope": { "version": "5.1.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -26899,23 +17441,26 @@ }, "node_modules/eslint-scope/node_modules/estraverse": { "version": "4.3.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "engines": { "node": ">=4.0" } }, "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, - "license": "Apache-2.0", "engines": { "node": ">=10" } }, "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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -26928,13 +17473,15 @@ }, "node_modules/eslint/node_modules/argparse": { "version": "2.0.1", - "dev": true, - "license": "Python-2.0" + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "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==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -26948,8 +17495,9 @@ }, "node_modules/eslint/node_modules/escape-string-regexp": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -26959,8 +17507,9 @@ }, "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, - "license": "BSD-2-Clause", "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^5.2.0" @@ -26974,6 +17523,8 @@ }, "node_modules/eslint/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, "license": "Apache-2.0", "engines": { @@ -26985,8 +17536,9 @@ }, "node_modules/eslint/node_modules/globals": { "version": "13.23.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.23.0.tgz", + "integrity": "sha512-XAmF0RjlrjY23MA51q3HltdlGxUpXPvg0GioKiD9X6HD28iMjo2dKC8Vqwm7lne4GNr78+RHTfliktR6ZH09wA==", "dev": true, - "license": "MIT", "dependencies": { "type-fest": "^0.20.2" }, @@ -26999,16 +17551,18 @@ }, "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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/eslint/node_modules/js-yaml": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "license": "MIT", "dependencies": { "argparse": "^2.0.1" }, @@ -27018,8 +17572,9 @@ }, "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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -27029,8 +17584,9 @@ }, "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, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -27040,6 +17596,8 @@ }, "node_modules/espree": { "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "license": "BSD-2-Clause", "dependencies": { @@ -27054,19 +17612,10 @@ "url": "https://opencollective.com/eslint" } }, - "node_modules/espree/node_modules/acorn": { - "version": "8.11.2", - "dev": true, - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/espree/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, "license": "Apache-2.0", "engines": { @@ -27078,7 +17627,8 @@ }, "node_modules/esprima": { "version": "4.0.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", "bin": { "esparse": "bin/esparse.js", "esvalidate": "bin/esvalidate.js" @@ -27100,7 +17650,8 @@ }, "node_modules/esrecurse": { "version": "4.3.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dependencies": { "estraverse": "^5.2.0" }, @@ -27110,7 +17661,8 @@ }, "node_modules/estraverse": { "version": "5.3.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "engines": { "node": ">=4.0" } @@ -27126,25 +17678,29 @@ }, "node_modules/esutils": { "version": "2.0.3", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "engines": { "node": ">=0.10.0" } }, "node_modules/etag": { "version": "1.8.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==", "engines": { "node": ">= 0.6" } }, "node_modules/eve": { "version": "0.5.4", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/eve/-/eve-0.5.4.tgz", + "integrity": "sha512-aqprQ9MAOh1t66PrHxDFmMXPlgNO6Uv1uqvxmwjprQV50jaQ2RqO7O1neY4PJwC+hMnkyMDphu2AQPOPZdjQog==" }, "node_modules/event-target-shim": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/event-target-shim/-/event-target-shim-5.0.1.tgz", + "integrity": "sha512-i/2XbnSz/uxRCU6+NdVJgKWDTM427+MqYbkQzD321DuCQJUqOuJKIA0IM2+W2xtYHdKOmZ4dR6fExsd4SXL+WQ==", "peer": true, "engines": { "node": ">=6" @@ -27152,19 +17708,22 @@ }, "node_modules/eventemitter3": { "version": "4.0.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/eventemitter3/-/eventemitter3-4.0.7.tgz", + "integrity": "sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==", + "dev": true }, "node_modules/events": { "version": "3.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "engines": { "node": ">=0.8.x" } }, "node_modules/execa": { "version": "5.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dependencies": { "cross-spawn": "^7.0.3", "get-stream": "^6.0.0", @@ -27185,6 +17744,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==", "dev": true, "engines": { "node": ">= 0.8.0" @@ -27192,8 +17753,9 @@ }, "node_modules/expect": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/expect-utils": "^29.7.0", "jest-get-type": "^29.6.3", @@ -27207,8 +17769,9 @@ }, "node_modules/express": { "version": "4.18.2", + "resolved": "https://registry.npmjs.org/express/-/express-4.18.2.tgz", + "integrity": "sha512-5/PsL6iGPdfQ/lKM1UuielYgv3BUoJfz1aUwU9vHZ+J7gyvwdQXFEBIEIaxeGf0GIcreATNyBExtalisDbuMqQ==", "dev": true, - "license": "MIT", "dependencies": { "accepts": "~1.3.8", "array-flatten": "1.1.1", @@ -27248,21 +17811,24 @@ }, "node_modules/express/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/express/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, "node_modules/express/node_modules/qs": { "version": "6.11.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", + "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -27275,7 +17841,8 @@ }, "node_modules/ext": { "version": "1.7.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/ext/-/ext-1.7.0.tgz", + "integrity": "sha512-6hxeJYaL110a9b5TEJSj0gojyHQAmA2ch5Os+ySCiA1QGdS697XWY1pzsrSjqA9LDEEgdB/KypIlR59RcLuHYw==", "peer": true, "dependencies": { "type": "^2.7.2" @@ -27283,7 +17850,8 @@ }, "node_modules/ext/node_modules/type": { "version": "2.7.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/type/-/type-2.7.2.tgz", + "integrity": "sha512-dzlvlNlt6AXU7EBSfpAscydQ7gXB+pPGsPnfJnZpiNJBDj7IaJzQlBZYGdEi4R9HmPdBv2XmWJ6YUtoTa7lmCw==", "peer": true }, "node_modules/extend": { @@ -27330,7 +17898,8 @@ }, "node_modules/falafel": { "version": "2.2.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/falafel/-/falafel-2.2.5.tgz", + "integrity": "sha512-HuC1qF9iTnHDnML9YZAdCDQwT0yKl/U55K4XSUXqGAA2GLoafFgWRqdAbhWJxXaYD4pyoVxAJ8wH670jMpI9DQ==", "peer": true, "dependencies": { "acorn": "^7.1.1", @@ -27340,19 +17909,34 @@ "node": ">=0.4.0" } }, + "node_modules/falafel/node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "peer": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, "node_modules/fast-deep-equal": { "version": "3.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" }, "node_modules/fast-diff": { "version": "1.3.0", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/fast-diff/-/fast-diff-1.3.0.tgz", + "integrity": "sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==", + "dev": true }, "node_modules/fast-glob": { "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", "dev": true, - "license": "MIT", "dependencies": { "@nodelib/fs.stat": "^2.0.2", "@nodelib/fs.walk": "^1.2.3", @@ -27366,8 +17950,9 @@ }, "node_modules/fast-glob/node_modules/glob-parent": { "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, - "license": "ISC", "dependencies": { "is-glob": "^4.0.1" }, @@ -27377,7 +17962,8 @@ }, "node_modules/fast-isnumeric": { "version": "1.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fast-isnumeric/-/fast-isnumeric-1.1.4.tgz", + "integrity": "sha512-1mM8qOr2LYz8zGaUdmiqRDiuue00Dxjgcb1NQR7TnhLVh6sQyngP9xvLo7Sl7LZpP/sk5eb+bcyWXw530NTBZw==", "peer": true, "dependencies": { "is-string-blank": "^1.0.1" @@ -27390,18 +17976,23 @@ }, "node_modules/fast-json-stable-stringify": { "version": "2.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" }, "node_modules/fast-levenshtein": { "version": "2.0.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" }, "node_modules/fast-memoize": { "version": "2.5.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fast-memoize/-/fast-memoize-2.5.2.tgz", + "integrity": "sha512-Ue0LwpDYErFbmNnZSF0UH6eImUwDmogUO1jyE+JbN2gsQz/jICm1Ve7t9QT0rNSsfJt+Hs4/S3GnsDVjL4HVrw==" }, "node_modules/fast-xml-parser": { "version": "4.3.2", + "resolved": "https://registry.npmjs.org/fast-xml-parser/-/fast-xml-parser-4.3.2.tgz", + "integrity": "sha512-rmrXUXwbJedoXkStenj1kkljNF7ugn5ZjR9FJcwmCfcCbtOMDghPajbc+Tck6vE6F5XsDmx+Pr2le9fw8+pXBg==", "funding": [ { "type": "github", @@ -27412,7 +18003,6 @@ "url": "https://paypal.me/naturalintelligence" } ], - "license": "MIT", "peer": true, "dependencies": { "strnum": "^1.0.5" @@ -27423,24 +18013,27 @@ }, "node_modules/fastest-levenshtein": { "version": "1.0.16", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.16.tgz", + "integrity": "sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4.9.1" } }, "node_modules/fastq": { "version": "1.15.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.15.0.tgz", + "integrity": "sha512-wBrocU2LCXXa+lWBt8RoIRD89Fi8OdABODa/kEnyeyjS5aZO5/GNvI5sEINADqP/h8M29UHTHUb53sUu5Ihqdw==", "dev": true, - "license": "ISC", "dependencies": { "reusify": "^1.0.4" } }, "node_modules/faye-websocket": { "version": "0.11.4", + "resolved": "https://registry.npmjs.org/faye-websocket/-/faye-websocket-0.11.4.tgz", + "integrity": "sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==", "dev": true, - "license": "Apache-2.0", "dependencies": { "websocket-driver": ">=0.5.1" }, @@ -27450,21 +18043,24 @@ }, "node_modules/fb-watchman": { "version": "2.0.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", "dependencies": { "bser": "2.1.1" } }, "node_modules/fbemitter": { "version": "3.0.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/fbemitter/-/fbemitter-3.0.0.tgz", + "integrity": "sha512-KWKaceCwKQU0+HPoop6gn4eOHk50bBv/VxjJtGMfwmJt3D29JpN4H4eisCtIPA+a8GVBam+ldMMpMjJUvpDyHw==", "dependencies": { "fbjs": "^3.0.0" } }, "node_modules/fbemitter/node_modules/fbjs": { "version": "3.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", + "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", "dependencies": { "cross-fetch": "^3.1.5", "fbjs-css-vars": "^1.0.0", @@ -27477,6 +18073,8 @@ }, "node_modules/fbemitter/node_modules/ua-parser-js": { "version": "1.0.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", + "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", "funding": [ { "type": "opencollective", @@ -27491,14 +18089,14 @@ "url": "https://github.com/sponsors/faisalman" } ], - "license": "MIT", "engines": { "node": "*" } }, "node_modules/fbjs": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-2.0.0.tgz", + "integrity": "sha512-8XA8ny9ifxrAWlyhAbexXcs3rRMtxWcs3M0lctLfB49jRDHiaxj+Mo0XxbwE7nKZYzgCFoq64FS+WFd4IycPPQ==", "dependencies": { "core-js": "^3.6.4", "cross-fetch": "^3.0.4", @@ -27512,7 +18110,8 @@ }, "node_modules/fbjs-css-vars": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fbjs-css-vars/-/fbjs-css-vars-1.0.2.tgz", + "integrity": "sha512-b2XGFAFdWZWg0phtAWLHCk836A1Xann+I+Dgd3Gk64MHKZO44FfoD1KxyvbSh0qZsIoXQGGlVztIY+oitJPpRQ==" }, "node_modules/fd-slicer": { "version": "1.1.0", @@ -27529,12 +18128,14 @@ }, "node_modules/fflate": { "version": "0.4.8", - "license": "MIT" + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.4.8.tgz", + "integrity": "sha512-FJqqoDBR00Mdj9ppamLa/Y7vxm+PRmNWA67N846RvsoYVMKB4q3y/de5PA7gUmRMYK/8CMz2GDZQmCRN1wBcWA==" }, "node_modules/file-entry-cache": { "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, - "license": "MIT", "dependencies": { "flat-cache": "^3.0.4" }, @@ -27544,7 +18145,8 @@ }, "node_modules/file-loader": { "version": "6.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/file-loader/-/file-loader-6.2.0.tgz", + "integrity": "sha512-qo3glqyTa61Ytg4u73GultjHGjdRyig3tG6lPtyX/jOEJvHif9uB0/OCI2Kif6ctF3caQTW2G5gym21oAsI4pw==", "dependencies": { "loader-utils": "^2.0.0", "schema-utils": "^3.0.0" @@ -27562,7 +18164,8 @@ }, "node_modules/file-selector": { "version": "0.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/file-selector/-/file-selector-0.6.0.tgz", + "integrity": "sha512-QlZ5yJC0VxHxQQsQhXvBaC7VRJ2uaxTf+Tfpu4Z/OcVQJVpZO+DGU0rkoVW5ce2SccxugvpBJoMvUs59iILYdw==", "dependencies": { "tslib": "^2.4.0" }, @@ -27621,7 +18224,8 @@ }, "node_modules/fill-range": { "version": "7.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dependencies": { "to-regex-range": "^5.0.1" }, @@ -27631,7 +18235,8 @@ }, "node_modules/filter-obj": { "version": "5.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/filter-obj/-/filter-obj-5.1.0.tgz", + "integrity": "sha512-qWeTREPoT7I0bifpPUXtxkZJ1XJzxWtfoWWkdVGqa+eCr3SHW/Ocp89o8vLvbUuQnadybJpjOKu4V+RwO6sGng==", "engines": { "node": ">=14.16" }, @@ -27641,8 +18246,9 @@ }, "node_modules/finalhandler": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", + "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", "dev": true, - "license": "MIT", "dependencies": { "debug": "2.6.9", "encodeurl": "~1.0.2", @@ -27658,21 +18264,24 @@ }, "node_modules/finalhandler/node_modules/debug": { "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dev": true, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/finalhandler/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "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==", "dev": true, - "license": "MIT", "dependencies": { "commondir": "^1.0.1", "make-dir": "^3.0.2", @@ -27687,8 +18296,9 @@ }, "node_modules/find-cache-dir/node_modules/find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -27699,8 +18309,9 @@ }, "node_modules/find-cache-dir/node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -27710,8 +18321,9 @@ }, "node_modules/find-cache-dir/node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -27724,8 +18336,9 @@ }, "node_modules/find-cache-dir/node_modules/p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -27735,8 +18348,9 @@ }, "node_modules/find-cache-dir/node_modules/pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -27746,11 +18360,13 @@ }, "node_modules/find-root": { "version": "1.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/find-root/-/find-root-1.1.0.tgz", + "integrity": "sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==" }, "node_modules/find-up": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dependencies": { "locate-path": "^6.0.0", "path-exists": "^4.0.0" @@ -27764,16 +18380,18 @@ }, "node_modules/flat": { "version": "5.0.2", + "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", "dev": true, - "license": "BSD-3-Clause", "bin": { "flat": "cli.js" } }, "node_modules/flat-cache": { "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", "dev": true, - "license": "MIT", "dependencies": { "flatted": "^3.2.9", "keyv": "^4.5.3", @@ -27785,12 +18403,14 @@ }, "node_modules/flatted": { "version": "3.2.9", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.9.tgz", + "integrity": "sha512-36yxDn5H7OFZQla0/jFJmbIKTdZAQHngCedGxiMmpNfEZM0sdEeT+WczLQrjK6D7o2aiyLYDnkw0R3JK0Qv1RQ==", + "dev": true }, "node_modules/flatten-vertex-data": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/flatten-vertex-data/-/flatten-vertex-data-1.0.2.tgz", + "integrity": "sha512-BvCBFK2NZqerFTdMDgqfHBwxYWnxeCkwONsw6PvBMcUXqo8U/KDWwmXhqx1x2kLIg7DqIsJfOaJFOmlua3Lxuw==", "peer": true, "dependencies": { "dtype": "^2.0.0" @@ -27798,19 +18418,22 @@ }, "node_modules/flow-enums-runtime": { "version": "0.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/flow-enums-runtime/-/flow-enums-runtime-0.0.5.tgz", + "integrity": "sha512-PSZF9ZuaZD03sT9YaIs0FrGJ7lSUw7rHZIex+73UYVXg46eL/wxN5PaVcPJFudE2cJu5f0fezitV5aBkLHPUOQ==", "peer": true }, "node_modules/flow-parser": { "version": "0.206.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/flow-parser/-/flow-parser-0.206.0.tgz", + "integrity": "sha512-HVzoK3r6Vsg+lKvlIZzaWNBVai+FXTX1wdYhz/wVlH13tb/gOdLXmlTqy6odmTBhT5UoWUbq0k8263Qhr9d88w==", "engines": { "node": ">=0.4.0" } }, "node_modules/flux": { "version": "4.0.4", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/flux/-/flux-4.0.4.tgz", + "integrity": "sha512-NCj3XlayA2UsapRpM7va6wU1+9rE5FIL7qoMcmxWHRzbp0yujihMBm9BBHZ1MDIk5h5o2Bl6eGiCe8rYELAmYw==", "dependencies": { "fbemitter": "^3.0.0", "fbjs": "^3.0.1" @@ -27821,7 +18444,8 @@ }, "node_modules/flux/node_modules/fbjs": { "version": "3.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-3.0.5.tgz", + "integrity": "sha512-ztsSx77JBtkuMrEypfhgc3cI0+0h+svqeie7xHbh1k/IKdcydnvadp/mUaGgjAOXQmQSxsqgaRhS3q9fy+1kxg==", "dependencies": { "cross-fetch": "^3.1.5", "fbjs-css-vars": "^1.0.0", @@ -27834,6 +18458,8 @@ }, "node_modules/flux/node_modules/ua-parser-js": { "version": "1.0.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-1.0.37.tgz", + "integrity": "sha512-bhTyI94tZofjo+Dn8SN6Zv8nBDvyXTymAdM3LDI/0IboIUwTu1rEhW7v2TfiVsoYWgkQ4kOVqnI8APUFbIQIFQ==", "funding": [ { "type": "opencollective", @@ -27848,21 +18474,22 @@ "url": "https://github.com/sponsors/faisalman" } ], - "license": "MIT", "engines": { "node": "*" } }, "node_modules/focus-trap": { "version": "7.5.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/focus-trap/-/focus-trap-7.5.4.tgz", + "integrity": "sha512-N7kHdlgsO/v+iD/dMoJKtsSqs5Dz/dXZVebRgJw23LDk+jMi/974zyiOYDziY2JPp8xivq9BmUGwIJMiuSBi7w==", "dependencies": { "tabbable": "^6.2.0" } }, "node_modules/focus-trap-react": { "version": "10.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/focus-trap-react/-/focus-trap-react-10.2.3.tgz", + "integrity": "sha512-YXBpFu/hIeSu6NnmV2xlXzOYxuWkoOtar9jzgp3lOmjWLWY59C/b8DtDHEAV4SPU07Nd/t+nS/SBNGkhUBFmEw==", "dependencies": { "focus-trap": "^7.5.4", "tabbable": "^6.2.0" @@ -27875,13 +18502,14 @@ }, "node_modules/follow-redirects": { "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", "funding": [ { "type": "individual", "url": "https://github.com/sponsors/RubenVerborgh" } ], - "license": "MIT", "engines": { "node": ">=4.0" }, @@ -27893,7 +18521,8 @@ }, "node_modules/font-atlas": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/font-atlas/-/font-atlas-2.1.0.tgz", + "integrity": "sha512-kP3AmvX+HJpW4w3d+PiPR2X6E1yvsBXt2yhuCw+yReO9F1WYhvZwx3c95DGZGwg9xYzDGrgJYa885xmVA+28Cg==", "peer": true, "dependencies": { "css-font": "^1.0.0" @@ -27901,7 +18530,8 @@ }, "node_modules/font-measure": { "version": "1.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/font-measure/-/font-measure-1.2.2.tgz", + "integrity": "sha512-mRLEpdrWzKe9hbfaF3Qpr06TAjquuBVP5cHy4b3hyeNdjc9i0PO6HniGsX5vjL5OWv7+Bd++NiooNpT/s8BvIA==", "peer": true, "dependencies": { "css-font": "^1.2.0" @@ -27909,13 +18539,16 @@ }, "node_modules/for-each": { "version": "0.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dependencies": { "is-callable": "^1.1.3" } }, "node_modules/foreground-child": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dev": true, "license": "ISC", "dependencies": { @@ -27931,8 +18564,9 @@ }, "node_modules/foreground-child/node_modules/signal-exit": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.1.0.tgz", + "integrity": "sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==", "dev": true, - "license": "ISC", "engines": { "node": ">=14" }, @@ -28038,7 +18672,8 @@ }, "node_modules/form-data": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", "dependencies": { "asynckit": "^0.4.0", "combined-stream": "^1.0.8", @@ -28050,33 +18685,38 @@ }, "node_modules/forwarded": { "version": "0.2.0", + "resolved": "https://registry.npmjs.org/forwarded/-/forwarded-0.2.0.tgz", + "integrity": "sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/frac": { "version": "1.1.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/frac/-/frac-1.1.2.tgz", + "integrity": "sha512-w/XBfkibaTl3YDqASwfDUqkna4Z2p9cFSr1aHDt0WoMTECnRfBOv2WArlZILlqgWlmdIlALXGpM2AOhEk5W3IA==", "engines": { "node": ">=0.8" } }, "node_modules/framework-utils": { "version": "1.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/framework-utils/-/framework-utils-1.1.0.tgz", + "integrity": "sha512-KAfqli5PwpFJ8o3psRNs8svpMGyCSAe8nmGcjQ0zZBWN2H6dZDnq+ABp3N3hdUmFeMrLtjOCTXD4yplUJIWceg==" }, "node_modules/fresh": { "version": "0.5.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==", "engines": { "node": ">= 0.6" } }, "node_modules/from2": { "version": "2.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/from2/-/from2-2.3.0.tgz", + "integrity": "sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==", "peer": true, "dependencies": { "inherits": "^2.0.1", @@ -28085,12 +18725,14 @@ }, "node_modules/from2/node_modules/isarray": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", "peer": true }, "node_modules/from2/node_modules/readable-stream": { "version": "2.3.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "peer": true, "dependencies": { "core-util-is": "~1.0.0", @@ -28104,12 +18746,14 @@ }, "node_modules/from2/node_modules/safe-buffer": { "version": "5.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", "peer": true }, "node_modules/from2/node_modules/string_decoder": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "peer": true, "dependencies": { "safe-buffer": "~5.1.0" @@ -28122,8 +18766,9 @@ }, "node_modules/fs-extra": { "version": "11.2.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", + "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", "dev": true, - "license": "MIT", "dependencies": { "graceful-fs": "^4.2.0", "jsonfile": "^6.0.1", @@ -28135,8 +18780,9 @@ }, "node_modules/fs-minipass": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-2.1.0.tgz", + "integrity": "sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -28146,8 +18792,9 @@ }, "node_modules/fs-minipass/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -28157,21 +18804,26 @@ }, "node_modules/fs-minipass/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/fs-monkey": { "version": "1.0.5", - "dev": true, - "license": "Unlicense" + "resolved": "https://registry.npmjs.org/fs-monkey/-/fs-monkey-1.0.5.tgz", + "integrity": "sha512-8uMbBjrhzW76TYgEV27Y5E//W2f/lTFmx78P2w19FZSxarhI/798APGQyuGCwmkNxgwGRhrLfvWyLBvNtuOmew==", + "dev": true }, "node_modules/fs.realpath": { "version": "1.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/fsevents": { "version": "2.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, "optional": true, "os": [ "darwin" @@ -28182,14 +18834,16 @@ }, "node_modules/function-bind": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/function.prototype.name": { "version": "1.1.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -28205,22 +18859,25 @@ }, "node_modules/functions-have-names": { "version": "1.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/fuse.js": { "version": "6.6.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/fuse.js/-/fuse.js-6.6.2.tgz", + "integrity": "sha512-cJaJkxCCxC8qIIcPBF9yGxY0W/tVZS3uEISDxhYIdtk8OL93pe+6Zj7LjCqVV4dzbqcriOZ+kQ/NE4RXZHsIGA==", "engines": { "node": ">=10" } }, "node_modules/gauge": { "version": "4.0.4", + "resolved": "https://registry.npmjs.org/gauge/-/gauge-4.0.4.tgz", + "integrity": "sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==", "dev": true, - "license": "ISC", "dependencies": { "aproba": "^1.0.3 || ^2.0.0", "color-support": "^1.1.3", @@ -28237,8 +18894,9 @@ }, "node_modules/gaze": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/gaze/-/gaze-1.1.3.tgz", + "integrity": "sha512-BRdNm8hbWzFzWHERTrejLqwHDfS4GibPoq5wjTPIoJHoBtKGPg3xAFfxmM+9ztbXelxcf2hwQcaz1PtmFeue8g==", "dev": true, - "license": "MIT", "dependencies": { "globule": "^1.0.0" }, @@ -28248,19 +18906,22 @@ }, "node_modules/gensync": { "version": "1.0.0-beta.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", "engines": { "node": ">=6.9.0" } }, "node_modules/geojson-vt": { "version": "3.2.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-3.2.1.tgz", + "integrity": "sha512-EvGQQi/zPrDA6zr6BnJD/YhwAkBP8nnJ9emh3EnHQKVMfg/MRVtPbMYdgVy/IaEmn4UfagD2a6fafPDL5hbtwg==", "peer": true }, "node_modules/gesto": { "version": "1.19.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/gesto/-/gesto-1.19.4.tgz", + "integrity": "sha512-hfr/0dWwh0Bnbb88s3QVJd1ZRJeOWcgHPPwmiH6NnafDYvhTsxg+SLYu+q/oPNh9JS3V+nlr6fNs8kvPAtcRDQ==", "dependencies": { "@daybrush/utils": "^1.13.0", "@scena/event-emitter": "^1.0.2" @@ -28268,23 +18929,27 @@ }, "node_modules/get-browser-rtc": { "version": "1.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/get-browser-rtc/-/get-browser-rtc-1.1.0.tgz", + "integrity": "sha512-MghbMJ61EJrRsDe7w1Bvqt3ZsBuqhce5nrn/XAwgwOXhcsz53/ltdxOse1h/8eKXj5slzxdsz56g5rzOFSGwfQ==" }, "node_modules/get-caller-file": { "version": "2.0.5", - "license": "ISC", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "engines": { "node": "6.* || 8.* || >= 10.*" } }, "node_modules/get-canvas-context": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-canvas-context/-/get-canvas-context-1.0.2.tgz", + "integrity": "sha512-LnpfLf/TNzr9zVOGiIY6aKCz8EKuXmlYNV7CM2pUjBa/B+c2I15tS7KLySep75+FuerJdmArvJLcsAXWEy2H0A==", "peer": true }, "node_modules/get-intrinsic": { "version": "1.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", "dependencies": { "function-bind": "^1.1.2", "has-proto": "^1.0.1", @@ -28297,13 +18962,16 @@ }, "node_modules/get-nonce": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-nonce/-/get-nonce-1.0.1.tgz", + "integrity": "sha512-FJhYRoDaiatfEkUK8HKlicmu/3SGFD51q3itKDGoSTysQJBnfOcxU5GxnhE1E6soB76MbT0MBtnKJuXyAx+96Q==", "engines": { "node": ">=6" } }, "node_modules/get-npm-tarball-url": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/get-npm-tarball-url/-/get-npm-tarball-url-2.1.0.tgz", + "integrity": "sha512-ro+DiMu5DXgRBabqXupW38h7WPZ9+Ad8UjwhvsmmN8w1sU7ab0nzAXvVZ4kqYg57OrqomRtJvepX5/xvFKNtjA==", "dev": true, "license": "MIT", "engines": { @@ -28312,8 +18980,9 @@ }, "node_modules/get-package-type": { "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=8.0.0" } @@ -28331,15 +19000,17 @@ }, "node_modules/get-stdin": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-4.0.1.tgz", + "integrity": "sha512-F5aQMywwJ2n85s4hJPTT9RPxGmubonuB10MNYo17/xph174n2MIR33HRguhzVag10O/npM7SPk73LMZNP+FaWw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/get-stream": { "version": "6.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "engines": { "node": ">=10" }, @@ -28349,7 +19020,8 @@ }, "node_modules/get-symbol-description": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -28363,6 +19035,8 @@ }, "node_modules/giget": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/giget/-/giget-1.1.3.tgz", + "integrity": "sha512-zHuCeqtfgqgDwvXlR84UNgnJDuUHQcNI5OqWqFxxuk2BshuKbYhJWdxBsEo4PvKqoGh23lUAIvBNpChMLv7/9Q==", "dev": true, "license": "MIT", "dependencies": { @@ -28380,8 +19054,9 @@ }, "node_modules/giget/node_modules/agent-base": { "version": "7.1.0", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.0.tgz", + "integrity": "sha512-o/zjMZRhJxny7OyEF+Op8X+efiELC7k7yOjMzgfzVqOzXqkBkWI79YoTdOtsuWd5BWhAGAuOY/Xa6xpiaWXiNg==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^4.3.4" }, @@ -28391,13 +19066,15 @@ }, "node_modules/giget/node_modules/colorette": { "version": "2.0.20", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true }, "node_modules/giget/node_modules/https-proxy-agent": { "version": "7.0.2", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.2.tgz", + "integrity": "sha512-NmLNjm6ucYwtcUmL7JQC1ZQ57LmHP4lT15FQ8D61nak1rO6DH+fz5qNK2Ap5UN4ZapYICE3/0KodcLYSPsPbaA==", "dev": true, - "license": "MIT", "dependencies": { "agent-base": "^7.0.2", "debug": "4" @@ -28413,17 +19090,20 @@ }, "node_modules/gl-mat4": { "version": "1.2.0", - "license": "Zlib", + "resolved": "https://registry.npmjs.org/gl-mat4/-/gl-mat4-1.2.0.tgz", + "integrity": "sha512-sT5C0pwB1/e9G9AvAoLsoaJtbMGjfd/jfxo8jMCKqYYEnjZuFvqV5rehqar0538EmssjdDeiEWnKyBSTw7quoA==", "peer": true }, "node_modules/gl-matrix": { "version": "3.4.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", + "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==", "peer": true }, "node_modules/gl-text": { "version": "1.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/gl-text/-/gl-text-1.3.1.tgz", + "integrity": "sha512-/f5gcEMiZd+UTBJLTl3D+CkCB/0UFGTx3nflH8ZmyWcLkZhsZ1+Xx5YYkw2rgWAzgPeE35xCqBuHSoMKQVsR+w==", "peer": true, "dependencies": { "bit-twiddle": "^1.0.2", @@ -28447,7 +19127,8 @@ }, "node_modules/gl-util": { "version": "3.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/gl-util/-/gl-util-3.1.3.tgz", + "integrity": "sha512-dvRTggw5MSkJnCbh74jZzSoTOGnVYK+Bt+Ckqm39CVcl6+zSsxqWk4lr5NKhkqXHL6qvZAU9h17ZF8mIskY9mA==", "peer": true, "dependencies": { "is-browser": "^2.0.1", @@ -28478,8 +19159,9 @@ }, "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, - "license": "ISC", "dependencies": { "is-glob": "^4.0.3" }, @@ -28489,7 +19171,8 @@ }, "node_modules/glob-to-regexp": { "version": "0.4.1", - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==" }, "node_modules/glob/node_modules/brace-expansion": { "version": "2.0.1", @@ -28515,7 +19198,8 @@ }, "node_modules/global-cache": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/global-cache/-/global-cache-1.2.1.tgz", + "integrity": "sha512-EOeUaup5DgWKlCMhA9YFqNRIlZwoxt731jCh47WBV9fQqHgXhr3Fa55hfgIUqilIcPsfdNKN7LHjrNY+Km40KA==", "dependencies": { "define-properties": "^1.1.2", "is-symbol": "^1.0.1" @@ -28525,18 +19209,22 @@ } }, "node_modules/globalize": { - "version": "0.1.1" + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/globalize/-/globalize-0.1.1.tgz", + "integrity": "sha512-5e01v8eLGfuQSOvx2MsDMOWS0GFtCx1wPzQSmcHw4hkxFzrQDBO3Xwg/m8Hr/7qXMrHeOIE29qWVzyv06u1TZA==" }, "node_modules/globals": { "version": "11.12.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", "engines": { "node": ">=4" } }, "node_modules/globalthis": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dependencies": { "define-properties": "^1.1.3" }, @@ -28549,8 +19237,9 @@ }, "node_modules/globby": { "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", "dev": true, - "license": "MIT", "dependencies": { "array-union": "^2.1.0", "dir-glob": "^3.0.1", @@ -28568,8 +19257,9 @@ }, "node_modules/globule": { "version": "1.3.4", + "resolved": "https://registry.npmjs.org/globule/-/globule-1.3.4.tgz", + "integrity": "sha512-OPTIfhMBh7JbBYDpa5b+Q5ptmMWKwcNcFSR/0c6t8V4f3ZAVBEsKNY37QdVqmLRYSMhOUGYrY0QhSoEpzGr/Eg==", "dev": true, - "license": "MIT", "dependencies": { "glob": "~7.1.1", "lodash": "^4.17.21", @@ -28581,8 +19271,9 @@ }, "node_modules/globule/node_modules/glob": { "version": "7.1.7", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.7.tgz", + "integrity": "sha512-OvD9ENzPLbegENnYP5UUfJIirTg4+XwMWGaQfQTY0JenxNvvIKP3U3/tAQSPIu/lHxXYSZmpXlUHeqAIdKzBLQ==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -28600,8 +19291,9 @@ }, "node_modules/globule/node_modules/minimatch": { "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", "dev": true, - "license": "ISC", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -28611,7 +19303,8 @@ }, "node_modules/glsl-inject-defines": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/glsl-inject-defines/-/glsl-inject-defines-1.0.3.tgz", + "integrity": "sha512-W49jIhuDtF6w+7wCMcClk27a2hq8znvHtlGnrYkSWEr8tHe9eA2dcnohlcAmxLYBSpSSdzOkRdyPTrx9fw49+A==", "peer": true, "dependencies": { "glsl-token-inject-block": "^1.0.0", @@ -28621,7 +19314,8 @@ }, "node_modules/glsl-resolve": { "version": "0.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/glsl-resolve/-/glsl-resolve-0.0.1.tgz", + "integrity": "sha512-xxFNsfnhZTK9NBhzJjSBGX6IOqYpvBHxxmo+4vapiljyGNCY0Bekzn0firQkQrazK59c1hYxMDxYS8MDlhw4gA==", "peer": true, "dependencies": { "resolve": "^0.6.1", @@ -28630,11 +19324,14 @@ }, "node_modules/glsl-resolve/node_modules/resolve": { "version": "0.6.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-0.6.3.tgz", + "integrity": "sha512-UHBY3viPlJKf85YijDUcikKX6tmF4SokIDp518ZDVT92JNDcG5uKIthaT/owt3Sar0lwtOafsQuwrg22/v2Dwg==", "peer": true }, "node_modules/glsl-resolve/node_modules/xtend": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-2.2.0.tgz", + "integrity": "sha512-SLt5uylT+4aoXxXuwtQp5ZnMMzhDb1Xkg4pEqc00WUJCQifPfV9Ub1VrNhp9kXkrjZD2I2Hl8WnjP37jzZLPZw==", "peer": true, "engines": { "node": ">=0.4" @@ -28642,12 +19339,14 @@ }, "node_modules/glsl-token-assignments": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/glsl-token-assignments/-/glsl-token-assignments-2.0.2.tgz", + "integrity": "sha512-OwXrxixCyHzzA0U2g4btSNAyB2Dx8XrztY5aVUCjRSh4/D0WoJn8Qdps7Xub3sz6zE73W3szLrmWtQ7QMpeHEQ==", "peer": true }, "node_modules/glsl-token-defines": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/glsl-token-defines/-/glsl-token-defines-1.0.0.tgz", + "integrity": "sha512-Vb5QMVeLjmOwvvOJuPNg3vnRlffscq2/qvIuTpMzuO/7s5kT+63iL6Dfo2FYLWbzuiycWpbC0/KV0biqFwHxaQ==", "peer": true, "dependencies": { "glsl-tokenizer": "^2.0.0" @@ -28655,12 +19354,14 @@ }, "node_modules/glsl-token-depth": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/glsl-token-depth/-/glsl-token-depth-1.1.2.tgz", + "integrity": "sha512-eQnIBLc7vFf8axF9aoi/xW37LSWd2hCQr/3sZui8aBJnksq9C7zMeUYHVJWMhFzXrBU7fgIqni4EhXVW4/krpg==", "peer": true }, "node_modules/glsl-token-descope": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/glsl-token-descope/-/glsl-token-descope-1.0.2.tgz", + "integrity": "sha512-kS2PTWkvi/YOeicVjXGgX5j7+8N7e56srNDEHDTVZ1dcESmbmpmgrnpjPcjxJjMxh56mSXYoFdZqb90gXkGjQw==", "peer": true, "dependencies": { "glsl-token-assignments": "^2.0.0", @@ -28671,32 +19372,38 @@ }, "node_modules/glsl-token-inject-block": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/glsl-token-inject-block/-/glsl-token-inject-block-1.1.0.tgz", + "integrity": "sha512-q/m+ukdUBuHCOtLhSr0uFb/qYQr4/oKrPSdIK2C4TD+qLaJvqM9wfXIF/OOBjuSA3pUoYHurVRNao6LTVVUPWA==", "peer": true }, "node_modules/glsl-token-properties": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/glsl-token-properties/-/glsl-token-properties-1.0.1.tgz", + "integrity": "sha512-dSeW1cOIzbuUoYH0y+nxzwK9S9O3wsjttkq5ij9ZGw0OS41BirKJzzH48VLm8qLg+au6b0sINxGC0IrGwtQUcA==", "peer": true }, "node_modules/glsl-token-scope": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/glsl-token-scope/-/glsl-token-scope-1.1.2.tgz", + "integrity": "sha512-YKyOMk1B/tz9BwYUdfDoHvMIYTGtVv2vbDSLh94PT4+f87z21FVdou1KNKgF+nECBTo0fJ20dpm0B1vZB1Q03A==", "peer": true }, "node_modules/glsl-token-string": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/glsl-token-string/-/glsl-token-string-1.0.1.tgz", + "integrity": "sha512-1mtQ47Uxd47wrovl+T6RshKGkRRCYWhnELmkEcUAPALWGTFe2XZpH3r45XAwL2B6v+l0KNsCnoaZCSnhzKEksg==", "peer": true }, "node_modules/glsl-token-whitespace-trim": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/glsl-token-whitespace-trim/-/glsl-token-whitespace-trim-1.0.0.tgz", + "integrity": "sha512-ZJtsPut/aDaUdLUNtmBYhaCmhIjpKNg7IgZSfX5wFReMc2vnj8zok+gB/3Quqs0TsBSX/fGnqUUYZDqyuc2xLQ==", "peer": true }, "node_modules/glsl-tokenizer": { "version": "2.1.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/glsl-tokenizer/-/glsl-tokenizer-2.1.5.tgz", + "integrity": "sha512-XSZEJ/i4dmz3Pmbnpsy3cKh7cotvFlBiZnDOwnj/05EwNp2XrhQ4XKJxT7/pDt4kp4YcpRSKz8eTV7S+mwV6MA==", "peer": true, "dependencies": { "through2": "^0.6.3" @@ -28704,12 +19411,14 @@ }, "node_modules/glsl-tokenizer/node_modules/isarray": { "version": "0.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-0.0.1.tgz", + "integrity": "sha512-D2S+3GLxWH+uhrNEcoh/fnmYeP8E8/zHl644d/jdA0g2uyXvy3sb0qxotE+ne0LtccHknQzWwZEzhak7oJ0COQ==", "peer": true }, "node_modules/glsl-tokenizer/node_modules/readable-stream": { "version": "1.0.34", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "integrity": "sha512-ok1qVCJuRkNmvebYikljxJA/UEsKwLl2nI1OmaqAu4/UE+h0wKCHok4XkL/gvi39OacXvw59RJUOFUkDib2rHg==", "peer": true, "dependencies": { "core-util-is": "~1.0.0", @@ -28720,12 +19429,14 @@ }, "node_modules/glsl-tokenizer/node_modules/string_decoder": { "version": "0.10.31", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "integrity": "sha512-ev2QzSzWPYmy9GuqfIVildA4OdcGLeFZQrq5ys6RtiuF+RQQiZWr8TZNyAcuVXyQRYfEO+MsoB/1BuQVhOJuoQ==", "peer": true }, "node_modules/glsl-tokenizer/node_modules/through2": { "version": "0.6.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "integrity": "sha512-RkK/CCESdTKQZHdmKICijdKKsCRVHs5KsLZ6pACAmF/1GPUQhonHSXWNERctxEp7RmvjdNbZTL5z9V7nSCXKcg==", "peer": true, "dependencies": { "readable-stream": ">=1.0.33-1 <1.1.0-0", @@ -28734,7 +19445,8 @@ }, "node_modules/glslify": { "version": "7.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/glslify/-/glslify-7.1.1.tgz", + "integrity": "sha512-bud98CJ6kGZcP9Yxcsi7Iz647wuDz3oN+IZsjCRi5X1PI7t/xPKeL0mOwXJjo+CRZMqvq0CkSJiywCcY7kVYog==", "peer": true, "dependencies": { "bl": "^2.2.1", @@ -28759,7 +19471,8 @@ }, "node_modules/glslify-bundle": { "version": "5.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/glslify-bundle/-/glslify-bundle-5.1.1.tgz", + "integrity": "sha512-plaAOQPv62M1r3OsWf2UbjN0hUYAB7Aph5bfH58VxJZJhloRNbxOL9tl/7H71K7OLJoSJ2ZqWOKk3ttQ6wy24A==", "peer": true, "dependencies": { "glsl-inject-defines": "^1.0.1", @@ -28776,7 +19489,8 @@ }, "node_modules/glslify-deps": { "version": "1.3.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glslify-deps/-/glslify-deps-1.3.2.tgz", + "integrity": "sha512-7S7IkHWygJRjcawveXQjRXLO2FTjijPDYC7QfZyAQanY+yGLCFHYnPtsGT9bdyHiwPTw/5a1m1M9hamT2aBpag==", "peer": true, "dependencies": { "@choojs/findup": "^0.2.0", @@ -28791,14 +19505,16 @@ }, "node_modules/goober": { "version": "2.1.13", - "license": "MIT", + "resolved": "https://registry.npmjs.org/goober/-/goober-2.1.13.tgz", + "integrity": "sha512-jFj3BQeleOoy7t93E9rZ2de+ScC4lQICLwiAQmKMg9F6roKGaLSHoCDYKkWlSafg138jejvq/mTdvmnwDQgqoQ==", "peerDependencies": { "csstype": "^3.0.10" } }, "node_modules/gopd": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dependencies": { "get-intrinsic": "^1.1.3" }, @@ -28808,16 +19524,19 @@ }, "node_modules/graceful-fs": { "version": "4.2.11", - "license": "ISC" + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, "node_modules/graphemer": { "version": "1.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true }, "node_modules/grid-index": { "version": "1.1.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/grid-index/-/grid-index-1.1.0.tgz", + "integrity": "sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==", "peer": true }, "node_modules/gunzip-maybe": { @@ -28838,8 +19557,9 @@ }, "node_modules/handle-thing": { "version": "2.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/handle-thing/-/handle-thing-2.0.1.tgz", + "integrity": "sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==", + "dev": true }, "node_modules/handlebars": { "version": "4.7.8", @@ -28863,30 +19583,34 @@ }, "node_modules/handlebars/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, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/hard-rejection": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/hard-rejection/-/hard-rejection-2.1.0.tgz", + "integrity": "sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/has": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.4.tgz", + "integrity": "sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==", "engines": { "node": ">= 0.4.0" } }, "node_modules/has-bigints": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } @@ -28900,7 +19624,8 @@ }, "node_modules/has-hover": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-hover/-/has-hover-1.0.1.tgz", + "integrity": "sha512-0G6w7LnlcpyDzpeGUTuT0CEw05+QlMuGVk1IHNAlHrGJITGodjZu3x8BNDUMfKJSZXNB2ZAclqc1bvrd+uUpfg==", "peer": true, "dependencies": { "is-browser": "^2.0.1" @@ -28908,7 +19633,8 @@ }, "node_modules/has-passive-events": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-passive-events/-/has-passive-events-1.0.0.tgz", + "integrity": "sha512-2vSj6IeIsgvsRMyeQ0JaCX5Q3lX4zMn5HpoVc7MEhQ6pv8Iq9rsXjsp+E5ZwaT7T0xhMT0KmU8gtt1EFVdbJiw==", "peer": true, "dependencies": { "is-browser": "^2.0.1" @@ -28916,7 +19642,8 @@ }, "node_modules/has-property-descriptors": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", "dependencies": { "get-intrinsic": "^1.2.2" }, @@ -28926,7 +19653,8 @@ }, "node_modules/has-proto": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "engines": { "node": ">= 0.4" }, @@ -28936,7 +19664,8 @@ }, "node_modules/has-symbols": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "engines": { "node": ">= 0.4" }, @@ -28946,7 +19675,8 @@ }, "node_modules/has-tostringtag": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dependencies": { "has-symbols": "^1.0.2" }, @@ -28959,12 +19689,14 @@ }, "node_modules/has-unicode": { "version": "2.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz", + "integrity": "sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==", + "dev": true }, "node_modules/hasown": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", "dependencies": { "function-bind": "^1.1.2" }, @@ -29031,20 +19763,23 @@ }, "node_modules/he": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", "dev": true, - "license": "MIT", "bin": { "he": "bin/he" } }, "node_modules/hermes-estree": { "version": "0.12.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hermes-estree/-/hermes-estree-0.12.0.tgz", + "integrity": "sha512-+e8xR6SCen0wyAKrMT3UD0ZCCLymKhRgjEB5sS28rKiFir/fXgLoeRilRUssFCILmGHb+OvHDUlhxs0+IEyvQw==", "peer": true }, "node_modules/hermes-parser": { "version": "0.12.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hermes-parser/-/hermes-parser-0.12.0.tgz", + "integrity": "sha512-d4PHnwq6SnDLhYl3LHNHvOg7nQ6rcI7QVil418REYksv0Mh3cEkHDcuhGxNQ3vgnLSLl4QSvDrFCwQNYdpWlzw==", "peer": true, "dependencies": { "hermes-estree": "0.12.0" @@ -29052,7 +19787,8 @@ }, "node_modules/hermes-profile-transformer": { "version": "0.0.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hermes-profile-transformer/-/hermes-profile-transformer-0.0.6.tgz", + "integrity": "sha512-cnN7bQUm65UWOy6cbGcCcZ3rpwW8Q/j4OP5aWRhEry4Z2t2aR1cjrbp0BS+KiBN0smvP1caBgAuxutvyvJILzQ==", "peer": true, "dependencies": { "source-map": "^0.7.3" @@ -29063,15 +19799,17 @@ }, "node_modules/hoist-non-react-statics": { "version": "3.3.2", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-3.3.2.tgz", + "integrity": "sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==", "dependencies": { "react-is": "^16.7.0" } }, "node_modules/hosted-git-info": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-4.1.0.tgz", + "integrity": "sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==", "dev": true, - "license": "ISC", "dependencies": { "lru-cache": "^6.0.0" }, @@ -29081,8 +19819,9 @@ }, "node_modules/hosted-git-info/node_modules/lru-cache": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -29092,13 +19831,15 @@ }, "node_modules/hosted-git-info/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/hpack.js": { "version": "2.1.6", + "resolved": "https://registry.npmjs.org/hpack.js/-/hpack.js-2.1.6.tgz", + "integrity": "sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==", "dev": true, - "license": "MIT", "dependencies": { "inherits": "^2.0.1", "obuf": "^1.0.0", @@ -29108,13 +19849,15 @@ }, "node_modules/hpack.js/node_modules/isarray": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -29127,24 +19870,29 @@ }, "node_modules/hpack.js/node_modules/safe-buffer": { "version": "5.1.2", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/hsluv": { "version": "0.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/hsluv/-/hsluv-0.0.3.tgz", + "integrity": "sha512-08iL2VyCRbkQKBySkSh6m8zMUa3sADAxGVWs3Z1aPcUkTJeK0ETG4Fc27tEmQBGUAXZjIsXOZqBvacuVNSC/fQ==", "peer": true }, "node_modules/html-entities": { "version": "2.4.0", + "resolved": "https://registry.npmjs.org/html-entities/-/html-entities-2.4.0.tgz", + "integrity": "sha512-igBTJcNNNhvZFRtm8uA6xMY6xYleeDwn3PeBCkDz7tHttv4F2hsDI2aPgNERWzvRcNYHNT3ymRaQzllmXj4YsQ==", "dev": true, "funding": [ { @@ -29155,18 +19903,19 @@ "type": "patreon", "url": "https://patreon.com/mdevils" } - ], - "license": "MIT" + ] }, "node_modules/html-escaper": { "version": "2.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true }, "node_modules/html-loader": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/html-loader/-/html-loader-4.2.0.tgz", + "integrity": "sha512-OxCHD3yt+qwqng2vvcaPApCEvbx+nXWu+v69TYHx1FO8bffHn/JjHtE3TTQZmHjwvnJe4xxzuecetDVBrQR1Zg==", "dev": true, - "license": "MIT", "dependencies": { "html-minifier-terser": "^7.0.0", "parse5": "^7.0.0" @@ -29184,8 +19933,9 @@ }, "node_modules/html-minifier-terser": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-7.2.0.tgz", + "integrity": "sha512-tXgn3QfqPIpGl9o+K5tpcj3/MN4SfLtsx2GWwBC3SSd0tXQGyF3gsSqad8loJgKZGM3ZxbYDd5yhiBIdWpmvLA==", "dev": true, - "license": "MIT", "dependencies": { "camel-case": "^4.1.2", "clean-css": "~5.3.2", @@ -29204,7 +19954,8 @@ }, "node_modules/html-parse-stringify": { "version": "3.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/html-parse-stringify/-/html-parse-stringify-3.0.1.tgz", + "integrity": "sha512-KknJ50kTInJ7qIScF3jeaFRpMpE8/lfiTdzf/twXyPBLAGrLRTmkz3AdTnKeh40X8k9L2fdYwEp/42WGXIRGcg==", "dependencies": { "void-elements": "3.1.0" } @@ -29231,8 +19982,9 @@ }, "node_modules/html-webpack-plugin": { "version": "5.5.3", + "resolved": "https://registry.npmjs.org/html-webpack-plugin/-/html-webpack-plugin-5.5.3.tgz", + "integrity": "sha512-6YrDKTuqaP/TquFH7h4srYWsZx+x6k6+FbsTm0ziCwGHDP78Unr1r9F/H4+sGmMbX08GQcJ+K64x55b+7VM/jg==", "dev": true, - "license": "MIT", "dependencies": { "@types/html-minifier-terser": "^6.0.0", "html-minifier-terser": "^6.0.2", @@ -29253,16 +20005,18 @@ }, "node_modules/html-webpack-plugin/node_modules/commander": { "version": "8.3.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-8.3.0.tgz", + "integrity": "sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==", "dev": true, - "license": "MIT", "engines": { "node": ">= 12" } }, "node_modules/html-webpack-plugin/node_modules/html-minifier-terser": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/html-minifier-terser/-/html-minifier-terser-6.1.0.tgz", + "integrity": "sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==", "dev": true, - "license": "MIT", "dependencies": { "camel-case": "^4.1.2", "clean-css": "^5.2.2", @@ -29281,15 +20035,17 @@ }, "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, - "license": "MIT", "engines": { "node": ">=6" } }, "node_modules/html2canvas": { "version": "1.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/html2canvas/-/html2canvas-1.4.1.tgz", + "integrity": "sha512-fPU6BHNpsyIhr8yyMpTLLxAbkaK8ArIBcmZIRiBLiDhjeqvXolaEmDGmELFuX9I4xDcaKKcJl+TKZLqruBbmWA==", "optional": true, "dependencies": { "css-line-break": "^2.1.0", @@ -29301,6 +20057,8 @@ }, "node_modules/htmlparser2": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/htmlparser2/-/htmlparser2-6.1.0.tgz", + "integrity": "sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==", "dev": true, "funding": [ "https://github.com/fb55/htmlparser2?sponsor=1", @@ -29309,7 +20067,6 @@ "url": "https://github.com/sponsors/fb55" } ], - "license": "MIT", "dependencies": { "domelementtype": "^2.0.1", "domhandler": "^4.0.0", @@ -29319,25 +20076,29 @@ }, "node_modules/htmlparser2/node_modules/entities": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-2.2.0.tgz", + "integrity": "sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==", "dev": true, - "license": "BSD-2-Clause", "funding": { "url": "https://github.com/fb55/entities?sponsor=1" } }, "node_modules/http-cache-semantics": { "version": "4.1.1", - "dev": true, - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true }, "node_modules/http-deceiver": { "version": "1.2.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/http-deceiver/-/http-deceiver-1.2.7.tgz", + "integrity": "sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==", + "dev": true }, "node_modules/http-errors": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-2.0.0.tgz", + "integrity": "sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==", "dependencies": { "depd": "2.0.0", "inherits": "2.0.4", @@ -29351,13 +20112,15 @@ }, "node_modules/http-parser-js": { "version": "0.5.8", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/http-parser-js/-/http-parser-js-0.5.8.tgz", + "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, - "license": "MIT", "dependencies": { "eventemitter3": "^4.0.0", "follow-redirects": "^1.0.0", @@ -29369,8 +20132,9 @@ }, "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, - "license": "MIT", "dependencies": { "@tootallnate/once": "2", "agent-base": "6", @@ -29382,8 +20146,9 @@ }, "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, - "license": "MIT", "dependencies": { "@types/http-proxy": "^1.17.8", "http-proxy": "^1.18.1", @@ -29405,8 +20170,9 @@ }, "node_modules/http-proxy-middleware/node_modules/is-plain-obj": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-3.0.0.tgz", + "integrity": "sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==", "dev": true, - "license": "MIT", "engines": { "node": ">=10" }, @@ -29416,7 +20182,8 @@ }, "node_modules/https-proxy-agent": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", "dependencies": { "agent-base": "6", "debug": "4" @@ -29427,25 +20194,30 @@ }, "node_modules/human-signals": { "version": "2.1.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", "engines": { "node": ">=10.17.0" } }, "node_modules/humanize-ms": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", + "integrity": "sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==", "dev": true, - "license": "MIT", "dependencies": { "ms": "^2.0.0" } }, "node_modules/humps": { "version": "2.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/humps/-/humps-2.0.1.tgz", + "integrity": "sha512-E0eIbrFWUhwfXJmsbdjRQFQPrl5pTEoKlz163j1mTqqUnU9PgR4AgB8AIITzuB3vLBdxZXyZ9TDIrwB2OASz4g==" }, "node_modules/i18next": { "version": "22.5.1", + "resolved": "https://registry.npmjs.org/i18next/-/i18next-22.5.1.tgz", + "integrity": "sha512-8TGPgM3pAD+VRsMtUMNknRz3kzqwp/gPALrWMsDnmC1mKqJwpWyooQRLMcbTwq8z8YwSmuj+ZYvc+xCuEpkssA==", "funding": [ { "type": "individual", @@ -29460,35 +20232,38 @@ "url": "https://www.i18next.com/how-to/faq#i18next-is-awesome.-how-can-i-support-the-project" } ], - "license": "MIT", "dependencies": { "@babel/runtime": "^7.20.6" } }, "node_modules/i18next-browser-languagedetector": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/i18next-browser-languagedetector/-/i18next-browser-languagedetector-7.2.0.tgz", + "integrity": "sha512-U00DbDtFIYD3wkWsr2aVGfXGAj2TgnELzOX9qv8bT0aJtvPV9CRO77h+vgmHFBMe7LAxdwvT/7VkCWGya6L3tA==", "dependencies": { "@babel/runtime": "^7.23.2" } }, "node_modules/i18next-http-backend": { "version": "2.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/i18next-http-backend/-/i18next-http-backend-2.4.2.tgz", + "integrity": "sha512-wKrgGcaFQ4EPjfzBTjzMU0rbFTYpa0S5gv9N/d8WBmWS64+IgJb7cHddMvV+tUkse7vUfco3eVs2lB+nJhPo3w==", "dependencies": { "cross-fetch": "4.0.0" } }, "node_modules/i18next-http-backend/node_modules/cross-fetch": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cross-fetch/-/cross-fetch-4.0.0.tgz", + "integrity": "sha512-e4a5N8lVvuLgAWgnCrLr2PP0YyDOTHa9H/Rj54dirp61qXnNq46m82bRhNqIA5VccJtWBvPTFRV3TtvHUKPB1g==", "dependencies": { "node-fetch": "^2.6.12" } }, "node_modules/iconv-lite": { "version": "0.4.24", - "license": "MIT", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz", + "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==", "dependencies": { "safer-buffer": ">= 2.1.2 < 3" }, @@ -29498,8 +20273,9 @@ }, "node_modules/icss-utils": { "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, - "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -29509,6 +20285,8 @@ }, "node_modules/ieee754": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", "funding": [ { "type": "github", @@ -29522,20 +20300,21 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "BSD-3-Clause" + ] }, "node_modules/ignore": { "version": "5.3.0", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.0.tgz", + "integrity": "sha512-g7dmpshy+gD7mh88OC9NwSGTKoc3kyLAZQRU1mt53Aw/vnvfXnbC+F/7F7QoYVKbV+KNvJx8wArewKy1vXMtlg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/image-size": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-1.0.2.tgz", + "integrity": "sha512-xfOoWjceHntRb3qFCrh5ZFORYH8XCdYpASltMhZ/Q0KZiOwjdE/Yl2QCiWdwD+lygV5bMCvauzgu5PxBX/Yerg==", "peer": true, "dependencies": { "queue": "6.0.2" @@ -29549,12 +20328,14 @@ }, "node_modules/immediate": { "version": "3.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/immediate/-/immediate-3.3.0.tgz", + "integrity": "sha512-HR7EVodfFUdQCTIeySw+WDRFJlPcLOJbXfwwZ7Oom6tjsvZ3bOkCDJHehQC3nxJrv7+f9XecwazynjU8e4Vw3Q==", "optional": true }, "node_modules/immer": { "version": "9.0.21", - "license": "MIT", + "resolved": "https://registry.npmjs.org/immer/-/immer-9.0.21.tgz", + "integrity": "sha512-bc4NBHqOqSfRW7POMkHd51LvClaeMXpm8dx0e8oE2GORbq5aRK7Bxl4FyzVLdGtLmvLKL7BTDBG5ACQm4HWjTA==", "funding": { "type": "opencollective", "url": "https://opencollective.com/immer" @@ -29562,11 +20343,13 @@ }, "node_modules/immutability-helper": { "version": "3.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/immutability-helper/-/immutability-helper-3.1.1.tgz", + "integrity": "sha512-Q0QaXjPjwIju/28TsugCHNEASwoCcJSyJV3uO1sOIQGI0jKgm9f41Lvz0DZj3n46cNCyAZTsEYoY4C2bVRUzyQ==" }, "node_modules/immutable": { "version": "3.8.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/immutable/-/immutable-3.8.2.tgz", + "integrity": "sha512-15gZoQ38eYjEjxkorfbcgBKBL6R7T459OuK+CpcWt7O3KF4uPCx2tD0uFETlUDIyo+1789crbMhTvQBSR5yBMg==", "peer": true, "engines": { "node": ">=0.10.0" @@ -29574,7 +20357,8 @@ }, "node_modules/import-fresh": { "version": "3.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dependencies": { "parent-module": "^1.0.0", "resolve-from": "^4.0.0" @@ -29588,15 +20372,17 @@ }, "node_modules/import-fresh/node_modules/resolve-from": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "engines": { "node": ">=4" } }, "node_modules/import-local": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.1.0.tgz", + "integrity": "sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==", "dev": true, - "license": "MIT", "dependencies": { "pkg-dir": "^4.2.0", "resolve-cwd": "^3.0.0" @@ -29613,8 +20399,9 @@ }, "node_modules/import-local/node_modules/find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -29625,8 +20412,9 @@ }, "node_modules/import-local/node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -29636,8 +20424,9 @@ }, "node_modules/import-local/node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -29650,8 +20439,9 @@ }, "node_modules/import-local/node_modules/p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -29661,8 +20451,9 @@ }, "node_modules/import-local/node_modules/pkg-dir": { "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^4.0.0" }, @@ -29672,27 +20463,31 @@ }, "node_modules/imurmurhash": { "version": "0.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", "engines": { "node": ">=0.8.19" } }, "node_modules/indent-string": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/indent-string/-/indent-string-4.0.0.tgz", + "integrity": "sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/infer-owner": { "version": "1.0.4", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/infer-owner/-/infer-owner-1.0.4.tgz", + "integrity": "sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==", + "dev": true }, "node_modules/inflight": { "version": "1.0.6", - "license": "ISC", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dependencies": { "once": "^1.3.0", "wrappy": "1" @@ -29700,7 +20495,8 @@ }, "node_modules/inherits": { "version": "2.0.4", - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/inline-style-parser": { "version": "0.2.2", @@ -29709,7 +20505,8 @@ }, "node_modules/internal-slot": { "version": "1.0.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.6.tgz", + "integrity": "sha512-Xj6dv+PsbtwyPpEflsejS+oIZxmMlV44zAhG479uYu89MsjcYOhCFnNyKrkJrihbsiasQyY0afoCl/9BLR65bg==", "dependencies": { "get-intrinsic": "^1.2.2", "hasown": "^2.0.0", @@ -29721,28 +20518,32 @@ }, "node_modules/interpret": { "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.10" } }, "node_modules/invariant": { "version": "2.2.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/invariant/-/invariant-2.2.4.tgz", + "integrity": "sha512-phJfQVBuaJM5raOpJjSfkiD6BpbCE4Ns//LaXl6wGYtUBY83nWS6Rf9tXm2e8VaK60JEjYldbPif/A2B1C2gNA==", "dependencies": { "loose-envify": "^1.0.0" } }, "node_modules/ip": { "version": "1.1.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ip/-/ip-1.1.8.tgz", + "integrity": "sha512-PuExPYUiu6qMBQb4l06ecm6T6ujzhmh+MeJcW9wa89PoAz5pvd4zPgN5WJV104mb6S2T1AwNIAaB70JNrLQWhg==", "peer": true }, "node_modules/ipaddr.js": { "version": "1.9.1", + "resolved": "https://registry.npmjs.org/ipaddr.js/-/ipaddr.js-1.9.1.tgz", + "integrity": "sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.10" } @@ -29779,8 +20580,9 @@ }, "node_modules/is-arguments": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -29794,7 +20596,8 @@ }, "node_modules/is-array-buffer": { "version": "3.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.2.tgz", + "integrity": "sha512-y+FyyR/w8vfIRq4eQcM1EYgSTnmHXPqaF+IgzgraytCFq5Xh8lllDVmAZolPJiZttZLeFSINPYMaEJ7/vWUa1w==", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.0", @@ -29806,12 +20609,14 @@ }, "node_modules/is-arrayish": { "version": "0.2.1", - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -29824,7 +20629,8 @@ }, "node_modules/is-bigint": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dependencies": { "has-bigints": "^1.0.1" }, @@ -29834,7 +20640,8 @@ }, "node_modules/is-binary-path": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dependencies": { "binary-extensions": "^2.0.0" }, @@ -29844,7 +20651,8 @@ }, "node_modules/is-boolean-object": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -29858,12 +20666,14 @@ }, "node_modules/is-browser": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-browser/-/is-browser-2.1.0.tgz", + "integrity": "sha512-F5rTJxDQ2sW81fcfOR1GnCXT6sVJC104fCyfj+mjpwNEwaPYSn5fte5jiHmBg3DHsIoL/l8Kvw5VN5SsTRcRFQ==", "peer": true }, "node_modules/is-callable": { "version": "1.2.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "engines": { "node": ">= 0.4" }, @@ -29873,7 +20683,8 @@ }, "node_modules/is-core-module": { "version": "2.13.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { "hasown": "^2.0.0" }, @@ -29883,7 +20694,8 @@ }, "node_modules/is-date-object": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -29910,7 +20722,8 @@ }, "node_modules/is-directory": { "version": "0.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-directory/-/is-directory-0.3.1.tgz", + "integrity": "sha512-yVChGzahRFvbkscn2MlwGismPO12i9+znNruC5gVEntG3qu0xQMzsGg/JFbrsqDOHtHFPci+V5aP5T9I+yeKqw==", "peer": true, "engines": { "node": ">=0.10.0" @@ -29918,8 +20731,9 @@ }, "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, - "license": "MIT", "bin": { "is-docker": "cli.js" }, @@ -29932,15 +20746,17 @@ }, "node_modules/is-extglob": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", "engines": { "node": ">=0.10.0" } }, "node_modules/is-finalizationregistry": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2" }, @@ -29950,7 +20766,8 @@ }, "node_modules/is-finite": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-finite/-/is-finite-1.1.0.tgz", + "integrity": "sha512-cdyMtqX/BOqqNBBiKlIVkytNHm49MtMlYyn1zxzvJKWmFMlGzm+ry5BBfYyeY9YmNKbRSo/o7OX9w9ale0wg3w==", "peer": true, "engines": { "node": ">=0.10.0" @@ -29961,7 +20778,8 @@ }, "node_modules/is-firefox": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-firefox/-/is-firefox-1.0.3.tgz", + "integrity": "sha512-6Q9ITjvWIm0Xdqv+5U12wgOKEM2KoBw4Y926m0OFkvlCxnbG94HKAsVz8w3fWcfAS5YA2fJORXX1dLrkprCCxA==", "peer": true, "engines": { "node": ">=0.10.0" @@ -29969,7 +20787,8 @@ }, "node_modules/is-fullwidth-code-point": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "peer": true, "engines": { "node": ">=4" @@ -29977,8 +20796,9 @@ }, "node_modules/is-generator-fn": { "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" } @@ -29999,7 +20819,8 @@ }, "node_modules/is-glob": { "version": "4.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dependencies": { "is-extglob": "^2.1.1" }, @@ -30026,7 +20847,8 @@ }, "node_modules/is-iexplorer": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-iexplorer/-/is-iexplorer-1.0.0.tgz", + "integrity": "sha512-YeLzceuwg3K6O0MLM3UyUUjKAlyULetwryFp1mHy1I5PfArK0AEqlfa+MR4gkJjcbuJXoDJCvXbyqZVf5CR2Sg==", "peer": true, "engines": { "node": ">=0.10.0" @@ -30034,27 +20856,31 @@ }, "node_modules/is-interactive": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-interactive/-/is-interactive-1.0.0.tgz", + "integrity": "sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==", "engines": { "node": ">=8" } }, "node_modules/is-lambda": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-lambda/-/is-lambda-1.0.1.tgz", + "integrity": "sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==", + "dev": true }, "node_modules/is-map": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.2.tgz", + "integrity": "sha512-cOZFQQozTha1f4MxLFzlgKYPTyj26picdZTx82hbc/Xf4K/tZOOXSCkMvU4pKioRXGDLJRn0GM7Upe7kR721yg==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-mobile": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-mobile/-/is-mobile-4.0.0.tgz", + "integrity": "sha512-mlcHZA84t1qLSuWkt2v0I2l61PYdyQDt4aG1mLIXF5FDMm4+haBCxCPYSr/uwqQNRk1MiTizn0ypEuRAOLRAew==", "peer": true }, "node_modules/is-nan": { @@ -30074,7 +20900,8 @@ }, "node_modules/is-negative-zero": { "version": "2.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "engines": { "node": ">= 0.4" }, @@ -30084,14 +20911,16 @@ }, "node_modules/is-number": { "version": "7.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "engines": { "node": ">=0.12.0" } }, "node_modules/is-number-object": { "version": "1.0.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -30104,7 +20933,8 @@ }, "node_modules/is-obj": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-obj/-/is-obj-1.0.1.tgz", + "integrity": "sha512-l4RyHgRqGN4Y3+9JHVrNqO+tN0rV5My76uW5/nuO4K1b6vw5G8d/cmFjP9tRfEsdhZNt0IFdZuK/c2Vr4Nb+Qg==", "peer": true, "engines": { "node": ">=0.10.0" @@ -30120,30 +20950,34 @@ }, "node_modules/is-path-inside": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/is-plain-obj": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "engines": { "node": ">=0.10.0" } }, "node_modules/is-plain-object": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-5.0.0.tgz", + "integrity": "sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/is-regex": { "version": "1.1.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dependencies": { "call-bind": "^1.0.2", "has-tostringtag": "^1.0.0" @@ -30157,15 +20991,17 @@ }, "node_modules/is-set": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.2.tgz", + "integrity": "sha512-+2cnTEZeY5z/iXGbLhPrOAaK/Mau5k5eXq9j14CpRTftq0pAJu2MwVRSZhyZWBzx3o6X795Lz6Bpb6R0GKf37g==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-shared-array-buffer": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dependencies": { "call-bind": "^1.0.2" }, @@ -30175,7 +21011,8 @@ }, "node_modules/is-stream": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", "engines": { "node": ">=8" }, @@ -30185,7 +21022,8 @@ }, "node_modules/is-string": { "version": "1.0.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dependencies": { "has-tostringtag": "^1.0.0" }, @@ -30198,17 +21036,20 @@ }, "node_modules/is-string-blank": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-string-blank/-/is-string-blank-1.0.1.tgz", + "integrity": "sha512-9H+ZBCVs3L9OYqv8nuUAzpcT9OTgMD1yAWrG7ihlnibdkbtB850heAmYWxHuXc4CHy4lKeK69tN+ny1K7gBIrw==", "peer": true }, "node_modules/is-svg-path": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-svg-path/-/is-svg-path-1.0.2.tgz", + "integrity": "sha512-Lj4vePmqpPR1ZnRctHv8ltSh1OrSxHkhUkd7wi+VQdcdP15/KvQFyk7LhNuM7ZW0EVbJz8kZLVmL9quLrfq4Kg==", "peer": true }, "node_modules/is-symbol": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dependencies": { "has-symbols": "^1.0.2" }, @@ -30221,11 +21062,13 @@ }, "node_modules/is-touch-device": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-touch-device/-/is-touch-device-1.0.1.tgz", + "integrity": "sha512-LAYzo9kMT1b2p19L/1ATGt2XcSilnzNlyvq6c0pbPRVisLbAPpLqr53tIJS00kvrTkj0HtR8U7+u8X0yR8lPSw==" }, "node_modules/is-typed-array": { "version": "1.1.12", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.12.tgz", + "integrity": "sha512-Z14TF2JNG8Lss5/HMqt0//T9JeHXttXy5pH/DBU4vi98ozO2btxzq9MwYDZYnKwU8nRsz/+GVFVRDq3DkVuSPg==", "dependencies": { "which-typed-array": "^1.1.11" }, @@ -30238,7 +21081,8 @@ }, "node_modules/is-unicode-supported": { "version": "0.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", "engines": { "node": ">=10" }, @@ -30248,15 +21092,17 @@ }, "node_modules/is-weakmap": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.1.tgz", + "integrity": "sha512-NSBR4kH5oVj1Uwvv970ruUkCV7O1mzgVFO4/rev2cLRda9Tm9HrL70ZPut4rOHgY0FNrUu9BCbXA2sdQ+x0chA==", "dev": true, - "license": "MIT", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/is-weakref": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dependencies": { "call-bind": "^1.0.2" }, @@ -30266,8 +21112,9 @@ }, "node_modules/is-weakset": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.2.tgz", + "integrity": "sha512-t2yVvttHkQktwnNNmBQ98AhENLdPUTDTE21uPqAQ0ARwQfGeQKRVS0NNurH7bTf7RrvcVn1OOge45CnBeHCSmg==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.1" @@ -30278,7 +21125,8 @@ }, "node_modules/is-wsl": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-1.1.0.tgz", + "integrity": "sha512-gfygJYZ2gLTDlmbWMI0CE2MwnFzSN/2SZfkMlItC4K/JBlsWVDB0bO6XhqcY13YXE7iMcAJnzTCJjPiTeJJ0Mw==", "peer": true, "engines": { "node": ">=4" @@ -30286,22 +21134,26 @@ }, "node_modules/isarray": { "version": "2.0.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==" }, "node_modules/isexe": { "version": "2.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" }, "node_modules/isobject": { "version": "3.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", "engines": { "node": ">=0.10.0" } }, "node_modules/isomorphic-fetch": { "version": "2.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/isomorphic-fetch/-/isomorphic-fetch-2.2.1.tgz", + "integrity": "sha512-9c4TNAKYXM5PRyVcwUZrF3W09nQ+sO7+jydgs4ZGW9dhsLG2VOlISJABombdQqQRXCwuYG3sYV/puGf5rp0qmA==", "dependencies": { "node-fetch": "^1.0.1", "whatwg-fetch": ">=0.10.0" @@ -30309,14 +21161,16 @@ }, "node_modules/isomorphic-fetch/node_modules/is-stream": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", "engines": { "node": ">=0.10.0" } }, "node_modules/isomorphic-fetch/node_modules/node-fetch": { "version": "1.7.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-1.7.3.tgz", + "integrity": "sha512-NhZ4CsKx7cYm2vSrBAr2PvFOe6sWDf0UYLRqA6svUYg7+/TSfVAu49jYC4BvQ4Sms9SZgdqGBgroqfDhJdTyKQ==", "dependencies": { "encoding": "^0.1.11", "is-stream": "^1.0.1" @@ -30324,7 +21178,8 @@ }, "node_modules/isomorphic.js": { "version": "0.2.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/isomorphic.js/-/isomorphic.js-0.2.5.tgz", + "integrity": "sha512-PIeMbHqMt4DnUP3MA/Flc0HElYjMXArsw1qwJZcm9sqR8mq3l8NYizFMty0pWwE/tzIGH3EKK5+jes5mAr85yw==", "funding": { "type": "GitHub Sponsors ❤", "url": "https://github.com/sponsors/dmonad" @@ -30332,16 +21187,18 @@ }, "node_modules/istanbul-lib-coverage": { "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=8" } }, "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, - "license": "BSD-3-Clause", "dependencies": { "@babel/core": "^7.12.3", "@babel/parser": "^7.14.7", @@ -30355,16 +21212,18 @@ }, "node_modules/istanbul-lib-instrument/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/istanbul-lib-report": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "istanbul-lib-coverage": "^3.0.0", "make-dir": "^4.0.0", @@ -30376,16 +21235,18 @@ }, "node_modules/istanbul-lib-report/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "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, - "license": "MIT", "dependencies": { "semver": "^7.5.3" }, @@ -30398,8 +21259,9 @@ }, "node_modules/istanbul-lib-report/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -30409,8 +21271,9 @@ }, "node_modules/istanbul-lib-source-maps": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "debug": "^4.1.1", "istanbul-lib-coverage": "^3.0.0", @@ -30422,16 +21285,18 @@ }, "node_modules/istanbul-lib-source-maps/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/istanbul-reports": { "version": "3.1.6", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.6.tgz", + "integrity": "sha512-TLgnMkKg3iTDsQ9PbPTdpfAK2DzjF9mqUG7RMgcQl8oFjad8ob4laGxv5XV5U9MAfx8D6tSJiUyuAwzLicaxlg==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "html-escaper": "^2.0.0", "istanbul-lib-report": "^3.0.0" @@ -30442,8 +21307,9 @@ }, "node_modules/iterator.prototype": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", "dev": true, - "license": "MIT", "dependencies": { "define-properties": "^1.2.1", "get-intrinsic": "^1.2.1", @@ -30454,7 +21320,8 @@ }, "node_modules/its-fine": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/its-fine/-/its-fine-1.1.1.tgz", + "integrity": "sha512-v1Ia1xl20KbuSGlwoaGsW0oxsw8Be+TrXweidxD9oT/1lAh6O3K3/GIM95Tt6WCiv6W+h2M7RB1TwdoAjQyyKw==", "peer": true, "dependencies": { "@types/react-reconciler": "^0.28.0" @@ -30465,7 +21332,8 @@ }, "node_modules/its-fine/node_modules/@types/react-reconciler": { "version": "0.28.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.28.8.tgz", + "integrity": "sha512-SN9c4kxXZonFhbX4hJrZy37yw9e7EIxcpHCxQv5JUS18wDE5ovkQKlqQEkufdJCCMfuI9BnjUJvhYeJ9x5Ra7g==", "peer": true, "dependencies": { "@types/react": "*" @@ -30473,6 +21341,8 @@ }, "node_modules/jackspeak": { "version": "2.3.6", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.6.tgz", + "integrity": "sha512-N3yCS/NegsOBokc8GAdM8UcmfsKiSS8cipheD/nivzr700H+nsMOxJjQnvwOcRYVuFkdH0wGUvW2WbXGmrZGbQ==", "dev": true, "license": "BlueOak-1.0.0", "dependencies": { @@ -30555,8 +21425,9 @@ }, "node_modules/jest": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", "@jest/types": "^29.6.3", @@ -30580,8 +21451,9 @@ }, "node_modules/jest-changed-files": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", "dev": true, - "license": "MIT", "dependencies": { "execa": "^5.0.0", "jest-util": "^29.7.0", @@ -30593,8 +21465,9 @@ }, "node_modules/jest-circus": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/expect": "^29.7.0", @@ -30623,8 +21496,9 @@ }, "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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -30637,8 +21511,9 @@ }, "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, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -30652,8 +21527,9 @@ }, "node_modules/jest-circus/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, - "license": "MIT", "peerDependencies": { "babel-plugin-macros": "^3.1.0" }, @@ -30665,16 +21541,18 @@ }, "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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-circus/node_modules/pretty-format": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -30686,8 +21564,9 @@ }, "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, - "license": "MIT", "engines": { "node": ">=10" }, @@ -30697,13 +21576,15 @@ }, "node_modules/jest-circus/node_modules/react-is": { "version": "18.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true }, "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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -30713,8 +21594,9 @@ }, "node_modules/jest-cli": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", "dev": true, - "license": "MIT", "dependencies": { "@jest/core": "^29.7.0", "@jest/test-result": "^29.7.0", @@ -30745,8 +21627,9 @@ }, "node_modules/jest-cli/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -30759,8 +21642,9 @@ }, "node_modules/jest-cli/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -30774,16 +21658,18 @@ }, "node_modules/jest-cli/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "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", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -30793,8 +21679,9 @@ }, "node_modules/jest-config": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@jest/test-sequencer": "^29.7.0", @@ -30837,8 +21724,9 @@ }, "node_modules/jest-config/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -30851,8 +21739,9 @@ }, "node_modules/jest-config/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -30866,8 +21755,9 @@ }, "node_modules/jest-config/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -30885,16 +21775,18 @@ }, "node_modules/jest-config/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-config/node_modules/pretty-format": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -30906,8 +21798,9 @@ }, "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, - "license": "MIT", "engines": { "node": ">=10" }, @@ -30917,13 +21810,15 @@ }, "node_modules/jest-config/node_modules/react-is": { "version": "18.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true }, "node_modules/jest-config/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -30933,8 +21828,9 @@ }, "node_modules/jest-diff": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.0.0", "diff-sequences": "^29.6.3", @@ -30947,8 +21843,9 @@ }, "node_modules/jest-diff/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -30961,8 +21858,9 @@ }, "node_modules/jest-diff/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -30976,16 +21874,18 @@ }, "node_modules/jest-diff/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-diff/node_modules/pretty-format": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -30997,8 +21897,9 @@ }, "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, - "license": "MIT", "engines": { "node": ">=10" }, @@ -31008,13 +21909,15 @@ }, "node_modules/jest-diff/node_modules/react-is": { "version": "18.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true }, "node_modules/jest-diff/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -31024,8 +21927,9 @@ }, "node_modules/jest-docblock": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", "dev": true, - "license": "MIT", "dependencies": { "detect-newline": "^3.0.0" }, @@ -31035,8 +21939,9 @@ }, "node_modules/jest-each": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "chalk": "^4.0.0", @@ -31050,8 +21955,9 @@ }, "node_modules/jest-each/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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -31064,8 +21970,9 @@ }, "node_modules/jest-each/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -31079,16 +21986,18 @@ }, "node_modules/jest-each/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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-each/node_modules/pretty-format": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -31100,8 +22009,9 @@ }, "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, - "license": "MIT", "engines": { "node": ">=10" }, @@ -31111,13 +22021,15 @@ }, "node_modules/jest-each/node_modules/react-is": { "version": "18.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true }, "node_modules/jest-each/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -31127,7 +22039,8 @@ }, "node_modules/jest-environment-node": { "version": "29.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", "dependencies": { "@jest/environment": "^29.7.0", "@jest/fake-timers": "^29.7.0", @@ -31142,7 +22055,8 @@ }, "node_modules/jest-environment-node/node_modules/jest-mock": { "version": "29.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -31154,15 +22068,17 @@ }, "node_modules/jest-get-type": { "version": "29.6.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-haste-map": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/graceful-fs": "^4.1.3", @@ -31185,8 +22101,9 @@ }, "node_modules/jest-leak-detector": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", "dev": true, - "license": "MIT", "dependencies": { "jest-get-type": "^29.6.3", "pretty-format": "^29.7.0" @@ -31197,8 +22114,9 @@ }, "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, - "license": "MIT", "engines": { "node": ">=10" }, @@ -31208,8 +22126,9 @@ }, "node_modules/jest-leak-detector/node_modules/pretty-format": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -31221,13 +22140,15 @@ }, "node_modules/jest-leak-detector/node_modules/react-is": { "version": "18.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true }, "node_modules/jest-matcher-utils": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.0.0", "jest-diff": "^29.7.0", @@ -31240,8 +22161,9 @@ }, "node_modules/jest-matcher-utils/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -31254,8 +22176,9 @@ }, "node_modules/jest-matcher-utils/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -31269,16 +22192,18 @@ }, "node_modules/jest-matcher-utils/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-matcher-utils/node_modules/pretty-format": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -31290,8 +22215,9 @@ }, "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, - "license": "MIT", "engines": { "node": ">=10" }, @@ -31301,13 +22227,15 @@ }, "node_modules/jest-matcher-utils/node_modules/react-is": { "version": "18.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true }, "node_modules/jest-matcher-utils/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -31317,7 +22245,8 @@ }, "node_modules/jest-message-util": { "version": "29.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", "dependencies": { "@babel/code-frame": "^7.12.13", "@jest/types": "^29.6.3", @@ -31335,7 +22264,8 @@ }, "node_modules/jest-message-util/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -31348,7 +22278,8 @@ }, "node_modules/jest-message-util/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "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" @@ -31362,14 +22293,16 @@ }, "node_modules/jest-message-util/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, "node_modules/jest-message-util/node_modules/pretty-format": { "version": "29.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -31381,7 +22314,8 @@ }, "node_modules/jest-message-util/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "engines": { "node": ">=10" }, @@ -31391,11 +22325,13 @@ }, "node_modules/jest-message-util/node_modules/react-is": { "version": "18.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, "node_modules/jest-message-util/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "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" }, @@ -31405,8 +22341,9 @@ }, "node_modules/jest-mock": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-27.5.1.tgz", + "integrity": "sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^27.5.1", "@types/node": "*" @@ -31417,8 +22354,9 @@ }, "node_modules/jest-mock/node_modules/@jest/types": { "version": "27.5.1", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "dev": true, - "license": "MIT", "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", "@types/istanbul-reports": "^3.0.0", @@ -31432,16 +22370,18 @@ }, "node_modules/jest-mock/node_modules/@types/yargs": { "version": "16.0.9", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "dev": true, - "license": "MIT", "dependencies": { "@types/yargs-parser": "*" } }, "node_modules/jest-mock/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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -31454,8 +22394,9 @@ }, "node_modules/jest-mock/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, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -31469,16 +22410,18 @@ }, "node_modules/jest-mock/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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-mock/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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -31488,8 +22431,9 @@ }, "node_modules/jest-pnp-resolver": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", "dev": true, - "license": "MIT", "engines": { "node": ">=6" }, @@ -31504,16 +22448,18 @@ }, "node_modules/jest-regex-util": { "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", "dev": true, - "license": "MIT", "engines": { "node": "^14.15.0 || ^16.10.0 || >=18.0.0" } }, "node_modules/jest-resolve": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", "dev": true, - "license": "MIT", "dependencies": { "chalk": "^4.0.0", "graceful-fs": "^4.2.9", @@ -31531,8 +22477,9 @@ }, "node_modules/jest-resolve-dependencies": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", "dev": true, - "license": "MIT", "dependencies": { "jest-regex-util": "^29.6.3", "jest-snapshot": "^29.7.0" @@ -31543,8 +22490,9 @@ }, "node_modules/jest-resolve/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -31557,8 +22505,9 @@ }, "node_modules/jest-resolve/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -31572,16 +22521,18 @@ }, "node_modules/jest-resolve/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -31591,8 +22542,9 @@ }, "node_modules/jest-runner": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/console": "^29.7.0", "@jest/environment": "^29.7.0", @@ -31622,8 +22574,9 @@ }, "node_modules/jest-runner/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -31636,8 +22589,9 @@ }, "node_modules/jest-runner/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -31651,16 +22605,18 @@ }, "node_modules/jest-runner/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-runner/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -31670,8 +22626,9 @@ }, "node_modules/jest-runtime": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/environment": "^29.7.0", "@jest/fake-timers": "^29.7.0", @@ -31702,8 +22659,9 @@ }, "node_modules/jest-runtime/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -31716,8 +22674,9 @@ }, "node_modules/jest-runtime/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -31731,8 +22690,9 @@ }, "node_modules/jest-runtime/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -31750,16 +22710,18 @@ }, "node_modules/jest-runtime/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-runtime/node_modules/jest-mock": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", "dev": true, - "license": "MIT", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -31771,8 +22733,9 @@ }, "node_modules/jest-runtime/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -31782,8 +22745,9 @@ }, "node_modules/jest-snapshot": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", "dev": true, - "license": "MIT", "dependencies": { "@babel/core": "^7.11.6", "@babel/generator": "^7.7.2", @@ -31812,8 +22776,9 @@ }, "node_modules/jest-snapshot/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -31826,8 +22791,9 @@ }, "node_modules/jest-snapshot/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -31841,16 +22807,18 @@ }, "node_modules/jest-snapshot/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-snapshot/node_modules/pretty-format": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dev": true, - "license": "MIT", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -31862,8 +22830,9 @@ }, "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, - "license": "MIT", "engines": { "node": ">=10" }, @@ -31873,13 +22842,15 @@ }, "node_modules/jest-snapshot/node_modules/react-is": { "version": "18.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==", + "dev": true }, "node_modules/jest-snapshot/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -31889,7 +22860,8 @@ }, "node_modules/jest-util": { "version": "29.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", "dependencies": { "@jest/types": "^29.6.3", "@types/node": "*", @@ -31904,7 +22876,8 @@ }, "node_modules/jest-util/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -31917,7 +22890,8 @@ }, "node_modules/jest-util/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "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" @@ -31931,14 +22905,16 @@ }, "node_modules/jest-util/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, "node_modules/jest-util/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "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" }, @@ -31948,7 +22924,8 @@ }, "node_modules/jest-validate": { "version": "29.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", "dependencies": { "@jest/types": "^29.6.3", "camelcase": "^6.2.0", @@ -31963,7 +22940,8 @@ }, "node_modules/jest-validate/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -31976,7 +22954,8 @@ }, "node_modules/jest-validate/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "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" @@ -31990,14 +22969,16 @@ }, "node_modules/jest-validate/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, "node_modules/jest-validate/node_modules/pretty-format": { "version": "29.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", "dependencies": { "@jest/schemas": "^29.6.3", "ansi-styles": "^5.0.0", @@ -32009,7 +22990,8 @@ }, "node_modules/jest-validate/node_modules/pretty-format/node_modules/ansi-styles": { "version": "5.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", "engines": { "node": ">=10" }, @@ -32019,11 +23001,13 @@ }, "node_modules/jest-validate/node_modules/react-is": { "version": "18.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, "node_modules/jest-validate/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "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" }, @@ -32033,8 +23017,9 @@ }, "node_modules/jest-watcher": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", "dev": true, - "license": "MIT", "dependencies": { "@jest/test-result": "^29.7.0", "@jest/types": "^29.6.3", @@ -32051,8 +23036,9 @@ }, "node_modules/jest-watcher/node_modules/ansi-styles": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -32065,8 +23051,9 @@ }, "node_modules/jest-watcher/node_modules/chalk": { "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -32080,16 +23067,18 @@ }, "node_modules/jest-watcher/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-watcher/node_modules/supports-color": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -32099,8 +23088,9 @@ }, "node_modules/jest-worker": { "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", "dev": true, - "license": "MIT", "dependencies": { "@types/node": "*", "jest-util": "^29.7.0", @@ -32113,16 +23103,18 @@ }, "node_modules/jest-worker/node_modules/has-flag": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -32135,7 +23127,8 @@ }, "node_modules/joi": { "version": "17.11.0", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/joi/-/joi-17.11.0.tgz", + "integrity": "sha512-NgB+lZLNoqISVy1rZocE9PZI36bL/77ie924Ri43yEvi9GUUMPeyVIr8KdFTMUlby1p0PBYMk9spIxEUQYqrJQ==", "peer": true, "dependencies": { "@hapi/hoek": "^9.0.0", @@ -32147,16 +23140,19 @@ }, "node_modules/js-base64": { "version": "2.6.4", - "dev": true, - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/js-base64/-/js-base64-2.6.4.tgz", + "integrity": "sha512-pZe//GGmwJndub7ZghVHz7vjb2LgC1m8B07Au3eYqeqv9emhESByMXxaEgkUkEqJe87oBbSniGYoQNIBklc7IQ==", + "dev": true }, "node_modules/js-tokens": { "version": "4.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" }, "node_modules/js-yaml": { "version": "3.14.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", "dependencies": { "argparse": "^1.0.7", "esprima": "^4.0.0" @@ -32167,17 +23163,20 @@ }, "node_modules/jsc-android": { "version": "250231.0.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/jsc-android/-/jsc-android-250231.0.0.tgz", + "integrity": "sha512-rS46PvsjYmdmuz1OAWXY/1kCYG7pnf1TBqeTiOJr1iDz7s5DLxxC9n/ZMknLDxzYzNVfI7R95MH10emSSG1Wuw==", "peer": true }, "node_modules/jsc-safe-url": { "version": "0.2.4", - "license": "0BSD", + "resolved": "https://registry.npmjs.org/jsc-safe-url/-/jsc-safe-url-0.2.4.tgz", + "integrity": "sha512-0wM3YBWtYePOjfyXQH5MWQ8H7sdk5EXSwZvmSLKk2RboVQ2Bu239jycHDz5J/8Blf3K0Qnoy2b6xD+z10MFB+Q==", "peer": true }, "node_modules/jscodeshift": { "version": "0.14.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jscodeshift/-/jscodeshift-0.14.0.tgz", + "integrity": "sha512-7eCC1knD7bLUPuSCwXsMZUH51O8jIcoVyKtI6P0XM0IVzlGjckPy3FIwQlorzbN0Sg79oK+RlohN32Mqf/lrYA==", "peer": true, "dependencies": { "@babel/core": "^7.13.16", @@ -32209,7 +23208,8 @@ }, "node_modules/jscodeshift/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "peer": true, "dependencies": { "color-convert": "^2.0.1" @@ -32223,7 +23223,8 @@ }, "node_modules/jscodeshift/node_modules/ast-types": { "version": "0.15.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.15.2.tgz", + "integrity": "sha512-c27loCv9QkZinsa5ProX751khO9DJl/AcB5c2KNtA6NRvHKS0PgLfcftz72KVq504vB0Gku5s2kUZzDBvQWvHg==", "peer": true, "dependencies": { "tslib": "^2.0.1" @@ -32234,7 +23235,8 @@ }, "node_modules/jscodeshift/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "peer": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -32249,7 +23251,8 @@ }, "node_modules/jscodeshift/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "peer": true, "engines": { "node": ">=8" @@ -32257,7 +23260,8 @@ }, "node_modules/jscodeshift/node_modules/recast": { "version": "0.21.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.21.5.tgz", + "integrity": "sha512-hjMmLaUXAm1hIuTqOdeYObMslq/q+Xff6QE3Y2P+uoHAg2nmVlLBps2hzh1UJDdMtDTMXOFewK6ky51JQIeECg==", "peer": true, "dependencies": { "ast-types": "0.15.2", @@ -32271,7 +23275,8 @@ }, "node_modules/jscodeshift/node_modules/source-map": { "version": "0.6.1", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "peer": true, "engines": { "node": ">=0.10.0" @@ -32279,7 +23284,8 @@ }, "node_modules/jscodeshift/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -32290,7 +23296,8 @@ }, "node_modules/jscodeshift/node_modules/write-file-atomic": { "version": "2.4.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-2.4.3.tgz", + "integrity": "sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==", "peer": true, "dependencies": { "graceful-fs": "^4.1.11", @@ -32300,7 +23307,8 @@ }, "node_modules/jsesc": { "version": "2.5.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", "bin": { "jsesc": "bin/jsesc" }, @@ -32310,30 +23318,36 @@ }, "node_modules/json-buffer": { "version": "3.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true }, "node_modules/json-parse-better-errors": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", "peer": true }, "node_modules/json-parse-even-better-errors": { "version": "2.3.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" }, "node_modules/json-schema-traverse": { "version": "0.4.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" }, "node_modules/json-stable-stringify-without-jsonify": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true }, "node_modules/json5": { "version": "2.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", "bin": { "json5": "lib/cli.js" }, @@ -32343,8 +23357,9 @@ }, "node_modules/jsonfile": { "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "license": "MIT", "dependencies": { "universalify": "^2.0.0" }, @@ -32354,7 +23369,8 @@ }, "node_modules/jspdf": { "version": "2.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jspdf/-/jspdf-2.5.1.tgz", + "integrity": "sha512-hXObxz7ZqoyhxET78+XR34Xu2qFGrJJ2I2bE5w4SM8eFaFEkW2xcGRVUss360fYelwRSid/jT078kbNvmoW0QA==", "dependencies": { "@babel/runtime": "^7.14.0", "atob": "^2.1.2", @@ -32370,24 +23386,28 @@ }, "node_modules/jspdf-autotable": { "version": "3.7.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jspdf-autotable/-/jspdf-autotable-3.7.1.tgz", + "integrity": "sha512-5fgjqE8nIwUoNz5l/i/aD/uONKofE4yp/kJ097EKBllPVTPGnGV5OWHld30db3+CvNrgzrRl8gmTnKF6vag05g==", "peerDependencies": { "jspdf": "^2.5.1" } }, "node_modules/jspdf/node_modules/dompurify": { "version": "2.4.7", - "license": "(MPL-2.0 OR Apache-2.0)", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-2.4.7.tgz", + "integrity": "sha512-kxxKlPEDa6Nc5WJi+qRgPbOAbgTpSULL+vI3NUXsZMlkJxTqYI9wg5ZTay2sFrdZRWHPWNi+EdAhcJf81WtoMQ==", "optional": true }, "node_modules/jsqr": { "version": "1.4.0", - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/jsqr/-/jsqr-1.4.0.tgz", + "integrity": "sha512-dxLob7q65Xg2DvstYkRpkYtmKm2sPJ9oFhrhmudT1dZvNFFTlroai3AWSpLey/w5vMcLBXRgOJsbXpdN9HzU/A==" }, "node_modules/jsx-ast-utils": { "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", "dev": true, - "license": "MIT", "dependencies": { "array-includes": "^3.1.6", "array.prototype.flat": "^1.3.1", @@ -32400,15 +23420,18 @@ }, "node_modules/kdbush": { "version": "4.0.2", - "license": "ISC" + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz", + "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==" }, "node_modules/keycode": { "version": "2.2.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/keycode/-/keycode-2.2.1.tgz", + "integrity": "sha512-Rdgz9Hl9Iv4QKi8b0OlCRQEzp4AgVxyCtz5S/+VIHezDmrDhkp2N2TqBWOLz0/gbeREXOOiI9/4b8BY9uw2vFg==" }, "node_modules/keycon": { "version": "1.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/keycon/-/keycon-1.4.0.tgz", + "integrity": "sha512-p1NAIxiRMH3jYfTeXRs2uWbVJ1WpEjpi8ktzUyBJsX7/wn2qu2VRXktneBLNtKNxJmlUYxRi9gOJt1DuthXR7A==", "dependencies": { "@cfcs/core": "^0.0.6", "@daybrush/utils": "^1.7.1", @@ -32418,28 +23441,33 @@ }, "node_modules/keyv": { "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", "dev": true, - "license": "MIT", "dependencies": { "json-buffer": "3.0.1" } }, "node_modules/kind-of": { "version": "6.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", "engines": { "node": ">=0.10.0" } }, "node_modules/kleur": { "version": "3.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", "engines": { "node": ">=6" } }, "node_modules/konva": { "version": "9.2.3", + "resolved": "https://registry.npmjs.org/konva/-/konva-9.2.3.tgz", + "integrity": "sha512-oQ6VQ6kUL9IlhOGuEKKhxqnv6g/t8jZpVuWahQQ6hCqAsO8Ydi1zFGv7ef4EOq5GoPNq/d6Fyj/3i5Y/a5NooA==", "funding": [ { "type": "patreon", @@ -32454,7 +23482,6 @@ "url": "https://github.com/sponsors/lavrton" } ], - "license": "MIT", "peer": true }, "node_modules/lazy-universal-dotenv": { @@ -32472,7 +23499,8 @@ }, "node_modules/level": { "version": "6.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/level/-/level-6.0.1.tgz", + "integrity": "sha512-psRSqJZCsC/irNhfHzrVZbmPYXDcEYhA5TVNwr+V92jF44rbf86hqGp8fiT702FyiArScYIlPSBTDUASCVNSpw==", "optional": true, "dependencies": { "level-js": "^5.0.0", @@ -32489,7 +23517,8 @@ }, "node_modules/level-codec": { "version": "9.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/level-codec/-/level-codec-9.0.2.tgz", + "integrity": "sha512-UyIwNb1lJBChJnGfjmO0OR+ezh2iVu1Kas3nvBS/BzGnx79dv6g7unpKIDNPMhfdTEGoc7mC8uAu51XEtX+FHQ==", "optional": true, "dependencies": { "buffer": "^5.6.0" @@ -32500,6 +23529,8 @@ }, "node_modules/level-codec/node_modules/buffer": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "funding": [ { "type": "github", @@ -32514,7 +23545,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "optional": true, "dependencies": { "base64-js": "^1.3.1", @@ -32523,7 +23553,8 @@ }, "node_modules/level-concat-iterator": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/level-concat-iterator/-/level-concat-iterator-2.0.1.tgz", + "integrity": "sha512-OTKKOqeav2QWcERMJR7IS9CUo1sHnke2C0gkSmcR7QuEtFNLLzHQAvnMw8ykvEcv0Qtkg0p7FOwP1v9e5Smdcw==", "optional": true, "engines": { "node": ">=6" @@ -32531,7 +23562,8 @@ }, "node_modules/level-errors": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/level-errors/-/level-errors-2.0.1.tgz", + "integrity": "sha512-UVprBJXite4gPS+3VznfgDSU8PTRuVX0NXwoWW50KLxd2yw4Y1t2JUR5In1itQnudZqRMT9DlAM3Q//9NCjCFw==", "optional": true, "dependencies": { "errno": "~0.1.1" @@ -32542,7 +23574,8 @@ }, "node_modules/level-iterator-stream": { "version": "4.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/level-iterator-stream/-/level-iterator-stream-4.0.2.tgz", + "integrity": "sha512-ZSthfEqzGSOMWoUGhTXdX9jv26d32XJuHz/5YnuHZzH6wldfWMOVwI9TBtKcya4BKTyTt3XVA0A3cF3q5CY30Q==", "optional": true, "dependencies": { "inherits": "^2.0.4", @@ -32555,7 +23588,8 @@ }, "node_modules/level-js": { "version": "5.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/level-js/-/level-js-5.0.2.tgz", + "integrity": "sha512-SnBIDo2pdO5VXh02ZmtAyPP6/+6YTJg2ibLtl9C34pWvmtMEmRTWpra+qO/hifkUtBTOtfx6S9vLDjBsBK4gRg==", "optional": true, "dependencies": { "abstract-leveldown": "~6.2.3", @@ -32566,6 +23600,8 @@ }, "node_modules/level-js/node_modules/buffer": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "funding": [ { "type": "github", @@ -32580,7 +23616,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "optional": true, "dependencies": { "base64-js": "^1.3.1", @@ -32589,7 +23624,8 @@ }, "node_modules/level-packager": { "version": "5.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/level-packager/-/level-packager-5.1.1.tgz", + "integrity": "sha512-HMwMaQPlTC1IlcwT3+swhqf/NUO+ZhXVz6TY1zZIIZlIR0YSn8GtAAWmIvKjNY16ZkEg/JcpAuQskxsXqC0yOQ==", "optional": true, "dependencies": { "encoding-down": "^6.3.0", @@ -32601,7 +23637,8 @@ }, "node_modules/level-supports": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/level-supports/-/level-supports-1.0.1.tgz", + "integrity": "sha512-rXM7GYnW8gsl1vedTJIbzOrRv85c/2uCMpiiCzO2fndd06U/kUXEEU9evYn4zFggBOg36IsBW8LzqIpETwwQzg==", "optional": true, "dependencies": { "xtend": "^4.0.2" @@ -32612,8 +23649,9 @@ }, "node_modules/leveldown": { "version": "5.6.0", + "resolved": "https://registry.npmjs.org/leveldown/-/leveldown-5.6.0.tgz", + "integrity": "sha512-iB8O/7Db9lPaITU1aA2txU/cBEXAt4vWwKQRrrWuS6XDgbP4QZGj9BL2aNbwb002atoQ/lIotJkfyzz+ygQnUQ==", "hasInstallScript": true, - "license": "MIT", "optional": true, "dependencies": { "abstract-leveldown": "~6.2.1", @@ -32626,7 +23664,8 @@ }, "node_modules/levelup": { "version": "4.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/levelup/-/levelup-4.4.0.tgz", + "integrity": "sha512-94++VFO3qN95cM/d6eBXvd894oJE0w3cInq9USsyQzzoJxmiYzPAocNcuGCPGGjoXqDVJcr3C1jzt1TSjyaiLQ==", "optional": true, "dependencies": { "deferred-leveldown": "~5.3.0", @@ -32641,15 +23680,17 @@ }, "node_modules/leven": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", "engines": { "node": ">=6" } }, "node_modules/levn": { "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1", "type-check": "~0.4.0" @@ -32660,7 +23701,8 @@ }, "node_modules/lib0": { "version": "0.2.88", - "license": "MIT", + "resolved": "https://registry.npmjs.org/lib0/-/lib0-0.2.88.tgz", + "integrity": "sha512-KyroiEvCeZcZEMx5Ys+b4u4eEBbA1ch7XUaBhYpwa/nPMrzTjUhI4RfcytmQfYoTBPcdyx+FX6WFNIoNuJzJfQ==", "dependencies": { "isomorphic.js": "^0.2.4" }, @@ -32678,18 +23720,21 @@ }, "node_modules/lines-and-columns": { "version": "1.2.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" }, "node_modules/loader-runner": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", + "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", "engines": { "node": ">=6.11.5" } }, "node_modules/loader-utils": { "version": "2.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/loader-utils/-/loader-utils-2.0.4.tgz", + "integrity": "sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==", "dependencies": { "big.js": "^5.2.2", "emojis-list": "^3.0.0", @@ -32701,7 +23746,8 @@ }, "node_modules/locate-path": { "version": "6.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dependencies": { "p-locate": "^5.0.0" }, @@ -32714,23 +23760,28 @@ }, "node_modules/lodash": { "version": "4.17.21", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" }, "node_modules/lodash-es": { "version": "4.17.21", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash-es/-/lodash-es-4.17.21.tgz", + "integrity": "sha512-mKnC+QJ9pWVzv+C4/U3rRsHapFfHvQFoFB92e52xeyGMcX6/OlIl78je1u8vePzYZSkkogMPJ2yjxxsb89cxyw==" }, "node_modules/lodash.curry": { "version": "4.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.curry/-/lodash.curry-4.1.1.tgz", + "integrity": "sha512-/u14pXGviLaweY5JI0IUzgzF2J6Ne8INyzAZjImcryjgkZ+ebruBxy2/JaOOkTqScddcYtakjhSaeemV8lR0tA==" }, "node_modules/lodash.debounce": { "version": "4.0.8", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", + "integrity": "sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==" }, "node_modules/lodash.flow": { "version": "3.5.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.flow/-/lodash.flow-3.5.0.tgz", + "integrity": "sha512-ff3BX/tSioo+XojX4MOsOMhJw0nZoUEF011LX8g8d3gvjVbxd89cCio4BCXronjxcTUIJUoqKEUA+n4CqvvRPw==" }, "node_modules/lodash.memoize": { "version": "4.1.2", @@ -32738,7 +23789,8 @@ }, "node_modules/lodash.merge": { "version": "4.6.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" }, "node_modules/lodash.reduce": { "version": "4.6.0", @@ -32750,11 +23802,13 @@ }, "node_modules/lodash.throttle": { "version": "4.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/lodash.throttle/-/lodash.throttle-4.1.1.tgz", + "integrity": "sha512-wIkUCfVKpVsWo3JSZlc+8MB5it+2AN5W8J7YVMST30UrvcQNZ1Okbj+rbVniijTWE6FGYy4XJq/rHkas8qJMLQ==" }, "node_modules/log-symbols": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", "dependencies": { "chalk": "^4.1.0", "is-unicode-supported": "^0.1.0" @@ -32768,7 +23822,8 @@ }, "node_modules/log-symbols/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -32781,7 +23836,8 @@ }, "node_modules/log-symbols/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "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" @@ -32795,14 +23851,16 @@ }, "node_modules/log-symbols/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, "node_modules/log-symbols/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "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" }, @@ -32812,7 +23870,8 @@ }, "node_modules/logkitty": { "version": "0.7.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/logkitty/-/logkitty-0.7.1.tgz", + "integrity": "sha512-/3ER20CTTbahrCrpYfPn7Xavv9diBROZpoXGVZDWMw4b/X4uuUwAC0ki85tgsdMRONURyIJbcOvS94QsUBYPbQ==", "peer": true, "dependencies": { "ansi-fragments": "^0.2.1", @@ -32825,7 +23884,8 @@ }, "node_modules/logkitty/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "peer": true, "dependencies": { "color-convert": "^2.0.1" @@ -32839,7 +23899,8 @@ }, "node_modules/logkitty/node_modules/camelcase": { "version": "5.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", "peer": true, "engines": { "node": ">=6" @@ -32847,7 +23908,8 @@ }, "node_modules/logkitty/node_modules/cliui": { "version": "6.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-6.0.0.tgz", + "integrity": "sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==", "peer": true, "dependencies": { "string-width": "^4.2.0", @@ -32857,7 +23919,8 @@ }, "node_modules/logkitty/node_modules/find-up": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "peer": true, "dependencies": { "locate-path": "^5.0.0", @@ -32869,7 +23932,8 @@ }, "node_modules/logkitty/node_modules/locate-path": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "peer": true, "dependencies": { "p-locate": "^4.1.0" @@ -32880,7 +23944,8 @@ }, "node_modules/logkitty/node_modules/p-limit": { "version": "2.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "peer": true, "dependencies": { "p-try": "^2.0.0" @@ -32894,7 +23959,8 @@ }, "node_modules/logkitty/node_modules/p-locate": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "peer": true, "dependencies": { "p-limit": "^2.2.0" @@ -32905,7 +23971,8 @@ }, "node_modules/logkitty/node_modules/wrap-ansi": { "version": "6.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-6.2.0.tgz", + "integrity": "sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==", "peer": true, "dependencies": { "ansi-styles": "^4.0.0", @@ -32918,12 +23985,14 @@ }, "node_modules/logkitty/node_modules/y18n": { "version": "4.0.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-4.0.3.tgz", + "integrity": "sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==", "peer": true }, "node_modules/logkitty/node_modules/yargs": { "version": "15.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-15.4.1.tgz", + "integrity": "sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==", "peer": true, "dependencies": { "cliui": "^6.0.0", @@ -32944,7 +24013,8 @@ }, "node_modules/logkitty/node_modules/yargs-parser": { "version": "18.1.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-18.1.3.tgz", + "integrity": "sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==", "peer": true, "dependencies": { "camelcase": "^5.0.0", @@ -32965,7 +24035,8 @@ }, "node_modules/loose-envify": { "version": "1.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", "dependencies": { "js-tokens": "^3.0.0 || ^4.0.0" }, @@ -32975,27 +24046,31 @@ }, "node_modules/lower-case": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/lower-case/-/lower-case-2.0.2.tgz", + "integrity": "sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^2.0.3" } }, "node_modules/lru-cache": { "version": "5.1.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", "dependencies": { "yallist": "^3.0.2" } }, "node_modules/ltgt": { "version": "2.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ltgt/-/ltgt-2.2.1.tgz", + "integrity": "sha512-AI2r85+4MquTw9ZYqabu4nMwy9Oftlfa/e/52t9IjtfG+mGBbTNdAoZ3RQKLHR6r0wQnwZnPIEh/Ya6XTWAKNA==", "optional": true }, "node_modules/luxon": { "version": "3.4.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/luxon/-/luxon-3.4.4.tgz", + "integrity": "sha512-zobTr7akeGHnv7eBOXcRgMeCP6+uyYsczwmeRCauvpvaAltgNyTbLH/+VaEAPUeWBT+1GuNmz4wC/6jtQzbbVA==", "engines": { "node": ">=12" } @@ -33021,15 +24096,17 @@ }, "node_modules/make-cancellable-promise": { "version": "1.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/make-cancellable-promise/-/make-cancellable-promise-1.3.2.tgz", + "integrity": "sha512-GCXh3bq/WuMbS+Ky4JBPW1hYTOU+znU+Q5m9Pu+pI8EoUqIHk9+tviOKC6/qhHh8C4/As3tzJ69IF32kdz85ww==", "funding": { "url": "https://github.com/wojtekmaj/make-cancellable-promise?sponsor=1" } }, "node_modules/make-dir": { "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, - "license": "MIT", "dependencies": { "semver": "^6.0.0" }, @@ -33042,23 +24119,26 @@ }, "node_modules/make-dir/node_modules/semver": { "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver.js" } }, "node_modules/make-event-props": { "version": "1.6.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/make-event-props/-/make-event-props-1.6.2.tgz", + "integrity": "sha512-iDwf7mA03WPiR8QxvcVHmVWEPfMY1RZXerDVNCRYW7dUr2ppH3J58Rwb39/WG39yTZdRSxr3x+2v22tvI0VEvA==", "funding": { "url": "https://github.com/wojtekmaj/make-event-props?sponsor=1" } }, "node_modules/make-fetch-happen": { "version": "10.2.1", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-10.2.1.tgz", + "integrity": "sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==", "dev": true, - "license": "ISC", "dependencies": { "agentkeepalive": "^4.2.1", "cacache": "^16.1.0", @@ -33083,16 +24163,18 @@ }, "node_modules/make-fetch-happen/node_modules/lru-cache": { "version": "7.18.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", + "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", "dev": true, - "license": "ISC", "engines": { "node": ">=12" } }, "node_modules/make-fetch-happen/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -33102,19 +24184,22 @@ }, "node_modules/make-fetch-happen/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/makeerror": { "version": "1.0.12", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", "dependencies": { "tmpl": "1.0.5" } }, "node_modules/map-limit": { "version": "0.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/map-limit/-/map-limit-0.0.1.tgz", + "integrity": "sha512-pJpcfLPnIF/Sk3taPW21G/RQsEEirGaFpCW3oXRwH9dnFHPHNGjNyvh++rdmC2fNqEaTw2MhYJraoJWAHx8kEg==", "peer": true, "dependencies": { "once": "~1.3.0" @@ -33122,7 +24207,8 @@ }, "node_modules/map-limit/node_modules/once": { "version": "1.3.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/once/-/once-1.3.3.tgz", + "integrity": "sha512-6vaNInhu+CHxtONf3zw3vq4SP2DOQhjBvIa3rNcG0+P7eKWlYH6Peu7rHizSloRU2EwMz6GraLieis9Ac9+p1w==", "peer": true, "dependencies": { "wrappy": "1" @@ -33130,8 +24216,9 @@ }, "node_modules/map-obj": { "version": "4.3.0", + "resolved": "https://registry.npmjs.org/map-obj/-/map-obj-4.3.0.tgz", + "integrity": "sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" }, @@ -33146,7 +24233,8 @@ }, "node_modules/mapbox-gl": { "version": "1.10.1", - "license": "SEE LICENSE IN LICENSE.txt", + "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-1.10.1.tgz", + "integrity": "sha512-0aHt+lFUpYfvh0kMIqXqNXqoYMuhuAsMlw87TbhWrw78Tx2zfuPI0Lx31/YPUgJ+Ire0tzQ4JnuBL7acDNXmMg==", "peer": true, "dependencies": { "@mapbox/geojson-rewind": "^0.5.0", @@ -33179,12 +24267,14 @@ }, "node_modules/mapbox-gl/node_modules/kdbush": { "version": "3.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-3.0.0.tgz", + "integrity": "sha512-hRkd6/XW4HTsA9vjVpY9tuXJYLSlelnkTmVFu4M9/7MIYQtFcHpbugAU7UbOfjOiVSVYl2fqgBuJ32JUmRo5Ew==", "peer": true }, "node_modules/mapbox-gl/node_modules/supercluster": { "version": "7.1.5", - "license": "ISC", + "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-7.1.5.tgz", + "integrity": "sha512-EulshI3pGUM66o6ZdH3ReiFcvHpM3vAigyK+vcxdjpJyEbIIrtbmBdY23mGgnI24uXiGFvrGq9Gkum/8U7vJWg==", "peer": true, "dependencies": { "kdbush": "^3.0.0" @@ -33203,11 +24293,13 @@ }, "node_modules/material-colors": { "version": "1.2.6", - "license": "ISC" + "resolved": "https://registry.npmjs.org/material-colors/-/material-colors-1.2.6.tgz", + "integrity": "sha512-6qE4B9deFBIa9YSpOc9O0Sgc43zTeVYbgDT5veRKSlB2+ZuHNoVVxA1L/ckMUayV9Ay9y7Z/SZCLcGteW9i7bg==" }, "node_modules/math-log2": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/math-log2/-/math-log2-1.0.1.tgz", + "integrity": "sha512-9W0yGtkaMAkf74XGYVy4Dqw3YUMnTNB2eeiw9aQbUl4A3KmuCEHTt2DgAB07ENzOYAjsYSAYufkAq0Zd+jU7zA==", "peer": true, "engines": { "node": ">=0.10.0" @@ -33283,9 +24375,9 @@ } }, "node_modules/mdast-util-mdx-jsx": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.0.0.tgz", - "integrity": "sha512-XZuPPzQNBPAlaqsTTgRrcJnyFbSOBovSadFgbFu8SnuNgm+6Bdx1K+IWoitsmj6Lq6MNtI+ytOqwN70n//NaBA==", + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-mdx-jsx/-/mdast-util-mdx-jsx-3.1.0.tgz", + "integrity": "sha512-A8AJHlR7/wPQ3+Jre1+1rq040fX9A4Q1jG8JxmSNp/PLPHg80A6475wxTp3KzHpApFH6yWxFotHrJQA3dXP6/w==", "dependencies": { "@types/estree-jsx": "^1.0.0", "@types/hast": "^3.0.0", @@ -33329,9 +24421,9 @@ } }, "node_modules/mdast-util-phrasing": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.0.0.tgz", - "integrity": "sha512-xadSsJayQIucJ9n053dfQwVu1kuXg7jCTdYsMK8rqzKZh52nLfSH/k0sAxE0u+pj/zKZX+o5wB+ML5mRayOxFA==", + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/mdast-util-phrasing/-/mdast-util-phrasing-4.1.0.tgz", + "integrity": "sha512-TqICwyvJJpBwvGAMZjj4J2n0X8QWp21b9l0o7eXyVJ25YNWYbJDVIyD1bZXE6WtV6RmKJVYmQAKWa0zWOABz2w==", "dependencies": { "@types/mdast": "^4.0.0", "unist-util-is": "^6.0.0" @@ -33508,21 +24600,24 @@ }, "node_modules/mdn-data": { "version": "2.0.14", - "dev": true, - "license": "CC0-1.0" + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.14.tgz", + "integrity": "sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==", + "dev": true }, "node_modules/media-typer": { "version": "0.3.0", + "resolved": "https://registry.npmjs.org/media-typer/-/media-typer-0.3.0.tgz", + "integrity": "sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/memfs": { "version": "3.5.3", + "resolved": "https://registry.npmjs.org/memfs/-/memfs-3.5.3.tgz", + "integrity": "sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==", "dev": true, - "license": "Unlicense", "dependencies": { "fs-monkey": "^1.0.4" }, @@ -33532,7 +24627,8 @@ }, "node_modules/memoize-one": { "version": "5.2.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-5.2.1.tgz", + "integrity": "sha512-zYiwtZUcYyXKo/np96AGZAckk+FWWsUdJ3cHGGmld7+AhvcWmQyGCYUh1hc4Q/pkOhb65dQR/pqCyK0cOaHz4Q==" }, "node_modules/memoizerific": { "version": "1.11.3", @@ -33544,13 +24640,15 @@ }, "node_modules/memory-fs": { "version": "0.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/memory-fs/-/memory-fs-0.2.0.tgz", + "integrity": "sha512-+y4mDxU4rvXXu5UDSGCGNiesFmwCHuefGMoPCO1WYucNYj7DsLqrFaa2fXVI0H+NNiPTwwzKwspn9yTZqUGqng==", + "dev": true }, "node_modules/meow": { "version": "9.0.0", + "resolved": "https://registry.npmjs.org/meow/-/meow-9.0.0.tgz", + "integrity": "sha512-+obSblOQmRhcyBt62furQqRAQpNyWXo8BuQ5bN7dG8wmwQ+vwHKp/rCFD4CrTP8CsDQD1sjoZ94K417XEUk8IQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/minimist": "^1.2.0", "camelcase-keys": "^6.2.2", @@ -33574,8 +24672,9 @@ }, "node_modules/meow/node_modules/type-fest": { "version": "0.18.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.18.1.tgz", + "integrity": "sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=10" }, @@ -33585,12 +24684,14 @@ }, "node_modules/merge-descriptors": { "version": "1.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/merge-descriptors/-/merge-descriptors-1.0.1.tgz", + "integrity": "sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==", + "dev": true }, "node_modules/merge-refs": { "version": "1.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/merge-refs/-/merge-refs-1.2.2.tgz", + "integrity": "sha512-RwcT7GsQR3KbuLw1rRuodq4Nt547BKEBkliZ0qqsrpyNne9bGTFtsFIsIpx82huWhcl3kOlOlH4H0xkPk/DqVw==", "funding": { "url": "https://github.com/wojtekmaj/merge-refs?sponsor=1" }, @@ -33605,27 +24706,31 @@ }, "node_modules/merge-stream": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==" }, "node_modules/merge2": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, - "license": "MIT", "engines": { "node": ">= 8" } }, "node_modules/methods": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/methods/-/methods-1.1.2.tgz", + "integrity": "sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/metro": { "version": "0.76.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/metro/-/metro-0.76.8.tgz", + "integrity": "sha512-oQA3gLzrrYv3qKtuWArMgHPbHu8odZOD9AoavrqSFllkPgOtmkBvNNDLCELqv5SjBfqjISNffypg+5UGG3y0pg==", "peer": true, "dependencies": { "@babel/code-frame": "^7.0.0", @@ -33686,7 +24791,8 @@ }, "node_modules/metro-babel-transformer": { "version": "0.76.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/metro-babel-transformer/-/metro-babel-transformer-0.76.8.tgz", + "integrity": "sha512-Hh6PW34Ug/nShlBGxkwQJSgPGAzSJ9FwQXhUImkzdsDgVu6zj5bx258J8cJVSandjNoQ8nbaHK6CaHlnbZKbyA==", "peer": true, "dependencies": { "@babel/core": "^7.20.0", @@ -33699,7 +24805,8 @@ }, "node_modules/metro-cache": { "version": "0.76.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/metro-cache/-/metro-cache-0.76.8.tgz", + "integrity": "sha512-QBJSJIVNH7Hc/Yo6br/U/qQDUpiUdRgZ2ZBJmvAbmAKp2XDzsapnMwK/3BGj8JNWJF7OLrqrYHsRsukSbUBpvQ==", "peer": true, "dependencies": { "metro-core": "0.76.8", @@ -33711,7 +24818,8 @@ }, "node_modules/metro-cache-key": { "version": "0.76.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/metro-cache-key/-/metro-cache-key-0.76.8.tgz", + "integrity": "sha512-buKQ5xentPig9G6T37Ww/R/bC+/V1MA5xU/D8zjnhlelsrPG6w6LtHUS61ID3zZcMZqYaELWk5UIadIdDsaaLw==", "peer": true, "engines": { "node": ">=16" @@ -33719,7 +24827,8 @@ }, "node_modules/metro-config": { "version": "0.76.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/metro-config/-/metro-config-0.76.8.tgz", + "integrity": "sha512-SL1lfKB0qGHALcAk2zBqVgQZpazDYvYFGwCK1ikz0S6Y/CM2i2/HwuZN31kpX6z3mqjv/6KvlzaKoTb1otuSAA==", "peer": true, "dependencies": { "connect": "^3.6.5", @@ -33736,7 +24845,8 @@ }, "node_modules/metro-config/node_modules/cosmiconfig": { "version": "5.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-5.2.1.tgz", + "integrity": "sha512-H65gsXo1SKjf8zmrJ67eJk8aIRKV5ff2D4uKZIBZShbhGSpEmsQOPW/SKMKYhSTrqR7ufy6RP69rPogdaPh/kA==", "peer": true, "dependencies": { "import-fresh": "^2.0.0", @@ -33750,7 +24860,8 @@ }, "node_modules/metro-config/node_modules/import-fresh": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-2.0.0.tgz", + "integrity": "sha512-eZ5H8rcgYazHbKC3PG4ClHNykCSxtAhxSSEM+2mb+7evD2CKF5V7c0dNum7AdpDh0ZdICwZY9sRSn8f+KH96sg==", "peer": true, "dependencies": { "caller-path": "^2.0.0", @@ -33762,7 +24873,8 @@ }, "node_modules/metro-config/node_modules/parse-json": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "peer": true, "dependencies": { "error-ex": "^1.3.1", @@ -33774,7 +24886,8 @@ }, "node_modules/metro-config/node_modules/resolve-from": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-3.0.0.tgz", + "integrity": "sha512-GnlH6vxLymXJNMBo7XP1fJIzBFbdYt49CuTwmB/6N53t+kMPRMFKz783LlQ4tv28XoQfMWinAJX6WCGf2IlaIw==", "peer": true, "engines": { "node": ">=4" @@ -33782,7 +24895,8 @@ }, "node_modules/metro-core": { "version": "0.76.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/metro-core/-/metro-core-0.76.8.tgz", + "integrity": "sha512-sl2QLFI3d1b1XUUGxwzw/KbaXXU/bvFYrSKz6Sg19AdYGWFyzsgZ1VISRIDf+HWm4R/TJXluhWMEkEtZuqi3qA==", "peer": true, "dependencies": { "lodash.throttle": "^4.1.1", @@ -33794,7 +24908,8 @@ }, "node_modules/metro-file-map": { "version": "0.76.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/metro-file-map/-/metro-file-map-0.76.8.tgz", + "integrity": "sha512-A/xP1YNEVwO1SUV9/YYo6/Y1MmzhL4ZnVgcJC3VmHp/BYVOXVStzgVbWv2wILe56IIMkfXU+jpXrGKKYhFyHVw==", "peer": true, "dependencies": { "anymatch": "^3.0.3", @@ -33819,7 +24934,8 @@ }, "node_modules/metro-file-map/node_modules/@jest/types": { "version": "27.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-27.5.1.tgz", + "integrity": "sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==", "peer": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", @@ -33834,7 +24950,8 @@ }, "node_modules/metro-file-map/node_modules/@types/yargs": { "version": "16.0.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-16.0.9.tgz", + "integrity": "sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==", "peer": true, "dependencies": { "@types/yargs-parser": "*" @@ -33842,7 +24959,8 @@ }, "node_modules/metro-file-map/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "peer": true, "dependencies": { "color-convert": "^2.0.1" @@ -33856,7 +24974,8 @@ }, "node_modules/metro-file-map/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "peer": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -33871,7 +24990,8 @@ }, "node_modules/metro-file-map/node_modules/debug": { "version": "2.6.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "peer": true, "dependencies": { "ms": "2.0.0" @@ -33879,7 +24999,8 @@ }, "node_modules/metro-file-map/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "peer": true, "engines": { "node": ">=8" @@ -33887,7 +25008,8 @@ }, "node_modules/metro-file-map/node_modules/jest-regex-util": { "version": "27.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-27.5.1.tgz", + "integrity": "sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==", "peer": true, "engines": { "node": "^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0" @@ -33895,7 +25017,8 @@ }, "node_modules/metro-file-map/node_modules/jest-util": { "version": "27.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-27.5.1.tgz", + "integrity": "sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==", "peer": true, "dependencies": { "@jest/types": "^27.5.1", @@ -33911,7 +25034,8 @@ }, "node_modules/metro-file-map/node_modules/jest-worker": { "version": "27.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "peer": true, "dependencies": { "@types/node": "*", @@ -33924,7 +25048,8 @@ }, "node_modules/metro-file-map/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -33938,12 +25063,14 @@ }, "node_modules/metro-file-map/node_modules/ms": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "peer": true }, "node_modules/metro-file-map/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -33954,7 +25081,8 @@ }, "node_modules/metro-inspector-proxy": { "version": "0.76.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/metro-inspector-proxy/-/metro-inspector-proxy-0.76.8.tgz", + "integrity": "sha512-Us5o5UEd4Smgn1+TfHX4LvVPoWVo9VsVMn4Ldbk0g5CQx3Gu0ygc/ei2AKPGTwsOZmKxJeACj7yMH2kgxQP/iw==", "peer": true, "dependencies": { "connect": "^3.6.5", @@ -33972,7 +25100,8 @@ }, "node_modules/metro-inspector-proxy/node_modules/debug": { "version": "2.6.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "peer": true, "dependencies": { "ms": "2.0.0" @@ -33980,12 +25109,14 @@ }, "node_modules/metro-inspector-proxy/node_modules/ms": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "peer": true }, "node_modules/metro-inspector-proxy/node_modules/ws": { "version": "7.5.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "peer": true, "engines": { "node": ">=8.3.0" @@ -34005,7 +25136,8 @@ }, "node_modules/metro-minify-terser": { "version": "0.76.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/metro-minify-terser/-/metro-minify-terser-0.76.8.tgz", + "integrity": "sha512-Orbvg18qXHCrSj1KbaeSDVYRy/gkro2PC7Fy2tDSH1c9RB4aH8tuMOIXnKJE+1SXxBtjWmQ5Yirwkth2DyyEZA==", "peer": true, "dependencies": { "terser": "^5.15.0" @@ -34016,7 +25148,8 @@ }, "node_modules/metro-minify-uglify": { "version": "0.76.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/metro-minify-uglify/-/metro-minify-uglify-0.76.8.tgz", + "integrity": "sha512-6l8/bEvtVaTSuhG1FqS0+Mc8lZ3Bl4RI8SeRIifVLC21eeSDp4CEBUWSGjpFyUDfi6R5dXzYaFnSgMNyfxADiQ==", "peer": true, "dependencies": { "uglify-es": "^3.1.9" @@ -34027,7 +25160,8 @@ }, "node_modules/metro-react-native-babel-preset": { "version": "0.76.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-preset/-/metro-react-native-babel-preset-0.76.8.tgz", + "integrity": "sha512-Ptza08GgqzxEdK8apYsjTx2S8WDUlS2ilBlu9DR1CUcHmg4g3kOkFylZroogVAUKtpYQNYwAvdsjmrSdDNtiAg==", "peer": true, "dependencies": { "@babel/core": "^7.20.0", @@ -34079,7 +25213,8 @@ }, "node_modules/metro-react-native-babel-preset/node_modules/react-refresh": { "version": "0.4.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", + "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", "peer": true, "engines": { "node": ">=0.10.0" @@ -34087,7 +25222,8 @@ }, "node_modules/metro-react-native-babel-transformer": { "version": "0.76.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/metro-react-native-babel-transformer/-/metro-react-native-babel-transformer-0.76.8.tgz", + "integrity": "sha512-3h+LfS1WG1PAzhq8QF0kfXjxuXetbY/lgz8vYMQhgrMMp17WM1DNJD0gjx8tOGYbpbBC1qesJ45KMS4o5TA73A==", "peer": true, "dependencies": { "@babel/core": "^7.20.0", @@ -34105,7 +25241,8 @@ }, "node_modules/metro-resolver": { "version": "0.76.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/metro-resolver/-/metro-resolver-0.76.8.tgz", + "integrity": "sha512-KccOqc10vrzS7ZhG2NSnL2dh3uVydarB7nOhjreQ7C4zyWuiW9XpLC4h47KtGQv3Rnv/NDLJYeDqaJ4/+140HQ==", "peer": true, "engines": { "node": ">=16" @@ -34113,7 +25250,8 @@ }, "node_modules/metro-runtime": { "version": "0.76.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/metro-runtime/-/metro-runtime-0.76.8.tgz", + "integrity": "sha512-XKahvB+iuYJSCr3QqCpROli4B4zASAYpkK+j3a0CJmokxCDNbgyI4Fp88uIL6rNaZfN0Mv35S0b99SdFXIfHjg==", "peer": true, "dependencies": { "@babel/runtime": "^7.0.0", @@ -34125,7 +25263,8 @@ }, "node_modules/metro-runtime/node_modules/react-refresh": { "version": "0.4.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", + "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", "peer": true, "engines": { "node": ">=0.10.0" @@ -34133,7 +25272,8 @@ }, "node_modules/metro-source-map": { "version": "0.76.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/metro-source-map/-/metro-source-map-0.76.8.tgz", + "integrity": "sha512-Hh0ncPsHPVf6wXQSqJqB3K9Zbudht4aUtNpNXYXSxH+pteWqGAXnjtPsRAnCsCWl38wL0jYF0rJDdMajUI3BDw==", "peer": true, "dependencies": { "@babel/traverse": "^7.20.0", @@ -34151,7 +25291,8 @@ }, "node_modules/metro-source-map/node_modules/source-map": { "version": "0.5.7", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "peer": true, "engines": { "node": ">=0.10.0" @@ -34159,7 +25300,8 @@ }, "node_modules/metro-symbolicate": { "version": "0.76.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/metro-symbolicate/-/metro-symbolicate-0.76.8.tgz", + "integrity": "sha512-LrRL3uy2VkzrIXVlxoPtqb40J6Bf1mlPNmUQewipc3qfKKFgtPHBackqDy1YL0njDsWopCKcfGtFYLn0PTUn3w==", "peer": true, "dependencies": { "invariant": "^2.2.4", @@ -34178,7 +25320,8 @@ }, "node_modules/metro-symbolicate/node_modules/source-map": { "version": "0.5.7", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "peer": true, "engines": { "node": ">=0.10.0" @@ -34186,7 +25329,8 @@ }, "node_modules/metro-transform-plugins": { "version": "0.76.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/metro-transform-plugins/-/metro-transform-plugins-0.76.8.tgz", + "integrity": "sha512-PlkGTQNqS51Bx4vuufSQCdSn2R2rt7korzngo+b5GCkeX5pjinPjnO2kNhQ8l+5bO0iUD/WZ9nsM2PGGKIkWFA==", "peer": true, "dependencies": { "@babel/core": "^7.20.0", @@ -34201,7 +25345,8 @@ }, "node_modules/metro-transform-worker": { "version": "0.76.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/metro-transform-worker/-/metro-transform-worker-0.76.8.tgz", + "integrity": "sha512-mE1fxVAnJKmwwJyDtThildxxos9+DGs9+vTrx2ktSFMEVTtXS/bIv2W6hux1pqivqAfyJpTeACXHk5u2DgGvIQ==", "peer": true, "dependencies": { "@babel/core": "^7.20.0", @@ -34223,7 +25368,8 @@ }, "node_modules/metro/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "peer": true, "dependencies": { "color-convert": "^2.0.1" @@ -34237,7 +25383,8 @@ }, "node_modules/metro/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "peer": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -34252,12 +25399,14 @@ }, "node_modules/metro/node_modules/ci-info": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-2.0.0.tgz", + "integrity": "sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==", "peer": true }, "node_modules/metro/node_modules/debug": { "version": "2.6.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "peer": true, "dependencies": { "ms": "2.0.0" @@ -34265,7 +25414,8 @@ }, "node_modules/metro/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "peer": true, "engines": { "node": ">=8" @@ -34273,7 +25423,8 @@ }, "node_modules/metro/node_modules/jest-worker": { "version": "27.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "peer": true, "dependencies": { "@types/node": "*", @@ -34286,7 +25437,8 @@ }, "node_modules/metro/node_modules/jest-worker/node_modules/supports-color": { "version": "8.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -34300,12 +25452,14 @@ }, "node_modules/metro/node_modules/ms": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "peer": true }, "node_modules/metro/node_modules/source-map": { "version": "0.5.7", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", + "integrity": "sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==", "peer": true, "engines": { "node": ">=0.10.0" @@ -34313,7 +25467,8 @@ }, "node_modules/metro/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -34324,7 +25479,8 @@ }, "node_modules/metro/node_modules/ws": { "version": "7.5.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "peer": true, "engines": { "node": ">=8.3.0" @@ -34765,7 +25921,8 @@ }, "node_modules/micromatch": { "version": "4.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", + "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", "dependencies": { "braces": "^3.0.2", "picomatch": "^2.3.1" @@ -34776,7 +25933,8 @@ }, "node_modules/mime": { "version": "2.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.6.0.tgz", + "integrity": "sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==", "bin": { "mime": "cli.js" }, @@ -34786,14 +25944,16 @@ }, "node_modules/mime-db": { "version": "1.52.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { "version": "2.1.35", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": { "mime-db": "1.52.0" }, @@ -34803,27 +25963,31 @@ }, "node_modules/mimic-fn": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "engines": { "node": ">=6" } }, "node_modules/min-indent": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/min-indent/-/min-indent-1.0.1.tgz", + "integrity": "sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/minimalistic-assert": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "dev": true }, "node_modules/minimatch": { "version": "3.1.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -34833,15 +25997,17 @@ }, "node_modules/minimist": { "version": "1.2.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/minimist-options": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/minimist-options/-/minimist-options-4.1.0.tgz", + "integrity": "sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==", "dev": true, - "license": "MIT", "dependencies": { "arrify": "^1.0.1", "is-plain-obj": "^1.1.0", @@ -34861,8 +26027,9 @@ }, "node_modules/minipass-collect": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/minipass-collect/-/minipass-collect-1.0.2.tgz", + "integrity": "sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -34872,8 +26039,9 @@ }, "node_modules/minipass-collect/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -34883,13 +26051,15 @@ }, "node_modules/minipass-collect/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/minipass-fetch": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-2.1.2.tgz", + "integrity": "sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==", "dev": true, - "license": "MIT", "dependencies": { "minipass": "^3.1.6", "minipass-sized": "^1.0.3", @@ -34904,8 +26074,9 @@ }, "node_modules/minipass-fetch/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -34915,13 +26086,15 @@ }, "node_modules/minipass-fetch/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/minipass-flush": { "version": "1.0.5", + "resolved": "https://registry.npmjs.org/minipass-flush/-/minipass-flush-1.0.5.tgz", + "integrity": "sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -34931,8 +26104,9 @@ }, "node_modules/minipass-flush/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -34942,13 +26116,15 @@ }, "node_modules/minipass-flush/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/minipass-pipeline": { "version": "1.2.4", + "resolved": "https://registry.npmjs.org/minipass-pipeline/-/minipass-pipeline-1.2.4.tgz", + "integrity": "sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -34958,8 +26134,9 @@ }, "node_modules/minipass-pipeline/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -34969,13 +26146,15 @@ }, "node_modules/minipass-pipeline/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/minipass-sized": { "version": "1.0.3", + "resolved": "https://registry.npmjs.org/minipass-sized/-/minipass-sized-1.0.3.tgz", + "integrity": "sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.0.0" }, @@ -34985,8 +26164,9 @@ }, "node_modules/minipass-sized/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -34996,13 +26176,15 @@ }, "node_modules/minipass-sized/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/minizlib": { "version": "2.1.2", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-2.1.2.tgz", + "integrity": "sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==", "dev": true, - "license": "MIT", "dependencies": { "minipass": "^3.0.0", "yallist": "^4.0.0" @@ -35013,8 +26195,9 @@ }, "node_modules/minizlib/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -35024,13 +26207,15 @@ }, "node_modules/minizlib/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/mkdirp": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-1.0.4.tgz", + "integrity": "sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==", "dev": true, - "license": "MIT", "bin": { "mkdirp": "bin/cmd.js" }, @@ -35045,14 +26230,16 @@ }, "node_modules/moment": { "version": "2.29.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/moment/-/moment-2.29.4.tgz", + "integrity": "sha512-5LC9SOxjSc2HF6vO2CyuTDNivEdoz2IvyJJGj6X8DJ0eFyfszE0QiEd+iXmBvUP3WHxSjFH/vIsA0EN00cgr8w==", "engines": { "node": "*" } }, "node_modules/moment-timezone": { "version": "0.5.43", - "license": "MIT", + "resolved": "https://registry.npmjs.org/moment-timezone/-/moment-timezone-0.5.43.tgz", + "integrity": "sha512-72j3aNyuIsDxdF1i7CEgV2FfxM1r6aaqJyLB2vwb33mXYyoyLly+F1zbWqhA3/bVIoJ4szlUoMbUnVdid32NUQ==", "dependencies": { "moment": "^2.29.4" }, @@ -35062,7 +26249,8 @@ }, "node_modules/mouse-change": { "version": "1.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mouse-change/-/mouse-change-1.4.0.tgz", + "integrity": "sha512-vpN0s+zLL2ykyyUDh+fayu9Xkor5v/zRD9jhSqjRS1cJTGS0+oakVZzNm5n19JvvEj0you+MXlYTpNxUDQUjkQ==", "peer": true, "dependencies": { "mouse-event": "^1.0.0" @@ -35070,17 +26258,20 @@ }, "node_modules/mouse-event": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mouse-event/-/mouse-event-1.0.5.tgz", + "integrity": "sha512-ItUxtL2IkeSKSp9cyaX2JLUuKk2uMoxBg4bbOWVd29+CskYJR9BGsUqtXenNzKbnDshvupjUewDIYVrOB6NmGw==", "peer": true }, "node_modules/mouse-event-offset": { "version": "3.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mouse-event-offset/-/mouse-event-offset-3.0.2.tgz", + "integrity": "sha512-s9sqOs5B1Ykox3Xo8b3Ss2IQju4UwlW6LSR+Q5FXWpprJ5fzMLefIIItr3PH8RwzfGy6gxs/4GAmiNuZScE25w==", "peer": true }, "node_modules/mouse-wheel": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mouse-wheel/-/mouse-wheel-1.2.0.tgz", + "integrity": "sha512-+OfYBiUOCTWcTECES49neZwL5AoGkXE+lFjIvzwNCnYRlso+EnfvovcBxGoyQ0yQt806eSPjS675K0EwWknXmw==", "peer": true, "dependencies": { "right-now": "^1.0.0", @@ -35098,12 +26289,14 @@ }, "node_modules/ms": { "version": "2.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, "node_modules/multicast-dns": { "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, - "license": "MIT", "dependencies": { "dns-packet": "^5.2.2", "thunky": "^1.0.2" @@ -35114,7 +26307,9 @@ }, "node_modules/mumath": { "version": "3.3.4", - "license": "Unlicense", + "resolved": "https://registry.npmjs.org/mumath/-/mumath-3.3.4.tgz", + "integrity": "sha512-VAFIOG6rsxoc7q/IaY3jdjmrsuX9f15KlRLYTHmixASBZkZEKC1IFqE2BC5CdhXmK6WLM1Re33z//AGmeRI6FA==", + "deprecated": "Redundant dependency in your project.", "peer": true, "dependencies": { "almost-equal": "^1.1.0" @@ -35122,23 +26317,26 @@ }, "node_modules/murmurhash-js": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz", + "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==", "peer": true }, "node_modules/nan": { "version": "2.18.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/nan/-/nan-2.18.0.tgz", + "integrity": "sha512-W7tfG7vMOGtD30sHoZSSc/JVYiyDPEyQVso/Zz+/uQd0B0L46gtC+pHha5FFMRpil6fm/AoEcRWyOVi4+E/f8w==", + "dev": true }, "node_modules/nanoid": { "version": "3.3.7", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.7.tgz", + "integrity": "sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==", "funding": [ { "type": "github", "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "bin": { "nanoid": "bin/nanoid.cjs" }, @@ -35148,22 +26346,26 @@ }, "node_modules/napi-macros": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/napi-macros/-/napi-macros-2.0.0.tgz", + "integrity": "sha512-A0xLykHtARfueITVDernsAWdtIMbOJgKgcluwENp3AlsKN/PloyO10HtmoqnFAQAcxPkgZN7wdfPfEd0zNGxbg==", "optional": true }, "node_modules/native-promise-only": { "version": "0.8.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/native-promise-only/-/native-promise-only-0.8.1.tgz", + "integrity": "sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==", "peer": true }, "node_modules/natural-compare": { "version": "1.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true }, "node_modules/needle": { "version": "2.9.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/needle/-/needle-2.9.1.tgz", + "integrity": "sha512-6R9fqJ5Zcmf+uYaFgdIHmLwNldn5HbK8L5ybn7Uz+ylX/rnOsSp1AHcvQSrCaFN+qNM1wpymHqD7mVasEOlHGQ==", "peer": true, "dependencies": { "debug": "^3.2.6", @@ -35179,7 +26381,8 @@ }, "node_modules/needle/node_modules/debug": { "version": "3.2.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "peer": true, "dependencies": { "ms": "^2.1.1" @@ -35187,24 +26390,28 @@ }, "node_modules/negotiator": { "version": "0.6.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.3.tgz", + "integrity": "sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==", "engines": { "node": ">= 0.6" } }, "node_modules/neo-async": { "version": "2.6.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==" }, "node_modules/next-tick": { "version": "1.1.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/next-tick/-/next-tick-1.1.0.tgz", + "integrity": "sha512-CXdUiJembsNjuToQvxayPZF9Vqht7hewsvy2sOWafLvi2awflj9mOC6bHIg50orX8IJvWKY9wYQ/zB2kogPslQ==", "peer": true }, "node_modules/no-case": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/no-case/-/no-case-3.0.4.tgz", + "integrity": "sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==", "dev": true, - "license": "MIT", "dependencies": { "lower-case": "^2.0.2", "tslib": "^2.0.3" @@ -35212,7 +26419,8 @@ }, "node_modules/nocache": { "version": "3.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/nocache/-/nocache-3.0.4.tgz", + "integrity": "sha512-WDD0bdg9mbq6F4mRxEYcPWwfA1vxd0mrvKOyxI7Xj/atfRHVeutzuWByG//jfm4uPzp0y4Kj051EORCBSQMycw==", "peer": true, "engines": { "node": ">=12.0.0" @@ -35220,11 +26428,13 @@ }, "node_modules/node-abort-controller": { "version": "3.1.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-abort-controller/-/node-abort-controller-3.1.1.tgz", + "integrity": "sha512-AGK2yQKIjRuqnc6VkX2Xj5d+QW8xZ87pa1UK6yA6ouUyuxfHuMP6umE5QK7UmTeOAymo+Zx1Fxiuw9rVx8taHQ==" }, "node_modules/node-dir": { "version": "0.1.17", - "license": "MIT", + "resolved": "https://registry.npmjs.org/node-dir/-/node-dir-0.1.17.tgz", + "integrity": "sha512-tmPX422rYgofd4epzrNoOXiE8XFZYOcCq1vD7MAXCDO+O+zndlA2ztdKKMa+EeuBG5tHETpr4ml4RGgpqDCCAg==", "dependencies": { "minimatch": "^3.0.2" }, @@ -35234,7 +26444,8 @@ }, "node_modules/node-fetch": { "version": "2.7.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", "dependencies": { "whatwg-url": "^5.0.0" }, @@ -35252,21 +26463,24 @@ }, "node_modules/node-fetch-native": { "version": "1.4.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-fetch-native/-/node-fetch-native-1.4.1.tgz", + "integrity": "sha512-NsXBU0UgBxo2rQLOeWNZqS3fvflWePMECr8CoSWoSTqCqGbVVsvl9vZu1HfQicYN0g5piV9Gh8RTEvo/uP752w==", + "dev": true }, "node_modules/node-forge": { "version": "1.3.1", + "resolved": "https://registry.npmjs.org/node-forge/-/node-forge-1.3.1.tgz", + "integrity": "sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==", "dev": true, - "license": "(BSD-3-Clause OR GPL-2.0)", "engines": { "node": ">= 6.13.0" } }, "node_modules/node-gyp": { "version": "8.4.1", + "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-8.4.1.tgz", + "integrity": "sha512-olTJRgUtAb/hOXG0E93wZDs5YiJlgbXxTwQAFHyNlRsXQnYzUaF2aGgujZbw+hR8aF4ZG/rST57bWMWD16jr9w==", "dev": true, - "license": "MIT", "dependencies": { "env-paths": "^2.2.0", "glob": "^7.1.4", @@ -35288,7 +26502,8 @@ }, "node_modules/node-gyp-build": { "version": "4.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/node-gyp-build/-/node-gyp-build-4.1.1.tgz", + "integrity": "sha512-dSq1xmcPDKPZ2EED2S6zw/b9NKsqzXRE6dVr8TVQnI3FJOTteUMuqF3Qqs6LZg+mLGYJWqQzMbIjMtJqTv87nQ==", "optional": true, "bin": { "node-gyp-build": "bin.js", @@ -35298,8 +26513,9 @@ }, "node_modules/node-gyp/node_modules/@npmcli/fs": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/@npmcli/fs/-/fs-1.1.1.tgz", + "integrity": "sha512-8KG5RD0GVP4ydEzRn/I4BNDuxDtqVbOdm8675T49OIG/NGhaK0pjPX7ZcDlvKYbA+ulvVK3ztfcF4uBdOxuJbQ==", "dev": true, - "license": "ISC", "dependencies": { "@gar/promisify": "^1.0.1", "semver": "^7.3.5" @@ -35307,8 +26523,10 @@ }, "node_modules/node-gyp/node_modules/@npmcli/move-file": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@npmcli/move-file/-/move-file-1.1.2.tgz", + "integrity": "sha512-1SUf/Cg2GzGDyaf15aR9St9TWlb+XvbZXWpDx8YKs7MLzMH/BCeopv+y9vzrzgkfykCGuWOlSu3mZhj2+FQcrg==", + "deprecated": "This functionality has been moved to @npmcli/fs", "dev": true, - "license": "MIT", "dependencies": { "mkdirp": "^1.0.4", "rimraf": "^3.0.2" @@ -35319,16 +26537,18 @@ }, "node_modules/node-gyp/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, - "license": "MIT", "engines": { "node": ">= 6" } }, "node_modules/node-gyp/node_modules/cacache": { "version": "15.3.0", + "resolved": "https://registry.npmjs.org/cacache/-/cacache-15.3.0.tgz", + "integrity": "sha512-VVdYzXEn+cnbXpFgWs5hTT7OScegHVmLhJIR8Ufqk3iFD6A6j5iSX1KuBTfNEv4tdJWE2PzA6IVFtcLC7fN9wQ==", "dev": true, - "license": "ISC", "dependencies": { "@npmcli/fs": "^1.0.0", "@npmcli/move-file": "^1.0.1", @@ -35355,8 +26575,9 @@ }, "node_modules/node-gyp/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -35374,8 +26595,9 @@ }, "node_modules/node-gyp/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, - "license": "MIT", "dependencies": { "@tootallnate/once": "1", "agent-base": "6", @@ -35387,8 +26609,9 @@ }, "node_modules/node-gyp/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, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -35398,8 +26621,9 @@ }, "node_modules/node-gyp/node_modules/make-fetch-happen": { "version": "9.1.0", + "resolved": "https://registry.npmjs.org/make-fetch-happen/-/make-fetch-happen-9.1.0.tgz", + "integrity": "sha512-+zopwDy7DNknmwPQplem5lAZX/eCOzSvSNNcSKm5eVwTkOBzoktEfXsa9L23J/GIRhxRsaxzkPEhrJEpE2F4Gg==", "dev": true, - "license": "ISC", "dependencies": { "agentkeepalive": "^4.1.3", "cacache": "^15.2.0", @@ -35424,8 +26648,9 @@ }, "node_modules/node-gyp/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -35435,8 +26660,9 @@ }, "node_modules/node-gyp/node_modules/minipass-fetch": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/minipass-fetch/-/minipass-fetch-1.4.1.tgz", + "integrity": "sha512-CGH1eblLq26Y15+Azk7ey4xh0J/XfJfrCox5LDJiKqI2Q2iwOLOKrlmIaODiSQS8d18jalF6y2K2ePUm0CmShw==", "dev": true, - "license": "MIT", "dependencies": { "minipass": "^3.1.0", "minipass-sized": "^1.0.3", @@ -35451,8 +26677,9 @@ }, "node_modules/node-gyp/node_modules/socks-proxy-agent": { "version": "6.2.1", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-6.2.1.tgz", + "integrity": "sha512-a6KW9G+6B3nWZ1yB8G7pJwL3ggLy1uTzKAgCb7ttblwqdz9fMGJUuTy3uFzEP48FAs9FLILlmzDlE2JJhVQaXQ==", "dev": true, - "license": "MIT", "dependencies": { "agent-base": "^6.0.2", "debug": "^4.3.3", @@ -35464,8 +26691,9 @@ }, "node_modules/node-gyp/node_modules/ssri": { "version": "8.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-8.0.1.tgz", + "integrity": "sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.1.1" }, @@ -35475,38 +26703,44 @@ }, "node_modules/node-gyp/node_modules/unique-filename": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-1.1.1.tgz", + "integrity": "sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==", "dev": true, - "license": "ISC", "dependencies": { "unique-slug": "^2.0.0" } }, "node_modules/node-gyp/node_modules/unique-slug": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-2.0.2.tgz", + "integrity": "sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" } }, "node_modules/node-gyp/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/node-int64": { "version": "0.4.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==" }, "node_modules/node-releases": { "version": "2.0.14", - "license": "MIT" + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", + "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==" }, "node_modules/node-sass": { "version": "8.0.0", + "resolved": "https://registry.npmjs.org/node-sass/-/node-sass-8.0.0.tgz", + "integrity": "sha512-jPzqCF2/e6JXw6r3VxfIqYc8tKQdkj5Z/BDATYyG6FL6b/LuYBNFGFVhus0mthcWifHm/JzBpKAd+3eXsWeK/A==", "dev": true, "hasInstallScript": true, - "license": "MIT", "dependencies": { "async-foreach": "^0.1.3", "chalk": "^4.1.2", @@ -35532,8 +26766,9 @@ }, "node_modules/node-sass/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, - "license": "MIT", "dependencies": { "color-convert": "^2.0.1" }, @@ -35546,8 +26781,9 @@ }, "node_modules/node-sass/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, - "license": "MIT", "dependencies": { "ansi-styles": "^4.1.0", "supports-color": "^7.1.0" @@ -35561,8 +26797,9 @@ }, "node_modules/node-sass/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -35580,16 +26817,18 @@ }, "node_modules/node-sass/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, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/node-sass/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, - "license": "MIT", "dependencies": { "has-flag": "^4.0.0" }, @@ -35599,7 +26838,8 @@ }, "node_modules/node-stream-zip": { "version": "1.15.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/node-stream-zip/-/node-stream-zip-1.15.0.tgz", + "integrity": "sha512-LN4fydt9TqhZhThkZIVQnF9cwjU3qmUH9h78Mx/K7d3VvfRqqwthLwJEUOEL0QPZ0XQmNN7be5Ggit5+4dq3Bw==", "peer": true, "engines": { "node": ">=0.12.0" @@ -35611,8 +26851,9 @@ }, "node_modules/nopt": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/nopt/-/nopt-5.0.0.tgz", + "integrity": "sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==", "dev": true, - "license": "ISC", "dependencies": { "abbrev": "1" }, @@ -35625,8 +26866,9 @@ }, "node_modules/normalize-package-data": { "version": "3.0.3", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-3.0.3.tgz", + "integrity": "sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^4.0.1", "is-core-module": "^2.5.0", @@ -35639,19 +26881,22 @@ }, "node_modules/normalize-path": { "version": "3.0.0", - "license": "MIT", + "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-svg-path": { "version": "0.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/normalize-svg-path/-/normalize-svg-path-0.1.0.tgz", + "integrity": "sha512-1/kmYej2iedi5+ROxkRESL/pI02pkg0OBnaR4hJkSIX6+ORzepwbuUXfrdZaPjysTsJInj0Rj5NuX027+dMBvA==", "peer": true }, "node_modules/npm-run-path": { "version": "4.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dependencies": { "path-key": "^3.0.0" }, @@ -35661,8 +26906,9 @@ }, "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==", "dev": true, - "license": "ISC", "dependencies": { "are-we-there-yet": "^3.0.0", "console-control-strings": "^1.1.0", @@ -35675,8 +26921,9 @@ }, "node_modules/nth-check": { "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "boolbase": "^1.0.0" }, @@ -35686,12 +26933,14 @@ }, "node_modules/nullthrows": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/nullthrows/-/nullthrows-1.1.1.tgz", + "integrity": "sha512-2vPPEi+Z7WqML2jZYddDIfy5Dqb0r2fze2zTxNNknZaFpVHU3mFB3R+DWeJWGVx0ecvttSGlJTI+WG+8Z4cDWw==", "peer": true }, "node_modules/number-is-integer": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/number-is-integer/-/number-is-integer-1.0.1.tgz", + "integrity": "sha512-Dq3iuiFBkrbmuQjGFFF3zckXNCQoSD37/SdSbgcBailUx6knDvDwb5CympBgcoWHy36sfS12u74MHYkXyHq6bg==", "peer": true, "dependencies": { "is-finite": "^1.0.1" @@ -35702,7 +26951,8 @@ }, "node_modules/ob1": { "version": "0.76.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ob1/-/ob1-0.76.8.tgz", + "integrity": "sha512-dlBkJJV5M/msj9KYA9upc+nUWVwuOFFTbu28X6kZeGwcuW+JxaHSBZ70SYQnk5M+j5JbNLR6yKHmgW4M5E7X5g==", "peer": true, "engines": { "node": ">=16" @@ -35710,21 +26960,24 @@ }, "node_modules/object-assign": { "version": "4.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "engines": { "node": ">=0.10.0" } }, "node_modules/object-inspect": { "version": "1.13.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", "funding": { "url": "https://github.com/sponsors/ljharb" } }, "node_modules/object-is": { "version": "1.1.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.5.tgz", + "integrity": "sha512-3cyDsyHgtmi7I7DfSSI2LDp6SK2lwvtbg0p0R1e0RvTqF5ceGx+K2dfSjm1bKDMVCFEDAQvy+o8c6a7VujOddw==", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.1.3" @@ -35738,14 +26991,16 @@ }, "node_modules/object-keys": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "engines": { "node": ">= 0.4" } }, "node_modules/object.assign": { "version": "4.1.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", "dependencies": { "call-bind": "^1.0.5", "define-properties": "^1.2.1", @@ -35761,7 +27016,8 @@ }, "node_modules/object.entries": { "version": "1.1.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.7.tgz", + "integrity": "sha512-jCBs/0plmPsOnrKAfFQXRG2NFjlhZgjjcBLSmTnEhU8U6vVTsVe8ANeQJCHTl3gSsI4J+0emOoCgoKlmQPMgmA==", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -35773,8 +27029,9 @@ }, "node_modules/object.fromentries": { "version": "2.0.7", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.7.tgz", + "integrity": "sha512-UPbPHML6sL8PI/mOqPwsH4G6iyXcCGzLin8KvEPenOZN5lpCNBZZQ+V62vdjB1mQHrmqGQt5/OJzemUA+KJmEA==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -35789,8 +27046,9 @@ }, "node_modules/object.groupby": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.1.tgz", + "integrity": "sha512-HqaQtqLnp/8Bn4GL16cj+CUYbnpe1bh0TtEaWvybszDG4tgxCJuRpV8VGuvNaI1fAnI4lUJzDG55MXcOH4JZcQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -35800,8 +27058,9 @@ }, "node_modules/object.hasown": { "version": "1.1.3", + "resolved": "https://registry.npmjs.org/object.hasown/-/object.hasown-1.1.3.tgz", + "integrity": "sha512-fFI4VcYpRHvSLXxP7yiZOMAd331cPfd2p7PFDVbgUsYOfCT3tICVqXWngbjr4m49OvsBwUBQ6O2uQoJvy3RexA==", "dev": true, - "license": "MIT", "dependencies": { "define-properties": "^1.2.0", "es-abstract": "^1.22.1" @@ -35812,7 +27071,8 @@ }, "node_modules/object.values": { "version": "1.1.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.1.7.tgz", + "integrity": "sha512-aU6xnDFYT3x17e/f0IiiwlGPTy2jzMySGfUB4fq6z7CV8l85CWHDk5ErhyhpfDHhrOMwGFhSQkhMGHaIotA6Ng==", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -35832,12 +27092,14 @@ }, "node_modules/obuf": { "version": "1.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/obuf/-/obuf-1.1.2.tgz", + "integrity": "sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==", + "dev": true }, "node_modules/on-finished": { "version": "2.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.4.1.tgz", + "integrity": "sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==", "dependencies": { "ee-first": "1.1.1" }, @@ -35847,21 +27109,24 @@ }, "node_modules/on-headers": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", "engines": { "node": ">= 0.8" } }, "node_modules/once": { "version": "1.4.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dependencies": { "wrappy": "1" } }, "node_modules/onetime": { "version": "5.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dependencies": { "mimic-fn": "^2.1.0" }, @@ -35874,7 +27139,8 @@ }, "node_modules/open": { "version": "6.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/open/-/open-6.4.0.tgz", + "integrity": "sha512-IFenVPgF70fSm1keSd2iDBIDIBZkroLeuffXq+wKTzTJlBpesFWojV9lb8mzOfaAzM1sr7HQHuO0vtV0zYekGg==", "peer": true, "dependencies": { "is-wsl": "^1.1.0" @@ -35885,8 +27151,9 @@ }, "node_modules/optionator": { "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, - "license": "MIT", "dependencies": { "@aashutoshrathi/word-wrap": "^1.2.3", "deep-is": "^0.1.3", @@ -35901,7 +27168,8 @@ }, "node_modules/ora": { "version": "5.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ora/-/ora-5.4.1.tgz", + "integrity": "sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==", "dependencies": { "bl": "^4.1.0", "chalk": "^4.1.0", @@ -35922,7 +27190,8 @@ }, "node_modules/ora/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -35935,7 +27204,8 @@ }, "node_modules/ora/node_modules/bl": { "version": "4.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/bl/-/bl-4.1.0.tgz", + "integrity": "sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==", "dependencies": { "buffer": "^5.5.0", "inherits": "^2.0.4", @@ -35944,6 +27214,8 @@ }, "node_modules/ora/node_modules/buffer": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "funding": [ { "type": "github", @@ -35958,7 +27230,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -35966,7 +27237,8 @@ }, "node_modules/ora/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "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" @@ -35980,14 +27252,16 @@ }, "node_modules/ora/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, "node_modules/ora/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "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" }, @@ -35997,14 +27271,16 @@ }, "node_modules/overlap-area": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/overlap-area/-/overlap-area-1.1.0.tgz", + "integrity": "sha512-3dlJgJCaVeXH0/eZjYVJvQiLVVrPO4U1ZGqlATtx6QGO3b5eNM6+JgUKa7oStBTdYuGTk7gVoABCW6Tp+dhRdw==", "dependencies": { "@daybrush/utils": "^1.7.1" } }, "node_modules/p-limit": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dependencies": { "yocto-queue": "^0.1.0" }, @@ -36017,7 +27293,8 @@ }, "node_modules/p-locate": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dependencies": { "p-limit": "^3.0.2" }, @@ -36030,8 +27307,9 @@ }, "node_modules/p-map": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/p-map/-/p-map-4.0.0.tgz", + "integrity": "sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==", "dev": true, - "license": "MIT", "dependencies": { "aggregate-error": "^3.0.0" }, @@ -36044,8 +27322,9 @@ }, "node_modules/p-retry": { "version": "4.6.2", + "resolved": "https://registry.npmjs.org/p-retry/-/p-retry-4.6.2.tgz", + "integrity": "sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==", "dev": true, - "license": "MIT", "dependencies": { "@types/retry": "0.12.0", "retry": "^0.13.1" @@ -36056,15 +27335,17 @@ }, "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, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/p-try": { "version": "2.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", "engines": { "node": ">=6" } @@ -36076,12 +27357,14 @@ }, "node_modules/papaparse": { "version": "5.4.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/papaparse/-/papaparse-5.4.1.tgz", + "integrity": "sha512-HipMsgJkZu8br23pW15uvo6sib6wne/4woLZPlFf3rpDyMe9ywEXUsuD7+6K9PRkJlVT51j/sCOYDKGGS3ZJrw==" }, "node_modules/param-case": { "version": "3.0.4", + "resolved": "https://registry.npmjs.org/param-case/-/param-case-3.0.4.tgz", + "integrity": "sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==", "dev": true, - "license": "MIT", "dependencies": { "dot-case": "^3.0.4", "tslib": "^2.0.3" @@ -36089,7 +27372,8 @@ }, "node_modules/parent-module": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dependencies": { "callsites": "^3.0.0" }, @@ -36099,7 +27383,8 @@ }, "node_modules/parenthesis": { "version": "3.1.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/parenthesis/-/parenthesis-3.1.8.tgz", + "integrity": "sha512-KF/U8tk54BgQewkJPvB4s/US3VQY68BRDpH638+7O/n58TpnwiwnOtGIOsT2/i+M78s61BBpeC83STB88d8sqw==", "peer": true }, "node_modules/parse-entities": { @@ -36123,7 +27408,8 @@ }, "node_modules/parse-json": { "version": "5.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dependencies": { "@babel/code-frame": "^7.0.0", "error-ex": "^1.3.1", @@ -36139,7 +27425,8 @@ }, "node_modules/parse-rect": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/parse-rect/-/parse-rect-1.2.0.tgz", + "integrity": "sha512-4QZ6KYbnE6RTwg9E0HpLchUM9EZt6DnDxajFZZDSV4p/12ZJEvPO702DZpGvRYEPo00yKDys7jASi+/w7aO8LA==", "peer": true, "dependencies": { "pick-by-alias": "^1.2.0" @@ -36147,18 +27434,21 @@ }, "node_modules/parse-svg-path": { "version": "0.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/parse-svg-path/-/parse-svg-path-0.1.2.tgz", + "integrity": "sha512-JyPSBnkTJ0AI8GGJLfMXvKq42cj5c006fnLz6fXy6zfoVjJizi8BNTpu8on8ziI1cKy9d9DGNuY17Ce7wuejpQ==", "peer": true }, "node_modules/parse-unit": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/parse-unit/-/parse-unit-1.0.1.tgz", + "integrity": "sha512-hrqldJHokR3Qj88EIlV/kAyAi/G5R2+R56TBANxNMy0uPlYcttx0jnMW6Yx5KsKPSbC3KddM/7qQm3+0wEXKxg==", "peer": true }, "node_modules/parse5": { "version": "7.1.2", + "resolved": "https://registry.npmjs.org/parse5/-/parse5-7.1.2.tgz", + "integrity": "sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==", "dev": true, - "license": "MIT", "dependencies": { "entities": "^4.4.0" }, @@ -36168,15 +27458,17 @@ }, "node_modules/parseurl": { "version": "1.3.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", "engines": { "node": ">= 0.8" } }, "node_modules/pascal-case": { "version": "3.1.2", + "resolved": "https://registry.npmjs.org/pascal-case/-/pascal-case-3.1.2.tgz", + "integrity": "sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==", "dev": true, - "license": "MIT", "dependencies": { "no-case": "^3.0.4", "tslib": "^2.0.3" @@ -36184,8 +27476,9 @@ }, "node_modules/path": { "version": "0.12.7", + "resolved": "https://registry.npmjs.org/path/-/path-0.12.7.tgz", + "integrity": "sha512-aXXC6s+1w7otVF9UletFkFcDsJeO7lSZBPUQhtb5O0xJe8LtYhj/GxldoL09bBj9+ZmE2hNoHqQSFMN5fikh4Q==", "dev": true, - "license": "MIT", "dependencies": { "process": "^0.11.1", "util": "^0.10.3" @@ -36198,28 +27491,32 @@ }, "node_modules/path-exists": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "engines": { "node": ">=8" } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "engines": { "node": ">=0.10.0" } }, "node_modules/path-key": { "version": "3.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", "engines": { "node": ">=8" } }, "node_modules/path-parse": { "version": "1.0.7", - "license": "MIT" + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/path-scurry": { "version": "1.10.1", @@ -36237,39 +27534,45 @@ }, "node_modules/path-scurry/node_modules/lru-cache": { "version": "10.1.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.1.0.tgz", + "integrity": "sha512-/1clY/ui8CzjKFyjdvwPWJUYKiFVXG2I2cY0ssG7h4+hwk+XOIX7ZSG9Q7TW8TW3Kp3BUSqgFWBLgL4PJ+Blag==", "engines": { "node": "14 || >=16.14" } }, "node_modules/path-scurry/node_modules/minipass": { "version": "7.0.4", - "license": "ISC", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.4.tgz", + "integrity": "sha512-jYofLM5Dam9279rdkWzqHozUo4ybjdZmCsDHePy5V/PbBcVMiSZR97gmAy45aqi8CK1lG2ECd356FU86avfwUQ==", "engines": { "node": ">=16 || 14 >=14.17" } }, "node_modules/path-to-regexp": { "version": "0.1.7", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/path-to-regexp/-/path-to-regexp-0.1.7.tgz", + "integrity": "sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==", + "dev": true }, "node_modules/path-type": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "engines": { "node": ">=8" } }, "node_modules/path/node_modules/inherits": { "version": "2.0.3", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true }, "node_modules/path/node_modules/util": { "version": "0.10.4", + "resolved": "https://registry.npmjs.org/util/-/util-0.10.4.tgz", + "integrity": "sha512-0Pm9hTQ3se5ll1XihRic3FDIku70C+iHUdT/W926rSgHV5QgXsYbKZN8MSC3tJtSkhuROzvsQjAaFENRXr+19A==", "dev": true, - "license": "MIT", "dependencies": { "inherits": "2.0.3" } @@ -36281,7 +27584,8 @@ }, "node_modules/pbf": { "version": "3.2.1", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.2.1.tgz", + "integrity": "sha512-ClrV7pNOn7rtmoQVF4TS1vyU0WhYRnP92fzbfF75jAIwpnzdJXf8iTd4CMEqO4yUenH6NDqLiwjqlh6QgZzgLQ==", "peer": true, "dependencies": { "ieee754": "^1.1.12", @@ -36293,7 +27597,8 @@ }, "node_modules/pdfjs-dist": { "version": "2.16.105", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/pdfjs-dist/-/pdfjs-dist-2.16.105.tgz", + "integrity": "sha512-J4dn41spsAwUxCpEoVf6GVoz908IAA3mYiLmNxg8J9kfRXc2jxpbUepcP0ocp0alVNLFthTAM8DZ1RaHh8sU0A==", "dependencies": { "dommatrix": "^1.0.3", "web-streams-polyfill": "^3.2.1" @@ -36324,20 +27629,24 @@ }, "node_modules/performance-now": { "version": "2.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz", + "integrity": "sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==" }, "node_modules/pick-by-alias": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pick-by-alias/-/pick-by-alias-1.2.0.tgz", + "integrity": "sha512-ESj2+eBxhGrcA1azgHs7lARG5+5iLakc/6nlfbpjcLl00HuuUOIuORhYXN4D1HfvMSKuVtFQjAlnwi1JHEeDIw==", "peer": true }, "node_modules/picocolors": { "version": "1.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, "node_modules/picomatch": { "version": "2.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", "engines": { "node": ">=8.6" }, @@ -36347,22 +27656,25 @@ }, "node_modules/pify": { "version": "4.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "engines": { "node": ">=6" } }, "node_modules/pirates": { "version": "4.0.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "engines": { "node": ">= 6" } }, "node_modules/pkg-dir": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-5.0.0.tgz", + "integrity": "sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^5.0.0" }, @@ -36372,7 +27684,8 @@ }, "node_modules/plotly.js": { "version": "2.27.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/plotly.js/-/plotly.js-2.27.1.tgz", + "integrity": "sha512-XeE0zTJWTxURYrUJqzf73l8lTb+HnyRvvhHkoSIEvWf58ins4saopo9l25kCm+xHAGz8E/2EOncE4DyXsJ34kA==", "peer": true, "dependencies": { "@plotly/d3": "3.8.1", @@ -36433,7 +27746,8 @@ }, "node_modules/point-in-polygon": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/point-in-polygon/-/point-in-polygon-1.1.0.tgz", + "integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==", "peer": true }, "node_modules/polished": { @@ -36449,11 +27763,14 @@ }, "node_modules/polybooljs": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/polybooljs/-/polybooljs-1.2.0.tgz", + "integrity": "sha512-mKjR5nolISvF+q2BtC1fi/llpxBPTQ3wLWN8+ldzdw2Hocpc8C72ZqnamCM4Z6z+68GVVjkeM01WJegQmZ8MEQ==", "peer": true }, "node_modules/postcss": { "version": "8.4.32", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.32.tgz", + "integrity": "sha512-D/kj5JNu6oo2EIy+XL/26JEDTlIbB8hw85G8StOE6L74RQAVVP5rej6wxCNqyMbR4RkPfqvezVbPw81Ngd6Kcw==", "dev": true, "funding": [ { @@ -36469,7 +27786,6 @@ "url": "https://github.com/sponsors/ai" } ], - "license": "MIT", "dependencies": { "nanoid": "^3.3.7", "picocolors": "^1.0.0", @@ -36481,8 +27797,9 @@ }, "node_modules/postcss-modules-extract-imports": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", "dev": true, - "license": "ISC", "engines": { "node": "^10 || ^12 || >= 14" }, @@ -36492,8 +27809,9 @@ }, "node_modules/postcss-modules-local-by-default": { "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", "dev": true, - "license": "MIT", "dependencies": { "icss-utils": "^5.0.0", "postcss-selector-parser": "^6.0.2", @@ -36508,8 +27826,9 @@ }, "node_modules/postcss-modules-scope": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", "dev": true, - "license": "ISC", "dependencies": { "postcss-selector-parser": "^6.0.4" }, @@ -36522,8 +27841,9 @@ }, "node_modules/postcss-modules-values": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, - "license": "ISC", "dependencies": { "icss-utils": "^5.0.0" }, @@ -36536,8 +27856,9 @@ }, "node_modules/postcss-selector-parser": { "version": "6.0.13", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.13.tgz", + "integrity": "sha512-EaV1Gl4mUEV4ddhDnv/xtj7sxwrwxdetHdWUGnT4VJQf+4d05v6lHYZr8N573k5Z0BViss7BDhfWtKS3+sfAqQ==", "dev": true, - "license": "MIT", "dependencies": { "cssesc": "^3.0.0", "util-deprecate": "^1.0.2" @@ -36548,26 +27869,30 @@ }, "node_modules/postcss-value-parser": { "version": "4.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true }, "node_modules/potpack": { "version": "1.0.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/potpack/-/potpack-1.0.2.tgz", + "integrity": "sha512-choctRBIV9EMT9WGAZHn3V7t0Z2pMQyl0EZE6pFc/6ml3ssw7Dlf/oAOvFwjm1HVsqfQN8GfeFyJ+d8tRzqueQ==", "peer": true }, "node_modules/prelude-ls": { "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.8.0" } }, "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, - "license": "MIT", "bin": { "prettier": "bin-prettier.js" }, @@ -36580,8 +27905,9 @@ }, "node_modules/prettier-linter-helpers": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/prettier-linter-helpers/-/prettier-linter-helpers-1.0.0.tgz", + "integrity": "sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==", "dev": true, - "license": "MIT", "dependencies": { "fast-diff": "^1.1.2" }, @@ -36591,8 +27917,9 @@ }, "node_modules/pretty-error": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/pretty-error/-/pretty-error-4.0.0.tgz", + "integrity": "sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==", "dev": true, - "license": "MIT", "dependencies": { "lodash": "^4.17.20", "renderkid": "^3.0.0" @@ -36600,8 +27927,9 @@ }, "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, - "license": "MIT", "dependencies": { "ansi-regex": "^5.0.1", "ansi-styles": "^5.0.0", @@ -36613,8 +27941,9 @@ }, "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, - "license": "MIT", "engines": { "node": ">=10" }, @@ -36624,8 +27953,9 @@ }, "node_modules/pretty-format/node_modules/react-is": { "version": "17.0.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", + "dev": true }, "node_modules/pretty-hrtime": { "version": "1.0.3", @@ -36637,7 +27967,8 @@ }, "node_modules/probe-image-size": { "version": "7.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/probe-image-size/-/probe-image-size-7.2.3.tgz", + "integrity": "sha512-HubhG4Rb2UH8YtV4ba0Vp5bQ7L78RTONYu/ujmCu5nBI8wGv24s4E9xSKBi0N1MowRpxk76pFCpJtW0KPzOK0w==", "peer": true, "dependencies": { "lodash.merge": "^4.6.2", @@ -36647,15 +27978,17 @@ }, "node_modules/process": { "version": "0.11.10", + "resolved": "https://registry.npmjs.org/process/-/process-0.11.10.tgz", + "integrity": "sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6.0" } }, "node_modules/process-nextick-args": { "version": "2.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" }, "node_modules/progress": { "version": "2.0.3", @@ -36666,20 +27999,23 @@ }, "node_modules/promise": { "version": "7.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "dependencies": { "asap": "~2.0.3" } }, "node_modules/promise-inflight": { "version": "1.0.1", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/promise-inflight/-/promise-inflight-1.0.1.tgz", + "integrity": "sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==", + "dev": true }, "node_modules/promise-retry": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/promise-retry/-/promise-retry-2.0.1.tgz", + "integrity": "sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==", "dev": true, - "license": "MIT", "dependencies": { "err-code": "^2.0.2", "retry": "^0.12.0" @@ -36690,7 +28026,8 @@ }, "node_modules/prompts": { "version": "2.4.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", "dependencies": { "kleur": "^3.0.3", "sisteransi": "^1.0.5" @@ -36701,7 +28038,8 @@ }, "node_modules/prop-types": { "version": "15.8.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", "dependencies": { "loose-envify": "^1.4.0", "object-assign": "^4.1.1", @@ -36710,7 +28048,8 @@ }, "node_modules/prop-types-exact": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/prop-types-exact/-/prop-types-exact-1.2.0.tgz", + "integrity": "sha512-K+Tk3Kd9V0odiXFP9fwDHUYRyvK3Nun3GVyPapSIs5OBkITAm15W0CPFD/YKTkMUAbc0b9CUwRQp2ybiBIq+eA==", "dependencies": { "has": "^1.0.3", "object.assign": "^4.1.0", @@ -36719,7 +28058,8 @@ }, "node_modules/prop-types-extra": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/prop-types-extra/-/prop-types-extra-1.1.1.tgz", + "integrity": "sha512-59+AHNnHYCdiC+vMwY52WmvP5dM3QLeoumYuEyceQDi9aEhtwN9zIQ2ZNo25sMyXnbh32h+P1ezDsUpUH3JAew==", "dependencies": { "react-is": "^16.3.2", "warning": "^4.0.0" @@ -36739,13 +28079,15 @@ }, "node_modules/protocol-buffers-schema": { "version": "3.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", + "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==", "peer": true }, "node_modules/proxy-addr": { "version": "2.0.7", + "resolved": "https://registry.npmjs.org/proxy-addr/-/proxy-addr-2.0.7.tgz", + "integrity": "sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==", "dev": true, - "license": "MIT", "dependencies": { "forwarded": "0.2.0", "ipaddr.js": "1.9.1" @@ -36756,21 +28098,25 @@ }, "node_modules/proxy-from-env": { "version": "1.1.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" }, "node_modules/prr": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "optional": true }, "node_modules/psl": { "version": "1.9.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/psl/-/psl-1.9.0.tgz", + "integrity": "sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==" }, "node_modules/pump": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, - "license": "MIT", "dependencies": { "end-of-stream": "^1.1.0", "once": "^1.3.1" @@ -36797,7 +28143,8 @@ }, "node_modules/punycode": { "version": "2.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", "engines": { "node": ">=6" } @@ -36832,8 +28179,9 @@ }, "node_modules/puppeteer-core/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -36874,10 +28222,13 @@ }, "node_modules/pure-color": { "version": "1.3.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/pure-color/-/pure-color-1.3.0.tgz", + "integrity": "sha512-QFADYnsVoBMw1srW7OVKEYjG+MbIa49s54w1MA1EDY6r2r/sTcKKYqRX1f4GYvnXP7eN/Pe9HFcX+hwzmrXRHA==" }, "node_modules/pure-rand": { "version": "6.0.4", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.0.4.tgz", + "integrity": "sha512-LA0Y9kxMYv47GIPJy6MI84fqTd2HmYZI83W/kM/SkKfDlajnZYfmXFTxkbY+xSBPkLJxltMa9hIkmdc29eguMA==", "dev": true, "funding": [ { @@ -36888,13 +28239,13 @@ "type": "opencollective", "url": "https://opencollective.com/fast-check" } - ], - "license": "MIT" + ] }, "node_modules/qs": { "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", "dev": true, - "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.0.4" }, @@ -36907,7 +28258,8 @@ }, "node_modules/query-string": { "version": "8.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/query-string/-/query-string-8.1.0.tgz", + "integrity": "sha512-BFQeWxJOZxZGix7y+SByG3F36dA0AbTy9o6pSmKFcFz7DAj0re9Frkty3saBn3nHo3D0oZJ/+rx3r8H8r8Jbpw==", "dependencies": { "decode-uri-component": "^0.4.1", "filter-obj": "^5.1.0", @@ -36922,7 +28274,8 @@ }, "node_modules/queue": { "version": "6.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/queue/-/queue-6.0.2.tgz", + "integrity": "sha512-iHZWu+q3IdFZFX36ro/lKBkSvfkztY5Y7HMiPlOUjhupPcG2JMfst2KKEpu5XndviX/3UhFbRngUPNKtgvtZiA==", "peer": true, "dependencies": { "inherits": "~2.0.3" @@ -36930,6 +28283,8 @@ }, "node_modules/queue-microtask": { "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "funding": [ { "type": "github", @@ -36943,32 +28298,35 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/quick-lru": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-4.0.1.tgz", + "integrity": "sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/quickselect": { "version": "2.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==", "peer": true }, "node_modules/raf": { "version": "3.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/raf/-/raf-3.4.1.tgz", + "integrity": "sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==", "dependencies": { "performance-now": "^2.1.0" } }, "node_modules/raf-schd": { "version": "4.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/raf-schd/-/raf-schd-4.0.3.tgz", + "integrity": "sha512-tQkJl2GRWh83ui2DiPTJz9wEiMN20syf+5oKfB03yYP7ioZcJwsIK8FjrtLwH1m7C7e+Tt2yYBlrOpdT+dyeIQ==" }, "node_modules/ramda": { "version": "0.29.0", @@ -36981,22 +28339,25 @@ }, "node_modules/randombytes": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dependencies": { "safe-buffer": "^5.1.0" } }, "node_modules/range-parser": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", "engines": { "node": ">= 0.6" } }, "node_modules/raw-body": { "version": "2.5.1", + "resolved": "https://registry.npmjs.org/raw-body/-/raw-body-2.5.1.tgz", + "integrity": "sha512-qqJBtEyVgS0ZmPGdCFPWJ3FreoqvG4MVQln/kCgF7Olq95IbOp0/BWyMwbdtn4VTvkM8Y7khCQ2Xgk/tcrCXig==", "dev": true, - "license": "MIT", "dependencies": { "bytes": "3.1.2", "http-errors": "2.0.0", @@ -37009,7 +28370,8 @@ }, "node_modules/rc-slider": { "version": "10.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/rc-slider/-/rc-slider-10.5.0.tgz", + "integrity": "sha512-xiYght50cvoODZYI43v3Ylsqiw14+D7ELsgzR40boDZaya1HFa1Etnv9MDkQE8X/UrXAffwv2AcNAhslgYuDTw==", "dependencies": { "@babel/runtime": "^7.10.1", "classnames": "^2.2.5", @@ -37025,7 +28387,8 @@ }, "node_modules/rc-util": { "version": "5.38.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/rc-util/-/rc-util-5.38.1.tgz", + "integrity": "sha512-e4ZMs7q9XqwTuhIK7zBIVFltUtMSjphuPPQXHoHlzRzNdOwUxDejo0Zls5HYaJfRKNURcsS/ceKVULlhjBrxng==", "dependencies": { "@babel/runtime": "^7.18.3", "react-is": "^18.2.0" @@ -37037,11 +28400,13 @@ }, "node_modules/rc-util/node_modules/react-is": { "version": "18.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.2.0.tgz", + "integrity": "sha512-xWGDIW6x921xtzPkhiULtthJHoJvBbF3q26fzloPCK0hsvxtPVelvftw3zjbHWSkR2km9Z+4uxbDDK/6Zw9B8w==" }, "node_modules/re-resizable": { "version": "6.9.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/re-resizable/-/re-resizable-6.9.6.tgz", + "integrity": "sha512-0xYKS5+Z0zk+vICQlcZW+g54CcJTTmHluA7JUUgvERDxnKAnytylcyPsA+BSFi759s5hPlHmBRegFrwXs2FuBQ==", "dependencies": { "fast-memoize": "^2.5.1" }, @@ -37052,7 +28417,8 @@ }, "node_modules/react": { "version": "18.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react/-/react-18.2.0.tgz", + "integrity": "sha512-/3IjMdb2L9QbBdWiW5e3P2/npwMBaU9mHCSCUzNln0ZCYbcfTsGbTJrU/kGemdH2IWmB2ioZ+zkxtmq6g09fGQ==", "dependencies": { "loose-envify": "^1.1.0" }, @@ -37062,7 +28428,8 @@ }, "node_modules/react-base16-styling": { "version": "0.9.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.9.1.tgz", + "integrity": "sha512-1s0CY1zRBOQ5M3T61wetEpvQmsYSNtWEcdYzyZNxKa8t7oDvaOn9d21xrGezGAHFWLM7SHcktPuPTrvoqxSfKw==", "dependencies": { "@babel/runtime": "^7.16.7", "@types/base16": "^1.0.2", @@ -37075,7 +28442,8 @@ }, "node_modules/react-beautiful-dnd": { "version": "13.1.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/react-beautiful-dnd/-/react-beautiful-dnd-13.1.1.tgz", + "integrity": "sha512-0Lvs4tq2VcrEjEgDXHjT98r+63drkKEgqyxdA7qD3mvKwga6a5SscbdLPO2IExotU1jW8L0Ksdl0Cj2AF67nPQ==", "dependencies": { "@babel/runtime": "^7.9.2", "css-box-model": "^1.2.0", @@ -37092,7 +28460,8 @@ }, "node_modules/react-big-calendar": { "version": "1.8.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-big-calendar/-/react-big-calendar-1.8.5.tgz", + "integrity": "sha512-cra8WPfoTSQthFfqxi0k9xm/Shv5jWSw19LkNzpSJcnQhP6XGes/eJjd8P8g/iwaJjXIWPpg3+HB5wO5wabRyA==", "dependencies": { "@babel/runtime": "^7.20.7", "clsx": "^1.2.1", @@ -37118,11 +28487,13 @@ }, "node_modules/react-big-calendar/node_modules/memoize-one": { "version": "6.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" }, "node_modules/react-bootstrap": { "version": "2.9.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-bootstrap/-/react-bootstrap-2.9.1.tgz", + "integrity": "sha512-ezgmh/ARCYp18LbZEqPp0ppvy+ytCmycDORqc8vXSKYV3cer4VH7OReV8uMOoKXmYzivJTxgzGHalGrHamryHA==", "dependencies": { "@babel/runtime": "^7.22.5", "@restart/hooks": "^0.4.9", @@ -37150,7 +28521,8 @@ }, "node_modules/react-burger-menu": { "version": "3.0.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-burger-menu/-/react-burger-menu-3.0.9.tgz", + "integrity": "sha512-Qy15hkCxwxNEKfqdAv43F+8ZSl+/c6KkqrBwGP0CesFYJ02onHtiUFUbuhSWCMtBH8/n0HhfekFlp/NyCdKYzQ==", "dependencies": { "browserify-optional": "^1.0.0", "classnames": "^2.2.6", @@ -37168,7 +28540,8 @@ }, "node_modules/react-checkbox-tree": { "version": "1.8.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-checkbox-tree/-/react-checkbox-tree-1.8.0.tgz", + "integrity": "sha512-ufC4aorihOvjLpvY1beab2hjVLGZbDTFRzw62foG0+th+KX7e/sdmWu/nD1ZS/U5Yr0rWGwedGH5GOtR0IkUXw==", "dependencies": { "classnames": "^2.2.5", "lodash": "^4.17.10", @@ -37181,14 +28554,16 @@ }, "node_modules/react-circular-progressbar": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-circular-progressbar/-/react-circular-progressbar-2.1.0.tgz", + "integrity": "sha512-xp4THTrod4aLpGy68FX/k1Q3nzrfHUjUe5v6FsdwXBl3YVMwgeXYQKDrku7n/D6qsJA9CuunarAboC2xCiKs1g==", "peerDependencies": { "react": "^0.14.0 || ^15.0.0 || ^16.0.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/react-color": { "version": "2.19.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-color/-/react-color-2.19.3.tgz", + "integrity": "sha512-LEeGE/ZzNLIsFWa1TMe8y5VYqr7bibneWmvJwm1pCn/eNmrabWDh659JSPn9BuaMpEfU83WTOJfnCcjDZwNQTA==", "dependencies": { "@icons/material": "^0.2.4", "lodash": "^4.17.15", @@ -37227,7 +28602,8 @@ }, "node_modules/react-copy-to-clipboard": { "version": "5.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-copy-to-clipboard/-/react-copy-to-clipboard-5.1.0.tgz", + "integrity": "sha512-k61RsNgAayIJNoy9yDsYzDe/yAZAzEbEgcz3DZMhF686LEyukcE1hzurxe85JandPUG+yTfGVFzuEw3xt8WP/A==", "dependencies": { "copy-to-clipboard": "^3.3.1", "prop-types": "^15.8.1" @@ -37236,6 +28612,15 @@ "react": "^15.3.0 || 16 || 17 || 18" } }, + "node_modules/react-css-styled": { + "version": "1.1.9", + "resolved": "https://registry.npmjs.org/react-css-styled/-/react-css-styled-1.1.9.tgz", + "integrity": "sha512-M7fJZ3IWFaIHcZEkoFOnkjdiUFmwd8d+gTh2bpqMOcnxy/0Gsykw4dsL4QBiKsxcGow6tETUa4NAUcmJF+/nfw==", + "dependencies": { + "css-styled": "~1.0.8", + "framework-utils": "^1.1.0" + } + }, "node_modules/react-datepicker": { "version": "4.25.0", "resolved": "https://registry.npmjs.org/react-datepicker/-/react-datepicker-4.25.0.tgz", @@ -37255,7 +28640,8 @@ }, "node_modules/react-dates": { "version": "21.8.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-dates/-/react-dates-21.8.0.tgz", + "integrity": "sha512-PPriGqi30CtzZmoHiGdhlA++YPYPYGCZrhydYmXXQ6RAvAsaONcPtYgXRTLozIOrsQ5mSo40+DiA5eOFHnZ6xw==", "dependencies": { "airbnb-prop-types": "^2.15.0", "consolidated-events": "^1.1.1 || ^2.0.0", @@ -37283,7 +28669,8 @@ }, "node_modules/react-datetime": { "version": "3.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-datetime/-/react-datetime-3.2.0.tgz", + "integrity": "sha512-w5XdeNIGzBht9CadaZIJhKUhEcDTgH0XokKxGPCxeeJRYL7B3HIKA8CM6Q0xej2JFJt0n5d+zi3maMwaY3262A==", "dependencies": { "prop-types": "^15.5.7" }, @@ -37294,7 +28681,8 @@ }, "node_modules/react-devtools-core": { "version": "4.28.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-devtools-core/-/react-devtools-core-4.28.5.tgz", + "integrity": "sha512-cq/o30z9W2Wb4rzBefjv5fBalHU0rJGZCHAkf/RHSBWSSYwh8PlQTqqOJmgIIbBtpj27T6FIPXeomIjZtCNVqA==", "peer": true, "dependencies": { "shell-quote": "^1.6.1", @@ -37303,7 +28691,8 @@ }, "node_modules/react-devtools-core/node_modules/ws": { "version": "7.5.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ws/-/ws-7.5.9.tgz", + "integrity": "sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==", "peer": true, "engines": { "node": ">=8.3.0" @@ -37323,7 +28712,8 @@ }, "node_modules/react-dnd": { "version": "16.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-dnd/-/react-dnd-16.0.1.tgz", + "integrity": "sha512-QeoM/i73HHu2XF9aKksIUuamHPDvRglEwdHL4jsp784BgUuWcg6mzfxT0QDdQz8Wj0qyRKx2eMg8iZtWvU4E2Q==", "dependencies": { "@react-dnd/invariant": "^4.0.1", "@react-dnd/shallowequal": "^4.0.1", @@ -37351,13 +28741,16 @@ }, "node_modules/react-dnd-html5-backend": { "version": "16.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-dnd-html5-backend/-/react-dnd-html5-backend-16.0.1.tgz", + "integrity": "sha512-Wu3dw5aDJmOGw8WjH1I1/yTH+vlXEL4vmjk5p+MHxP8HuHJS1lAGeIdG/hze1AvNeXWo/JgULV87LyQOr+r5jw==", "dependencies": { "dnd-core": "^16.0.1" } }, "node_modules/react-docgen": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/react-docgen/-/react-docgen-7.0.1.tgz", + "integrity": "sha512-rCz0HBIT0LWbIM+///LfRrJoTKftIzzwsYDf0ns5KwaEjejMHQRtphcns+IXFHDNY9pnz6G8l/JbbI6pD4EAIA==", "dev": true, "license": "MIT", "dependencies": { @@ -37386,12 +28779,14 @@ }, "node_modules/react-docgen/node_modules/@types/doctrine": { "version": "0.0.9", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/@types/doctrine/-/doctrine-0.0.9.tgz", + "integrity": "sha512-eOIHzCUSH7SMfonMG1LsC2f8vxBFtho6NGBznK41R84YzPuvSBzrhEps33IsQiOW9+VL6NQ9DbjQJznk/S4uRA==", + "dev": true }, "node_modules/react-dom": { "version": "18.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-dom/-/react-dom-18.2.0.tgz", + "integrity": "sha512-6IMTriUmvsjHUjNtEDudZfuDQUoWXVxKHhlEGSk81n4YFS+r/Kl99wXiwlVXtPBtJenozv2P+hxDsw9eA7Xo6g==", "dependencies": { "loose-envify": "^1.1.0", "scheduler": "^0.23.0" @@ -37402,7 +28797,8 @@ }, "node_modules/react-draggable": { "version": "4.4.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-draggable/-/react-draggable-4.4.5.tgz", + "integrity": "sha512-OMHzJdyJbYTZo4uQE393fHcqqPYsEtkjfMgvCHr6rejT+Ezn4OZbNyGH50vv+SunC1RMvwOTSWkEODQLzw1M9g==", "dependencies": { "clsx": "^1.1.1", "prop-types": "^15.8.1" @@ -37414,7 +28810,8 @@ }, "node_modules/react-dropzone": { "version": "14.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-dropzone/-/react-dropzone-14.2.3.tgz", + "integrity": "sha512-O3om8I+PkFKbxCukfIR3QAGftYXDZfOE2N1mr/7qebQJHs7U+/RSL/9xomJNpRg9kM5h9soQSdf0Gc7OHF5Fug==", "dependencies": { "attr-accept": "^2.2.2", "file-selector": "^0.6.0", @@ -37429,7 +28826,8 @@ }, "node_modules/react-easy-sort": { "version": "1.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-easy-sort/-/react-easy-sort-1.6.0.tgz", + "integrity": "sha512-zd9Nn90wVlZPEwJrpqElN87sf9GZnFR1StfjgNQVbSpR5QTSzCHjEYK6REuwq49Ip+76KOMSln9tg/ST2KLelg==", "dependencies": { "array-move": "^3.0.1", "tslib": "2.0.1" @@ -37444,7 +28842,8 @@ }, "node_modules/react-easy-sort/node_modules/array-move": { "version": "3.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/array-move/-/array-move-3.0.1.tgz", + "integrity": "sha512-H3Of6NIn2nNU1gsVDqDnYKY/LCdWvCMMOWifNGhKcVQgiZ6nOek39aESOvro6zmueP07exSl93YLvkN4fZOkSg==", "engines": { "node": ">=10" }, @@ -37454,7 +28853,8 @@ }, "node_modules/react-easy-sort/node_modules/tslib": { "version": "2.0.1", - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.0.1.tgz", + "integrity": "sha512-SgIkNheinmEBgx1IUNirK0TUD4X9yjjBRTqqjggWCU3pUEqIk3/Uwl3yRixYKT6WjQuGiwDv4NomL3wqRCj+CQ==" }, "node_modules/react-element-to-jsx-string": { "version": "15.0.0", @@ -37477,11 +28877,14 @@ }, "node_modules/react-fast-compare": { "version": "3.2.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-fast-compare/-/react-fast-compare-3.2.2.tgz", + "integrity": "sha512-nsO+KSNgo1SbJqJEYRE9ERzo7YtYbou/OqjSQKxV7jcKox7+usiUVZOAC+XnDOABXggQTno0Y1CpVnuWEc1boQ==" }, "node_modules/react-google-login": { "version": "5.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-google-login/-/react-google-login-5.2.2.tgz", + "integrity": "sha512-JUngfvaSMcOuV0lFff7+SzJ2qviuNMQdqlsDJkUM145xkGPVIfqWXq9Ui+2Dr6jdJWH5KYdynz9+4CzKjI5u6g==", + "deprecated": "Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.", "dependencies": { "@types/react": "*", "prop-types": "^15.6.0" @@ -37493,7 +28896,8 @@ }, "node_modules/react-hot-toast": { "version": "2.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-hot-toast/-/react-hot-toast-2.4.1.tgz", + "integrity": "sha512-j8z+cQbWIM5LY37pR6uZR6D4LfseplqnuAO4co4u8917hBUvXlEqyP1ZzqVLcqoyUesZZv/ImreoCeHVDpE5pQ==", "dependencies": { "goober": "^2.1.10" }, @@ -37507,7 +28911,8 @@ }, "node_modules/react-hotkeys-hook": { "version": "4.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-hotkeys-hook/-/react-hotkeys-hook-4.4.1.tgz", + "integrity": "sha512-sClBMBioFEgFGYLTWWRKvhxcCx1DRznd+wkFHwQZspnRBkHTgruKIHptlK/U/2DPX8BhHoRGzpMVWUXMmdZlmw==", "peerDependencies": { "react": ">=16.8.1", "react-dom": ">=16.8.1" @@ -37515,7 +28920,8 @@ }, "node_modules/react-i18next": { "version": "12.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-i18next/-/react-i18next-12.3.1.tgz", + "integrity": "sha512-5v8E2XjZDFzK7K87eSwC7AJcAkcLt5xYZ4+yTPDAW1i7C93oOY1dnr4BaQM7un4Hm+GmghuiPvevWwlca5PwDA==", "dependencies": { "@babel/runtime": "^7.20.6", "html-parse-stringify": "^3.0.1" @@ -37535,7 +28941,8 @@ }, "node_modules/react-image-annotation": { "version": "0.9.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-image-annotation/-/react-image-annotation-0.9.10.tgz", + "integrity": "sha512-+g8RXqGoaCXfZfhGPG1MeYSo4Bn5iTwgL8z+Gl4P+j1CFHH9yQGGV6WlgCy8v/FAC6JyQ2ThPwBoj65kSq7j2w==", "dependencies": { "styled-components": "^3.1.6" }, @@ -37547,11 +28954,13 @@ }, "node_modules/react-is": { "version": "16.13.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==" }, "node_modules/react-json-tree": { "version": "0.18.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-json-tree/-/react-json-tree-0.18.0.tgz", + "integrity": "sha512-Qe6HKSXrr++n9Y31nkRJ3XvQMATISpqigH1vEKhLwB56+nk5thTP0ITThpjxY6ZG/ubpVq/aEHIcyLP/OPHxeA==", "dependencies": { "@babel/runtime": "^7.20.6", "@types/lodash": "^4.14.191", @@ -37564,7 +28973,8 @@ }, "node_modules/react-json-view": { "version": "1.21.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-json-view/-/react-json-view-1.21.3.tgz", + "integrity": "sha512-13p8IREj9/x/Ye4WI/JpjhoIwuzEgUAtgJZNBJckfzJt1qyh24BdTm6UQNGnyTq9dapQdrqvquZTo3dz1X6Cjw==", "dependencies": { "flux": "^4.0.1", "react-base16-styling": "^0.6.0", @@ -37578,7 +28988,8 @@ }, "node_modules/react-json-view/node_modules/react-base16-styling": { "version": "0.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-base16-styling/-/react-base16-styling-0.6.0.tgz", + "integrity": "sha512-yvh/7CArceR/jNATXOKDlvTnPKPmGZz7zsenQ3jUwLzHkNUR0CvY3yGYJbWJ/nnxsL8Sgmt5cO3/SILVuPO6TQ==", "dependencies": { "base16": "^1.0.0", "lodash.curry": "^4.0.1", @@ -37588,6 +28999,8 @@ }, "node_modules/react-konva": { "version": "18.2.10", + "resolved": "https://registry.npmjs.org/react-konva/-/react-konva-18.2.10.tgz", + "integrity": "sha512-ohcX1BJINL43m4ynjZ24MxFI1syjBdrXhqVxYVDw2rKgr3yuS0x/6m1Y2Z4sl4T/gKhfreBx8KHisd0XC6OT1g==", "funding": [ { "type": "patreon", @@ -37602,7 +29015,6 @@ "url": "https://github.com/sponsors/lavrton" } ], - "license": "MIT", "peer": true, "dependencies": { "@types/react-reconciler": "^0.28.2", @@ -37618,7 +29030,8 @@ }, "node_modules/react-konva/node_modules/@types/react-reconciler": { "version": "0.28.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/react-reconciler/-/react-reconciler-0.28.8.tgz", + "integrity": "sha512-SN9c4kxXZonFhbX4hJrZy37yw9e7EIxcpHCxQv5JUS18wDE5ovkQKlqQEkufdJCCMfuI9BnjUJvhYeJ9x5Ra7g==", "peer": true, "dependencies": { "@types/react": "*" @@ -37626,7 +29039,8 @@ }, "node_modules/react-konva/node_modules/react-reconciler": { "version": "0.29.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.29.0.tgz", + "integrity": "sha512-wa0fGj7Zht1EYMRhKWwoo1H9GApxYLBuhoAuXN0TlltESAjDssB+Apf0T/DngVqaMyPypDmabL37vw/2aRM98Q==", "peer": true, "dependencies": { "loose-envify": "^1.1.0", @@ -37641,7 +29055,8 @@ }, "node_modules/react-lazy-load-image-component": { "version": "1.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-lazy-load-image-component/-/react-lazy-load-image-component-1.6.0.tgz", + "integrity": "sha512-8KFkDTgjh+0+PVbH+cx0AgxLGbdTsxWMnxXzU5HEUztqewk9ufQAu8cstjZhyvtMIPsdMcPZfA0WAa7HtjQbBQ==", "dependencies": { "lodash.debounce": "^4.0.8", "lodash.throttle": "^4.1.1" @@ -37653,7 +29068,8 @@ }, "node_modules/react-lazyload": { "version": "3.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-lazyload/-/react-lazyload-3.2.0.tgz", + "integrity": "sha512-zJlrG8QyVZz4+xkYZH5v1w3YaP5wEFaYSUWC4CT9UXfK75IfRAIEdnyIUF+dXr3kX2MOtL1lUaZmaQZqrETwgw==", "peerDependencies": { "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" @@ -37661,11 +29077,13 @@ }, "node_modules/react-lifecycles-compat": { "version": "3.0.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-lifecycles-compat/-/react-lifecycles-compat-3.0.4.tgz", + "integrity": "sha512-fBASbA6LnOU9dOU2eW7aQ8xmYBSXUIWr+UmF9b1efZBazGNO+rcXT/icdKnYm2pTwcRylVUYwW7H1PHfLekVzA==" }, "node_modules/react-loading-skeleton": { "version": "3.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-loading-skeleton/-/react-loading-skeleton-3.3.1.tgz", + "integrity": "sha512-NilqqwMh2v9omN7LteiDloEVpFyMIa0VGqF+ukqp0ncVlYu1sKYbYGX9JEl+GtOT9TKsh04zCHAbavnQ2USldA==", "peerDependencies": { "react": ">=16.8.0" } @@ -37741,7 +29159,8 @@ }, "node_modules/react-mentions": { "version": "4.4.10", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/react-mentions/-/react-mentions-4.4.10.tgz", + "integrity": "sha512-JHiQlgF1oSZR7VYPjq32wy97z1w1oE4x10EuhKjPr4WUKhVzG1uFQhQjKqjQkbVqJrmahf+ldgBTv36NrkpKpA==", "dependencies": { "@babel/runtime": "7.4.5", "invariant": "^2.2.4", @@ -37755,18 +29174,21 @@ }, "node_modules/react-mentions/node_modules/@babel/runtime": { "version": "7.4.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.4.5.tgz", + "integrity": "sha512-TuI4qpWZP6lGOGIuGWtp9sPluqYICmbk8T/1vpSysqJxRPkudh/ofFWyqdcMsDf2s7KvDL4/YHgKyvcS3g9CJQ==", "dependencies": { "regenerator-runtime": "^0.13.2" } }, "node_modules/react-mentions/node_modules/regenerator-runtime": { "version": "0.13.11", - "license": "MIT" + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==" }, "node_modules/react-moment-proptypes": { "version": "1.8.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-moment-proptypes/-/react-moment-proptypes-1.8.1.tgz", + "integrity": "sha512-Er940DxWoObfIqPrZNfwXKugjxMIuk1LAuEzn23gytzV6hKS/sw108wibi9QubfMN4h+nrlje8eUCSbQRJo2fQ==", "dependencies": { "moment": ">=1.6.0" }, @@ -37774,9 +29196,30 @@ "moment": ">=1.6.0" } }, + "node_modules/react-moveable": { + "version": "0.54.2", + "resolved": "https://registry.npmjs.org/react-moveable/-/react-moveable-0.54.2.tgz", + "integrity": "sha512-NGaVLbn0i9pb3+BWSKGWFqI/Mgm4+WMeWHxXXQ4Qi1tHxWCXrUrbGvpxEpt69G/hR7dez+/m68ex+fabjnvcUg==", + "dependencies": { + "@daybrush/utils": "^1.13.0", + "@egjs/agent": "^2.2.1", + "@egjs/children-differ": "^1.0.1", + "@egjs/list-differ": "^1.0.0", + "@scena/dragscroll": "^1.4.0", + "@scena/event-emitter": "^1.0.5", + "@scena/matrix": "^1.1.1", + "css-to-mat": "^1.1.1", + "framework-utils": "^1.1.0", + "gesto": "^1.19.0", + "overlap-area": "^1.1.0", + "react-css-styled": "^1.1.9", + "react-selecto": "^1.25.0" + } + }, "node_modules/react-multi-select-component": { "version": "4.3.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-multi-select-component/-/react-multi-select-component-4.3.4.tgz", + "integrity": "sha512-Ui/bzCbROF4WfKq3OKWyQJHmy/bd1mW7CQM+L83TfiltuVvHElhKEyPM3JzO9urIcWplBUKv+kyxqmEnd9jPcA==", "peerDependencies": { "react": "^16 || ^17 || ^18", "react-dom": "^16 || ^17 || ^18" @@ -37784,7 +29227,8 @@ }, "node_modules/react-native": { "version": "0.72.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-native/-/react-native-0.72.7.tgz", + "integrity": "sha512-dqVFojOO9rOvyFbbM3/v9/GJR355OSuBhEY4NQlMIRc2w0Xch5MT/2uPoq3+OvJ+5h7a8LFAco3fucSffG0FbA==", "peer": true, "dependencies": { "@jest/create-cache-key-function": "^29.2.1", @@ -37836,7 +29280,8 @@ }, "node_modules/react-native/node_modules/@jest/types": { "version": "26.6.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-26.6.2.tgz", + "integrity": "sha512-fC6QCp7Sc5sX6g8Tvbmj4XUTbyrik0akgRy03yjXbQaBWWNWGE7SGtJk98m0N8nzegD/7SggrUlivxo5ax4KWQ==", "peer": true, "dependencies": { "@types/istanbul-lib-coverage": "^2.0.0", @@ -37851,7 +29296,8 @@ }, "node_modules/react-native/node_modules/@types/yargs": { "version": "15.0.19", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-15.0.19.tgz", + "integrity": "sha512-2XUaGVmyQjgyAZldf0D0c14vvo/yv0MhQBSTJcejMMaitsn3nxCB6TmH4G0ZQf+uxROOa9mpanoSm8h6SG/1ZA==", "peer": true, "dependencies": { "@types/yargs-parser": "*" @@ -37859,7 +29305,8 @@ }, "node_modules/react-native/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "peer": true, "dependencies": { "color-convert": "^2.0.1" @@ -37873,7 +29320,8 @@ }, "node_modules/react-native/node_modules/chalk": { "version": "4.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "peer": true, "dependencies": { "ansi-styles": "^4.1.0", @@ -37888,7 +29336,8 @@ }, "node_modules/react-native/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "peer": true, "engines": { "node": ">=8" @@ -37896,7 +29345,8 @@ }, "node_modules/react-native/node_modules/mkdirp": { "version": "0.5.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", + "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", "peer": true, "dependencies": { "minimist": "^1.2.6" @@ -37907,7 +29357,8 @@ }, "node_modules/react-native/node_modules/pretty-format": { "version": "26.6.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-26.6.2.tgz", + "integrity": "sha512-7AeGuCYNGmycyQbCqd/3PWH4eOoX/OiCa0uphp57NVTeAGdJGaAliecxwBDHYQCIvrW7aDBZCYeNTP/WX69mkg==", "peer": true, "dependencies": { "@jest/types": "^26.6.2", @@ -37921,7 +29372,8 @@ }, "node_modules/react-native/node_modules/promise": { "version": "8.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", "peer": true, "dependencies": { "asap": "~2.0.6" @@ -37929,12 +29381,14 @@ }, "node_modules/react-native/node_modules/react-is": { "version": "17.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==", "peer": true }, "node_modules/react-native/node_modules/react-refresh": { "version": "0.4.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-refresh/-/react-refresh-0.4.3.tgz", + "integrity": "sha512-Hwln1VNuGl/6bVwnd0Xdn1e84gT/8T9aYNL+HAKDArLCS7LWjwr7StE30IEYbIkx0Vi3vs+coQxe+SQDbGbbpA==", "peer": true, "engines": { "node": ">=0.10.0" @@ -37942,12 +29396,14 @@ }, "node_modules/react-native/node_modules/regenerator-runtime": { "version": "0.13.11", - "license": "MIT", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.13.11.tgz", + "integrity": "sha512-kY1AZVr2Ra+t+piVaJ4gxaFaReZVH40AKNo7UCX6W+dEwBo/2oZJzqfuN1qLq1oL45o56cPaTXELwrTh8Fpggg==", "peer": true }, "node_modules/react-native/node_modules/scheduler": { "version": "0.24.0-canary-efb381bbf-20230505", - "license": "MIT", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.24.0-canary-efb381bbf-20230505.tgz", + "integrity": "sha512-ABvovCDe/k9IluqSh4/ISoq8tIJnW8euVAWYt5j/bg6dRnqwQwiGO1F/V4AyK96NGF/FB04FhOUDuWj8IKfABA==", "peer": true, "dependencies": { "loose-envify": "^1.1.0" @@ -37955,7 +29411,8 @@ }, "node_modules/react-native/node_modules/supports-color": { "version": "7.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "peer": true, "dependencies": { "has-flag": "^4.0.0" @@ -37966,7 +29423,8 @@ }, "node_modules/react-onclickoutside": { "version": "6.13.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-onclickoutside/-/react-onclickoutside-6.13.0.tgz", + "integrity": "sha512-ty8So6tcUpIb+ZE+1HAhbLROvAIJYyJe/1vRrrcmW+jLsaM+/powDRqxzo6hSh9CuRZGSL1Q8mvcF5WRD93a0A==", "funding": { "type": "individual", "url": "https://github.com/Pomax/react-onclickoutside/blob/master/FUNDING.md" @@ -37978,7 +29436,8 @@ }, "node_modules/react-outside-click-handler": { "version": "1.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-outside-click-handler/-/react-outside-click-handler-1.3.0.tgz", + "integrity": "sha512-Te/7zFU0oHpAnctl//pP3hEAeobfeHMyygHB8MnjP6sX5OR8KHT1G3jmLsV3U9RnIYo+Yn+peJYWu+D5tUS8qQ==", "dependencies": { "airbnb-prop-types": "^2.15.0", "consolidated-events": "^1.1.1 || ^2.0.0", @@ -37993,7 +29452,8 @@ }, "node_modules/react-overlays": { "version": "5.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-overlays/-/react-overlays-5.2.1.tgz", + "integrity": "sha512-GLLSOLWr21CqtJn8geSwQfoJufdt3mfdsnIiQswouuQ2MMPns+ihZklxvsTDKD3cR2tF8ELbi5xUsvqVhR6WvA==", "dependencies": { "@babel/runtime": "^7.13.8", "@popperjs/core": "^2.11.6", @@ -38011,7 +29471,8 @@ }, "node_modules/react-pdf": { "version": "6.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-pdf/-/react-pdf-6.2.2.tgz", + "integrity": "sha512-huNWhzzTAb3t1mWA6WOR9yQRCbcZ6uXCGC46cEAgEhGqvXTB6RcHm+1DS2r9OdPNUZ9SZTuR6jZ1BNOJIiEing==", "dependencies": { "@babel/runtime": "^7.0.0", "clsx": "^1.2.1", @@ -38055,7 +29516,8 @@ }, "node_modules/react-plotly.js": { "version": "2.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-plotly.js/-/react-plotly.js-2.6.0.tgz", + "integrity": "sha512-g93xcyhAVCSt9kV1svqG1clAEdL6k3U+jjuSzfTV7owaSU9Go6Ph8bl25J+jKfKvIGAEYpe4qj++WHJuc9IaeA==", "dependencies": { "prop-types": "^15.8.1" }, @@ -38066,7 +29528,8 @@ }, "node_modules/react-popper": { "version": "2.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-popper/-/react-popper-2.3.0.tgz", + "integrity": "sha512-e1hj8lL3uM+sgSR4Lxzn5h1GxBlpa4CQz0XLF8kx4MDrDRWY0Ena4c97PUeSX9i5W3UAfDP0z0FXCTQkoXUl3Q==", "dependencies": { "react-fast-compare": "^3.0.1", "warning": "^4.0.2" @@ -38079,7 +29542,8 @@ }, "node_modules/react-portal": { "version": "4.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-portal/-/react-portal-4.2.2.tgz", + "integrity": "sha512-vS18idTmevQxyQpnde0Td6ZcUlv+pD8GTyR42n3CHUQq9OHi1C4jDE4ZWEbEsrbrLRhSECYiao58cvocwMtP7Q==", "dependencies": { "prop-types": "^15.5.8" }, @@ -38090,7 +29554,8 @@ }, "node_modules/react-qr-reader": { "version": "2.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-qr-reader/-/react-qr-reader-2.2.1.tgz", + "integrity": "sha512-EL5JEj53u2yAOgtpAKAVBzD/SiKWn0Bl7AZy6ZrSf1lub7xHwtaXe6XSx36Wbhl1VMGmvmrwYMRwO1aSCT2fwA==", "dependencies": { "jsqr": "^1.2.0", "prop-types": "^15.7.2", @@ -38103,7 +29568,8 @@ }, "node_modules/react-reconciler": { "version": "0.27.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-reconciler/-/react-reconciler-0.27.0.tgz", + "integrity": "sha512-HmMDKciQjYmBRGuuhIaKA1ba/7a+UsM5FzOZsMO2JYHt9Jh8reCb7j1eDC95NOyUlKM9KRyvdx0flBuDvYSBoA==", "peer": true, "dependencies": { "loose-envify": "^1.1.0", @@ -38118,7 +29584,8 @@ }, "node_modules/react-reconciler/node_modules/scheduler": { "version": "0.21.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.21.0.tgz", + "integrity": "sha512-1r87x5fz9MXqswA2ERLo0EbOAU74DpIUO090gIasYTqlVoJeMcl+Z1Rg7WHz+qtPujhS/hGIt9kxZOYBV3faRQ==", "peer": true, "dependencies": { "loose-envify": "^1.1.0" @@ -38126,7 +29593,8 @@ }, "node_modules/react-redux": { "version": "7.2.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-redux/-/react-redux-7.2.9.tgz", + "integrity": "sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==", "dependencies": { "@babel/runtime": "^7.15.4", "@types/react-redux": "^7.1.20", @@ -38149,19 +29617,22 @@ }, "node_modules/react-redux/node_modules/react-is": { "version": "17.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/react-is/-/react-is-17.0.2.tgz", + "integrity": "sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==" }, "node_modules/react-refresh": { "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, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/react-remove-scroll": { "version": "2.5.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-remove-scroll/-/react-remove-scroll-2.5.5.tgz", + "integrity": "sha512-ImKhrzJJsyXJfBZ4bzu8Bwpka14c/fQt0k+cyFp/PBhTfyDnU5hjOtM4AG/0AMyy8oKzOTR0lDgJIM7pYXI0kw==", "dependencies": { "react-remove-scroll-bar": "^2.3.3", "react-style-singleton": "^2.2.1", @@ -38184,7 +29655,8 @@ }, "node_modules/react-remove-scroll-bar": { "version": "2.3.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-remove-scroll-bar/-/react-remove-scroll-bar-2.3.4.tgz", + "integrity": "sha512-63C4YQBUt0m6ALadE9XV56hV8BgJWDmmTPY758iIJjfQKt2nYwoUrPk0LXRXcB/yIj82T1/Ixfdpdk68LwIB0A==", "dependencies": { "react-style-singleton": "^2.2.1", "tslib": "^2.0.0" @@ -38204,7 +29676,8 @@ }, "node_modules/react-rnd": { "version": "10.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-rnd/-/react-rnd-10.4.1.tgz", + "integrity": "sha512-0m887AjQZr6p2ADLNnipquqsDq4XJu/uqVqI3zuoGD19tRm6uB83HmZWydtkilNp5EWsOHbLGF4IjWMdd5du8Q==", "dependencies": { "re-resizable": "6.9.6", "react-draggable": "4.4.5", @@ -38217,11 +29690,13 @@ }, "node_modules/react-rnd/node_modules/tslib": { "version": "2.3.1", - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.3.1.tgz", + "integrity": "sha512-77EbyPPpMz+FRFRuAFlWMtmgUWGe9UOG2Z25NqCwiIjRhOf5iKGuzSe5P2w1laq+FkRy4p+PCuVkJSGkzTEKVw==" }, "node_modules/react-router": { "version": "6.20.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-router/-/react-router-6.20.1.tgz", + "integrity": "sha512-ccvLrB4QeT5DlaxSFFYi/KR8UMQ4fcD8zBcR71Zp1kaYTC5oJKYAp1cbavzGrogwxca+ubjkd7XjFZKBW8CxPA==", "dependencies": { "@remix-run/router": "1.13.1" }, @@ -38234,7 +29709,8 @@ }, "node_modules/react-router-dom": { "version": "6.20.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-router-dom/-/react-router-dom-6.20.1.tgz", + "integrity": "sha512-npzfPWcxfQN35psS7rJgi/EW0Gx6EsNjfdJSAk73U/HqMEJZ2k/8puxfwHFgDQhBGmS3+sjnGbMdMSV45axPQw==", "dependencies": { "@remix-run/router": "1.13.1", "react-router": "6.20.1" @@ -38249,7 +29725,8 @@ }, "node_modules/react-select": { "version": "5.8.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-select/-/react-select-5.8.0.tgz", + "integrity": "sha512-TfjLDo58XrhP6VG5M/Mi56Us0Yt8X7xD6cDybC7yoRMUNm7BGO7qk8J0TLQOua/prb8vUOtsfnXZwfm30HGsAA==", "dependencies": { "@babel/runtime": "^7.12.0", "@emotion/cache": "^11.4.0", @@ -38268,7 +29745,8 @@ }, "node_modules/react-select-search": { "version": "4.1.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-select-search/-/react-select-search-4.1.7.tgz", + "integrity": "sha512-pU7ONAdK+bmz2tbhBWYQv9m5mnXOn8yImuiy+5UhimIG80d5iKv3nSYJIjJWjDbdrrdoXiCRwQm8xbA8llTjmQ==", "peerDependencies": { "prop-types": "^15.8.1", "react": "^18.0.1 || ^17.0.1", @@ -38277,18 +29755,21 @@ }, "node_modules/react-select/node_modules/memoize-one": { "version": "6.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/memoize-one/-/memoize-one-6.0.0.tgz", + "integrity": "sha512-rkpe71W0N0c0Xz6QD0eJETuWAJGnJ9afsl1srmwPrI+yBCkge5EycXXbYRyvL29zZVUWQCY7InPRCv3GDXuZNw==" }, "node_modules/react-selecto": { "version": "1.26.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-selecto/-/react-selecto-1.26.3.tgz", + "integrity": "sha512-Ubik7kWSnZyQEBNro+1k38hZaI1tJarE+5aD/qsqCOA1uUBSjgKVBy3EWRzGIbdmVex7DcxznFZLec/6KZNvwQ==", "dependencies": { "selecto": "~1.26.3" } }, "node_modules/react-shallow-renderer": { "version": "16.15.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-shallow-renderer/-/react-shallow-renderer-16.15.0.tgz", + "integrity": "sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==", "peer": true, "dependencies": { "object-assign": "^4.1.1", @@ -38300,7 +29781,8 @@ }, "node_modules/react-spring": { "version": "9.7.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-spring/-/react-spring-9.7.3.tgz", + "integrity": "sha512-oTxDpFV5gzq7jQX6+bU0SVq+vX8VnuuT5c8Zwn6CpDErOPvCmV+DRkPiEBtaL3Ozgzwiy5yFx83N0h303j/r3A==", "dependencies": { "@react-spring/core": "~9.7.3", "@react-spring/konva": "~9.7.3", @@ -38316,7 +29798,8 @@ }, "node_modules/react-style-singleton": { "version": "2.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-style-singleton/-/react-style-singleton-2.2.1.tgz", + "integrity": "sha512-ZWj0fHEMyWkHzKYUr2Bs/4zU6XLmq9HsgBURm7g5pAVfyn49DgUiNgY2d4lXRlYSiCif9YBGpQleewkcqddc7g==", "dependencies": { "get-nonce": "^1.0.0", "invariant": "^2.2.4", @@ -38337,7 +29820,8 @@ }, "node_modules/react-table": { "version": "7.8.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-table/-/react-table-7.8.0.tgz", + "integrity": "sha512-hNaz4ygkZO4bESeFfnfOft73iBUj8K5oKi1EcSHPAibEydfsX2MyU6Z8KCr3mv3C9Kqqh71U+DhZkFvibbnPbA==", "funding": { "type": "github", "url": "https://github.com/sponsors/tannerlinsley" @@ -38348,7 +29832,8 @@ }, "node_modules/react-table-plugins": { "version": "1.3.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-table-plugins/-/react-table-plugins-1.3.4.tgz", + "integrity": "sha512-o7iXf4w7xKL9VChpP1XPjSpMpxV+Gun1wLjBrLdAWaByX0ctDQzY0G/FQFUgdtMIbCLek3iJ/kbpfi1kuLx2kg==", "peerDependencies": { "react": "^16.8.3 || ^17.0.0 || ^18.0.0", "react-table": "^7.0.5" @@ -38356,7 +29841,8 @@ }, "node_modules/react-textarea-autosize": { "version": "8.5.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-textarea-autosize/-/react-textarea-autosize-8.5.3.tgz", + "integrity": "sha512-XT1024o2pqCuZSuBt9FwHlaDeNtVrtCXu0Rnz88t1jUGheCLa3PhjE1GH8Ctm2axEtvdCl5SUHYschyQ0L5QHQ==", "dependencies": { "@babel/runtime": "^7.20.13", "use-composed-ref": "^1.3.0", @@ -38371,7 +29857,8 @@ }, "node_modules/react-tooltip": { "version": "5.24.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-tooltip/-/react-tooltip-5.24.0.tgz", + "integrity": "sha512-HjstgpOrUwP4eN6mHU4EThpbxVuKO5SvqumRt1aAcPq0ya+pIVVxlwltndtdIIMBJ7w3jnN05vNfcfh2sxE2mQ==", "dependencies": { "@floating-ui/dom": "^1.0.0", "classnames": "^2.3.0" @@ -38383,7 +29870,8 @@ }, "node_modules/react-transition-group": { "version": "4.4.5", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/react-transition-group/-/react-transition-group-4.4.5.tgz", + "integrity": "sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==", "dependencies": { "@babel/runtime": "^7.5.5", "dom-helpers": "^5.0.1", @@ -38397,7 +29885,8 @@ }, "node_modules/react-use-measure": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-use-measure/-/react-use-measure-2.1.1.tgz", + "integrity": "sha512-nocZhN26cproIiIduswYpV5y5lQpSQS1y/4KuvUCjSKmw7ZWIS/+g3aFnX3WdBkyuGUtTLif3UTqnLLhbDoQig==", "peer": true, "dependencies": { "debounce": "^1.2.1" @@ -38409,7 +29898,8 @@ }, "node_modules/react-virtuoso": { "version": "4.6.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-virtuoso/-/react-virtuoso-4.6.2.tgz", + "integrity": "sha512-vvlqvzPif+MvBrJ09+hJJrVY0xJK9yran+A+/1iwY78k0YCVKsyoNPqoLxOxzYPggspNBNXqUXEcvckN29OxyQ==", "engines": { "node": ">=10" }, @@ -38420,7 +29910,8 @@ }, "node_modules/react-with-direction": { "version": "1.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-with-direction/-/react-with-direction-1.4.0.tgz", + "integrity": "sha512-ybHNPiAmaJpoWwugwqry9Hd1Irl2hnNXlo/2SXQBwbLn/jGMauMS2y9jw+ydyX5V9ICryCqObNSthNt5R94xpg==", "dependencies": { "airbnb-prop-types": "^2.16.0", "brcast": "^2.0.2", @@ -38438,14 +29929,16 @@ }, "node_modules/react-with-direction/node_modules/deepmerge": { "version": "1.5.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-1.5.2.tgz", + "integrity": "sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==", "engines": { "node": ">=0.10.0" } }, "node_modules/react-with-styles": { "version": "4.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-with-styles/-/react-with-styles-4.2.0.tgz", + "integrity": "sha512-tZCTY27KriRNhwHIbg1NkSdTTOSfXDg6Z7s+Q37mtz0Ym7Sc7IOr3PzVt4qJhJMW6Nkvfi3g34FuhtiGAJCBQA==", "dependencies": { "airbnb-prop-types": "^2.14.0", "hoist-non-react-statics": "^3.2.1", @@ -38461,7 +29954,8 @@ }, "node_modules/react-with-styles-interface-css": { "version": "6.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-with-styles-interface-css/-/react-with-styles-interface-css-6.0.0.tgz", + "integrity": "sha512-6khSG1Trf4L/uXOge/ZAlBnq2O2PEXlQEqAhCRbvzaQU4sksIkdwpCPEl6d+DtP3+IdhyffTWuHDO9lhe1iYvA==", "dependencies": { "array.prototype.flat": "^1.2.1", "global-cache": "^1.2.1" @@ -38473,7 +29967,8 @@ }, "node_modules/react-zdog": { "version": "1.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-zdog/-/react-zdog-1.2.2.tgz", + "integrity": "sha512-Ix7ALha91aOEwiHuxumCeYbARS5XNpc/w0v145oGkM6poF/CvhKJwzLhM5sEZbtrghMA+psAhOJkCTzJoseicA==", "peer": true, "dependencies": { "react": "^18.2.0", @@ -38483,7 +29978,8 @@ }, "node_modules/react-zoom-pan-pinch": { "version": "2.6.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/react-zoom-pan-pinch/-/react-zoom-pan-pinch-2.6.1.tgz", + "integrity": "sha512-4Cgdnn6OwN4DomY/E9NpAf0TyCtslEgwdYn96ZV/f5LKuw/FE3gcIBJiaKFmMGThDGV0yKN5mzO8noi34+UE4Q==", "engines": { "node": ">=8", "npm": ">=5" @@ -38495,15 +29991,17 @@ }, "node_modules/reactcss": { "version": "1.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/reactcss/-/reactcss-1.2.3.tgz", + "integrity": "sha512-KiwVUcFu1RErkI97ywr8nvx8dNOpT03rbnma0SSalTYjkrPYaEajR4a/MRt6DZ46K6arDRbWMNHF+xH7G7n/8A==", "dependencies": { "lodash": "^4.0.1" } }, "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, - "license": "MIT", "dependencies": { "@types/normalize-package-data": "^2.4.0", "normalize-package-data": "^2.5.0", @@ -38516,8 +30014,9 @@ }, "node_modules/read-pkg-up": { "version": "7.0.1", + "resolved": "https://registry.npmjs.org/read-pkg-up/-/read-pkg-up-7.0.1.tgz", + "integrity": "sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==", "dev": true, - "license": "MIT", "dependencies": { "find-up": "^4.1.0", "read-pkg": "^5.2.0", @@ -38532,8 +30031,9 @@ }, "node_modules/read-pkg-up/node_modules/find-up": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "license": "MIT", "dependencies": { "locate-path": "^5.0.0", "path-exists": "^4.0.0" @@ -38544,8 +30044,9 @@ }, "node_modules/read-pkg-up/node_modules/locate-path": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "license": "MIT", "dependencies": { "p-locate": "^4.1.0" }, @@ -38555,8 +30056,9 @@ }, "node_modules/read-pkg-up/node_modules/p-limit": { "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, - "license": "MIT", "dependencies": { "p-try": "^2.0.0" }, @@ -38569,8 +30071,9 @@ }, "node_modules/read-pkg-up/node_modules/p-locate": { "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "license": "MIT", "dependencies": { "p-limit": "^2.2.0" }, @@ -38580,21 +30083,24 @@ }, "node_modules/read-pkg-up/node_modules/type-fest": { "version": "0.8.1", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.8.1.tgz", + "integrity": "sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/read-pkg/node_modules/hosted-git-info": { "version": "2.8.9", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true }, "node_modules/read-pkg/node_modules/normalize-package-data": { "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, - "license": "BSD-2-Clause", "dependencies": { "hosted-git-info": "^2.1.4", "resolve": "^1.10.0", @@ -38604,23 +30110,26 @@ }, "node_modules/read-pkg/node_modules/semver": { "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "license": "ISC", "bin": { "semver": "bin/semver" } }, "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, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=8" } }, "node_modules/readable-stream": { "version": "3.6.2", - "license": "MIT", + "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", @@ -38632,7 +30141,8 @@ }, "node_modules/readdirp": { "version": "3.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dependencies": { "picomatch": "^2.2.1" }, @@ -38642,13 +30152,15 @@ }, "node_modules/readline": { "version": "1.3.0", - "license": "BSD", + "resolved": "https://registry.npmjs.org/readline/-/readline-1.3.0.tgz", + "integrity": "sha512-k2d6ACCkiNYz222Fs/iNze30rRJ1iIicW7JuX/7/cozvih6YCkFZH+J6mAFDVgv0dRBaAyr4jDqC95R2y4IADg==", "peer": true }, "node_modules/recast": { "version": "0.23.4", + "resolved": "https://registry.npmjs.org/recast/-/recast-0.23.4.tgz", + "integrity": "sha512-qtEDqIZGVcSZCHniWwZWbRy79Dc6Wp3kT/UmDA2RJKBPg7+7k51aQBZirHmUGn5uvHf2rg8DkjizrN26k61ATw==", "dev": true, - "license": "MIT", "dependencies": { "assert": "^2.0.0", "ast-types": "^0.16.1", @@ -38662,8 +30174,9 @@ }, "node_modules/recast/node_modules/ast-types": { "version": "0.16.1", + "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.16.1.tgz", + "integrity": "sha512-6t10qk83GOG8p0vKmaCr8eiilZwO171AvbROMtvvNiwrTly62t+7XkA8RdIIVbpMhCASAsxgAzdRSwh6nw/5Dg==", "dev": true, - "license": "MIT", "dependencies": { "tslib": "^2.0.1" }, @@ -38673,16 +30186,18 @@ }, "node_modules/recast/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, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "node_modules/rechoir": { "version": "0.8.0", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", + "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", "dev": true, - "license": "MIT", "dependencies": { "resolve": "^1.20.0" }, @@ -38692,8 +30207,9 @@ }, "node_modules/redent": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/redent/-/redent-3.0.0.tgz", + "integrity": "sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==", "dev": true, - "license": "MIT", "dependencies": { "indent-string": "^4.0.0", "strip-indent": "^3.0.0" @@ -38704,8 +30220,9 @@ }, "node_modules/redent/node_modules/strip-indent": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-3.0.0.tgz", + "integrity": "sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==", "dev": true, - "license": "MIT", "dependencies": { "min-indent": "^1.0.0" }, @@ -38715,15 +30232,17 @@ }, "node_modules/redux": { "version": "4.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/redux/-/redux-4.2.1.tgz", + "integrity": "sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==", "dependencies": { "@babel/runtime": "^7.9.2" } }, "node_modules/reflect.getprototypeof": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.4.tgz", + "integrity": "sha512-ECkTw8TmJwW60lOTR+ZkODISW6RQ8+2CL3COqtiJKLd6MmB45hN51HprHFziKLGkAuTGQhBb91V8cy+KHlaCjw==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -38741,7 +30260,8 @@ }, "node_modules/reflect.ownkeys": { "version": "0.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/reflect.ownkeys/-/reflect.ownkeys-0.2.0.tgz", + "integrity": "sha512-qOLsBKHCpSOFKK1NUOCGC5VyeufB6lEsFe92AL2bhIJsacZS1qdoOZSbPk3MYKuT2cFlRDnulKXuuElIrMjGUg==" }, "node_modules/regenerate": { "version": "1.4.2", @@ -38749,7 +30269,8 @@ }, "node_modules/regenerate-unicode-properties": { "version": "10.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/regenerate-unicode-properties/-/regenerate-unicode-properties-10.1.1.tgz", + "integrity": "sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==", "dependencies": { "regenerate": "^1.4.2" }, @@ -38759,7 +30280,8 @@ }, "node_modules/regenerator-runtime": { "version": "0.14.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==" }, "node_modules/regenerator-transform": { "version": "0.15.2", @@ -38770,7 +30292,8 @@ }, "node_modules/regexp.prototype.flags": { "version": "1.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.1.tgz", + "integrity": "sha512-sy6TXMN+hnP/wMy+ISxg3krXx7BAtWVO4UouuCN/ziM9UEne0euamVNafDfvC83bRNr95y0V5iijeDQFUNpvrg==", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -38817,12 +30340,14 @@ "node_modules/regl": { "name": "@plotly/regl", "version": "2.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@plotly/regl/-/regl-2.1.2.tgz", + "integrity": "sha512-Mdk+vUACbQvjd0m/1JJjOOafmkp/EpmHjISsopEz5Av44CBq7rPC05HHNbYGKVyNUF2zmEoBS/TT0pd0SPFFyw==", "peer": true }, "node_modules/regl-error2d": { "version": "2.0.12", - "license": "MIT", + "resolved": "https://registry.npmjs.org/regl-error2d/-/regl-error2d-2.0.12.tgz", + "integrity": "sha512-r7BUprZoPO9AbyqM5qlJesrSRkl+hZnVKWKsVp7YhOl/3RIpi4UDGASGJY0puQ96u5fBYw/OlqV24IGcgJ0McA==", "peer": true, "dependencies": { "array-bounds": "^1.0.1", @@ -38836,7 +30361,8 @@ }, "node_modules/regl-line2d": { "version": "3.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/regl-line2d/-/regl-line2d-3.1.2.tgz", + "integrity": "sha512-nmT7WWS/WxmXAQMkgaMKWXaVmwJ65KCrjbqHGOUjjqQi6shfT96YbBOvelXwO9hG7/hjvbzjtQ2UO0L3e7YaXQ==", "peer": true, "dependencies": { "array-bounds": "^1.0.1", @@ -38855,7 +30381,8 @@ }, "node_modules/regl-scatter2d": { "version": "3.2.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/regl-scatter2d/-/regl-scatter2d-3.2.9.tgz", + "integrity": "sha512-PNrXs+xaCClKpiB2b3HZ2j3qXQXhC5kcTh/Nfgx9rLO0EpEhab0BSQDqAsbdbpdf+pSHSJvbgitB7ulbGeQ+Fg==", "peer": true, "dependencies": { "@plotly/point-cluster": "^3.1.9", @@ -38877,7 +30404,8 @@ }, "node_modules/regl-splom": { "version": "1.0.14", - "license": "MIT", + "resolved": "https://registry.npmjs.org/regl-splom/-/regl-splom-1.0.14.tgz", + "integrity": "sha512-OiLqjmPRYbd7kDlHC6/zDf6L8lxgDC65BhC8JirhP4ykrK4x22ZyS+BnY8EUinXKDeMgmpRwCvUmk7BK4Nweuw==", "peer": true, "dependencies": { "array-bounds": "^1.0.1", @@ -38892,8 +30420,9 @@ }, "node_modules/relateurl": { "version": "0.2.7", + "resolved": "https://registry.npmjs.org/relateurl/-/relateurl-0.2.7.tgz", + "integrity": "sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.10" } @@ -38961,8 +30490,9 @@ }, "node_modules/renderkid": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/renderkid/-/renderkid-3.0.0.tgz", + "integrity": "sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==", "dev": true, - "license": "MIT", "dependencies": { "css-select": "^4.1.3", "dom-converter": "^0.2.0", @@ -38973,22 +30503,25 @@ }, "node_modules/require-directory": { "version": "2.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "engines": { "node": ">=0.10.0" } }, "node_modules/require-from-string": { "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.10.0" } }, "node_modules/require-main-filename": { "version": "2.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/require-main-filename/-/require-main-filename-2.0.0.tgz", + "integrity": "sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==", "peer": true }, "node_modules/requireindex": { @@ -39001,17 +30534,20 @@ }, "node_modules/requires-port": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/requires-port/-/requires-port-1.0.0.tgz", + "integrity": "sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==", + "dev": true }, "node_modules/resize-observer-polyfill": { "version": "1.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/resize-observer-polyfill/-/resize-observer-polyfill-1.5.1.tgz", + "integrity": "sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==", "peer": true }, "node_modules/resolve": { "version": "1.22.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", @@ -39026,8 +30562,9 @@ }, "node_modules/resolve-cwd": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, - "license": "MIT", "dependencies": { "resolve-from": "^5.0.0" }, @@ -39037,15 +30574,17 @@ }, "node_modules/resolve-from": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/resolve-protobuf-schema": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", + "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", "peer": true, "dependencies": { "protocol-buffers-schema": "^3.3.1" @@ -39053,15 +30592,17 @@ }, "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, - "license": "MIT", "engines": { "node": ">=10" } }, "node_modules/restore-cursor": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/restore-cursor/-/restore-cursor-3.1.0.tgz", + "integrity": "sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==", "dependencies": { "onetime": "^5.1.0", "signal-exit": "^3.0.2" @@ -39072,16 +30613,18 @@ }, "node_modules/retry": { "version": "0.12.0", + "resolved": "https://registry.npmjs.org/retry/-/retry-0.12.0.tgz", + "integrity": "sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==", "dev": true, - "license": "MIT", "engines": { "node": ">= 4" } }, "node_modules/reusify": { "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", "dev": true, - "license": "MIT", "engines": { "iojs": ">=1.0.0", "node": ">=0.10.0" @@ -39089,7 +30632,8 @@ }, "node_modules/rgbcolor": { "version": "1.0.1", - "license": "MIT OR SEE LICENSE IN FEEL-FREE.md", + "resolved": "https://registry.npmjs.org/rgbcolor/-/rgbcolor-1.0.1.tgz", + "integrity": "sha512-9aZLIrhRaD97sgVhtJOW6ckOEh6/GnvQtdVNfdZ6s67+3/XwLS9lBcQYzEEhYVeUowN7pRzMLsyGhK2i/xvWbw==", "optional": true, "engines": { "node": ">= 0.8.15" @@ -39097,12 +30641,14 @@ }, "node_modules/right-now": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/right-now/-/right-now-1.0.0.tgz", + "integrity": "sha512-DA8+YS+sMIVpbsuKgy+Z67L9Lxb1p05mNxRpDPNksPDEFir4vmBlUtuN9jkTGn9YMMdlBuK7XQgFiz6ws+yhSg==", "peer": true }, "node_modules/rimraf": { "version": "3.0.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dependencies": { "glob": "^7.1.3" }, @@ -39115,7 +30661,8 @@ }, "node_modules/rimraf/node_modules/glob": { "version": "7.2.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -39133,7 +30680,8 @@ }, "node_modules/rtcpeerconnection-shim": { "version": "1.2.15", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/rtcpeerconnection-shim/-/rtcpeerconnection-shim-1.2.15.tgz", + "integrity": "sha512-C6DxhXt7bssQ1nHb154lqeL0SXz5Dx4RczXZu2Aa/L1NJFnEVDxFwCBo3fqtuljhHIGceg5JKBV4XJ0gW5JKyw==", "dependencies": { "sdp": "^2.6.0" }, @@ -39144,6 +30692,8 @@ }, "node_modules/run-parallel": { "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", "dev": true, "funding": [ { @@ -39159,26 +30709,28 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "queue-microtask": "^1.2.2" } }, "node_modules/rw": { "version": "1.3.3", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==", "peer": true }, "node_modules/rxjs": { "version": "7.8.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dependencies": { "tslib": "^2.1.0" } }, "node_modules/safe-array-concat": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.0.1.tgz", + "integrity": "sha512-6XbUAseYE2KtOuGueyeobCySj9L4+66Tn6KQMOPQJrAJEowYKW/YR/MGJZl7FdydUdaFu4LYyDZjxf4/Nmo23Q==", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1", @@ -39194,6 +30746,8 @@ }, "node_modules/safe-buffer": { "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", "funding": [ { "type": "github", @@ -39207,12 +30761,12 @@ "type": "consulting", "url": "https://feross.org/support" } - ], - "license": "MIT" + ] }, "node_modules/safe-regex-test": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.1.3", @@ -39224,12 +30778,14 @@ }, "node_modules/safer-buffer": { "version": "2.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" }, "node_modules/sass-graph": { "version": "4.0.1", + "resolved": "https://registry.npmjs.org/sass-graph/-/sass-graph-4.0.1.tgz", + "integrity": "sha512-5YCfmGBmxoIRYHnKK2AKzrAkCoQ8ozO+iumT8K4tXJXRVCPf+7s1/9KxTSW3Rbvf+7Y7b4FR3mWyLnQr3PHocA==", "dev": true, - "license": "MIT", "dependencies": { "glob": "^7.0.0", "lodash": "^4.17.11", @@ -39245,8 +30801,9 @@ }, "node_modules/sass-graph/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -39264,8 +30821,9 @@ }, "node_modules/sass-loader": { "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, - "license": "MIT", "dependencies": { "neo-async": "^2.6.2" }, @@ -39300,19 +30858,22 @@ }, "node_modules/sax": { "version": "1.3.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", + "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==", "peer": true }, "node_modules/scheduler": { "version": "0.23.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/scheduler/-/scheduler-0.23.0.tgz", + "integrity": "sha512-CtuThmgHNg7zIZWAXi3AsyIzA3n4xx7aNyjwC2VJldO2LMVDhFK+63xGqq6CsJH4rTAt6/M+N4GhZiDYPx9eUw==", "dependencies": { "loose-envify": "^1.1.0" } }, "node_modules/schema-utils": { "version": "3.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -39328,8 +30889,9 @@ }, "node_modules/scss-tokenizer": { "version": "0.4.3", + "resolved": "https://registry.npmjs.org/scss-tokenizer/-/scss-tokenizer-0.4.3.tgz", + "integrity": "sha512-raKLgf1LI5QMQnG+RxHz6oK0sL3x3I4FN2UDLqgLOGO8hodECNnNh5BXn7fAyBxrA8zVzdQizQ6XjNJQ+uBwMw==", "dev": true, - "license": "MIT", "dependencies": { "js-base64": "^2.4.9", "source-map": "^0.7.3" @@ -39337,16 +30899,19 @@ }, "node_modules/sdp": { "version": "2.12.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/sdp/-/sdp-2.12.0.tgz", + "integrity": "sha512-jhXqQAQVM+8Xj5EjJGVweuEzgtGWb3tmEEpl3CLP3cStInSbVHSg0QWOGQzNq8pSID4JkpeV2mPqlMDLrm0/Vw==" }, "node_modules/select-hose": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/select-hose/-/select-hose-2.0.0.tgz", + "integrity": "sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==", + "dev": true }, "node_modules/selecto": { "version": "1.26.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/selecto/-/selecto-1.26.3.tgz", + "integrity": "sha512-gZHgqMy5uyB6/2YDjv3Qqaf7bd2hTDOpPdxXlrez4R3/L0GiEWDCFaUfrflomgqdb3SxHF2IXY0Jw0EamZi7cw==", "dependencies": { "@daybrush/utils": "^1.13.0", "@egjs/children-differ": "^1.0.1", @@ -39362,8 +30927,9 @@ }, "node_modules/selfsigned": { "version": "2.4.1", + "resolved": "https://registry.npmjs.org/selfsigned/-/selfsigned-2.4.1.tgz", + "integrity": "sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==", "dev": true, - "license": "MIT", "dependencies": { "@types/node-forge": "^1.3.0", "node-forge": "^1" @@ -39387,7 +30953,8 @@ }, "node_modules/semver/node_modules/lru-cache": { "version": "6.0.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dependencies": { "yallist": "^4.0.0" }, @@ -39397,11 +30964,13 @@ }, "node_modules/semver/node_modules/yallist": { "version": "4.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==" }, "node_modules/send": { "version": "0.18.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/send/-/send-0.18.0.tgz", + "integrity": "sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==", "dependencies": { "debug": "2.6.9", "depd": "2.0.0", @@ -39423,18 +30992,21 @@ }, "node_modules/send/node_modules/debug": { "version": "2.6.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "dependencies": { "ms": "2.0.0" } }, "node_modules/send/node_modules/debug/node_modules/ms": { "version": "2.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==" }, "node_modules/send/node_modules/mime": { "version": "1.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", "bin": { "mime": "cli.js" }, @@ -39444,11 +31016,13 @@ }, "node_modules/send/node_modules/ms": { "version": "2.1.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" }, "node_modules/serialize-error": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/serialize-error/-/serialize-error-2.1.0.tgz", + "integrity": "sha512-ghgmKt5o4Tly5yEG/UJp8qTd0AN7Xalw4XBtDEKP655B699qMEtra1WlXeE6WIvdEG481JvRxULKsInq/iNysw==", "peer": true, "engines": { "node": ">=0.10.0" @@ -39456,15 +31030,17 @@ }, "node_modules/serialize-javascript": { "version": "6.0.1", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dependencies": { "randombytes": "^2.1.0" } }, "node_modules/serve-index": { "version": "1.9.1", + "resolved": "https://registry.npmjs.org/serve-index/-/serve-index-1.9.1.tgz", + "integrity": "sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==", "dev": true, - "license": "MIT", "dependencies": { "accepts": "~1.3.4", "batch": "0.6.1", @@ -39480,24 +31056,27 @@ }, "node_modules/serve-index/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, - "license": "MIT", "dependencies": { "ms": "2.0.0" } }, "node_modules/serve-index/node_modules/depd": { "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/serve-index/node_modules/http-errors": { "version": "1.6.3", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.6.3.tgz", + "integrity": "sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==", "dev": true, - "license": "MIT", "dependencies": { "depd": "~1.1.2", "inherits": "2.0.3", @@ -39510,30 +31089,35 @@ }, "node_modules/serve-index/node_modules/inherits": { "version": "2.0.3", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.3.tgz", + "integrity": "sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==", + "dev": true }, "node_modules/serve-index/node_modules/ms": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", + "dev": true }, "node_modules/serve-index/node_modules/setprototypeof": { "version": "1.1.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.1.0.tgz", + "integrity": "sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==", + "dev": true }, "node_modules/serve-index/node_modules/statuses": { "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==", "dev": true, - "license": "MIT", "engines": { "node": ">= 0.6" } }, "node_modules/serve-static": { "version": "1.15.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.15.0.tgz", + "integrity": "sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==", "dependencies": { "encodeurl": "~1.0.2", "escape-html": "~1.0.3", @@ -39546,11 +31130,13 @@ }, "node_modules/set-blocking": { "version": "2.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==" }, "node_modules/set-function-length": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", "dependencies": { "define-data-property": "^1.1.1", "get-intrinsic": "^1.2.1", @@ -39563,7 +31149,8 @@ }, "node_modules/set-function-name": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.1.tgz", + "integrity": "sha512-tMNCiqYVkXIZgc2Hnoy2IvC/f8ezc5koaRFkCjrpWzGpCd3qbZXPzVy9MAZzK1ch/X0jvSkojys3oqJN0qCmdA==", "dependencies": { "define-data-property": "^1.0.1", "functions-have-names": "^1.2.3", @@ -39575,15 +31162,18 @@ }, "node_modules/setimmediate": { "version": "1.0.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/setimmediate/-/setimmediate-1.0.5.tgz", + "integrity": "sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==" }, "node_modules/setprototypeof": { "version": "1.2.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" }, "node_modules/shallow-clone": { "version": "3.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dependencies": { "kind-of": "^6.0.2" }, @@ -39593,12 +31183,14 @@ }, "node_modules/shallow-copy": { "version": "0.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/shallow-copy/-/shallow-copy-0.0.1.tgz", + "integrity": "sha512-b6i4ZpVuUxB9h5gfCxPiusKYkqTMOjEbBs4wMaFbkfia4yFv92UKZ6Df8WXcKbn08JNL/abvg3FnMAOfakDvUw==", "peer": true }, "node_modules/shebang-command": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dependencies": { "shebang-regex": "^3.0.0" }, @@ -39608,14 +31200,16 @@ }, "node_modules/shebang-regex": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "engines": { "node": ">=8" } }, "node_modules/shell-quote": { "version": "1.8.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "peer": true, "funding": { "url": "https://github.com/sponsors/ljharb" @@ -39623,7 +31217,8 @@ }, "node_modules/side-channel": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", @@ -39635,15 +31230,19 @@ }, "node_modules/signal-exit": { "version": "3.0.7", - "license": "ISC" + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==" }, "node_modules/signum": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/signum/-/signum-1.0.0.tgz", + "integrity": "sha512-yodFGwcyt59XRh7w5W3jPcIQb3Bwi21suEfT7MAWnBX3iCdklJpgDgvGT9o04UonglZN5SNMfJFkHIR/jO8GHw==", "peer": true }, "node_modules/simple-peer": { "version": "9.11.1", + "resolved": "https://registry.npmjs.org/simple-peer/-/simple-peer-9.11.1.tgz", + "integrity": "sha512-D1SaWpOW8afq1CZGWB8xTfrT3FekjQmPValrqncJMX7QFl8YwhrPTZvMCANLtgBwwdS+7zURyqxDDEmY558tTw==", "funding": [ { "type": "github", @@ -39658,7 +31257,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "buffer": "^6.0.3", "debug": "^4.3.2", @@ -39671,18 +31269,21 @@ }, "node_modules/simple-peer/node_modules/err-code": { "version": "3.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/err-code/-/err-code-3.0.1.tgz", + "integrity": "sha512-GiaH0KJUewYok+eeY05IIgjtAe4Yltygk9Wqp1V5yVWLdhf0hYZchRjNIT9bb0mSwRcIusT3cx7PJUf3zEIfUA==" }, "node_modules/simple-swizzle": { "version": "0.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", + "integrity": "sha512-JA//kQgZtbuY83m+xT+tXJkmJncGMTFT+C+g2h2R9uxkYIrE2yy9sgmcLhCnw57/WSD+Eh3J97FPEDFnbXnDUg==", "dependencies": { "is-arrayish": "^0.3.1" } }, "node_modules/simple-swizzle/node_modules/is-arrayish": { "version": "0.3.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", + "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" }, "node_modules/simple-update-notifier": { "version": "2.0.0", @@ -39697,18 +31298,21 @@ }, "node_modules/sisteransi": { "version": "1.0.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==" }, "node_modules/slash": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "engines": { "node": ">=8" } }, "node_modules/slice-ansi": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/slice-ansi/-/slice-ansi-2.1.0.tgz", + "integrity": "sha512-Qu+VC3EwYLldKa1fCxuuvULvSJOKEgk9pi8dZeCVK7TqBfUNTH4sFkk4joj8afVSfAYgJoSOetjx9QWOJ5mYoQ==", "peer": true, "dependencies": { "ansi-styles": "^3.2.0", @@ -39721,8 +31325,9 @@ }, "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==", "dev": true, - "license": "MIT", "engines": { "node": ">= 6.0.0", "npm": ">= 3.0.0" @@ -39730,14 +31335,16 @@ }, "node_modules/snapsvg": { "version": "0.5.1", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/snapsvg/-/snapsvg-0.5.1.tgz", + "integrity": "sha512-CjwWYsL7+CCk1vCk9BBKGYS4WJVDfJAOMWU+Zhzf8wf6pAm/xT34wnpaMPAgcgCNkxuU6OkQPPd8wGuRCY9aNw==", "dependencies": { "eve": "~0.5.1" } }, "node_modules/snapsvg-cjs": { "version": "0.0.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/snapsvg-cjs/-/snapsvg-cjs-0.0.6.tgz", + "integrity": "sha512-7NNvoGrc3BQvWz5rWK1DsD5/Vni4STswz5B3JrBADboQWcN8OBVGjYVJFPT5JkUXb2iVnEflZANhufEpEcTHXw==", "dependencies": { "snapsvg": "0.5.1" }, @@ -39747,8 +31354,9 @@ }, "node_modules/sockjs": { "version": "0.3.24", + "resolved": "https://registry.npmjs.org/sockjs/-/sockjs-0.3.24.tgz", + "integrity": "sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==", "dev": true, - "license": "MIT", "dependencies": { "faye-websocket": "^0.11.3", "uuid": "^8.3.2", @@ -39757,16 +31365,18 @@ }, "node_modules/sockjs/node_modules/uuid": { "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", "dev": true, - "license": "MIT", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/socks": { "version": "2.7.1", + "resolved": "https://registry.npmjs.org/socks/-/socks-2.7.1.tgz", + "integrity": "sha512-7maUZy1N7uo6+WVEX6psASxtNlKaNVMlGQKkG/63nEDdLOWNbiUMoLK7X4uYoLhQstau72mLgfEWcXcwsaHbYQ==", "dev": true, - "license": "MIT", "dependencies": { "ip": "^2.0.0", "smart-buffer": "^4.2.0" @@ -39778,8 +31388,9 @@ }, "node_modules/socks-proxy-agent": { "version": "7.0.0", + "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-7.0.0.tgz", + "integrity": "sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==", "dev": true, - "license": "MIT", "dependencies": { "agent-base": "^6.0.2", "debug": "^4.3.3", @@ -39791,28 +31402,32 @@ }, "node_modules/socks/node_modules/ip": { "version": "2.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/ip/-/ip-2.0.0.tgz", + "integrity": "sha512-WKa+XuLG1A1R0UWhl2+1XQSi+fZWMsYKffMZTTYsiZaUD8k2yDAj5atimTUD2TZkyCkNEeYE5NhFZmupOGtjYQ==", + "dev": true }, "node_modules/source-map": { "version": "0.7.4", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", "engines": { "node": ">= 8" } }, "node_modules/source-map-js": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } }, "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, - "license": "MIT", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -39820,8 +31435,9 @@ }, "node_modules/source-map-support/node_modules/source-map": { "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "license": "BSD-3-Clause", "engines": { "node": ">=0.10.0" } @@ -39837,8 +31453,9 @@ }, "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, - "license": "Apache-2.0", "dependencies": { "spdx-expression-parse": "^3.0.0", "spdx-license-ids": "^3.0.0" @@ -39846,13 +31463,15 @@ }, "node_modules/spdx-exceptions": { "version": "2.3.0", - "dev": true, - "license": "CC-BY-3.0" + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true }, "node_modules/spdx-expression-parse": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, - "license": "MIT", "dependencies": { "spdx-exceptions": "^2.1.0", "spdx-license-ids": "^3.0.0" @@ -39860,13 +31479,15 @@ }, "node_modules/spdx-license-ids": { "version": "3.0.16", - "dev": true, - "license": "CC0-1.0" + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.16.tgz", + "integrity": "sha512-eWN+LnM3GR6gPu35WxNgbGl8rmY1AEmoMDvL/QD6zYmPWgywxWqJWNdLGT+ke8dKNWrcYgYjPpG5gbTfghP8rw==", + "dev": true }, "node_modules/spdy": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/spdy/-/spdy-4.0.2.tgz", + "integrity": "sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^4.1.0", "handle-thing": "^2.0.0", @@ -39880,8 +31501,9 @@ }, "node_modules/spdy-transport": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/spdy-transport/-/spdy-transport-3.0.0.tgz", + "integrity": "sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==", "dev": true, - "license": "MIT", "dependencies": { "debug": "^4.1.0", "detect-node": "^2.0.4", @@ -39893,7 +31515,8 @@ }, "node_modules/split-on-first": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/split-on-first/-/split-on-first-3.0.0.tgz", + "integrity": "sha512-qxQJTx2ryR0Dw0ITYyekNQWpz6f8dGd7vffGNflQQ3Iqj9NJ6qiZ7ELpZsJ/QBhIVAiDfXdag3+Gp8RvWa62AA==", "engines": { "node": ">=12" }, @@ -39903,11 +31526,13 @@ }, "node_modules/sprintf-js": { "version": "1.0.3", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" }, "node_modules/ssf": { "version": "0.11.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/ssf/-/ssf-0.11.2.tgz", + "integrity": "sha512-+idbmIXoYET47hH+d7dfm2epdOMUDjqcB4648sTZ+t2JwoyBFL/insLfB/racrDmsKB3diwsDA696pZMieAC5g==", "dependencies": { "frac": "~1.1.2" }, @@ -39917,8 +31542,9 @@ }, "node_modules/ssri": { "version": "9.0.1", + "resolved": "https://registry.npmjs.org/ssri/-/ssri-9.0.1.tgz", + "integrity": "sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==", "dev": true, - "license": "ISC", "dependencies": { "minipass": "^3.1.1" }, @@ -39928,8 +31554,9 @@ }, "node_modules/ssri/node_modules/minipass": { "version": "3.3.6", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-3.3.6.tgz", + "integrity": "sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==", "dev": true, - "license": "ISC", "dependencies": { "yallist": "^4.0.0" }, @@ -39939,16 +31566,21 @@ }, "node_modules/ssri/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/stable": { "version": "0.1.8", - "dev": true, - "license": "MIT" + "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 }, "node_modules/stack-trace": { "version": "0.0.9", + "resolved": "https://registry.npmjs.org/stack-trace/-/stack-trace-0.0.9.tgz", + "integrity": "sha512-vjUc6sfgtgY0dxCdnc40mK6Oftjo9+2K8H/NG81TMhgL392FtiPA9tn9RLyTxXmTLPJPjF3VyzFp6bsWFLisMQ==", "peer": true, "engines": { "node": "*" @@ -39956,7 +31588,8 @@ }, "node_modules/stack-utils": { "version": "2.0.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", "dependencies": { "escape-string-regexp": "^2.0.0" }, @@ -39966,14 +31599,16 @@ }, "node_modules/stack-utils/node_modules/escape-string-regexp": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", "engines": { "node": ">=8" } }, "node_modules/stackblur-canvas": { "version": "2.6.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/stackblur-canvas/-/stackblur-canvas-2.6.0.tgz", + "integrity": "sha512-8S1aIA+UoF6erJYnglGPug6MaHYGo1Ot7h5fuXx4fUPvcvQfcdw2o/ppCse63+eZf8PPidSu4v1JnmEVtEDnpg==", "optional": true, "engines": { "node": ">=0.1.14" @@ -39981,11 +31616,13 @@ }, "node_modules/stackframe": { "version": "1.3.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/stackframe/-/stackframe-1.3.4.tgz", + "integrity": "sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==" }, "node_modules/stacktrace-parser": { "version": "0.1.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/stacktrace-parser/-/stacktrace-parser-0.1.10.tgz", + "integrity": "sha512-KJP1OCML99+8fhOHxwwzyWrlUuVX5GQ0ZpJTd1DFXhdkrvg1szxfHhawXUZ3g9TkXORQd4/WG68jMlQZ2p8wlg==", "peer": true, "dependencies": { "type-fest": "^0.7.1" @@ -39996,7 +31633,8 @@ }, "node_modules/stacktrace-parser/node_modules/type-fest": { "version": "0.7.1", - "license": "(MIT OR CC0-1.0)", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.7.1.tgz", + "integrity": "sha512-Ne2YiiGN8bmrmJJEuTWTLJR32nh/JdL1+PSicowtNb0WFpn59GK8/lfD61bVtzguz7b3PBt74nxpv/Pw5po5Rg==", "peer": true, "engines": { "node": ">=8" @@ -40004,7 +31642,8 @@ }, "node_modules/static-eval": { "version": "2.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/static-eval/-/static-eval-2.1.0.tgz", + "integrity": "sha512-agtxZ/kWSsCkI5E4QifRwsaPs0P0JmZV6dkLz6ILYfFYQGn+5plctanRN+IC8dJRiFkyXHrwEE3W9Wmx67uDbw==", "peer": true, "dependencies": { "escodegen": "^1.11.1" @@ -40012,7 +31651,8 @@ }, "node_modules/static-eval/node_modules/escodegen": { "version": "1.14.3", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-1.14.3.tgz", + "integrity": "sha512-qFcX0XJkdg+PB3xjZZG/wKSuT1PnQWx57+TVSjIMmILd2yC/6ByYElPwJnslDsuWuSAp4AwJGumarAAmJch5Kw==", "peer": true, "dependencies": { "esprima": "^4.0.1", @@ -40033,7 +31673,8 @@ }, "node_modules/static-eval/node_modules/estraverse": { "version": "4.3.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "peer": true, "engines": { "node": ">=4.0" @@ -40041,7 +31682,8 @@ }, "node_modules/static-eval/node_modules/levn": { "version": "0.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.3.0.tgz", + "integrity": "sha512-0OO4y2iOHix2W6ujICbKIaEQXvFQHue65vUG3pb5EUomzPI90z9hsA1VsO/dbIIpC53J8gxM9Q4Oho0jrCM/yA==", "peer": true, "dependencies": { "prelude-ls": "~1.1.2", @@ -40053,7 +31695,8 @@ }, "node_modules/static-eval/node_modules/optionator": { "version": "0.8.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.8.3.tgz", + "integrity": "sha512-+IW9pACdk3XWmmTXG8m3upGUJst5XRGzxMRjXzAuJ1XnIFNvfhjjIuYkDvysnPQ7qzqVzLt78BCruntqRhWQbA==", "peer": true, "dependencies": { "deep-is": "~0.1.3", @@ -40069,6 +31712,8 @@ }, "node_modules/static-eval/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==", "peer": true, "engines": { "node": ">= 0.8.0" @@ -40076,7 +31721,8 @@ }, "node_modules/static-eval/node_modules/source-map": { "version": "0.6.1", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "optional": true, "peer": true, "engines": { @@ -40085,7 +31731,8 @@ }, "node_modules/static-eval/node_modules/type-check": { "version": "0.3.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.3.2.tgz", + "integrity": "sha512-ZCmOJdvOWDBYJlzAoFkC+Q0+bUyEOS1ltgp1MGU03fqHG+dbi9tBFU2Rd9QKiDZFAYrhPh2JUf7rZRIuHRKtOg==", "peer": true, "dependencies": { "prelude-ls": "~1.1.2" @@ -40096,28 +31743,32 @@ }, "node_modules/statuses": { "version": "2.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", + "integrity": "sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==", "engines": { "node": ">= 0.8" } }, "node_modules/stdout-stream": { "version": "1.4.1", + "resolved": "https://registry.npmjs.org/stdout-stream/-/stdout-stream-1.4.1.tgz", + "integrity": "sha512-j4emi03KXqJWcIeF8eIXkjMFN1Cmb8gUlDYGeBALLPo5qdyTfA9bOtl8m33lRoC+vFMkP3gl0WsDr6+gzxbbTA==", "dev": true, - "license": "MIT", "dependencies": { "readable-stream": "^2.0.1" } }, "node_modules/stdout-stream/node_modules/isarray": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==", + "dev": true }, "node_modules/stdout-stream/node_modules/readable-stream": { "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dev": true, - "license": "MIT", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -40130,21 +31781,24 @@ }, "node_modules/stdout-stream/node_modules/safe-buffer": { "version": "5.1.2", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", + "dev": true }, "node_modules/stdout-stream/node_modules/string_decoder": { "version": "1.1.1", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, - "license": "MIT", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/stop-iteration-iterator": { "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", "dev": true, - "license": "MIT", "dependencies": { "internal-slot": "^1.0.4" }, @@ -40159,6 +31813,8 @@ }, "node_modules/storybook": { "version": "7.6.3", + "resolved": "https://registry.npmjs.org/storybook/-/storybook-7.6.3.tgz", + "integrity": "sha512-H3odxahMiR8vVW7ltlqcHhn3UVH5ta03weKlY7xvpv5DV+thZ+mEO2cDYfsufCSg0Ldb5LQ4qq3OyLVdpDBN8g==", "dev": true, "license": "MIT", "dependencies": { @@ -40175,7 +31831,8 @@ }, "node_modules/stream-parser": { "version": "0.3.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/stream-parser/-/stream-parser-0.3.1.tgz", + "integrity": "sha512-bJ/HgKq41nlKvlhccD5kaCr/P+Hu0wPNKPJOH7en+YrJu/9EgqUF+88w5Jb6KNcjOFMhfX4B2asfeAtIGuHObQ==", "peer": true, "dependencies": { "debug": "2" @@ -40183,7 +31840,8 @@ }, "node_modules/stream-parser/node_modules/debug": { "version": "2.6.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", "peer": true, "dependencies": { "ms": "2.0.0" @@ -40191,28 +31849,33 @@ }, "node_modules/stream-parser/node_modules/ms": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==", "peer": true }, "node_modules/stream-shift": { "version": "1.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/stream-shift/-/stream-shift-1.0.1.tgz", + "integrity": "sha512-AiisoFqQ0vbGcZgQPY1cdP2I76glaVA/RauYR4G4thNFgkTqr90yXTo4LYX60Jl+sIlPNHHdGSwo01AvbKUSVQ==" }, "node_modules/string_decoder": { "version": "1.3.0", - "license": "MIT", + "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.2.0" } }, "node_modules/string-hash": { "version": "1.1.3", - "license": "CC0-1.0" + "resolved": "https://registry.npmjs.org/string-hash/-/string-hash-1.1.3.tgz", + "integrity": "sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==" }, "node_modules/string-length": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", "dev": true, - "license": "MIT", "dependencies": { "char-regex": "^1.0.2", "strip-ansi": "^6.0.0" @@ -40223,7 +31886,8 @@ }, "node_modules/string-split-by": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string-split-by/-/string-split-by-1.0.0.tgz", + "integrity": "sha512-KaJKY+hfpzNyet/emP81PJA9hTVSfxNLS9SFTWxdCnnW1/zOOwiV248+EfoX7IQFcBaOp4G5YE6xTJMF+pLg6A==", "peer": true, "dependencies": { "parenthesis": "^3.1.5" @@ -40231,7 +31895,8 @@ }, "node_modules/string-width": { "version": "4.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dependencies": { "emoji-regex": "^8.0.0", "is-fullwidth-code-point": "^3.0.0", @@ -40257,23 +31922,26 @@ }, "node_modules/string-width-cjs/node_modules/is-fullwidth-code-point": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/string-width/node_modules/is-fullwidth-code-point": { "version": "3.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "engines": { "node": ">=8" } }, "node_modules/string.prototype.matchall": { "version": "4.0.10", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.10.tgz", + "integrity": "sha512-rGXbGmOEosIQi6Qva94HUjgPs9vKW+dkG7Y8Q5O2OYkWL6wFaTRZO8zM4mhP94uX55wgyrXzfS2aGtGzUL7EJQ==", "dev": true, - "license": "MIT", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -40291,7 +31959,8 @@ }, "node_modules/string.prototype.trim": { "version": "1.2.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.8.tgz", + "integrity": "sha512-lfjY4HcixfQXOfaqCvcBuOIapyaroTXhbkfJN3gcB1OtyupngWK4sEET9Knd0cXd28kTUqu/kHoV4HKSJdnjiQ==", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -40306,7 +31975,8 @@ }, "node_modules/string.prototype.trimend": { "version": "1.0.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.7.tgz", + "integrity": "sha512-Ni79DqeB72ZFq1uH/L6zJ+DKZTkOtPIHovb3YZHQViE+HDouuU4mBrLOLDn5Dde3RF8qw5qVETEjhu9locMLvA==", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -40318,7 +31988,8 @@ }, "node_modules/string.prototype.trimstart": { "version": "1.0.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.7.tgz", + "integrity": "sha512-NGhtDFu3jCEm7B4Fy0DpLewdJQOZcQ0rGbwQ/+stjnrp2i+rlKeCvos9hOIeCmqwratM47OBxY7uFZzjxHXmrg==", "dependencies": { "call-bind": "^1.0.2", "define-properties": "^1.2.0", @@ -40343,7 +32014,8 @@ }, "node_modules/strip-ansi": { "version": "6.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dependencies": { "ansi-regex": "^5.0.1" }, @@ -40365,23 +32037,26 @@ }, "node_modules/strip-bom": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/strip-final-newline": { "version": "2.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "engines": { "node": ">=6" } }, "node_modules/strip-indent": { "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-indent/-/strip-indent-4.0.0.tgz", + "integrity": "sha512-mnVSV2l+Zv6BLpSD/8V87CW/y9EmmbYzGCIavsnsI6/nwn26DwffM/yztm30Z/I2DY9wdS3vXVCMnHDgZaVNoA==", "dev": true, - "license": "MIT", "dependencies": { "min-indent": "^1.0.1" }, @@ -40394,8 +32069,9 @@ }, "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, - "license": "MIT", "engines": { "node": ">=8" }, @@ -40405,18 +32081,21 @@ }, "node_modules/strnum": { "version": "1.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strnum/-/strnum-1.0.5.tgz", + "integrity": "sha512-J8bbNyKKXl5qYcR36TIO8W3mVGVHrmmxsd5PAItGkmyzwJvybiw2IVq5nqd0i4LSNSkB/sx9VHllbfFdr9k1JA==", "peer": true }, "node_modules/strongly-connected-components": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/strongly-connected-components/-/strongly-connected-components-1.0.1.tgz", + "integrity": "sha512-i0TFx4wPcO0FwX+4RkLJi1MxmcTv90jNZgxMu9XRnMXMeFUY1VJlIoXpZunPUvUUqbCT1pg5PEkFqqpcaElNaA==", "peer": true }, "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, - "license": "MIT", "engines": { "node": ">= 12.13.0" }, @@ -40428,6 +32107,11 @@ "webpack": "^5.0.0" } }, + "node_modules/style-mod": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/style-mod/-/style-mod-4.1.0.tgz", + "integrity": "sha512-Ca5ib8HrFn+f+0n4N4ScTIA9iTOQ7MaGS1ylHcoVqW9J7w2w8PzN6g9gKmTYgGEBH8e120+RCmhpje6jC5uGWA==" + }, "node_modules/style-to-object": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/style-to-object/-/style-to-object-1.0.5.tgz", @@ -40438,8 +32122,9 @@ }, "node_modules/styled-components": { "version": "3.4.10", + "resolved": "https://registry.npmjs.org/styled-components/-/styled-components-3.4.10.tgz", + "integrity": "sha512-TA8ip8LoILgmSAFd3r326pKtXytUUGu5YWuqZcOQVwVVwB6XqUMn4MHW2IuYJ/HAD81jLrdQed8YWfLSG1LX4Q==", "hasInstallScript": true, - "license": "MIT", "dependencies": { "buffer": "^5.0.3", "css-to-react-native": "^2.0.3", @@ -40457,6 +32142,8 @@ }, "node_modules/styled-components/node_modules/buffer": { "version": "5.7.1", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-5.7.1.tgz", + "integrity": "sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==", "funding": [ { "type": "github", @@ -40471,7 +32158,6 @@ "url": "https://feross.org/support" } ], - "license": "MIT", "dependencies": { "base64-js": "^1.3.1", "ieee754": "^1.1.13" @@ -40479,11 +32165,14 @@ }, "node_modules/styled-components/node_modules/core-js": { "version": "1.2.7", - "license": "MIT" + "resolved": "https://registry.npmjs.org/core-js/-/core-js-1.2.7.tgz", + "integrity": "sha512-ZiPp9pZlgxpWRu0M+YWbm6+aQ84XEfH1JRXvfOc/fILWI0VKhLC2LX13X1NYq4fULzLMq7Hfh43CSo2/aIaUPA==", + "deprecated": "core-js@<3.23.3 is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js." }, "node_modules/styled-components/node_modules/fbjs": { "version": "0.8.18", - "license": "MIT", + "resolved": "https://registry.npmjs.org/fbjs/-/fbjs-0.8.18.tgz", + "integrity": "sha512-EQaWFK+fEPSoibjNy8IxUtaFOMXcWsY0JaVrQoZR9zC8N2Ygf9iDITPWjUTVIax95b6I742JFLqASHfsag/vKA==", "dependencies": { "core-js": "^1.0.0", "isomorphic-fetch": "^2.1.1", @@ -40496,29 +32185,34 @@ }, "node_modules/styled-components/node_modules/has-flag": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-1.0.0.tgz", + "integrity": "sha512-DyYHfIYwAJmjAjSSPKANxI8bFY9YtFrgkAfinBojQ8YJTOuOuav64tMUJv584SES4xl74PmuaevIyaLESHdTAA==", "engines": { "node": ">=0.10.0" } }, "node_modules/styled-components/node_modules/hoist-non-react-statics": { "version": "2.5.5", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/hoist-non-react-statics/-/hoist-non-react-statics-2.5.5.tgz", + "integrity": "sha512-rqcy4pJo55FTTLWt+bU8ukscqHeE/e9KWvsOW2b/a3afxQZhwkQdT1rPPCJ0rYXdj4vNcasY8zHTH+jF/qStxw==" }, "node_modules/styled-components/node_modules/stylis": { "version": "3.5.4", - "license": "MIT" + "resolved": "https://registry.npmjs.org/stylis/-/stylis-3.5.4.tgz", + "integrity": "sha512-8/3pSmthWM7lsPBKv7NXkzn2Uc9W7NotcwGNpJaa3k7WMM1XDCA4MgT5k/8BIexd5ydZdboXtU90XH9Ec4Bv/Q==" }, "node_modules/styled-components/node_modules/stylis-rule-sheet": { "version": "0.0.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/stylis-rule-sheet/-/stylis-rule-sheet-0.0.10.tgz", + "integrity": "sha512-nTbZoaqoBnmK+ptANthb10ZRZOGC+EmTLLUxeYIuHNkEKcmKgXX1XWKkUBT2Ac4es3NybooPe0SmvKdhKJZAuw==", "peerDependencies": { "stylis": "^3.5.0" } }, "node_modules/styled-components/node_modules/supports-color": { "version": "3.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-3.2.3.tgz", + "integrity": "sha512-Jds2VIYDrlp5ui7t8abHN2bjAu4LV/q4N2KivFPpGH0lrka0BMq/33AmECUXlKPcHigkNaqfXRENFju+rlcy+A==", "dependencies": { "has-flag": "^1.0.0" }, @@ -40528,11 +32222,13 @@ }, "node_modules/stylis": { "version": "4.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/stylis/-/stylis-4.2.0.tgz", + "integrity": "sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==" }, "node_modules/substyle": { "version": "9.4.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/substyle/-/substyle-9.4.1.tgz", + "integrity": "sha512-VOngeq/W1/UkxiGzeqVvDbGDPM8XgUyJVWjrqeh+GgKqspEPiLYndK+XRcsKUHM5Muz/++1ctJ1QCF/OqRiKWA==", "dependencies": { "@babel/runtime": "^7.3.4", "invariant": "^2.2.4" @@ -40543,24 +32239,28 @@ }, "node_modules/sudo-prompt": { "version": "9.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/sudo-prompt/-/sudo-prompt-9.2.1.tgz", + "integrity": "sha512-Mu7R0g4ig9TUuGSxJavny5Rv0egCEtpZRNMrZaYS1vxkiIxGiGUwoezU3LazIQ+KE04hTrTfNPgxU5gzi7F5Pw==", "peer": true }, "node_modules/supercluster": { "version": "8.0.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-8.0.1.tgz", + "integrity": "sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==", "dependencies": { "kdbush": "^4.0.2" } }, "node_modules/superscript-text": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/superscript-text/-/superscript-text-1.0.0.tgz", + "integrity": "sha512-gwu8l5MtRZ6koO0icVTlmN5pm7Dhh1+Xpe9O4x6ObMAsW+3jPbW14d1DsBq1F4wiI+WOFjXF35pslgec/G8yCQ==", "peer": true }, "node_modules/superstruct": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/superstruct/-/superstruct-1.0.3.tgz", + "integrity": "sha512-8iTn3oSS8nRGn+C2pgXSKPI3jmpm6FExNazNpjvqS6ZUJQCej3PUXEKM8NjHBOs54ExM+LPW/FBRhymrdcCiSg==", "engines": { "node": ">=14.0.0" } @@ -40577,7 +32277,8 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "license": "MIT", + "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" }, @@ -40587,7 +32288,8 @@ }, "node_modules/suspend-react": { "version": "0.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/suspend-react/-/suspend-react-0.1.3.tgz", + "integrity": "sha512-aqldKgX9aZqpoDp3e8/BZ8Dm7x1pJl+qI3ZKxDN0i/IQTWUwBx/ManmlVJ3wowqbno6c2bmiIfs+Um6LbsjJyQ==", "peer": true, "peerDependencies": { "react": ">=17.0" @@ -40595,17 +32297,20 @@ }, "node_modules/svg-arc-to-cubic-bezier": { "version": "3.2.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/svg-arc-to-cubic-bezier/-/svg-arc-to-cubic-bezier-3.2.0.tgz", + "integrity": "sha512-djbJ/vZKZO+gPoSDThGNpKDO+o+bAeA4XQKovvkNCqnIS2t+S4qnLAGQhyyrulhCFRl1WWzAp0wUDV8PpTVU3g==", "peer": true }, "node_modules/svg-parser": { "version": "2.0.4", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/svg-parser/-/svg-parser-2.0.4.tgz", + "integrity": "sha512-e4hG1hRwoOdRb37cIMSgzNsxyzKfayW6VOflrwvR+/bzrkyxY/31WkbgnQpgtrNp1SdpJvpUAGTa/ZoiPNDuRQ==", + "dev": true }, "node_modules/svg-path-bounds": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/svg-path-bounds/-/svg-path-bounds-1.0.2.tgz", + "integrity": "sha512-H4/uAgLWrppIC0kHsb2/dWUYSmb4GE5UqH06uqWBcg6LBjX2fu0A8+JrO2/FJPZiSsNOKZAhyFFgsLTdYUvSqQ==", "peer": true, "dependencies": { "abs-svg-path": "^0.1.1", @@ -40616,7 +32321,8 @@ }, "node_modules/svg-path-bounds/node_modules/normalize-svg-path": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/normalize-svg-path/-/normalize-svg-path-1.1.0.tgz", + "integrity": "sha512-r9KHKG2UUeB5LoTouwDzBy2VxXlHsiM6fyLQvnJa0S5hrhzqElH/CH7TUGhT1fVvIYBIKf3OpY4YJ4CK+iaqHg==", "peer": true, "dependencies": { "svg-arc-to-cubic-bezier": "^3.0.0" @@ -40624,7 +32330,8 @@ }, "node_modules/svg-path-sdf": { "version": "1.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/svg-path-sdf/-/svg-path-sdf-1.1.3.tgz", + "integrity": "sha512-vJJjVq/R5lSr2KLfVXVAStktfcfa1pNFjFOgyJnzZFXlO/fDZ5DmM8FpnSKKzLPfEYTVeXuVBTHF296TpxuJVg==", "peer": true, "dependencies": { "bitmap-sdf": "^1.0.0", @@ -40636,7 +32343,8 @@ }, "node_modules/svg-pathdata": { "version": "6.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/svg-pathdata/-/svg-pathdata-6.0.3.tgz", + "integrity": "sha512-qsjeeq5YjBZ5eMdFuUa4ZosMLxgr5RZ+F+Y1OrDhuOCEInRMA3x74XdBtggJcj9kOeInz0WE+LgCPDkZFlBYJw==", "optional": true, "engines": { "node": ">=12.0.0" @@ -40644,8 +32352,9 @@ }, "node_modules/svgo": { "version": "2.8.0", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-2.8.0.tgz", + "integrity": "sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==", "dev": true, - "license": "MIT", "dependencies": { "@trysound/sax": "0.2.0", "commander": "^7.2.0", @@ -40664,16 +32373,18 @@ }, "node_modules/svgo/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, - "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/swc-loader": { "version": "0.2.3", + "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.3.tgz", + "integrity": "sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A==", "dev": true, - "license": "MIT", "peerDependencies": { "@swc/core": "^1.2.147", "webpack": ">=2" @@ -40686,20 +32397,23 @@ }, "node_modules/tabbable": { "version": "6.2.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/tabbable/-/tabbable-6.2.0.tgz", + "integrity": "sha512-Cat63mxsVJlzYvN51JmVXIgNoUokrIaT2zLclCXjRd8boZ0004U4KCs/sToJ75C6sdlByWxpYnb5Boif1VSFew==" }, "node_modules/tapable": { "version": "0.1.10", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-0.1.10.tgz", + "integrity": "sha512-jX8Et4hHg57mug1/079yitEKWGB3LCwoxByLsNim89LABq8NqgiX+6iYVOsq0vX8uJHkU+DZ5fnq95f800bEsQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=0.6" } }, "node_modules/tar": { "version": "6.2.0", + "resolved": "https://registry.npmjs.org/tar/-/tar-6.2.0.tgz", + "integrity": "sha512-/Wo7DcT0u5HUV486xg675HtjNd3BXZ6xDbzsCUZPt5iw8bTQ63bP0Raut3mvro9u+CUyq7YQd8Cx55fsZXxqLQ==", "dev": true, - "license": "ISC", "dependencies": { "chownr": "^2.0.0", "fs-minipass": "^2.0.0", @@ -40778,19 +32492,23 @@ }, "node_modules/tar/node_modules/minipass": { "version": "5.0.0", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-5.0.0.tgz", + "integrity": "sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==", "dev": true, - "license": "ISC", "engines": { "node": ">=8" } }, "node_modules/tar/node_modules/yallist": { "version": "4.0.0", - "dev": true, - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", + "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", + "dev": true }, "node_modules/telejson": { "version": "7.2.0", + "resolved": "https://registry.npmjs.org/telejson/-/telejson-7.2.0.tgz", + "integrity": "sha512-1QTEcJkJEhc8OnStBx/ILRu5J2p0GjvWsBx56bmZRqnrkdBMUe+nX92jxV+p3dB4CP6PZCdJMQJwCggkNBMzkQ==", "dev": true, "license": "MIT", "dependencies": { @@ -40799,7 +32517,8 @@ }, "node_modules/temp": { "version": "0.8.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/temp/-/temp-0.8.4.tgz", + "integrity": "sha512-s0ZZzd0BzYv5tLSptZooSjK8oj6C+c19p7Vqta9+6NPOf7r+fxq0cJe6/oN4LTC79sy5NY8ucOJNgwsKCSbfqg==", "dependencies": { "rimraf": "~2.6.2" }, @@ -40817,7 +32536,8 @@ }, "node_modules/temp/node_modules/glob": { "version": "7.2.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -40835,7 +32555,8 @@ }, "node_modules/temp/node_modules/rimraf": { "version": "2.6.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", + "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", "dependencies": { "glob": "^7.1.3" }, @@ -40874,7 +32595,8 @@ }, "node_modules/terser": { "version": "5.24.0", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.24.0.tgz", + "integrity": "sha512-ZpGR4Hy3+wBEzVEnHvstMvqpD/nABNelQn/z2r0fjVWGQsN3bpOLzQlqDxmb4CDZnXq5lpjnQ+mHQLAOpfM5iw==", "dependencies": { "@jridgewell/source-map": "^0.3.3", "acorn": "^8.8.2", @@ -40890,7 +32612,8 @@ }, "node_modules/terser-webpack-plugin": { "version": "5.3.9", - "license": "MIT", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dependencies": { "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", @@ -40922,14 +32645,16 @@ }, "node_modules/terser-webpack-plugin/node_modules/has-flag": { "version": "4.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "engines": { "node": ">=8" } }, "node_modules/terser-webpack-plugin/node_modules/jest-worker": { "version": "27.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", + "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -40941,7 +32666,8 @@ }, "node_modules/terser-webpack-plugin/node_modules/supports-color": { "version": "8.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dependencies": { "has-flag": "^4.0.0" }, @@ -40952,30 +32678,23 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/terser/node_modules/acorn": { - "version": "8.11.2", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/terser/node_modules/commander": { "version": "2.20.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" }, "node_modules/terser/node_modules/source-map": { "version": "0.6.1", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "engines": { "node": ">=0.10.0" } }, "node_modules/terser/node_modules/source-map-support": { "version": "0.5.21", - "license": "MIT", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -40983,8 +32702,9 @@ }, "node_modules/test-exclude": { "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", "dev": true, - "license": "ISC", "dependencies": { "@istanbuljs/schema": "^0.1.2", "glob": "^7.1.4", @@ -40996,8 +32716,9 @@ }, "node_modules/test-exclude/node_modules/glob": { "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, - "license": "ISC", "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", @@ -41015,7 +32736,8 @@ }, "node_modules/text-segmentation": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/text-segmentation/-/text-segmentation-1.0.3.tgz", + "integrity": "sha512-iOiPUo/BGnZ6+54OsWxZidGCsdU8YbE4PSpdPinp7DeMtUJNJBoJ/ouUSTJjHkh1KntHaltHl/gDs2FC4i5+Nw==", "optional": true, "dependencies": { "utrie": "^1.0.2" @@ -41023,26 +32745,31 @@ }, "node_modules/text-table": { "version": "0.2.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true }, "node_modules/three": { "version": "0.159.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/three/-/three-0.159.0.tgz", + "integrity": "sha512-eCmhlLGbBgucuo4VEA9IO3Qpc7dh8Bd4VKzr7WfW4+8hMcIfoAVi1ev0pJYN9PTTsCslbcKgBwr2wNZ1EvLInA==", "peer": true }, "node_modules/throat": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/throat/-/throat-5.0.0.tgz", + "integrity": "sha512-fcwX4mndzpLQKBS1DVYhGAcYaYt7vsHNIvQV+WXMvnow5cgjPphq5CaayLaGsjRdSCKZFNGt7/GYAuXaNOiYCA==", "peer": true }, "node_modules/through": { "version": "2.3.8", - "license": "MIT" + "resolved": "https://registry.npmjs.org/through/-/through-2.3.8.tgz", + "integrity": "sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==" }, "node_modules/through2": { "version": "2.0.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/through2/-/through2-2.0.5.tgz", + "integrity": "sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==", "dependencies": { "readable-stream": "~2.3.6", "xtend": "~4.0.1" @@ -41050,11 +32777,13 @@ }, "node_modules/through2/node_modules/isarray": { "version": "1.0.0", - "license": "MIT" + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, "node_modules/through2/node_modules/readable-stream": { "version": "2.3.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", "dependencies": { "core-util-is": "~1.0.0", "inherits": "~2.0.3", @@ -41067,56 +32796,67 @@ }, "node_modules/through2/node_modules/safe-buffer": { "version": "5.1.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" }, "node_modules/through2/node_modules/string_decoder": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dependencies": { "safe-buffer": "~5.1.0" } }, "node_modules/thunky": { "version": "1.1.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/thunky/-/thunky-1.1.0.tgz", + "integrity": "sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==", + "dev": true }, "node_modules/tiny-invariant": { "version": "1.3.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/tiny-invariant/-/tiny-invariant-1.3.1.tgz", + "integrity": "sha512-AD5ih2NlSssTCwsMznbvwMZpJ1cbhkGd2uueNxzv2jDlEeZdU04JQfRnggJQ8DrcVBGjAsCKwFBbDlVNtEMlzw==" }, "node_modules/tiny-warning": { "version": "1.0.3", - "license": "MIT" + "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", - "license": "MIT" + "resolved": "https://registry.npmjs.org/tinycolor2/-/tinycolor2-1.6.0.tgz", + "integrity": "sha512-XPaBkWQJdsf3pLKJV9p4qN/S+fm2Oj8AIPo1BTUhg5oxkvm9+SVEGFdhyOz7tTdUTfvxMiAs4sp6/eZO2Ew+pw==" }, "node_modules/tinyqueue": { "version": "2.0.3", - "license": "ISC", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", + "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==", "peer": true }, "node_modules/tmpl": { "version": "1.0.5", - "license": "BSD-3-Clause" + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==" }, "node_modules/to-fast-properties": { "version": "2.0.0", - "license": "MIT", + "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-float32": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/to-float32/-/to-float32-1.1.0.tgz", + "integrity": "sha512-keDnAusn/vc+R3iEiSDw8TOF7gPiTLdK1ArvWtYbJQiVfmRg6i/CAvbKq3uIS0vWroAC7ZecN3DjQKw3aSklUg==", "peer": true }, "node_modules/to-px": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/to-px/-/to-px-1.0.1.tgz", + "integrity": "sha512-2y3LjBeIZYL19e5gczp14/uRWFDtDUErJPVN3VU9a7SJO+RjGRtYR47aMN2bZgGlxvW4ZcEz2ddUPVHXcMfuXw==", "peer": true, "dependencies": { "parse-unit": "^1.0.1" @@ -41124,7 +32864,8 @@ }, "node_modules/to-regex-range": { "version": "5.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dependencies": { "is-number": "^7.0.0" }, @@ -41134,23 +32875,27 @@ }, "node_modules/tocbot": { "version": "4.23.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/tocbot/-/tocbot-4.23.0.tgz", + "integrity": "sha512-5DWuSZXsqG894mkGb8ZsQt9myyQyVxE50AiGRZ0obV0BVUTVkaZmc9jbgpknaAAPUm4FIrzGkEseD6FuQJYJDQ==", + "dev": true }, "node_modules/toggle-selection": { "version": "1.0.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/toggle-selection/-/toggle-selection-1.0.6.tgz", + "integrity": "sha512-BiZS+C1OS8g/q2RRbJmy59xpyghNBqrr6k5L/uKBGRsTfxmu3ffiRnd8mlGPUVayg8pvfi5urfnu8TU7DVOkLQ==" }, "node_modules/toidentifier": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", "engines": { "node": ">=0.6" } }, "node_modules/topojson-client": { "version": "3.1.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", + "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", "peer": true, "dependencies": { "commander": "2" @@ -41163,12 +32908,14 @@ }, "node_modules/topojson-client/node_modules/commander": { "version": "2.20.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", "peer": true }, "node_modules/tr46": { "version": "0.0.3", - "license": "MIT" + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" }, "node_modules/trim-lines": { "version": "3.0.1", @@ -41181,16 +32928,17 @@ }, "node_modules/trim-newlines": { "version": "3.0.1", + "resolved": "https://registry.npmjs.org/trim-newlines/-/trim-newlines-3.0.1.tgz", + "integrity": "sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==", "dev": true, - "license": "MIT", "engines": { "node": ">=8" } }, "node_modules/trough": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/trough/-/trough-2.1.0.tgz", - "integrity": "sha512-AqTiAOLcj85xS7vQ8QkAV41hPDIJ71XJB4RCUrzo/1GM2CQwhkJGaf9Hgr7BOugMRpgGUrqRg/DrBDl4H40+8g==", + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/trough/-/trough-2.2.0.tgz", + "integrity": "sha512-tmMpK00BjZiUyVyvrBK7knerNgmgvcV/KLVyuma/SC+TQN167GrMRciANTz09+k3zW8L8t60jWO1GpfkZdjTaw==", "funding": { "type": "github", "url": "https://github.com/sponsors/wooorm" @@ -41198,8 +32946,9 @@ }, "node_modules/true-case-path": { "version": "2.2.1", - "dev": true, - "license": "Apache-2.0" + "resolved": "https://registry.npmjs.org/true-case-path/-/true-case-path-2.2.1.tgz", + "integrity": "sha512-0z3j8R7MCjy10kc/g+qg7Ln3alJTodw9aDuVWZa3uiWqfuBMKeAeP2ocWcxoyM3D73yz3Jt/Pu4qPr4wHSdB/Q==", + "dev": true }, "node_modules/ts-dedent": { "version": "2.2.0", @@ -41211,8 +32960,9 @@ }, "node_modules/tsconfig-paths": { "version": "3.14.2", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.14.2.tgz", + "integrity": "sha512-o/9iXgCYc5L/JxCHPe3Hvh8Q/2xm5Z+p18PESBU6Ff33695QnCHBEjcytY2q19ua7Mbl/DavtBOLq+oG0RCL+g==", "dev": true, - "license": "MIT", "dependencies": { "@types/json5": "^0.0.29", "json5": "^1.0.2", @@ -41222,8 +32972,9 @@ }, "node_modules/tsconfig-paths/node_modules/json5": { "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", "dev": true, - "license": "MIT", "dependencies": { "minimist": "^1.2.0" }, @@ -41233,20 +32984,23 @@ }, "node_modules/tsconfig-paths/node_modules/strip-bom": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, - "license": "MIT", "engines": { "node": ">=4" } }, "node_modules/tslib": { "version": "2.6.2", - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" }, "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, - "license": "MIT", "dependencies": { "tslib": "^1.8.1" }, @@ -41259,8 +33013,9 @@ }, "node_modules/tsutils/node_modules/tslib": { "version": "1.14.1", - "dev": true, - "license": "0BSD" + "resolved": "https://registry.npmjs.org/tslib/-/tslib-1.14.1.tgz", + "integrity": "sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==", + "dev": true }, "node_modules/tween-functions": { "version": "1.2.0", @@ -41269,13 +33024,15 @@ }, "node_modules/type": { "version": "1.2.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/type/-/type-1.2.0.tgz", + "integrity": "sha512-+5nt5AAniqsCnu2cEQQdpzCAh33kVx8n0VoFidKpB1dVVLAN/F+bgVOqOJqOnEnrhp222clB5p3vUlD+1QAnfg==", "peer": true }, "node_modules/type-check": { "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", "dev": true, - "license": "MIT", "dependencies": { "prelude-ls": "^1.2.1" }, @@ -41285,15 +33042,17 @@ }, "node_modules/type-detect": { "version": "4.0.8", - "license": "MIT", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", "engines": { "node": ">=4" } }, "node_modules/type-fest": { "version": "2.19.0", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-2.19.0.tgz", + "integrity": "sha512-RAH822pAdBgcNMAfWnCBU3CFZcfZ/i1eZjwFU/dsLKumyuuP3niueg2UAukXYF0E2AAoc82ZSSf9J0WQBinzHA==", "dev": true, - "license": "(MIT OR CC0-1.0)", "engines": { "node": ">=12.20" }, @@ -41303,8 +33062,9 @@ }, "node_modules/type-is": { "version": "1.6.18", + "resolved": "https://registry.npmjs.org/type-is/-/type-is-1.6.18.tgz", + "integrity": "sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==", "dev": true, - "license": "MIT", "dependencies": { "media-typer": "0.3.0", "mime-types": "~2.1.24" @@ -41315,7 +33075,8 @@ }, "node_modules/typed-array-buffer": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.0.tgz", + "integrity": "sha512-Y8KTSIglk9OZEr8zywiIHG/kmQ7KWyjseXs1CbSo8vC42w7hg2HgYTxSWwP0+is7bWDc1H+Fo026CpHFwm8tkw==", "dependencies": { "call-bind": "^1.0.2", "get-intrinsic": "^1.2.1", @@ -41327,7 +33088,8 @@ }, "node_modules/typed-array-byte-length": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.0.tgz", + "integrity": "sha512-Or/+kvLxNpeQ9DtSydonMxCx+9ZXOswtwJn17SNLvhptaXYDJvkFFP5zbfU/uLmvnBJlI4yrnXRxpdWH/M5tNA==", "dependencies": { "call-bind": "^1.0.2", "for-each": "^0.3.3", @@ -41343,7 +33105,8 @@ }, "node_modules/typed-array-byte-offset": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.0.tgz", + "integrity": "sha512-RD97prjEt9EL8YgAgpOkf3O4IF9lhJFr9g0htQkm0rchFp/Vx7LW5Q8fSXXub7BXAODyUQohRMyOc3faCPd0hg==", "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", @@ -41360,7 +33123,8 @@ }, "node_modules/typed-array-length": { "version": "1.0.4", - "license": "MIT", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.4.tgz", + "integrity": "sha512-KjZypGq+I/H7HI5HlOoGHkWUUGq+Q0TPhQurLbyrVrvnKTBgzLhIJ7j6J/XTQOi0d1RjyZ0wdas8bKs2p0x3Ng==", "dependencies": { "call-bind": "^1.0.2", "for-each": "^0.3.3", @@ -41372,11 +33136,13 @@ }, "node_modules/typedarray": { "version": "0.0.6", - "license": "MIT" + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" }, "node_modules/typedarray-pool": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/typedarray-pool/-/typedarray-pool-1.2.0.tgz", + "integrity": "sha512-YTSQbzX43yvtpfRtIDAYygoYtgT+Rpjuxy9iOpczrjpXLgGoyG7aS5USJXV2d3nn8uHTeb9rXDvzS27zUg5KYQ==", "peer": true, "dependencies": { "bit-twiddle": "^1.0.0", @@ -41385,8 +33151,9 @@ }, "node_modules/typescript": { "version": "5.3.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.3.2.tgz", + "integrity": "sha512-6l+RyNy7oAHDfxC4FzSJcz9vnjTKxrLpDG5M2Vu4SHRVNg6xzqZp6LYSR9zjqQTu8DU/f5xwxUdADOkbrIX2gQ==", "dev": true, - "license": "Apache-2.0", "peer": true, "bin": { "tsc": "bin/tsc", @@ -41398,6 +33165,8 @@ }, "node_modules/ua-parser-js": { "version": "0.7.37", + "resolved": "https://registry.npmjs.org/ua-parser-js/-/ua-parser-js-0.7.37.tgz", + "integrity": "sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==", "funding": [ { "type": "opencollective", @@ -41412,14 +33181,15 @@ "url": "https://github.com/sponsors/faisalman" } ], - "license": "MIT", "engines": { "node": "*" } }, "node_modules/uglify-es": { "version": "3.3.9", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/uglify-es/-/uglify-es-3.3.9.tgz", + "integrity": "sha512-r+MU0rfv4L/0eeW3xZrd16t4NZfK8Ld4SWVglYBb7ez5uXFWHuVRs6xCTrf1yirs9a4j4Y27nn7SRfO6v67XsQ==", + "deprecated": "support for ECMAScript is superseded by `uglify-js` as of v3.13.0", "peer": true, "dependencies": { "commander": "~2.13.0", @@ -41434,12 +33204,14 @@ }, "node_modules/uglify-es/node_modules/commander": { "version": "2.13.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.13.0.tgz", + "integrity": "sha512-MVuS359B+YzaWqjCL/c+22gfryv+mCBPHAv3zyVI2GN8EY6IRP8VwtasXn8jyyhvvq84R4ImN1OKRtcbIasjYA==", "peer": true }, "node_modules/uglify-es/node_modules/source-map": { "version": "0.6.1", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "peer": true, "engines": { "node": ">=0.10.0" @@ -41459,7 +33231,8 @@ }, "node_modules/unbox-primitive": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", "dependencies": { "call-bind": "^1.0.2", "has-bigints": "^1.0.2", @@ -41472,7 +33245,8 @@ }, "node_modules/uncontrollable": { "version": "7.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/uncontrollable/-/uncontrollable-7.2.1.tgz", + "integrity": "sha512-svtcfoTADIB0nT9nltgjujTi7BzVmwjZClOmskKu/E8FW9BXzg9os8OLr4f8Dlnk0rYWJIWr4wv9eKUXiQvQwQ==", "dependencies": { "@babel/runtime": "^7.6.3", "@types/react": ">=16.9.11", @@ -41485,7 +33259,8 @@ }, "node_modules/undici-types": { "version": "5.26.5", - "license": "MIT" + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, "node_modules/unicode-canonical-property-names-ecmascript": { "version": "2.0.0", @@ -41555,8 +33330,9 @@ }, "node_modules/unique-filename": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/unique-filename/-/unique-filename-2.0.1.tgz", + "integrity": "sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==", "dev": true, - "license": "ISC", "dependencies": { "unique-slug": "^3.0.0" }, @@ -41566,8 +33342,9 @@ }, "node_modules/unique-slug": { "version": "3.0.0", + "resolved": "https://registry.npmjs.org/unique-slug/-/unique-slug-3.0.0.tgz", + "integrity": "sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4" }, @@ -41715,6 +33492,8 @@ }, "node_modules/universalify": { "version": "2.0.1", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", + "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", "dev": true, "license": "MIT", "engines": { @@ -41723,7 +33502,8 @@ }, "node_modules/unpipe": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", + "integrity": "sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==", "engines": { "node": ">= 0.8" } @@ -41739,20 +33519,10 @@ "webpack-virtual-modules": "^0.5.0" } }, - "node_modules/unplugin/node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } - }, "node_modules/unquote": { "version": "1.1.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/unquote/-/unquote-1.1.1.tgz", + "integrity": "sha512-vRCqFv6UhXpWxZPyGDh/F3ZpNv8/qo7w6iufLpQg9aKnQ71qM4B5KiI7Mia9COcjEhrO9LueHpMYjYzsWH3OIg==", "peer": true }, "node_modules/untildify": { @@ -41765,6 +33535,8 @@ }, "node_modules/update-browserslist-db": { "version": "1.0.13", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", + "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", "funding": [ { "type": "opencollective", @@ -41793,18 +33565,22 @@ }, "node_modules/update-diff": { "version": "1.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/update-diff/-/update-diff-1.1.0.tgz", + "integrity": "sha512-rCiBPiHxZwT4+sBhEbChzpO5hYHjm91kScWgdHf4Qeafs6Ba7MBl+d9GlGv72bcTZQO0sLmtQS1pHSWoCLtN/A==", "peer": true }, "node_modules/uri-js": { "version": "4.4.1", - "license": "BSD-2-Clause", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", "dependencies": { "punycode": "^2.1.0" } }, "node_modules/url": { "version": "0.11.3", + "resolved": "https://registry.npmjs.org/url/-/url-0.11.3.tgz", + "integrity": "sha512-6hxOLGfZASQK/cijlZnZJTq8OXAkt/3YGfQX45vvMYXpZoo8NdWZcY73K108Jf759lS1Bv/8wXnHDTSz17dSRw==", "dev": true, "license": "MIT", "dependencies": { @@ -41814,7 +33590,8 @@ }, "node_modules/url-join": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/url-join/-/url-join-5.0.0.tgz", + "integrity": "sha512-n2huDr9h9yzd6exQVnH/jU5mr+Pfx08LRXXZhkLLetAMESRj+anQsTAh940iMrIetKAmry9coFuZQ2jY8/p3WA==", "engines": { "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } @@ -41826,7 +33603,8 @@ }, "node_modules/use-callback-ref": { "version": "1.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/use-callback-ref/-/use-callback-ref-1.3.0.tgz", + "integrity": "sha512-3FT9PRuRdbB9HfXhEq35u4oZkvpJ5kuYbpqhCfmiZyReuRgpnhDlbr2ZEnnuS0RrJAPn6l23xjFg9kpDM+Ms7w==", "dependencies": { "tslib": "^2.0.0" }, @@ -41845,14 +33623,16 @@ }, "node_modules/use-composed-ref": { "version": "1.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/use-composed-ref/-/use-composed-ref-1.3.0.tgz", + "integrity": "sha512-GLMG0Jc/jiKov/3Ulid1wbv3r54K9HlMW29IWcDFPEqFkSO2nS0MuefWgMJpeHQ9YJeXDL3ZUF+P3jdXlZX/cQ==", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/use-isomorphic-layout-effect": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/use-isomorphic-layout-effect/-/use-isomorphic-layout-effect-1.1.2.tgz", + "integrity": "sha512-49L8yCO3iGT/ZF9QttjwLF/ZD9Iwto5LnH5LmEdk/6cFmXddqi2ulF0edxTwjj+7mqvpVVGQWvbXZdn32wRSHA==", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" }, @@ -41864,7 +33644,8 @@ }, "node_modules/use-latest": { "version": "1.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/use-latest/-/use-latest-1.2.1.tgz", + "integrity": "sha512-xA+AVm/Wlg3e2P/JiItTziwS7FK92LWrDB0p+hgXloIMuVCeJJ8v6f0eeHyPZaJrM+usM1FkFfbNCrJGs8A/zw==", "dependencies": { "use-isomorphic-layout-effect": "^1.1.1" }, @@ -41879,14 +33660,16 @@ }, "node_modules/use-memo-one": { "version": "1.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/use-memo-one/-/use-memo-one-1.1.3.tgz", + "integrity": "sha512-g66/K7ZQGYrI6dy8GLpVcMsBp4s17xNkYJVSMvTEevGy3nDxHOfE6z8BVE22+5G5x7t3+bhzrlTDB7ObrEE0cQ==", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/use-react-router-breadcrumbs": { "version": "4.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/use-react-router-breadcrumbs/-/use-react-router-breadcrumbs-4.0.1.tgz", + "integrity": "sha512-Zbcy0KvWt1JePFcUHJAnTr7Z+AeO9WxmPs6A5Q/xqOVoi8edPKzpqHF87WB2opXwie/QjCxrEyTB7kFg7fgXvQ==", "peerDependencies": { "react": ">=16.8", "react-router-dom": ">=6.0.0" @@ -41906,7 +33689,8 @@ }, "node_modules/use-sidecar": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/use-sidecar/-/use-sidecar-1.1.2.tgz", + "integrity": "sha512-epTbsLuzZ7lPClpz2TyryBfztm7m+28DlEv2ZCQ3MDr5ssiwyOwGH/e5F9CkfWjJ1t4clvI58yF822/GUkjjhw==", "dependencies": { "detect-node-es": "^1.1.0", "tslib": "^2.0.0" @@ -41926,15 +33710,17 @@ }, "node_modules/use-sync-external-store": { "version": "1.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/use-sync-external-store/-/use-sync-external-store-1.2.0.tgz", + "integrity": "sha512-eEgnFxGQ1Ife9bzYs6VLi8/4X6CObHMw9Qr9tPY43iKwsPw8xE8+EFsf/2cFZ5S3esXgpWgtSCtLNS41F+sKPA==", "peerDependencies": { "react": "^16.8.0 || ^17.0.0 || ^18.0.0" } }, "node_modules/util": { "version": "0.12.5", + "resolved": "https://registry.npmjs.org/util/-/util-0.12.5.tgz", + "integrity": "sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==", "dev": true, - "license": "MIT", "dependencies": { "inherits": "^2.0.3", "is-arguments": "^1.0.4", @@ -41945,23 +33731,27 @@ }, "node_modules/util-deprecate": { "version": "1.0.2", - "license": "MIT" + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" }, "node_modules/utila": { "version": "0.4.0", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/utila/-/utila-0.4.0.tgz", + "integrity": "sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==", + "dev": true }, "node_modules/utils-merge": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/utils-merge/-/utils-merge-1.0.1.tgz", + "integrity": "sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==", "engines": { "node": ">= 0.4.0" } }, "node_modules/utrie": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/utrie/-/utrie-1.0.2.tgz", + "integrity": "sha512-1MLa5ouZiOmQzUbjbu9VmjLzn1QLXBhwpUa7kdLUQK+KQ5KA9I1vk5U4YHe/X2Ch7PYnJfWuWT+VbuxbGwljhw==", "optional": true, "dependencies": { "base64-arraybuffer": "^1.0.2" @@ -41969,15 +33759,17 @@ }, "node_modules/uuid": { "version": "9.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-9.0.0.tgz", + "integrity": "sha512-MXcSTerfPa4uqyzStbRoTgt5XIe3x5+42+q1sDuy3R5MDk66URdLMOZe5aPX/SQd+kuYAh0FdP/pO28IkQyTeg==", "bin": { "uuid": "dist/bin/uuid" } }, "node_modules/v8-to-istanbul": { "version": "9.2.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.2.0.tgz", + "integrity": "sha512-/EH/sDgxU2eGxajKdwLCDmQ4FWq+kpi3uCmBGpw1xJtnAxEjlD8j8PEiGWpCIMIs3ciNAgH0d3TTJiUkYzyZjA==", "dev": true, - "license": "ISC", "dependencies": { "@jridgewell/trace-mapping": "^0.3.12", "@types/istanbul-lib-coverage": "^2.0.1", @@ -41989,8 +33781,9 @@ }, "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, - "license": "Apache-2.0", "dependencies": { "spdx-correct": "^3.0.0", "spdx-expression-parse": "^3.0.0" @@ -41998,7 +33791,8 @@ }, "node_modules/vary": { "version": "1.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==", "engines": { "node": ">= 0.8" } @@ -42042,19 +33836,22 @@ }, "node_modules/vlq": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/vlq/-/vlq-1.0.1.tgz", + "integrity": "sha512-gQpnTgkubC6hQgdIcRdYGDSDc+SaujOdyesZQMv6JlfQee/9Mp0Qhnys6WxDWvQnL5WZdT7o2Ul187aSt0Rq+w==", "peer": true }, "node_modules/void-elements": { "version": "3.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/void-elements/-/void-elements-3.1.0.tgz", + "integrity": "sha512-Dhxzh5HZuiHQhbvTW9AMetFfBHDMYpo23Uo9btPXgdYP+3T5S+p+jgNy7spra+veYhBP2dCSgxR/i2Y02h5/6w==", "engines": { "node": ">=0.10.0" } }, "node_modules/vt-pbf": { "version": "3.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/vt-pbf/-/vt-pbf-3.1.3.tgz", + "integrity": "sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==", "peer": true, "dependencies": { "@mapbox/point-geometry": "0.1.0", @@ -42062,23 +33859,31 @@ "pbf": "^3.2.1" } }, + "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/walker": { "version": "1.0.8", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", "dependencies": { "makeerror": "1.0.12" } }, "node_modules/warning": { "version": "4.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/warning/-/warning-4.0.3.tgz", + "integrity": "sha512-rpJyN222KWIvHJ/F53XSZv0Zl/accqHR8et1kpaMTD/fLCRxtV8iX8czMzY7sVZupTI3zcUTg8eycS2kNF9l6w==", "dependencies": { "loose-envify": "^1.0.0" } }, "node_modules/watchpack": { "version": "2.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", + "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -42089,34 +33894,39 @@ }, "node_modules/wbuf": { "version": "1.7.3", + "resolved": "https://registry.npmjs.org/wbuf/-/wbuf-1.7.3.tgz", + "integrity": "sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==", "dev": true, - "license": "MIT", "dependencies": { "minimalistic-assert": "^1.0.0" } }, "node_modules/wcwidth": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/wcwidth/-/wcwidth-1.0.1.tgz", + "integrity": "sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==", "dependencies": { "defaults": "^1.0.3" } }, "node_modules/weak-map": { "version": "1.0.8", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/weak-map/-/weak-map-1.0.8.tgz", + "integrity": "sha512-lNR9aAefbGPpHO7AEnY0hCFjz1eTkWCXYvkTRrTHs9qv8zJp+SkVYpzfLIFXQQiG3tVvbNFQgVg2bQS8YGgxyw==", "peer": true }, "node_modules/web-streams-polyfill": { "version": "3.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/web-streams-polyfill/-/web-streams-polyfill-3.2.1.tgz", + "integrity": "sha512-e0MO3wdXWKrLbL0DgGnUV7WHVuw9OUvL4hjgnPkIeEvESk74gAITi5G606JtZPp39cd8HA9VQzCIvA49LpPN5Q==", "engines": { "node": ">= 8" } }, "node_modules/webgl-context": { "version": "2.2.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/webgl-context/-/webgl-context-2.2.0.tgz", + "integrity": "sha512-q/fGIivtqTT7PEoF07axFIlHNk/XCPaYpq64btnepopSWvKNFkoORlQYgqDigBIuGA1ExnFd/GnSUnBNEPQY7Q==", "peer": true, "dependencies": { "get-canvas-context": "^1.0.1" @@ -42124,11 +33934,13 @@ }, "node_modules/webidl-conversions": { "version": "3.0.1", - "license": "BSD-2-Clause" + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" }, "node_modules/webpack": { "version": "5.89.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", + "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.0", @@ -42173,8 +33985,9 @@ }, "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, - "license": "MIT", "dependencies": { "@discoveryjs/json-ext": "^0.5.0", "@webpack-cli/configtest": "^2.1.1", @@ -42217,21 +34030,24 @@ }, "node_modules/webpack-cli/node_modules/colorette": { "version": "2.0.20", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true }, "node_modules/webpack-cli/node_modules/interpret": { "version": "3.1.1", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", + "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.13.0" } }, "node_modules/webpack-dev-middleware": { "version": "6.1.1", + "resolved": "https://registry.npmjs.org/webpack-dev-middleware/-/webpack-dev-middleware-6.1.1.tgz", + "integrity": "sha512-y51HrHaFeeWir0YO4f0g+9GwZawuigzcAdRNon6jErXy/SqV/+O6eaVAzDqE6t3e3NpGeR5CS+cCDaTC+V3yEQ==", "dev": true, - "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.12", @@ -42257,8 +34073,9 @@ }, "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, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -42272,8 +34089,9 @@ }, "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, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -42283,18 +34101,21 @@ }, "node_modules/webpack-dev-middleware/node_modules/colorette": { "version": "2.0.20", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true }, "node_modules/webpack-dev-middleware/node_modules/json-schema-traverse": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "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, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -42311,8 +34132,9 @@ }, "node_modules/webpack-dev-server": { "version": "4.11.1", + "resolved": "https://registry.npmjs.org/webpack-dev-server/-/webpack-dev-server-4.11.1.tgz", + "integrity": "sha512-lILVz9tAUy1zGFwieuaQtYiadImb5M3d+H+L1zDYalYoDl0cksAB1UNyuE5MMWJrG6zR1tXkCP2fitl7yoUJiw==", "dev": true, - "license": "MIT", "dependencies": { "@types/bonjour": "^3.5.9", "@types/connect-history-api-fallback": "^1.3.5", @@ -42365,8 +34187,9 @@ }, "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, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.1", "json-schema-traverse": "^1.0.0", @@ -42380,8 +34203,9 @@ }, "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, - "license": "MIT", "dependencies": { "fast-deep-equal": "^3.1.3" }, @@ -42391,21 +34215,24 @@ }, "node_modules/webpack-dev-server/node_modules/colorette": { "version": "2.0.20", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true }, "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, - "license": "MIT", "engines": { "node": ">= 10" } }, "node_modules/webpack-dev-server/node_modules/is-wsl": { "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", "dev": true, - "license": "MIT", "dependencies": { "is-docker": "^2.0.0" }, @@ -42415,13 +34242,15 @@ }, "node_modules/webpack-dev-server/node_modules/json-schema-traverse": { "version": "1.0.0", - "dev": true, - "license": "MIT" + "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/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, - "license": "MIT", "dependencies": { "define-lazy-prop": "^2.0.0", "is-docker": "^2.1.1", @@ -42436,8 +34265,9 @@ }, "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, - "license": "MIT", "dependencies": { "@types/json-schema": "^7.0.9", "ajv": "^8.9.0", @@ -42454,8 +34284,9 @@ }, "node_modules/webpack-dev-server/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, - "license": "MIT", "dependencies": { "colorette": "^2.0.10", "memfs": "^3.4.3", @@ -42476,8 +34307,9 @@ }, "node_modules/webpack-dev-server/node_modules/ws": { "version": "8.14.2", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", "dev": true, - "license": "MIT", "engines": { "node": ">=10.0.0" }, @@ -42506,8 +34338,9 @@ }, "node_modules/webpack-merge": { "version": "5.10.0", + "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.10.0.tgz", + "integrity": "sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==", "dev": true, - "license": "MIT", "dependencies": { "clone-deep": "^4.0.1", "flat": "^5.0.2", @@ -42519,7 +34352,8 @@ }, "node_modules/webpack-sources": { "version": "3.2.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", + "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "engines": { "node": ">=10.13.0" } @@ -42530,28 +34364,21 @@ }, "node_modules/webpack/node_modules/@types/estree": { "version": "1.0.5", - "license": "MIT" - }, - "node_modules/webpack/node_modules/acorn": { - "version": "8.11.2", - "license": "MIT", - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" - } + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", + "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==" }, "node_modules/webpack/node_modules/acorn-import-assertions": { "version": "1.9.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "peerDependencies": { "acorn": "^8" } }, "node_modules/webpack/node_modules/enhanced-resolve": { "version": "5.15.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -42562,14 +34389,16 @@ }, "node_modules/webpack/node_modules/tapable": { "version": "2.2.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", "engines": { "node": ">=6" } }, "node_modules/webrtc-adapter": { "version": "7.7.1", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/webrtc-adapter/-/webrtc-adapter-7.7.1.tgz", + "integrity": "sha512-TbrbBmiQBL9n0/5bvDdORc6ZfRY/Z7JnEj+EYOD1ghseZdpJ+nF2yx14k3LgQKc7JZnG7HAcL+zHnY25So9d7A==", "dependencies": { "rtcpeerconnection-shim": "^1.2.15", "sdp": "^2.12.0" @@ -42581,8 +34410,9 @@ }, "node_modules/websocket-driver": { "version": "0.7.4", + "resolved": "https://registry.npmjs.org/websocket-driver/-/websocket-driver-0.7.4.tgz", + "integrity": "sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==", "dev": true, - "license": "Apache-2.0", "dependencies": { "http-parser-js": ">=0.5.1", "safe-buffer": ">=5.1.0", @@ -42594,19 +34424,22 @@ }, "node_modules/websocket-extensions": { "version": "0.1.4", + "resolved": "https://registry.npmjs.org/websocket-extensions/-/websocket-extensions-0.1.4.tgz", + "integrity": "sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==", "dev": true, - "license": "Apache-2.0", "engines": { "node": ">=0.8.0" } }, "node_modules/whatwg-fetch": { "version": "3.6.19", - "license": "MIT" + "resolved": "https://registry.npmjs.org/whatwg-fetch/-/whatwg-fetch-3.6.19.tgz", + "integrity": "sha512-d67JP4dHSbm2TrpFj8AbO8DnL1JXL5J9u0Kq2xW6d0TFDbCA3Muhdt8orXC22utleTVj7Prqt82baN6RBvnEgw==" }, "node_modules/whatwg-url": { "version": "5.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", "dependencies": { "tr46": "~0.0.3", "webidl-conversions": "^3.0.0" @@ -42614,7 +34447,8 @@ }, "node_modules/which": { "version": "2.0.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", "dependencies": { "isexe": "^2.0.0" }, @@ -42627,7 +34461,8 @@ }, "node_modules/which-boxed-primitive": { "version": "1.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", "dependencies": { "is-bigint": "^1.0.1", "is-boolean-object": "^1.1.0", @@ -42641,8 +34476,9 @@ }, "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, - "license": "MIT", "dependencies": { "function.prototype.name": "^1.1.5", "has-tostringtag": "^1.0.0", @@ -42666,8 +34502,9 @@ }, "node_modules/which-collection": { "version": "1.0.1", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.1.tgz", + "integrity": "sha512-W8xeTUwaln8i3K/cY1nGXzdnVZlidBcagyNFtBdD5kxnb4TvGKR7FfSIS3mYpwWS1QUCutfKz8IY8RjftB0+1A==", "dev": true, - "license": "MIT", "dependencies": { "is-map": "^2.0.1", "is-set": "^2.0.1", @@ -42680,12 +34517,14 @@ }, "node_modules/which-module": { "version": "2.0.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.1.tgz", + "integrity": "sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==", "peer": true }, "node_modules/which-typed-array": { "version": "1.1.13", - "license": "MIT", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.13.tgz", + "integrity": "sha512-P5Nra0qjSncduVPEAr7xhoF5guty49ArDTwzJ/yNuPIbZppyRxFQsRCWrocxIY+CnMVG+qfbU2FmDKyvSGClow==", "dependencies": { "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.4", @@ -42702,34 +34541,39 @@ }, "node_modules/wide-align": { "version": "1.1.5", + "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.5.tgz", + "integrity": "sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==", "dev": true, - "license": "ISC", "dependencies": { "string-width": "^1.0.2 || 2 || 3 || 4" } }, "node_modules/wildcard": { "version": "2.0.1", - "dev": true, - "license": "MIT" + "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.1.tgz", + "integrity": "sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==", + "dev": true }, "node_modules/wmf": { "version": "1.0.2", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/wmf/-/wmf-1.0.2.tgz", + "integrity": "sha512-/p9K7bEh0Dj6WbXg4JG0xvLQmIadrner1bi45VMJTfnbVHsc7yIajZyoSoK60/dtVBs12Fm6WkUI5/3WAVsNMw==", "engines": { "node": ">=0.8" } }, "node_modules/word": { "version": "0.3.0", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/word/-/word-0.3.0.tgz", + "integrity": "sha512-OELeY0Q61OXpdUfTp+oweA/vtLVg5VDOXh+3he3PNzLGG/y0oylSOC1xRVj0+l4vQ3tj/bB1HVHv1ocXkQceFA==", "engines": { "node": ">=0.8" } }, "node_modules/word-wrap": { "version": "1.2.5", - "license": "MIT", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", "peer": true, "engines": { "node": ">=0.10.0" @@ -42742,7 +34586,8 @@ }, "node_modules/world-calendars": { "version": "1.0.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/world-calendars/-/world-calendars-1.0.3.tgz", + "integrity": "sha512-sAjLZkBnsbHkHWVhrsCU5Sa/EVuf9QqgvrN8zyJ2L/F9FR9Oc6CvVK0674+PGAtmmmYQMH98tCUSO4QLQv3/TQ==", "peer": true, "dependencies": { "object-assign": "^4.1.0" @@ -42750,7 +34595,8 @@ }, "node_modules/wrap-ansi": { "version": "7.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", "dependencies": { "ansi-styles": "^4.0.0", "string-width": "^4.1.0", @@ -42796,7 +34642,8 @@ }, "node_modules/wrap-ansi/node_modules/ansi-styles": { "version": "4.3.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dependencies": { "color-convert": "^2.0.1" }, @@ -42809,12 +34656,14 @@ }, "node_modules/wrappy": { "version": "1.0.2", - "license": "ISC" + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, "node_modules/write-file-atomic": { "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", "dev": true, - "license": "ISC", "dependencies": { "imurmurhash": "^0.1.4", "signal-exit": "^3.0.7" @@ -42825,14 +34674,16 @@ }, "node_modules/ws": { "version": "6.2.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ws/-/ws-6.2.2.tgz", + "integrity": "sha512-zmhltoSR8u1cnDsD43TX59mzoMZsLKqUweyYBAIvTngR3shc0W6aOZylZmq/7hqyVxPdi+5Ud2QInblgyE72fw==", "dependencies": { "async-limiter": "~1.0.0" } }, "node_modules/xlsx": { "version": "0.18.5", - "license": "Apache-2.0", + "resolved": "https://registry.npmjs.org/xlsx/-/xlsx-0.18.5.tgz", + "integrity": "sha512-dmg3LCjBPHZnQp5/F/+nnTa+miPJxUXB6vtk42YjBBKayDNagxGEeIdWApkYPOf3Z3pm3k62Knjzp7lMeTEtFQ==", "dependencies": { "adler-32": "~1.3.0", "cfb": "~1.2.1", @@ -42851,14 +34702,16 @@ }, "node_modules/xtend": { "version": "4.0.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", + "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==", "engines": { "node": ">=0.4" } }, "node_modules/y-leveldb": { "version": "0.1.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/y-leveldb/-/y-leveldb-0.1.2.tgz", + "integrity": "sha512-6ulEn5AXfXJYi89rXPEg2mMHAyyw8+ZfeMMdOtBbV8FJpQ1NOrcgi6DTAcXof0dap84NjHPT2+9d0rb6cFsjEg==", "optional": true, "dependencies": { "level": "^6.0.1", @@ -42874,7 +34727,8 @@ }, "node_modules/y-protocols": { "version": "1.0.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/y-protocols/-/y-protocols-1.0.6.tgz", + "integrity": "sha512-vHRF2L6iT3rwj1jub/K5tYcTT/mEYDUppgNPXwp8fmLpui9f7Yeq3OEtTLVF012j39QnV+KEQpNqoN7CWU7Y9Q==", "dependencies": { "lib0": "^0.2.85" }, @@ -42892,7 +34746,8 @@ }, "node_modules/y-webrtc": { "version": "10.2.6", - "license": "MIT", + "resolved": "https://registry.npmjs.org/y-webrtc/-/y-webrtc-10.2.6.tgz", + "integrity": "sha512-1kZ4YYwksFZi8+l8mTebVX9vW6Q5MnqxMkvNU700X5dBE38usurt/JgeXSIQRpK3NwUYYb9y63Jn9FMpMH6/vA==", "dependencies": { "lib0": "^0.2.42", "simple-peer": "^9.11.0", @@ -42917,7 +34772,8 @@ }, "node_modules/y-webrtc/node_modules/ws": { "version": "8.14.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.14.2.tgz", + "integrity": "sha512-wEBG1ftX4jcglPxgFCMJmZ2PLtSbJ2Peg6TmpJFTbe9GZYOQCDPdMYu/Tm0/bGZkw8paZnJY45J4K2PZrLYq8g==", "optional": true, "engines": { "node": ">=10.0.0" @@ -42937,7 +34793,8 @@ }, "node_modules/y-websocket": { "version": "1.5.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/y-websocket/-/y-websocket-1.5.0.tgz", + "integrity": "sha512-A8AO6XtnQlYwWFytWdkDCeXg4l8ghRTIw5h2YUgUYDmEC9ugWGIwYNW80yadhSFAF7CvuWTEkQNEpevnH6EiZw==", "dependencies": { "lib0": "^0.2.52", "lodash.debounce": "^4.0.8", @@ -42961,25 +34818,29 @@ }, "node_modules/y18n": { "version": "5.0.8", - "license": "ISC", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", "engines": { "node": ">=10" } }, "node_modules/yallist": { "version": "3.1.1", - "license": "ISC" + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==" }, "node_modules/yaml": { "version": "1.10.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", + "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==", "engines": { "node": ">= 6" } }, "node_modules/yargs": { "version": "17.7.2", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", "dependencies": { "cliui": "^8.0.1", "escalade": "^3.1.1", @@ -42995,15 +34856,17 @@ }, "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, - "license": "ISC", "engines": { "node": ">=10" } }, "node_modules/yargs/node_modules/yargs-parser": { "version": "21.1.1", - "license": "ISC", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", "engines": { "node": ">=12" } @@ -43019,7 +34882,8 @@ }, "node_modules/yjs": { "version": "13.6.10", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yjs/-/yjs-13.6.10.tgz", + "integrity": "sha512-1JcyQek1vaMyrDm7Fqfa+pvHg/DURSbVo4VmeN7wjnTKB/lZrfIPhdCj7d8sboK6zLfRBJXegTjc9JlaDd8/Zw==", "dependencies": { "lib0": "^0.2.86" }, @@ -43034,7 +34898,8 @@ }, "node_modules/yocto-queue": { "version": "0.1.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", "engines": { "node": ">=10" }, @@ -43044,12 +34909,14 @@ }, "node_modules/zdog": { "version": "1.1.3", - "license": "MIT", + "resolved": "https://registry.npmjs.org/zdog/-/zdog-1.1.3.tgz", + "integrity": "sha512-raRj6r0gPzopFm5XWBJZr/NuV4EEnT4iE+U3dp5FV5pCb588Gmm3zLIp/j9yqqcMiHH8VNQlerLTgOqL7krh6w==", "peer": true }, "node_modules/zustand": { "version": "4.4.7", - "license": "MIT", + "resolved": "https://registry.npmjs.org/zustand/-/zustand-4.4.7.tgz", + "integrity": "sha512-QFJWJMdlETcI69paJwhSMJz7PPWjVP8Sjhclxmxmxv/RYI7ZOvR5BHX+ktH0we9gTWQMxcne8q1OY8xxz604gw==", "dependencies": { "use-sync-external-store": "1.2.0" }, diff --git a/frontend/package.json b/frontend/package.json index dc4f945ff3..ea823a00c3 100644 --- a/frontend/package.json +++ b/frontend/package.json @@ -3,6 +3,14 @@ "version": "0.1.0", "private": true, "dependencies": { + "@codemirror/autocomplete": "^6.12.0", + "@codemirror/commands": "^6.3.3", + "@codemirror/lang-javascript": "^6.2.1", + "@codemirror/lang-python": "^6.1.3", + "@codemirror/lang-sass": "^6.0.2", + "@codemirror/lang-sql": "^6.5.5", + "@codemirror/language": "^6.10.0", + "@codemirror/view": "^6.24.0", "@dnd-kit/core": "^6.0.7", "@dnd-kit/sortable": "^7.0.2", "@dnd-kit/utilities": "^3.2.1", @@ -17,9 +25,14 @@ "@sentry/tracing": "^7.100.1", "@sentry/webpack-plugin": "^2.14.0", "@tabler/icons-react": "^2.4.0", + "@textea/json-viewer": "^3.3.2", "@tooljet/plugins": "../plugins", - "@uiw/react-codemirror": "^3.0.6", + "@uiw/codemirror-theme-github": "^4.21.21", + "@uiw/codemirror-theme-okaidia": "^4.21.21", + "@uiw/codemirror-themes": "^4.21.21", + "@uiw/react-codemirror": "^4.21.21", "@y-presence/react": "^2.0.1", + "acorn": "^8.11.3", "array-move": "^4.0.0", "axios": "^1.3.3", "bootstrap": "^5.2.3", @@ -82,6 +95,7 @@ "react-loading-skeleton": "^3.1.1", "react-markdown": "^9.0.0", "react-mentions": "^4.4.7", + "react-moveable": "^0.54.1", "react-multi-select-component": "^4.3.4", "react-pdf": "^6.2.2", "react-phone-input-2": "^2.15.1", diff --git a/frontend/src/AppLoader/AppLoader.jsx b/frontend/src/AppLoader/AppLoader.jsx index c54c0e3c68..a05404261c 100644 --- a/frontend/src/AppLoader/AppLoader.jsx +++ b/frontend/src/AppLoader/AppLoader.jsx @@ -1,41 +1,11 @@ -import React, { useEffect } from 'react'; +import React from 'react'; import { withTranslation } from 'react-i18next'; import { Editor } from '../Editor/Editor'; import { RealtimeEditor } from '@/Editor/RealtimeEditor'; import config from 'config'; -import { appService } from '@/_services'; -import { useAppDataActions } from '@/_stores/appDataStore'; const AppLoaderComponent = React.memo((props) => { - const [shouldLoadApp, setShouldLoadApp] = React.useState(false); - const { updateState } = useAppDataActions(); - - useEffect(() => { - props?.id && props?.slug && loadAppDetails(props?.id); - - return () => { - setShouldLoadApp(false); - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - const loadAppDetails = (appId) => { - appService.fetchApp(appId, 'edit').then((data) => { - setShouldLoadApp(true); - updateState({ - app: data, - appId: data.id, - }); - }); - }; - - if (!shouldLoadApp) return <>>; - - return config.ENABLE_MULTIPLAYER_EDITING ? ( - - ) : ( - - ); + return config.ENABLE_MULTIPLAYER_EDITING ? : ; }); export const AppLoader = withTranslation()(AppLoaderComponent); diff --git a/frontend/src/Editor/AppVersionsManager/AppVersionsManager.jsx b/frontend/src/Editor/AppVersionsManager/AppVersionsManager.jsx index 90a12c50c0..5976423d69 100644 --- a/frontend/src/Editor/AppVersionsManager/AppVersionsManager.jsx +++ b/frontend/src/Editor/AppVersionsManager/AppVersionsManager.jsx @@ -1,11 +1,12 @@ -import React, { useEffect, useState } from 'react'; +import React, { useEffect, useRef, useState } from 'react'; import cx from 'classnames'; -import { appVersionService } from '@/_services'; import { CustomSelect } from './CustomSelect'; import { toast } from 'react-hot-toast'; import { shallow } from 'zustand/shallow'; import { useAppVersionStore } from '@/_stores/appVersionStore'; import { useEditorStore } from '@/_stores/editorStore'; +import { useEnvironmentsAndVersionsStore } from '@/_stores/environmentsAndVersionsStore'; +import { useAppDataStore } from '@/_stores/appDataStore'; import { decodeEntities } from '@/_helpers/utils'; const appVersionLoadingStatus = Object.freeze({ @@ -17,7 +18,6 @@ const appVersionLoadingStatus = Object.freeze({ export const AppVersionsManager = function ({ appId, setAppDefinitionFromVersion, - onVersionDelete, isEditable = true, isViewer, darkMode, @@ -28,12 +28,11 @@ export const AppVersionsManager = function ({ versionName: '', showModal: false, }); + const [forceMenuOpen, setForceMenuOpen] = useState(false); - const { releasedVersionId, editingVersion, appVersions, setAppVersions } = useAppVersionStore( + const { releasedVersionId, editingVersion } = useAppVersionStore( (state) => ({ editingVersion: state.editingVersion, - appVersions: state.appVersions, - setAppVersions: state.actions?.setAppVersions, releasedVersionId: state.releasedVersionId, }), shallow @@ -45,26 +44,63 @@ export const AppVersionsManager = function ({ shallow ); + const { + initializedEnvironmentDropdown, + versionsPromotedToEnvironment, + lazyLoadAppVersions, + appVersionsLazyLoaded, + setEnvironmentAndVersionsInitStatus, + changeEditorVersionAction, + selectedVersion, + deleteVersionAction, + } = useEnvironmentsAndVersionsStore( + (state) => ({ + appVersionsLazyLoaded: state.appVersionsLazyLoaded, + initializedEnvironmentDropdown: state.initializedEnvironmentDropdown, + versionsPromotedToEnvironment: state.versionsPromotedToEnvironment, + selectedVersion: state.selectedVersion, + lazyLoadAppVersions: state.actions.lazyLoadAppVersions, + setEnvironmentAndVersionsInitStatus: state.actions.setEnvironmentAndVersionsInitStatus, + deleteVersionAction: state.actions.deleteVersionAction, + changeEditorVersionAction: state.actions.changeEditorVersionAction, + }), + shallow + ); + useEffect(() => { - if (appVersions && appVersions.length > 0) { + setEnvironmentAndVersionsInitStatus(true); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + useEffect(() => { + if (initializedEnvironmentDropdown) { setGetAppVersionStatus(appVersionLoadingStatus.loaded); } - - return () => { - setGetAppVersionStatus(appVersionLoadingStatus.loading); - }; - }, [appVersions]); + }, [initializedEnvironmentDropdown]); const selectVersion = (id) => { - appVersionService - .getAppVersionData(appId, id) - .then((data) => { - const isCurrentVersionReleased = data.currentVersionId ? true : false; - setAppDefinitionFromVersion(data, isCurrentVersionReleased); - }) - .catch((error) => { - toast.error(error); + const currentVersionId = useAppDataStore.getState().currentVersionId; + + const isSameVersionSelected = currentVersionId === id; + + if (isSameVersionSelected) { + return toast('You are already editing this version', { + icon: '⚠️', }); + } + + changeEditorVersionAction( + appId, + id, + (newDeff) => { + setAppDefinitionFromVersion(newDeff); + }, + (error) => { + toast.error(error); + } + ); + + return; }; const resetDeleteModal = () => { @@ -77,29 +113,29 @@ export const AppVersionsManager = function ({ const deleteAppVersion = (versionId, versionName) => { const deleteingToastId = toast.loading('Deleting version...'); - appVersionService - .del(appId, versionId) - .then(() => { + deleteVersionAction( + appId, + versionId, + (newVersionDef) => { + if (newVersionDef) { + /* User deleted new version */ + setAppDefinitionFromVersion(newVersionDef); + } toast.dismiss(deleteingToastId); toast.success(`Version - ${decodeEntities(versionName)} Deleted`); resetDeleteModal(); - setGetAppVersionStatus(appVersionLoadingStatus.loading); - }) - .catch((error) => { + setGetAppVersionStatus(appVersionLoadingStatus.loaded); + }, + (error) => { toast.dismiss(deleteingToastId); toast.error(error?.error ?? 'Oops, something went wrong'); setGetAppVersionStatus(appVersionLoadingStatus.error); resetDeleteModal(); - }) - .finally(() => { - appVersionService.getAll(appId, true).then((data) => { - setAppVersions(data.versions); - onVersionDelete(); - }); - }); + } + ); }; - const options = appVersions.map((appVersion) => ({ + const options = versionsPromotedToEnvironment.map((appVersion) => ({ value: appVersion.id, isReleasedVersion: appVersion.id === releasedVersionId, appVersionName: appVersion.name, @@ -139,10 +175,17 @@ export const AppVersionsManager = function ({ ), })); + const onMenuOpen = async () => { + if (!appVersionsLazyLoaded) { + setGetAppVersionStatus(appVersionLoadingStatus.loading); + await lazyLoadAppVersions(appId); + setGetAppVersionStatus(appVersionLoadingStatus.loaded); + } + setForceMenuOpen(!forceMenuOpen); + }; + const customSelectProps = { appId, - appVersions, - setAppVersions, setAppDefinitionFromVersion, editingVersion, setDeleteVersion, @@ -151,10 +194,28 @@ export const AppVersionsManager = function ({ resetDeleteModal, }; + /* Force close is not working with usual blur function of react-select */ + const clickedOutsideRef = useRef(null); + useEffect(() => { + function handleClickOutside(event) { + if (clickedOutsideRef.current && !clickedOutsideRef.current.contains(event.target)) { + if (!forceMenuOpen) { + setForceMenuOpen(false); + } + } + } + document.addEventListener('mousedown', handleClickOutside); + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [clickedOutsideRef]); + return ( selectVersion(id)} {...customSelectProps} isEditable={isEditable} + onMenuOpen={onMenuOpen} + onMenuClose={() => setForceMenuOpen(false)} + menuIsOpen={forceMenuOpen} darkMode={darkMode} /> diff --git a/frontend/src/Editor/AppVersionsManager/CreateVersionModal.jsx b/frontend/src/Editor/AppVersionsManager/CreateVersionModal.jsx index 2801f278b0..07c67506d5 100644 --- a/frontend/src/Editor/AppVersionsManager/CreateVersionModal.jsx +++ b/frontend/src/Editor/AppVersionsManager/CreateVersionModal.jsx @@ -6,17 +6,25 @@ import { useTranslation } from 'react-i18next'; import Select from '@/_ui/Select'; import { useAppVersionStore } from '@/_stores/appVersionStore'; import { shallow } from 'zustand/shallow'; +import { useEnvironmentsAndVersionsStore } from '@/_stores/environmentsAndVersionsStore'; export const CreateVersion = ({ appId, - appVersions, - setAppVersions, setAppDefinitionFromVersion, showCreateAppVersion, setShowCreateAppVersion, }) => { const [isCreatingVersion, setIsCreatingVersion] = useState(false); const [versionName, setVersionName] = useState(''); + const { versionsPromotedToEnvironment: appVersions, createNewVersionAction } = useEnvironmentsAndVersionsStore( + (state) => ({ + appVersionsLazyLoaded: state.appVersionsLazyLoaded, + versionsPromotedToEnvironment: state.versionsPromotedToEnvironment, + lazyLoadAppVersions: state.actions.lazyLoadAppVersions, + createNewVersionAction: state.actions.createNewVersionAction, + }), + shallow + ); const { t } = useTranslation(); const { editingVersion } = useAppVersionStore( @@ -46,30 +54,29 @@ export const CreateVersion = ({ setIsCreatingVersion(true); - appVersionService - .create(appId, versionName, selectedVersion.id) - .then((data) => { + createNewVersionAction( + appId, + versionName, + selectedVersion.id, + (newVersion) => { toast.success('Version Created'); - appVersionService.getAll(appId).then((data) => { - setVersionName(''); - setIsCreatingVersion(false); - setAppVersions(data.versions); - setShowCreateAppVersion(false); - }); - + setVersionName(''); + setIsCreatingVersion(false); + setShowCreateAppVersion(false); appVersionService - .getAppVersionData(appId, data.id) + .getAppVersionData(appId, newVersion.id) .then((data) => { setAppDefinitionFromVersion(data); }) .catch((error) => { toast.error(error); }); - }) - .catch((error) => { + }, + (error) => { toast.error(error?.error); setIsCreatingVersion(false); - }); + } + ); }; return ( diff --git a/frontend/src/Editor/AppVersionsManager/EditVersionModal.jsx b/frontend/src/Editor/AppVersionsManager/EditVersionModal.jsx index e7e91a5dac..1ba1a30994 100644 --- a/frontend/src/Editor/AppVersionsManager/EditVersionModal.jsx +++ b/frontend/src/Editor/AppVersionsManager/EditVersionModal.jsx @@ -1,19 +1,19 @@ import React, { useState } from 'react'; -import { appVersionService } from '@/_services'; import AlertDialog from '@/_ui/AlertDialog'; import { toast } from 'react-hot-toast'; import { useTranslation } from 'react-i18next'; +import { shallow } from 'zustand/shallow'; +import { useEnvironmentsAndVersionsStore } from '@/_stores/environmentsAndVersionsStore'; -export const EditVersion = ({ - appId, - value: editingVersionId, - setAppVersions, - setShowEditAppVersion, - showEditAppVersion, - appVersions, -}) => { +export const EditVersion = ({ appId, setShowEditAppVersion, showEditAppVersion }) => { const [isEditingVersion, setIsEditingVersion] = useState(false); - const editingVersion = appVersions?.find((version) => version.id === editingVersionId); + const { updateVersionNameAction, selectedVersion: editingVersion } = useEnvironmentsAndVersionsStore( + (state) => ({ + updateVersionNameAction: state.actions.updateVersionNameAction, + selectedVersion: state.selectedVersion, + }), + shallow + ); const [versionName, setVersionName] = useState(editingVersion?.name || ''); const { t } = useTranslation(); @@ -28,21 +28,20 @@ export const EditVersion = ({ } setIsEditingVersion(true); - appVersionService - .save(appId, editingVersionId, { name: versionName }) - .then(() => { + updateVersionNameAction( + appId, + editingVersion?.id, + versionName, + () => { toast.success('Version name updated'); - appVersionService.getAll(appId).then((data) => { - const versions = data.versions; - setAppVersions(versions); - }); setIsEditingVersion(false); setShowEditAppVersion(false); - }) - .catch((error) => { + }, + (error) => { setIsEditingVersion(false); toast.error(error?.error); - }); + } + ); }; return ( diff --git a/frontend/src/Editor/AutoLayoutAlert.jsx b/frontend/src/Editor/AutoLayoutAlert.jsx new file mode 100644 index 0000000000..4ab887291e --- /dev/null +++ b/frontend/src/Editor/AutoLayoutAlert.jsx @@ -0,0 +1,34 @@ +import React from 'react'; +import SolidIcon from '@/_ui/Icon/SolidIcons'; +import { ButtonSolid } from '@/_ui/AppButton/AppButton'; + +export default function AutoLayoutAlert({ show, onClick }) { + if (!show) { + return ''; + } + return ( + + + + + + You have to disable auto alignment to manually adjust mobile components. Once disabled, the mobile layout will + not automatically align with desktop changes + + Disable auto alignment + + + + ); +} diff --git a/frontend/src/Editor/Box.jsx b/frontend/src/Editor/Box.jsx index 8f1e780bb7..17a16a643f 100644 --- a/frontend/src/Editor/Box.jsx +++ b/frontend/src/Editor/Box.jsx @@ -1,381 +1,35 @@ -import React, { useEffect, useState, useMemo, useContext, memo } from 'react'; -import { Button } from './Components/Button'; -import { Image } from './Components/Image'; -import { Text } from './Components/Text'; -import { Table } from './Components/Table/Table'; -import { TextInput } from './Components/TextInput'; -import { NumberInput } from './Components/NumberInput'; -import { TextArea } from './Components/TextArea'; -import { Container } from './Components/Container'; -import { Tabs } from './Components/Tabs'; -import { RichTextEditor } from './Components/RichTextEditor'; -import { DropDown } from './Components/DropDown'; -import { Checkbox } from './Components/Checkbox'; -import { Datepicker } from './Components/Datepicker'; -import { DaterangePicker } from './Components/DaterangePicker'; -import { Multiselect } from './Components/Multiselect'; -import { Modal } from './Components/Modal'; -import { Chart } from './Components/Chart'; -import { Map } from './Components/Map/Map'; -import { QrScanner } from './Components/QrScanner/QrScanner'; -import { ToggleSwitch } from './Components/Toggle'; -import { RadioButton } from './Components/RadioButton'; -import { StarRating } from './Components/StarRating'; -import { Divider } from './Components/Divider'; -import { FilePicker } from './Components/FilePicker'; -import { PasswordInput } from './Components/PasswordInput'; -import { Calendar } from './Components/Calendar'; -import { Listview } from './Components/Listview'; -import { IFrame } from './Components/IFrame'; -import { CodeEditor } from './Components/CodeEditor'; -import { Timer } from './Components/Timer'; -import { Statistics } from './Components/Statistics'; -import { Pagination } from './Components/Pagination'; -import { Tags } from './Components/Tags'; -import { Spinner } from './Components/Spinner'; -import { CircularProgressBar } from './Components/CirularProgressbar'; -import { renderTooltip, getComponentName } from '@/_helpers/appUtils'; -import { RangeSlider } from './Components/RangeSlider'; -import { Timeline } from './Components/Timeline'; -import { SvgImage } from './Components/SvgImage'; -import { Html } from './Components/Html'; -import { ButtonGroup } from './Components/ButtonGroup'; -import { CustomComponent } from './Components/CustomComponent/CustomComponent'; -import { VerticalDivider } from './Components/verticalDivider'; -import { ColorPicker } from './Components/ColorPicker'; -import { KanbanBoard } from './Components/KanbanBoard/KanbanBoard'; -import { Kanban } from './Components/Kanban/Kanban'; -import { Steps } from './Components/Steps'; -import { TreeSelect } from './Components/TreeSelect'; -import { Icon } from './Components/Icon'; -import { Link } from './Components/Link'; -import { Form } from './Components/Form/Form'; -import { BoundedBox } from './Components/BoundedBox/BoundedBox'; -import OverlayTrigger from 'react-bootstrap/OverlayTrigger'; -import '@/_styles/custom.scss'; -import { validateProperties } from './component-properties-validation'; -import { validateWidget } from '@/_helpers/utils'; -import { componentTypes } from './WidgetManager/components'; -import { - resolveProperties, - resolveStyles, - resolveGeneralProperties, - resolveGeneralStyles, -} from './component-properties-resolution'; +import React from 'react'; +import HydrateWithResolveReferences from './Middlewares/HydrateWithResolveReferences'; +import BoxUI from './BoxUI'; import _ from 'lodash'; -import { EditorContext } from '@/Editor/Context/EditorContextWrapper'; -import { useTranslation } from 'react-i18next'; -import { useCurrentState } from '@/_stores/currentStateStore'; -import { useAppInfo } from '@/_stores/appDataStore'; -import { isPDFSupported } from '@/_stores/utils'; +import { useEditorStore } from '@/_stores/editorStore'; +import { shallow } from 'zustand/shallow'; -export const AllComponents = { - Button, - Image, - Text, - TextInput, - NumberInput, - Table, - TextArea, - Container, - Tabs, - RichTextEditor, - DropDown, - Checkbox, - Datepicker, - DaterangePicker, - Multiselect, - Modal, - Chart, - Map, - QrScanner, - ToggleSwitch, - RadioButton, - StarRating, - Divider, - FilePicker, - PasswordInput, - Calendar, - IFrame, - CodeEditor, - Listview, - Timer, - Statistics, - Pagination, - Tags, - Spinner, - CircularProgressBar, - RangeSlider, - Timeline, - SvgImage, - Html, - ButtonGroup, - CustomComponent, - VerticalDivider, - ColorPicker, - KanbanBoard, - Kanban, - Steps, - TreeSelect, - Link, - Icon, - Form, - BoundedBox, -}; - -/** - * Conditionally importing PDF component since importing it breaks app in older versions of browsers. - * refer: https://github.com/wojtekmaj/react-pdf?tab=readme-ov-file#compatibility - **/ -if (isPDFSupported()) { - AllComponents.PDF = await import('./Components/PDF').then((module) => module.PDF); +function deepEqualityCheckusingLoDash(obj1, obj2) { + return _.isEqual(obj1, obj2); } -export const Box = memo( - ({ - id, - width, - height, - yellow, - preview, - component, - inCanvas, - onComponentClick, - onEvent, - onComponentOptionChanged, - onComponentOptionsChanged, - paramUpdated, - changeCanDrag, - containerProps, - removeComponent, - canvasWidth, - mode, - customResolvables, - parentId, - sideBarDebugger, - readOnly, - childComponents, - isResizing, - adjustHeightBasedOnAlignment, - currentLayout, - darkMode, - }) => { - const { t } = useTranslation(); - const backgroundColor = yellow ? 'yellow' : ''; - const currentState = useCurrentState(); - const { events } = useAppInfo(); - const shouldAddBoxShadowAndVisibility = ['TextInput', 'PasswordInput', 'NumberInput', 'Text']; +export const shouldUpdate = (prevProps, nextProps) => { + return ( + deepEqualityCheckusingLoDash(prevProps?.id, nextProps?.id) && + deepEqualityCheckusingLoDash(prevProps?.component?.definition, nextProps?.component?.definition) && + prevProps?.width === nextProps?.width && + prevProps?.height === nextProps?.height + ); +}; - const componentMeta = useMemo(() => { - return componentTypes.find((comp) => component.component === comp.component); - }, [component]); +export const Box = (props) => { + const { id, component, mode, customResolvables } = props; - const ComponentToRender = AllComponents[component.component]; - const [renderCount, setRenderCount] = useState(0); - const [renderStartTime, setRenderStartTime] = useState(new Date()); - const [resetComponent, setResetStatus] = useState(false); + /** + * !This component does not consume the value returned from the below hook. + * Only purpose of the hook is to force one rerender the component + * */ + useEditorStore((state) => state.componentsNeedsUpdateOnNextRender.find((compId) => compId === id), shallow); - const resolvedProperties = resolveProperties(component, currentState, null, customResolvables); - const [validatedProperties, propertyErrors] = - mode === 'edit' && component.validate - ? validateProperties(resolvedProperties, componentMeta.properties) - : [resolvedProperties, []]; - if (shouldAddBoxShadowAndVisibility.includes(component.component)) { - validatedProperties.visibility = validatedProperties.visibility !== false ? true : false; - } - - const resolvedStyles = resolveStyles(component, currentState, null, customResolvables); - const [validatedStyles, styleErrors] = - mode === 'edit' && component.validate - ? validateProperties(resolvedStyles, componentMeta.styles) - : [resolvedStyles, []]; - if (!shouldAddBoxShadowAndVisibility.includes(component.component)) { - validatedStyles.visibility = validatedStyles.visibility !== false ? true : false; - } - const resolvedGeneralProperties = resolveGeneralProperties(component, currentState, null, customResolvables); - const [validatedGeneralProperties, generalPropertiesErrors] = - mode === 'edit' && component.validate - ? validateProperties(resolvedGeneralProperties, componentMeta.general) - : [resolvedGeneralProperties, []]; - - const resolvedGeneralStyles = resolveGeneralStyles(component, currentState, null, customResolvables); - - const [validatedGeneralStyles, generalStylesErrors] = - mode === 'edit' && component.validate - ? validateProperties(resolvedGeneralStyles, componentMeta.generalStyles) - : [resolvedGeneralStyles, []]; - - const { variablesExposedForPreview, exposeToCodeHinter } = useContext(EditorContext) || {}; - - let styles = { - height: '100%', - }; - - if (inCanvas) { - styles = { - ...styles, - }; - } - useEffect(() => { - if (!component?.parent) { - onComponentOptionChanged && onComponentOptionChanged(component, 'id', id); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); /*computeComponentState was not getting the id on initial render therefore exposed variables were not set. - computeComponentState was being executed before addNewWidgetToTheEditor was completed.*/ - - useEffect(() => { - const currentPage = currentState?.page; - const componentName = getComponentName(currentState, id); - const errorLog = Object.fromEntries( - [...propertyErrors, ...styleErrors, ...generalPropertiesErrors, ...generalStylesErrors].map((error) => [ - `${componentName} - ${error.property}`, - { - page: currentPage, - type: 'component', - kind: 'component', - strace: 'page_level', - data: { message: `${error.message}`, status: true }, - resolvedProperties: resolvedProperties, - effectiveProperties: validatedProperties, - }, - ]) - ); - sideBarDebugger?.error(errorLog); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [JSON.stringify({ propertyErrors, styleErrors, generalPropertiesErrors })]); - - useEffect(() => { - setRenderCount(renderCount + 1); - if (renderCount > 10) { - setRenderCount(0); - const currentTime = new Date(); - const timeDifference = Math.abs(currentTime - renderStartTime); - if (timeDifference < 1000) { - throw Error; - } - setRenderStartTime(currentTime); - } - - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [JSON.stringify({ resolvedProperties, resolvedStyles })]); - - useEffect(() => { - if (customResolvables && !readOnly && mode === 'edit') { - const newCustomResolvable = {}; - newCustomResolvable[id] = { ...customResolvables }; - exposeToCodeHinter((prevState) => ({ ...prevState, ...newCustomResolvable })); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [JSON.stringify(customResolvables), readOnly]); - useEffect(() => { - if (resetComponent) setResetStatus(false); - }, [resetComponent]); - - let exposedVariables = currentState?.components[component.name] ?? {}; - const fireEvent = (eventName, options) => { - if (mode === 'edit' && eventName === 'onClick') { - onComponentClick(id, component); - } - - const componentEvents = events.filter((event) => event.sourceId === id); - - onEvent(eventName, componentEvents, { ...options, customVariables: { ...customResolvables } }); - }; - const validate = (value) => - validateWidget({ - ...{ widgetValue: value }, - ...{ validationObject: component.definition.validation, currentState }, - customResolveObjects: customResolvables, - }); - - const shouldHideWidget = component.component === 'PDF' && !isPDFSupported(); - - return ( - - renderTooltip({ - props, - text: inCanvas - ? `${ - shouldAddBoxShadowAndVisibility.includes(component.component) - ? validatedProperties.tooltip - : validatedGeneralProperties.tooltip - }` - : `${t(`widget.${component.name}.description`, component.description)}`, - }) - } - > - - {!resetComponent && !shouldHideWidget ? ( - onComponentOptionChanged(component, variable, value, id)} - setExposedVariables={(variableSet) => - onComponentOptionsChanged(component, Object.entries(variableSet), id) - } - fireEvent={fireEvent} - validate={validate} - parentId={parentId} - customResolvables={customResolvables} - variablesExposedForPreview={variablesExposedForPreview} - exposeToCodeHinter={exposeToCodeHinter} - setProperty={(property, value) => { - paramUpdated(id, property, { value }); - }} - mode={mode} - resetComponent={() => setResetStatus(true)} - childComponents={childComponents} - dataCy={`draggable-widget-${String(component.name).toLowerCase()}`} - isResizing={isResizing} - adjustHeightBasedOnAlignment={adjustHeightBasedOnAlignment} - currentLayout={currentLayout} - > - ) : ( - <>> - )} - - - ); - } -); + return ( + + + + ); +}; diff --git a/frontend/src/Editor/BoxDragPreview.jsx b/frontend/src/Editor/BoxDragPreview.jsx index 01d4565777..277cc84315 100644 --- a/frontend/src/Editor/BoxDragPreview.jsx +++ b/frontend/src/Editor/BoxDragPreview.jsx @@ -33,7 +33,7 @@ export const BoxDragPreview = memo(function BoxDragPreview({ item, canvasWidth } > { + const { t } = useTranslation(); + + const { + inCanvas, + component, + properties, + styles, + generalProperties, + generalStyles, + mode, + onComponentClick, + onEvent, + id, + getContainerProps, + paramUpdated, + width, + height, + changeCanDrag, + removeComponent, + canvasWidth, + parentId, + customResolvables, + currentLayout, + readOnly, + currentPageId, + onOptionChanged, + onOptionsChanged, + isFromSubContainer, + childComponents, + darkMode, + } = props; + + const { variablesExposedForPreview, exposeToCodeHinter } = useContext(EditorContext) || {}; + + const currentState = useCurrentState(); + + const validate = (value) => + validateWidget({ + ...{ widgetValue: value }, + ...{ validationObject: component.definition.validation, currentState }, + customResolveObjects: customResolvables, + }); + + useEffect(() => { + if (customResolvables && !readOnly && mode === 'edit') { + const newCustomResolvable = {}; + newCustomResolvable[id] = { ...customResolvables }; + exposeToCodeHinter((prevState) => ({ ...prevState, ...newCustomResolvable })); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [JSON.stringify(customResolvables), readOnly]); + + let exposedVariables = !_.isEmpty(currentState?.components) ? currentState?.components[component.name] ?? {} : {}; + const fireEvent = (eventName, options) => { + if (mode === 'edit' && eventName === 'onClick') { + onComponentClick(id, component); + } + + const componentEvents = useAppDataStore.getState().events.filter((event) => event.sourceId === id); + + onEvent(eventName, componentEvents, { ...options, customVariables: { ...customResolvables } }); + }; + + let _styles = { + height: '100%', + }; + + useEffect(() => { + if (!component?.parent) { + onComponentOptionChanged(component, 'id', id); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + return ( + + renderTooltip({ + props, + text: inCanvas + ? `${ + shouldAddBoxShadowAndVisibility.includes(component.component) + ? properties.tooltip + : generalProperties.tooltip + }` + : `${t(`widget.${component.name}.description`, component.description)}`, + }) + } + > + + + isFromSubContainer + ? onOptionChanged(component, variable, value, id) + : onComponentOptionChanged(component, variable, value, id) + } + setExposedVariables={(variableSet) => { + if (isFromSubContainer) { + onOptionsChanged(component, Object.entries(variableSet), id); + } else { + onComponentOptionsChanged(component, Object.entries(variableSet), id); + } + }} + height={height} + component={component} + containerProps={getContainerProps(id)} + darkMode={darkMode} + removeComponent={removeComponent} + canvasWidth={canvasWidth} + properties={properties} + exposedVariables={exposedVariables} + styles={{ + ...styles, + ...(!shouldAddBoxShadowAndVisibility.includes(component.component) + ? { boxShadow: generalStyles?.boxShadow } + : {}), + }} + fireEvent={fireEvent} + validate={validate} + parentId={parentId} + customResolvables={customResolvables} + variablesExposedForPreview={variablesExposedForPreview} + exposeToCodeHinter={exposeToCodeHinter} + setProperty={(property, value) => { + paramUpdated(id, property, { value }); + }} + mode={mode} + // resetComponent={() => setResetStatus(true)} + dataCy={`draggable-widget-${String(component.name).toLowerCase()}`} + currentLayout={currentLayout} + currentState={currentState} + currentPageId={currentPageId} + getContainerProps={component.component === 'Form' ? getContainerProps : null} + childComponents={childComponents} + /> + + + ); +}; + +export default BoxUI; diff --git a/frontend/src/Editor/CodeBuilder/CodeBuilder.jsx b/frontend/src/Editor/CodeBuilder/CodeBuilder.jsx index 2e3c701190..e7e6a10adf 100644 --- a/frontend/src/Editor/CodeBuilder/CodeBuilder.jsx +++ b/frontend/src/Editor/CodeBuilder/CodeBuilder.jsx @@ -1,6 +1,5 @@ import React, { useState } from 'react'; import CodeMirror from '@uiw/react-codemirror'; -import 'codemirror/theme/duotone-light.css'; import { componentTypes } from '../WidgetManager/components'; import { DataSourceTypes } from '../DataSourceManager/SourceComponents'; import { debounce } from 'lodash'; @@ -96,7 +95,6 @@ export function CodeBuilder({ initialValue, onChange, components }) { return { item: item }; }); } else { - console.log(currentWord); filteredVariables = fuse.search(currentWord); } return filteredVariables.map((variable) => renderVariable(type, key, variable.item.name)); diff --git a/frontend/src/Editor/CodeBuilder/CodeHinter.jsx b/frontend/src/Editor/CodeBuilder/CodeHinter.jsx deleted file mode 100644 index 378cce3ce3..0000000000 --- a/frontend/src/Editor/CodeBuilder/CodeHinter.jsx +++ /dev/null @@ -1,663 +0,0 @@ -import React, { useEffect, useState, useRef, useContext } from 'react'; -import { useSpring, config, animated } from 'react-spring'; -import OverlayTrigger from 'react-bootstrap/OverlayTrigger'; -import Tooltip from 'react-bootstrap/Tooltip'; -import CodeMirror from '@uiw/react-codemirror'; -import 'codemirror/mode/handlebars/handlebars'; -import 'codemirror/mode/javascript/javascript'; -import 'codemirror/mode/sql/sql'; -import 'codemirror/addon/hint/show-hint'; -import 'codemirror/addon/display/placeholder'; -import 'codemirror/addon/search/match-highlighter'; -import 'codemirror/addon/hint/show-hint.css'; -import 'codemirror/theme/base16-light.css'; -import 'codemirror/theme/duotone-light.css'; -import 'codemirror/theme/monokai.css'; -import { onBeforeChange, handleChange } from './utils'; -import { resolveReferences, hasCircularDependency, handleCircularStructureToJSON } from '@/_helpers/utils'; -import useHeight from '@/_hooks/use-height-transition'; -import usePortal from '@/_hooks/use-portal'; -import { Color } from './Elements/Color'; -import { Json } from './Elements/Json'; -import { Select } from './Elements/Select'; -import { Toggle } from './Elements/Toggle'; -import { AlignButtons } from './Elements/AlignButtons'; -import { TypeMapping } from './TypeMapping'; -import { Number } from './Elements/Number'; -import { BoxShadow } from './Elements/BoxShadow'; -import FxButton from './Elements/FxButton'; -import { ToolTip } from '../Inspector/Elements/Components/ToolTip'; -import { toast } from 'react-hot-toast'; -import { EditorContext } from '@/Editor/Context/EditorContextWrapper'; -import { camelCase } from 'lodash'; -import { useTranslation } from 'react-i18next'; -import cx from 'classnames'; -import { Alert } from '@/_ui/Alert/Alert'; -import { useCurrentState } from '@/_stores/currentStateStore'; -import ClientServerSwitch from './Elements/ClientServerSwitch'; -import { CodeHinterContext } from './CodeHinterContext'; -import Switch from './Elements/Switch'; -import Checkbox from './Elements/Checkbox'; -import Slider from './Elements/Slider'; -import { Input } from './Elements/Input'; -import { Icon } from './Elements/Icon'; -import { Visibility } from './Elements/Visibility'; -import { NumberInput } from './Elements/NumberInput'; -import TableRowHeightInput from './Elements/TableRowHeightInput'; - -import { validateProperty } from '../component-properties-validation'; - -const HIDDEN_CODE_HINTER_LABELS = ['Table data', 'Column data', 'Text Format', 'TextComponentTextInput']; - -const AllElements = { - Color, - Json, - Toggle, - Select, - AlignButtons, - Number, - BoxShadow, - ClientServerSwitch, - Slider, - Switch, - Input, - Checkbox, - Icon, - Visibility, - NumberInput, - TableRowHeightInput, -}; - -export function CodeHinter({ - initialValue, - onChange, - onVisibilityChange, - mode, - theme, - lineNumbers, - placeholder, - ignoreBraces, - enablePreview, - height, - minHeight, - lineWrapping, - componentName = null, - usePortalEditor = true, - className, - width = '', - paramName, - paramLabel, - type, - fieldMeta, - onFxPress, - fxActive, - component, - popOverCallback, - cyLabel = '', - callgpt = () => null, - isCopilotEnabled = false, - currentState: _currentState, - isIcon = false, - inspectorTab, - staticText, -}) { - const context = useContext(CodeHinterContext); - - const darkMode = localStorage.getItem('darkMode') === 'true'; - const options = { - lineNumbers: lineNumbers ?? false, - lineWrapping: lineWrapping ?? true, - singleLine: true, - mode: mode || 'handlebars', - tabSize: 2, - theme: theme ? theme : darkMode ? 'monokai' : 'default', - readOnly: false, - highlightSelectionMatches: true, - placeholder, - }; - const currentState = useCurrentState(); - const definedConstants = currentState?.constants; - const [realState, setRealState] = useState({ ...currentState, ..._currentState, ...context }); - - const [currentValue, setCurrentValue] = useState(''); - - const [prevCurrentValue, setPrevCurrentValue] = useState(null); - const [resolvedValue, setResolvedValue] = useState(null); - const [resolvingError, setResolvingError] = useState(null); - - const [isFocused, setFocused] = useState(false); - const [heightRef, currentHeight] = useHeight(); - const isPreviewFocused = useRef(false); - const [isPropertyHovered, setPropertyHovered] = useState(false); - const wrapperRef = useRef(null); - - // Todo: Remove this when workspace variables are deprecated - const isWorkspaceVariable = - typeof currentValue === 'string' && (currentValue.includes('%%client') || currentValue.includes('%%server')); - - const constantRegex = /{{constants\.([a-zA-Z0-9_]+)}}/g; - - const slideInStyles = useSpring({ - config: { ...config.stiff }, - from: { opacity: 0, height: 0 }, - to: { - opacity: isFocused ? 1 : 0, - height: isFocused ? currentHeight + (isWorkspaceVariable ? 30 : 0) : 0, - }, - }); - const { t } = useTranslation(); - const { variablesExposedForPreview } = useContext(EditorContext); - const prevCountRef = useRef(false); - - function getPropertyDefinition(paramName, component) { - if (component?.properties?.hasOwnProperty(`${paramName}`)) { - return component.properties?.[paramName]; - } else if (component?.styles?.hasOwnProperty(`${paramName}`)) { - return component?.styles?.[paramName]; - } else if (component?.general?.hasOwnProperty(`${paramName}`)) { - return component?.general?.[paramName]; - } else if (component?.generalStyles?.hasOwnProperty(`${paramName}`)) { - return component?.generalStyles?.[paramName]; - } else { - return {}; - } - } - - const checkTypeErrorInRunTime = (preview) => { - const propertyDefinition = getPropertyDefinition(paramName, component?.component); - const resolvedProperty = Object.keys(component?.component?.definition || {}).reduce((accumulator, currentKey) => { - if ( - component?.component?.definition?.[currentKey]?.hasOwnProperty(paramName) || - (paramName === 'tooltip' && - currentKey === 'general' && - !component?.component?.definition?.[currentKey]?.hasOwnProperty(paramName)) - //added second condition because initilly general is empty object and hence it was not going inside if statement and thus codehinter was always receiving undefined for initial render and thus showing error message in the preview - ) { - accumulator[`${paramName}`] = resolveReferences(preview, currentState); - } - return accumulator; - }, {}); - const [_valid, errorMessages] = validateProperty(resolvedProperty, propertyDefinition, paramName); - return [_valid, errorMessages]; - }; - - const getPreviewAndErrorFromValue = (value) => { - const customResolvables = getCustomResolvables(); - const invalidConstants = verifyConstant(value); - if (invalidConstants?.length) { - return [value, `undefined constants: ${invalidConstants}`]; - } - const [preview, error] = resolveReferences(value, realState, null, customResolvables, true, true); - return [preview, error]; - }; - - const verifyConstant = (value) => { - if (typeof value !== 'string') { - return []; - } - const matches = value.match(constantRegex); - if (!matches) { - return []; - } - const resolvedMatches = matches.map((match) => { - const cleanedMatch = match.replace(/{{constants\./, '').replace(/}}/, ''); - return Object.keys(definedConstants).includes(cleanedMatch) ? null : cleanedMatch; - }); - const invalidConstants = resolvedMatches?.filter((item) => item != null); - if (invalidConstants?.length) { - return invalidConstants; - } - }; - - useEffect(() => { - setCurrentValue(initialValue); - const [preview, error] = getPreviewAndErrorFromValue(initialValue); - const [_valid] = checkTypeErrorInRunTime(preview); - if (!_valid || error) setResolvingError(true); - return () => { - setPrevCurrentValue(null); - setResolvedValue(null); - setResolvingError(null); - }; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, []); - - useEffect(() => { - const newState = { ...currentState, ..._currentState, ...context }; - setRealState(newState); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [JSON.stringify([currentState.components, _currentState, context])]); - - useEffect(() => { - const handleClickOutside = (event) => { - if (isOpen) { - return; - } - if (wrapperRef.current && isFocused && !wrapperRef.current.contains(event.target) && prevCountRef.current) { - isPreviewFocused.current = false; - setFocused(false); - prevCountRef.current = false; - } else if (isFocused) { - prevCountRef.current = true; - } else if (!isFocused && prevCountRef.current) prevCountRef.current = false; - }; - document.addEventListener('mousedown', handleClickOutside); - return () => { - document.removeEventListener('mousedown', handleClickOutside); - }; - }, [wrapperRef, isFocused, isPreviewFocused, currentValue, prevCountRef, isOpen]); - - const updatePreview = () => { - let globalPreviewCopy = null; - let globalErrorCopy = null; - const [preview, error] = getPreviewAndErrorFromValue(currentValue); - setPrevCurrentValue(currentValue); - - const [_valid, errorMessages] = checkTypeErrorInRunTime(preview); - - setPrevCurrentValue(currentValue); - if (error || !_valid || typeof preview === 'function') { - globalPreviewCopy = null; - globalErrorCopy = error || errorMessages?.[errorMessages?.length - 1]; - setResolvingError(error || errorMessages?.[errorMessages?.length - 1]); - setResolvedValue(null); - } else { - globalPreviewCopy = preview; - globalErrorCopy = null; - setResolvingError(null); - setResolvedValue(preview); - } - - return [globalPreviewCopy, globalErrorCopy]; - }; - - useEffect(() => { - let [globalPreviewCopy, globalErrorCopy] = enablePreview ? updatePreview() : [null, null]; - - return () => { - if (enablePreview) { - setPrevCurrentValue(null); - setResolvedValue(globalPreviewCopy); - setResolvingError(globalErrorCopy); - } - }; - }, [JSON.stringify({ currentValue, realState, isFocused, context })]); - // eslint-disable-next-line react-hooks/exhaustive-deps - // }, [JSON.stringify({ currentValue, realState, isFocused, context })]); - - function valueChanged(editor, onChange, ignoreBraces) { - if (editor.getValue()?.trim() !== currentValue) { - handleChange(editor, onChange, ignoreBraces, realState, componentName, getCustomResolvables()); - setCurrentValue(editor.getValue()?.trim()); - } - } - - const getPreviewContent = (content, type) => { - try { - switch (type) { - case 'object': - return JSON.stringify(content); - case 'boolean': - return content.toString(); - default: - return content; - } - } catch (e) { - return undefined; - } - }; - - const focusPreview = () => (isPreviewFocused.current = true); - const unFocusPreview = () => (isPreviewFocused.current = false); - - const copyToClipboard = (text) => { - navigator.clipboard.writeText(text); - toast.success('Copied to clipboard'); - }; - - const getCustomResolvables = () => { - if (variablesExposedForPreview.hasOwnProperty(component?.id)) { - if (component?.component?.component === 'Table' && fieldMeta?.name) { - return { - ...variablesExposedForPreview[component?.id], - cellValue: variablesExposedForPreview[component?.id]?.rowData?.[fieldMeta?.name], - rowData: { ...variablesExposedForPreview[component?.id]?.rowData }, - }; - } - return variablesExposedForPreview[component.id]; - } - return {}; - }; - - const getPreview = () => { - if (!enablePreview) return; - const themeCls = darkMode ? 'bg-dark py-1' : 'bg-light py-1'; - const preview = resolvedValue; - const error = resolvingError; - - if (resolvingError !== null && resolvedValue === null && error) { - const err = String(error); - const errorMessage = err.includes('.run()') - ? `${err} in ${componentName ? componentName.split('::')[0] + "'s" : 'fx'} field` - : err; - return ( - - - - - Error - - {errorMessage} - - - - ); - } - - let previewType = typeof preview; - let previewContent = preview; - - if (hasCircularDependency(preview)) { - previewContent = JSON.stringify(preview, handleCircularStructureToJSON()); - previewType = typeof previewContent; - } - const content = getPreviewContent(previewContent, previewType); - return ( - focusPreview()} - onMouseLeave={() => unFocusPreview()} - > - - - - - {previewType} - - {isFocused && ( - - copyToClipboard(content)} icon="copy" tip="Copy to clipboard" /> - - )} - - {content} - - - {/* Todo: Remove this when workspace variables are deprecated */} - {enablePreview && isWorkspaceVariable && ( - - )} - - ); - }; - enablePreview = enablePreview ?? true; - - const [isOpen, setIsOpen] = React.useState(false); - - const handleToggle = () => { - const changeOpen = (newOpen) => { - setIsOpen(newOpen); - if (typeof popOverCallback === 'function') popOverCallback(newOpen); - }; - - if (!isOpen) { - changeOpen(true); - } - - return new Promise((resolve) => { - const element = document.getElementsByClassName('portal-container'); - if (element) { - const checkPortalExits = element[0]?.classList.contains(componentName); - - if (checkPortalExits === false) { - const parent = element[0].parentNode; - parent.removeChild(element[0]); - } - - changeOpen(false); - resolve(); - } - }).then(() => { - changeOpen(true); - forceUpdate(); - }); - }; - const [, forceUpdate] = React.useReducer((x) => x + 1, 0); - - const defaultClassName = - className === 'query-hinter' || className === 'custom-component' || undefined ? '' : 'code-hinter'; - - const ElementToRender = AllElements[TypeMapping[type]]; - const [forceCodeBox, setForceCodeBox] = useState(fxActive); - const codeShow = (type ?? 'code') === 'code' || forceCodeBox; - cyLabel = paramLabel ? paramLabel.toLowerCase().trim().replace(/\s+/g, '-') : cyLabel; - - const fxBtn = () => ( - - {![ - 'Type', - 'selectRowOnCellEdit', - 'Select row on cell edit', - ' ', - 'Padding', - 'Width', - 'Make all columns editable', - ].includes(paramLabel) && ( //add some key if these extends - { - if (codeShow) { - setForceCodeBox(false); - onFxPress(false); - } else { - setForceCodeBox(true); - onFxPress(true); - } - }} - dataCy={cyLabel} - /> - )} - - ); - - const _renderFxBtn = () => { - if (inspectorTab === 'styles') { - return isPropertyHovered || codeShow ? fxBtn() : null; - } else { - return fxBtn(); - } - }; - - const onFocusHandler = () => { - setFocused(true); - updatePreview(); - }; - - return ( - setPropertyHovered(true)} - onMouseLeave={() => setPropertyHovered(false)} - > - - {paramLabel && !HIDDEN_CODE_HINTER_LABELS.includes(paramLabel) && ( - - - - )} - - - {!fieldMeta?.isFxNotRequired && _renderFxBtn()} - {!codeShow && ( - { - if (value !== currentValue) { - onChange(value); - setCurrentValue(value); - } - }} - onVisibilityChange={(value) => { - if (value !== currentValue) { - onVisibilityChange(value); - setCurrentValue(value); - } - }} - paramName={paramName} - paramLabel={paramLabel} - forceCodeBox={() => { - setForceCodeBox(true); - onFxPress(true); - }} - meta={fieldMeta} - cyLabel={cyLabel} - isIcon={isIcon} - staticText={staticText} - component={component} - /> - )} - - - - - - - - - {usePortalEditor && ( - - )} - - { - e?.stopPropagation(); - const value = editor?.getValue()?.trimEnd(); - onChange(value); - if (!isPreviewFocused?.current) { - setFocused(false); - } - }} - onChange={(editor) => valueChanged(editor, onChange, ignoreBraces)} - onBeforeChange={(editor, change) => onBeforeChange(editor, change, ignoreBraces)} - options={options} - viewportMargin={Infinity} - /> - - - {enablePreview && !isOpen && getPreview()} - - - - - - ); -} - -const PopupIcon = ({ callback, icon, tip, transformation = false }) => { - const size = transformation ? 20 : 12; - - return ( - - {tip}} - > - { - e.stopPropagation(); - callback(); - }} - /> - - - ); -}; - -const Portal = ({ children, ...restProps }) => { - const renderPortal = usePortal({ children, ...restProps }); - - return {renderPortal}; -}; - -const DepericatedAlertForWorkspaceVariable = ({ text }) => { - return ( - - - {text} - - - ); -}; - -CodeHinter.PopupIcon = PopupIcon; -CodeHinter.Portal = Portal; -CodeHinter.DepericatedAlertForWorkspaceVariable = DepericatedAlertForWorkspaceVariable; diff --git a/frontend/src/Editor/CodeBuilder/Elements/BoxShadow.jsx b/frontend/src/Editor/CodeBuilder/Elements/BoxShadow.jsx index 1ceb87a1c1..535ba46ef7 100644 --- a/frontend/src/Editor/CodeBuilder/Elements/BoxShadow.jsx +++ b/frontend/src/Editor/CodeBuilder/Elements/BoxShadow.jsx @@ -142,7 +142,7 @@ export const BoxShadow = ({ value, onChange, cyLabel }) => { ); }; - const _value = `#${value.split('#')[1]}`; + const _value = `#${(value || '').split('#')[1]}`; const outerStyles = { width: '142px', height: '32px', diff --git a/frontend/src/Editor/CodeBuilder/Elements/Checkbox.jsx b/frontend/src/Editor/CodeBuilder/Elements/Checkbox.jsx index 2ae3ab971c..9939c7d5c2 100644 --- a/frontend/src/Editor/CodeBuilder/Elements/Checkbox.jsx +++ b/frontend/src/Editor/CodeBuilder/Elements/Checkbox.jsx @@ -2,7 +2,6 @@ import React, { useState, useEffect } from 'react'; function Checkbox({ value, onChange }) { const [isChecked, setIsChecked] = useState(value); // Initial state of the checkbox - useEffect(() => { setIsChecked(value); }, [value]); @@ -15,7 +14,7 @@ function Checkbox({ value, onChange }) { checked={isChecked} onChange={() => { setIsChecked(!isChecked); // Toggle the checkbox state - onChange(!isChecked); + onChange(`{{${!isChecked}}}`); }} value={isChecked} style={{ height: '16px', width: '16px' }} diff --git a/frontend/src/Editor/CodeBuilder/Elements/Icon.jsx b/frontend/src/Editor/CodeBuilder/Elements/Icon.jsx index 6b3a56aa15..26d6bf43ec 100644 --- a/frontend/src/Editor/CodeBuilder/Elements/Icon.jsx +++ b/frontend/src/Editor/CodeBuilder/Elements/Icon.jsx @@ -7,7 +7,7 @@ import * as Icons from '@tabler/icons-react'; import { VirtuosoGrid } from 'react-virtuoso'; import { Visibility } from './Visibility'; -export const Icon = ({ value, onChange, onVisibilityChange, component }) => { +export const Icon = ({ value, onChange, onVisibilityChange, styleDefinition, component }) => { const [searchText, setSearchText] = useState(''); const [showPopOver, setPopOverVisibility] = useState(false); const iconList = useRef(Object.keys(Icons)); @@ -81,7 +81,7 @@ export const Icon = ({ value, onChange, onVisibilityChange, component }) => { return ( <> - + { onChange={onChange} onVisibilityChange={onVisibilityChange} component={component} + styleDefinition={styleDefinition} /> diff --git a/frontend/src/Editor/CodeBuilder/Elements/Input.jsx b/frontend/src/Editor/CodeBuilder/Elements/Input.jsx index 1f62662f36..c019e16f1a 100644 --- a/frontend/src/Editor/CodeBuilder/Elements/Input.jsx +++ b/frontend/src/Editor/CodeBuilder/Elements/Input.jsx @@ -1,6 +1,6 @@ import React from 'react'; -export const Input = ({ value, onChange, cyLabel, staticText }) => { +export const Input = ({ value, onChange, cyLabel, meta }) => { return ( { }} /> - {staticText?.length > 0 ? staticText : staticText?.length == 0 ? '' : 'px'} + {meta.staticText?.length > 0 ? meta.staticText : meta.staticText?.length == 0 ? '' : 'px'} ); diff --git a/frontend/src/Editor/CodeBuilder/Elements/Json.jsx b/frontend/src/Editor/CodeBuilder/Elements/Json.jsx index 0d7aebef9c..6c6b68d580 100644 --- a/frontend/src/Editor/CodeBuilder/Elements/Json.jsx +++ b/frontend/src/Editor/CodeBuilder/Elements/Json.jsx @@ -1,6 +1,6 @@ import React from 'react'; import CodeMirror from '@uiw/react-codemirror'; -import 'codemirror/theme/duotone-light.css'; +// import 'codemirror/theme/duotone-light.css'; export const Json = ({ value, onChange }) => { const jsonValue = value diff --git a/frontend/src/Editor/CodeBuilder/Elements/NumberInput.jsx b/frontend/src/Editor/CodeBuilder/Elements/NumberInput.jsx index bec4d3b0be..b1295f5acb 100644 --- a/frontend/src/Editor/CodeBuilder/Elements/NumberInput.jsx +++ b/frontend/src/Editor/CodeBuilder/Elements/NumberInput.jsx @@ -1,6 +1,6 @@ import React from 'react'; -export const NumberInput = ({ value, onChange, cyLabel, staticText }) => { +export const NumberInput = ({ value, onChange, cyLabel, meta }) => { return ( { autoComplete="off" /> - {staticText?.length > 0 ? staticText : staticText?.length == 0 ? '' : 'px'} + {meta.staticText?.length > 0 ? meta.staticText : meta.staticText?.length == 0 ? '' : 'px'} ); diff --git a/frontend/src/Editor/CodeBuilder/Elements/Slider.jsx b/frontend/src/Editor/CodeBuilder/Elements/Slider.jsx index dd9e1f3547..8fb13f5be6 100644 --- a/frontend/src/Editor/CodeBuilder/Elements/Slider.jsx +++ b/frontend/src/Editor/CodeBuilder/Elements/Slider.jsx @@ -5,13 +5,14 @@ import * as Slider from '@radix-ui/react-slider'; import './Slider.scss'; import { debounce } from 'lodash'; -function Slider1({ value, onChange, component }) { +function Slider1({ value, onChange, component, styleDefinition }) { const [sliderValue, setSliderValue] = useState(value ? value : 33); // Initial value of the slider - + const isDisabled = + styleDefinition?.auto?.value === '{{false}}' ? false : styleDefinition?.auto?.value === '{{true}}' ? true : false; useEffect(() => { setSliderValue(value); // eslint-disable-next-line react-hooks/exhaustive-deps - }, [component.id]); + }, [component?.id]); const debouncedOnChange = debounce((value) => { onChange(value); @@ -32,7 +33,7 @@ function Slider1({ value, onChange, component }) { return ( { - onChange(value); + onChange(`{{${value}}}`); }} - disabled={component.component.definition.styles.auto.value} + disabled={isDisabled} > diff --git a/frontend/src/Editor/CodeBuilder/Elements/Switch.jsx b/frontend/src/Editor/CodeBuilder/Elements/Switch.jsx index 526a17f95d..1725edcf70 100644 --- a/frontend/src/Editor/CodeBuilder/Elements/Switch.jsx +++ b/frontend/src/Editor/CodeBuilder/Elements/Switch.jsx @@ -3,7 +3,7 @@ import ToggleGroupItem from '@/ToolJetUI/SwitchGroup/ToggleGroupItem'; import React from 'react'; import cx from 'classnames'; -const Switch = ({ value, onChange, cyLabel, meta, paramName, isIcon }) => { +const Switch = ({ value, onChange, meta }) => { const options = meta?.options; const defaultValue = value; return ( @@ -13,10 +13,10 @@ const Switch = ({ value, onChange, cyLabel, meta, paramName, isIcon }) => { - {isIcon ? option?.iconName ?? '' : option?.displayName} + {meta.isIcon ? option?.iconName ?? '' : option?.displayName} ))} diff --git a/frontend/src/Editor/CodeBuilder/Elements/Visibility.jsx b/frontend/src/Editor/CodeBuilder/Elements/Visibility.jsx index 73d7b2d88d..0b8c100b34 100644 --- a/frontend/src/Editor/CodeBuilder/Elements/Visibility.jsx +++ b/frontend/src/Editor/CodeBuilder/Elements/Visibility.jsx @@ -1,22 +1,20 @@ import React from 'react'; import SolidIcon from '@/_ui/Icon/SolidIcons'; -export const Visibility = ({ value, onVisibilityChange, component }) => { +export const Visibility = ({ onVisibilityChange, styleDefinition }) => { + const iconVisibility = styleDefinition?.iconVisibility?.value || false; + return ( { e.stopPropagation(); - onVisibilityChange(!component.component.definition.styles?.iconVisibility?.value); + onVisibilityChange(!iconVisibility); }} > - + ); }; diff --git a/frontend/src/Editor/CodeBuilder/utils.js b/frontend/src/Editor/CodeBuilder/utils.js index 7851d8e367..c505a36769 100644 --- a/frontend/src/Editor/CodeBuilder/utils.js +++ b/frontend/src/Editor/CodeBuilder/utils.js @@ -65,7 +65,7 @@ function getResult(suggestionList, query) { return suggestions; } -export function getSuggestionKeys(refState, refSource) { +export function getSuggestionKeys(refState) { const state = _.cloneDeep(refState); const queries = state['queries']; const actions = [ @@ -135,11 +135,15 @@ export function getSuggestionKeys(refState, refSource) { return suggestionList.push(key); }); - if (['Runjs', 'Runpy'].includes(refSource)) { - actions.forEach((action) => { - suggestionList.push(`actions.${action}()`); - }); - } + // if (['Runjs', 'Runpy'].includes(refSource)) { + // actions.forEach((action) => { + // suggestionList.push(`actions.${action}()`); + // }); + // } + + actions.forEach((action) => { + suggestionList.push(`actions.${action}()`); + }); return suggestionList; } diff --git a/frontend/src/Editor/CodeEditor/CodeHinter.jsx b/frontend/src/Editor/CodeEditor/CodeHinter.jsx new file mode 100644 index 0000000000..b3a491a334 --- /dev/null +++ b/frontend/src/Editor/CodeEditor/CodeHinter.jsx @@ -0,0 +1,141 @@ +import React from 'react'; +import PropTypes from 'prop-types'; +import { useResolveStore } from '@/_stores/resolverStore'; +import { shallow } from 'zustand/shallow'; +import './styles.scss'; +import SingleLineCodeEditor from './SingleLineCodeEditor'; +import MultiLineCodeEditor from './MultiLineCodeEditor'; +import usePortal from '@/_hooks/use-portal'; +import Tooltip from 'react-bootstrap/Tooltip'; +import OverlayTrigger from 'react-bootstrap/OverlayTrigger'; +import { isNumber } from 'lodash'; +import { Alert } from '@/_ui/Alert/Alert'; + +const CODE_EDITOR_TYPE = { + fxEditor: SingleLineCodeEditor.EditorBridge, + basic: SingleLineCodeEditor, + multiline: MultiLineCodeEditor, + extendedSingleLine: SingleLineCodeEditor, +}; + +const CodeHinter = ({ type = 'basic', initialValue, componentName, ...restProps }) => { + const { suggestions } = useResolveStore( + (state) => ({ + suggestions: state.suggestions, + }), + shallow + ); + + const darkMode = localStorage.getItem('darkMode') === 'true'; + + const [isOpen, setIsOpen] = React.useState(false); + + const handleTogglePopupExapand = () => { + const changeOpen = (newOpen) => { + setIsOpen(newOpen); + if (typeof restProps?.popOverCallback === 'function') restProps?.popOverCallback(newOpen); + }; + + if (!isOpen) { + changeOpen(true); + } + + return new Promise((resolve) => { + const element = document.getElementsByClassName('portal-container'); + if (element) { + const checkPortalExits = element[0]?.classList.contains(componentName); + + if (checkPortalExits === false) { + const parent = element[0].parentNode; + parent.removeChild(element[0]); + } + + changeOpen(false); + resolve(); + } + }).then(() => { + changeOpen(true); + forceUpdate(); + }); + }; + const [, forceUpdate] = React.useReducer((x) => x + 1, 0); + + const RenderCodeEditor = CODE_EDITOR_TYPE[type]; + + return ( + + ); +}; + +const Portal = ({ children, ...restProps }) => { + const renderPortal = usePortal({ children, ...restProps }); + + return {renderPortal}; +}; + +const PopupIcon = ({ callback, icon, tip, position, isMultiEditor = false }) => { + const size = 16; + const topRef = isNumber(position?.height) ? Math.floor(position?.height) - 30 : 32; + let top = isMultiEditor ? 270 : topRef > 32 ? topRef : 0; + return ( + + {tip}} + > + { + e.stopPropagation(); + callback(); + }} + /> + + + ); +}; + +const DepericatedAlertForWorkspaceVariable = ({ text }) => { + return ( + + + {text} + + + ); +}; + +CodeHinter.Portal = Portal; +CodeHinter.PopupIcon = PopupIcon; +CodeHinter.DepericatedAlert = DepericatedAlertForWorkspaceVariable; + +CodeHinter.propTypes = { + type: PropTypes.string.isRequired, +}; + +export default CodeHinter; diff --git a/frontend/src/Editor/CodeEditor/DynamicFxTypeRenderer.jsx b/frontend/src/Editor/CodeEditor/DynamicFxTypeRenderer.jsx new file mode 100644 index 0000000000..5a09cc5513 --- /dev/null +++ b/frontend/src/Editor/CodeEditor/DynamicFxTypeRenderer.jsx @@ -0,0 +1,43 @@ +import React from 'react'; +import { FxParamTypeMapping } from './utils'; +import { Color } from '../CodeBuilder/Elements/Color'; +import { Json } from '../CodeBuilder/Elements/Json'; +import { Select } from '../CodeBuilder/Elements/Select'; +import { Toggle } from '../CodeBuilder/Elements/Toggle'; +import { AlignButtons } from '../CodeBuilder/Elements/AlignButtons'; +import { Number } from '../CodeBuilder/Elements/Number'; +import { BoxShadow } from '../CodeBuilder/Elements/BoxShadow'; +import ClientServerSwitch from '../CodeBuilder/Elements/ClientServerSwitch'; +import Switch from '../CodeBuilder/Elements/Switch'; +import Checkbox from '../CodeBuilder/Elements/Checkbox'; +import Slider from '../CodeBuilder/Elements/Slider'; +import { Input } from '../CodeBuilder/Elements/Input'; +import { Icon } from '../CodeBuilder/Elements/Icon'; +import { Visibility } from '../CodeBuilder/Elements/Visibility'; +import { NumberInput } from '../CodeBuilder/Elements/NumberInput'; + +const AllElements = { + Color, + Json, + Toggle, + Select, + AlignButtons, + Number, + BoxShadow, + ClientServerSwitch, + Switch, + Checkbox, + Slider, + Input, + Icon, + Visibility, + NumberInput, +}; + +export const DynamicFxTypeRenderer = ({ paramType, ...restProps }) => { + const componentType = FxParamTypeMapping[paramType]; + + const DynamicComponent = AllElements[componentType]; + + return ; +}; diff --git a/frontend/src/Editor/CodeEditor/MultiLineCodeEditor.jsx b/frontend/src/Editor/CodeEditor/MultiLineCodeEditor.jsx new file mode 100644 index 0000000000..507a15a550 --- /dev/null +++ b/frontend/src/Editor/CodeEditor/MultiLineCodeEditor.jsx @@ -0,0 +1,273 @@ +/* eslint-disable import/no-unresolved */ +import React, { useContext, useEffect } from 'react'; +import CodeMirror from '@uiw/react-codemirror'; +import { javascript, javascriptLanguage } from '@codemirror/lang-javascript'; +import { defaultKeymap } from '@codemirror/commands'; +import { keymap } from '@codemirror/view'; +import { completionKeymap } from '@codemirror/autocomplete'; +import { python } from '@codemirror/lang-python'; +import { sql } from '@codemirror/lang-sql'; +import { sass, sassCompletionSource } from '@codemirror/lang-sass'; +import { okaidia } from '@uiw/codemirror-theme-okaidia'; +import { githubLight } from '@uiw/codemirror-theme-github'; +import { findNearestSubstring, generateHints } from './autocompleteExtensionConfig'; +import ErrorBoundary from '../ErrorBoundary'; +import CodeHinter from './CodeHinter'; +import { CodeHinterContext } from '../CodeBuilder/CodeHinterContext'; +import { createReferencesLookup } from '@/_stores/utils'; +import { PreviewBox } from './PreviewBox'; + +const langSupport = Object.freeze({ + javascript: javascript(), + python: python(), + sql: sql(), + jsx: javascript({ jsx: true }), + css: sass(), +}); + +const MultiLineCodeEditor = (props) => { + const { + darkMode, + height, + initialValue, + lang, + className, + onChange, + componentName, + lineNumbers, + placeholder, + hideSuggestion, + suggestions: hints, + portalProps, + showPreview, + paramLabel = '', + } = props; + + const [currentValue, setCurrentValue] = React.useState(() => initialValue); + + const context = useContext(CodeHinterContext); + + const { suggestionList } = createReferencesLookup(context, true); + + const diffOfCurrentValue = React.useRef(null); + + const handleChange = React.useCallback((val) => { + setCurrentValue(val); + + const diff = val.length - currentValue.length; + + if (diff > 0) { + diffOfCurrentValue.current = val.slice(-diff); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const handleOnBlur = () => { + setTimeout(() => { + onChange(currentValue); + }, 100); + // eslint-disable-next-line react-hooks/exhaustive-deps + }; + + useEffect(() => { + setCurrentValue(initialValue); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [lang]); + + const heightInPx = typeof height === 'string' && height?.includes('px') ? height : `${height}px`; + + const theme = darkMode ? okaidia : githubLight; + const langExtention = langSupport[lang] ?? null; + + const setupConfig = { + lineNumbers: lineNumbers ?? true, + syntaxHighlighting: true, + bracketMatching: true, + foldGutter: true, + highlightActiveLine: false, + autocompletion: hideSuggestion ?? true, + highlightActiveLineGutter: false, + completionKeymap: true, + searchKeymap: false, + }; + + function autoCompleteExtensionConfig(context) { + const currentCursor = context.pos; + + const currentString = context.state.doc.text; + + const inputStr = currentString.join(' '); + const currentCurosorPos = currentCursor; + const nearestSubstring = findNearestSubstring(inputStr, currentCurosorPos).replace(/{{|}}/g, ''); + + let JSLangHints = []; + if (lang === 'javascript') { + JSLangHints = Object.keys(hints['jsHints']) + .map((key) => { + return hints['jsHints'][key]['methods'].map((hint) => ({ + hint: hint, + type: 'js_method', + })); + }) + .flat(); + + JSLangHints = JSLangHints.filter((cm) => { + let lastWordAfterDot = nearestSubstring.split('.'); + + lastWordAfterDot = lastWordAfterDot[lastWordAfterDot.length - 1]; + + if (cm.hint.includes(lastWordAfterDot)) return true; + }); + } + + const appHints = hints['appHints']; + + let autoSuggestionList = appHints.filter((suggestion) => { + return suggestion.hint.includes(nearestSubstring); + }); + + const suggestions = generateHints( + [...JSLangHints, ...autoSuggestionList, ...suggestionList], + null, + nearestSubstring + ).map((hint) => { + if (hint.label.startsWith('client') || hint.label.startsWith('server')) return; + + delete hint['apply']; + + hint.apply = (view, completion, from, to) => { + /** + * This function applies an auto-completion logic to a text editing view based on user interaction. + * It uses a pre-defined completion object and modifies the document's content accordingly. + * + * Parameters: + * - view: The editor view where the changes will be applied. + * - completion: An object containing details about the completion to be applied. Includes properties like 'label' (the text to insert) and 'type' (e.g., 'js_methods'). + * - from: The initial position (index) in the document where the completion starts. + * - to: The position (index) in the document where the completion ends. + * + * Logic: + * - The function calculates the start index for the change by subtracting the length of the word to be replaced (finalQuery) from the 'from' index. + * - It configures the completion details such as where to insert the text and the exact text to insert. + * - If the completion type is 'js_methods', it adjusts the insertion point to the 'to' index and sets the cursor position after the inserted text. + * - Finally, it dispatches these configurations to the editor view to apply the changes. + * + * The dispatch configuration (dispacthConfig) includes changes and, optionally, the cursor selection position if the type is 'js_methods'. + */ + + const wordToReplace = nearestSubstring; + const fromIndex = from - wordToReplace.length; + + const pickedCompletionConfig = { + from: fromIndex === 1 ? 0 : fromIndex, + to: to, + insert: completion.label, + }; + + const dispacthConfig = { + changes: pickedCompletionConfig, + }; + + if (completion.type === 'js_methods') { + pickedCompletionConfig.from = to; + + dispacthConfig.selection = { + anchor: pickedCompletionConfig.to + completion.label.length - 1, + }; + } + + view.dispatch(dispacthConfig); + }; + return hint; + }); + + return { + from: context.pos, + options: [...suggestions], + }; + } + + const customKeyMaps = [...defaultKeymap, ...completionKeymap]; + + // eslint-disable-next-line react-hooks/exhaustive-deps + const overRideFunction = React.useCallback((context) => autoCompleteExtensionConfig(context), [hints]); + const { handleTogglePopupExapand, isOpen, setIsOpen, forceUpdate } = portalProps; + let cyLabel = paramLabel ? paramLabel.toLowerCase().trim().replace(/\s+/g, '-') : props.cyLabel; + + return ( + + + + + + + + + {showPreview && ( + + null} + componentId={null} + setErrorMessage={() => null} + /> + + )} + + + + + ); +}; + +export default MultiLineCodeEditor; diff --git a/frontend/src/Editor/CodeEditor/PreviewBox.jsx b/frontend/src/Editor/CodeEditor/PreviewBox.jsx new file mode 100644 index 0000000000..61ac9dfc27 --- /dev/null +++ b/frontend/src/Editor/CodeEditor/PreviewBox.jsx @@ -0,0 +1,390 @@ +import React, { useEffect, useState } from 'react'; +import { computeCoercion, getCurrentNodeType, resolveReferences } from './utils'; +import CodeHinter from '.'; +import { copyToClipboard } from '@/_helpers/appUtils'; +import { Alert } from '@/_ui/Alert/Alert'; +import _, { isEmpty } from 'lodash'; +import { handleCircularStructureToJSON, hasCircularDependency } from '@/_helpers/utils'; +import OverlayTrigger from 'react-bootstrap/OverlayTrigger'; +import Popover from 'react-bootstrap/Popover'; +import Card from 'react-bootstrap/Card'; +// eslint-disable-next-line import/no-unresolved +import { JsonViewer } from '@textea/json-viewer'; + +export const PreviewBox = ({ + currentValue, + validationSchema, + setErrorStateActive, + setErrorMessage, + customVariables, +}) => { + const [resolvedValue, setResolvedValue] = useState(''); + const [error, setError] = useState(null); + const [coersionData, setCoersionData] = useState(null); + const getPreviewContent = (content, type) => { + if (content === undefined || content === null) return currentValue; + try { + switch (type) { + case 'Object': + case 'Array': + return JSON.stringify(content); + case 'Boolean': + return content.toString(); + default: + return content; + } + } catch (e) { + return undefined; + } + }; + + let previewType = getCurrentNodeType(resolvedValue); + let previewContent = resolvedValue; + + if (hasCircularDependency(resolvedValue)) { + previewContent = JSON.stringify(resolvedValue, handleCircularStructureToJSON()); + previewType = typeof previewContent; + } + + const ifCoersionErrorHasCircularDependency = (value) => { + if (hasCircularDependency(value)) { + return JSON.stringify(value, handleCircularStructureToJSON()); + } + return value; + }; + + const content = getPreviewContent(previewContent, previewType); + + useEffect(() => { + if (error) { + setErrorStateActive(true); + setErrorMessage(error.message); + } else { + setErrorStateActive(false); + setErrorMessage(null); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [error]); + + useEffect(() => { + const [valid, _error, newValue, resolvedValue] = resolveReferences(currentValue, validationSchema, customVariables); + if (!validationSchema || isEmpty(validationSchema)) { + return setResolvedValue(newValue); + } + + if (valid) { + const [coercionPreview, typeAfterCoercion, typeBeforeCoercion] = computeCoercion(resolvedValue, newValue); + setResolvedValue(resolvedValue); + + setCoersionData({ + coercionPreview, + typeAfterCoercion, + typeBeforeCoercion, + }); + setError(null); + } else if (!valid && !newValue && !resolvedValue) { + const err = !error ? `Invalid value for ${validationSchema?.schema?.type}` : `${_error}`; + setError({ message: err, value: resolvedValue, type: 'Invalid' }); + } else { + const jsErrorType = _error?.includes('ReferenceError') + ? 'ReferenceError' + : _error?.includes('TypeError') + ? 'TypeError' + : _error?.includes('SyntaxError') + ? 'SyntaxError' + : 'Invalid'; + + const errValue = ifCoersionErrorHasCircularDependency(resolvedValue); + + setError({ + message: _error, + value: jsErrorType === 'Invalid' ? JSON.stringify(errValue) : resolvedValue, + type: jsErrorType, + }); + setCoersionData(null); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [currentValue]); + + return ( + <> + + copyToClipboard(error ? error?.value : content)} + icon={'copy'} + tip={'Copy to clipboard'} + /> + > + ); +}; + +const RenderResolvedValue = ({ error, previewType, resolvedValue, coersionData, withValidation }) => { + const computeCoersionPreview = (resolvedValue, coersionData) => { + if (coersionData?.typeBeforeCoercion === coersionData?.typeAfterCoercion) return resolvedValue; + + if (coersionData?.typeBeforeCoercion === 'array') { + return '[...]' + coersionData?.coercionPreview; + } + + if (coersionData?.typeBeforeCoercion === 'object') { + return '{...}' + coersionData?.coercionPreview; + } + + return resolvedValue + coersionData?.coercionPreview; + }; + + const previewValueType = + withValidation || (coersionData && coersionData?.typeBeforeCoercion) + ? `${coersionData?.typeBeforeCoercion} ${ + coersionData?.coercionPreview ? ` → ${coersionData?.typeAfterCoercion}` : '' + }` + : previewType; + + const previewContent = !withValidation ? resolvedValue : computeCoersionPreview(resolvedValue, coersionData); + + const cls = error ? 'codehinter-error-banner' : 'codehinter-success-banner'; + + return ( + + + {error ? error.type : previewValueType} + + + + + ); +}; + +const PreviewContainer = ({ + children, + isFocused, + enablePreview, + setCursorInsidePreview, + isPortalOpen, + ...restProps +}) => { + const { validationSchema, isWorkspaceVariable, errorStateActive, previewPlacement } = restProps; + + const [errorMessage, setErrorMessage] = useState(''); + + const typeofError = getCurrentNodeType(errorMessage); + + const errorMsg = typeofError === 'Array' ? errorMessage[0] : errorMessage; + + const darkMode = localStorage.getItem('darkMode') === 'true'; + + const popover = ( + setCursorInsidePreview(true)} + onMouseLeave={() => setCursorInsidePreview(false)} + > + + + {errorStateActive && ( + + + + {errorMsg !== 'null' ? errorMsg : 'Invalid'} + + + + )} + {!isEmpty(validationSchema) && ( + <> + + + Expected + + + + + + + + {validationSchema?.schema?.type} + + + + + + + + > + )} + + + {!isEmpty(validationSchema) && ( + + + Current + + + )} + + + + + + + + {isWorkspaceVariable && } + + + ); + + return ( + + {children} + + ); +}; + +const PreviewCodeBlock = ({ code, isExpectValue = false }) => { + let preview = code && code.trim ? code?.trim() : `${code}`; + + const shouldTrim = preview.length > 35; + let showJSONTree = false; + + if (isExpectValue && shouldTrim) { + preview = preview.substring(0, 35) + '...' + preview.substring(preview.length - 2, preview.length); + } + + let prettyPrintedJson = preview; + + try { + prettyPrintedJson = JSON.parse(preview); + + const typeOfValue = typeof prettyPrintedJson; + + if (typeOfValue === 'object' || typeOfValue === 'array') { + showJSONTree = true; + } else { + prettyPrintedJson = preview; + showJSONTree = false; + } + } catch (e) { + prettyPrintedJson = preview; + showJSONTree = false; + } + + if (showJSONTree) { + const darkMode = localStorage.getItem('darkMode') === 'true'; + + return ( + + + + ); + } + return ( + + + {prettyPrintedJson?.startsWith('{{') && prettyPrintedJson?.endsWith('{{') + ? prettyPrintedJson?.replace(/{{/g, '').replace(/}}/g, '') + : prettyPrintedJson} + + + ); +}; + +PreviewBox.RenderResolvedValue = RenderResolvedValue; +PreviewBox.Container = PreviewContainer; +PreviewBox.CodeBlock = PreviewCodeBlock; diff --git a/frontend/src/Editor/CodeEditor/SingleLineCodeEditor.jsx b/frontend/src/Editor/CodeEditor/SingleLineCodeEditor.jsx new file mode 100644 index 0000000000..b20bb63f9e --- /dev/null +++ b/frontend/src/Editor/CodeEditor/SingleLineCodeEditor.jsx @@ -0,0 +1,404 @@ +/* eslint-disable import/no-unresolved */ +import React, { useContext, useEffect, useRef, useState } from 'react'; +import { PreviewBox } from './PreviewBox'; +import { ToolTip } from '@/Editor/Inspector/Elements/Components/ToolTip'; +import { useTranslation } from 'react-i18next'; +import { camelCase, isEmpty } from 'lodash'; +import CodeMirror from '@uiw/react-codemirror'; +import { javascript } from '@codemirror/lang-javascript'; +import { autocompletion, completionKeymap } from '@codemirror/autocomplete'; +import { defaultKeymap } from '@codemirror/commands'; +import { keymap } from '@codemirror/view'; +import FxButton from '../CodeBuilder/Elements/FxButton'; +import cx from 'classnames'; +import { DynamicFxTypeRenderer } from './DynamicFxTypeRenderer'; +import { resolveReferences } from './utils'; +import { okaidia } from '@uiw/codemirror-theme-okaidia'; +import { githubLight } from '@uiw/codemirror-theme-github'; +import { getAutocompletion } from './autocompleteExtensionConfig'; +import ErrorBoundary from '../ErrorBoundary'; +import CodeHinter from './CodeHinter'; +import { EditorContext } from '../Context/EditorContextWrapper'; + +const SingleLineCodeEditor = ({ suggestions, componentName, fieldMeta = {}, componentId, ...restProps }) => { + const { initialValue, onChange, enablePreview = true, portalProps } = restProps; + const { validation = {} } = fieldMeta; + const [isFocused, setIsFocused] = useState(false); + const [currentValue, setCurrentValue] = useState(''); + const [errorStateActive, setErrorStateActive] = useState(false); + const [cursorInsidePreview, setCursorInsidePreview] = useState(false); + const isPreviewFocused = useRef(false); + const wrapperRef = useRef(null); + //! Re render the component when the componentName changes as the initialValue is not updated + + const { variablesExposedForPreview } = useContext(EditorContext); + + const customVariables = variablesExposedForPreview?.[componentId] ?? {}; + + useEffect(() => { + if (typeof initialValue !== 'string') return; + + const [valid, _error] = !isEmpty(validation) + ? resolveReferences(initialValue, validation, customVariables) + : [true, null]; + + if (!valid) { + setErrorStateActive(true); + } + + setCurrentValue(initialValue); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [componentName, initialValue]); + + useEffect(() => { + const handleClickOutside = (event) => { + if (cursorInsidePreview || portalProps?.isOpen || event.target.closest('.cm-tooltip-autocomplete')) { + return; + } + + if (wrapperRef.current && isFocused && !wrapperRef.current.contains(event.target)) { + isPreviewFocused.current = false; + setIsFocused(false); + } + }; + document.addEventListener('mousedown', handleClickOutside); + return () => { + document.removeEventListener('mousedown', handleClickOutside); + }; + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [wrapperRef, isFocused, isPreviewFocused, currentValue, portalProps?.isOpen, cursorInsidePreview]); + + const isWorkspaceVariable = + typeof currentValue === 'string' && (currentValue.includes('%%client') || currentValue.includes('%%server')); + + return ( + + + + + + + + + + ); +}; + +const EditorInput = ({ + currentValue, + setCurrentValue, + hints, + setFocus, + validationType, + onBlurUpdate, + placeholder = '', + error, + cyLabel = '', + componentName, + usePortalEditor = true, + renderPreview, + portalProps, + lang, + isFocused, + componentId, + type, + delayOnChange = true, // Added this prop to immediately update the onBlurUpdate callback + paramLabel = '', +}) => { + function autoCompleteExtensionConfig(context) { + let word = context.matchBefore(/\w*/); + + const totalReferences = (context.state.doc.toString().match(/{{/g) || []).length; + + let queryInput = context.state.doc.toString(); + const originalQueryInput = queryInput; + + if (totalReferences > 0) { + const currentCursor = context.state.selection.main.head; + const currentCursorPos = context.pos; + + let currentWord = queryInput.substring(currentCursor, currentCursorPos); + + if (currentWord?.length === 0) { + const lastBracesFromPos = queryInput.lastIndexOf('{{', currentCursorPos); + currentWord = queryInput.substring(lastBracesFromPos, currentCursorPos); + //remove curly braces from the current word as will append it later + currentWord = currentWord.replace(/{{|}}/g, ''); + } + + if (currentWord.includes(' ')) { + currentWord = currentWord.split(' ').pop(); + } + + // remove \n from the current word if it is present + currentWord = currentWord.replace(/\n/g, ''); + + queryInput = '{{' + currentWord + '}}'; + } + + let completions = getAutocompletion(queryInput, validationType, hints, totalReferences, originalQueryInput); + + return { + from: word.from, + options: completions, + validFor: /^\{\{.*\}\}$/, + }; + } + + // eslint-disable-next-line react-hooks/exhaustive-deps + const overRideFunction = React.useCallback((context) => autoCompleteExtensionConfig(context), [hints]); + + const autoCompleteConfig = autocompletion({ + override: [overRideFunction], + compareCompletions: (a, b) => { + return a.section.rank - b.section.rank && a.label.localeCompare(b.label); + }, + aboveCursor: false, + defaultKeymap: true, + positionInfo: () => { + return { + class: 'cm-completionInfo-top cm-custom-completion-info', + }; + }, + }); + + const customKeyMaps = [...defaultKeymap, ...completionKeymap]; + + const handleOnChange = React.useCallback((val) => { + setCurrentValue(val); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const handleOnBlur = () => { + if (!delayOnChange) { + setFirstTimeFocus(false); + return onBlurUpdate(currentValue); + } + setTimeout(() => { + setFirstTimeFocus(false); + onBlurUpdate(currentValue); + }, 0); + }; + + const darkMode = localStorage.getItem('darkMode') === 'true'; + const theme = darkMode ? okaidia : githubLight; + + const { handleTogglePopupExapand, isOpen, setIsOpen, forceUpdate } = portalProps; + + const [firstTimeFocus, setFirstTimeFocus] = useState(false); + + const customClassNames = cx('codehinter-input', { + 'border-danger': error, + focused: isFocused, + 'focus-box-shadow-active': firstTimeFocus, + 'widget-code-editor': componentId, + }); + + const currentEditorHeightRef = useRef(null); + + const handleFocus = () => { + setFirstTimeFocus(true); + setTimeout(() => { + setFocus(true); + }, 50); + }; + + const showLineNumbers = lang == 'jsx' || type === 'extendedSingleLine' || false; + cyLabel = paramLabel ? paramLabel.toLowerCase().trim().replace(/\s+/g, '-') : cyLabel; + + return ( + + {usePortalEditor && ( + + )} + + + { + setFirstTimeFocus(false); + handleOnChange(val); + }} + basicSetup={{ + lineNumbers: showLineNumbers, + syntaxHighlighting: true, + bracketMatching: true, + foldGutter: false, + highlightActiveLine: false, + autocompletion: true, + completionKeymap: true, + searchKeymap: false, + }} + onMouseDown={() => handleFocus()} + onBlur={() => handleOnBlur()} + className={customClassNames} + theme={theme} + indentWithTab={true} + /> + + + + ); +}; + +const DynamicEditorBridge = (props) => { + const { + initialValue, + type, + fxActive, + paramType = 'code', + paramLabel, + paramName, + fieldMeta, + darkMode, + className, + onFxPress, + cyLabel = '', + onChange, + styleDefinition, + onVisibilityChange, + isEventManagerParam = false, + } = props; + + const [forceCodeBox, setForceCodeBox] = React.useState(fxActive); + const codeShow = paramType === 'code' || forceCodeBox; + const HIDDEN_CODE_HINTER_LABELS = ['Table data', 'Column data', 'Text Format']; + const { isFxNotRequired } = fieldMeta; + const { t } = useTranslation(); + const [_, error, value] = type === 'fxEditor' ? resolveReferences(initialValue) : []; + + const fxClass = isEventManagerParam ? 'justify-content-start' : 'justify-content-end'; + + return ( + + + {paramLabel !== ' ' && !HIDDEN_CODE_HINTER_LABELS.includes(paramLabel) && ( + + + + )} + + + {paramLabel !== 'Type' && isFxNotRequired === undefined && ( + + { + if (codeShow) { + setForceCodeBox(false); + onFxPress(false); + } else { + setForceCodeBox(true); + onFxPress(true); + } + }} + dataCy={cyLabel} + /> + + )} + + {!codeShow && ( + { + setForceCodeBox(true); + onFxPress(true); + }} + meta={fieldMeta} + cyLabel={cyLabel} + styleDefinition={styleDefinition} + onVisibilityChange={onVisibilityChange} + /> + )} + + + + {codeShow && ( + + + + + + + + )} + + ); +}; + +SingleLineCodeEditor.Editor = EditorInput; +SingleLineCodeEditor.EditorBridge = DynamicEditorBridge; + +export default SingleLineCodeEditor; diff --git a/frontend/src/Editor/CodeEditor/autocompleteExtensionConfig.js b/frontend/src/Editor/CodeEditor/autocompleteExtensionConfig.js new file mode 100644 index 0000000000..ad7f997cda --- /dev/null +++ b/frontend/src/Editor/CodeEditor/autocompleteExtensionConfig.js @@ -0,0 +1,211 @@ +import { getLastDepth, getLastSubstring } from './autocompleteUtils'; + +export const getAutocompletion = (input, fieldType, hints, totalReferences = 1, originalQueryInput = null) => { + if (!input.startsWith('{{') || !input.endsWith('}}')) return []; + + const actualInput = input.replace(/{{|}}/g, ''); + + let JSLangHints = []; + + if (fieldType) { + JSLangHints = hints['jsHints'][fieldType]['methods'].map((hint) => ({ + hint: hint, + type: 'js_method', + })); + } else { + JSLangHints = Object.keys(hints['jsHints']) + .map((key) => { + return hints['jsHints'][key]['methods'].map((hint) => ({ + hint: hint, + type: 'js_method', + })); + }) + .flat(); + } + + const deprecatedWorkspaceVarsHints = ['client', 'server']; + + const appHints = hints['appHints'].filter((cm) => { + const { hint } = cm; + + if (hint.includes('actions') || hint.endsWith('run()')) { + return false; + } + + if (deprecatedWorkspaceVarsHints.includes(hint)) { + return false; + } + + const lastChar = hint[cm.length - 1]; + if (lastChar === ')') { + return false; + } + + return true; + }); + + const appHintsFilteredByDepth = filterHintsByDepth(actualInput, appHints); + + const autoSuggestionList = appHintsFilteredByDepth.filter((suggestion) => { + if (actualInput.length === 0) return true; + return suggestion.hint.includes(actualInput); + }); + + const jsHints = JSLangHints.filter((cm) => { + const lastCharsAfterDot = actualInput.split('.').pop(); + if (cm.hint.includes(lastCharsAfterDot)) return true; + + if (autoSuggestionList.length === 0 && !cm.hint.includes(actualInput)) return true; + }); + + const searchInput = input.replace(/{{|}}/g, ''); + const suggestions = generateHints( + [...jsHints, ...autoSuggestionList], + totalReferences, + originalQueryInput, + searchInput + ); + return orderSuggestions(suggestions, fieldType); +}; + +function orderSuggestions(suggestions, validationType) { + if (!validationType) return suggestions; + + const matchingSuggestions = suggestions.filter((s) => s.detail === validationType); + + const otherSuggestions = suggestions.filter((s) => s.detail !== validationType); + + return [...matchingSuggestions, ...otherSuggestions]; +} + +export const generateHints = (hints, totalReferences = 1, input, searchText) => { + if (!hints) return []; + + const suggestions = hints.map(({ hint, type }) => { + let displayedHint = type === 'js_method' || (type === 'Function' && !hint.endsWith('.run()')) ? `${hint}()` : hint; + + const currentWord = input.split('{{').pop().split('}}')[0]; + const hasDepth = currentWord.includes('.'); + const lastDepth = getLastSubstring(currentWord); + + const displayLabel = getLastDepth(displayedHint); + + return { + displayLabel: lastDepth === '' ? displayedHint : displayLabel, + label: displayedHint, + info: displayedHint, + type: type === 'js_method' ? 'js_methods' : type?.toLowerCase(), + section: + type === 'js_method' + ? { name: 'JS methods', rank: 2 } + : { name: !hasDepth ? 'Suggestions' : lastDepth, rank: 1 }, + detail: type === 'js_method' ? 'method' : type?.toLowerCase() || '', + apply: (view, completion, from, to) => { + const doc = view.state.doc; + const { from: _, to: end } = doc.lineAt(from); + const actualStartIndex = input.lastIndexOf('{{'); + + const pickedFrom = + actualStartIndex === 0 && end - to > 2 ? from - currentWord.length : actualStartIndex + (end - to); + const pickedCompletionConfig = { + from: pickedFrom, + to: to, + insert: completion.label, + }; + + let anchorSelection = pickedCompletionConfig.insert.length + 2; + + if (completion.type === 'js_methods') { + pickedCompletionConfig.from = from; + } + + const multiReferenceInSingleIndentifier = totalReferences == 1 && searchText !== currentWord; + + if (multiReferenceInSingleIndentifier) { + const splitAtSearchString = doc.toString().split(searchText)[0]; + const newFrom = splitAtSearchString.length; + + pickedCompletionConfig.from = newFrom; + } else if (totalReferences > 1 && completion.type !== 'js_methods') { + const splitIndex = from; + const substring = doc.toString().substring(0, splitIndex).split('{{').pop(); + + pickedCompletionConfig.from = from - substring.length; + } + + const dispatchConfig = { + changes: pickedCompletionConfig, + }; + + const actualInput = doc.toString().replace(/{{|}}/g, ''); + + if (actualInput.length === 0) { + dispatchConfig.selection = { + anchor: anchorSelection, + }; + } + + view.dispatch(dispatchConfig); + }, + }; + }); + + return suggestions; +}; + +function filterHintsByDepth(input, hints) { + if (input === '') return hints; + + const inputDepth = input.includes('.') ? input.split('.').length : 0; + + const filteredHints = hints.filter((cm) => { + const hintParts = cm.hint.split('.'); + + let shouldInclude = + (cm.hint.startsWith(input) && hintParts.length === inputDepth + 1) || + (cm.hint.startsWith(input) && hintParts.length === inputDepth); + + const shouldFuzzyMatch = !shouldInclude ? hintParts.length > inputDepth : false; + + if (shouldFuzzyMatch) { + // fuzzy match + let matchedDepth = -1; + for (let i = 0; i < hintParts.length; i++) { + if (hintParts[i].includes(input)) { + matchedDepth = i; + break; + } + } + + if (matchedDepth !== -1) { + shouldInclude = hintParts.length === matchedDepth + 1; + } + } else if (input.endsWith('.')) { + shouldInclude = cm.hint.startsWith(input) && hintParts.length === inputDepth; + } + + return shouldInclude; + }); + + return filteredHints; +} + +export function findNearestSubstring(inputStr, currentCurosorPos) { + let end = currentCurosorPos - 1; // Adjust for zero-based indexing + let substring = ''; + const inputSubstring = inputStr.substring(0, end + 1); + + console.log(`Initial cursor position: ${currentCurosorPos}`); + console.log(`Character at cursor: '${inputStr[end]}'`); + console.log(`Input substring: '${inputSubstring}'`); + + // Iterate backwards from the character before the cursor + for (let i = end; i >= 0; i--) { + if (inputStr[i] === ' ') { + break; // Stop if a space is found + } + substring = inputStr[i] + substring; + } + + return substring; +} diff --git a/frontend/src/Editor/CodeEditor/autocompleteUtils.js b/frontend/src/Editor/CodeEditor/autocompleteUtils.js new file mode 100644 index 0000000000..015b0e0f8f --- /dev/null +++ b/frontend/src/Editor/CodeEditor/autocompleteUtils.js @@ -0,0 +1,11 @@ +export function getLastSubstring(inputString) { + if (!inputString.includes('.')) return ''; + + let parts = inputString.trim().split('.').filter(Boolean); + return parts.length > 0 ? parts[parts.length - 1] : ''; +} + +export function getLastDepth(inputString) { + let parts = inputString.split('.').filter(Boolean); + return parts.length > 0 ? parts[parts.length - 1] : ''; +} diff --git a/frontend/src/Editor/CodeEditor/index.js b/frontend/src/Editor/CodeEditor/index.js new file mode 100644 index 0000000000..3665d498b7 --- /dev/null +++ b/frontend/src/Editor/CodeEditor/index.js @@ -0,0 +1,3 @@ +import CodeHinter from './CodeHinter'; + +export default CodeHinter; diff --git a/frontend/src/Editor/CodeEditor/styles.scss b/frontend/src/Editor/CodeEditor/styles.scss new file mode 100644 index 0000000000..e63c817f2e --- /dev/null +++ b/frontend/src/Editor/CodeEditor/styles.scss @@ -0,0 +1,534 @@ +@import "../../_styles/colors.scss"; + +.codehinter-input-wrapper { + display: flex; + padding: 6px 0px; + align-items: flex-start; + gap: 8px; + align-self: stretch; + + .codehinter-container { + height: inherit !important; + + .codehinter-vertical-line { + position: relative; + width: 0; + border-left: 1px solid var(--slate5); + content: ''; + margin-right: 1rem; + } + } + + .list-group-item { + border-radius: 0 !important; + } +} + +.cm-widgetBuffer { + display: none !important; +} + +.inspector { + .cm-base-autocomplete { + left: auto !important; + } +} + +.cm-base-hint-info { + color: var(--text-default, #1B1F24) !important; + background-color: var(--surfaces-surface-02); + border: 1px solid var(--borders-disabled-on-white, #E4E7EB) !important; + border-radius: 0px 0px 6px 6px !important; + box-shadow: 0px 4px 8px 0px rgba(48, 49, 51, 0.10), 0px 0px 1px 0px rgba(48, 49, 51, 0.05); + font-weight: 400; +} + +.cm-base-autocomplete { + // height: 300px !important; + color: var(--text-default, #1B1F24); + background: var(--slate1) !important; + border: 1px solid var(--borders-disabled-on-white, #E4E7EB) !important; + border-radius: 6px !important; + box-shadow: 0px 4px 8px 0px rgba(48, 49, 51, 0.10), 0px 0px 1px 0px rgba(48, 49, 51, 0.05); + z-index: 99999 !important; + // overflow-y: auto !important; + // overflow-x: hidden !important; + width: 270px !important; + + + ul { + width: 270px !important; + max-width: 100% !important; + max-height: 300px !important; + + completion-section { + color: var(--text-placeholder, #1B1F24) !important; + border-bottom: none !important; + background-color: var(--surfaces-surface-02) !important; + font-size: 13px !important; + line-height: 20px !important; + font-weight: 500 !important; + padding: 8px !important; + } + + + + + li { + max-width: 100% !important; + width: 100% !important; + display: flex !important; + align-items: start !important; + justify-content: space-between !important; + padding: 0.35rem !important; + font-size: 11px !important; + font-style: normal !important; + font-weight: 400 !important; + line-height: 16px !important; + color: var(--text-default, #1B1F24) !important; + + .cm-completionIcon-js_methods::after { + content: ''; + background-image: url("data:image/svg+xml,%3Csvg enable-background='new 0 0 1073.9 1074' viewBox='0 0 1073.9 1074' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='m1005.4 0h-936.8c-37.9 0-68.6 30.7-68.6 68.6v936.8c0 37.8 30.7 68.6 68.6 68.6h936.8c37.8 0 68.6-30.7 68.6-68.6v-936.9c-.1-37.8-30.8-68.5-68.6-68.5zm-517.8 605.3c0 29.8-2.8 55.3-8.5 76.3s-14.3 37.8-25.7 51c-11.5 13-25.8 22.6-42.9 28.6-17.1 6.1-37 9.1-59.7 9.1-20 0-38-3.2-54.2-9.4-31.7-11.9-56.5-37.4-67.4-69.4-6.4-17.9-9.5-36.7-9.2-55.7v-13.4h64.3c0 59.9 22.2 89.9 66.6 89.9 11.4 0 21.4-1.3 30.4-4 8.9-2.8 16.4-7.8 22.6-15.4 6.2-7.5 10.8-17.9 14-31.4s4.8-31 4.8-52.7v-335.2h65.1zm359.1 97.3c-6.8 13.7-16.4 25.8-28.2 35.5-13.2 10.6-28.4 18.7-44.6 23.7-17.5 5.6-37.1 8.4-58.8 8.4-96.1 0-146.8-37.9-152-113.9h63.2c.3 42.9 29.7 64.4 88.1 64.4 13 0 24.6-1.4 34.5-4.3 10-2.8 18.3-6.8 24.9-11.8 12.9-9.3 20.5-24.2 20.4-40.1.3-7-1.1-13.9-3.9-20.3-2.6-5.2-7.7-9.7-15.2-13.7-10-4.9-20.4-8.8-31.2-11.6-17.3-5-34.7-9.8-52.2-14.3-20.9-5.2-39-10.4-54.1-15.6-13.4-4.2-26-10.5-37.4-18.8-9.5-7.1-17-16.5-21.7-27.3-4.7-10.9-7-24.6-7-41.1 0-14.5 3.1-28 9.2-40.5 6.2-12.4 14.9-23.2 26.5-32.4 11.4-9.1 25.3-16.2 41.5-21.4 17.6-5.4 36-8 54.4-7.8 92.9 0 140.2 33 141.6 99.1h-62.2c-2.2-33-27.1-49.6-74.7-49.6-10.6 0-20.3 1.1-29.4 3.2s-16.8 5.1-23.5 9.1c-6.7 3.9-11.8 8.8-15.6 14.6-3.7 6-5.7 13-5.5 20.1 0 6.9.9 12.6 2.6 17 1.7 4.5 5.8 8.6 12.4 12.4 6.5 3.8 16.2 7.6 29 11.3s30.3 8.3 52.5 13.7c21.4 5.2 40.1 10.5 55.9 16.1 15.7 5.6 28.8 12.3 39.4 20.2 10.5 7.8 18.2 17.5 23.3 28.8 5 11.3 7.6 25.5 7.6 42.5.2 16.1-3.2 30.8-9.8 44.4z' fill='%23030104'/%3E%3C/svg%3E"); + background-size: cover; + display: flex; + width: 16px; + height: 16px; + border: none; + } + + .cm-completionIcon-object::after { + content: ''; + background-image: url('data:image/svg+xml,'); + background-size: cover; + display: flex; + width: 16px; + height: 16px; + border: none; + border-radius: 50%; + background-color: red; + } + + .cm-completionIcon-array::after { + content: ''; + background-image: url('data:image/svg+xml,'); + background-size: cover; + display: flex; + width: 16px; + height: 16px; + border: none; + border-radius: 50%; + background-color: red; + } + + .cm-completionIcon-string::after { + content: 'str'; + display: flex; + width: 16px; + height: 16px; + border: none; + border-radius: 50%; + background-color: greenyellow; + font-size: 6px; + align-items: center; + justify-content: center; + } + + + + + + } + + li[aria-selected="true"] { + background-color: var(--interactive-hover) !important; + color: var(--text-default, #1B1F24) !important; + } + + + // li > :first-child, + li> :nth-child(2) { + display: flex !important; + align-self: flex-start !important; + width: 100% !important; + text-wrap: nowrap !important; + // if the text is too long, it will be cut off + overflow: hidden !important; + } + + li> :last-child { + align-self: flex-end !important; + } + + .cm-completionIcon { + width: 16px !important; + height: 16px !important; + } + } + + .cm-custom-completion-info { + @extend .cm-base-hint-info; + position: relative !important; + width: 100% !important; + background-color: var(--surfaces-surface-03) !important; + } +} + + + +.query-manager-sort-filter-popup { + .cm-base-autocomplete { + position: fixed !important; + top: 130px !important; + } +} + +.canvas-codehinter-container { + .cm-base-autocomplete { + position: fixed !important; + top: 500px !important; + left: 38px !important; + } +} + +.widget-code-editor { + height: 100%; + + .cm-content { + max-width: 100% !important; + white-space: pre-wrap; + word-wrap: break-word; + } +} + +.ͼ1 .cm-placeholder { + vertical-align: middle; +} + +.code-hinter-wrapper { + .cm-editor { + min-height: 32px; + max-height: 220px; + } +} + +.codehinter-input { + font-family: IBM Plex Sans; + font-size: 12px !important; + display: block; + // width: 100%; + font-weight: 400; + color: var(--slate9); + background-clip: padding-box; + -webkit-appearance: none; + -moz-appearance: none; + appearance: none; + cursor: text; + justify-content: center; + + + .cm-tooltip-autocomplete { + @extend .cm-base-autocomplete; + } + + .cm-editor { + min-height: 32px; + justify-content: center !important; + + } +} + +.codehinter-input.focused { + + .cm-editor { + outline: none; + border: 2px solid #4368E3 !important; + justify-content: center !important; + } +} + + +.modal-body { + .codehinter-multi-line-input { + .cm-editor { + height: 100%; + } + } +} + +.codehinter-multi-line-input { + height: 100%; + + .cm-editor { + min-height: 300px; + height: 300px; + max-height: fit-content !important; + + .cm-gutters { + width: 42px; + background-color: var(--interactive-default) !important; + color: var(--text-disabled) !important; + border-right: 1px solid var(--borders-disabled-on-white) !important; + } + } + + .cm-tooltip-autocomplete { + @extend .cm-base-autocomplete; + top: content-box !important; + + .cm-completionInfo { + @extend .cm-base-hint-info; + } + } +} + + + +.suggest-list-item { + color: var(--text-default, #1B1F24); + font-family: IBM Plex Sans; + font-size: 11px; + font-style: normal; + font-weight: 400; + line-height: 16px; + /* 145.455% */ + + &:hover, + &:active { + border-radius: 0 !important; + } +} + +.curly-braces { + color: #1E823B; +} + +.styled-par { + color: #1E823B; +} + +.cm-codehinter-dark-themed { + .cm-tooltip-autocomplete { + border-color: var(--slate5) !important; + } + + .cm-tooltip-autocomplete>ul>completion-section { + background: var(--slate5); + color: #c9cbcf !important; + } + + .cm-tooltip-autocomplete>ul>li { + background: var(--surfaces-surface-02); + color: #c9cbcf !important; + } +} + + + + + + +.cm-scroller { + overflow-y: auto !important; + overflow-x: hidden !important; + overscroll-behavior: contain; +} + +.cm-focused { + outline: none !important; +} + +.cm-editor { + border: 1px solid var(--slate7); + border-radius: 4px; + transition: box-shadow 0.15s ease-in-out; +} + +.fields-container { + .cm-editor { + border-radius: 0 !important; + box-shadow: none !important; + } +} + +.border-danger { + .cm-editor { + border: 1px solid red !important; + } +} + +.runjs-editor .cm-editor { + border: none !important; +} + +.preview-alert-banner { + height: fit-content; + max-height: 300px; + border: none !important; +} + + +.code-hinter-preview-card-body::-webkit-scrollbar { + width: 4px !important; +} + +.code-hinter-preview-card-body::-webkit-scrollbar-track { + margin: 5px !important; +} + +.code-hinter-preview-card-body>.codehinter-popup-icon { + left: 2px !important; +} + +.editor-container { + .codehinter-input .cm-editor { + max-height: auto !important; + justify-content: center; + } +} + + + +.codehinter-error-banner { + color: #D72D39 !important; + background-color: #FCEEEF !important; + font-size: 12px !important; +} + +.codehinter-success-banner { + color: #1E823B !important; + background-color: #E8F3EB !important; + font-size: 12px !important; + +} + +.cm-gutterElement { + color: var(--text-disabled); +} + +.rest-api-tabpanes-body { + .cm-gutters { + width: 42px !important; + background-color: var(--interactive-default) !important; + color: var(--text-disabled) !important; + border-right: 1px solid var(--borders-disabled-on-white) !important; + } +} + +.cm-content { + padding-right: 20px !important; +} + +.modal-body { + .codehinter-input .cm-editor { + border: 1px solid var(--borders-disabled-on-white, #E4E7EB) !important; + } + + .codehinter-input .cm-editor { + border-top-left-radius: 0px !important; + border-top-right-radius: 0px !important; + } + + .codehinter-input { + height: 100%; + border: none !important; + + + } +} + +.cm-gutters { + width: 42px !important; + background-color: var(--interactive-default) !important; + color: var(--text-disabled) !important; + border-right: 1px solid var(--borders-disabled-on-white) !important; +} + + +.query-hinter { + .cm-editor { + border-bottom-right-radius: 4px !important; + border-bottom-left-radius: 4px !important; + border-color: var(--borders-disabled-on-white); + border-top-right-radius: 0px !important; + border-top-left-radius: 0px !important; + justify-content: center; + } + + +} + +.transformation-container { + box-shadow: 0px 4px 8px 0px #3032331A; +} + +.codehinder-popup-badge { + background-color: var(--surfaces-surface-02); + color: var(--text-default); + padding: 6px 8px 6px 8px; + gap: 10px; + border-radius: 6px 0px 0px 0px; +} + +.resize-modal-portal .resize-modal .modal-content .modal-body .editor-container { + border-bottom-right-radius: 4px; + border-bottom-left-radius: 4px; +} + +.resize-modal-portal .resize-modal .resize-handle { + border-bottom: none !important; +} + +.cm-content { + word-break: break-all !important; + max-width: 100% !important; + white-space: pre-wrap !important; + word-wrap: break-all !important; +} + + +.cm-content { + max-width: 98%; + flex-shrink: 1 !important; +} + +.cm-line { + cursor: text; +} + +.runjs-editor { + .cm-line { + padding: 0 6px 0 6px !important; + } +} + +.cm-selectionLayer { + width: 100%; +} + +.code-editor-widget { + .codehinter-multi-line-input { + height: 100%; + + .cm-editor { + height: 100%; + } + } +} + +.table-column-popover { + .cm-tooltip-autocomplete { + left: auto !important; + max-width: 100% !important; + + ul { + min-width: auto !important; + } + } + + .column-popover-card-ui { + .cm-tooltip-autocomplete { + max-width: 100% !important; + } + } +} \ No newline at end of file diff --git a/frontend/src/Editor/CodeEditor/utils.js b/frontend/src/Editor/CodeEditor/utils.js new file mode 100644 index 0000000000..24a9bf5b5e --- /dev/null +++ b/frontend/src/Editor/CodeEditor/utils.js @@ -0,0 +1,409 @@ +import { useResolveStore } from '@/_stores/resolverStore'; +import moment from 'moment'; +import _, { isEmpty } from 'lodash'; +import { useCurrentStateStore } from '@/_stores/currentStateStore'; +import { any } from 'superstruct'; +import { generateSchemaFromValidationDefinition, validate } from '../component-properties-validation'; +import { hasCircularDependency, resolveReferences as olderResolverMethod } from '@/_helpers/utils'; + +const acorn = require('acorn'); + +const acorn_code = ` +const array = [1, 2, 3]; +const string = "hello"; +const object = {}; +const boolean = true; +const number = 1; +`; + +const ast = acorn.parse(acorn_code, { ecmaVersion: 2020 }); + +export const getCurrentNodeType = (node) => Object.prototype.toString.call(node).slice(8, -1); + +function traverseAST(node, callback) { + callback(node); + for (let key in node) { + if (node[key] && typeof node[key] === 'object') { + traverseAST(node[key], callback); + } + } +} + +function getMethods(type) { + const arrayMethods = Object.getOwnPropertyNames(Array.prototype).filter( + (p) => typeof Array.prototype[p] === 'function' + ); + const stringMethods = Object.getOwnPropertyNames(String.prototype).filter( + (p) => typeof String.prototype[p] === 'function' + ); + const objectMethods = Object.getOwnPropertyNames(Object.prototype).filter( + (p) => typeof Object.prototype[p] === 'function' + ); + const booleanMethods = Object.getOwnPropertyNames(Boolean.prototype).filter( + (p) => typeof Boolean.prototype[p] === 'function' + ); + const numberMethods = Object.getOwnPropertyNames(Number.prototype).filter( + (p) => typeof Number.prototype[p] === 'function' + ); + + switch (type) { + case 'Array': + return arrayMethods; + case 'String': + return stringMethods; + case 'Object': + return objectMethods; + case 'Boolean': + return booleanMethods; + case 'Number': + return numberMethods; + default: + return []; + } +} + +function inferType(node) { + if (node.type === 'ArrayExpression') { + return 'Array'; + } else if (node.type === 'Literal') { + if (typeof node.value === 'string') { + return 'String'; + } else if (typeof node.value === 'number') { + return 'Number'; + } else if (typeof node.value === 'boolean') { + return 'Boolean'; + } + } else if (node.type === 'ObjectExpression') { + return 'Object'; + } + return null; +} + +export const createJavaScriptSuggestions = () => { + const allMethods = {}; + + traverseAST(ast, (node) => { + if (node.type === 'VariableDeclarator' && node.id.type === 'Identifier') { + const type = inferType(node.init); + if (type) { + allMethods[node.id.name] = { + type: type, + methods: getMethods(type), + }; + } + } + }); + + return allMethods; +}; + +const resolveWorkspaceVariables = (query) => { + let resolvedStr = query; + let error = null; + let valid = false; + // Resolve %%object%% + const serverRegex = /(%%.+?%%)/g; + const serverMatch = resolvedStr.match(serverRegex)?.[0]; + + if (serverMatch) { + const code = serverMatch.replace(/%%/g, ''); + + if (code.includes('server.')) { + resolvedStr = resolvedStr.replace(serverMatch, 'HiddenEnvironmentVariable'); + error = 'Server variables cannot be resolved in the client.'; + } else { + const [resolvedCode, err] = resolveCode(code); + + if (!resolvedCode) { + error = err ? err : `Cannot resolve ${query}`; + } else { + resolvedStr = resolvedStr.replace(serverMatch, resolvedCode); + valid = true; + } + } + } + + return [valid, error, resolvedStr]; +}; + +function resolveCode(code, customObjects = {}, withError = false, reservedKeyword, isJsCode) { + let result = ''; + let error; + + // dont resolve if code starts with "queries." and ends with "run()" + if (code.startsWith('queries.') && code.endsWith('run()')) { + error = `Cannot resolve function call ${code}`; + } else { + try { + const state = useCurrentStateStore.getState(); + const evalFunction = Function( + [ + 'variables', + 'components', + 'queries', + 'globals', + 'page', + 'client', + 'server', + 'constants', + 'moment', + '_', + ...Object.keys(customObjects), + reservedKeyword, + ], + `return ${code}` + ); + result = evalFunction( + isJsCode ? state?.variables : undefined, + isJsCode ? state?.components : undefined, + isJsCode ? state?.queries : undefined, + isJsCode ? state?.globals : undefined, + isJsCode ? state?.page : undefined, + isJsCode ? undefined : state?.client, + isJsCode ? undefined : state?.server, + state?.constants, // Passing constants as an argument allows the evaluated code to access and utilize the constants value correctly. + moment, + _, + ...Object.values(customObjects), + null + ); + } catch (err) { + error = err.toString(); + } + } + + if (withError) return [result, error]; + return result; +} + +function getDynamicVariables(text) { + /* eslint-disable no-useless-escape */ + const matchedParams = text.match(/\{\{(.*?)\}\}/g) || text.match(/\%\%(.*?)\%\%/g); + return matchedParams; +} +const resolveMultiDynamicReferences = (code, lookupTable, queryHasJSCode) => { + let resolvedValue = code; + + const isComponentValue = code.includes('components.') || false; + + const allDynamicVariables = getDynamicVariables(code) || []; + let isJSCodeResolver = queryHasJSCode && (allDynamicVariables.length === 1 || allDynamicVariables.length === 0); + + if (!isJSCodeResolver) { + allDynamicVariables.forEach((variable) => { + const variableToResolve = variable.replace(/{{|}}/g, '').trim(); + + const { toResolveReference } = inferJSExpAndReferences(variableToResolve, lookupTable.hints); + + if (!isComponentValue && toResolveReference && lookupTable.hints.has(toResolveReference)) { + const idToLookUp = lookupTable.hints.get(variableToResolve); + const res = lookupTable.resolvedRefs.get(idToLookUp); + + resolvedValue = resolvedValue.replace(variable, res); + } else { + const [resolvedCode] = resolveCode(variableToResolve, {}, true, [], true); + + resolvedValue = resolvedValue.replace(variable, resolvedCode); + } + }); + } else { + const variableToResolve = code.replace(/{{|}}/g, '').trim(); + + const [resolvedCode] = resolveCode(variableToResolve, {}, true, [], true); + + resolvedValue = typeof resolvedCode === 'string' ? resolvedValue.replace(code, resolvedCode) : resolvedCode; + } + + return resolvedValue; +}; + +const queryHasStringOtherThanVariable = (query) => { + const startsWithDoubleCurly = query.startsWith('{{'); + const endsWithDoubleCurly = query.endsWith('}}'); + + if (startsWithDoubleCurly && endsWithDoubleCurly) { + // Extract the content within the curly braces + const content = query.slice(2, -2).trim(); + // Check if there is a space within the content + return content.includes(' '); + } + + return false; +}; + +export const resolveReferences = (query, validationSchema, customResolvers = {}) => { + if (query !== '' && (!query || typeof query !== 'string')) return [false, null, null]; + let resolvedValue = query; + let error = null; + + //Todo : remove resolveWorkspaceVariables when workspace variables are removed + if (query?.startsWith('%%') && query?.endsWith('%%')) { + return resolveWorkspaceVariables(query); + } + + if ((!validationSchema || isEmpty(validationSchema)) && (!query?.includes('{{') || !query?.includes('}}'))) { + return [true, error, resolvedValue]; + } + + if (validationSchema && !query?.includes('{{') && !query?.includes('}}')) { + const [valid, errors, newValue] = validateComponentProperty(query, validationSchema); + return [valid, errors, newValue, resolvedValue]; + } + + const queryHasJSCode = queryHasStringOtherThanVariable(query); + let useJSResolvers = queryHasJSCode || getDynamicVariables(query)?.length > 1; + + if (!queryHasJSCode && getDynamicVariables(query)?.length === 1 && !query.startsWith('{{') && query.includes('{{')) { + useJSResolvers = true; + } + + const customWidgetResolvers = ['listItem']; + const isCustomResolvers = customWidgetResolvers.some((resolver) => query.includes(resolver)); + + const { lookupTable } = useResolveStore.getState(); + + if (useJSResolvers) { + resolvedValue = resolveMultiDynamicReferences(query, lookupTable, queryHasJSCode); + } else if (isCustomResolvers && !_.isEmpty(customResolvers)) { + const currentState = useCurrentStateStore.getState(); + const resolvedCode = olderResolverMethod(query, currentState, '', customResolvers); + resolvedValue = resolvedCode; + } else { + let value = query?.replace(/{{|}}/g, '').trim(); + + if (value.startsWith('#') || value.includes('table-')) { + value = JSON.stringify(value); + } + const { toResolveReference, jsExpression, jsExpMatch } = + lookupTable.hints || lookupTable.hints.has + ? inferJSExpAndReferences(value, lookupTable.hints) + : { toResolveReference: null, jsExpression: null, jsExpMatch: null }; + + if (!jsExpMatch && toResolveReference && lookupTable.hints.has(toResolveReference)) { + const idToLookUp = lookupTable.hints.get(toResolveReference); + resolvedValue = lookupTable.resolvedRefs.get(idToLookUp); + + if (jsExpression) { + let jscode = value.replace(toResolveReference, resolvedValue); + jscode = value.replace(toResolveReference, `'${resolvedValue}'`); + + resolvedValue = resolveCode(jscode, customResolvers); + } + } else { + const [resolvedCode, errorRef] = resolveCode(value, customResolvers, true, [], true); + + resolvedValue = resolvedCode; + error = errorRef || null; + } + } + + if (!validationSchema || isEmpty(validationSchema)) { + return [true, error, resolvedValue, resolvedValue]; + } + + if (error) { + return [false, error, query, query]; + } + + if (hasCircularDependency(resolvedValue)) { + return [false, `${resolvedValue} has circular dependency, unable to resolve`, query, query]; + } + + if (validationSchema) { + const [valid, errors, newValue] = validateComponentProperty(resolvedValue, validationSchema); + + return [valid, errors, newValue, resolvedValue]; + } +}; + +export const paramValidation = (expectedType, value) => { + const type = getCurrentNodeType(value)?.toLowerCase(); + + return type === expectedType; +}; + +const inferJSExpAndReferences = (code, hintsMap) => { + if (!code) return { toResolveReference: null, jsExpression: null }; + + //check starts with JS expression like JSON.parse or JSON.stringify ! + const jsExpRegex = /(JSON\..+?\(.+?\))/g; + + const jsExpMatch = code.match(jsExpRegex)?.[0]; + + if (jsExpMatch) { + return { toResolveReference: null, jsExpression: null, jsExpMatch }; + } + + // Split the code into segments using '.' as a delimiter + const segments = code.split('.'); + let referenceChain = ''; + let jsExpression = ''; + + for (let i = 0; i < segments.length; i++) { + const segment = segments[i]; + const potentialReference = referenceChain ? referenceChain + '.' + segment : segment; + + // Check if the potential reference exists in hintsMap + if (hintsMap.has && hintsMap.has(potentialReference)) { + // If it does, update the referenceChain + referenceChain = potentialReference; + } else { + // If it doesn't, treat the rest as a JS expression + jsExpression = segments.slice(i).join('.'); + break; + } + } + + return { + toResolveReference: referenceChain || null, + jsExpression: jsExpression || null, + }; +}; + +export const FxParamTypeMapping = Object.freeze({ + text: 'Text', + string: 'Text', + color: 'Color', + json: 'Json', + code: 'Code', + toggle: 'Toggle', + select: 'Select', + alignButtons: 'AlignButtons', + number: 'Number', + boxShadow: 'BoxShadow', + clientServerSwitch: 'ClientServerSwitch', + switch: 'Switch', + checkbox: 'Checkbox', + slider: 'Slider', + input: 'Input', + icon: 'Icon', + visibility: 'Visibility', + numberInput: 'NumberInput', +}); + +export function computeCoercion(oldValue, newValue) { + const oldValueType = Array.isArray(oldValue) ? 'array' : typeof oldValue; + const newValueType = Array.isArray(newValue) ? 'array' : typeof newValue; + + if (oldValueType === newValueType) { + if (JSON.stringify(oldValue) !== JSON.stringify(newValue)) { + return [` → ${JSON.stringify(newValue)}`, newValueType, oldValueType]; + } + } else { + return [` → ${JSON.stringify(newValue)}`, newValueType, oldValueType]; + } + + return ['', newValueType, oldValueType]; +} + +export const validateComponentProperty = (resolvedValue, validation) => { + const validationDefinition = validation?.schema; + + const defaultValue = validation?.defaultValue; + + const schema = _.isUndefined(validationDefinition) + ? any() + : generateSchemaFromValidationDefinition(validationDefinition); + + return validate(resolvedValue, schema, defaultValue, true); +}; diff --git a/frontend/src/Editor/Comment/CommentFooter.jsx b/frontend/src/Editor/Comment/CommentFooter.jsx index 03b5526965..754b33f944 100644 --- a/frontend/src/Editor/Comment/CommentFooter.jsx +++ b/frontend/src/Editor/Comment/CommentFooter.jsx @@ -40,7 +40,7 @@ function CommentFooter({ setOpen(false); }; - useHotkeys('meta+enter, control+enter', () => handleClick()); + useHotkeys('meta+enter, control+enter', () => handleClick(), { scopes: 'editor' }); const darkMode = localStorage.getItem('darkMode') === 'true'; return ( <> diff --git a/frontend/src/Editor/Comment/index.jsx b/frontend/src/Editor/Comment/index.jsx index f35912bc48..d1c4892493 100644 --- a/frontend/src/Editor/Comment/index.jsx +++ b/frontend/src/Editor/Comment/index.jsx @@ -2,7 +2,7 @@ import React from 'react'; import cx from 'classnames'; import { useDrag } from 'react-dnd'; -import { ItemTypes } from '@/Editor/ItemTypes'; +import { ItemTypes } from '@/Editor/editorConstants'; import CommentHeader from '@/Editor/Comment/CommentHeader'; import CommentBody from '@/Editor/Comment/CommentBody'; import CommentFooter from '@/Editor/Comment/CommentFooter'; diff --git a/frontend/src/Editor/CommentNotifications/index.jsx b/frontend/src/Editor/CommentNotifications/index.jsx index f2eda8323e..63f7969b1e 100644 --- a/frontend/src/Editor/CommentNotifications/index.jsx +++ b/frontend/src/Editor/CommentNotifications/index.jsx @@ -34,7 +34,6 @@ const CommentNotifications = ({ socket, pageId }) => { async function fetchData(selectedKey) { if (appId) { - console.log('inside-CommentNotifications', appId); const isResolved = selectedKey === 'resolved'; setLoading(true); const { data } = await commentsService.getNotifications(appId, isResolved, appVersionsId, pageId); diff --git a/frontend/src/Editor/Components/BoundedBox/RenderEditor.jsx b/frontend/src/Editor/Components/BoundedBox/RenderEditor.jsx index fd272e00a0..ce9dbb53d3 100644 --- a/frontend/src/Editor/Components/BoundedBox/RenderEditor.jsx +++ b/frontend/src/Editor/Components/BoundedBox/RenderEditor.jsx @@ -53,7 +53,8 @@ export const RenderEditor = ({ }} className={`${darkMode ? 'select-search-dark' : 'select-search'}`} useCustomStyles={true} - useMenuPortal={false} + // useMenuPortal={false} + useMenuPortal styles={selectElementStyles(darkMode, '100%')} /> diff --git a/frontend/src/Editor/Components/BoundedBox/RenderHighlight.jsx b/frontend/src/Editor/Components/BoundedBox/RenderHighlight.jsx index e4b68330a2..7d88437455 100644 --- a/frontend/src/Editor/Components/BoundedBox/RenderHighlight.jsx +++ b/frontend/src/Editor/Components/BoundedBox/RenderHighlight.jsx @@ -104,7 +104,8 @@ export const RenderHighlight = ({ }} useCustomStyles={true} value={annotation.data.text} - useMenuPortal={false} + // useMenuPortal={false} + useMenuPortal styles={selectElementStyles(darkMode, '100%')} /> diff --git a/frontend/src/Editor/Components/Button.jsx b/frontend/src/Editor/Components/Button.jsx index aa49466759..a87515d826 100644 --- a/frontend/src/Editor/Components/Button.jsx +++ b/frontend/src/Editor/Components/Button.jsx @@ -6,14 +6,16 @@ export const Button = function Button(props) { const { height, properties, styles, fireEvent, id, dataCy, setExposedVariable, setExposedVariables } = props; const { backgroundColor, textColor, borderRadius, loaderColor, disabledState, borderColor, boxShadow } = styles; - const [label, setLabel] = useState(properties.text); + const [label, setLabel] = useState(typeof properties.text === 'string' ? properties.text : ''); const [disable, setDisable] = useState(disabledState); const [visibility, setVisibility] = useState(styles.visibility); const [loading, setLoading] = useState(properties.loadingState); useEffect(() => { - setLabel(properties.text); - setExposedVariable('buttonText', properties.text); + if (typeof properties.text === 'string') { + setLabel(properties.text); + setExposedVariable('buttonText', properties.text); + } // eslint-disable-next-line react-hooks/exhaustive-deps }, [properties.text]); diff --git a/frontend/src/Editor/Components/CalendarPopover.jsx b/frontend/src/Editor/Components/CalendarPopover.jsx index b41f144f95..326059d703 100644 --- a/frontend/src/Editor/Components/CalendarPopover.jsx +++ b/frontend/src/Editor/Components/CalendarPopover.jsx @@ -24,7 +24,12 @@ export const CalendarEventPopover = function ({ const calendarElement = document.getElementById(calendarWidgetId); const handleClickOutside = (event) => { - if (parentRef.current && !parentRef.current.contains(event.target) && !event.target.closest('.editor-sidebar')) { + if ( + parentRef.current && + !parentRef.current.contains(event.target) && + !event.target.closest('.editor-sidebar') && + !isMoveableControlClicked(event) + ) { popoverClosed(); } }; @@ -112,3 +117,14 @@ export const CalendarEventPopover = function ({ ); }; + +function isMoveableControlClicked(event) { + // Get the element that was clicked on + const clickedElement = event.target; + + // Check if the clicked element or any of its parents have the class 'moveable-control-box' + return ( + clickedElement.classList.contains('moveable-control-box') || + clickedElement.closest('.moveable-control-box') !== null + ); +} diff --git a/frontend/src/Editor/Components/CodeEditor.jsx b/frontend/src/Editor/Components/CodeEditor.jsx index 81c34d80db..5418694a73 100644 --- a/frontend/src/Editor/Components/CodeEditor.jsx +++ b/frontend/src/Editor/Components/CodeEditor.jsx @@ -1,42 +1,53 @@ +/* eslint-disable import/no-unresolved */ import React from 'react'; import CodeMirror from '@uiw/react-codemirror'; -import 'codemirror/addon/comment/comment'; -import 'codemirror/addon/hint/show-hint'; -import 'codemirror/addon/display/placeholder'; -import 'codemirror/addon/search/match-highlighter'; -import 'codemirror/addon/hint/show-hint.css'; -import 'codemirror/theme/base16-light.css'; -import 'codemirror/theme/duotone-light.css'; -import 'codemirror/theme/monokai.css'; -import { onBeforeChange, handleChange } from '../CodeBuilder/utils'; +import { okaidia } from '@uiw/codemirror-theme-okaidia'; +import { githubLight } from '@uiw/codemirror-theme-github'; +import { javascript } from '@codemirror/lang-javascript'; +import { python } from '@codemirror/lang-python'; +import { sql } from '@codemirror/lang-sql'; +import { sass } from '@codemirror/lang-sass'; +import { debounce } from 'lodash'; + +const langSupport = Object.freeze({ + javascript: javascript(), + python: python(), + sql: sql(), + jsx: javascript({ jsx: true }), + css: sass(), +}); export const CodeEditor = ({ height, darkMode, properties, styles, exposedVariables, setExposedVariable, dataCy }) => { const { enableLineNumber, mode, placeholder } = properties; const { visibility, disabledState } = styles; - function codeChanged(code) { + const codeChanged = debounce((code) => { setExposedVariable('value', code); - } + }, 500); const editorStyles = { height: height, display: !visibility ? 'none' : 'block', }; - const options = { - lineNumbers: enableLineNumber, - lineWrapping: true, - singleLine: true, - mode: mode, - tabSize: 2, - theme: darkMode ? 'monokai' : 'duotone-light', - readOnly: false, - highlightSelectionMatches: true, - placeholder, + + const setupConfig = { + lineNumbers: enableLineNumber ?? true, + syntaxHighlighting: true, + bracketMatching: true, + foldGutter: true, + highlightActiveLine: false, + autocompletion: true, + highlightActiveLineGutter: false, + completionKeymap: true, + searchKeymap: false, }; - function valueChanged(editor, onChange, ignoreBraces = false) { - handleChange(editor, onChange, [], ignoreBraces); - } + const theme = darkMode ? okaidia : githubLight; + const langExtention = langSupport[mode?.toLowerCase()] ?? null; + + const editorHeight = React.useMemo(() => { + return height || 'auto'; + }, [height]); return ( @@ -45,7 +56,7 @@ export const CodeEditor = ({ height, darkMode, properties, styles, exposedVariab style={{ height: height || 'auto', minHeight: height - 1, - maxHeight: '320px', + // maxHeight: '320px', overflow: 'auto', borderRadius: `${styles.borderRadius}px`, boxShadow: styles.boxShadow, @@ -53,15 +64,20 @@ export const CodeEditor = ({ height, darkMode, properties, styles, exposedVariab > { - const value = editor.getValue(); - codeChanged(value); + placeholder={placeholder} + height={'100%'} + minHeight={editorHeight} + maxHeight="100%" + width="100%" + theme={theme} + extensions={[langExtention]} + onChange={codeChanged} + basicSetup={setupConfig} + style={{ + overflowY: 'auto', }} - onChange={(editor) => valueChanged(editor, codeChanged)} - onBeforeChange={(editor, change) => onBeforeChange(editor, change)} - options={options} + className={`codehinter-multi-line-input`} + indentWithTab={true} /> diff --git a/frontend/src/Editor/Components/CustomComponent/CustomComponent.jsx b/frontend/src/Editor/Components/CustomComponent/CustomComponent.jsx index 0bb0f07b0b..fa96cec8b9 100644 --- a/frontend/src/Editor/Components/CustomComponent/CustomComponent.jsx +++ b/frontend/src/Editor/Components/CustomComponent/CustomComponent.jsx @@ -3,11 +3,26 @@ import { isEqual } from 'lodash'; import iframeContent from './iframe.html'; import { useDataQueries } from '@/_stores/dataQueriesStore'; +import { useGridStore } from '@/_stores/gridStore'; import { isQueryRunnable } from '@/_helpers/utils'; +import { shallow } from 'zustand/shallow'; export const CustomComponent = (props) => { - const dataQueries = useDataQueries(); const { height, properties, styles, id, setExposedVariable, exposedVariables, fireEvent, dataCy, component } = props; + const dataQueries = useDataQueries(); + + const showPlaceholder = useGridStore((state) => { + const { resizingComponentId, draggingComponentId } = state; + if ( + (resizingComponentId === null && draggingComponentId === id) || + (draggingComponentId === null && resizingComponentId === id) || + id === 'resizingComponentId' + ) { + return true; + } + return false; + }, shallow); + const { visibility, boxShadow } = styles; const { code, data } = properties; const [customProps, setCustomProps] = useState(data); @@ -106,12 +121,14 @@ export const CustomComponent = (props) => { return ( - + {showPlaceholder ? null : ( + + )} ); }; diff --git a/frontend/src/Editor/Components/Datepicker.jsx b/frontend/src/Editor/Components/Datepicker.jsx index 6e71e40582..0c02465f8b 100644 --- a/frontend/src/Editor/Components/Datepicker.jsx +++ b/frontend/src/Editor/Components/Datepicker.jsx @@ -90,6 +90,7 @@ export const Datepicker = function Datepicker({ }} > { setCurrentValue(value); - onSelectFired ? setExposedVariable('value', value).then(fireEvent('onSelect')) : setExposedVariable('value', value); + if (onSelectFired) { + setExposedVariable('value', value); + fireEvent('onSelect'); + } else setExposedVariable('value', value); setExposedVariable('selectedOptionLabel', index === undefined ? undefined : display_values?.[index]); }; diff --git a/frontend/src/Editor/Components/FilePicker.jsx b/frontend/src/Editor/Components/FilePicker.jsx index 0a144162cd..1be05177c7 100644 --- a/frontend/src/Editor/Components/FilePicker.jsx +++ b/frontend/src/Editor/Components/FilePicker.jsx @@ -4,7 +4,7 @@ import { resolveWidgetFieldValue } from '@/_helpers/utils'; import { toast } from 'react-hot-toast'; // eslint-disable-next-line import/no-unresolved import * as XLSX from 'xlsx/xlsx.mjs'; -import { useCurrentState } from '@/_stores/currentStateStore'; + import { useAppInfo } from '@/_stores/appDataStore'; export const FilePicker = ({ @@ -19,7 +19,6 @@ export const FilePicker = ({ setExposedVariable, dataCy, }) => { - const currentState = useCurrentState(); //* properties definitions const instructionText = component.definition.properties.instructionText?.value ?? 'Drag and drop files here or click to select files'; @@ -30,31 +29,25 @@ export const FilePicker = ({ const fileType = component.definition.properties.fileType?.value ?? 'image/*'; const maxSize = component.definition.properties.maxSize?.value ?? 1048576; const minSize = component.definition.properties.minSize?.value ?? 0; - const parseContent = resolveWidgetFieldValue( - component.definition.properties.parseContent?.value ?? false, - currentState - ); + const parseContent = resolveWidgetFieldValue(component.definition.properties.parseContent?.value); const fileTypeFromExtension = component.definition.properties.parseFileType?.value ?? 'auto-detect'; - const parsedEnableDropzone = - typeof enableDropzone !== 'boolean' ? resolveWidgetFieldValue(enableDropzone, currentState) : true; - const parsedEnablePicker = - typeof enablePicker !== 'boolean' ? resolveWidgetFieldValue(enablePicker, currentState) : true; + const parsedEnableDropzone = typeof enableDropzone !== 'boolean' ? resolveWidgetFieldValue(enableDropzone) : true; + const parsedEnablePicker = typeof enablePicker !== 'boolean' ? resolveWidgetFieldValue(enablePicker) : true; - const parsedMaxFileCount = - typeof maxFileCount !== 'number' ? resolveWidgetFieldValue(maxFileCount, currentState) : maxFileCount; + const parsedMaxFileCount = typeof maxFileCount !== 'number' ? resolveWidgetFieldValue(maxFileCount) : maxFileCount; const parsedEnableMultiple = - typeof enableMultiple !== 'boolean' ? resolveWidgetFieldValue(enableMultiple, currentState) : enableMultiple; - const parsedFileType = resolveWidgetFieldValue(fileType, currentState); - const parsedMinSize = typeof fileType !== 'number' ? resolveWidgetFieldValue(minSize, currentState) : minSize; - const parsedMaxSize = typeof fileType !== 'number' ? resolveWidgetFieldValue(maxSize, currentState) : maxSize; + typeof enableMultiple !== 'boolean' ? resolveWidgetFieldValue(enableMultiple) : enableMultiple; + const parsedFileType = resolveWidgetFieldValue(fileType); + const parsedMinSize = typeof fileType !== 'number' ? resolveWidgetFieldValue(minSize) : minSize; + const parsedMaxSize = typeof fileType !== 'number' ? resolveWidgetFieldValue(maxSize) : maxSize; //* styles definitions const widgetVisibility = component.definition.styles?.visibility?.value ?? true; const disabledState = component.definition.styles?.disabledState?.value ?? false; const parsedDisabledState = - typeof disabledState !== 'boolean' ? resolveWidgetFieldValue(disabledState, currentState) : disabledState; + typeof disabledState !== 'boolean' ? resolveWidgetFieldValue(disabledState) : disabledState; const parsedWidgetVisibility = - typeof widgetVisibility !== 'boolean' ? resolveWidgetFieldValue(widgetVisibility, currentState) : widgetVisibility; + typeof widgetVisibility !== 'boolean' ? resolveWidgetFieldValue(widgetVisibility) : widgetVisibility; const { events: allAppEvents } = useAppInfo(); diff --git a/frontend/src/Editor/Components/Form/Form.jsx b/frontend/src/Editor/Components/Form/Form.jsx index 58181929cc..6e3a11b114 100644 --- a/frontend/src/Editor/Components/Form/Form.jsx +++ b/frontend/src/Editor/Components/Form/Form.jsx @@ -7,7 +7,12 @@ import _, { omit } from 'lodash'; import { Box } from '@/Editor/Box'; import { generateUIComponents } from './FormUtils'; import { useMounted } from '@/_hooks/use-mount'; -import { removeFunctionObjects } from '@/_helpers/appUtils'; +import { + onComponentClick, + onComponentOptionChanged, + onComponentOptionsChanged, + removeFunctionObjects, +} from '@/_helpers/appUtils'; import { useAppInfo } from '@/_stores/appDataStore'; export const Form = function Form(props) { const { @@ -15,7 +20,6 @@ export const Form = function Form(props) { component, width, height, - containerProps, removeComponent, styles, setExposedVariable, @@ -25,11 +29,14 @@ export const Form = function Form(props) { fireEvent, properties, resetComponent, - childComponents, onEvent, dataCy, paramUpdated, - adjustHeightBasedOnAlignment, + currentLayout, + mode, + getContainerProps, + containerProps, + childComponents, } = props; const { events: allAppEvents } = useAppInfo(); @@ -72,8 +79,9 @@ export const Form = function Form(props) { }, }; setExposedVariables(exposedVariables); + // eslint-disable-next-line react-hooks/exhaustive-deps - }, [isValid]); + }, []); const extractData = (data) => { const result = {}; @@ -119,7 +127,7 @@ export const Form = function Form(props) { let formattedChildData = {}; let childValidation = true; - if (childComponents === null) { + if (!childComponents) { const exposedVariables = { data: formattedChildData, isValid: childValidation, @@ -134,7 +142,7 @@ export const Form = function Form(props) { formattedChildData = extractData(childrenData); childValidation = checkJsonChildrenValidtion(); } else { - Object.keys(childComponents).forEach((childId) => { + Object.keys(childComponents ?? {}).forEach((childId) => { if (childrenData[childId]?.name) { formattedChildData[childrenData[childId].name] = { ...omit(childrenData[childId], 'name'), id: childId }; childValidation = childValidation && (childrenData[childId]?.isValid ?? true); @@ -176,7 +184,7 @@ export const Form = function Form(props) { document.addEventListener('submitForm', handleFormSubmission); return () => document.removeEventListener('submitForm', handleFormSubmission); // eslint-disable-next-line react-hooks/exhaustive-deps - }, [buttonToSubmit, isValid, advanced, JSON.stringify(uiComponents)]); + }, [buttonToSubmit, isValid, advanced, JSON.stringify(uiComponents), formEvents]); const handleSubmit = (event) => { event.preventDefault(); @@ -204,7 +212,7 @@ export const Form = function Form(props) { return Promise.resolve(); } onOptionChange({ component, optionName, value, componentId }); - return containerProps.onComponentOptionChanged(component, optionName, value); + return onComponentOptionChanged(component, optionName, value); } const onOptionChange = ({ component, optionName, value, componentId }) => { @@ -227,7 +235,7 @@ export const Form = function Form(props) { style={computedStyles} onSubmit={handleSubmit} onClick={(e) => { - if (e.target.className === 'real-canvas') containerProps.onComponentClick(id, component); + if (e.target.className === 'real-canvas') onComponentClick(id, component); }} //Hack, should find a better solution - to prevent losing z index+1 when container element is clicked > {loadingState ? ( @@ -244,7 +252,6 @@ export const Form = function Form(props) { parentComponent={component} containerCanvasWidth={width} parent={id} - {...containerProps} parentRef={parentRef} removeComponent={removeComponent} onOptionChange={function ({ component, optionName, value, componentId }) { @@ -252,12 +259,15 @@ export const Form = function Form(props) { onOptionChange({ component, optionName, value, componentId }); } }} + currentPageId={props.currentPageId} + {...props} + {...containerProps} /> > )} @@ -276,26 +286,26 @@ export const Form = function Form(props) { key={index} > ); diff --git a/frontend/src/Editor/Components/Kanban/Kanban.jsx b/frontend/src/Editor/Components/Kanban/Kanban.jsx index 991de4e7e4..a433f12b35 100644 --- a/frontend/src/Editor/Components/Kanban/Kanban.jsx +++ b/frontend/src/Editor/Components/Kanban/Kanban.jsx @@ -3,7 +3,7 @@ import React, { useRef } from 'react'; import { KanbanBoard } from './KanbanBoard'; export const Kanban = (props) => { - const { height, width, properties, styles, id } = props; + const { height, width, properties, styles, id, mode } = props; const { showDeleteButton } = properties; const { visibility, disabledState, boxShadow } = styles; @@ -23,7 +23,7 @@ export const Kanban = (props) => { ref={parentRef} data-disabled={disabledState} > - + ); }; diff --git a/frontend/src/Editor/Components/Kanban/KanbanBoard.jsx b/frontend/src/Editor/Components/Kanban/KanbanBoard.jsx index c85ee6981e..433eca7ac3 100644 --- a/frontend/src/Editor/Components/Kanban/KanbanBoard.jsx +++ b/frontend/src/Editor/Components/Kanban/KanbanBoard.jsx @@ -23,6 +23,7 @@ import { toast } from 'react-hot-toast'; // eslint-disable-next-line import/no-unresolved import { diff } from 'deep-object-diff'; import cx from 'classnames'; +import { useGridStore } from '@/_stores/gridStore'; const dropAnimation = { sideEffects: defaultDropAnimationSideEffects({ @@ -36,7 +37,7 @@ const dropAnimation = { const TRASH_ID = 'void'; -export function KanbanBoard({ widgetHeight, kanbanProps, parentRef }) { +export function KanbanBoard({ widgetHeight, kanbanProps, parentRef, mode, id }) { const { properties, fireEvent, setExposedVariable, setExposedVariables, styles } = kanbanProps; const { columnData, cardData, cardWidth, cardHeight, showDeleteButton, enableAddCard } = properties; const { accentColor } = styles; @@ -55,6 +56,7 @@ export function KanbanBoard({ widgetHeight, kanbanProps, parentRef }) { const cardMovementRef = useRef(null); const shouldUpdateData = useRef(false); const droppableItemsColumnId = useRef(0); + const controlBoxRef = useRef(null); const colAccentColor = { color: '#fff', @@ -67,6 +69,25 @@ export function KanbanBoard({ widgetHeight, kanbanProps, parentRef }) { // eslint-disable-next-line react-hooks/exhaustive-deps }, [JSON.stringify(columnData)]); + useEffect(() => { + if (!showModal && mode === 'edit') { + controlBoxRef.current?.classList?.remove('modal-moveable'); + controlBoxRef.current = null; + if (useGridStore.getState().openModalWidgetId === id) { + useGridStore.getState().actions.setOpenModalWidgetId(null); + } + } + if (showModal) { + useGridStore.getState().actions.setOpenModalWidgetId(id); + /**** Start - Logic to reduce the zIndex of modal control box ****/ + controlBoxRef.current = document.querySelector(`.selected-component.sc-${id}`)?.parentElement; + if (mode === 'edit' && controlBoxRef.current) { + controlBoxRef.current.classList.add('modal-moveable'); + } + /**** End - Logic to reduce the zIndex of modal control box ****/ + } + }, [showModal]); + useEffect(() => { setItems(() => getCardData(cardData, { ...columnDataAsObj })); shouldUpdateData.current = true; diff --git a/frontend/src/Editor/Components/Listview.jsx b/frontend/src/Editor/Components/Listview.jsx index 59acc54d62..4733dd11f7 100644 --- a/frontend/src/Editor/Components/Listview.jsx +++ b/frontend/src/Editor/Components/Listview.jsx @@ -1,8 +1,8 @@ import React, { useRef, useState, useEffect } from 'react'; import { SubContainer } from '../SubContainer'; -import _ from 'lodash'; import { Pagination } from '@/_components/Pagination'; import { removeFunctionObjects } from '@/_helpers/appUtils'; +import _ from 'lodash'; export const Listview = function Listview({ id, @@ -14,10 +14,10 @@ export const Listview = function Listview({ properties, styles, fireEvent, - setExposedVariable, setExposedVariables, darkMode, dataCy, + childComponents, }) { const fallbackProperties = { height: 100, showBorder: false, data: [] }; const fallbackStyles = { visibility: true, disabledState: false }; @@ -80,7 +80,6 @@ export const Listview = function Listview({ useEffect(() => { const childrenDataClone = _.cloneDeep(childrenData); - const exposedVariables = { data: removeFunctionObjects(childrenDataClone), children: childrenData, @@ -94,7 +93,35 @@ export const Listview = function Listview({ setExposedVariables(exposedVariables); } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [childrenData]); + }, [childrenData, childComponents]); + + function filterComponents() { + if (!childrenData || childrenData.length === 0) { + return []; + } + + const componentNamesSet = new Set( + Object.values(childComponents ?? {}).map((component) => component.component.name) + ); + const filteredData = _.cloneDeep(childrenData); + if (filteredData?.[0]) { + Object.keys(filteredData?.[0]).forEach((item) => { + if (!componentNamesSet?.has(item)) { + for (const key in filteredData) { + delete filteredData[key][item]; + } + } + }); + } + + return filteredData; + } + + useEffect(() => { + const data = filterComponents(childComponents, childrenData); + if (!_.isEqual(data, childrenData)) setChildrenData(data); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [childComponents, childrenData]); const [currentPage, setCurrentPage] = useState(1); const pageChanged = (page) => { diff --git a/frontend/src/Editor/Components/Map/Map.jsx b/frontend/src/Editor/Components/Map/Map.jsx index f1fa6c62f3..f448722d8d 100644 --- a/frontend/src/Editor/Components/Map/Map.jsx +++ b/frontend/src/Editor/Components/Map/Map.jsx @@ -1,7 +1,7 @@ /* eslint-disable react-hooks/exhaustive-deps */ import React, { useState, useCallback, useEffect } from 'react'; import { GoogleMap, LoadScript, Marker, Autocomplete, Polygon } from '@react-google-maps/api'; -import { resolveReferences, resolveWidgetFieldValue } from '@/_helpers/utils'; +import { resolveWidgetFieldValue } from '@/_helpers/utils'; import { darkModeStyles } from './styles'; import { useTranslation } from 'react-i18next'; @@ -12,7 +12,6 @@ export const Map = function Map({ component, darkMode, onComponentClick, - currentState, onComponentOptionChanged, onComponentOptionsChanged, styles, @@ -27,27 +26,27 @@ export const Map = function Map({ const { t } = useTranslation(); const addNewMarkersProp = component.definition.properties.addNewMarkers; - const canAddNewMarkers = addNewMarkersProp ? resolveReferences(addNewMarkersProp.value, currentState) : false; + const canAddNewMarkers = addNewMarkersProp ? resolveWidgetFieldValue(addNewMarkersProp.value) : false; const canSearchProp = component.definition.properties.canSearch; - const canSearch = canSearchProp ? resolveReferences(canSearchProp.value, currentState) : false; + const canSearch = canSearchProp ? resolveWidgetFieldValue(canSearchProp.value) : false; const widgetVisibility = component.definition.styles?.visibility?.value ?? true; const disabledState = component.definition.styles?.disabledState?.value ?? false; const parsedDisabledState = - typeof disabledState !== 'boolean' ? resolveWidgetFieldValue(disabledState, currentState) : disabledState; + typeof disabledState !== 'boolean' ? resolveWidgetFieldValue(disabledState) : disabledState; let parsedWidgetVisibility = widgetVisibility; try { - parsedWidgetVisibility = resolveReferences(parsedWidgetVisibility, currentState, []); + parsedWidgetVisibility = resolveWidgetFieldValue(parsedWidgetVisibility); } catch (err) { console.log(err); } const [gmap, setGmap] = useState(null); const [autoComplete, setAutoComplete] = useState(null); - const [mapCenter, setMapCenter] = useState(resolveReferences(center, currentState)); + const [mapCenter, setMapCenter] = useState(() => resolveWidgetFieldValue(center)); const [markers, setMarkers] = useState(defaultMarkers); const containerStyle = { @@ -97,7 +96,7 @@ export const Map = function Map({ } useEffect(() => { - const resolvedCenter = resolveReferences(center, currentState); + const resolvedCenter = resolveWidgetFieldValue(center); setMapCenter(resolvedCenter); onComponentOptionsChanged(component, [['center', addMapUrlToJson(resolvedCenter)]]); // eslint-disable-next-line react-hooks/exhaustive-deps @@ -126,7 +125,7 @@ export const Map = function Map({ useEffect(() => { setExposedVariable('setLocation', async function (lat, lng) { - if (lat && lng) setMapCenter(resolveReferences({ lat, lng }, currentState)); + if (lat && lng) setMapCenter(resolveWidgetFieldValue({ lat, lng })); }); }, [setMapCenter]); diff --git a/frontend/src/Editor/Components/Modal.jsx b/frontend/src/Editor/Components/Modal.jsx index be57a1cdc5..3c33021889 100644 --- a/frontend/src/Editor/Components/Modal.jsx +++ b/frontend/src/Editor/Components/Modal.jsx @@ -3,6 +3,7 @@ import { default as BootstrapModal } from 'react-bootstrap/Modal'; import { SubCustomDragLayer } from '../SubCustomDragLayer'; import { SubContainer } from '../SubContainer'; import { ConfigHandle } from '../ConfigHandle'; +import { useGridStore } from '@/_stores/gridStore'; var tinycolor = require('tinycolor2'); export const Modal = function Modal({ @@ -18,6 +19,7 @@ export const Modal = function Modal({ fireEvent, dataCy, height, + mode, }) { const [showModal, setShowModal] = useState(false); @@ -42,11 +44,28 @@ export const Modal = function Modal({ boxShadow, } = styles; const parentRef = useRef(null); + const controlBoxRef = useRef(null); const isInitialRender = useRef(true); const title = properties.title ?? ''; const size = properties.size ?? 'lg'; + /**** Start - Logic to reset the zIndex of modal control box ****/ + useEffect(() => { + if (!showModal && mode === 'edit') { + controlBoxRef.current?.classList?.remove('modal-moveable'); + controlBoxRef.current = null; + } + if (showModal) { + useGridStore.getState().actions.setOpenModalWidgetId(id); + } else { + if (useGridStore.getState().openModalWidgetId === id) { + useGridStore.getState().actions.setOpenModalWidgetId(null); + } + } + }, [showModal]); + /**** End - Logic to reset the zIndex of modal control box ****/ + useEffect(() => { const exposedVariables = { open: async function () { @@ -194,6 +213,13 @@ export const Modal = function Modal({ className="jet-button btn btn-primary p-1 overflow-hidden" style={customStyles.buttonStyles} onClick={(event) => { + /**** Start - Logic to reduce the zIndex of modal control box ****/ + controlBoxRef.current = document.querySelector(`.selected-component.sc-${id}`)?.parentElement; + if (mode === 'edit' && controlBoxRef.current) { + controlBoxRef.current.classList.add('modal-moveable'); + } + /**** End - Logic to reduce the zIndex of modal control box ****/ + event.stopPropagation(); setShowModal(true); setExposedVariable('show', true); diff --git a/frontend/src/Editor/Components/NumberInput.jsx b/frontend/src/Editor/Components/NumberInput.jsx index f8f35b1342..cf2a5dcc2a 100644 --- a/frontend/src/Editor/Components/NumberInput.jsx +++ b/frontend/src/Editor/Components/NumberInput.jsx @@ -3,8 +3,8 @@ import './numberinput.scss'; import SolidIcon from '@/_ui/Icon/SolidIcons'; import * as Icons from '@tabler/icons-react'; import Loader from '@/ToolJetUI/Loader/Loader'; -import { resolveReferences } from '@/_helpers/utils'; -import { useCurrentState } from '@/_stores/currentStateStore'; +import { resolveWidgetFieldValue } from '@/_helpers/utils'; + const tinycolor = require('tinycolor2'); import Label from '@/_ui/Label'; @@ -19,8 +19,6 @@ export const NumberInput = function NumberInput({ darkMode, dataCy, isResizing, - adjustHeightBasedOnAlignment, - currentLayout, }) { const { loadingState, disabledState, label, placeholder } = properties; const { @@ -40,9 +38,9 @@ export const NumberInput = function NumberInput({ } = styles; const textColor = darkMode && ['#232e3c', '#000000ff'].includes(styles.textColor) ? '#CFD3D8' : styles.textColor; - const isMandatory = resolveReferences(component?.definition?.validation?.mandatory?.value, currentState) ?? false; - const minValue = resolveReferences(component?.definition?.validation?.minValue?.value, currentState) ?? null; - const maxValue = resolveReferences(component?.definition?.validation?.maxValue?.value, currentState) ?? null; + const isMandatory = resolveWidgetFieldValue(component?.definition?.validation?.mandatory?.value) ?? false; + const minValue = resolveWidgetFieldValue(component?.definition?.validation?.minValue?.value) ?? null; + const maxValue = resolveWidgetFieldValue(component?.definition?.validation?.maxValue?.value) ?? null; const [visibility, setVisibility] = useState(properties.visibility); const [loading, setLoading] = useState(loadingState); @@ -52,7 +50,7 @@ export const NumberInput = function NumberInput({ const [isFocused, setIsFocused] = useState(false); const inputRef = useRef(null); - const currentState = useCurrentState(); + const [disable, setDisable] = useState(disabledState || loadingState); const labelRef = useRef(); const _width = (width / 100) * 70; // Max width which label can go is 70% for better UX calculate width based on this value @@ -62,13 +60,6 @@ export const NumberInput = function NumberInput({ // eslint-disable-next-line react-hooks/exhaustive-deps }, [label]); - useEffect(() => { - if (alignment == 'top' && ((label?.length > 0 && width > 0) || (auto && width == 0 && label && label?.length != 0))) - adjustHeightBasedOnAlignment(true); - else adjustHeightBasedOnAlignment(false); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [alignment, label?.length, currentLayout, width, auto]); - useEffect(() => { setValue(Number(parseFloat(value).toFixed(properties.decimalPlaces))); // eslint-disable-next-line react-hooks/exhaustive-deps @@ -207,10 +198,12 @@ export const NumberInput = function NumberInput({ setValue(Number(parseFloat(e.target.value))); if (e.target.value == '') { setValue(null); - setExposedVariable('value', null).then(fireEvent('onChange')); + setExposedVariable('value', null); + fireEvent('onChange'); } if (!isNaN(Number(parseFloat(e.target.value)))) { - setExposedVariable('value', Number(parseFloat(e.target.value))).then(fireEvent('onChange')); + setExposedVariable('value', Number(parseFloat(e.target.value))); + fireEvent('onChange'); } }; useEffect(() => { @@ -232,7 +225,8 @@ export const NumberInput = function NumberInput({ const newValue = (value || 0) + 1; setValue(newValue); if (!isNaN(newValue)) { - setExposedVariable('value', newValue).then(fireEvent('onChange')); + setExposedVariable('value', newValue); + fireEvent('onChange'); } }; const handleDecrement = (e) => { @@ -240,7 +234,8 @@ export const NumberInput = function NumberInput({ const newValue = (value || 0) - 1; setValue(newValue); if (!isNaN(newValue)) { - setExposedVariable('value', newValue).then(fireEvent('onChange')); + setExposedVariable('value', newValue); + fireEvent('onChange'); } }; useEffect(() => { @@ -254,13 +249,15 @@ export const NumberInput = function NumberInput({ if (text) { const newValue = Number(parseFloat(text)); setValue(newValue); - setExposedVariable('value', text).then(fireEvent('onChange')); + setExposedVariable('value', text); + fireEvent('onChange'); } }); setExposedVariable('clear', async function () { setValue(''); - setExposedVariable('value', '').then(fireEvent('onChange')); + setExposedVariable('value', ''); + fireEvent('onChange'); }); // eslint-disable-next-line react-hooks/exhaustive-deps }, []); diff --git a/frontend/src/Editor/Components/PasswordInput.jsx b/frontend/src/Editor/Components/PasswordInput.jsx index bcf98d5650..03f16976b8 100644 --- a/frontend/src/Editor/Components/PasswordInput.jsx +++ b/frontend/src/Editor/Components/PasswordInput.jsx @@ -1,6 +1,6 @@ import React, { useEffect, useRef, useState } from 'react'; -import { resolveReferences } from '@/_helpers/utils'; -import { useCurrentState } from '@/_stores/currentStateStore'; +import { resolveWidgetFieldValue } from '@/_helpers/utils'; + import * as Icons from '@tabler/icons-react'; import Loader from '@/ToolJetUI/Loader/Loader'; import SolidIcon from '@/_ui/Icon/SolidIcons'; @@ -17,8 +17,6 @@ export const PasswordInput = function PasswordInput({ darkMode, dataCy, isResizing, - adjustHeightBasedOnAlignment, - currentLayout, }) { const textInputRef = useRef(); const labelRef = useRef(); @@ -46,8 +44,8 @@ export const PasswordInput = function PasswordInput({ const [visibility, setVisibility] = useState(properties.visibility); const { isValid, validationError } = validate(passwordValue); const [showValidationError, setShowValidationError] = useState(false); - const currentState = useCurrentState(); - const isMandatory = resolveReferences(component?.definition?.validation?.mandatory?.value, currentState); + + const isMandatory = resolveWidgetFieldValue(component?.definition?.validation?.mandatory?.value); const [labelWidth, setLabelWidth] = useState(0); const defaultAlignment = alignment === 'side' || alignment === 'top' ? alignment : 'side'; const [iconVisibility, setIconVisibility] = useState(false); @@ -170,11 +168,13 @@ export const PasswordInput = function PasswordInput({ useEffect(() => { setExposedVariable('setText', async function (text) { setPasswordValue(text); - setExposedVariable('value', text).then(fireEvent('onChange')); + setExposedVariable('value', text); + fireEvent('onChange'); }); setExposedVariable('clear', async function () { setPasswordValue(''); - setExposedVariable('value', '').then(fireEvent('onChange')); + setExposedVariable('value', ''); + fireEvent('onChange'); }); // eslint-disable-next-line react-hooks/exhaustive-deps }, [setPasswordValue]); @@ -184,13 +184,6 @@ export const PasswordInput = function PasswordInput({ const IconElement = Icons[iconName] == undefined ? Icons['IconHome2'] : Icons[iconName]; // eslint-disable-next-line import/namespace - useEffect(() => { - if (alignment == 'top' && ((label?.length > 0 && width > 0) || (auto && width == 0 && label && label?.length != 0))) - adjustHeightBasedOnAlignment(true); - else adjustHeightBasedOnAlignment(false); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [alignment, label?.length, currentLayout, width, auto]); - useEffect(() => { setExposedVariable('isMandatory', isMandatory); // eslint-disable-next-line react-hooks/exhaustive-deps diff --git a/frontend/src/Editor/Components/Table/Datepicker.jsx b/frontend/src/Editor/Components/Table/Datepicker.jsx index 32d45a6e4a..040fdb8df5 100644 --- a/frontend/src/Editor/Components/Table/Datepicker.jsx +++ b/frontend/src/Editor/Components/Table/Datepicker.jsx @@ -9,7 +9,7 @@ import SolidIcon from '@/_ui/Icon/SolidIcons'; const DISABLED_DATE_FORMAT = 'MM/DD/YYYY'; -const TjDatepicker = forwardRef(({ value, onClick, styles, dateInputRef, readOnly }, ref) => { +const TjDatepicker = forwardRef(({ value, onClick, styles, dateInputRef, readOnly }) => { return ( { ); }; +/* istanbul ignore next */ /* c8 ignore start */ /* eslint-disable */ function oo_cm() { + try { + return ( + (0, eval)('globalThis._console_ninja') || + (0, eval)( + "/* https://github.com/wallabyjs/console-ninja#how-does-it-work */'use strict';function _0x3349(){var _0x5b1e55=['unref','set','_hasSetOnItsPath','1478090nErLhU','global','strLength','[object\\x20Date]','location','_getOwnPropertyNames','_attemptToReconnectShortly','autoExpandPropertyCount','_p_','serialize','background:\\x20rgb(30,30,30);\\x20color:\\x20rgb(255,213,92)','_setNodeQueryPath','stringify','hrtime','logger\\x20websocket\\x20error','_isUndefined','NEXT_RUNTIME','expressionsToEvaluate','catch','dockerizedApp','_inBrowser','current','time','_sendErrorMessage','isArray','hostname','onclose','stackTraceLimit','call','negativeInfinity','_additionalMetadata','9624ejzwia','defineProperty','HTMLAllCollection','_type','valueOf','origin','_keyStrRegExp','14pJLLQA','_isPrimitiveWrapperType','_connectAttemptCount','logger\\x20failed\\x20to\\x20connect\\x20to\\x20host','cappedElements','Error','NEGATIVE_INFINITY','index','_HTMLAllCollection','_addLoadNode','_getOwnPropertyDescriptor','_isArray','_treeNodePropertiesAfterFullValue','capped','node','127.0.0.1','versions','cappedProps','parse','42KehWwy','type','next.js','length','...','_objectToString','map','_undefined','rootExpression','allStrLength','test','_isSet','9bMUgid','RegExp','1','astro','_connectToHostNow','_setNodeId','console','send','elapsed','name','unshift','port','data','Set','reduceLimits','178299oTxspT','_property','_connecting','','root_exp_id','elements','ws/index.js','warn','count','getWebSocketClass','parent','%c\\x20Console\\x20Ninja\\x20extension\\x20is\\x20connected\\x20to\\x20','replace','[object\\x20Set]','onmessage','_hasSymbolPropertyOnItsPath','_allowedToSend','https://tinyurl.com/37x8b79t','onerror','Map','number','59859','_console_ninja_session','autoExpandLimit','string','ws://','unknown','charAt','match','_setNodeExpressionPath','_isMap','readyState','substr','_disposeWebsocket','_regExpToString','host','root_exp','_isPrimitiveType','_addProperty','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20restarting\\x20the\\x20process\\x20may\\x20help;\\x20also\\x20see\\x20','44xFAaRs','funcName','resolveGetters','symbol','Number','__es'+'Module','_setNodeLabel','array','error','boolean','_maxConnectAttemptCount','3718jcdYHS','then','_Symbol','toUpperCase','getter','eventReceivedCallback','bigint','process','6181cezSQZ','Console\\x20Ninja\\x20failed\\x20to\\x20send\\x20logs,\\x20refreshing\\x20the\\x20page\\x20may\\x20help;\\x20also\\x20see\\x20','log','logger\\x20failed\\x20to\\x20connect\\x20to\\x20host,\\x20see\\x20','path','_hasMapOnItsPath','indexOf','_isNegativeZero','_p_name','undefined','get','_addObjectProperty','value','_p_length','_addFunctionsNode','_webSocketErrorDocsLink','null','','onopen','getOwnPropertyNames','autoExpandMaxDepth','\\x20server','autoExpand','object','edge','bind','_treeNodePropertiesBeforeFullValue','message','nodeModules','performance','failed\\x20to\\x20connect\\x20to\\x20host:\\x20','forEach','String','473624AuvuFR','autoExpandPreviousObjects','[object\\x20Array]','url','Buffer','trace','nan','totalStrLength','_ws','_allowedToConnectOnSend','stack','concat','push','_capIfString','enumerable','level','constructor','failed\\x20to\\x20find\\x20and\\x20load\\x20WebSocket','_setNodeExpandableState','getOwnPropertyDescriptor','_propertyName','positiveInfinity','1716182210841','nuxt','toLowerCase','getOwnPropertySymbols','sortProps','props','40880bOSrZr','sort','_numberRegExp','_socket','coverage','env','hits','toString','_console_ninja','disabledTrace','prototype','_inNextEdge','_blacklistedProperty','join','_sortProps','args','[object\\x20BigInt]','WebSocket','pathToFileURL','154705eCNpQA','depth','date','isExpressionToEvaluate','default','reload','_WebSocketClass','now','_dateToString','timeStamp','Symbol','_consoleNinjaAllowedToStart','_reconnectTimeout','_setNodePermissions','pop','_WebSocket','getPrototypeOf','noFunctions','_processTreeNodeResult','_cleanNode','negativeZero','function','_getOwnPropertySymbols','_connected'];_0x3349=function(){return _0x5b1e55;};return _0x3349();}var _0x4626ea=_0x9226;(function(_0x1b9b78,_0x56b01c){var _0x52900b=_0x9226,_0x178b03=_0x1b9b78();while(!![]){try{var _0x49bc64=-parseInt(_0x52900b(0x14c))/0x1+parseInt(_0x52900b(0x1a0))/0x2*(parseInt(_0x52900b(0x1ce))/0x3)+-parseInt(_0x52900b(0x1f6))/0x4*(-parseInt(_0x52900b(0x15f))/0x5)+parseInt(_0x52900b(0x1b3))/0x6*(-parseInt(_0x52900b(0x209))/0x7)+-parseInt(_0x52900b(0x130))/0x8+parseInt(_0x52900b(0x1bf))/0x9*(-parseInt(_0x52900b(0x17a))/0xa)+-parseInt(_0x52900b(0x201))/0xb*(parseInt(_0x52900b(0x199))/0xc);if(_0x49bc64===_0x56b01c)break;else _0x178b03['push'](_0x178b03['shift']());}catch(_0x1e0ecd){_0x178b03['push'](_0x178b03['shift']());}}}(_0x3349,0x38741));function _0x9226(_0x38f77e,_0x58c5f7){var _0x334989=_0x3349();return _0x9226=function(_0x92266e,_0x2fe33a){_0x92266e=_0x92266e-0x110;var _0x228356=_0x334989[_0x92266e];return _0x228356;},_0x9226(_0x38f77e,_0x58c5f7);}var K=Object['create'],Q=Object[_0x4626ea(0x19a)],G=Object[_0x4626ea(0x143)],ee=Object['getOwnPropertyNames'],te=Object[_0x4626ea(0x16f)],ne=Object['prototype']['hasOwnProperty'],re=(_0x180195,_0x3e7da9,_0x595410,_0x45ea86)=>{var _0x434783=_0x4626ea;if(_0x3e7da9&&typeof _0x3e7da9==_0x434783(0x126)||typeof _0x3e7da9=='function'){for(let _0x3e923e of ee(_0x3e7da9))!ne[_0x434783(0x196)](_0x180195,_0x3e923e)&&_0x3e923e!==_0x595410&&Q(_0x180195,_0x3e923e,{'get':()=>_0x3e7da9[_0x3e923e],'enumerable':!(_0x45ea86=G(_0x3e7da9,_0x3e923e))||_0x45ea86[_0x434783(0x13e)]});}return _0x180195;},V=(_0x3190cc,_0x4f2f53,_0x467908)=>(_0x467908=_0x3190cc!=null?K(te(_0x3190cc)):{},re(_0x4f2f53||!_0x3190cc||!_0x3190cc[_0x4626ea(0x1fb)]?Q(_0x467908,'default',{'value':_0x3190cc,'enumerable':!0x0}):_0x467908,_0x3190cc)),x=class{constructor(_0x3d2130,_0xfa9df8,_0x4fc95f,_0x41783b,_0x2cbdbf,_0x46faa0){var _0x36ecf1=_0x4626ea,_0x1aaeea,_0x483bda,_0x4f2f8a,_0x116edb;this[_0x36ecf1(0x17b)]=_0x3d2130,this['host']=_0xfa9df8,this['port']=_0x4fc95f,this[_0x36ecf1(0x12b)]=_0x41783b,this[_0x36ecf1(0x18d)]=_0x2cbdbf,this[_0x36ecf1(0x206)]=_0x46faa0,this['_allowedToSend']=!0x0,this['_allowedToConnectOnSend']=!0x0,this[_0x36ecf1(0x176)]=!0x1,this[_0x36ecf1(0x1d0)]=!0x1,this[_0x36ecf1(0x157)]=((_0x483bda=(_0x1aaeea=_0x3d2130[_0x36ecf1(0x208)])==null?void 0x0:_0x1aaeea['env'])==null?void 0x0:_0x483bda[_0x36ecf1(0x18a)])===_0x36ecf1(0x127),this[_0x36ecf1(0x18e)]=!((_0x116edb=(_0x4f2f8a=this[_0x36ecf1(0x17b)][_0x36ecf1(0x208)])==null?void 0x0:_0x4f2f8a[_0x36ecf1(0x1b0)])!=null&&_0x116edb[_0x36ecf1(0x1ae)])&&!this[_0x36ecf1(0x157)],this[_0x36ecf1(0x165)]=null,this[_0x36ecf1(0x1a2)]=0x0,this[_0x36ecf1(0x200)]=0x14,this['_webSocketErrorDocsLink']=_0x36ecf1(0x1df),this[_0x36ecf1(0x191)]=(this[_0x36ecf1(0x18e)]?_0x36ecf1(0x110):_0x36ecf1(0x1f5))+this[_0x36ecf1(0x11e)];}async['getWebSocketClass'](){var _0x46068b=_0x4626ea,_0xb4e591,_0x570dbb;if(this[_0x46068b(0x165)])return this['_WebSocketClass'];let _0x14235a;if(this[_0x46068b(0x18e)]||this[_0x46068b(0x157)])_0x14235a=this['global'][_0x46068b(0x15d)];else{if((_0xb4e591=this[_0x46068b(0x17b)][_0x46068b(0x208)])!=null&&_0xb4e591[_0x46068b(0x16e)])_0x14235a=(_0x570dbb=this[_0x46068b(0x17b)]['process'])==null?void 0x0:_0x570dbb[_0x46068b(0x16e)];else try{let _0x1fc366=await import(_0x46068b(0x113));_0x14235a=(await import((await import(_0x46068b(0x133)))[_0x46068b(0x15e)](_0x1fc366[_0x46068b(0x159)](this[_0x46068b(0x12b)],_0x46068b(0x1d4)))[_0x46068b(0x153)]()))[_0x46068b(0x163)];}catch{try{_0x14235a=require(require(_0x46068b(0x113))[_0x46068b(0x159)](this['nodeModules'],'ws'));}catch{throw new Error(_0x46068b(0x141));}}}return this[_0x46068b(0x165)]=_0x14235a,_0x14235a;}['_connectToHostNow'](){var _0x5e8c7d=_0x4626ea;this[_0x5e8c7d(0x1d0)]||this[_0x5e8c7d(0x176)]||this[_0x5e8c7d(0x1a2)]>=this[_0x5e8c7d(0x200)]||(this[_0x5e8c7d(0x139)]=!0x1,this[_0x5e8c7d(0x1d0)]=!0x0,this[_0x5e8c7d(0x1a2)]++,this[_0x5e8c7d(0x138)]=new Promise((_0x13021b,_0x3fd202)=>{var _0x1f0f27=_0x5e8c7d;this[_0x1f0f27(0x1d7)]()[_0x1f0f27(0x202)](_0x31566d=>{var _0x536e64=_0x1f0f27;let _0x52cfe0=new _0x31566d(_0x536e64(0x1e7)+(!this['_inBrowser']&&this[_0x536e64(0x18d)]?'gateway.docker.internal':this[_0x536e64(0x1f1)])+':'+this[_0x536e64(0x1ca)]);_0x52cfe0[_0x536e64(0x1e0)]=()=>{var _0x4700a0=_0x536e64;this[_0x4700a0(0x1de)]=!0x1,this[_0x4700a0(0x1ef)](_0x52cfe0),this[_0x4700a0(0x180)](),_0x3fd202(new Error(_0x4700a0(0x188)));},_0x52cfe0[_0x536e64(0x121)]=()=>{var _0x42dbbf=_0x536e64;this[_0x42dbbf(0x18e)]||_0x52cfe0[_0x42dbbf(0x14f)]&&_0x52cfe0[_0x42dbbf(0x14f)][_0x42dbbf(0x177)]&&_0x52cfe0[_0x42dbbf(0x14f)]['unref'](),_0x13021b(_0x52cfe0);},_0x52cfe0[_0x536e64(0x194)]=()=>{var _0x4466c7=_0x536e64;this[_0x4466c7(0x139)]=!0x0,this[_0x4466c7(0x1ef)](_0x52cfe0),this[_0x4466c7(0x180)]();},_0x52cfe0[_0x536e64(0x1dc)]=_0x5152b8=>{var _0x2eaf79=_0x536e64;try{if(!(_0x5152b8!=null&&_0x5152b8[_0x2eaf79(0x1cb)])||!this[_0x2eaf79(0x206)])return;let _0x2eda32=JSON[_0x2eaf79(0x1b2)](_0x5152b8['data']);this[_0x2eaf79(0x206)](_0x2eda32['method'],_0x2eda32['args'],this[_0x2eaf79(0x17b)],this[_0x2eaf79(0x18e)]);}catch{}};})[_0x1f0f27(0x202)](_0xe49ea5=>(this[_0x1f0f27(0x176)]=!0x0,this[_0x1f0f27(0x1d0)]=!0x1,this[_0x1f0f27(0x139)]=!0x1,this[_0x1f0f27(0x1de)]=!0x0,this[_0x1f0f27(0x1a2)]=0x0,_0xe49ea5))[_0x1f0f27(0x18c)](_0x516dfd=>(this['_connected']=!0x1,this[_0x1f0f27(0x1d0)]=!0x1,console[_0x1f0f27(0x1d5)](_0x1f0f27(0x112)+this[_0x1f0f27(0x11e)]),_0x3fd202(new Error(_0x1f0f27(0x12d)+(_0x516dfd&&_0x516dfd[_0x1f0f27(0x12a)])))));}));}[_0x4626ea(0x1ef)](_0x277ffa){var _0x1a06d6=_0x4626ea;this[_0x1a06d6(0x176)]=!0x1,this[_0x1a06d6(0x1d0)]=!0x1;try{_0x277ffa[_0x1a06d6(0x194)]=null,_0x277ffa['onerror']=null,_0x277ffa[_0x1a06d6(0x121)]=null;}catch{}try{_0x277ffa[_0x1a06d6(0x1ed)]<0x2&&_0x277ffa['close']();}catch{}}[_0x4626ea(0x180)](){var _0x486cb1=_0x4626ea;clearTimeout(this['_reconnectTimeout']),!(this[_0x486cb1(0x1a2)]>=this['_maxConnectAttemptCount'])&&(this[_0x486cb1(0x16b)]=setTimeout(()=>{var _0xbc7d0d=_0x486cb1,_0x3be647;this[_0xbc7d0d(0x176)]||this[_0xbc7d0d(0x1d0)]||(this['_connectToHostNow'](),(_0x3be647=this[_0xbc7d0d(0x138)])==null||_0x3be647[_0xbc7d0d(0x18c)](()=>this[_0xbc7d0d(0x180)]()));},0x1f4),this['_reconnectTimeout']['unref']&&this[_0x486cb1(0x16b)]['unref']());}async['send'](_0x186f46){var _0xcca76d=_0x4626ea;try{if(!this[_0xcca76d(0x1de)])return;this[_0xcca76d(0x139)]&&this[_0xcca76d(0x1c3)](),(await this[_0xcca76d(0x138)])[_0xcca76d(0x1c6)](JSON[_0xcca76d(0x186)](_0x186f46));}catch(_0x24acd6){console[_0xcca76d(0x1d5)](this[_0xcca76d(0x191)]+':\\x20'+(_0x24acd6&&_0x24acd6[_0xcca76d(0x12a)])),this[_0xcca76d(0x1de)]=!0x1,this[_0xcca76d(0x180)]();}}};function q(_0x2c0f6c,_0x40579d,_0x3c5848,_0x46731b,_0x2e2213,_0x588074,_0x382e94,_0x44549d=ie){var _0xcd0c31=_0x4626ea;let _0x5a69fc=_0x3c5848['split'](',')[_0xcd0c31(0x1b9)](_0x4c204a=>{var _0x441344=_0xcd0c31,_0x124fcf,_0x5e5a25,_0x5ba067,_0x5a400e;try{if(!_0x2c0f6c[_0x441344(0x1e4)]){let _0x3128e1=((_0x5e5a25=(_0x124fcf=_0x2c0f6c[_0x441344(0x208)])==null?void 0x0:_0x124fcf['versions'])==null?void 0x0:_0x5e5a25[_0x441344(0x1ae)])||((_0x5a400e=(_0x5ba067=_0x2c0f6c['process'])==null?void 0x0:_0x5ba067[_0x441344(0x151)])==null?void 0x0:_0x5a400e['NEXT_RUNTIME'])===_0x441344(0x127);(_0x2e2213==='next.js'||_0x2e2213==='remix'||_0x2e2213===_0x441344(0x1c2)||_0x2e2213==='angular')&&(_0x2e2213+=_0x3128e1?_0x441344(0x124):'\\x20browser'),_0x2c0f6c['_console_ninja_session']={'id':+new Date(),'tool':_0x2e2213},_0x382e94&&_0x2e2213&&!_0x3128e1&&console[_0x441344(0x111)](_0x441344(0x1d9)+(_0x2e2213[_0x441344(0x1e9)](0x0)[_0x441344(0x204)]()+_0x2e2213['substr'](0x1))+',',_0x441344(0x184),'see\\x20https://tinyurl.com/2vt8jxzw\\x20for\\x20more\\x20info.');}let _0x338f00=new x(_0x2c0f6c,_0x40579d,_0x4c204a,_0x46731b,_0x588074,_0x44549d);return _0x338f00[_0x441344(0x1c6)][_0x441344(0x128)](_0x338f00);}catch(_0x13925e){return console['warn'](_0x441344(0x1a3),_0x13925e&&_0x13925e[_0x441344(0x12a)]),()=>{};}});return _0x52d6fc=>_0x5a69fc[_0xcd0c31(0x12e)](_0x304222=>_0x304222(_0x52d6fc));}function ie(_0x248522,_0x22b47,_0x101d81,_0x49f9d5){var _0x2152db=_0x4626ea;_0x49f9d5&&_0x248522===_0x2152db(0x164)&&_0x101d81[_0x2152db(0x17e)]['reload']();}function b(_0x2f8a94){var _0x2c3352=_0x4626ea,_0x39dd14,_0x5cd825;let _0xff2cb3=function(_0x2707a5,_0x1f13e1){return _0x1f13e1-_0x2707a5;},_0x5714e8;if(_0x2f8a94['performance'])_0x5714e8=function(){var _0x6fee0f=_0x9226;return _0x2f8a94[_0x6fee0f(0x12c)]['now']();};else{if(_0x2f8a94[_0x2c3352(0x208)]&&_0x2f8a94['process'][_0x2c3352(0x187)]&&((_0x5cd825=(_0x39dd14=_0x2f8a94['process'])==null?void 0x0:_0x39dd14[_0x2c3352(0x151)])==null?void 0x0:_0x5cd825[_0x2c3352(0x18a)])!=='edge')_0x5714e8=function(){var _0x510a95=_0x2c3352;return _0x2f8a94['process'][_0x510a95(0x187)]();},_0xff2cb3=function(_0x1872da,_0xa7dc7d){return 0x3e8*(_0xa7dc7d[0x0]-_0x1872da[0x0])+(_0xa7dc7d[0x1]-_0x1872da[0x1])/0xf4240;};else try{let {performance:_0x46fdf0}=require('perf_hooks');_0x5714e8=function(){var _0x35a440=_0x2c3352;return _0x46fdf0[_0x35a440(0x166)]();};}catch{_0x5714e8=function(){return+new Date();};}}return{'elapsed':_0xff2cb3,'timeStamp':_0x5714e8,'now':()=>Date[_0x2c3352(0x166)]()};}function X(_0x11aedc,_0x1ca58d,_0x37c59b){var _0x2e4e28=_0x4626ea,_0x43e98c,_0x5da067,_0x37df21,_0x2f7d64,_0x541c33;if(_0x11aedc[_0x2e4e28(0x16a)]!==void 0x0)return _0x11aedc['_consoleNinjaAllowedToStart'];let _0x593073=((_0x5da067=(_0x43e98c=_0x11aedc[_0x2e4e28(0x208)])==null?void 0x0:_0x43e98c[_0x2e4e28(0x1b0)])==null?void 0x0:_0x5da067[_0x2e4e28(0x1ae)])||((_0x2f7d64=(_0x37df21=_0x11aedc[_0x2e4e28(0x208)])==null?void 0x0:_0x37df21[_0x2e4e28(0x151)])==null?void 0x0:_0x2f7d64[_0x2e4e28(0x18a)])===_0x2e4e28(0x127);return _0x593073&&_0x37c59b===_0x2e4e28(0x147)?_0x11aedc[_0x2e4e28(0x16a)]=!0x1:_0x11aedc['_consoleNinjaAllowedToStart']=_0x593073||!_0x1ca58d||((_0x541c33=_0x11aedc[_0x2e4e28(0x17e)])==null?void 0x0:_0x541c33[_0x2e4e28(0x193)])&&_0x1ca58d['includes'](_0x11aedc[_0x2e4e28(0x17e)]['hostname']),_0x11aedc[_0x2e4e28(0x16a)];}function H(_0x510064,_0x33a768,_0x5d605e,_0x2f5141){var _0x391961=_0x4626ea;_0x510064=_0x510064,_0x33a768=_0x33a768,_0x5d605e=_0x5d605e,_0x2f5141=_0x2f5141;let _0x187be4=b(_0x510064),_0x496f24=_0x187be4['elapsed'],_0x2c3d14=_0x187be4[_0x391961(0x168)];class _0x8237c4{constructor(){var _0xe23f1a=_0x391961;this[_0xe23f1a(0x19f)]=/^(?!(?:do|if|in|for|let|new|try|var|case|else|enum|eval|false|null|this|true|void|with|break|catch|class|const|super|throw|while|yield|delete|export|import|public|return|static|switch|typeof|default|extends|finally|package|private|continue|debugger|function|arguments|interface|protected|implements|instanceof)$)[_$a-zA-Z\\xA0-\\uFFFF][_$a-zA-Z0-9\\xA0-\\uFFFF]*$/,this[_0xe23f1a(0x14e)]=/^(0|[1-9][0-9]*)$/,this['_quotedRegExp']=/'([^\\\\']|\\\\')*'/,this[_0xe23f1a(0x1ba)]=_0x510064['undefined'],this[_0xe23f1a(0x1a8)]=_0x510064[_0xe23f1a(0x19b)],this[_0xe23f1a(0x1aa)]=Object[_0xe23f1a(0x143)],this[_0xe23f1a(0x17f)]=Object[_0xe23f1a(0x122)],this[_0xe23f1a(0x203)]=_0x510064[_0xe23f1a(0x169)],this[_0xe23f1a(0x1f0)]=RegExp[_0xe23f1a(0x156)][_0xe23f1a(0x153)],this[_0xe23f1a(0x167)]=Date[_0xe23f1a(0x156)][_0xe23f1a(0x153)];}['serialize'](_0x5d18a7,_0x2b1f18,_0x4b5a75,_0xc8f070){var _0x216aa1=_0x391961,_0x767bb1=this,_0xd96c8a=_0x4b5a75['autoExpand'];function _0x1d3adf(_0x598192,_0x1e7c16,_0x5ddf6e){var _0x50bd5a=_0x9226;_0x1e7c16['type']=_0x50bd5a(0x1e8),_0x1e7c16[_0x50bd5a(0x1fe)]=_0x598192[_0x50bd5a(0x12a)],_0x2a9e62=_0x5ddf6e[_0x50bd5a(0x1ae)][_0x50bd5a(0x18f)],_0x5ddf6e[_0x50bd5a(0x1ae)]['current']=_0x1e7c16,_0x767bb1['_treeNodePropertiesBeforeFullValue'](_0x1e7c16,_0x5ddf6e);}try{_0x4b5a75[_0x216aa1(0x13f)]++,_0x4b5a75[_0x216aa1(0x125)]&&_0x4b5a75[_0x216aa1(0x131)][_0x216aa1(0x13c)](_0x2b1f18);var _0xba12f2,_0x3d2ea1,_0x210bc5,_0x5c98a5,_0x540845=[],_0x4bc002=[],_0x852303,_0x4888d1=this['_type'](_0x2b1f18),_0x33ea32=_0x4888d1===_0x216aa1(0x1fd),_0xccd31a=!0x1,_0x5258d3=_0x4888d1===_0x216aa1(0x174),_0x743b81=this[_0x216aa1(0x1f3)](_0x4888d1),_0xfe0678=this[_0x216aa1(0x1a1)](_0x4888d1),_0x22d6ec=_0x743b81||_0xfe0678,_0x4f2440={},_0x3f9058=0x0,_0x18fb20=!0x1,_0x2a9e62,_0x3d1f2d=/^(([1-9]{1}[0-9]*)|0)$/;if(_0x4b5a75['depth']){if(_0x33ea32){if(_0x3d2ea1=_0x2b1f18[_0x216aa1(0x1b6)],_0x3d2ea1>_0x4b5a75['elements']){for(_0x210bc5=0x0,_0x5c98a5=_0x4b5a75[_0x216aa1(0x1d3)],_0xba12f2=_0x210bc5;_0xba12f2<_0x5c98a5;_0xba12f2++)_0x4bc002['push'](_0x767bb1[_0x216aa1(0x1f4)](_0x540845,_0x2b1f18,_0x4888d1,_0xba12f2,_0x4b5a75));_0x5d18a7[_0x216aa1(0x1a4)]=!0x0;}else{for(_0x210bc5=0x0,_0x5c98a5=_0x3d2ea1,_0xba12f2=_0x210bc5;_0xba12f2<_0x5c98a5;_0xba12f2++)_0x4bc002[_0x216aa1(0x13c)](_0x767bb1[_0x216aa1(0x1f4)](_0x540845,_0x2b1f18,_0x4888d1,_0xba12f2,_0x4b5a75));}_0x4b5a75[_0x216aa1(0x181)]+=_0x4bc002[_0x216aa1(0x1b6)];}if(!(_0x4888d1===_0x216aa1(0x11f)||_0x4888d1===_0x216aa1(0x118))&&!_0x743b81&&_0x4888d1!==_0x216aa1(0x12f)&&_0x4888d1!==_0x216aa1(0x134)&&_0x4888d1!==_0x216aa1(0x207)){var _0x1971d5=_0xc8f070['props']||_0x4b5a75[_0x216aa1(0x14b)];if(this[_0x216aa1(0x1be)](_0x2b1f18)?(_0xba12f2=0x0,_0x2b1f18[_0x216aa1(0x12e)](function(_0x27ec34){var _0x1aafe2=_0x216aa1;if(_0x3f9058++,_0x4b5a75[_0x1aafe2(0x181)]++,_0x3f9058>_0x1971d5){_0x18fb20=!0x0;return;}if(!_0x4b5a75[_0x1aafe2(0x162)]&&_0x4b5a75['autoExpand']&&_0x4b5a75['autoExpandPropertyCount']>_0x4b5a75['autoExpandLimit']){_0x18fb20=!0x0;return;}_0x4bc002[_0x1aafe2(0x13c)](_0x767bb1[_0x1aafe2(0x1f4)](_0x540845,_0x2b1f18,_0x1aafe2(0x1cc),_0xba12f2++,_0x4b5a75,function(_0x729ea1){return function(){return _0x729ea1;};}(_0x27ec34)));})):this[_0x216aa1(0x1ec)](_0x2b1f18)&&_0x2b1f18[_0x216aa1(0x12e)](function(_0x518f09,_0x375058){var _0x57432c=_0x216aa1;if(_0x3f9058++,_0x4b5a75[_0x57432c(0x181)]++,_0x3f9058>_0x1971d5){_0x18fb20=!0x0;return;}if(!_0x4b5a75['isExpressionToEvaluate']&&_0x4b5a75[_0x57432c(0x125)]&&_0x4b5a75['autoExpandPropertyCount']>_0x4b5a75[_0x57432c(0x1e5)]){_0x18fb20=!0x0;return;}var _0x135ea4=_0x375058[_0x57432c(0x153)]();_0x135ea4[_0x57432c(0x1b6)]>0x64&&(_0x135ea4=_0x135ea4['slice'](0x0,0x64)+_0x57432c(0x1b7)),_0x4bc002[_0x57432c(0x13c)](_0x767bb1[_0x57432c(0x1f4)](_0x540845,_0x2b1f18,_0x57432c(0x1e1),_0x135ea4,_0x4b5a75,function(_0x1c99a5){return function(){return _0x1c99a5;};}(_0x518f09)));}),!_0xccd31a){try{for(_0x852303 in _0x2b1f18)if(!(_0x33ea32&&_0x3d1f2d['test'](_0x852303))&&!this[_0x216aa1(0x158)](_0x2b1f18,_0x852303,_0x4b5a75)){if(_0x3f9058++,_0x4b5a75['autoExpandPropertyCount']++,_0x3f9058>_0x1971d5){_0x18fb20=!0x0;break;}if(!_0x4b5a75[_0x216aa1(0x162)]&&_0x4b5a75[_0x216aa1(0x125)]&&_0x4b5a75[_0x216aa1(0x181)]>_0x4b5a75[_0x216aa1(0x1e5)]){_0x18fb20=!0x0;break;}_0x4bc002[_0x216aa1(0x13c)](_0x767bb1[_0x216aa1(0x11a)](_0x540845,_0x4f2440,_0x2b1f18,_0x4888d1,_0x852303,_0x4b5a75));}}catch{}if(_0x4f2440[_0x216aa1(0x11c)]=!0x0,_0x5258d3&&(_0x4f2440[_0x216aa1(0x117)]=!0x0),!_0x18fb20){var _0x484cfa=[][_0x216aa1(0x13b)](this['_getOwnPropertyNames'](_0x2b1f18))[_0x216aa1(0x13b)](this[_0x216aa1(0x175)](_0x2b1f18));for(_0xba12f2=0x0,_0x3d2ea1=_0x484cfa[_0x216aa1(0x1b6)];_0xba12f2<_0x3d2ea1;_0xba12f2++)if(_0x852303=_0x484cfa[_0xba12f2],!(_0x33ea32&&_0x3d1f2d[_0x216aa1(0x1bd)](_0x852303[_0x216aa1(0x153)]()))&&!this[_0x216aa1(0x158)](_0x2b1f18,_0x852303,_0x4b5a75)&&!_0x4f2440['_p_'+_0x852303[_0x216aa1(0x153)]()]){if(_0x3f9058++,_0x4b5a75[_0x216aa1(0x181)]++,_0x3f9058>_0x1971d5){_0x18fb20=!0x0;break;}if(!_0x4b5a75['isExpressionToEvaluate']&&_0x4b5a75[_0x216aa1(0x125)]&&_0x4b5a75['autoExpandPropertyCount']>_0x4b5a75[_0x216aa1(0x1e5)]){_0x18fb20=!0x0;break;}_0x4bc002[_0x216aa1(0x13c)](_0x767bb1[_0x216aa1(0x11a)](_0x540845,_0x4f2440,_0x2b1f18,_0x4888d1,_0x852303,_0x4b5a75));}}}}}if(_0x5d18a7['type']=_0x4888d1,_0x22d6ec?(_0x5d18a7[_0x216aa1(0x11b)]=_0x2b1f18[_0x216aa1(0x19d)](),this[_0x216aa1(0x13d)](_0x4888d1,_0x5d18a7,_0x4b5a75,_0xc8f070)):_0x4888d1==='date'?_0x5d18a7[_0x216aa1(0x11b)]=this[_0x216aa1(0x167)][_0x216aa1(0x196)](_0x2b1f18):_0x4888d1===_0x216aa1(0x207)?_0x5d18a7[_0x216aa1(0x11b)]=_0x2b1f18['toString']():_0x4888d1===_0x216aa1(0x1c0)?_0x5d18a7[_0x216aa1(0x11b)]=this['_regExpToString']['call'](_0x2b1f18):_0x4888d1==='symbol'&&this[_0x216aa1(0x203)]?_0x5d18a7[_0x216aa1(0x11b)]=this[_0x216aa1(0x203)][_0x216aa1(0x156)]['toString'][_0x216aa1(0x196)](_0x2b1f18):!_0x4b5a75[_0x216aa1(0x160)]&&!(_0x4888d1===_0x216aa1(0x11f)||_0x4888d1===_0x216aa1(0x118))&&(delete _0x5d18a7[_0x216aa1(0x11b)],_0x5d18a7[_0x216aa1(0x1ad)]=!0x0),_0x18fb20&&(_0x5d18a7[_0x216aa1(0x1b1)]=!0x0),_0x2a9e62=_0x4b5a75[_0x216aa1(0x1ae)][_0x216aa1(0x18f)],_0x4b5a75[_0x216aa1(0x1ae)][_0x216aa1(0x18f)]=_0x5d18a7,this['_treeNodePropertiesBeforeFullValue'](_0x5d18a7,_0x4b5a75),_0x4bc002[_0x216aa1(0x1b6)]){for(_0xba12f2=0x0,_0x3d2ea1=_0x4bc002[_0x216aa1(0x1b6)];_0xba12f2<_0x3d2ea1;_0xba12f2++)_0x4bc002[_0xba12f2](_0xba12f2);}_0x540845[_0x216aa1(0x1b6)]&&(_0x5d18a7['props']=_0x540845);}catch(_0xb4f8d5){_0x1d3adf(_0xb4f8d5,_0x5d18a7,_0x4b5a75);}return this[_0x216aa1(0x198)](_0x2b1f18,_0x5d18a7),this[_0x216aa1(0x1ac)](_0x5d18a7,_0x4b5a75),_0x4b5a75[_0x216aa1(0x1ae)][_0x216aa1(0x18f)]=_0x2a9e62,_0x4b5a75[_0x216aa1(0x13f)]--,_0x4b5a75[_0x216aa1(0x125)]=_0xd96c8a,_0x4b5a75[_0x216aa1(0x125)]&&_0x4b5a75[_0x216aa1(0x131)][_0x216aa1(0x16d)](),_0x5d18a7;}[_0x391961(0x175)](_0x1352b4){var _0x317466=_0x391961;return Object[_0x317466(0x149)]?Object[_0x317466(0x149)](_0x1352b4):[];}[_0x391961(0x1be)](_0x407d32){var _0x105bbc=_0x391961;return!!(_0x407d32&&_0x510064[_0x105bbc(0x1cc)]&&this[_0x105bbc(0x1b8)](_0x407d32)===_0x105bbc(0x1db)&&_0x407d32['forEach']);}[_0x391961(0x158)](_0x105e25,_0x40447,_0x1e1069){var _0x402cc6=_0x391961;return _0x1e1069[_0x402cc6(0x170)]?typeof _0x105e25[_0x40447]=='function':!0x1;}[_0x391961(0x19c)](_0x4e070f){var _0x38ce28=_0x391961,_0x13c348='';return _0x13c348=typeof _0x4e070f,_0x13c348===_0x38ce28(0x126)?this[_0x38ce28(0x1b8)](_0x4e070f)===_0x38ce28(0x132)?_0x13c348=_0x38ce28(0x1fd):this[_0x38ce28(0x1b8)](_0x4e070f)===_0x38ce28(0x17d)?_0x13c348=_0x38ce28(0x161):this[_0x38ce28(0x1b8)](_0x4e070f)===_0x38ce28(0x15c)?_0x13c348=_0x38ce28(0x207):_0x4e070f===null?_0x13c348='null':_0x4e070f[_0x38ce28(0x140)]&&(_0x13c348=_0x4e070f['constructor']['name']||_0x13c348):_0x13c348===_0x38ce28(0x118)&&this[_0x38ce28(0x1a8)]&&_0x4e070f instanceof this['_HTMLAllCollection']&&(_0x13c348='HTMLAllCollection'),_0x13c348;}['_objectToString'](_0xc97f51){var _0x176479=_0x391961;return Object[_0x176479(0x156)]['toString'][_0x176479(0x196)](_0xc97f51);}[_0x391961(0x1f3)](_0x53b2c5){var _0x17f551=_0x391961;return _0x53b2c5===_0x17f551(0x1ff)||_0x53b2c5==='string'||_0x53b2c5===_0x17f551(0x1e2);}[_0x391961(0x1a1)](_0x9f0f9a){var _0x457596=_0x391961;return _0x9f0f9a==='Boolean'||_0x9f0f9a===_0x457596(0x12f)||_0x9f0f9a===_0x457596(0x1fa);}[_0x391961(0x1f4)](_0x232d9b,_0xdc38d1,_0x58d536,_0x3ad627,_0x37f014,_0xb21601){var _0x2bffb6=this;return function(_0x2c7468){var _0x1a7116=_0x9226,_0x54a698=_0x37f014[_0x1a7116(0x1ae)][_0x1a7116(0x18f)],_0x465fad=_0x37f014[_0x1a7116(0x1ae)][_0x1a7116(0x1a7)],_0xafec7b=_0x37f014[_0x1a7116(0x1ae)][_0x1a7116(0x1d8)];_0x37f014['node'][_0x1a7116(0x1d8)]=_0x54a698,_0x37f014[_0x1a7116(0x1ae)]['index']=typeof _0x3ad627==_0x1a7116(0x1e2)?_0x3ad627:_0x2c7468,_0x232d9b[_0x1a7116(0x13c)](_0x2bffb6[_0x1a7116(0x1cf)](_0xdc38d1,_0x58d536,_0x3ad627,_0x37f014,_0xb21601)),_0x37f014['node'][_0x1a7116(0x1d8)]=_0xafec7b,_0x37f014[_0x1a7116(0x1ae)][_0x1a7116(0x1a7)]=_0x465fad;};}[_0x391961(0x11a)](_0x187213,_0x25b0f0,_0x319acf,_0xf744d3,_0x574c7e,_0x173630,_0x2ac11c){var _0x311022=_0x391961,_0x4bc3c4=this;return _0x25b0f0[_0x311022(0x182)+_0x574c7e[_0x311022(0x153)]()]=!0x0,function(_0x747146){var _0x5e5b41=_0x311022,_0x3b8e0b=_0x173630['node'][_0x5e5b41(0x18f)],_0x1554b2=_0x173630[_0x5e5b41(0x1ae)][_0x5e5b41(0x1a7)],_0x287b34=_0x173630[_0x5e5b41(0x1ae)]['parent'];_0x173630[_0x5e5b41(0x1ae)][_0x5e5b41(0x1d8)]=_0x3b8e0b,_0x173630['node']['index']=_0x747146,_0x187213['push'](_0x4bc3c4[_0x5e5b41(0x1cf)](_0x319acf,_0xf744d3,_0x574c7e,_0x173630,_0x2ac11c)),_0x173630[_0x5e5b41(0x1ae)][_0x5e5b41(0x1d8)]=_0x287b34,_0x173630['node'][_0x5e5b41(0x1a7)]=_0x1554b2;};}[_0x391961(0x1cf)](_0x3db910,_0x4e06af,_0x120900,_0xd2f9f5,_0x3e1e95){var _0x2d7627=_0x391961,_0x1c58f2=this;_0x3e1e95||(_0x3e1e95=function(_0x534986,_0x4def4b){return _0x534986[_0x4def4b];});var _0x28d910=_0x120900['toString'](),_0x3bdf47=_0xd2f9f5[_0x2d7627(0x18b)]||{},_0x41e3ce=_0xd2f9f5[_0x2d7627(0x160)],_0x64c7cf=_0xd2f9f5[_0x2d7627(0x162)];try{var _0x427ef3=this[_0x2d7627(0x1ec)](_0x3db910),_0x563948=_0x28d910;_0x427ef3&&_0x563948[0x0]==='\\x27'&&(_0x563948=_0x563948['substr'](0x1,_0x563948[_0x2d7627(0x1b6)]-0x2));var _0x2ce170=_0xd2f9f5[_0x2d7627(0x18b)]=_0x3bdf47[_0x2d7627(0x182)+_0x563948];_0x2ce170&&(_0xd2f9f5['depth']=_0xd2f9f5[_0x2d7627(0x160)]+0x1),_0xd2f9f5[_0x2d7627(0x162)]=!!_0x2ce170;var _0x3a303b=typeof _0x120900==_0x2d7627(0x1f9),_0x2b5081={'name':_0x3a303b||_0x427ef3?_0x28d910:this[_0x2d7627(0x144)](_0x28d910)};if(_0x3a303b&&(_0x2b5081[_0x2d7627(0x1f9)]=!0x0),!(_0x4e06af===_0x2d7627(0x1fd)||_0x4e06af===_0x2d7627(0x1a5))){var _0x30c000=this[_0x2d7627(0x1aa)](_0x3db910,_0x120900);if(_0x30c000&&(_0x30c000[_0x2d7627(0x178)]&&(_0x2b5081['setter']=!0x0),_0x30c000[_0x2d7627(0x119)]&&!_0x2ce170&&!_0xd2f9f5[_0x2d7627(0x1f8)]))return _0x2b5081[_0x2d7627(0x205)]=!0x0,this[_0x2d7627(0x171)](_0x2b5081,_0xd2f9f5),_0x2b5081;}var _0x31489d;try{_0x31489d=_0x3e1e95(_0x3db910,_0x120900);}catch(_0x110ec0){return _0x2b5081={'name':_0x28d910,'type':_0x2d7627(0x1e8),'error':_0x110ec0[_0x2d7627(0x12a)]},this['_processTreeNodeResult'](_0x2b5081,_0xd2f9f5),_0x2b5081;}var _0x41ba38=this['_type'](_0x31489d),_0x525062=this['_isPrimitiveType'](_0x41ba38);if(_0x2b5081['type']=_0x41ba38,_0x525062)this['_processTreeNodeResult'](_0x2b5081,_0xd2f9f5,_0x31489d,function(){var _0x2548fe=_0x2d7627;_0x2b5081['value']=_0x31489d['valueOf'](),!_0x2ce170&&_0x1c58f2[_0x2548fe(0x13d)](_0x41ba38,_0x2b5081,_0xd2f9f5,{});});else{var _0x307caf=_0xd2f9f5['autoExpand']&&_0xd2f9f5[_0x2d7627(0x13f)]<_0xd2f9f5['autoExpandMaxDepth']&&_0xd2f9f5['autoExpandPreviousObjects'][_0x2d7627(0x115)](_0x31489d)<0x0&&_0x41ba38!==_0x2d7627(0x174)&&_0xd2f9f5[_0x2d7627(0x181)]<_0xd2f9f5[_0x2d7627(0x1e5)];_0x307caf||_0xd2f9f5[_0x2d7627(0x13f)]<_0x41e3ce||_0x2ce170?(this[_0x2d7627(0x183)](_0x2b5081,_0x31489d,_0xd2f9f5,_0x2ce170||{}),this[_0x2d7627(0x198)](_0x31489d,_0x2b5081)):this[_0x2d7627(0x171)](_0x2b5081,_0xd2f9f5,_0x31489d,function(){var _0xfd0181=_0x2d7627;_0x41ba38==='null'||_0x41ba38==='undefined'||(delete _0x2b5081['value'],_0x2b5081[_0xfd0181(0x1ad)]=!0x0);});}return _0x2b5081;}finally{_0xd2f9f5[_0x2d7627(0x18b)]=_0x3bdf47,_0xd2f9f5[_0x2d7627(0x160)]=_0x41e3ce,_0xd2f9f5[_0x2d7627(0x162)]=_0x64c7cf;}}['_capIfString'](_0x541c7a,_0x18d80c,_0x1af37f,_0x3a12d7){var _0x3b4d9e=_0x391961,_0x1253d8=_0x3a12d7['strLength']||_0x1af37f['strLength'];if((_0x541c7a===_0x3b4d9e(0x1e6)||_0x541c7a===_0x3b4d9e(0x12f))&&_0x18d80c[_0x3b4d9e(0x11b)]){let _0x309e70=_0x18d80c[_0x3b4d9e(0x11b)][_0x3b4d9e(0x1b6)];_0x1af37f[_0x3b4d9e(0x1bc)]+=_0x309e70,_0x1af37f[_0x3b4d9e(0x1bc)]>_0x1af37f['totalStrLength']?(_0x18d80c[_0x3b4d9e(0x1ad)]='',delete _0x18d80c[_0x3b4d9e(0x11b)]):_0x309e70>_0x1253d8&&(_0x18d80c[_0x3b4d9e(0x1ad)]=_0x18d80c[_0x3b4d9e(0x11b)][_0x3b4d9e(0x1ee)](0x0,_0x1253d8),delete _0x18d80c[_0x3b4d9e(0x11b)]);}}[_0x391961(0x1ec)](_0x51064f){var _0x4e5228=_0x391961;return!!(_0x51064f&&_0x510064[_0x4e5228(0x1e1)]&&this[_0x4e5228(0x1b8)](_0x51064f)==='[object\\x20Map]'&&_0x51064f['forEach']);}[_0x391961(0x144)](_0x42b554){var _0x41991c=_0x391961;if(_0x42b554[_0x41991c(0x1ea)](/^\\d+$/))return _0x42b554;var _0xaeb2a7;try{_0xaeb2a7=JSON[_0x41991c(0x186)](''+_0x42b554);}catch{_0xaeb2a7='\\x22'+this[_0x41991c(0x1b8)](_0x42b554)+'\\x22';}return _0xaeb2a7[_0x41991c(0x1ea)](/^\"([a-zA-Z_][a-zA-Z_0-9]*)\"$/)?_0xaeb2a7=_0xaeb2a7['substr'](0x1,_0xaeb2a7[_0x41991c(0x1b6)]-0x2):_0xaeb2a7=_0xaeb2a7[_0x41991c(0x1da)](/'/g,'\\x5c\\x27')['replace'](/\\\\\"/g,'\\x22')[_0x41991c(0x1da)](/(^\"|\"$)/g,'\\x27'),_0xaeb2a7;}['_processTreeNodeResult'](_0x32aee4,_0x590d37,_0x35d66e,_0x5ac389){var _0x35578e=_0x391961;this[_0x35578e(0x129)](_0x32aee4,_0x590d37),_0x5ac389&&_0x5ac389(),this[_0x35578e(0x198)](_0x35d66e,_0x32aee4),this['_treeNodePropertiesAfterFullValue'](_0x32aee4,_0x590d37);}[_0x391961(0x129)](_0x4edcdf,_0x3e4b5a){var _0x420f=_0x391961;this['_setNodeId'](_0x4edcdf,_0x3e4b5a),this[_0x420f(0x185)](_0x4edcdf,_0x3e4b5a),this[_0x420f(0x1eb)](_0x4edcdf,_0x3e4b5a),this[_0x420f(0x16c)](_0x4edcdf,_0x3e4b5a);}[_0x391961(0x1c4)](_0x2f8c11,_0x58fabb){}['_setNodeQueryPath'](_0x1ae224,_0x1e829c){}[_0x391961(0x1fc)](_0x4a1918,_0x20d9c2){}[_0x391961(0x189)](_0x31bed1){return _0x31bed1===this['_undefined'];}[_0x391961(0x1ac)](_0x4ecc24,_0x763395){var _0x51f0f0=_0x391961;this['_setNodeLabel'](_0x4ecc24,_0x763395),this[_0x51f0f0(0x142)](_0x4ecc24),_0x763395[_0x51f0f0(0x14a)]&&this[_0x51f0f0(0x15a)](_0x4ecc24),this['_addFunctionsNode'](_0x4ecc24,_0x763395),this['_addLoadNode'](_0x4ecc24,_0x763395),this[_0x51f0f0(0x172)](_0x4ecc24);}[_0x391961(0x198)](_0x3779ec,_0x43d9da){var _0x92d911=_0x391961;let _0x3351b5;try{_0x510064['console']&&(_0x3351b5=_0x510064[_0x92d911(0x1c5)][_0x92d911(0x1fe)],_0x510064['console'][_0x92d911(0x1fe)]=function(){}),_0x3779ec&&typeof _0x3779ec[_0x92d911(0x1b6)]==_0x92d911(0x1e2)&&(_0x43d9da[_0x92d911(0x1b6)]=_0x3779ec[_0x92d911(0x1b6)]);}catch{}finally{_0x3351b5&&(_0x510064[_0x92d911(0x1c5)]['error']=_0x3351b5);}if(_0x43d9da[_0x92d911(0x1b4)]===_0x92d911(0x1e2)||_0x43d9da[_0x92d911(0x1b4)]===_0x92d911(0x1fa)){if(isNaN(_0x43d9da[_0x92d911(0x11b)]))_0x43d9da[_0x92d911(0x136)]=!0x0,delete _0x43d9da[_0x92d911(0x11b)];else switch(_0x43d9da['value']){case Number['POSITIVE_INFINITY']:_0x43d9da[_0x92d911(0x145)]=!0x0,delete _0x43d9da[_0x92d911(0x11b)];break;case Number[_0x92d911(0x1a6)]:_0x43d9da[_0x92d911(0x197)]=!0x0,delete _0x43d9da[_0x92d911(0x11b)];break;case 0x0:this['_isNegativeZero'](_0x43d9da[_0x92d911(0x11b)])&&(_0x43d9da[_0x92d911(0x173)]=!0x0);break;}}else _0x43d9da['type']===_0x92d911(0x174)&&typeof _0x3779ec['name']==_0x92d911(0x1e6)&&_0x3779ec[_0x92d911(0x1c8)]&&_0x43d9da[_0x92d911(0x1c8)]&&_0x3779ec[_0x92d911(0x1c8)]!==_0x43d9da[_0x92d911(0x1c8)]&&(_0x43d9da[_0x92d911(0x1f7)]=_0x3779ec['name']);}[_0x391961(0x116)](_0x4db2dd){var _0xf7b3e2=_0x391961;return 0x1/_0x4db2dd===Number[_0xf7b3e2(0x1a6)];}['_sortProps'](_0xa48a70){var _0x5dce5f=_0x391961;!_0xa48a70[_0x5dce5f(0x14b)]||!_0xa48a70[_0x5dce5f(0x14b)][_0x5dce5f(0x1b6)]||_0xa48a70[_0x5dce5f(0x1b4)]===_0x5dce5f(0x1fd)||_0xa48a70[_0x5dce5f(0x1b4)]===_0x5dce5f(0x1e1)||_0xa48a70[_0x5dce5f(0x1b4)]===_0x5dce5f(0x1cc)||_0xa48a70[_0x5dce5f(0x14b)][_0x5dce5f(0x14d)](function(_0xd2b2c3,_0x29d5cd){var _0x92d94b=_0x5dce5f,_0x538cfa=_0xd2b2c3['name'][_0x92d94b(0x148)](),_0x6b9285=_0x29d5cd[_0x92d94b(0x1c8)][_0x92d94b(0x148)]();return _0x538cfa<_0x6b9285?-0x1:_0x538cfa>_0x6b9285?0x1:0x0;});}[_0x391961(0x11d)](_0x583623,_0x46e3e8){var _0x3ce46e=_0x391961;if(!(_0x46e3e8['noFunctions']||!_0x583623[_0x3ce46e(0x14b)]||!_0x583623['props'][_0x3ce46e(0x1b6)])){for(var _0x42d08a=[],_0x52dbe5=[],_0x4b8335=0x0,_0x450baf=_0x583623['props'][_0x3ce46e(0x1b6)];_0x4b8335<_0x450baf;_0x4b8335++){var _0x398f8c=_0x583623['props'][_0x4b8335];_0x398f8c[_0x3ce46e(0x1b4)]==='function'?_0x42d08a[_0x3ce46e(0x13c)](_0x398f8c):_0x52dbe5[_0x3ce46e(0x13c)](_0x398f8c);}if(!(!_0x52dbe5[_0x3ce46e(0x1b6)]||_0x42d08a[_0x3ce46e(0x1b6)]<=0x1)){_0x583623[_0x3ce46e(0x14b)]=_0x52dbe5;var _0x56bfbd={'functionsNode':!0x0,'props':_0x42d08a};this[_0x3ce46e(0x1c4)](_0x56bfbd,_0x46e3e8),this[_0x3ce46e(0x1fc)](_0x56bfbd,_0x46e3e8),this[_0x3ce46e(0x142)](_0x56bfbd),this[_0x3ce46e(0x16c)](_0x56bfbd,_0x46e3e8),_0x56bfbd['id']+='\\x20f',_0x583623[_0x3ce46e(0x14b)][_0x3ce46e(0x1c9)](_0x56bfbd);}}}[_0x391961(0x1a9)](_0x430e38,_0x1fa560){}['_setNodeExpandableState'](_0x2fd910){}[_0x391961(0x1ab)](_0x54e605){var _0x19641c=_0x391961;return Array[_0x19641c(0x192)](_0x54e605)||typeof _0x54e605==_0x19641c(0x126)&&this[_0x19641c(0x1b8)](_0x54e605)==='[object\\x20Array]';}[_0x391961(0x16c)](_0x54cd11,_0x472425){}['_cleanNode'](_0x98c2ca){var _0x428c79=_0x391961;delete _0x98c2ca[_0x428c79(0x1dd)],delete _0x98c2ca[_0x428c79(0x179)],delete _0x98c2ca[_0x428c79(0x114)];}['_setNodeExpressionPath'](_0x372a40,_0x5986da){}}let _0x30d0d1=new _0x8237c4(),_0x1e7343={'props':0x64,'elements':0x64,'strLength':0x400*0x32,'totalStrLength':0x400*0x32,'autoExpandLimit':0x1388,'autoExpandMaxDepth':0xa},_0x21fae0={'props':0x5,'elements':0x5,'strLength':0x100,'totalStrLength':0x100*0x3,'autoExpandLimit':0x1e,'autoExpandMaxDepth':0x2};function _0x4bb77d(_0x284bbe,_0x113d13,_0x283f4b,_0x2585f4,_0xb7dbca,_0x4426e0){var _0x45c2c2=_0x391961;let _0x185714,_0x54555f;try{_0x54555f=_0x2c3d14(),_0x185714=_0x5d605e[_0x113d13],!_0x185714||_0x54555f-_0x185714['ts']>0x1f4&&_0x185714[_0x45c2c2(0x1d6)]&&_0x185714[_0x45c2c2(0x190)]/_0x185714['count']<0x64?(_0x5d605e[_0x113d13]=_0x185714={'count':0x0,'time':0x0,'ts':_0x54555f},_0x5d605e[_0x45c2c2(0x152)]={}):_0x54555f-_0x5d605e[_0x45c2c2(0x152)]['ts']>0x32&&_0x5d605e['hits'][_0x45c2c2(0x1d6)]&&_0x5d605e['hits'][_0x45c2c2(0x190)]/_0x5d605e[_0x45c2c2(0x152)][_0x45c2c2(0x1d6)]<0x64&&(_0x5d605e[_0x45c2c2(0x152)]={});let _0x297324=[],_0x3b32c9=_0x185714['reduceLimits']||_0x5d605e[_0x45c2c2(0x152)][_0x45c2c2(0x1cd)]?_0x21fae0:_0x1e7343,_0x292fa3=_0x4e1175=>{var _0x4c44eb=_0x45c2c2;let _0x2c5531={};return _0x2c5531[_0x4c44eb(0x14b)]=_0x4e1175[_0x4c44eb(0x14b)],_0x2c5531['elements']=_0x4e1175['elements'],_0x2c5531['strLength']=_0x4e1175[_0x4c44eb(0x17c)],_0x2c5531[_0x4c44eb(0x137)]=_0x4e1175[_0x4c44eb(0x137)],_0x2c5531['autoExpandLimit']=_0x4e1175[_0x4c44eb(0x1e5)],_0x2c5531[_0x4c44eb(0x123)]=_0x4e1175[_0x4c44eb(0x123)],_0x2c5531['sortProps']=!0x1,_0x2c5531[_0x4c44eb(0x170)]=!_0x33a768,_0x2c5531[_0x4c44eb(0x160)]=0x1,_0x2c5531[_0x4c44eb(0x13f)]=0x0,_0x2c5531['expId']=_0x4c44eb(0x1d2),_0x2c5531[_0x4c44eb(0x1bb)]=_0x4c44eb(0x1f2),_0x2c5531[_0x4c44eb(0x125)]=!0x0,_0x2c5531['autoExpandPreviousObjects']=[],_0x2c5531[_0x4c44eb(0x181)]=0x0,_0x2c5531[_0x4c44eb(0x1f8)]=!0x0,_0x2c5531[_0x4c44eb(0x1bc)]=0x0,_0x2c5531['node']={'current':void 0x0,'parent':void 0x0,'index':0x0},_0x2c5531;};for(var _0x271d05=0x0;_0x271d05<_0xb7dbca[_0x45c2c2(0x1b6)];_0x271d05++)_0x297324[_0x45c2c2(0x13c)](_0x30d0d1['serialize']({'timeNode':_0x284bbe===_0x45c2c2(0x190)||void 0x0},_0xb7dbca[_0x271d05],_0x292fa3(_0x3b32c9),{}));if(_0x284bbe==='trace'){let _0x2542c2=Error[_0x45c2c2(0x195)];try{Error[_0x45c2c2(0x195)]=0x1/0x0,_0x297324[_0x45c2c2(0x13c)](_0x30d0d1[_0x45c2c2(0x183)]({'stackNode':!0x0},new Error()[_0x45c2c2(0x13a)],_0x292fa3(_0x3b32c9),{'strLength':0x1/0x0}));}finally{Error[_0x45c2c2(0x195)]=_0x2542c2;}}return{'method':'log','version':_0x2f5141,'args':[{'ts':_0x283f4b,'session':_0x2585f4,'args':_0x297324,'id':_0x113d13,'context':_0x4426e0}]};}catch(_0x1e8623){return{'method':_0x45c2c2(0x111),'version':_0x2f5141,'args':[{'ts':_0x283f4b,'session':_0x2585f4,'args':[{'type':_0x45c2c2(0x1e8),'error':_0x1e8623&&_0x1e8623[_0x45c2c2(0x12a)]}],'id':_0x113d13,'context':_0x4426e0}]};}finally{try{if(_0x185714&&_0x54555f){let _0x42b843=_0x2c3d14();_0x185714['count']++,_0x185714['time']+=_0x496f24(_0x54555f,_0x42b843),_0x185714['ts']=_0x42b843,_0x5d605e[_0x45c2c2(0x152)][_0x45c2c2(0x1d6)]++,_0x5d605e[_0x45c2c2(0x152)][_0x45c2c2(0x190)]+=_0x496f24(_0x54555f,_0x42b843),_0x5d605e[_0x45c2c2(0x152)]['ts']=_0x42b843,(_0x185714[_0x45c2c2(0x1d6)]>0x32||_0x185714[_0x45c2c2(0x190)]>0x64)&&(_0x185714[_0x45c2c2(0x1cd)]=!0x0),(_0x5d605e[_0x45c2c2(0x152)][_0x45c2c2(0x1d6)]>0x3e8||_0x5d605e[_0x45c2c2(0x152)][_0x45c2c2(0x190)]>0x12c)&&(_0x5d605e[_0x45c2c2(0x152)]['reduceLimits']=!0x0);}}catch{}}}return _0x4bb77d;}((_0x166570,_0x13c185,_0x50ce36,_0x4c8613,_0xc64222,_0x1e8974,_0x228dba,_0x28bbaf,_0x328698,_0x40a2ab,_0x310429)=>{var _0x1f92ab=_0x4626ea;if(_0x166570[_0x1f92ab(0x154)])return _0x166570['_console_ninja'];if(!X(_0x166570,_0x28bbaf,_0xc64222))return _0x166570['_console_ninja']={'consoleLog':()=>{},'consoleTrace':()=>{},'consoleTime':()=>{},'consoleTimeEnd':()=>{},'autoLog':()=>{},'autoLogMany':()=>{},'autoTraceMany':()=>{},'coverage':()=>{},'autoTrace':()=>{},'autoTime':()=>{},'autoTimeEnd':()=>{}},_0x166570['_console_ninja'];let _0xdd87f3=b(_0x166570),_0x344045=_0xdd87f3[_0x1f92ab(0x1c7)],_0x23ac14=_0xdd87f3[_0x1f92ab(0x168)],_0x291990=_0xdd87f3[_0x1f92ab(0x166)],_0x4e4fa2={'hits':{},'ts':{}},_0x12dc4d=H(_0x166570,_0x328698,_0x4e4fa2,_0x1e8974),_0x31f310=_0xe6f4e=>{_0x4e4fa2['ts'][_0xe6f4e]=_0x23ac14();},_0x3614dd=(_0x9be044,_0x560c04)=>{var _0x323d35=_0x1f92ab;let _0x31fd9e=_0x4e4fa2['ts'][_0x560c04];if(delete _0x4e4fa2['ts'][_0x560c04],_0x31fd9e){let _0x1938e0=_0x344045(_0x31fd9e,_0x23ac14());_0x346395(_0x12dc4d(_0x323d35(0x190),_0x9be044,_0x291990(),_0x3a4102,[_0x1938e0],_0x560c04));}},_0x11e437=_0x545750=>{var _0xe1bfdf=_0x1f92ab,_0x5a609d;return _0xc64222===_0xe1bfdf(0x1b5)&&_0x166570[_0xe1bfdf(0x19e)]&&((_0x5a609d=_0x545750==null?void 0x0:_0x545750[_0xe1bfdf(0x15b)])==null?void 0x0:_0x5a609d[_0xe1bfdf(0x1b6)])&&(_0x545750[_0xe1bfdf(0x15b)][0x0][_0xe1bfdf(0x19e)]=_0x166570['origin']),_0x545750;};_0x166570['_console_ninja']={'consoleLog':(_0x21df8e,_0x23ebc6)=>{var _0x40def2=_0x1f92ab;_0x166570[_0x40def2(0x1c5)]['log'][_0x40def2(0x1c8)]!=='disabledLog'&&_0x346395(_0x12dc4d(_0x40def2(0x111),_0x21df8e,_0x291990(),_0x3a4102,_0x23ebc6));},'consoleTrace':(_0x398c73,_0x32b4fb)=>{var _0x1e52d8=_0x1f92ab;_0x166570['console'][_0x1e52d8(0x111)][_0x1e52d8(0x1c8)]!==_0x1e52d8(0x155)&&_0x346395(_0x11e437(_0x12dc4d(_0x1e52d8(0x135),_0x398c73,_0x291990(),_0x3a4102,_0x32b4fb)));},'consoleTime':_0x41442a=>{_0x31f310(_0x41442a);},'consoleTimeEnd':(_0x240419,_0x127bab)=>{_0x3614dd(_0x127bab,_0x240419);},'autoLog':(_0x5ea011,_0x4126e2)=>{var _0x30986a=_0x1f92ab;_0x346395(_0x12dc4d(_0x30986a(0x111),_0x4126e2,_0x291990(),_0x3a4102,[_0x5ea011]));},'autoLogMany':(_0x7e654b,_0x2fade8)=>{var _0x2b6440=_0x1f92ab;_0x346395(_0x12dc4d(_0x2b6440(0x111),_0x7e654b,_0x291990(),_0x3a4102,_0x2fade8));},'autoTrace':(_0x8aa6ee,_0x494eb2)=>{_0x346395(_0x11e437(_0x12dc4d('trace',_0x494eb2,_0x291990(),_0x3a4102,[_0x8aa6ee])));},'autoTraceMany':(_0x4b5ec1,_0x2bbad4)=>{var _0x545cf6=_0x1f92ab;_0x346395(_0x11e437(_0x12dc4d(_0x545cf6(0x135),_0x4b5ec1,_0x291990(),_0x3a4102,_0x2bbad4)));},'autoTime':(_0x50122b,_0x1430e7,_0x35bbd8)=>{_0x31f310(_0x35bbd8);},'autoTimeEnd':(_0xc3c915,_0x1478ec,_0x2151f3)=>{_0x3614dd(_0x1478ec,_0x2151f3);},'coverage':_0x4bb18d=>{var _0x1d9120=_0x1f92ab;_0x346395({'method':_0x1d9120(0x150),'version':_0x1e8974,'args':[{'id':_0x4bb18d}]});}};let _0x346395=q(_0x166570,_0x13c185,_0x50ce36,_0x4c8613,_0xc64222,_0x40a2ab,_0x310429),_0x3a4102=_0x166570[_0x1f92ab(0x1e4)];return _0x166570[_0x1f92ab(0x154)];})(globalThis,_0x4626ea(0x1af),_0x4626ea(0x1e3),\"/Users/kavin/.vscode/extensions/wallabyjs.console-ninja-1.0.322/node_modules\",'webpack','1.0.0',_0x4626ea(0x146),[\"localhost\",\"127.0.0.1\",\"example.cypress.io\",\"MacBook-Pro-5.local\",\"192.168.1.35\"],_0x4626ea(0x1d1),_0x4626ea(0x120),_0x4626ea(0x1c1));" + ) + ); + } catch (e) {} +} +/* istanbul ignore next */ function oo_oo(i, ...v) { + try { + oo_cm().consoleLog(i, v); + } catch (e) {} + return v; +} +/* istanbul ignore next */ function oo_tr(i, ...v) { + try { + oo_cm().consoleTrace(i, v); + } catch (e) {} + return v; +} +/* istanbul ignore next */ function oo_ts(v) { + try { + oo_cm().consoleTime(v); + } catch (e) {} + return v; +} +/* istanbul ignore next */ function oo_te(v, i) { + try { + oo_cm().consoleTimeEnd(v, i); + } catch (e) {} + return v; +} /*eslint unicorn/no-abusive-eslint-disable:,eslint-comments/disable-enable-pair:,eslint-comments/no-unlimited-disable:,eslint-comments/no-aggregating-enable:,eslint-comments/no-duplicate-disable:,eslint-comments/no-unused-disable:,eslint-comments/no-unused-enable:,*/ diff --git a/frontend/src/Editor/Components/Table/columns/index.jsx b/frontend/src/Editor/Components/Table/columns/index.jsx index 41c6d5eaa2..172f23604e 100644 --- a/frontend/src/Editor/Components/Table/columns/index.jsx +++ b/frontend/src/Editor/Components/Table/columns/index.jsx @@ -597,16 +597,13 @@ export default function generateColumnsData({ readOnly={!isEditable} activeColor={column.activeColor} onChange={(value) => { - handleCellValueChange(cell.row.index, column.key || column.name, value, cell.row.original).then( - () => { - fireEvent('OnTableToggleCellChanged', { - column: column, - rowId: cell.row.id, - row: cell.row.original, - tableColumnEvents, - }); - } - ); + handleCellValueChange(cell.row.index, column.key || column.name, value, cell.row.original); + fireEvent('OnTableToggleCellChanged', { + column: column, + rowId: cell.row.id, + row: cell.row.original, + tableColumnEvents, + }); }} /> diff --git a/frontend/src/Editor/Components/Table/load-properties-and-styles.js b/frontend/src/Editor/Components/Table/load-properties-and-styles.js index a140b068b0..a65a3fa56b 100644 --- a/frontend/src/Editor/Components/Table/load-properties-and-styles.js +++ b/frontend/src/Editor/Components/Table/load-properties-and-styles.js @@ -7,7 +7,7 @@ export default function loadPropertiesAndStyles(properties, styles, darkMode, co const enableNextButton = properties.enableNextButton ?? true; const enablePrevButton = properties.enablePrevButton ?? true; - const totalRecords = properties.totalRecords ?? ''; + const totalRecords = properties.totalRecords ?? 10; const enabledSort = properties?.enabledSort ?? true; const hideColumnSelectorButton = properties?.hideColumnSelectorButton ?? false; diff --git a/frontend/src/Editor/Components/Tabs.jsx b/frontend/src/Editor/Components/Tabs.jsx index 6a4566b950..fd490fd312 100644 --- a/frontend/src/Editor/Components/Tabs.jsx +++ b/frontend/src/Editor/Components/Tabs.jsx @@ -1,7 +1,8 @@ import React, { useRef, useState, useEffect } from 'react'; import { SubCustomDragLayer } from '../SubCustomDragLayer'; import { SubContainer } from '../SubContainer'; -import { resolveReferences, resolveWidgetFieldValue, isExpectedDataType } from '@/_helpers/utils'; +import { resolveWidgetFieldValue, isExpectedDataType } from '@/_helpers/utils'; +import { handleLowPriorityWork } from '@/_helpers/editorHelpers'; export const Tabs = function Tabs({ id, @@ -9,7 +10,6 @@ export const Tabs = function Tabs({ width, height, containerProps, - currentState, removeComponent, setExposedVariable, setExposedVariables, @@ -24,13 +24,13 @@ export const Tabs = function Tabs({ const disabledState = component.definition.styles?.disabledState?.value ?? false; const defaultTab = component.definition.properties.defaultTab.value; // config for tabs. Includes title - const tabs = isExpectedDataType(resolveReferences(component.definition.properties.tabs.value, currentState), 'array'); + const tabs = isExpectedDataType(resolveWidgetFieldValue(component.definition.properties?.tabs?.value), 'array'); let parsedTabs = tabs; - parsedTabs = resolveWidgetFieldValue(parsedTabs, currentState); + parsedTabs = resolveWidgetFieldValue(parsedTabs); const hideTabs = component.definition.properties?.hideTabs?.value ?? false; - // renderOnlyActiveTab - TRUE (renders only the content of the active tab) - // renderOnlyActiveTab - FALSE (renders all the content irrespective of the active tab to persist value from other tabs) + //* renderOnlyActiveTab - TRUE (renders only the content of the active tab) + //* renderOnlyActiveTab - FALSE (renders all the content irrespective of the active tab to persist value from other tabs) const renderOnlyActiveTab = component.definition.properties?.renderOnlyActiveTab?.value ?? false; // set index as id if id is not provided @@ -39,25 +39,23 @@ export const Tabs = function Tabs({ // Highlight color - for active tab text and border const highlightColor = component.definition.styles?.highlightColor?.value ?? '#f44336'; let parsedHighlightColor = highlightColor; - parsedHighlightColor = resolveWidgetFieldValue(highlightColor, currentState); + parsedHighlightColor = resolveWidgetFieldValue(highlightColor); // Default tab let parsedDefaultTab = defaultTab; - parsedDefaultTab = resolveWidgetFieldValue(parsedDefaultTab, currentState, 1); + parsedDefaultTab = resolveWidgetFieldValue(parsedDefaultTab, 1); const parsedDisabledState = - typeof disabledState !== 'boolean' ? resolveWidgetFieldValue(disabledState, currentState) : disabledState; + typeof disabledState !== 'boolean' ? resolveWidgetFieldValue(disabledState) : disabledState; - const parsedHideTabs = typeof hideTabs !== 'boolean' ? resolveWidgetFieldValue(hideTabs, currentState) : hideTabs; + const parsedHideTabs = typeof hideTabs !== 'boolean' ? resolveWidgetFieldValue(hideTabs) : hideTabs; const parsedRenderOnlyActiveTab = - typeof renderOnlyActiveTab !== 'boolean' - ? resolveWidgetFieldValue(renderOnlyActiveTab, currentState) - : renderOnlyActiveTab; + typeof renderOnlyActiveTab !== 'boolean' ? resolveWidgetFieldValue(renderOnlyActiveTab) : renderOnlyActiveTab; let parsedWidgetVisibility = widgetVisibility; try { - parsedWidgetVisibility = resolveReferences(parsedWidgetVisibility, currentState, []); + parsedWidgetVisibility = resolveWidgetFieldValue(parsedWidgetVisibility); } catch (err) { console.log(err); } @@ -66,6 +64,8 @@ export const Tabs = function Tabs({ const [currentTab, setCurrentTab] = useState(parsedDefaultTab); const [bgColor, setBgColor] = useState('#fff'); + const [tabSwitchingOnProgress, setTabSwitchingOnProgress] = useState(false); + useEffect(() => { setCurrentTab(parsedDefaultTab); }, [parsedDefaultTab]); @@ -74,7 +74,7 @@ export const Tabs = function Tabs({ const currentTabData = parsedTabs.filter((tab) => tab.id === currentTab); setBgColor(currentTabData[0]?.backgroundColor ? currentTabData[0]?.backgroundColor : darkMode ? '#324156' : '#fff'); // eslint-disable-next-line react-hooks/exhaustive-deps - }, [currentState, currentTab]); + }, [currentTab, darkMode]); function computeTabVisibility(componentId, id) { let tabVisibility = 'hidden'; @@ -126,10 +126,18 @@ export const Tabs = function Tabs({ removeComponent={removeComponent} containerCanvasWidth={width - 4} parentComponent={component} + readOnly={tab.id !== currentTab} /> ); + function shouldRenderTabContent(tab) { + if (tabSwitchingOnProgress || parsedRenderOnlyActiveTab) { + return tab.id === currentTab; + } + return true; // Render by default if no specific conditions are met + } + return ( { + setTabSwitchingOnProgress(true); + !tab?.disabled && setCurrentTab(tab.id); !tab?.disabled && setExposedVariable('currentTab', tab.id); - fireEvent('onTabSwitch'); + + handleLowPriorityWork(() => { + fireEvent('onTabSwitch'); + setTabSwitchingOnProgress(false); + }); }} key={tab.id} > @@ -187,7 +201,8 @@ export const Tabs = function Tabs({ id={`${id}-${tab.id}`} key={tab.id} > - {parsedRenderOnlyActiveTab ? tab.id === currentTab && renderTabContent(id, tab) : renderTabContent(id, tab)} + {shouldRenderTabContent(tab) && renderTabContent(id, tab)} + {tab.id === currentTab && ( { - if (alignment == 'top' && ((label?.length > 0 && width > 0) || (auto && width == 0 && label && label?.length != 0))) - adjustHeightBasedOnAlignment(true); - else { - adjustHeightBasedOnAlignment(false); - } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [alignment, label?.length, currentLayout, width, auto]); - useEffect(() => { setExposedVariable('isMandatory', isMandatory); // eslint-disable-next-line react-hooks/exhaustive-deps @@ -250,7 +241,7 @@ export const TextInput = function TextInput({ // eslint-disable-next-line react-hooks/exhaustive-deps }, [disable]); - const renderInput = () => ( + return ( <> ); - - return <>{renderInput()}>; }; diff --git a/frontend/src/Editor/ConfigHandle.jsx b/frontend/src/Editor/ConfigHandle.jsx index f3d4fd5955..f97ef36b57 100644 --- a/frontend/src/Editor/ConfigHandle.jsx +++ b/frontend/src/Editor/ConfigHandle.jsx @@ -1,3 +1,4 @@ +import { useEditorStore } from '@/_stores/editorStore'; import React from 'react'; export const ConfigHandle = function ConfigHandle({ @@ -13,13 +14,18 @@ export const ConfigHandle = function ConfigHandle({ customClassName = '', configWidgetHandlerForModalComponent = false, isVersionReleased, + showHandle, }) { + const shouldShowHandle = useEditorStore((state) => state.hoveredComponent === id) || showHandle; + return ( { + const currentPageId = useEditorStore.getState().currentPageId; + const appDefinition = useEditorStore.getState().appDefinition; + const [canvasWidth, setCanvasWidth] = useState(widthOfCanvas); // Dont update first time to skip // redundant save on app definition load const { createDataQuery } = useDataQueriesActions(); @@ -63,27 +61,43 @@ export const Container = ({ const sampleDataSource = useSampleDataSource(); const firstUpdate = useRef(true); - const { showComments, currentLayout } = useEditorStore( + const noOfGrids = 43; + + const draggedSubContainer = useDraggedSubContainer(false); + const { resizingComponentId, isGridDragging } = useGridStore( (state) => ({ - showComments: state?.showComments, - currentLayout: state?.currentLayout, + resizingComponentId: state?.resizingComponentId, + isGridDragging: !!state?.draggingComponentId, }), shallow ); + const { showComments, currentLayout, selectedComponents } = useEditorStore( + (state) => ({ + showComments: state?.showComments, + currentLayout: state?.currentLayout, + selectedComponents: state?.selectedComponents, + }), + shallow + ); + + useEffect(() => { + const _canvasWidth = document.getElementsByClassName('canvas-area')[0]?.getBoundingClientRect()?.width; + setCanvasWidth(_canvasWidth); + }, [currentLayout, widthOfCanvas]); + + const gridWidth = canvasWidth / noOfGrids; + const { appId } = useAppInfo(); - const currentState = useCurrentState(); - const { appVersionsId, enableReleasedVersionPopupState, isVersionReleased } = useAppVersionStore( + const { appVersionsId, isVersionReleased } = useAppVersionStore( (state) => ({ appVersionsId: state?.editingVersion?.id, - enableReleasedVersionPopupState: state.actions.enableReleasedVersionPopupState, isVersionReleased: state.isVersionReleased, }), shallow ); - const gridWidth = canvasWidth / NO_OF_GRIDS; const styles = { width: currentLayout === 'mobile' ? deviceWindowWidth : '100%', maxWidth: currentLayout === 'mobile' ? deviceWindowWidth : `${canvasWidth}px`, @@ -93,22 +107,47 @@ export const Container = ({ const components = useMemo( () => appDefinition.pages[currentPageId]?.components ?? {}, // eslint-disable-next-line react-hooks/exhaustive-deps - [JSON.stringify(appDefinition), currentPageId] + [JSON.stringify(appDefinition.pages[currentPageId]?.components), currentPageId] ); - const [boxes, setBoxes] = useState([]); - const [isDragging, setIsDragging] = useState(false); - const [isResizing, setIsResizing] = useState(false); + const [boxes, setBoxes] = useState(() => components); + // const [isDragging, setIsDragging] = useState(false); + // const [isResizing, setIsResizing] = useState(false); const [commentsPreviewList, setCommentsPreviewList] = useState([]); const [newThread, addNewThread] = useState({}); const [isContainerFocused, setContainerFocus] = useState(false); const [canvasHeight, setCanvasHeight] = useState(null); + useEffect(() => { + if (currentLayout === 'mobile' && appDefinition.pages[currentPageId]?.autoComputeLayout) { + const mobLayouts = Object.keys(boxes) + .filter((key) => !boxes[key]?.component?.parent) + .map((key) => { + return { ...cloneDeep(boxes[key]?.layouts?.desktop), i: key }; + }); + const updatedBoxes = cloneDeep(boxes); + let newmMobLayouts = correctBounds(mobLayouts, { cols: 43 }); + newmMobLayouts = compact(newmMobLayouts, 'vertical', 43); + Object.keys(boxes).forEach((id) => { + const mobLayout = newmMobLayouts.find((layout) => layout.i === id); + updatedBoxes[id].layouts.mobile = mobLayout + ? { + left: mobLayout.left, + height: mobLayout.height, + top: mobLayout.top, + width: mobLayout.width, + } + : updatedBoxes[id].layouts.desktop; + }); + setBoxes({ ...updatedBoxes }); + } + }, [currentLayout]); + const paramUpdatesOptsRef = useRef({}); const canvasRef = useRef(null); const focusedParentIdRef = useRef(undefined); - useHotkeys('meta+z, control+z', () => handleUndo()); - useHotkeys('meta+shift+z, control+shift+z', () => handleRedo()); + useHotkeys('meta+z, control+z', () => handleUndo(), { scopes: 'editor' }); + useHotkeys('meta+shift+z, control+shift+z', () => handleRedo(), { scopes: 'editor' }); useHotkeys( 'meta+v, control+v', async () => { @@ -132,13 +171,42 @@ export const Container = ({ console.log('Clipboard API is not available in this browser.'); } } - enableReleasedVersionPopupState(); + useAppVersionStore.getState().actions.enableReleasedVersionPopupState(); }, - [isContainerFocused, appDefinition, focusedParentIdRef.current] + [isContainerFocused, appDefinition, focusedParentIdRef.current], + { scopes: 'editor' } ); useEffect(() => { - setBoxes(components); + if (mode === 'view' && currentLayout === 'mobile') { + const mobLayouts = Object.keys(components) + .filter((key) => !components[key]?.component?.parent) + .map((key) => { + return { ...cloneDeep(components[key]?.layouts?.desktop), i: key }; + }); + const updatedBoxes = cloneDeep(components); + let newmMobLayouts = correctBounds(mobLayouts, { cols: 43 }); + newmMobLayouts = compact(newmMobLayouts, 'vertical', 43); + Object.keys(components).forEach((id) => { + const mobLayout = newmMobLayouts.find((layout) => layout.i === id); + updatedBoxes[id].layouts.mobile = mobLayout + ? { + left: mobLayout.left, + height: mobLayout.height, + top: mobLayout.top, + width: mobLayout.width, + } + : updatedBoxes[id].layouts.desktop; + }); + setBoxes({ ...updatedBoxes }); + } else { + const diffState = diff(components, boxes); + + if (!_.isEmpty(diffState)) { + setBoxes(components); + } + } + // eslint-disable-next-line react-hooks/exhaustive-deps }, [JSON.stringify(components)]); @@ -189,13 +257,18 @@ export const Container = ({ return; } + if (!appDefinition.pages[currentPageId]?.components) return; + const newDefinition = { ...appDefinition, pages: { ...appDefinition.pages, [currentPageId]: { ...appDefinition.pages[currentPageId], - components: boxes, + components: { + ...appDefinition.pages[currentPageId]?.components, + ...boxes, + }, }, }, }; @@ -235,9 +308,7 @@ export const Container = ({ } }); - function convertXToPercentage(x, canvasWidth) { - return (x * 100) / canvasWidth; - } + const isDragging = isGridDragging || draggingState; const updateCanvasHeight = useCallback( (components) => { @@ -257,14 +328,15 @@ export const Container = ({ [setCanvasHeight, currentLayout, mode] ); - useEffect(() => { - setIsDragging(draggingState); - }, [draggingState]); - - const [, drop] = useDrop( + const [{ isOver, isOverCurrent }, drop] = useDrop( () => ({ - accept: [ItemTypes.BOX, ItemTypes.COMMENT], - async drop(item, monitor) { + accept: ItemTypes.BOX, + drop(item, monitor) { + const didDrop = monitor.didDrop(); + if (didDrop) { + return; + } + if (item.parent) { return; } @@ -297,16 +369,99 @@ export const Container = ({ const componentMeta = _.cloneDeep( componentTypes.find((component) => component.component === item.component.component) ); + + const currentActiveLayout = useEditorStore.getState().currentLayout; + const newComponent = addNewWidgetToTheEditor( componentMeta, monitor, boxes, canvasBoundingRect, - item.currentLayout, + currentActiveLayout, snapToGrid, zoomLevel ); + // Logic to add default child components + const childrenBoxes = {}; + if (componentMeta.defaultChildren) { + const parentMeta = componentMeta; + const widgetResolvables = Object.freeze({ + Listview: 'listItem', + }); + const customResolverVariable = widgetResolvables[parentMeta?.component]; + const defaultChildren = _.cloneDeep(parentMeta)['defaultChildren']; + const parentId = newComponent.id; + + defaultChildren.forEach((child) => { + const { componentName, layout, incrementWidth, properties, accessorKey, tab, defaultValue, styles } = child; + + const componentMeta = _.cloneDeep( + componentTypes.find((component) => component.component === componentName) + ); + const componentData = JSON.parse(JSON.stringify(componentMeta)); + + const width = layout.width ? layout.width : (componentMeta.defaultSize.width * 100) / noOfGrids; + const height = layout.height ? layout.height : componentMeta.defaultSize.height; + const newComponentDefinition = { + ...componentData.definition.properties, + }; + + if (_.isArray(properties) && properties.length > 0) { + properties.forEach((prop) => { + const accessor = customResolverVariable + ? `{{${customResolverVariable}.${accessorKey}}}` + : defaultValue[prop] || ''; + + _.set(newComponentDefinition, prop, { + value: accessor, + }); + }); + _.set(componentData, 'definition.properties', newComponentDefinition); + } + + if (_.isArray(styles) && styles.length > 0) { + styles.forEach((prop) => { + const accessor = customResolverVariable + ? `{{${customResolverVariable}.${accessorKey}}}` + : defaultValue[prop] || ''; + + _.set(newComponentDefinition, prop, { + value: accessor, + }); + }); + _.set(componentData, 'definition.styles', newComponentDefinition); + } + + const newChildComponent = addNewWidgetToTheEditor( + componentData, + {}, + { ...boxes, ...childrenBoxes }, + {}, + currentActiveLayout, + snapToGrid, + zoomLevel, + true, + true + ); + + _.set(childrenBoxes, newChildComponent.id, { + component: { + ...newChildComponent.component, + parent: parentMeta.component === 'Tabs' ? parentId + '-' + tab : parentId, + }, + + layouts: { + [currentActiveLayout]: { + ...layout, + width: incrementWidth ? width * incrementWidth : width, + height: height, + }, + }, + }); + }); + } + const newBoxes = { ...boxes, [newComponent.id]: { @@ -314,8 +469,8 @@ export const Container = ({ layouts: { ...newComponent.layout, }, - withDefaultChildren: newComponent.withDefaultChildren, }, + ...childrenBoxes, }; setBoxes(newBoxes); @@ -324,117 +479,171 @@ export const Container = ({ return undefined; }, + collect: (monitor) => ({ + isOver: monitor.isOver(), + isOverCurrent: monitor.isOver({ shallow: true }), + }), }), [moveBox] ); - const onDragStop = useCallback( - (e, componentId, direction, currentLayout) => { - if (isVersionReleased) { - enableReleasedVersionPopupState(); - return; + const onResizeStop = (boxList) => { + const newBoxes = boxList.reduce((newBoxList, { id, height, width, x, y, gw }) => { + const _canvasWidth = gw ? gw * noOfGrids : canvasWidth; + let newWidth = Math.round((width * noOfGrids) / _canvasWidth); + y = Math.round(y / 10) * 10; + gw = gw ? gw : gridWidth; + const parent = boxes[id]?.component?.parent; + if (y < 0) { + y = 0; } - // const id = componentId ? componentId : uuidv4(); - - // Get the width of the canvas - const canvasBounds = document.getElementsByClassName('real-canvas')[0].getBoundingClientRect(); - const canvasWidth = canvasBounds?.width; - const nodeBounds = direction.node.getBoundingClientRect(); - - // Computing the left offset - const leftOffset = nodeBounds.x - canvasBounds.x; - const currentLeftOffset = boxes[componentId]?.layouts?.[currentLayout]?.left; - const leftDiff = currentLeftOffset - convertXToPercentage(leftOffset, canvasWidth); - - // Computing the top offset - // const currentTopOffset = boxes[componentId].layouts[currentLayout].top; - const topDiff = boxes[componentId].layouts[currentLayout].top - (nodeBounds.y - canvasBounds.y); - - let newBoxes = { ...boxes }; - - for (const selectedComponent of useEditorStore.getState().selectedComponents) { - newBoxes = produce(newBoxes, (draft) => { - if (draft[selectedComponent.id]) { - const topOffset = draft[selectedComponent.id].layouts[currentLayout].top; - const leftOffset = draft[selectedComponent.id].layouts[currentLayout].left; - - draft[selectedComponent.id].layouts[currentLayout].top = topOffset - topDiff; - draft[selectedComponent.id].layouts[currentLayout].left = leftOffset - leftDiff; - } - }); + if (parent) { + const parentElem = document.getElementById(`canvas-${parent}`); + const parentId = parent.includes('-') ? parent?.split('-').slice(0, -1).join('-') : parent; + const compoenentType = boxes[parentId]?.component.component; + var parentHeight = parentElem?.clientHeight || height; + if (height > parentHeight && ['Tabs', 'Listview'].includes(compoenentType)) { + height = parentHeight; + y = 0; + } + let posX = Math.round(x / gw); + if (posX + newWidth > 43) { + newWidth = 43 - posX; + } } - - setBoxes(newBoxes); - updateCanvasHeight(newBoxes); - }, - [isVersionReleased, enableReleasedVersionPopupState, boxes, setBoxes, updateCanvasHeight] - ); - - const onResizeStop = useCallback( - (id, e, direction, ref, d, position) => { - if (isVersionReleased) { - enableReleasedVersionPopupState(); - return; - } - - const deltaWidth = Math.round(d.width / gridWidth) * gridWidth; //rounding of width of element to nearest multiple of gridWidth - const deltaHeight = d.height; - - if (deltaWidth === 0 && deltaHeight === 0) { - return; - } - - let { x, y } = position; - x = Math.round(x / gridWidth) * gridWidth; - - const defaultData = { - top: 100, - left: 0, - width: 445, - height: 500, - }; - - let { left, top, width, height } = boxes[id]['layouts'][currentLayout] || defaultData; - - const boundingRect = document.getElementsByClassName('canvas-area')[0].getBoundingClientRect(); - const canvasWidth = boundingRect?.width; - - //round the width to nearest multiple of gridwidth before converting to % - const currentWidth = (canvasWidth * width) / NO_OF_GRIDS; - let newWidth = currentWidth + deltaWidth; - newWidth = Math.round(newWidth / gridWidth) * gridWidth; - width = (newWidth * NO_OF_GRIDS) / canvasWidth; - - height = height + deltaHeight; - - top = y; - left = (x * 100) / canvasWidth; - - let newBoxes = { - ...boxes, + return { + ...newBoxList, [id]: { ...boxes[id], layouts: { ...boxes[id]['layouts'], [currentLayout]: { ...boxes[id]['layouts'][currentLayout], - width, - height, - top, - left, + width: newWidth ? newWidth : 1, + height: height ? height : 10, + top: y, + left: Math.round(x / gw), }, }, }, }; + }, {}); + let updatedBoxes = { + ...boxes, + ...newBoxes, + }; - setBoxes(newBoxes); - updateCanvasHeight(newBoxes); - }, - [setBoxes, currentLayout, boxes, enableReleasedVersionPopupState, isVersionReleased, updateCanvasHeight, gridWidth] - ); + setBoxes(updatedBoxes); + updateCanvasHeight(updatedBoxes); + }; + + function onDragStop(boxPositions) { + const copyOfBoxes = JSON.parse(JSON.stringify(boxes)); + + const updatedBoxes = boxPositions.reduce((boxesObj, { id, x, y, parent }) => { + let _width = copyOfBoxes[id]['layouts'][currentLayout].width; + let _height = copyOfBoxes[id]['layouts'][currentLayout].height; + const containerWidth = parent ? useGridStore.getState().subContainerWidths[parent] : gridWidth; + if (parent !== copyOfBoxes[id]['component']?.parent) { + if (copyOfBoxes[id]['component']?.parent) { + _width = Math.round( + (copyOfBoxes[id]['layouts'][currentLayout].width * + useGridStore.getState().subContainerWidths[boxes[id]['component']?.parent]) / + containerWidth + ); + } else { + _width = Math.round((boxes[id]['layouts'][currentLayout].width * gridWidth) / containerWidth); + } + } + if (_width === 0) { + _width = 1; + } + let _left = Math.round(x / (parent ? useGridStore.getState().subContainerWidths[parent] : gridWidth)); + y = Math.round(y / 10) * 10; + if (_width + _left > noOfGrids) { + _left = _left - (_width + _left - noOfGrids); + if (_left < 0) { + _left = 0; + _width = noOfGrids; + } + } else if (_left < 0) { + _left = 0; + if (_width > noOfGrids) { + _width = noOfGrids; + } + } + if (y < 0) { + y = 0; + } + + if (parent) { + const parentElem = document.getElementById(`canvas-${parent}`); + const parentId = copyOfBoxes[parent] ? parent : parent?.split('-').slice(0, -1).join('-'); + const compoenentType = copyOfBoxes[parentId]?.component.component; + var parentHeight = parentElem?.clientHeight || _height; + if (_height > parentHeight && ['Tabs', 'Listview'].includes(compoenentType)) { + _height = parentHeight; + y = 0; + } + } + + const componentData = JSON.parse(JSON.stringify(copyOfBoxes[id]['component'])); + componentData.parent = parent ? parent : null; + + return { + ...boxesObj, + [id]: { + ...copyOfBoxes[id], + component: componentData, + layouts: { + ...copyOfBoxes[id]['layouts'], + [currentLayout]: { + ...copyOfBoxes[id]['layouts'][currentLayout], + width: _width, + height: _height, + top: y, + left: _left, + }, + }, + }, + }; + }, {}); + let newBoxes = { + ...copyOfBoxes, + ...updatedBoxes, + }; + + const diffState = diff(boxes, newBoxes); + + // Added to avoid sending layout data to BE without layout key + // resulting in App could not save error + for (const diffComponent in diffState) { + if (!('layouts' in diffState[diffComponent])) return; + } + + setBoxes((prev) => { + const updatedComponentsAsperDiff = Object.keys(diffState).reduce((acc, key) => { + const component = newBoxes[key]; + if (component) { + acc[key] = component; + } + return acc; + }, {}); + + return { + ...prev, + ...updatedComponentsAsperDiff, + }; + }); + + updateCanvasHeight(newBoxes); + } const paramUpdated = useCallback( (id, param, value, opts = {}) => { + if (id === 'resizingComponentId') { + return; + } if (Object.keys(value)?.length > 0) { setBoxes((boxes) => update(boxes, { @@ -567,12 +776,27 @@ export const Container = ({ return componentWithChildren; }, [components]); - const resizingStatusChanged = useCallback( - (status) => { - setIsResizing(status); - }, - [setIsResizing] - ); + const getContainerProps = React.useCallback(() => { + return { + mode, + snapToGrid, + onComponentClick, + onEvent, + appDefinition, + appDefinitionChanged, + appLoading, + zoomLevel, + setSelectedComponent, + removeComponent, + currentLayout, + selectedComponents, + darkMode, + currentPageId, + childComponents, + parentGridWidth: gridWidth, + draggedSubContainer, + }; + }, [childComponents, selectedComponents, draggedSubContainer, darkMode, currentLayout, currentPageId, gridWidth]); const openAddUserWorkspaceSetting = () => { const workspaceId = getWorkspaceId(); @@ -590,74 +814,21 @@ export const Container = ({ setPreviewData(null); }; - const draggingStatusChanged = useCallback( - (status) => { - setIsDragging(status); - }, - [setIsDragging] - ); - const containerProps = useMemo(() => { - return { - mode, - snapToGrid, - onComponentClick, - onEvent, - appDefinition, - appDefinitionChanged, - currentState, - onComponentOptionChanged, - onComponentOptionsChanged, - appLoading, - zoomLevel, - setSelectedComponent, - removeComponent, - currentLayout, - deviceWindowWidth, - darkMode, - sideBarDebugger, - currentPageId, - childComponents, - }; - }, [ - mode, - snapToGrid, - onComponentClick, - onEvent, - appDefinition, - appDefinitionChanged, - currentState, - onComponentOptionChanged, - onComponentOptionsChanged, - appLoading, - zoomLevel, - setSelectedComponent, - removeComponent, - currentLayout, - deviceWindowWidth, - darkMode, - sideBarDebugger, - currentPageId, - childComponents, - ]); - const queryBoxText = sampleDataSource ? 'Connect to your data source or use our sample data source to start playing around!' : 'Connect to a data source to be able to create a query'; return ( - { + { canvasRef.current = el; drop(el); }} - style={{ ...styles, height: canvasHeight }} - className={cx('real-canvas', { - 'show-grid': isDragging || isResizing, - })} - id="real-canvas" - data-cy="real-canvas" - canvas-height={canvasHeight} + styles={styles} + isDropping={draggingState} + canvasHeight={canvasHeight} > {config.COMMENT_FEATURE_ENABLE && showComments && ( <> @@ -684,45 +855,81 @@ export const Container = ({ ))} > )} - {Object.keys(boxes).map((key) => { - const box = boxes[key]; - const canShowInCurrentLayout = - box.component.definition.others[currentLayout === 'mobile' ? 'showOnMobile' : 'showOnDesktop'].value; - const addDefaultChildren = box.withDefaultChildren; + + + {Object.entries({ + ...boxes, + }) + .filter(([, box]) => isEmpty(box?.component?.parent)) + .map(([id, box]) => { + const canShowInCurrentLayout = + box.component.definition.others[currentLayout === 'mobile' ? 'showOnMobile' : 'showOnDesktop'].value; - if (!box.component.parent && resolveReferences(canShowInCurrentLayout, currentState)) { - return ( - - ); - } - })} + return ( + + component.id === id) : false + } + darkMode={darkMode} + isMultipleComponentsSelected={selectedComponents?.length > 1 ? true : false} + getContainerProps={getContainerProps} + isVersionReleased={isVersionReleased} + currentPageId={currentPageId} + childComponents={childComponents[id]} + /> + + ); + })} + + + + + {Object.keys(boxes).length === 0 && !appLoading && !isDragging && ( @@ -780,6 +987,149 @@ export const Container = ({ )} - + + ); +}; + +const WidgetWrapper = ({ + children, + widget, + id, + gridWidth, + currentLayout, + isResizing, + mode, + propertiesDefinition, + stylesDefinition, + componentType, +}) => { + const isGhostComponent = id === 'resizingComponentId'; + const { + component: { parent }, + layouts, + } = widget; + const { isSelected, isHovered } = useEditorStore((state) => { + const isSelected = !!(state.selectedComponents || []).find((selected) => selected?.id === id); + const isHovered = state?.hoveredComponent == id; + return { isSelected, isHovered }; + }, shallow); + + const isDragging = useGridStore((state) => state?.draggingComponentId === id); + + let layoutData = layouts?.[currentLayout]; + if (isEmpty(layoutData)) { + layoutData = layouts?.['desktop']; + } + // const width = (canvasWidth * layoutData.width) / NO_OF_GRIDS; + const width = gridWidth * layoutData.width; + + const calculateMoveableBoxHeight = () => { + // Early return for non input components + if (!['TextInput', 'PasswordInput', 'NumberInput'].includes(componentType)) { + return layoutData?.height; + } + const { alignment = { value: null }, width = { value: null }, auto = { value: null } } = stylesDefinition ?? {}; + + const resolvedLabel = label?.value?.length ?? 0; + const resolvedWidth = resolveWidgetFieldValue(width?.value) ?? 0; + const resolvedAuto = resolveWidgetFieldValue(auto?.value) ?? false; + + let newHeight = layoutData?.height; + if (alignment.value && resolveWidgetFieldValue(alignment.value) === 'top') { + if ((resolvedLabel > 0 && resolvedWidth > 0) || (resolvedAuto && resolvedWidth === 0 && resolvedLabel > 0)) { + newHeight += 20; + } + } + + return newHeight; + }; + const isWidgetActive = (isSelected || isDragging) && mode !== 'view'; + + const { label = { value: null } } = propertiesDefinition ?? {}; + + const styles = { + width: width + 'px', + height: calculateMoveableBoxHeight() + 'px', + transform: `translate(${layoutData.left * gridWidth}px, ${layoutData.top}px)`, + ...(isGhostComponent ? { opacity: 0.5 } : {}), + ...(isWidgetActive ? { zIndex: 3 } : {}), + }; + + return ( + <> + + {children} + + > + ); +}; + +function DragGhostWidget() { + const draggingComponentId = useGridStore((state) => state?.draggingComponentId); + if (!draggingComponentId) return ''; + return ( + + ); +} + +function ContainerWrapper({ children, canvasHeight, isDropping, showComments, handleAddThread, containerRef, styles }) { + const { resizingComponentId, draggingComponentId, dragTarget } = useGridStore((state) => { + const { resizingComponentId, draggingComponentId, dragTarget } = state; + return { resizingComponentId, draggingComponentId, dragTarget }; + }, shallow); + + return ( + + {children} + + ); +} + +const ResizeGhostWidget = ({ resizingComponentId, widgets, currentLayout, canvasWidth, gridWidth }) => { + const dragTarget = useGridStore((state) => state.dragTarget); + if (!resizingComponentId || dragTarget) { + return ''; + } + + return ( + ); }; diff --git a/frontend/src/Editor/ControlledComponentToRender.jsx b/frontend/src/Editor/ControlledComponentToRender.jsx new file mode 100644 index 0000000000..7363e813c2 --- /dev/null +++ b/frontend/src/Editor/ControlledComponentToRender.jsx @@ -0,0 +1,59 @@ +import React, { useState, useCallback } from 'react'; +import { getComponentToRender } from '@/_helpers/editorHelpers'; +import _ from 'lodash'; + +import { getComponentsToRenders } from '@/_stores/editorStore'; + +function deepEqualityCheckusingLoDash(obj1, obj2) { + return _.isEqual(obj1, obj2); +} + +export const shouldUpdate = (prevProps, nextProps) => { + const listToRender = getComponentsToRenders(); + + let needToRender = false; + + const componentId = prevProps?.id === nextProps?.id ? prevProps?.id : null; + + if (componentId) { + const componentToRender = listToRender.find((item) => item === componentId); + + const parentReRendered = listToRender.find((item) => item === prevProps?.parentId); + + if (componentToRender || parentReRendered) { + needToRender = true; + } + } + + // Added to render the defaukt child components + if (prevProps?.childComponents === null && nextProps?.childComponents) return false; + + return ( + deepEqualityCheckusingLoDash(prevProps?.id, nextProps?.id) && + deepEqualityCheckusingLoDash(prevProps?.component?.definition, nextProps?.component?.definition) && + prevProps?.width === nextProps?.width && + prevProps?.height === nextProps?.height && + prevProps?.darkMode === nextProps?.darkMode && + prevProps?.childComponents === nextProps?.childComponents && + !needToRender + ); +}; + +const ComponentWrapper = React.memo(({ componentName, ...props }) => { + const [key, setKey] = useState(Math.random()); + + const resetComponent = useCallback(() => { + setKey(Math.random()); + }, []); + + const ComponentToRender = getComponentToRender(componentName); + + if (ComponentToRender === null) return; + if (componentName === 'Form') { + return ; + } + + return ; +}, shouldUpdate); + +export default ComponentWrapper; diff --git a/frontend/src/Editor/CustomDragLayer.jsx b/frontend/src/Editor/CustomDragLayer.jsx index ebcd2da944..554a7741db 100644 --- a/frontend/src/Editor/CustomDragLayer.jsx +++ b/frontend/src/Editor/CustomDragLayer.jsx @@ -1,6 +1,6 @@ import React, { useEffect } from 'react'; import { useDragLayer } from 'react-dnd'; -import { ItemTypes } from './ItemTypes'; +import { ItemTypes } from './editorConstants'; import { BoxDragPreview } from './BoxDragPreview'; import { snapToGrid } from '@/_helpers/appUtils'; import { useEditorStore } from '@/_stores/editorStore'; @@ -97,7 +97,7 @@ export const CustomDragLayer = ({ canvasWidth, onDragging }) => { } return ( - + .moveable-control-box:not(.moveable-control-box-d-block, .moveable-dragging, .selected-component){ + visibility: hidden !important; +} +.moveable-control-box>.moveable-control-box:hover, .selected-component{ + visibility: visible !important; +} +.moveable-control-box>.moveable-control-box:hover, .moveable-control-box>.moveable-dragging{ + visibility: visible !important; +} +.moveable-control-box.modal-moveable{ + z-index: 3001 !important; +} + + +.moveable-e.moveable-control{ + /* height: 24px !important; + top: -5px !important; */ + border-radius: 2px !important; + border: 1px solid #3E63DD !important; + background: #fff !important; + width: 6px !important; + left: 4px !important; +} + +.moveable-w.moveable-control{ + /* height: 24px !important; + top: -5px !important; */ + border-radius: 2px !important; + border: 1px solid #3E63DD !important; + background: #fff !important; + width: 6px !important; + left: 4px !important; +} + +.moveable-n.moveable-control{ + /* height: 24px !important; */ + top: 4px !important; + border-radius: 2px !important; + border: 1px solid #3E63DD !important; + background: #fff !important; + height: 6px !important; + /* left: 3px !important; */ +} + +.moveable-s.moveable-control{ + /* height: 24px !important; */ + top: 4px !important; + border-radius: 2px !important; + border: 1px solid #3E63DD !important; + background: #fff !important; + height: 6px !important; + /* left: 3px !important; */ +} + +.grid-guide-lines { + background: #8DA4EF !important; +} + + + +/* Hides all the control lines*/ +/* .moveable-line { + color: transparent !important; + --moveable-color: transparent !important; +} + +.moveable-control { + visibility: hidden; +} + +.target { + outline: 1px solid #4af; +} */ + +.active-target, .resizing-target { + outline: 1px solid #4af; + /* z-index: 1000000 !important; */ +} + +.main-editor-canvas .hovered-target { + outline: 1px solid #4af; + z-index: 4 !important; +} + +.moveable-control-box:not([data-able-groupable]) .moveable-control-box:not(:hover) { + opacity: 0; +} + +.dragged-movable-control-box, [data-hovered-control="true"] { + opacity: 1 !important; +} + +.moveable-line.moveable-e, +.moveable-line.moveable-w { + border: 5px solid #fff0; +} + +.moveable-line.moveable-n { + border-bottom: 5px solid #fff0; +} + +.moveable-line.moveable-s { + border-bottom: 5px solid #fff0; +} + +.moveable-control[data-rotation="0"], .moveable-control[data-rotation="90"], +.moveable-around-control[data-rotation="0"], .moveable-around-control[data-rotation="90"] { + opacity: 0; + width: 0px !important; + height: 0px !important; +} + +.resizing-target * { + opacity: 0; +} + + +.moveable-control { + width: 8px !important; + height: 8px !important; + border: 1px solid var(--moveable-color) !important; + background: #fff !important; + margin-top: -4px !important; + margin-left: -4px !important; +} + +.moveable-around-control{ + height: 10px !important; + width: 10px !important; +} + +.moveable-around-control[data-direction*="nw"] { + left: -11px; + top: -11px; +} + +.moveable-around-control[data-direction*="ne"] { + top: -11px; +} + +.moveable-around-control[data-direction*="ne"] { + top: -11px; +} + +.moveable-around-control[data-direction*="sw"] { + left: -11px; + top: -1px; +} + +.moveable-draggable-dragging { + opacity: 1 !important; +} + +[data-off-screen="true"] { + display: none; +} + + +/* */ \ No newline at end of file diff --git a/frontend/src/Editor/DragContainer.jsx b/frontend/src/Editor/DragContainer.jsx new file mode 100644 index 0000000000..37a7dbec17 --- /dev/null +++ b/frontend/src/Editor/DragContainer.jsx @@ -0,0 +1,844 @@ +// import '@/Editor/wdyr'; +import React, { useEffect, useState, useRef, useCallback } from 'react'; +import Moveable from 'react-moveable'; +import { useEditorStore } from '@/_stores/editorStore'; +import { shallow } from 'zustand/shallow'; +import './DragContainer.css'; +import _, { isEmpty } from 'lodash'; +import { flushSync } from 'react-dom'; +import { restrictedWidgetsObj } from './WidgetManager/restrictedWidgetsConfig'; +import { useGridStore, useIsGroupHandleHoverd, useOpenModalWidgetId } from '@/_stores/gridStore'; +import toast from 'react-hot-toast'; +import { individualGroupableProps } from './gridUtils'; + +const CANVAS_BOUNDS = { left: 0, top: 0, right: 0, bottom: 0, position: 'css' }; +const RESIZABLE_CONFIG = { + edge: ['nw', 'n', 'ne', 'w', 'e', 'sw', 's', 'se'], + renderDirections: ['nw', 'n', 'ne', 'w', 'e', 'sw', 's', 'se'], +}; + +export default function DragContainer({ + widgets, + mode, + onResizeStop, + onDrag, + gridWidth, + selectedComponents = [], + currentLayout, + draggedSubContainer, +}) { + const lastDraggedEventsRef = useRef(null); + const boxes = Object.keys(widgets).map((key) => ({ ...widgets[key], id: key })); + const isGroupHandleHoverd = useIsGroupHandleHoverd(); + const openModalWidgetId = useOpenModalWidgetId(); + const configHandleForMultiple = (id) => { + return ( + { + if (lastDraggedEventsRef.current) { + const preant = boxes.find((box) => box.id == lastDraggedEventsRef.current.events[0].target.id)?.component + ?.parent; + // Adding the new updates to the macro task queue to unblock UI + + onDrag( + lastDraggedEventsRef.current.events.map((ev) => ({ + id: ev.target.id, + x: ev.translate[0], + y: ev.translate[1], + parent: preant, + })) + ); + } + if (useGridStore.getState().isGroupHandleHoverd) { + useGridStore.getState().actions.setIsGroupHandleHoverd(false); + } + const parentElm = lastDraggedEventsRef?.current?.events?.[0]?.target?.closest('.real-canvas'); + if (parentElm && parentElm?.classList?.contains('show-grid')) { + parentElm?.classList?.remove('show-grid'); + } + }} + onMouseDownCapture={() => { + lastDraggedEventsRef.current = null; + if (!useGridStore.getState().isGroupHandleHoverd) { + useGridStore.getState().actions.setIsGroupHandleHoverd(true); + } + }} + > + + + + components + + + + ); + }; + + const DimensionViewable = { + name: 'dimensionViewable', + props: [], + events: [], + render() { + return configHandleForMultiple('multiple-components-config-handle'); + }, + }; + + const MouseCustomAble = { + name: 'mouseTest', + props: {}, + events: {}, + mouseEnter(e) { + const controlBoxes = document.getElementsByClassName('moveable-control-box'); + for (const element of controlBoxes) { + element.classList.remove('moveable-control-box-d-block'); + } + e.props.target.classList.add('hovered'); + e.controlBox.classList.add('moveable-control-box-d-block'); + }, + mouseLeave(e) { + e.props.target.classList.remove('hovered'); + e.controlBox.classList.remove('moveable-control-box-d-block'); + }, + }; + + const moveableRef = useRef(); + const draggedOverElemRef = useRef(null); + const childMoveableRefs = useRef({}); + const groupResizeDataRef = useRef([]); + const isDraggingRef = useRef(false); + const boxList = boxes + .filter((box) => + ['{{true}}', true].includes( + box?.component?.definition?.others[currentLayout === 'mobile' ? 'showOnMobile' : 'showOnDesktop'].value + ) + ) + .map((box) => ({ + id: box.id, + height: box?.layouts?.[currentLayout]?.height, + left: box?.layouts?.[currentLayout]?.left, + top: box?.layouts?.[currentLayout]?.top, + width: box?.layouts?.[currentLayout]?.width, + parent: box?.component?.parent, + })); + const [list, setList] = useState(boxList); + + const hoveredComponent = useEditorStore((state) => state?.hoveredComponent, shallow); + + useEffect(() => { + if (!moveableRef.current) { + return; + } + moveableRef.current.updateRect(); + moveableRef.current.updateTarget(); + moveableRef.current.updateSelectors(); + for (let refObj of Object.values(childMoveableRefs.current)) { + if (refObj) { + refObj.updateRect(); + refObj.updateTarget(); + refObj.updateSelectors(); + } + } + setTimeout(reloadGrid, 100); + + try { + const boxes = document.querySelectorAll('.jet-container'); + var timer; + boxes.forEach((box) => { + box.addEventListener('scroll', function handleClick() { + if (timer) { + clearTimeout(timer); + } + + timer = setTimeout(function () { + reloadGrid(); + }, 250); //Threshold is 100ms + }); + }); + } catch (error) { + console.error('Error---->', error); + } + }, [hoveredComponent, reloadGrid]); + + useEffect(() => { + setList(boxList); + setTimeout(reloadGrid, 100); + }, [currentLayout]); + + useEffect(() => { + const controlBoxes = document.querySelectorAll('.moveable-control-box[target-id]'); + controlBoxes.forEach((box) => { + box.style.display = ''; + }); + if (openModalWidgetId) { + const children = findChildrenAndGrandchildren(openModalWidgetId, boxes); + const controlBoxes = document.querySelectorAll('.moveable-control-box[target-id]'); + controlBoxes.forEach((box) => { + const id = box.getAttribute('target-id'); + if (!children.includes(id)) { + box.style.display = 'none'; + } + }); + } + }, [openModalWidgetId, selectedComponents]); + + const reloadGrid = useCallback(async () => { + if (moveableRef.current) { + moveableRef.current.updateRect(); + moveableRef.current.updateTarget(); + moveableRef.current.updateSelectors(); + } + Array.isArray(moveableRef.current?.moveable?.moveables) && + moveableRef.current?.moveable?.moveables.forEach((moveable) => { + const { + props: { target }, + controlBox, + } = moveable; + controlBox.setAttribute('target-id', target.id); + }); + + const selectedComponentsId = new Set( + selectedComponents.map((component) => { + return component.id; + }) + ); + + // Get all elements with the old class name + var elements = document.getElementsByClassName('selected-component'); + // Iterate through the elements and replace the old class with the new one + for (var i = 0; i < elements.length; i++) { + elements[i].className = 'moveable-control-box modal-moveable rCS1w3zcxh'; + } + + const controlBoxes = moveableRef?.current?.moveable?.getMoveables(); + if (controlBoxes) { + for (const element of controlBoxes) { + if (selectedComponentsId.has(element?.props?.target?.id)) { + element?.controlBox?.classList.add('selected-component', `sc-${element?.props?.target?.id}`); + } + } + } + }, [selectedComponents]); + + useEffect(() => { + setList(boxList); + }, [JSON.stringify(boxes)]); + + const groupedTargets = [ + ...findHighestLevelofSelection(selectedComponents).map((component) => '.ele-' + component.id), + ]; + + useEffect(() => { + reloadGrid(); + }, [selectedComponents, openModalWidgetId, widgets]); + + const updateNewPosition = (events, parent = null) => { + const posWithParent = { + events, + parent, + }; + lastDraggedEventsRef.current = posWithParent; + }; + + return mode === 'edit' ? ( + <> + 1, + }} + flushSync={flushSync} + target={groupedTargets?.length > 1 ? groupedTargets : '.target'} + origin={false} + individualGroupable={groupedTargets.length <= 1} + draggable={true} + resizable={RESIZABLE_CONFIG} + keepRatio={false} + // key={list.length} + individualGroupableProps={individualGroupableProps} + onResize={(e) => { + const currentLayout = list.find(({ id }) => id === e.target.id); + const currentWidget = boxes.find(({ id }) => id === e.target.id); + let _gridWidth = useGridStore.getState().subContainerWidths[currentWidget.component?.parent] || gridWidth; + document.getElementById('canvas-' + currentWidget.component?.parent)?.classList.add('show-grid'); + useGridStore.getState().actions.setDragTarget(currentWidget.component?.parent); + const currentWidth = currentLayout.width * _gridWidth; + const diffWidth = e.width - currentWidth; + const diffHeight = e.height - currentLayout.height; + const isLeftChanged = e.direction[0] === -1; + const isTopChanged = e.direction[1] === -1; + + let transformX = currentLayout.left * _gridWidth; + let transformY = currentLayout.top; + if (isLeftChanged) { + transformX = currentLayout.left * _gridWidth - diffWidth; + } + if (isTopChanged) { + transformY = currentLayout.top - diffHeight; + } + + const elemContainer = e.target.closest('.real-canvas'); + const containerHeight = elemContainer.clientHeight; + const containerWidth = elemContainer.clientWidth; + const maxY = containerHeight - e.target.clientHeight; + const maxLeft = containerWidth - e.target.clientWidth; + const maxWidthHit = transformX < 0 || transformX >= maxLeft; + const maxHeightHit = transformY < 0 || transformY >= maxY; + transformY = transformY < 0 ? 0 : transformY > maxY ? maxY : transformY; + transformX = transformX < 0 ? 0 : transformX > maxLeft ? maxLeft : transformX; + + if (!maxWidthHit || e.width < e.target.clientWidth) { + e.target.style.width = `${e.width}px`; + } + if (!maxHeightHit || e.height < e.target.clientHeight) { + e.target.style.height = `${e.height}px`; + } + e.target.style.transform = `translate(${transformX}px, ${transformY}px)`; + }} + onResizeEnd={(e) => { + try { + useGridStore.getState().actions.setResizingComponentId(null); + // setIsResizing(false); + const currentWidget = boxes.find(({ id }) => { + return id === e.target.id; + }); + document.getElementById('canvas-' + currentWidget.component?.parent)?.classList.remove('show-grid'); + let _gridWidth = useGridStore.getState().subContainerWidths[currentWidget.component?.parent] || gridWidth; + let width = Math.round(e.lastEvent.width / _gridWidth) * _gridWidth; + const height = Math.round(e.lastEvent.height / 10) * 10; + + const currentLayout = list.find(({ id }) => id === e.target.id); + const currentWidth = currentLayout.width * _gridWidth; + const diffWidth = e.lastEvent.width - currentWidth; + const diffHeight = e.lastEvent.height - currentLayout.height; + const isLeftChanged = e.lastEvent.direction[0] === -1; + const isTopChanged = e.lastEvent.direction[1] === -1; + + let transformX = currentLayout.left * _gridWidth; + let transformY = currentLayout.top; + if (isLeftChanged) { + transformX = currentLayout.left * _gridWidth - diffWidth; + } + if (isTopChanged) { + transformY = currentLayout.top - diffHeight; + } + + width = adjustWidth(width, transformX, _gridWidth); + const elemContainer = e.target.closest('.real-canvas'); + const containerHeight = elemContainer.clientHeight; + const containerWidth = elemContainer.clientWidth; + const maxY = containerHeight - e.target.clientHeight; + const maxLeft = containerWidth - e.target.clientWidth; + const maxWidthHit = transformX < 0 || transformX >= maxLeft; + const maxHeightHit = transformY < 0 || transformY >= maxY; + transformY = transformY < 0 ? 0 : transformY > maxY ? maxY : transformY; + transformX = transformX < 0 ? 0 : transformX > maxLeft ? maxLeft : transformX; + + const roundedTransformY = Math.round(transformY / 10) * 10; + transformY = transformY % 10 === 5 ? roundedTransformY - 10 : roundedTransformY; + e.target.style.transform = `translate(${Math.round(transformX / _gridWidth) * _gridWidth}px, ${ + Math.round(transformY / 10) * 10 + }px)`; + if (!maxWidthHit || e.width < e.target.clientWidth) { + e.target.style.width = `${Math.round(e.lastEvent.width / _gridWidth) * _gridWidth}px`; + } + if (!maxHeightHit || e.height < e.target.clientHeight) { + e.target.style.height = `${Math.round(e.lastEvent.height / 10) * 10}px`; + } + const resizeData = { + id: e.target.id, + height: height, + width: width, + x: transformX, + y: transformY, + }; + if (currentWidget.component?.parent) { + resizeData.gw = _gridWidth; + } + // Adding the new updates to the macro task queue to unblock UI + // setTimeout(() => { + // }); + onResizeStop([resizeData]); + } catch (error) { + console.error('ResizeEnd error ->', error); + } + useGridStore.getState().actions.setDragTarget(); + }} + onResizeStart={(e) => { + performance.mark('onResizeStart'); + useGridStore.getState().actions.setResizingComponentId(e.target.id); + e.setMin([gridWidth, 10]); + }} + onResizeGroupStart={({ events }) => { + const parentElm = events[0].target.closest('.real-canvas'); + parentElm.classList.add('show-grid'); + }} + onResizeGroup={({ events }) => { + const parentElm = events[0].target.closest('.real-canvas'); + const parentWidth = parentElm?.clientWidth; + const parentHeight = parentElm?.clientHeight; + + const { posRight, posLeft, posTop, posBottom } = getPositionForGroupDrag(events, parentWidth, parentHeight); + events.forEach((ev) => { + ev.target.style.width = `${ev.width}px`; + ev.target.style.height = `${ev.height}px`; + ev.target.style.transform = ev.drag.transform; + }); + + if (!(posLeft < 0 || posTop < 0 || posRight < 0 || posBottom < 0)) { + groupResizeDataRef.current = events; + } + }} + onResizeGroupEnd={(e) => { + try { + const { events } = e; + const newBoxs = []; + + const parentElm = events[0].target.closest('.real-canvas'); + parentElm.classList.remove('show-grid'); + + // TODO: Logic needs to be relooked post go live P2 + groupResizeDataRef.current.forEach((ev) => { + const currentWidget = boxes.find(({ id }) => { + return id === ev.target.id; + }); + let _gridWidth = useGridStore.getState().subContainerWidths[currentWidget.component?.parent] || gridWidth; + let width = Math.round(ev.width / _gridWidth) * _gridWidth; + width = width < _gridWidth ? _gridWidth : width; + let posX = Math.round(ev.drag.translate[0] / _gridWidth) * _gridWidth; + let posY = Math.round(ev.drag.translate[1] / 10) * 10; + let height = Math.round(ev.height / 10) * 10; + height = height < 10 ? 10 : height; + + ev.target.style.width = `${width}px`; + ev.target.style.height = `${height}px`; + ev.target.style.transform = `translate(${posX}px, ${posY}px)`; + newBoxs.push({ + id: ev.target.id, + height: height, + width: width, + x: posX, + y: posY, + gw: _gridWidth, + }); + }); + + if (groupResizeDataRef.current.length) { + // Adding the new updates to the macro task queue to unblock UI + // setTimeout(() => { + // }); + onResizeStop(newBoxs); + } else { + events.forEach((ev) => { + const currentWidget = boxes.find(({ id }) => { + return id === ev.target.id; + }); + let _gridWidth = + useGridStore.getState().subContainerWidths[currentWidget.component?.parent] || gridWidth; + let width = currentWidget?.layouts[currentLayout].width * _gridWidth; + let posX = currentWidget?.layouts[currentLayout].left * _gridWidth; + let posY = currentWidget?.layouts[currentLayout].top; + let height = currentWidget?.layouts[currentLayout].height; + height = height < 10 ? 10 : height; + ev.target.style.width = `${width}px`; + ev.target.style.height = `${height}px`; + ev.target.style.transform = `translate(${posX}px, ${posY}px)`; + }); + } + groupResizeDataRef.current = []; + reloadGrid(); + } catch (error) { + console.error('Error resizing group', error); + } + }} + checkInput + onDragStart={(e) => { + e?.moveable?.controlBox?.removeAttribute('data-off-screen'); + const box = boxes.find((box) => box.id === e.target.id); + let isDragOnTable = false; + + /* Checking if the dragged elemenent is a table. If its a table drag is disabled since it will affect column resizing and reordering */ + if (box?.component?.component === 'Table') { + const tableElem = e.target.querySelector('.jet-data-table'); + isDragOnTable = tableElem.contains(e.inputEvent.target); + } + + if ( + ['RangeSlider', 'Container', 'BoundedBox', 'Kanban'].includes(box?.component?.component) || + isDragOnTable + ) { + const targetElems = document.elementsFromPoint(e.clientX, e.clientY); + const isHandle = targetElems.find((ele) => ele.classList.contains('handle-content')); + if (!isHandle) { + return false; + } + } + if (hoveredComponent !== e.target.id) { + return false; + } + }} + onDragEnd={(e) => { + try { + if (isDraggingRef.current) { + useGridStore.getState().actions.setDraggingComponentId(null); + isDraggingRef.current = false; + } + + if (draggedSubContainer) { + return; + } + + let draggedOverElemId = widgets[e.target.id]?.component?.parent; + let draggedOverElemIdType; + const parentComponent = widgets[widgets[e.target.id]?.component?.parent]; + let draggedOverElem; + if (document.elementFromPoint(e.clientX, e.clientY) && parentComponent?.component?.component !== 'Modal') { + const targetElems = document.elementsFromPoint(e.clientX, e.clientY); + draggedOverElem = targetElems.find((ele) => { + const isOwnChild = e.target.contains(ele); // if the hovered element is a child of actual draged element its not considered + if (isOwnChild) return false; + + let isDroppable = ele.id !== e.target.id && ele.classList.contains('drag-container-parent'); + if (isDroppable) { + // debugger; + let widgetId = ele?.getAttribute('component-id') || ele.id; + let widgetType = boxes.find(({ id }) => id === widgetId)?.component?.component; + if (!widgetType) { + widgetId = widgetId.split('-').slice(0, -1).join('-'); + widgetType = boxes.find(({ id }) => id === widgetId)?.component?.component; + } + if ( + !['Calendar', 'Kanban', 'Form', 'Tabs', 'Modal', 'Listview', 'Container', 'Table'].includes( + widgetType + ) + ) { + isDroppable = false; + } + } + return isDroppable; + }); + draggedOverElemId = draggedOverElem?.getAttribute('component-id') || draggedOverElem?.id; + draggedOverElemIdType = draggedOverElem?.getAttribute('data-parent-type'); + } + + const _gridWidth = useGridStore.getState().subContainerWidths[draggedOverElemId] || gridWidth; + const currentParentId = boxes.find(({ id: widgetId }) => e.target.id === widgetId)?.component?.parent; + let left = e.lastEvent.translate[0]; + let top = e.lastEvent.translate[1]; + + if (['Listview', 'Kanban'].includes(widgets[draggedOverElemId]?.component?.component)) { + const elemContainer = e.target.closest('.real-canvas'); + const containerHeight = elemContainer.clientHeight; + const maxY = containerHeight - e.target.clientHeight; + top = top > maxY ? maxY : top; + } + + const currentWidget = boxes.find(({ id }) => id === e.target.id)?.component?.component; + const parentWidget = draggedOverElemIdType === 'Kanban' ? 'Kanban_card' : draggedOverElemIdType; + const restrictedWidgets = restrictedWidgetsObj?.[parentWidget] || []; + const isParentChangeAllowed = !restrictedWidgets.includes(currentWidget); + if (draggedOverElemId !== currentParentId) { + // debugger; + if (isParentChangeAllowed) { + const draggedOverWidget = widgets[draggedOverElemId]; + let { left: _left, top: _top } = getMouseDistanceFromParentDiv( + e, + draggedOverWidget?.component?.component === 'Kanban' ? draggedOverElem : draggedOverElemId, + widgets[draggedOverElemId]?.component?.component + ); + left = _left; + top = _top; + } else { + const currBox = list.find((l) => l.id === e.target.id); + left = currBox.left * gridWidth; + top = currBox.top; + toast.error(`${currentWidget} is not compatible as a child component of ${parentWidget}`); + e.target.style.transform = `translate(${left}px, ${top}px)`; + } + } + + e.target.style.transform = `translate(${Math.round(left / _gridWidth) * _gridWidth}px, ${ + Math.round(top / 10) * 10 + }px)`; + + if (draggedOverElemId === currentParentId || isParentChangeAllowed) { + // Adding the new updates to the macro task queue to unblock UI + // setTimeout(() => + // ); + onDrag([ + { + id: e.target.id, + x: left, + y: Math.round(top / 10) * 10, + parent: isParentChangeAllowed ? draggedOverElemId : undefined, + }, + ]); + } + const box = boxes.find((box) => box.id === e.target.id); + setTimeout(() => useEditorStore.getState().actions.setSelectedComponents([{ ...box }])); + } catch (error) { + console.log('draggedOverElemId->error', error); + } + var canvasElms = document.getElementsByClassName('sub-canvas'); + var elementsArray = Array.from(canvasElms); + elementsArray.forEach(function (element) { + element.classList.remove('show-grid'); + element.classList.add('hide-grid'); + }); + }} + onDrag={(e) => { + if (!isDraggingRef.current) { + useGridStore.getState().actions.setDraggingComponentId(e.target.id); + isDraggingRef.current = true; + } + if (draggedSubContainer) { + return; + } + + if (!draggedSubContainer) { + const parentComponent = widgets[widgets[e.target.id]?.component?.parent]; + let top = e.translate[1]; + let left = e.translate[0]; + + if (parentComponent?.component?.component === 'Modal') { + const elemContainer = e.target.closest('.real-canvas'); + const containerHeight = elemContainer.clientHeight; + const containerWidth = elemContainer.clientWidth; + const maxY = containerHeight - e.target.clientHeight; + const maxLeft = containerWidth - e.target.clientWidth; + top = top < 0 ? 0 : top > maxY ? maxY : top; + left = left < 0 ? 0 : left > maxLeft ? maxLeft : left; + } + + e.target.style.transform = `translate(${left}px, ${top}px)`; + e.target.setAttribute( + 'widget-pos2', + `translate: ${e.translate[0]} | Round: ${ + Math.round(e.translate[0] / gridWidth) * gridWidth + } | ${gridWidth}` + ); + } + + if (document.elementFromPoint(e.clientX, e.clientY)) { + const targetElems = document.elementsFromPoint(e.clientX, e.clientY); + const draggedOverElements = targetElems.filter( + (ele) => + ele.id !== e.target.id && (ele.classList.contains('target') || ele.classList.contains('real-canvas')) + ); + const draggedOverElem = draggedOverElements.find((ele) => ele.classList.contains('target')); + const draggedOverContainer = draggedOverElements.find((ele) => ele.classList.contains('real-canvas')); + + var canvasElms = document.getElementsByClassName('sub-canvas'); + var elementsArray = Array.from(canvasElms); + elementsArray.forEach(function (element) { + element.classList.remove('show-grid'); + element.classList.add('hide-grid'); + }); + const parentWidgetId = draggedOverContainer.getAttribute('data-parent') || draggedOverElem?.id; + document.getElementById('canvas-' + parentWidgetId)?.classList.add('show-grid'); + + useGridStore.getState().actions.setDragTarget(parentWidgetId); + + if ( + draggedOverElemRef.current?.id !== draggedOverContainer?.id && + !draggedOverContainer.classList.contains('hide-grid') + ) { + draggedOverContainer.classList.add('show-grid'); + draggedOverElemRef.current && draggedOverElemRef.current.classList.remove('show-grid'); + draggedOverElemRef.current = draggedOverContainer; + } + } + + const offset = getOffset(e.target, document.querySelector('#real-canvas')); + if (document.getElementById('moveable-drag-ghost')) { + document.getElementById('moveable-drag-ghost').style.transform = `translate(${offset.x}px, ${offset.y}px)`; + document.getElementById('moveable-drag-ghost').style.width = `${e.target.clientWidth}px`; + document.getElementById('moveable-drag-ghost').style.height = `${e.target.clientHeight}px`; + } + }} + onDragGroup={(ev) => { + const { events } = ev; + const parentElm = events[0]?.target?.closest('.real-canvas'); + if (parentElm && !parentElm.classList.contains('show-grid')) { + parentElm?.classList?.add('show-grid'); + } + + events.forEach((ev) => { + let posX = ev.translate[0]; + let posY = ev.translate[1]; + + ev.target.style.transform = `translate(${posX}px, ${posY}px)`; + }); + updateNewPosition(events); + }} + onDragGroupStart={({ events }) => { + const parentElm = events[0]?.target?.closest('.real-canvas'); + parentElm?.classList?.add('show-grid'); + }} + onDragGroupEnd={(e) => { + try { + const { events } = e; + const parentId = widgets[events[0]?.target?.id]?.component?.parent; + + const parentElm = events[0].target.closest('.real-canvas'); + parentElm.classList.remove('show-grid'); + + const parentWidth = parentElm?.clientWidth; + const parentHeight = parentElm?.clientHeight; + + const { posRight, posLeft, posTop, posBottom } = getPositionForGroupDrag(events, parentWidth, parentHeight); + const _gridWidth = useGridStore.getState().subContainerWidths[parentId] || gridWidth; + + onDrag( + events.map((ev) => { + let posX = ev.lastEvent.translate[0]; + let posY = ev.lastEvent.translate[1]; + if (posLeft < 0) { + posX = ev.lastEvent.translate[0] - posLeft; + } + if (posTop < 0) { + posY = ev.lastEvent.translate[1] - posTop; + } + if (posRight < 0) { + posX = ev.lastEvent.translate[0] + posRight; + } + if (posBottom < 0) { + posY = ev.lastEvent.translate[1] + posBottom; + } + ev.target.style.transform = `translate(${Math.round(posX / _gridWidth) * _gridWidth}px, ${ + Math.round(posY / 10) * 10 + }px)`; + return { + id: ev.target.id, + x: posX, + y: posY, + parent: parentId, + }; + }) + ); + } catch (error) { + console.error('Error dragging group', error); + } + }} + //snap settgins + snappable={true} + snapThreshold={10} + isDisplaySnapDigit={false} + bounds={CANVAS_BOUNDS} + displayAroundControls={true} + controlPadding={20} + /> + > + ) : ( + '' + ); +} + +function getMouseDistanceFromParentDiv(event, id, parentWidgetType) { + let parentDiv = id + ? typeof id === 'string' + ? document.getElementById(id) + : id + : document.getElementsByClassName('real-canvas')[0]; + if (parentWidgetType === 'Container') { + parentDiv = document.getElementById('canvas-' + id); + } + + // Get the bounding rectangle of the parent div. + const parentDivRect = parentDiv.getBoundingClientRect(); + const targetDivRect = event.target.getBoundingClientRect(); + + const mouseX = targetDivRect.left - parentDivRect.left; + const mouseY = targetDivRect.top - parentDivRect.top; + + // Calculate the distance from the mouse pointer to the top and left edges of the parent div. + const top = mouseY; + const left = mouseX; + + return { top, left }; +} + +export function findHighestLevelofSelection(selectedComponents) { + let result = [...selectedComponents]; + if (selectedComponents.some((widget) => !widget?.component?.parent)) { + result = selectedComponents.filter((widget) => !widget?.component?.parent); + } else { + result = selectedComponents.filter( + (widget) => widget?.component?.parent === selectedComponents[0]?.component?.parent + ); + } + return result; +} + +function findChildrenAndGrandchildren(parentId, widgets) { + if (isEmpty(widgets)) { + return []; + } + const type = widgets.find(({ id }) => id === parentId)?.component?.component; + let pid = parentId; + if (type === 'Kanban') { + pid = pid + '-modal'; + } + const children = widgets.filter((widget) => widget?.component?.parent === pid); + let result = []; + for (const child of children) { + result.push(child.id); + result = result.concat(...findChildrenAndGrandchildren(child.id)); + } + return result; +} + +function adjustWidth(width, posX, gridWidth) { + posX = Math.round(posX / gridWidth); + width = Math.round(width / gridWidth); + if (posX + width > 43) { + width = 43 - posX; + } + return width * gridWidth; +} + +function getPositionForGroupDrag(events, parentWidth, parentHeight) { + return events.reduce((positions, ev) => { + const eventObj = ev.lastEvent ? ev.lastEvent : ev; + const { width, height } = eventObj; + + const { + translate: [elemPosX, elemPosY], + } = eventObj.drag ? eventObj.drag : eventObj; + + return { + ...positions, + posRight: Math.min( + positions.posRight ?? Infinity, // Handle potential initial undefined value + parentWidth - (width + elemPosX) + ), + posBottom: Math.min(positions.posBottom ?? Infinity, parentHeight - (height + elemPosY)), + posLeft: Math.min(positions.posLeft ?? Infinity, elemPosX), + posTop: Math.min(positions.posTop ?? Infinity, elemPosY), + }; + }, {}); +} + +function getOffset(childElement, grandparentElement) { + if (!childElement || !grandparentElement) return null; + + // Get bounding rectangles for both elements + const childRect = childElement.getBoundingClientRect(); + const grandparentRect = grandparentElement.getBoundingClientRect(); + + // Calculate offset by subtracting grandparent's position from child's position + const offsetX = childRect.left - grandparentRect.left; + const offsetY = childRect.top - grandparentRect.top; + + return { x: offsetX, y: offsetY }; +} diff --git a/frontend/src/Editor/DraggableBox.jsx b/frontend/src/Editor/DraggableBox.jsx index f50c4c19a2..7176fb58a1 100644 --- a/frontend/src/Editor/DraggableBox.jsx +++ b/frontend/src/Editor/DraggableBox.jsx @@ -2,26 +2,18 @@ import React, { useCallback, useEffect, useState } from 'react'; import cx from 'classnames'; import { useDrag } from 'react-dnd'; -import { ItemTypes } from './ItemTypes'; +import { ItemTypes } from './editorConstants'; import { getEmptyImage } from 'react-dnd-html5-backend'; import { Box } from './Box'; import { ConfigHandle } from './ConfigHandle'; -import { Rnd } from 'react-rnd'; -import { resolveWidgetFieldValue, resolveReferences } from '@/_helpers/utils'; +import { resolveWidgetFieldValue } from '@/_helpers/utils'; import ErrorBoundary from './ErrorBoundary'; -import { useCurrentState } from '@/_stores/currentStateStore'; import { useEditorStore } from '@/_stores/editorStore'; import { shallow } from 'zustand/shallow'; +import { useNoOfGrid, useGridStore } from '@/_stores/gridStore'; import WidgetBox from './WidgetBox'; import * as Sentry from '@sentry/react'; -const NO_OF_GRIDS = 43; - -const resizerClasses = { - topRight: 'top-right', - bottomRight: 'bottom-right', - bottomLeft: 'bottom-left', - topLeft: 'top-left', -}; +import { findHighestLevelofSelection } from './DragContainer'; function computeWidth(currentLayoutOptions) { return `${currentLayoutOptions?.width}%`; @@ -37,90 +29,56 @@ function getStyles(isDragging, isSelectedComponent) { }; } -export const DraggableBox = React.memo( +const DraggableBox = React.memo( ({ id, className, mode, title, parent, - allComponents, component, index, inCanvas, onEvent, onComponentClick, - onComponentOptionChanged, - onComponentOptionsChanged, - onResizeStop, - onDragStop, paramUpdated, - resizingStatusChanged, zoomLevel, - containerProps, - setSelectedComponent, removeComponent, layouts, - draggingStatusChanged, darkMode, canvasWidth, readOnly, customResolvables, parentId, - sideBarDebugger, + getContainerProps, + currentPageId, + onComponentOptionChanged = null, + onComponentOptionsChanged = null, + isFromSubContainer = false, childComponents = null, }) => { - const [isResizing, setResizing] = useState(false); - const [isDragging2, setDragging] = useState(false); + const isResizing = useGridStore((state) => state.resizingComponentId === id); const [canDrag, setCanDrag] = useState(true); + const noOfGrid = useNoOfGrid(); const { currentLayout, setHoveredComponent, - mouseOver, selectionInProgress, isSelectedComponent, isMultipleComponentsSelected, + autoComputeLayout, } = useEditorStore( (state) => ({ currentLayout: state?.currentLayout, setHoveredComponent: state?.actions?.setHoveredComponent, - mouseOver: state?.hoveredComponent === id, selectionInProgress: state?.selectionInProgress, isSelectedComponent: mode === 'edit' ? state?.selectedComponents?.some((component) => component?.id === id) : false, - isMultipleComponentsSelected: state?.selectedComponents?.length > 1 ? true : false, + isMultipleComponentsSelected: findHighestLevelofSelection(state?.selectedComponents)?.length > 1 ? true : false, + autoComputeLayout: state?.appDefinition?.pages?.[state?.currentPageId]?.autoComputeLayout, }), shallow ); - const currentState = useCurrentState(); - const [boxHeight, setboxHeight] = useState(layoutData?.height); // height for layouting with top and side values - - const resizerStyles = { - topRight: { - width: '8px', - height: '8px', - right: '-4px', - top: '-4px', - }, - bottomRight: { - width: '8px', - height: '8px', - right: '-4px', - bottom: '-4px', - }, - bottomLeft: { - width: '8px', - height: '8px', - left: '-4px', - bottom: '-4px', - }, - topLeft: { - width: '8px', - height: '8px', - left: '-4px', - top: '-4px', - }, - }; const [{ isDragging }, drag, preview] = useDrag( () => ({ @@ -134,40 +92,19 @@ export const DraggableBox = React.memo( layouts, canvasWidth, currentLayout, + autoComputeLayout, }, collect: (monitor) => ({ isDragging: monitor.isDragging(), }), }), - [id, title, component, index, currentLayout, zoomLevel, parent, layouts, canvasWidth] + [id, title, component, index, currentLayout, zoomLevel, parent, layouts, canvasWidth, autoComputeLayout] ); useEffect(() => { preview(getEmptyImage(), { captureDraggingState: true }); }, [isDragging]); - useEffect(() => { - if (resizingStatusChanged) { - resizingStatusChanged(isResizing); - } - }, [isResizing]); - - useEffect(() => { - if (draggingStatusChanged) { - draggingStatusChanged(isDragging2); - } - - if (isDragging2 && !isSelectedComponent) { - setSelectedComponent(id, component); - } - }, [isDragging2]); - - const style = { - display: 'inline-block', - alignItems: 'center', - justifyContent: 'center', - }; - let _refProps = {}; if (mode === 'edit' && canDrag) { @@ -186,57 +123,31 @@ export const DraggableBox = React.memo( const defaultData = { top: 100, left: 0, - width: 445, + width: 43, height: 500, }; - const layoutData = inCanvas ? layouts[currentLayout] || defaultData : defaultData; - const gridWidth = canvasWidth / NO_OF_GRIDS; - const width = (canvasWidth * layoutData.width) / NO_OF_GRIDS; + + const layoutData = inCanvas ? layouts[currentLayout] || layouts['desktop'] : defaultData; + const width = (canvasWidth * layoutData.width) / noOfGrid; + const configWidgetHandlerForModalComponent = !isSelectedComponent && component.component === 'Modal' && - resolveWidgetFieldValue(component.definition.properties.useDefaultButton, currentState)?.value === false; + resolveWidgetFieldValue(component.definition.properties.useDefaultButton?.value) === false; - const onComponentHover = (id) => { - if (selectionInProgress) return; - setHoveredComponent(id); - }; + const onComponentHover = useCallback( + (id) => { + if (selectionInProgress) return; + setHoveredComponent(id); + }, + [id] + ); - const { label = { value: null } } = component?.definition?.properties ?? {}; - - useEffect(() => { - if ( - component.component == 'TextInput' || - component.component == 'PasswordInput' || - component.component == 'NumberInput' - ) { - const { alignment = { value: null } } = component?.definition?.styles ?? {}; - let newHeight = layoutData?.height; - if (alignment?.value && resolveReferences(alignment?.value, currentState, null, customResolvables) === 'top') { - const { width = { value: null } } = component?.definition?.styles ?? {}; - const { auto = { value: null } } = component?.definition?.styles ?? {}; - const resolvedWidth = resolveReferences(width?.value, currentState, null, customResolvables); - const resolvedAuto = resolveReferences(auto?.value, currentState, null, customResolvables); - if ( - (label?.value?.length > 0 && resolvedWidth > 0) || - (resolvedAuto && resolvedWidth == 0 && label?.value && label?.value?.length != 0) - ) { - newHeight = layoutData?.height + 20; - } - } - setboxHeight(newHeight); - } - }, [layoutData?.height, label?.value?.length, currentLayout]); - - const adjustHeightBasedOnAlignment = (increase) => { - if (increase) return setboxHeight(layoutData?.height + 20); - else return setboxHeight(layoutData?.height); - }; return ( {inCanvas ? ( { - if (e.currentTarget.className.includes(`widget-${id}`)) { - onComponentHover?.(id); + if (useGridStore.getState().draggingComponentId) return; + const closestDraggableBox = e.target.closest('.draggable-box'); + if (closestDraggableBox) { + const classNames = closestDraggableBox.className.split(' '); + let compId = null; + + classNames.forEach((className) => { + if (className.startsWith('widget-')) { + compId = className.replace('widget-', ''); + } + }); + + onComponentHover?.(compId); e.stopPropagation(); } }} onMouseLeave={() => { + if (useGridStore.getState().draggingComponentId) return; setHoveredComponent(''); }} style={getStyles(isDragging, isSelectedComponent)} > - setResizing(true)} - onDrag={(e) => { - e.preventDefault(); - e.stopImmediatePropagation(); - if (!isDragging2) { - setDragging(true); - } - }} - resizeHandleClasses={isSelectedComponent || mouseOver ? resizerClasses : {}} - resizeHandleStyles={resizerStyles} - enableResizing={{ - top: mode == 'edit' && !readOnly, - right: mode == 'edit' && !readOnly && true, - bottom: mode == 'edit' && !readOnly, - left: mode == 'edit' && !readOnly && true, - topRight: mode == 'edit' && !readOnly, - bottomRight: mode == 'edit' && !readOnly, - bottomLeft: mode == 'edit' && !readOnly, - topLeft: mode == 'edit' && !readOnly, - }} - disableDragging={mode !== 'edit' || readOnly} - onDragStop={(e, direction) => { - setDragging(false); - onDragStop(e, id, direction, currentLayout, layoutData); - }} - cancel={`div.table-responsive.jet-data-table, div.calendar-widget, div.text-input, .textarea, .map-widget, .range-slider, .kanban-container, div.real-canvas, .overlay-cell-table`} - onResizeStop={(e, direction, ref, d, position) => { - setResizing(false); - onResizeStop(id, e, direction, ref, d, position); - }} - bounds={parent !== undefined ? `#canvas-${parent}` : '.real-canvas'} - widgetId={id} - > - - {mode === 'edit' && - !readOnly && - (configWidgetHandlerForModalComponent || mouseOver || isSelectedComponent) && - !isResizing && ( - - )} - {/* Adding a sentry's error boundary to differentiate between our generic error boundary and one from editor's component */} - Something went wrong.} - beforeCapture={(scope) => { - scope.setTag('errorType', 'component'); - }} - > - - - - + + {mode === 'edit' && !readOnly && ( + + )} + Something went wrong.} + beforeCapture={(scope) => { + scope.setTag('errorType', 'component'); + }} + > + + + ) : ( @@ -376,3 +243,5 @@ export const DraggableBox = React.memo( ); } ); + +export { DraggableBox }; diff --git a/frontend/src/Editor/Editor.jsx b/frontend/src/Editor/Editor.jsx index 318671f5a3..efa476d1e6 100644 --- a/frontend/src/Editor/Editor.jsx +++ b/frontend/src/Editor/Editor.jsx @@ -1,16 +1,15 @@ -import React, { useEffect, useLayoutEffect, useRef, useState } from 'react'; +import React, { useCallback, useEffect, useRef, useState, useLayoutEffect } from 'react'; import { appService, authenticationService, appVersionService, orgEnvironmentVariableService, - appEnvironmentService, orgEnvironmentConstantService, appsService, } from '@/_services'; import { DndProvider } from 'react-dnd'; import { HTML5Backend } from 'react-dnd-html5-backend'; -import _, { cloneDeep, isEqual, isEmpty, debounce, omit, noop } from 'lodash'; +import _, { isEqual, isEmpty, debounce, omit, noop } from 'lodash'; import { Container } from './Container'; import { EditorKeyHooks } from './EditorKeyHooks'; import { CustomDragLayer } from './CustomDragLayer'; @@ -19,17 +18,15 @@ import { componentTypes } from './WidgetManager/components'; import { Inspector } from './Inspector/Inspector'; import QueryPanel from './QueryPanel/QueryPanel'; import { - onComponentOptionChanged, - onComponentOptionsChanged, onEvent, onQueryConfirmOrCancel, runQuery, computeComponentState, - debuggerActions, cloneComponents, removeSelectedComponent, buildAppDefinition, buildComponentMetaDefinition, + runQueries, } from '@/_helpers/appUtils'; import { Confirm } from './Viewer/Confirm'; // eslint-disable-next-line import/no-unresolved @@ -48,35 +45,59 @@ import { withTranslation } from 'react-i18next'; import { v4 as uuid } from 'uuid'; import Skeleton from 'react-loading-skeleton'; import EditorHeader from './Header'; -import { getWorkspaceId, setWindowTitle, defaultWhiteLabellingSettings, pageTitles } from '@/_helpers/utils'; +import { + getWorkspaceId, + isValidUUID, + setWindowTitle, + defaultWhiteLabellingSettings, + pageTitles, +} from '@/_helpers/utils'; import '@/_styles/editor/react-select-search.scss'; import { withRouter } from '@/_hoc/withRouter'; import { ReleasedVersionError } from './AppVersionsManager/ReleasedVersionError'; import { useDataSourcesStore } from '@/_stores/dataSourcesStore'; import { useDataQueriesStore } from '@/_stores/dataQueriesStore'; import { useAppVersionStore, useAppVersionActions } from '@/_stores/appVersionStore'; -import { useCurrentStateStore, useCurrentState, getCurrentState } from '@/_stores/currentStateStore'; -import { computeAppDiff, computeComponentPropertyDiff, isParamFromTableColumn, resetAllStores } from '@/_stores/utils'; +import { useQueryPanelStore } from '@/_stores/queryPanelStore'; +import { useCurrentStateStore, getCurrentState } from '@/_stores/currentStateStore'; +import { + computeAppDiff, + computeComponentPropertyDiff, + findAllEntityReferences, + isParamFromTableColumn, + resetAllStores, +} from '@/_stores/utils'; import { setCookie } from '@/_helpers/cookie'; -import { EMPTY_ARRAY, useEditorActions, useEditorStore } from '@/_stores/editorStore'; +import { EMPTY_ARRAY, flushComponentsToRender, useEditorActions, useEditorStore } from '@/_stores/editorStore'; import { useAppDataActions, useAppDataStore } from '@/_stores/appDataStore'; +import { useNoOfGrid } from '@/_stores/gridStore'; import { useMounted } from '@/_hooks/use-mount'; import EditorSelecto from './EditorSelecto'; // eslint-disable-next-line import/no-unresolved import { diff } from 'deep-object-diff'; import useAppDarkMode from '@/_hooks/useAppDarkMode'; import useDebouncedArrowKeyPress from '@/_hooks/useDebouncedArrowKeyPress'; +import useConfirm from '@/Editor/QueryManager/QueryEditors/TooljetDatabase/Confirm'; import { getQueryParams } from '@/_helpers/routes'; import RightSidebarTabManager from './RightSidebarTabManager'; import { shallow } from 'zustand/shallow'; +import AutoLayoutAlert from './AutoLayoutAlert'; +import { HotkeysProvider } from 'react-hotkeys-hook'; +import { useResolveStore } from '@/_stores/resolverStore'; +import { dfs } from '@/_stores/handleReferenceTransactions'; +import { decimalToHex, EditorConstants } from './editorConstants'; +import { + findComponentsWithReferences, + handleLowPriorityWork, + updateCanvasBackground, + clearAllQueuedTasks, +} from '@/_helpers/editorHelpers'; +import { TJLoader } from '@/_ui/TJLoader/TJLoader'; import cx from 'classnames'; -import { useQueryPanelStore } from '@/_stores/queryPanelStore'; setAutoFreeze(false); enablePatches(); -const decimalToHex = (alpha) => (alpha === 0 ? '00' : Math.round(255 * alpha).toString(16)); - const EditorComponent = (props) => { const { socket } = createWebsocketConnection(props?.params?.id); const mounted = useMounted(); @@ -90,8 +111,15 @@ const EditorComponent = (props) => { autoUpdateEventStore, } = useAppDataActions(); - const { updateEditorState, updateQueryConfirmationList, setSelectedComponents, setCurrentPageId } = - useEditorActions(); + const { + updateEditorState, + updateQueryConfirmationList, + setSelectedComponents, + setCurrentPageId, + updateComponentsNeedsUpdateOnNextRender, + setCanvasWidth, + setCanvasBackground, + } = useEditorActions(); const { setAppVersions } = useAppVersionActions(); const { isVersionReleased, editingVersionId, releasedVersionId } = useAppVersionStore( @@ -102,6 +130,8 @@ const EditorComponent = (props) => { }), shallow ); + const { confirm, ConfirmDialog } = useConfirm(); + const { appDefinition, currentLayout, @@ -114,6 +144,7 @@ const EditorComponent = (props) => { queryConfirmationList, currentPageId, currentSessionId, + canvasBackground, } = useEditorStore( (state) => ({ appDefinition: state.appDefinition, @@ -127,6 +158,7 @@ const EditorComponent = (props) => { queryConfirmationList: state.queryConfirmationList, currentPageId: state.currentPageId, currentSessionId: state.currentSessionId, + canvasBackground: state.canvasBackground, }), shallow ); @@ -161,12 +193,11 @@ const EditorComponent = (props) => { shallow ); - const currentState = useCurrentState(); - const [zoomLevel, setZoomLevel] = useState(1); const [isQueryPaneDragging, setIsQueryPaneDragging] = useState(false); const [isQueryPaneExpanded, setIsQueryPaneExpanded] = useState(false); //!check where this is used const [editorMarginLeft, setEditorMarginLeft] = useState(0); + const noOfGrids = useNoOfGrid(); const [isDragging, setIsDragging] = useState(false); @@ -187,7 +218,6 @@ const EditorComponent = (props) => { const selectionRef = useRef(null); const prevAppDefinition = useRef(appDefinition); - const prevEventsStoreRef = useRef(events); useLayoutEffect(() => { resetAllStores(); @@ -195,7 +225,7 @@ const EditorComponent = (props) => { useEffect(() => { updateState({ isLoading: true }); - + useResolveStore.getState().actions.resetStore(); const currentSession = authenticationService.currentSessionValue; const currentUser = currentSession?.current_user; @@ -219,7 +249,7 @@ const EditorComponent = (props) => { }); useCurrentStateStore.getState().actions.setCurrentState({ globals: { - ...currentState.globals, + ...getCurrentState().globals, theme: { name: props?.darkMode ? 'dark' : 'light' }, urlparams: JSON.parse(JSON.stringify(queryString.parse(props.location.search))), currentUser: userVars, @@ -241,6 +271,8 @@ const EditorComponent = (props) => { subscription.unsubscribe(); if (config.ENABLE_MULTIPLAYER_EDITING) props?.provider?.disconnect(); useEditorStore.getState().actions.setIsEditorActive(false); + useCurrentStateStore.getState().actions.setEditorReady(false); + useResolveStore.getState().actions.resetStore(); prevAppDefinition.current = null; props.setEditorOrViewer(''); }; @@ -261,15 +293,68 @@ const EditorComponent = (props) => { computeComponentState(components); - if (appDiffOptions?.skipAutoSave === true) return; + if (appDiffOptions?.skipAutoSave === true || appDiffOptions?.entityReferenceUpdated === true) return; - if (useEditorStore.getState().isUpdatingEditorStateInProcess) { - autoSave(); - } + handleLowPriorityWork(() => autoSave()); } // eslint-disable-next-line react-hooks/exhaustive-deps }, [JSON.stringify({ appDefinition, currentPageId, dataQueries })]); + /** + ** Async updates components in batches to optimize and processing efficiency. + * This function iterates over an array of component IDs, updating them in fixed-size batches, + * and introduces a delay after each batch to allow the UI thread to manage other tasks, such as rendering updates. + * After all batches are processed, it flushes the updates to clear any flags or temporary states indicating pending updates, + * ensuring the system is ready for the next cycle of updates. + * + * @param {Array} componentIds An array of component IDs that need updates. + * @returns {Promise} A promise that resolves once all batches have been processed and flushed. + */ + + async function batchUpdateComponents(componentIds) { + if (componentIds.length === 0) return; + + let updatedComponentIds = []; + + for (let i = 0; i < componentIds.length; i += 10) { + const batch = componentIds.slice(i, i + 10); + batch.forEach((id) => { + updatedComponentIds.push(id); + }); + + updateComponentsNeedsUpdateOnNextRender(batch); + // Delay to allow UI to process + await new Promise((resolve) => setTimeout(resolve, 0)); + } + + // Flush only updated components + + flushComponentsToRender(updatedComponentIds); + } + + const lastUpdatedRef = useResolveStore((state) => state.lastUpdatedRefs, shallow); + + useEffect(() => { + if (lastUpdatedRef.length > 0) { + const currentComponents = useEditorStore.getState().appDefinition?.pages?.[currentPageId]?.components || {}; + + const directRenders = lastUpdatedRef.map((ref) => ref.includes('rerender') && ref.split(' ')[1]); + + const toUpdateRefs = lastUpdatedRef.filter((ref) => !ref.includes('rerender')); + + const componentIdsWithReferences = findComponentsWithReferences(currentComponents, toUpdateRefs); + + if (directRenders.length > 0) { + componentIdsWithReferences.push(...directRenders); + } + + if (componentIdsWithReferences.length > 0) { + batchUpdateComponents(componentIdsWithReferences); + } + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [lastUpdatedRef]); + useEffect( () => { const components = appDefinition?.pages?.[currentPageId]?.components || {}; @@ -304,6 +389,7 @@ const EditorComponent = (props) => { layout: currentLayout, }); } + // eslint-disable-next-line react-hooks/exhaustive-deps }, [currentLayout, mounted]); const handleYmapEventUpdates = () => { @@ -335,19 +421,6 @@ const EditorComponent = (props) => { return editorRef; }; - const fetchApps = async (page) => { - const { apps } = await appService.getAll(page); - - updateState({ - apps: apps.map((app) => ({ - id: app.id, - name: app.name, - slug: app.slug, - current_version_id: app.current_version_id, - })), - }); - }; - const fetchOrgEnvironmentVariables = () => { orgEnvironmentVariableService.getVariables().then((data) => { const client_variables = {}; @@ -442,22 +515,18 @@ const EditorComponent = (props) => { const initEventListeners = () => { socket?.addEventListener('message', (event) => { const data = event.data.replace(/^"(.+(?="$))"$/, '$1'); - if (data === 'versionReleased') fetchApp(); - // else if (data === 'dataQueriesChanged') { - // fetchDataQueries(editingVersion?.id); - // } else if (data === 'dataSourcesChanged') { - // fetchDataSources(editingVersion?.id); - // } + if (data === 'versionReleased') { + //TODO update the released version id + } }); }; const $componentDidMount = async () => { window.addEventListener('message', handleMessage); + props.setEditorOrViewer('editor'); - await fetchApp(props.params.pageHandle, true); - await fetchApps(0); + await runForInitialLoad(); await fetchOrgEnvironmentVariables(); - await fetchOrgEnvironmentConstants(); initComponentVersioning(); initRealtimeSave(); initEventListeners(); @@ -470,7 +539,6 @@ const EditorComponent = (props) => { }, }); - getCanvasWidth(); initEditorWalkThrough(); }; @@ -489,10 +557,6 @@ const EditorComponent = (props) => { useDataSourcesStore.getState().actions.fetchGlobalDataSources(organizationId); }; - const onVersionDelete = () => { - fetchApp(props.params.pageHandle); - }; - const toggleAppMaintenance = () => { const newState = !isMaintenanceOn; @@ -551,11 +615,16 @@ const EditorComponent = (props) => { }; const getCanvasWidth = () => { - const canvasBoundingRect = document.getElementsByClassName('canvas-area')[0]?.getBoundingClientRect(); - - const _canvasWidth = canvasBoundingRect?.width; - return _canvasWidth; + const windowWidth = window.innerWidth; + const widthInPx = windowWidth - (EditorConstants.leftSideBarWidth + EditorConstants.rightSideBarWidth); + if (appDefinition?.globalSettings?.canvasMaxWidthType === 'px') { + return +appDefinition.globalSettings.canvasMaxWidth; + } + if (appDefinition?.globalSettings?.canvasMaxWidthType === '%') { + return (widthInPx / 100) * +appDefinition.globalSettings.canvasMaxWidth; + } }; + const computeCanvasContainerHeight = () => { // 45 = (height of header) // 85 = (the height of the query panel header when minimised) + (height of header) @@ -565,35 +634,11 @@ const EditorComponent = (props) => { const handleQueryPaneDragging = (bool) => setIsQueryPaneDragging(bool); const handleQueryPaneExpanding = (bool) => setIsQueryPaneExpanded(bool); - const handleOnComponentOptionChanged = (component, optionName, value) => { - return onComponentOptionChanged(component, optionName, value); - }; - - const handleOnComponentOptionsChanged = (component, options) => { - return onComponentOptionsChanged(component, options); - }; - - const handleComponentClick = (id, component) => { - updateEditorState({ - selectedComponent: { id, component }, - }); - }; - - const sideBarDebugger = { - error: (data) => { - debuggerActions.error(data); - }, - flush: () => { - debuggerActions.flush(); - }, - generateErrorLogs: (errors) => debuggerActions.generateErrorLogs(errors), - }; - const changeDarkMode = (newMode) => { if (appMode === 'auto') { useCurrentStateStore.getState().actions.setCurrentState({ globals: { - ...currentState.globals, + ...getCurrentState().globals, theme: { name: newMode ? 'dark' : 'light' }, }, }); @@ -601,9 +646,20 @@ const EditorComponent = (props) => { props.switchDarkMode(newMode); }; - const handleEvent = (eventName, event, options) => { - return onEvent(getEditorRef(), eventName, event, options, 'edit'); - }; + const handleEvent = React.useCallback((eventName, events, options) => { + const latestEvents = useAppDataStore.getState().events; + const filteredEvents = latestEvents.filter((event) => { + const foundEvent = events.find((e) => e.id === event.id); + return foundEvent && foundEvent.name === eventName; + }); + + try { + return onEvent(getEditorRef(), eventName, filteredEvents, options, 'edit'); + } catch (error) { + console.error(error); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); const handleRunQuery = (queryId, queryName) => runQuery(getEditorRef(), queryId, queryName); @@ -611,13 +667,13 @@ const EditorComponent = (props) => { dataSourceModalRef.current.dataSourceModalToggleStateHandler(); }; - const setSelectedComponent = (id, component, multiSelect = false) => { + const setSelectedComponent = React.useCallback((id, component, multiSelect = false) => { const isAlreadySelected = useEditorStore.getState()?.selectedComponents.find((component) => component.id === id); if (!isAlreadySelected) { setSelectedComponents([{ id, component }], multiSelect); } - }; + }, []); const onVersionRelease = (versionId) => { useAppVersionStore.getState().actions.updateReleasedVersionId(versionId); @@ -633,8 +689,8 @@ const EditorComponent = (props) => { }; const computeCanvasBackgroundColor = () => { - const canvasBackgroundColor = appDefinition?.globalSettings?.canvasBackgroundColor - ? appDefinition?.globalSettings?.canvasBackgroundColor + const canvasBackgroundColor = canvasBackground?.canvasBackgroundColor + ? canvasBackground?.canvasBackgroundColor : '#edeff5'; if (['#2f3c4c', '#edeff5'].includes(canvasBackgroundColor)) { return isAppDarkMode ? '#2f3c4c' : '#edeff5'; @@ -643,7 +699,6 @@ const EditorComponent = (props) => { }; const getPagesWithIds = () => { - //! Needs attention return Object.entries(appDefinition?.pages).map(([id, page]) => ({ ...page, id })); }; @@ -652,8 +707,7 @@ const EditorComponent = (props) => { }; const globalSettingsChanged = (globalOptions) => { - const copyOfAppDefinition = JSON.parse(JSON.stringify(appDefinition)); - const newAppDefinition = _.cloneDeep(copyOfAppDefinition); + const newAppDefinition = JSON.parse(JSON.stringify(appDefinition)); for (const [key, value] of Object.entries(globalOptions)) { if (value?.[1]?.a == undefined) newAppDefinition.globalSettings[key] = value; @@ -662,6 +716,9 @@ const EditorComponent = (props) => { newAppDefinition.globalSettings[key] = hexCode; } } + if (globalOptions?.canvasBackgroundColor || globalOptions?.backgroundFxQuery) { + updateCanvasBackground(newAppDefinition.globalSettings, true); + } updateEditorState({ isUpdatingEditorStateInProcess: true, @@ -672,31 +729,58 @@ const EditorComponent = (props) => { }); }; - const callBack = async (data, startingPageHandle, versionSwitched = false) => { - setWindowTitle({ page: pageTitles.EDITOR, appName: data.name }); - useAppVersionStore.getState().actions.updateEditingVersion(data.editing_version); - - if (!releasedVersionId || !versionSwitched) { - useAppVersionStore.getState().actions.updateReleasedVersionId(data.current_version_id); - } - - const appVersions = await appEnvironmentService.getVersionsByEnvironment(data?.id); - setAppVersions(appVersions.appVersions); - const currentOrgId = data?.organization_id || data?.organizationId; - + /* Only for the first load of an app. Should not use for any other cases */ + const runForInitialLoad = async () => { + const appId = props?.id || props?.params?.slug; + const appData = await appService.fetchApp(appId); + const { + name: appName, + current_version_id, + editing_version, + organization_id: organizationId, + slug, + is_maintenance_on: isMaintenanceOn, + is_public: isPublic, + user_id: userId, + events, + } = appData; + useResolveStore.getState().actions.updateJSHints(); + const startingPageHandle = props.params.pageHandle; + setWindowTitle({ page: pageTitles.EDITOR, appName }); + useAppVersionStore.getState().actions.updateEditingVersion(editing_version); + current_version_id && useAppVersionStore.getState().actions.updateReleasedVersionId(current_version_id); + await fetchOrgEnvironmentConstants(); updateState({ - slug: data.slug, - isMaintenanceOn: data?.is_maintenance_on, - organizationId: currentOrgId, - isPublic: data?.is_public || data?.isPublic, - appName: data?.name, - userId: data?.user_id, - appId: data?.id, - events: data.events, - currentVersionId: data?.editing_version?.id, - app: data, + slug, + isMaintenanceOn, + organizationId, + isPublic, + appName, + userId, + appId, + events, + currentVersionId: editing_version?.id, + app: appData, }); + await processNewAppDefinition(appData, startingPageHandle, false, ({ homePageId }) => { + handleLowPriorityWork(async () => { + useResolveStore.getState().actions.updateLastUpdatedRefs(['constants']); + await useDataSourcesStore.getState().actions.fetchGlobalDataSources(organizationId); + await fetchDataSources(editing_version?.id); + commonLowPriorityActions(events, { homePageId }); + }); + }); + }; + + const commonLowPriorityActions = async (events, { homePageId }) => { + const currentPageEvents = events.filter((event) => event.target === 'page' && event.sourceId === homePageId); + const editorRef = getEditorRef(); + await runQueries(useDataQueriesStore.getState().dataQueries, editorRef, true); + await handleEvent('onPageLoad', currentPageEvents, {}, true); + }; + + const processNewAppDefinition = async (data, startingPageHandle, versionSwitched = false, onComplete) => { const appDefData = buildAppDefinition(data); const appJson = appDefData; @@ -718,13 +802,14 @@ const EditorComponent = (props) => { useCurrentStateStore.getState().actions.setCurrentState({ page: currentpageData, }); - updateEditorState({ isLoading: false, appDefinition: appJson, isUpdatingEditorStateInProcess: false, }); + updateState({ components: appJson.pages[homePageId]?.components }); + if (versionSwitched) { props?.navigate(`/${getWorkspaceId()}/apps/${data.slug ?? appId}/${appJson.pages[homePageId]?.handle}`, { state: { @@ -733,22 +818,15 @@ const EditorComponent = (props) => { }); } - await useDataSourcesStore.getState().actions.fetchGlobalDataSources(data?.organization_id); - await fetchDataSources(data.editing_version?.id); - await fetchDataQueries(data.editing_version?.id, true, true); - const currentPageEvents = data.events.filter((event) => event.target === 'page' && event.sourceId === homePageId); - - await handleEvent('onPageLoad', currentPageEvents, {}, true); - }; - - const fetchApp = async (startingPageHandle, onMount = false) => { - const _appId = props?.params?.id || props?.params?.slug; - - if (!onMount) { - await appService.fetchApp(_appId).then((data) => callBack(data, startingPageHandle)); - } else { - callBack(app, startingPageHandle); - } + Promise.all([await fetchDataQueries(data.editing_version?.id, true, true)]) + .then(async () => { + await onEditorLoad(appJson, homePageId, versionSwitched); + updateEntityReferences(appJson, homePageId); + }) + .finally(async () => { + const funcParams = { homePageId }; + typeof onComplete === 'function' && (await onComplete(funcParams)); + }); }; const setAppDefinitionFromVersion = (appData) => { @@ -764,8 +842,25 @@ const EditorComponent = (props) => { updateEditorState({ isLoading: true, }); + clearAllQueuedTasks(); + useCurrentStateStore.getState().actions.initializeCurrentStateOnVersionSwitch(); + useCurrentStateStore.getState().actions.setEditorReady(false); + useResolveStore.getState().actions.resetStore(); - callBack(appData, null, true); + const { editing_version, events } = appData; + + useAppVersionStore.getState().actions.updateEditingVersion(editing_version); + updateState({ + events, + currentVersionId: editing_version?.id, + app: appData, + }); + processNewAppDefinition(appData, null, true, ({ homePageId }) => { + handleLowPriorityWork(async () => { + await fetchDataSources(editing_version?.id); + commonLowPriorityActions(events, homePageId); + }); + }); initComponentVersioning(); } }; @@ -777,7 +872,7 @@ const EditorComponent = (props) => { }, []); }; - const appDefinitionChanged = async (newDefinition, opts = {}) => { + const appDefinitionChanged = useCallback(async (newDefinition, opts = {}) => { if (opts?.versionChanged) { setCurrentPageId(newDefinition.homePageId); return new Promise((resolve) => { @@ -789,7 +884,9 @@ const EditorComponent = (props) => { }); } let updatedAppDefinition; - const copyOfAppDefinition = JSON.parse(JSON.stringify(useEditorStore.getState().appDefinition)); + const appDefinition = useEditorStore.getState().appDefinition; + const copyOfAppDefinition = JSON.parse(JSON.stringify(appDefinition)); + const currentPageId = useEditorStore.getState().currentPageId; if (opts?.skipYmapUpdate && opts?.currentSessionId !== currentSessionId) { updatedAppDefinition = produce(copyOfAppDefinition, (draft) => { @@ -811,15 +908,6 @@ const EditorComponent = (props) => { const finalComponents = _.merge(draft?.pages[_currentPageId]?.components, currentPageComponents); draft.pages[_currentPageId].components = finalComponents; - // else if (opts?.componentAdding) { - // const currentPageComponents = newDefinition.pages[_currentPageId]?.components; - - // const finalComponents = _.merge(draft?.pages[_currentPageId]?.components, currentPageComponents); - - // draft.pages[_currentPageId].components = finalComponents; - // } else { - // Object.assign(draft, newDefinition); - // } }); } else { updatedAppDefinition = produce(copyOfAppDefinition, (draft) => { @@ -827,7 +915,6 @@ const EditorComponent = (props) => { if (opts?.containerChanges || opts?.componentDefinitionChanged) { const currentPageComponents = newDefinition.pages[currentPageId]?.components; - draft.pages[currentPageId].components = currentPageComponents; } @@ -847,6 +934,11 @@ const EditorComponent = (props) => { const diffPatches = diff(appDefinition, updatedAppDefinition); + // Component deletion provides an undefined key and escaping it to update the deletion in the database + if (!opts?.componentDeleted && !opts?.deletePageRequest) { + removeUndefined(diffPatches); + } + const inversePatches = diff(updatedAppDefinition, appDefinition); const shouldUpdate = !_.isEmpty(diffPatches) && !isEqual(appDefinitionDiff, diffPatches); @@ -861,6 +953,8 @@ const EditorComponent = (props) => { ) { setUndoStack((prev) => [...prev, undoPatches]); setOptsStack((prev) => ({ ...prev, undo: [...prev.undo, opts] })); + + updateState({ components: updatedAppDefinition.pages[currentPageId]?.components }); } updateAppDefinitionDiff(diffPatches); @@ -885,12 +979,19 @@ const EditorComponent = (props) => { updatingEditorStateInProcess = false; } + if (opts?.addNewPage) { + updatedAppDefinition.pages[currentPageId] = { + ...updatedAppDefinition.pages[currentPageId], + components: {}, + }; + } + updateEditorState({ isUpdatingEditorStateInProcess: updatingEditorStateInProcess, appDefinition: updatedAppDefinition, }); } - }; + }, []); const cloneEventsForClonedComponents = (componentUpdateDiff, operation, componentMap) => { function getKeyFromComponentMap(componentMap, newItem) { @@ -936,7 +1037,7 @@ const EditorComponent = (props) => { updateEditorState({ isUpdatingEditorStateInProcess: false, }); - } else if (!isEmpty(editingVersion)) { + } else if (!isEmpty(editingVersion) && !isEmpty(appDiffOptions) && appDefinition) { //! The computeComponentPropertyDiff function manages the calculation of differences in table columns by requiring complete column data. Without this complete data, the resulting JSON structure may be incorrect. const paramDiff = computeComponentPropertyDiff(appDefinitionDiff, appDefinition, appDiffOptions); const updateDiff = computeAppDiff(paramDiff, currentPageId, appDiffOptions, currentLayout); @@ -973,6 +1074,28 @@ const EditorComponent = (props) => { }); } + //Todo: Move this to a separate function or as a middleware of the api to createing a component + handleLowPriorityWork(() => { + if (updateDiff?.type === 'components' && updateDiff?.operation === 'create') { + const componentsFromCurrentState = getCurrentState().components; + const newComponentIds = Object.keys(updateDiff?.updateDiff); + const newComponentsExposedData = {}; + const componentEntityArray = []; + Object.values(componentsFromCurrentState).filter((component) => { + if (newComponentIds.includes(component.id)) { + const componentName = updateDiff?.updateDiff[component.id]?.name; + newComponentsExposedData[componentName] = component; + componentEntityArray.push({ id: component.id, name: componentName }); + } + }); + + useResolveStore.getState().actions.addEntitiesToMap(componentEntityArray); + useResolveStore.getState().actions.addAppSuggestions({ + components: newComponentsExposedData, + }); + } + }); + if ( updateDiff?.type === 'components' && updateDiff?.operation === 'delete' && @@ -988,6 +1111,7 @@ const EditorComponent = (props) => { events: updatedEvents, }); } + updateEditorState({ saveError: false, isUpdatingEditorStateInProcess: false, @@ -1000,11 +1124,6 @@ const EditorComponent = (props) => { }); toast.error('App could not save.'); }) - .finally(() => { - updateState({ - appDiffOptions: {}, - }); - }) .finally(() => { if (appDiffOptions?.cloningComponent) { cloneEventsForClonedComponents( @@ -1013,6 +1132,10 @@ const EditorComponent = (props) => { appDiffOptions?.cloningComponent ); } + + updateState({ + appDiffOptions: {}, + }); }); } updateEditorState({ @@ -1022,7 +1145,7 @@ const EditorComponent = (props) => { }; const realtimeSave = debounce(appDefinitionChanged, 100); - const autoSave = debounce(saveEditingVersion, 150); + const autoSave = saveEditingVersion; function handlePaths(prevPatch, path = [], appJSON) { const paths = [...path]; @@ -1139,8 +1262,7 @@ const EditorComponent = (props) => { } if (appDefinition?.pages[currentPageId]?.components[componentDefinition.id]) { - // Create a new copy of appDefinition with lodash's cloneDeep - const updatedAppDefinition = _.cloneDeep(appDefinition); + const updatedAppDefinition = JSON.parse(JSON.stringify(appDefinition)); // Update the component definition in the copy updatedAppDefinition.pages[currentPageId].components[componentDefinition.id].component = @@ -1156,9 +1278,11 @@ const EditorComponent = (props) => { } } }; - const removeComponent = (componentId) => { + const removeComponent = React.useCallback((componentId) => { if (!isVersionReleased) { - let newDefinition = cloneDeep(appDefinition); + const appDefinition = useEditorStore.getState().appDefinition; + let newDefinition = JSON.parse(JSON.stringify(appDefinition)); + const currentPageId = useEditorStore.getState().currentPageId; let childComponents = []; @@ -1187,31 +1311,54 @@ const EditorComponent = (props) => { icon: '🗑️', }); } + + const deleteFromMap = [componentId, ...childComponents]; + const deletedComponentNames = deleteFromMap.map((id) => { + return appDefinition.pages[currentPageId].components[id].component.name; + }); + appDefinitionChanged(newDefinition, { componentDefinitionChanged: true, componentDeleted: true, }); + + const allAppHints = useResolveStore.getState().suggestions.appHints ?? []; + const allHintsAssociatedWithQuery = []; + + if (allAppHints.length > 0) { + deletedComponentNames.forEach((componentName) => { + return allAppHints.forEach((suggestion) => { + if (suggestion?.hint.includes(componentName)) { + allHintsAssociatedWithQuery.push(suggestion.hint); + } + }); + }); + } + + useResolveStore.getState().actions.removeEntitiesFromMap(deleteFromMap); + useResolveStore.getState().actions.removeAppSuggestions(allHintsAssociatedWithQuery); } else { useAppVersionStore.getState().actions.enableReleasedVersionPopupState(); } - }; + }, []); const moveComponents = (direction) => { - const gridWidth = (1 * 100) / 43; // width of the canvas grid in percentage - const _appDefinition = _.cloneDeep(appDefinition); + const _appDefinition = JSON.parse(JSON.stringify(appDefinition)); let newComponents = _appDefinition?.pages[currentPageId].components; const selectedComponents = useEditorStore.getState()?.selectedComponents; - + const componentsIds = []; for (const selectedComponent of selectedComponents) { + componentsIds.push(selectedComponent.id); let top = newComponents[selectedComponent.id].layouts[currentLayout].top; let left = newComponents[selectedComponent.id].layouts[currentLayout].left; + const width = newComponents[selectedComponent.id]?.layouts[currentLayout]?.width; switch (direction) { case 'ArrowLeft': - left = left - gridWidth; + left = left - 1; break; case 'ArrowRight': - left = left + gridWidth; + left = left + 1; break; case 'ArrowDown': top = top + 10; @@ -1221,6 +1368,16 @@ const EditorComponent = (props) => { break; } + if (left < 0 || top < 0 || left + width > noOfGrids) { + return; + } + + const movedElement = document.getElementById(selectedComponent.id); + const parentElm = movedElement.closest('.real-canvas'); + if (selectedComponent?.component?.parent && parentElm.clientHeight < top + movedElement.clientHeight) { + return; + } + newComponents[selectedComponent.id].layouts[currentLayout].top = top; newComponents[selectedComponent.id].layouts[currentLayout].left = left; } @@ -1279,10 +1436,158 @@ const EditorComponent = (props) => { } }; + const onEditorLoad = (appJson, pageId, isPageSwitchOrVersionSwitch = false) => { + useCurrentStateStore.getState().actions.setEditorReady(true); + + const currentComponents = appJson?.pages?.[pageId]?.components; + + const referenceManager = useResolveStore.getState().referenceMapper; + + const newComponents = Object.keys(currentComponents).map((componentId) => { + const component = currentComponents[componentId]; + + if (isPageSwitchOrVersionSwitch || !referenceManager.get(componentId)) { + return { + id: componentId, + name: component.component.name, + }; + } + }); + + useResolveStore.getState().actions.addEntitiesToMap(newComponents); + }; + + const updateEntityReferences = (appJson, pageId) => { + const currentComponents = appJson?.pages?.[pageId]?.components; + const globalSettings = appJson['globalSettings']; + + let dataQueries = JSON.parse(JSON.stringify(useDataQueriesStore.getState().dataQueries)); + let allEvents = JSON.parse(JSON.stringify(useAppDataStore.getState().events)); + + const entittyReferencesInGlobalSettings = findAllEntityReferences(globalSettings, [])?.filter( + (entity) => entity && isValidUUID(entity) + ); + + const entityReferencesInComponentDefinitions = findAllEntityReferences(currentComponents, [])?.filter( + (entity) => entity && isValidUUID(entity) + ); + + const entityReferencesInQueryOptions = findAllEntityReferences(dataQueries, [])?.filter( + (entity) => entity && isValidUUID(entity) + ); + + const entityReferencesInEvents = findAllEntityReferences(allEvents, [])?.filter( + (entity) => entity && isValidUUID(entity) + ); + + const manager = useResolveStore.getState().referenceMapper; + + if (Array.isArray(entittyReferencesInGlobalSettings) && entittyReferencesInGlobalSettings?.length > 0) { + let newGlobalSettings = JSON.parse(JSON.stringify(globalSettings)); + entittyReferencesInGlobalSettings.forEach((entity) => { + const entityrefExists = manager.has(entity); + + if (entityrefExists) { + const value = manager.get(entity); + newGlobalSettings = dfs(newGlobalSettings, entity, value); + } + }); + + const newAppDefinition = produce(appJson, (draft) => { + draft.globalSettings = newGlobalSettings; + }); + + // Setting the canvas background to the editor store + setCanvasBackground({ + backgroundFxQuery: newGlobalSettings?.backgroundFxQuery, + canvasBackgroundColor: newGlobalSettings?.canvasBackgroundColor, + }); + + updateEditorState({ + isUpdatingEditorStateInProcess: false, + appDefinition: newAppDefinition, + }); + } + + if (Array.isArray(entityReferencesInComponentDefinitions) && entityReferencesInComponentDefinitions?.length > 0) { + let newComponentDefinition = JSON.parse(JSON.stringify(currentComponents)); + + entityReferencesInComponentDefinitions.forEach((entity) => { + const entityrefExists = manager.has(entity); + + if (entityrefExists) { + const value = manager.get(entity); + newComponentDefinition = dfs(newComponentDefinition, entity, value); + } + }); + + const appDefinition = useEditorStore.getState().appDefinition; + const newAppDefinition = produce(appDefinition, (draft) => { + draft.pages[pageId].components = newComponentDefinition; + }); + + handleLowPriorityWork(() => { + updateEditorState({ + isUpdatingEditorStateInProcess: false, + appDefinition: newAppDefinition, + }); + }); + } + + if (Array.isArray(entityReferencesInQueryOptions) && entityReferencesInQueryOptions?.length > 0) { + let newQueryOptions = {}; + dataQueries?.forEach((query) => { + newQueryOptions[query.id] = query.options; + ``; + }); + + entityReferencesInQueryOptions.forEach((entity) => { + const entityrefExists = manager.has(entity); + + if (entityrefExists) { + const value = manager.get(entity); + newQueryOptions = dfs(newQueryOptions, entity, value); + } + }); + + dataQueries = dataQueries.map((query) => { + const queryId = query.id; + const dqOptions = newQueryOptions[queryId]; + + return { + ...query, + options: dqOptions, + }; + }); + + useDataQueriesStore.getState().actions.setDataQueries(dataQueries, 'mappingUpdate'); + } + + if (Array.isArray(entityReferencesInEvents) && entityReferencesInEvents?.length > 0) { + let newEvents = JSON.parse(JSON.stringify(allEvents)); + + entityReferencesInEvents.forEach((entity) => { + const entityrefExists = manager.has(entity); + + if (entityrefExists) { + const value = manager.get(entity); + newEvents = dfs(newEvents, entity, value); + } + }); + + updateState({ + events: newEvents, + }); + } + }; + const removeComponents = () => { const selectedComponents = useEditorStore.getState()?.selectedComponents; + + if (selectedComponents.length === 0) return; + if (!isVersionReleased && selectedComponents?.length > 1) { - let newDefinition = cloneDeep(appDefinition); + let newDefinition = JSON.parse(JSON.stringify(appDefinition)); removeSelectedComponent(currentPageId, newDefinition, selectedComponents, appDefinitionChanged); const platform = navigator?.userAgentData?.platform || navigator?.platform || 'unknown'; @@ -1295,6 +1600,7 @@ const EditorComponent = (props) => { icon: '🗑️', }); } + updateEditorState({ selectedComponents: [] }); } else if (isVersionReleased) { useAppVersionStore.getState().actions.enableReleasedVersionPopupState(); } @@ -1377,7 +1683,7 @@ const EditorComponent = (props) => { }; const globals = { - ...currentState.globals, + ...getCurrentState().globals, }; useCurrentStateStore.getState().actions.setCurrentState({ globals, page }); }; @@ -1393,7 +1699,19 @@ const EditorComponent = (props) => { }); }; - const switchPage = (pageId, queryParams = []) => { + const switchPage = async (pageId, queryParams = []) => { + if (useEditorStore.getState().pageSwitchInProgress) { + toast('Please wait, page switch in progress', { + icon: '⚠️', + }); + + return; + } + + clearAllQueuedTasks(); + useEditorStore.getState().actions.setPageProgress(true); + useCurrentStateStore.getState().actions.setEditorReady(false); + useResolveStore.getState().actions.resetStore(); // This are fetched from store to handle runQueriesOnAppLoad const currentPageId = useEditorStore.getState().currentPageId; const appDefinition = useEditorStore.getState().appDefinition; @@ -1417,16 +1735,29 @@ const EditorComponent = (props) => { const queryParamsString = queryParams.map(([key, value]) => `${key}=${value}`).join('&'); const globals = { - ...currentState.globals, + ...getCurrentState().globals, urlparams: JSON.parse(JSON.stringify(queryString.parse(queryParamsString))), }; + useCurrentStateStore.getState().actions.setCurrentState({ globals, page }); + useResolveStore.getState().actions.pageSwitched(true); + + await onEditorLoad(appDefinition, pageId, true); + updateEntityReferences(appDefinition, pageId); + handleLowPriorityWork(() => { + useResolveStore.getState().actions.updateJSHints(); + }); setCurrentPageId(pageId); - const currentPageEvents = events.filter((event) => event.target === 'page' && event.sourceId === page.id); + const currentPageEvents = useAppDataStore + .getState() + .events.filter((event) => event.target === 'page' && event.sourceId === page.id); handleEvent('onPageLoad', currentPageEvents); + handleLowPriorityWork(() => { + useEditorStore.getState().actions.setPageProgress(false); + }, 100); }; const deletePageRequest = (pageId, isHomePage = false, pageName = '') => { @@ -1491,9 +1822,7 @@ const EditorComponent = (props) => { isUpdatingEditorStateInProcess: true, }); - const copyOfAppDefinition = JSON.parse(JSON.stringify(appDefinition)); - - const newAppDefinition = _.cloneDeep(copyOfAppDefinition); + const newAppDefinition = JSON.parse(JSON.stringify(appDefinition)); newAppDefinition.pages[pageId].disabled = isDisabled ?? false; @@ -1503,14 +1832,27 @@ const EditorComponent = (props) => { }); }; + const turnOffAutoComputeLayout = ({ pageId, autoComputeLayout }) => { + updateEditorState({ + isUpdatingEditorStateInProcess: true, + }); + + const newAppDefinition = JSON.parse(JSON.stringify(appDefinition)); + + newAppDefinition.pages[pageId].autoComputeLayout = autoComputeLayout ?? false; + + switchPage(pageId); + appDefinitionChanged(newAppDefinition, { + pageDefinitionChanged: true, + }); + }; + const hidePage = (pageId) => { updateEditorState({ isUpdatingEditorStateInProcess: true, }); - const copyOfAppDefinition = JSON.parse(JSON.stringify(appDefinition)); - - const newAppDefinition = _.cloneDeep(copyOfAppDefinition); + const newAppDefinition = JSON.parse(JSON.stringify(appDefinition)); newAppDefinition.pages[pageId].hidden = true; @@ -1525,9 +1867,7 @@ const EditorComponent = (props) => { isUpdatingEditorStateInProcess: true, }); - const copyOfAppDefinition = JSON.parse(JSON.stringify(appDefinition)); - - const newAppDefinition = _.cloneDeep(copyOfAppDefinition); + const newAppDefinition = JSON.parse(JSON.stringify(appDefinition)); newAppDefinition.pages[pageId].hidden = false; switchPage(pageId); @@ -1544,7 +1884,7 @@ const EditorComponent = (props) => { const copyOfAppDefinition = JSON.parse(JSON.stringify(appDefinition)); const pages = data.pages.reduce((acc, page) => { - const currentComponents = buildComponentMetaDefinition(_.cloneDeep(page?.components)); + const currentComponents = buildComponentMetaDefinition(JSON.parse(JSON.stringify(page?.components))); page.components = currentComponents; @@ -1573,9 +1913,7 @@ const EditorComponent = (props) => { isUpdatingEditorStateInProcess: true, }); - const copyOfAppDefinition = JSON.parse(JSON.stringify(appDefinition)); - - const newAppDefinition = _.cloneDeep(copyOfAppDefinition); + const newAppDefinition = JSON.parse(JSON.stringify(appDefinition)); newAppDefinition.homePageId = pageId; @@ -1603,7 +1941,7 @@ const EditorComponent = (props) => { return; } - const newDefinition = _.cloneDeep(copyOfAppDefinition); + const newDefinition = JSON.parse(JSON.stringify(appDefinition)); newDefinition.pages[pageId].handle = newHandle; @@ -1616,7 +1954,6 @@ const EditorComponent = (props) => { }; const updateOnSortingPages = (newSortedPages) => { - const copyOfAppDefinition = JSON.parse(JSON.stringify(appDefinition)); const pagesObj = newSortedPages.reduce((acc, page, index) => { acc[page.id] = { ...page, @@ -1625,7 +1962,7 @@ const EditorComponent = (props) => { return acc; }, {}); - const newAppDefinition = _.cloneDeep(copyOfAppDefinition); + const newAppDefinition = JSON.parse(JSON.stringify(appDefinition)); newAppDefinition.pages = pagesObj; @@ -1636,8 +1973,7 @@ const EditorComponent = (props) => { }; const showHideViewerNavigation = () => { - const copyOfAppDefinition = JSON.parse(JSON.stringify(appDefinition)); - const newAppDefinition = _.cloneDeep(copyOfAppDefinition); + const newAppDefinition = JSON.parse(JSON.stringify(appDefinition)); newAppDefinition.showViewerNavigation = !newAppDefinition.showViewerNavigation; @@ -1646,6 +1982,16 @@ const EditorComponent = (props) => { }); }; + async function turnOffAutoLayout() { + const result = await confirm( + 'Once Auto Layout is disabled, you wont be able to turn if back on and the mobile layout won’t automatically align with desktop changes', + 'Turn off Auto Layout' + ); + if (result) { + turnOffAutoComputeLayout({ pageId: currentPageId, autoComputeLayout: false }); + } + } + const handleCanvasContainerMouseUp = (e) => { if ( ['real-canvas', 'modal'].includes(e.target.className) && @@ -1655,272 +2001,268 @@ const EditorComponent = (props) => { } }; - const deviceWindowWidth = 450; + const isEditorReady = useCurrentStateStore((state) => state.isEditorReady); - if (isLoading) { + if (isLoading && !isEditorReady) { return ( - - - - - - - - {Array.from(Array(4)).map((_item, index) => ( - - ))} - - - - - - - - - + ); } - return ( - - 0} - message={`Do you want to run this query - ${queryConfirmationList[0]?.queryName}?`} - onConfirm={(queryConfirmationData) => onQueryConfirmOrCancel(getEditorRef(), queryConfirmationData, true)} - onCancel={() => onQueryConfirmOrCancel(getEditorRef(), queryConfirmationList[0])} - queryConfirmationData={queryConfirmationList[0]} - darkMode={props.darkMode} - key={queryConfirmationList[0]?.queryName} - /> - executeDeletepageRequest()} - onCancel={() => cancelDeletePageRequest()} - darkMode={props.darkMode} - /> - {isVersionReleased && } - - - - - handleRunQuery(queryId, queryName)} - ref={dataSourceModalRef} - currentPageId={currentPageId} - addNewPage={addNewPage} - switchPage={switchPage} - deletePage={deletePageRequest} - renamePage={renamePage} - clonePage={clonePage} - hidePage={hidePage} - unHidePage={unHidePage} - disableEnablePage={disableEnablePage} - updateHomePage={updateHomePage} - updatePageHandle={updatePageHandle} - showHideViewerNavigationControls={showHideViewerNavigation} - updateOnSortingPages={updateOnSortingPages} - setEditorMarginLeft={handleEditorMarginLeftChange} - isMaintenanceOn={isMaintenanceOn} - toggleAppMaintenance={toggleAppMaintenance} - /> - {!showComments && ( - - )} - - { - selectionRef.current.checkScroll(); - }} - > - - - {config.ENABLE_MULTIPLAYER_EDITING && ( - - )} - {isLoading && ( - - - - - - - + const canvasWidth = getCanvasWidth() ?? useEditorStore.getState().editorCanvasWidth; + if (typeof canvasWidth === 'number' && canvasWidth !== useEditorStore.getState().editorCanvasWidth) { + setCanvasWidth(canvasWidth); + } + + return ( + + + 0} + message={`Do you want to run this query - ${queryConfirmationList[0]?.queryName}?`} + onConfirm={(queryConfirmationData) => onQueryConfirmOrCancel(getEditorRef(), queryConfirmationData, true)} + onCancel={() => onQueryConfirmOrCancel(getEditorRef(), queryConfirmationList[0])} + queryConfirmationData={queryConfirmationList[0]} + darkMode={props.darkMode} + key={queryConfirmationList[0]?.queryName} + /> + executeDeletepageRequest()} + onCancel={() => cancelDeletePageRequest()} + darkMode={props.darkMode} + /> + {isVersionReleased && } + + + + + handleRunQuery(queryId, queryName)} + ref={dataSourceModalRef} + currentPageId={currentPageId} + addNewPage={addNewPage} + switchPage={switchPage} + deletePage={deletePageRequest} + renamePage={renamePage} + clonePage={clonePage} + hidePage={hidePage} + unHidePage={unHidePage} + disableEnablePage={disableEnablePage} + updateHomePage={updateHomePage} + updatePageHandle={updatePageHandle} + showHideViewerNavigationControls={showHideViewerNavigation} + updateOnSortingPages={updateOnSortingPages} + setEditorMarginLeft={handleEditorMarginLeftChange} + isMaintenanceOn={isMaintenanceOn} + toggleAppMaintenance={toggleAppMaintenance} + /> + {!showComments && ( + + )} + + { + selectionRef.current?.checkScroll(); + }} + > + + + {config.ENABLE_MULTIPLAYER_EDITING && ( + + )} + {isLoading && ( + + + + + + + + + {Array.from(Array(4)).map((_item, index) => ( + + ))} + + + + + - {Array.from(Array(4)).map((_item, index) => ( - - ))} - - - - - - - )} - {defaultComponentStateComputed && ( - - - setIsDragging(isDragging)} - /> - - )} + )} + {defaultComponentStateComputed && ( + + + setIsDragging(isDragging)} + /> + + )} + + + + - - - - - - - + + + + + } + widgetManagerTab={ + - - } - widgetManagerTab={ - - } - allComponents={appDefinition.pages[currentPageId]?.components} - /> - - {config.COMMENT_FEATURE_ENABLE && showComments && ( - - + } + allComponents={appDefinition.pages[currentPageId]?.components} + /> - )} - - - - + {config.COMMENT_FEATURE_ENABLE && showComments && ( + + + + )} + + + + + + ); }; diff --git a/frontend/src/Editor/EditorSelecto.jsx b/frontend/src/Editor/EditorSelecto.jsx index 738ec2e52e..b7c0d6495f 100644 --- a/frontend/src/Editor/EditorSelecto.jsx +++ b/frontend/src/Editor/EditorSelecto.jsx @@ -1,33 +1,28 @@ -import React, { useCallback, memo, useContext } from 'react'; +import React, { useCallback, memo } from 'react'; import Selecto from 'react-selecto'; -import { useEditorStore, EMPTY_ARRAY } from '@/_stores/editorStore'; +import { useEditorStore } from '@/_stores/editorStore'; import { shallow } from 'zustand/shallow'; +import { setMultipleComponentsSelected } from '@/_helpers/appUtils'; -const EditorSelecto = ({ - selectionRef, - canvasContainerRef, - currentPageId, - setSelectedComponent, - appDefinition, - selectionDragRef, -}) => { - const { setSelectionInProgress, setSelectedComponents, scrollOptions } = useEditorStore( +const EditorSelecto = ({ selectionRef, canvasContainerRef, setSelectedComponent, selectionDragRef }) => { + const { setSelectionInProgress, currentPageId, appDefinition } = useEditorStore( (state) => ({ setSelectionInProgress: state?.actions?.setSelectionInProgress, - setSelectedComponents: state?.actions?.setSelectedComponents, - scrollOptions: state.scrollOptions, + currentPageId: state?.currentPageId, + appDefinition: state?.appDefinition, }), shallow ); - const onAreaSelectionStart = useCallback( - (e) => { - const isMultiSelect = e.inputEvent.shiftKey || useEditorStore.getState().selectedComponents.length > 0; - setSelectionInProgress(true); - setSelectedComponents([...(isMultiSelect ? useEditorStore.getState().selectedComponents : EMPTY_ARRAY)]); - }, - [setSelectionInProgress, setSelectedComponents] - ); + const scrollOptions = { + container: canvasContainerRef.current, + throttleTime: 30, + threshold: 0, + }; + + const onAreaSelectionStart = useCallback(() => { + setSelectionInProgress(true); + }, [setSelectionInProgress]); const onAreaSelection = useCallback((e) => { e.added.forEach((el) => { @@ -38,17 +33,31 @@ const EditorSelecto = ({ el.classList.remove('resizer-select'); }); } + e.removed.forEach((el) => { + el.classList.remove('resizer-select'); + }); }, []); const onAreaSelectionEnd = useCallback( (e) => { setSelectionInProgress(false); + const selectedItems = []; e.selected.forEach((el, index) => { const id = el.getAttribute('widgetid'); const component = appDefinition.pages[currentPageId].components[id].component; const isMultiSelect = e.inputEvent.shiftKey || (!e.isClick && index != 0); - setSelectedComponent(id, component, isMultiSelect); + if (e.selected.length > 0 && !e.isClick) { + selectedItems.push({ + id, + component, + }); + } else { + setSelectedComponent(id, component, isMultiSelect); + } }); + if (selectedItems.length > 0) { + setMultipleComponentsSelected(selectedItems); + } }, [appDefinition, currentPageId, setSelectedComponent, setSelectionInProgress] ); @@ -80,24 +89,26 @@ const EditorSelecto = ({ }; return ( - { - canvasContainerRef.current.scrollBy(e.direction[0] * 10, e.direction[1] * 10); - }} - /> + <> + { + canvasContainerRef.current.scrollBy(e.direction[0] * 10, e.direction[1] * 10); + }} + /> + > ); }; diff --git a/frontend/src/Editor/GhostWidget.jsx b/frontend/src/Editor/GhostWidget.jsx new file mode 100644 index 0000000000..5ca519bea5 --- /dev/null +++ b/frontend/src/Editor/GhostWidget.jsx @@ -0,0 +1,27 @@ +import React from 'react'; +import { isEmpty } from 'lodash'; + +export default function GhostWidget({ layouts, currentLayout, canvasWidth, gridWidth }) { + let layoutStyle = {}; + if (!isEmpty(layouts?.[currentLayout] || layouts?.['desktop'])) { + const layoutData = layouts?.[currentLayout] || layouts?.['desktop']; + let width = (canvasWidth * layoutData.width) / 43; + layoutStyle = { + width: width + 'px', + height: layoutData.height + 'px', + transform: `translate(${layoutData.left * gridWidth}px, ${layoutData.top}px)`, + }; + } + return ( + + ); +} diff --git a/frontend/src/Editor/Header/EnvironmentManager/EnvironmentsManager.jsx b/frontend/src/Editor/Header/EnvironmentManager/EnvironmentsManager.jsx new file mode 100644 index 0000000000..73571d6320 --- /dev/null +++ b/frontend/src/Editor/Header/EnvironmentManager/EnvironmentsManager.jsx @@ -0,0 +1,35 @@ +import { useEnvironmentsAndVersionsStore } from '@/_stores/environmentsAndVersionsStore'; +import React, { useEffect } from 'react'; +import { shallow } from 'zustand/shallow'; +import { useAppVersionStore } from '@/_stores/appVersionStore'; + +const EnvironmentManager = () => { + const { editingVersionId } = useAppVersionStore( + (state) => ({ + editingVersionId: state?.editingVersion?.id, + }), + shallow + ); + const { init, setEnvironmentDropdownStatus, initializedEnvironmentDropdown } = useEnvironmentsAndVersionsStore( + (state) => ({ + initializedEnvironmentDropdown: state.initializedEnvironmentDropdown, + init: state.actions.init, + setEnvironmentDropdownStatus: state.actions.setEnvironmentDropdownStatus, + }), + shallow + ); + + useEffect(() => { + !initializedEnvironmentDropdown && initComponent(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + const initComponent = async () => { + await init(editingVersionId); + setEnvironmentDropdownStatus(true); + }; + + return <>>; +}; + +export default EnvironmentManager; diff --git a/frontend/src/Editor/Header/EnvironmentManager/index.js b/frontend/src/Editor/Header/EnvironmentManager/index.js new file mode 100644 index 0000000000..34f253383a --- /dev/null +++ b/frontend/src/Editor/Header/EnvironmentManager/index.js @@ -0,0 +1,2 @@ +import EnvironmentManager from './EnvironmentsManager'; +export default EnvironmentManager; diff --git a/frontend/src/Editor/Header/GlobalSettings.jsx b/frontend/src/Editor/Header/GlobalSettings.jsx index 170c6183bd..1d513c9809 100644 --- a/frontend/src/Editor/Header/GlobalSettings.jsx +++ b/frontend/src/Editor/Header/GlobalSettings.jsx @@ -4,7 +4,6 @@ import { SketchPicker } from 'react-color'; import { Confirm } from '../Viewer/Confirm'; import { HeaderSection } from '@/_ui/LeftSidebar'; import FxButton from '../CodeBuilder/Elements/FxButton'; -import { CodeHinter } from '../CodeBuilder/CodeHinter'; import { resolveReferences, validateName, getWorkspaceId } from '@/_helpers/utils'; import { useTranslation } from 'react-i18next'; import _ from 'lodash'; @@ -15,6 +14,9 @@ import { useAppVersionStore } from '@/_stores/appVersionStore'; import { shallow } from 'zustand/shallow'; import { ButtonSolid } from '@/_ui/AppButton/AppButton'; import { useAppDataActions, useAppInfo } from '@/_stores/appDataStore'; +import { useEditorStore } from '@/_stores/editorStore'; +import CodeHinter from '../CodeEditor'; +import { useCurrentState } from '@/_stores/currentStateStore'; import AppModeToggle from './AppModeToggle'; export const GlobalSettings = ({ @@ -23,11 +25,18 @@ export const GlobalSettings = ({ darkMode, toggleAppMaintenance, isMaintenanceOn, - backgroundFxQuery, - realState, }) => { + const realState = useCurrentState(); const { t } = useTranslation(); - const { hideHeader, canvasMaxWidth, canvasMaxWidthType, canvasBackgroundColor } = globalSettings; + + const { canvasBackgroundColor, backgroundFxQuery } = useEditorStore( + (state) => ({ + canvasBackgroundColor: state.canvasBackground?.canvasBackgroundColor, + backgroundFxQuery: state.canvasBackground?.backgroundFxQuery, + }), + shallow + ); + const { hideHeader, canvasMaxWidth, canvasMaxWidthType } = globalSettings; const [showPicker, setShowPicker] = useState(false); const [forceCodeBox, setForceCodeBox] = useState(true); const [showConfirmation, setConfirmationShow] = useState(false); @@ -314,9 +323,8 @@ export const GlobalSettings = ({ onChangeComplete={(color) => { const options = { canvasBackgroundColor: [color.hex, color.rgb], - backgroundFxQuery: color.hex, + backgroundFxQuery: '', }; - globalSettingsChanged(options); }} /> @@ -352,11 +360,8 @@ export const GlobalSettings = ({ {!forceCodeBox && ( { diff --git a/frontend/src/Editor/Header/HeaderActions.jsx b/frontend/src/Editor/Header/HeaderActions.jsx index 6b8535252b..9692215539 100644 --- a/frontend/src/Editor/Header/HeaderActions.jsx +++ b/frontend/src/Editor/Header/HeaderActions.jsx @@ -22,6 +22,14 @@ function HeaderActions({ }), shallow ); + + const clearSelectionBorder = () => { + const selectedElems = document.getElementsByClassName('resizer-select'); + for (const element of selectedElems) { + element.classList.remove('resizer-select'); + } + }; + return ( {showToggleLayoutBtn && ( @@ -43,7 +51,10 @@ function HeaderActions({ type="button" aria-selected="true" tabIndex="0" - onClick={() => toggleCurrentLayout('desktop')} + onClick={() => { + clearSelectionBorder(); + toggleCurrentLayout('desktop'); + }} data-cy={`button-change-layout-to-desktop`} > { + clearSelectionBorder(); toggleCurrentLayout('mobile'); }} data-cy={`button-change-layout-to-mobile`} diff --git a/frontend/src/Editor/ManageAppUsers.jsx b/frontend/src/Editor/Header/RightTopHeaderButtons/ManageAppUsers.jsx similarity index 95% rename from frontend/src/Editor/ManageAppUsers.jsx rename to frontend/src/Editor/Header/RightTopHeaderButtons/ManageAppUsers.jsx index 14ae9e74c1..a40f7d0f76 100644 --- a/frontend/src/Editor/ManageAppUsers.jsx +++ b/frontend/src/Editor/Header/RightTopHeaderButtons/ManageAppUsers.jsx @@ -23,7 +23,6 @@ class ManageAppUsersComponent extends React.Component { this.state = { showModal: false, appId: null, - isLoading: true, isSlugVerificationInProgress: false, addingUser: false, newUser: {}, @@ -51,26 +50,9 @@ class ManageAppUsersComponent extends React.Component { componentDidMount() { const appId = this.props.appId; - this.fetchAppUsers(appId); this.setState({ appId }); } - fetchAppUsers = (appId) => { - appsService - .getAppUsers(appId) - .then((data) => - this.setState({ - users: data.users, - isLoading: false, - }) - ) - .catch((error) => { - this.setState({ isLoading: false }); - const errorMessage = error?.message || 'Something went wrong'; - toast.error(errorMessage); - }); - }; - hideModal = () => { this.setState({ showModal: false, @@ -95,7 +77,6 @@ class ManageAppUsersComponent extends React.Component { .then(() => { this.setState({ addingUser: false, newUser: {} }); toast.success('Added user successfully'); - this.fetchAppUsers(this.state.appId); }) .catch(({ error }) => { this.setState({ addingUser: false }); @@ -189,7 +170,7 @@ class ManageAppUsersComponent extends React.Component { }; render() { - const { isLoading, appId, isSlugVerificationInProgress, newSlug, isSlugUpdated } = this.state; + const { appId, isSlugVerificationInProgress, newSlug, isSlugUpdated } = this.state; const appLink = `${getHostURL()}/applications/`; const shareableLink = appLink + (this.props.slug || appId); @@ -237,11 +218,7 @@ class ManageAppUsersComponent extends React.Component { - {isLoading ? ( - - - - ) : ( + { @@ -401,7 +378,7 @@ class ManageAppUsersComponent extends React.Component { )} - )} + } diff --git a/frontend/src/Editor/Header/RightTopHeaderButtons/PromoteVersionButton.jsx b/frontend/src/Editor/Header/RightTopHeaderButtons/PromoteVersionButton.jsx new file mode 100644 index 0000000000..57201589d4 --- /dev/null +++ b/frontend/src/Editor/Header/RightTopHeaderButtons/PromoteVersionButton.jsx @@ -0,0 +1,7 @@ +import React from 'react'; + +const PromoteVersionButton = () => { + return <>>; +}; + +export default PromoteVersionButton; diff --git a/frontend/src/Editor/ReleaseVersionButton.jsx b/frontend/src/Editor/Header/RightTopHeaderButtons/ReleaseVersionButton.jsx similarity index 88% rename from frontend/src/Editor/ReleaseVersionButton.jsx rename to frontend/src/Editor/Header/RightTopHeaderButtons/ReleaseVersionButton.jsx index 04973bbd03..198bf3926f 100644 --- a/frontend/src/Editor/ReleaseVersionButton.jsx +++ b/frontend/src/Editor/Header/RightTopHeaderButtons/ReleaseVersionButton.jsx @@ -8,7 +8,7 @@ import { ConfirmDialog } from '@/_components/ConfirmDialog'; import { shallow } from 'zustand/shallow'; import { ButtonSolid } from '@/_ui/AppButton/AppButton'; -export const ReleaseVersionButton = function DeployVersionButton({ appId, appName, fetchApp, onVersionRelease }) { +export const ReleaseVersionButton = function DeployVersionButton({ onVersionRelease }) { const [isReleasing, setIsReleasing] = useState(false); const { isVersionReleased, editingVersion } = useAppVersionStore( (state) => ({ @@ -24,17 +24,15 @@ export const ReleaseVersionButton = function DeployVersionButton({ appId, appNam setShowPageDeletionConfirmation(false); setIsReleasing(true); + const { id: versionToBeReleased, name, app_id, appId } = editingVersion; + appsService - .saveApp(appId, { - name: appName, - current_version_id: editingVersion.id, - }) + .releaseVersion(app_id || appId, versionToBeReleased) .then(() => { - toast(`Version ${editingVersion.name} released`, { + toast(`Version ${name} released`, { icon: '🚀', }); - fetchApp && fetchApp(); - onVersionRelease(editingVersion.id); + onVersionRelease(versionToBeReleased); setIsReleasing(false); }) .catch((_error) => { diff --git a/frontend/src/Editor/Header/RightTopHeaderButtons/RightTopHeaderButtons.jsx b/frontend/src/Editor/Header/RightTopHeaderButtons/RightTopHeaderButtons.jsx new file mode 100644 index 0000000000..95c399f194 --- /dev/null +++ b/frontend/src/Editor/Header/RightTopHeaderButtons/RightTopHeaderButtons.jsx @@ -0,0 +1,101 @@ +import React, { useEffect } from 'react'; +import { ReleaseVersionButton } from './ReleaseVersionButton'; +import { Link } from 'react-router-dom'; +import { useAppInfo, useAppDataActions } from '@/_stores/appDataStore'; +import { ManageAppUsers } from './ManageAppUsers'; +import { useAppVersionStore } from '@/_stores/appVersionStore'; +import { shallow } from 'zustand/shallow'; +import queryString from 'query-string'; +import { isEmpty } from 'lodash'; +import { useCurrentStateStore } from '@/_stores/currentStateStore'; +import SolidIcon from '@/_ui/Icon/SolidIcons'; +import { useEnvironmentsAndVersionsStore } from '@/_stores/environmentsAndVersionsStore'; +import PromoteVersionButton from './PromoteVersionButton'; + +const RightTopHeaderButtons = ({ onVersionRelease }) => { + return ( + + + + + + + ); +}; + +const PreviewAndShareIcons = () => { + const { appId, app, slug, isPublic, appVersionPreviewLink, currentVersionId } = useAppInfo(); + const { setAppPreviewLink } = useAppDataActions(); + const { isVersionReleased, editingVersion } = useAppVersionStore( + (state) => ({ + isVersionReleased: state.isVersionReleased, + editingVersion: state.editingVersion, + }), + shallow + ); + const { pageHandle } = useCurrentStateStore( + (state) => ({ + pageHandle: state?.page?.handle, + }), + shallow + ); + const darkMode = localStorage.getItem('darkMode') === 'true'; + + useEffect(() => { + const previewQuery = queryString.stringify({ version: editingVersion.name }); + const appVersionPreviewLink = editingVersion.id + ? `/applications/${slug || appId}/${pageHandle}${!isEmpty(previewQuery) ? `?${previewQuery}` : ''}` + : ''; + setAppPreviewLink(appVersionPreviewLink); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [slug, currentVersionId, editingVersion]); + + return ( + + + {appId && ( + + )} + + + + + + + + ); +}; + +const PromoteAndReleaseButton = ({ onVersionRelease }) => { + const { shouldRenderPromoteButton, shouldRenderReleaseButton } = useEnvironmentsAndVersionsStore( + (state) => ({ + shouldRenderPromoteButton: state.shouldRenderPromoteButton, + shouldRenderReleaseButton: state.shouldRenderReleaseButton, + }), + shallow + ); + + return ( + + {shouldRenderPromoteButton && } + {shouldRenderReleaseButton && } + + ); +}; + +export default RightTopHeaderButtons; diff --git a/frontend/src/Editor/Header/RightTopHeaderButtons/index.js b/frontend/src/Editor/Header/RightTopHeaderButtons/index.js new file mode 100644 index 0000000000..5d3d19228f --- /dev/null +++ b/frontend/src/Editor/Header/RightTopHeaderButtons/index.js @@ -0,0 +1,2 @@ +import RightTopHeaderButtons from './RightTopHeaderButtons'; +export default RightTopHeaderButtons; diff --git a/frontend/src/Editor/Header/index.js b/frontend/src/Editor/Header/index.js index d155e1b884..33a0d4c05c 100644 --- a/frontend/src/Editor/Header/index.js +++ b/frontend/src/Editor/Header/index.js @@ -1,11 +1,8 @@ import React, { useEffect } from 'react'; -import { Link } from 'react-router-dom'; import EditAppName from './EditAppName'; import HeaderActions from './HeaderActions'; import RealtimeAvatars from '../RealtimeAvatars'; import { AppVersionsManager } from '@/Editor/AppVersionsManager/AppVersionsManager'; -import { ManageAppUsers } from '../ManageAppUsers'; -import { ReleaseVersionButton } from '../ReleaseVersionButton'; import cx from 'classnames'; import config from 'config'; // eslint-disable-next-line import/no-unresolved @@ -18,6 +15,8 @@ import SolidIcon from '@/_ui/Icon/SolidIcons'; import queryString from 'query-string'; import { isEmpty } from 'lodash'; import LogoNavDropdown from '@/_components/LogoNavDropdown'; +import RightTopHeaderButtons from './RightTopHeaderButtons'; +import EnvironmentManager from './EnvironmentManager'; export default function EditorHeader({ M, @@ -29,14 +28,12 @@ export default function EditorHeader({ onNameChanged, setAppDefinitionFromVersion, onVersionRelease, - saveEditingVersion, - onVersionDelete, slug, darkMode, }) { const currentUser = useCurrentUser(); - const { isSaving, appId, appName, app, isPublic, appVersionPreviewLink, currentVersionId } = useAppInfo(); + const { isSaving, appId, appName, isPublic, currentVersionId } = useAppInfo(); const { setAppPreviewLink } = useAppDataActions(); const { isVersionReleased, editingVersion } = useAppVersionStore( (state) => ({ @@ -78,8 +75,6 @@ export default function EditorHeader({ // eslint-disable-next-line react-hooks/exhaustive-deps }, [slug, currentVersionId, editingVersion]); - const shouldRenderReleaseButton = !!app?.id; - return ( @@ -148,62 +143,18 @@ export default function EditorHeader({ + + {editingVersion && ( )} - - - - - {appId && ( - - )} - - - - - - - - - {shouldRenderReleaseButton && ( - - - - )} - - + diff --git a/frontend/src/Editor/Inspector/ActionConfigurationPanels/GotoApp.jsx b/frontend/src/Editor/Inspector/ActionConfigurationPanels/GotoApp.jsx index d42ebee133..680714b0d6 100644 --- a/frontend/src/Editor/Inspector/ActionConfigurationPanels/GotoApp.jsx +++ b/frontend/src/Editor/Inspector/ActionConfigurationPanels/GotoApp.jsx @@ -1,10 +1,13 @@ import React, { useState, useEffect } from 'react'; import Select from '@/_ui/Select'; import defaultStyles from '@/_ui/Select/styles'; -import { CodeHinter } from '../../CodeBuilder/CodeHinter'; import { useTranslation } from 'react-i18next'; +import CodeHinter from '@/Editor/CodeEditor'; export function GotoApp({ getAllApps, event, handlerChanged, eventIndex, darkMode }) { + const [isLoading, setIsLoading] = useState(true); + const [appOptions, setAppOptions] = useState([]); + const queryParamChangeHandler = (index, key, value) => { event.queryParams[index][key] = value; handlerChanged(eventIndex, 'queryParams', event.queryParams); @@ -37,6 +40,17 @@ export function GotoApp({ getAllApps, event, handlerChanged, eventIndex, darkMod } }); + useEffect(() => { + getAllApps() + .then((apps) => { + setAppOptions(apps); + }) + .finally(() => { + setIsLoading(false); + }); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + const styles = { ...defaultStyles(darkMode), menuPortal: (provided) => ({ ...provided, zIndex: 9999 }), @@ -49,12 +63,14 @@ export function GotoApp({ getAllApps, event, handlerChanged, eventIndex, darkMod App { handlerChanged(eventIndex, 'slug', value); }} + isDisabled={isLoading} + isLoading={isLoading} placeholder={t('globals.select', 'Select') + '...'} styles={styles} useMenuPortal={false} @@ -69,18 +85,16 @@ export function GotoApp({ getAllApps, event, handlerChanged, eventIndex, darkMod queryParamChangeHandler(index, 0, value)} - mode="javascript" - height={30} /> queryParamChangeHandler(index, 1, value)} - mode="javascript" - height={30} /> deleteQueryParam(index)}> diff --git a/frontend/src/Editor/Inspector/ActionConfigurationPanels/RunjsParamters.jsx b/frontend/src/Editor/Inspector/ActionConfigurationPanels/RunjsParamters.jsx index c510c10017..14b024bb78 100644 --- a/frontend/src/Editor/Inspector/ActionConfigurationPanels/RunjsParamters.jsx +++ b/frontend/src/Editor/Inspector/ActionConfigurationPanels/RunjsParamters.jsx @@ -1,7 +1,7 @@ import React from 'react'; -import { CodeHinter } from '@/Editor/CodeBuilder/CodeHinter'; import { isEmpty } from 'lodash'; import { useDataQueries } from '@/_stores/dataQueriesStore'; +import CodeHinter from '@/Editor/CodeEditor'; function RunjsParameters({ event, darkMode, index, handlerChanged }) { const dataQueries = useDataQueries(); @@ -27,10 +27,11 @@ function RunjsParameters({ event, darkMode, index, handlerChanged }) { {param.name} handleChange(value, param)} usePortalEditor={false} + componentName="RunJS Params" /> diff --git a/frontend/src/Editor/Inspector/ActionConfigurationPanels/SwitchPage.jsx b/frontend/src/Editor/Inspector/ActionConfigurationPanels/SwitchPage.jsx index ac22d47c6f..4c136dac47 100644 --- a/frontend/src/Editor/Inspector/ActionConfigurationPanels/SwitchPage.jsx +++ b/frontend/src/Editor/Inspector/ActionConfigurationPanels/SwitchPage.jsx @@ -1,8 +1,8 @@ import React, { useState, useEffect } from 'react'; import Select from '@/_ui/Select'; import defaultStyles from '@/_ui/Select/styles'; -import { CodeHinter } from '../../CodeBuilder/CodeHinter'; import { useTranslation } from 'react-i18next'; +import CodeHinter from '@/Editor/CodeEditor'; export function SwitchPage({ getPages, event, handlerChanged, eventIndex, darkMode }) { const queryParamChangeHandler = (index, key, value) => { @@ -69,9 +69,9 @@ export function SwitchPage({ getPages, event, handlerChanged, eventIndex, darkMo queryParamChangeHandler(index, 0, value)} - mode="javascript" className="form-control codehinter-query-editor-input" height={30} cyLabel={`event-query-param-key`} @@ -79,9 +79,9 @@ export function SwitchPage({ getPages, event, handlerChanged, eventIndex, darkMo queryParamChangeHandler(index, 1, value)} - mode="javascript" className="form-control codehinter-query-editor-input" height={30} cyLabel={`event-query-param-value`} diff --git a/frontend/src/Editor/Inspector/Components/Chart.jsx b/frontend/src/Editor/Inspector/Components/Chart.jsx index e18efd41a8..fd657bf17c 100644 --- a/frontend/src/Editor/Inspector/Components/Chart.jsx +++ b/frontend/src/Editor/Inspector/Components/Chart.jsx @@ -1,9 +1,9 @@ import React from 'react'; import { renderElement } from '../Utils'; -import { CodeHinter } from '../../CodeBuilder/CodeHinter'; import { EventManager } from '@/Editor/Inspector/EventManager'; import Accordion from '@/_ui/Accordion'; -import { resolveReferences } from '@/_helpers/utils'; +import { resolveWidgetFieldValue } from '@/_helpers/utils'; +import CodeHinter from '@/Editor/CodeEditor'; class Chart extends React.Component { constructor(props) { @@ -74,9 +74,8 @@ class Chart extends React.Component { const jsonDescription = this.props.component.component.definition.properties.jsonDescription; - const plotFromJson = resolveReferences( - this.props.component.component.definition.properties.plotFromJson?.value, - currentState + const plotFromJson = resolveWidgetFieldValue( + this.props.component.component.definition.properties.plotFromJson?.value ); const chartType = this.props.component.component.definition.properties.type.value; @@ -130,11 +129,8 @@ class Chart extends React.Component { title: 'JSON description', children: ( this.props.paramUpdated({ name: 'jsonDescription' }, 'value', value, 'properties')} componentName={`component/${this.props.component.component.name}::${chartType}`} @@ -160,11 +156,8 @@ class Chart extends React.Component { title: 'Chart data', children: ( this.props.paramUpdated({ name: 'data' }, 'value', value, 'properties')} componentName={`component/${this.props.component.component.name}::${chartType}`} diff --git a/frontend/src/Editor/Inspector/Components/CustomComponent.jsx b/frontend/src/Editor/Inspector/Components/CustomComponent.jsx index d111325596..184d70d30d 100644 --- a/frontend/src/Editor/Inspector/Components/CustomComponent.jsx +++ b/frontend/src/Editor/Inspector/Components/CustomComponent.jsx @@ -1,7 +1,7 @@ import React from 'react'; import { renderElement } from '../Utils'; -import { CodeHinter } from '../../CodeBuilder/CodeHinter'; import Accordion from '@/_ui/Accordion'; +import CodeHinter from '@/Editor/CodeEditor'; export const CustomComponent = function CustomComponent({ dataQueries, @@ -20,8 +20,8 @@ export const CustomComponent = function CustomComponent({ title: 'Data', children: ( paramUpdated({ name: 'data' }, 'value', value, 'properties')} componentName={`component/${component.component.name}/data`} /> @@ -32,16 +32,16 @@ export const CustomComponent = function CustomComponent({ title: 'Code', children: ( paramUpdated({ name: 'code' }, 'value', value, 'properties')} componentName={`component/${component.component.name}/code`} - enablePreview={false} height={400} - hideSuggestion + hideSuggestion={true} /> ), }); diff --git a/frontend/src/Editor/Inspector/Components/DefaultComponent.jsx b/frontend/src/Editor/Inspector/Components/DefaultComponent.jsx index 702745372e..c8136d51f0 100644 --- a/frontend/src/Editor/Inspector/Components/DefaultComponent.jsx +++ b/frontend/src/Editor/Inspector/Components/DefaultComponent.jsx @@ -5,7 +5,8 @@ import { renderElement } from '../Utils'; // eslint-disable-next-line import/no-unresolved import i18next from 'i18next'; import { resolveReferences } from '@/_helpers/utils'; -import { AllComponents } from '@/Editor/Box'; +// import { AllComponents } from '@/Editor/Box'; +import { AllComponents } from '@/_helpers/editorHelpers'; const SHOW_ADDITIONAL_ACTIONS = ['Text', 'TextInput', 'NumberInput', 'PasswordInput']; const PROPERTIES_VS_ACCORDION_TITLE = { diff --git a/frontend/src/Editor/Inspector/Components/Table/ColumnManager/DatepickerProperties.jsx b/frontend/src/Editor/Inspector/Components/Table/ColumnManager/DatepickerProperties.jsx index 1bdf01a62a..73ed88626c 100644 --- a/frontend/src/Editor/Inspector/Components/Table/ColumnManager/DatepickerProperties.jsx +++ b/frontend/src/Editor/Inspector/Components/Table/ColumnManager/DatepickerProperties.jsx @@ -6,7 +6,7 @@ import Accordion from '@/_ui/Accordion'; import { resolveReferences } from '@/_helpers/utils'; import styles from '@/_ui/Select/styles'; import FxButton from '../../../../CodeBuilder/Elements/FxButton'; -import { CodeHinter } from '../../../../CodeBuilder/CodeHinter'; +import CodeHinter from '@/Editor/CodeEditor'; const TIMEZONE_OPTIONS = [ { name: 'UTC', value: 'Etc/UTC' }, diff --git a/frontend/src/Editor/Inspector/Components/Table/ColumnManager/PropertiesTabElements.jsx b/frontend/src/Editor/Inspector/Components/Table/ColumnManager/PropertiesTabElements.jsx index 876d8fdfdd..069d674fa2 100644 --- a/frontend/src/Editor/Inspector/Components/Table/ColumnManager/PropertiesTabElements.jsx +++ b/frontend/src/Editor/Inspector/Components/Table/ColumnManager/PropertiesTabElements.jsx @@ -1,7 +1,7 @@ import React from 'react'; import { resolveReferences } from '@/_helpers/utils'; import { useTranslation } from 'react-i18next'; -import { CodeHinter } from '../../../../CodeBuilder/CodeHinter'; +import CodeHinter from '@/Editor/CodeEditor'; import { EventManager } from '../../../EventManager'; import { ProgramaticallyHandleProperties } from '../ProgramaticallyHandleProperties'; import { OptionsList } from '../SelectOptionsList/OptionsList'; @@ -238,7 +238,7 @@ export const PropertiesTabElements = ({ )} {!['image', 'link'].includes(column.columnType) && ( - + )} - + + {t(`widget.Table.${validation.property}`, validation.label)} e.stopPropagation()}> callbackFunction(index, property, value)} componentName={`component/${component?.component?.name}::${param.name}`} - type={paramMeta.type} + paramType={paramMeta.type} paramName={param.name} paramLabel={paramMeta.displayName} fieldMeta={paramMeta} diff --git a/frontend/src/Editor/Inspector/Components/Table/SelectOptionsList/OptionsList.jsx b/frontend/src/Editor/Inspector/Components/Table/SelectOptionsList/OptionsList.jsx index 2664a5a1f0..5e812ad070 100644 --- a/frontend/src/Editor/Inspector/Components/Table/SelectOptionsList/OptionsList.jsx +++ b/frontend/src/Editor/Inspector/Components/Table/SelectOptionsList/OptionsList.jsx @@ -6,7 +6,7 @@ import { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd'; import NoListItem from '../NoListItem'; import OverlayTrigger from 'react-bootstrap/OverlayTrigger'; import Popover from 'react-bootstrap/Popover'; -import { CodeHinter } from '@/Editor/CodeBuilder/CodeHinter'; +import CodeHinter from '@/Editor/CodeEditor'; import { ProgramaticallyHandleProperties } from '../ProgramaticallyHandleProperties'; import { resolveReferences } from '@/_helpers/utils'; import { unset } from 'lodash'; diff --git a/frontend/src/Editor/Inspector/Components/Table/Table.jsx b/frontend/src/Editor/Inspector/Components/Table/Table.jsx index fe2dd7adf3..4e22434773 100644 --- a/frontend/src/Editor/Inspector/Components/Table/Table.jsx +++ b/frontend/src/Editor/Inspector/Components/Table/Table.jsx @@ -18,6 +18,7 @@ import NoListItem from './NoListItem'; import { ProgramaticallyHandleProperties } from './ProgramaticallyHandleProperties'; import { ColumnPopoverContent } from './ColumnManager/ColumnPopover'; import { useAppDataStore } from '@/_stores/appDataStore'; +import CodeHinter from '@/Editor/CodeEditor'; import { checkIfTableColumnDeprecated } from './ColumnManager/DeprecatedColumnTypeMsg'; @@ -170,6 +171,7 @@ class TableComponent extends React.Component { id="popover-basic-2" className={`${this.props.darkMode && 'dark-theme'} shadow table-column-popover`} style={{ + width: '280px', maxHeight: resolveReferences(column.isEditable, this.state.currentState) ? '100vh' : 'inherit', overflowY: 'auto', zIndex: '9999', diff --git a/frontend/src/Editor/Inspector/Elements/Code.jsx b/frontend/src/Editor/Inspector/Elements/Code.jsx index 356bd5c50a..8303f26cd3 100644 --- a/frontend/src/Editor/Inspector/Elements/Code.jsx +++ b/frontend/src/Editor/Inspector/Elements/Code.jsx @@ -1,8 +1,8 @@ import React from 'react'; -import { CodeHinter } from '../../CodeBuilder/CodeHinter'; import _ from 'lodash'; -import { resolveReferences } from '@/_helpers/utils'; import { useCurrentState } from '@/_stores/currentStateStore'; +import CodeEditor from '@/Editor/CodeEditor'; +import { getDefinitionInitialValue } from './utils'; const CLIENT_SERVER_TOGGLE_FIELDS = ['serverSidePagination', 'serverSideSort', 'serverSideFilter']; @@ -12,117 +12,55 @@ export const Code = ({ onChange, paramType, componentMeta, - darkMode, componentName, onFxPress, fxActive, component, - verticalLine, accordian, placeholder, }) => { const currentState = useCurrentState(); - const getDefinitionForNewProps = (param) => { - if (param === 'enablePagination') { - const clientSidePagination = component?.component?.definition?.properties?.clientSidePagination?.value ?? false; - const serverSidePagination = component?.component?.definition?.properties?.serverSidePagination?.value ?? false; - const isPaginationEnabled = - resolveReferences(clientSidePagination, currentState) || resolveReferences(serverSidePagination, currentState); + let initialValue = !_.isEmpty(definition) + ? definition.value + : getDefinitionInitialValue(paramType, param.name, component, currentState, definition.value); - if (isPaginationEnabled) return '{{true}}'; - return '{{false}}'; - } - // Following condition is needed to support older Text component not having textFormat switch - if (component?.component?.component === 'Text' && param === 'textFormat') { - const doTextFormatAlreadyExist = component?.component?.definition?.properties?.textFormat; - if (!doTextFormatAlreadyExist) { - return 'html'; - } - } - if (['showAddNewRowButton', 'allowSelection', 'defaultSelectedRow'].includes(param)) { - if (param === 'allowSelection') { - const highlightSelectedRow = component?.component?.definition?.properties?.highlightSelectedRow?.value ?? false; - const showBulkSelector = component?.component?.definition?.properties?.showBulkSelector?.value ?? false; - const allowSelection = - resolveReferences(highlightSelectedRow, currentState) || resolveReferences(showBulkSelector, currentState); - - return '{{' + `${allowSelection}` + '}}'; - } else if (param === 'defaultSelectedRow') { - return `{{{id:1}}}`; - } else { - return '{{true}}'; - } - } - if (param === 'selectRowOnCellEdit') { - const selectRowOnCellEdit = - component?.component?.definition?.properties?.selectRowOnCellEdit?.value ?? '{{true}}'; - return selectRowOnCellEdit; - } - return ''; - }; - - let initialValue = !_.isEmpty(definition) ? definition.value : getDefinitionForNewProps(param.name); const paramMeta = accordian ? componentMeta[paramType]?.[param.name] : componentMeta[paramType][param.name]; - const displayName = paramMeta?.displayName || param?.name; - - /* - following block is written for cellSize Prop to support backward compatibility, - because from older app we also get cellSize value as compact or spacious, - so accordigly we update the initial value with the new values respectively - */ - if (paramType === 'styles' && param.name === 'cellSize') { - switch (initialValue) { - case 'compact': - initialValue = 'condensed'; - break; - case 'spacious': - initialValue = 'regular'; - break; - default: - break; - } - } + const displayName = paramMeta.displayName || param.name; function handleCodeChanged(value) { onChange(param, 'value', value, paramType); } - function onVisibilityChange(value) { - onChange({ name: 'iconVisibility' }, 'value', value, 'styles'); - } - - const options = paramMeta?.options || {}; + const options = paramMeta.options || {}; const getfieldName = React.useMemo(() => { return param.name; }, [param]); + function onVisibilityChange(value) { + onChange({ name: 'iconVisibility' }, 'value', value, 'styles'); + } + return ( - handleCodeChanged(value)} - onVisibilityChange={(value) => onVisibilityChange(value)} - componentName={`component/${componentName}::${getfieldName}`} - type={paramMeta?.type} paramName={param.name} paramLabel={paramMeta?.showLabel !== false ? displayName : ' '} + paramType={paramMeta.type} fieldMeta={paramMeta} onFxPress={onFxPress} fxActive={CLIENT_SERVER_TOGGLE_FIELDS.includes(param.name) ? false : fxActive} // Client Server Toggle don't support Fx - component={component} - verticalLine={verticalLine} - isIcon={paramMeta?.isIcon} - staticText={paramMeta?.staticText} + componentName={`component/${componentName}::${getfieldName}`} + onChange={(value) => handleCodeChanged(value)} + className={options?.className} + componentId={component?.id} + styleDefinition={component?.component?.definition?.styles ?? {}} + onVisibilityChange={onVisibilityChange} placeholder={placeholder} - inspectorTab={paramType} - bold={true} + cyLabel="" /> ); diff --git a/frontend/src/Editor/Inspector/Elements/Json.jsx b/frontend/src/Editor/Inspector/Elements/Json.jsx index 46c615ac5a..daf6d215a0 100644 --- a/frontend/src/Editor/Inspector/Elements/Json.jsx +++ b/frontend/src/Editor/Inspector/Elements/Json.jsx @@ -1,6 +1,5 @@ import React from 'react'; import CodeMirror from '@uiw/react-codemirror'; -import 'codemirror/theme/duotone-light.css'; import { ToolTip } from './Components/ToolTip'; export const Json = ({ param, definition, onChange, paramType, componentMeta }) => { diff --git a/frontend/src/Editor/Inspector/Elements/utils.js b/frontend/src/Editor/Inspector/Elements/utils.js index e69de29bb2..a8497409a1 100644 --- a/frontend/src/Editor/Inspector/Elements/utils.js +++ b/frontend/src/Editor/Inspector/Elements/utils.js @@ -0,0 +1,49 @@ +import { resolveReferences } from '@/_helpers/utils'; + +export const getDefinitionInitialValue = (paramType, param, definition, component, currentState) => { + const componentType = component?.component?.component; + + switch (componentType) { + case 'Table': + return getTableDefinitionInitialValue(param, component, currentState); + + case 'Text': + return ensureLegacyTextComponentCompatibility(param, definition); + + default: + return ''; + } +}; + +const getTableDefinitionInitialValue = ( + param, + { component: { component: { definition: { properties } = {} } = {} } = {} }, + currentState +) => { + const resolveProperty = (propertyName) => resolveReferences(properties?.[propertyName]?.value, currentState); + + switch (param) { + case 'enablePagination': + return `{{${resolveProperty('clientSidePagination') || resolveProperty('serverSidePagination')}}}`; + case 'allowSelection': + return `{{${resolveProperty('highlightSelectedRow') || resolveProperty('showBulkSelector')}}}`; + case 'defaultSelectedRow': + return '{{{id:1}}}'; + case 'showAddNewRowButton': + return '{{true}}'; + case 'selectRowOnCellEdit': + return properties?.selectRowOnCellEdit?.value ?? '{{true}}'; + default: + return ''; + } +}; + +const ensureLegacyTextComponentCompatibility = (param, definition) => { + if (param !== 'textFormat') return; + + const componentTextFormatProperty = definition?.properties?.textFormat; + + if (!componentTextFormatProperty) { + return 'html'; + } +}; diff --git a/frontend/src/Editor/Inspector/EventManager.jsx b/frontend/src/Editor/Inspector/EventManager.jsx index 835ef96c17..09280aed63 100644 --- a/frontend/src/Editor/Inspector/EventManager.jsx +++ b/frontend/src/Editor/Inspector/EventManager.jsx @@ -2,7 +2,6 @@ import React, { useState, useEffect, useContext } from 'react'; import { ActionTypes } from '../ActionTypes'; import OverlayTrigger from 'react-bootstrap/OverlayTrigger'; import Popover from 'react-bootstrap/Popover'; -import { CodeHinter } from '../CodeBuilder/CodeHinter'; import { GotoApp } from './ActionConfigurationPanels/GotoApp'; import { SwitchPage } from './ActionConfigurationPanels/SwitchPage'; import { DragDropContext, Droppable, Draggable } from 'react-beautiful-dnd'; @@ -21,6 +20,12 @@ import AddNewButton from '@/ToolJetUI/Buttons/AddNewButton/AddNewButton'; import NoListItem from './Components/Table/NoListItem'; import ManageEventButton from './ManageEventButton'; import { EditorContext } from '../Context/EditorContextWrapper'; +import CodeHinter from '../CodeEditor'; +// eslint-disable-next-line import/no-unresolved +import { diff } from 'deep-object-diff'; +import { useEditorStore } from '@/_stores/editorStore'; +import { handleLowPriorityWork } from '@/_helpers/editorHelpers'; +import { appService } from '@/_services'; export const EventManager = ({ sourceId, @@ -46,7 +51,6 @@ export const EventManager = ({ const { appId, - apps, events: allAppEvents, eventsUpdatedLoader, eventsCreatedLoader, @@ -55,7 +59,6 @@ export const EventManager = ({ setEventToDeleteLoaderIndex, } = useAppDataStore((state) => ({ appId: state.appId, - apps: state.apps, events: state.events, eventsUpdatedLoader: state.eventsUpdatedLoader, eventsCreatedLoader: state.eventsCreatedLoader, @@ -66,7 +69,7 @@ export const EventManager = ({ const { handleYmapEventUpdates } = useContext(EditorContext) || {}; - const { updateAppVersionEventHandlers, createAppVersionEventHandlers, deleteAppVersionEventHandler } = + const { updateAppVersionEventHandlers, createAppVersionEventHandlers, deleteAppVersionEventHandler, updateState } = useAppDataActions(); const currentEvents = allAppEvents?.filter((event) => { @@ -104,10 +107,10 @@ export const EventManager = ({ return { name: action.name, value: action.id }; }); - let checkIfClicksAreInsideOf = document.querySelector('#cm-complete-0'); + let checkIfClicksAreInsideOf = document.querySelector('.cm-completionListIncompleteBottom'); // Listen for click events on body if (checkIfClicksAreInsideOf) { - document.body.addEventListener('click', function (event) { + document.body.addEventListener('mousedown', function (event) { if (checkIfClicksAreInsideOf.contains(event.target)) { event.stopPropagation(); } @@ -230,7 +233,23 @@ export const EventManager = ({ return defaultParams; } - function getAllApps() { + const fetchApps = async (page) => { + const { apps } = await appService.getAll(page); + + updateState({ + apps: apps.map((app) => ({ + id: app.id, + name: app.name, + slug: app.slug, + current_version_id: app.current_version_id, + })), + }); + + return apps; + }; + + async function getAllApps() { + const apps = await fetchApps(0); let appsOptionsList = []; apps .filter((item) => item.slug !== undefined && item.id !== appId && item.current_version_id) @@ -297,18 +316,28 @@ export const EventManager = ({ updatedEvent.event['componentSpecificActionParams'] = getDefault; } + const shouldUpdateEvent = !_.isEmpty(diff(events[index], updatedEvent)); + + if (!shouldUpdateEvent) return; + + const eventSourceid = updatedEvent?.sourceId; + + useEditorStore.getState().actions.updateComponentsNeedsUpdateOnNextRender([eventSourceid]); + newEvents[index] = updatedEvent; - updateAppVersionEventHandlers( - [ - { - event_id: updatedEvent.id, - diff: updatedEvent, - }, - ], - 'update', - param - ); + handleLowPriorityWork(() => { + updateAppVersionEventHandlers( + [ + { + event_id: updatedEvent.id, + diff: updatedEvent, + }, + ], + 'update', + param + ); + }); } function removeHandler(index) { @@ -423,8 +452,7 @@ export const EventManager = ({ handlerChanged(index, 'runOnlyIf', value)} usePortalEditor={false} @@ -447,6 +475,7 @@ export const EventManager = ({ handlerChanged(index, 'message', value)} @@ -480,7 +509,7 @@ export const EventManager = ({ {t('editor.inspector.eventManager.url', 'URL')} handlerChanged(index, 'url', value)} usePortalEditor={false} @@ -491,7 +520,7 @@ export const EventManager = ({ {event.actionId === 'go-to-app' && ( {t('editor.inspector.eventManager.text', 'Text')} handlerChanged(index, 'contentToCopy', value)} usePortalEditor={false} @@ -600,10 +629,9 @@ export const EventManager = ({ {t('editor.inspector.eventManager.key', 'Key')} handlerChanged(index, 'key', value)} - enablePreview={true} usePortalEditor={false} component={component} /> @@ -613,10 +641,9 @@ export const EventManager = ({ {t('editor.inspector.eventManager.value', 'Value')} handlerChanged(index, 'value', value)} - enablePreview={true} usePortalEditor={false} component={component} /> @@ -652,10 +679,9 @@ export const EventManager = ({ {t('editor.inspector.eventManager.fileName', 'File name')} handlerChanged(index, 'fileName', value)} - enablePreview={true} component={component} /> @@ -664,10 +690,9 @@ export const EventManager = ({ {t('editor.inspector.eventManager.data', 'Data')} handlerChanged(index, 'data', value)} - enablePreview={true} component={component} /> @@ -698,10 +723,9 @@ export const EventManager = ({ {t('editor.inspector.eventManager.pageIndex', 'Page index')} handlerChanged(index, 'pageIndex', value)} - enablePreview={true} usePortalEditor={false} component={component} /> @@ -715,7 +739,7 @@ export const EventManager = ({ {t('editor.inspector.eventManager.key', 'Key')} handlerChanged(index, 'key', value)} enablePreview={true} @@ -728,11 +752,10 @@ export const EventManager = ({ {t('editor.inspector.eventManager.value', 'Value')} handlerChanged(index, 'value', value)} - enablePreview={true} - cyLabel={`event-variable`} + cyLabel={`variable`} component={component} /> @@ -745,10 +768,9 @@ export const EventManager = ({ {t('editor.inspector.eventManager.key', 'Key')} handlerChanged(index, 'key', value)} - enablePreview={true} component={component} /> @@ -761,11 +783,10 @@ export const EventManager = ({ {t('editor.inspector.eventManager.key', 'Key')} handlerChanged(index, 'key', value)} - enablePreview={true} - cyLabel={`event-key`} + cyLabel={`key`} component={component} /> @@ -774,11 +795,10 @@ export const EventManager = ({ {t('editor.inspector.eventManager.value', 'Value')} handlerChanged(index, 'value', value)} - enablePreview={true} - cyLabel={`event-variable`} + cyLabel={`variable`} component={component} /> @@ -791,11 +811,10 @@ export const EventManager = ({ {t('editor.inspector.eventManager.key', 'Key')} handlerChanged(index, 'key', value)} - enablePreview={true} - cyLabel={`event-key`} + cyLabel={`key`} component={component} /> @@ -804,7 +823,7 @@ export const EventManager = ({ )} {event.actionId === 'switch-page' && ( getPageOptions(event)} @@ -879,22 +898,22 @@ export const EventManager = ({ ) : ( { onChangeHandlerForComponentSpecificActionHandle(value, index, param, event); }} - enablePreview={true} - type={param?.type} + paramType={param?.type} + paramLabel={' '} fieldMeta={{ options: param?.options }} cyLabel={`event-${param.displayName}`} component={component} + isEventManagerParam={true} /> )} @@ -906,8 +925,7 @@ export const EventManager = ({ {t('editor.inspector.eventManager.debounce', 'Debounce')} handlerChanged(index, 'debounce', value)} usePortalEditor={false} diff --git a/frontend/src/Editor/Inspector/Inspector.jsx b/frontend/src/Editor/Inspector/Inspector.jsx index 7a0175a30a..8a8f01333b 100644 --- a/frontend/src/Editor/Inspector/Inspector.jsx +++ b/frontend/src/Editor/Inspector/Inspector.jsx @@ -1,5 +1,4 @@ import React, { useState, useEffect } from 'react'; -import { componentTypes } from '../WidgetManager/components'; import { Table } from './Components/Table/Table.jsx'; import { Chart } from './Components/Chart'; import { Form } from './Components/Form'; @@ -16,7 +15,7 @@ import { Icon } from './Components/Icon'; import useFocus from '@/_hooks/use-focus'; import Accordion from '@/_ui/Accordion'; import { useTranslation } from 'react-i18next'; -import _, { isEmpty } from 'lodash'; +import _ from 'lodash'; import { useMounted } from '@/_hooks/use-mount'; import { useCurrentState } from '@/_stores/currentStateStore'; import { useDataQueries } from '@/_stores/dataQueriesStore'; @@ -94,13 +93,19 @@ export const Inspector = ({ shallow ); const { t } = useTranslation(); - useHotkeys('backspace', () => { - if (isVersionReleased) return; - setWidgetDeleteConfirmation(true); + useHotkeys( + 'backspace', + () => { + if (isVersionReleased) return; + setWidgetDeleteConfirmation(true); + }, + { scopes: 'editor' } + ); + useHotkeys('escape', () => setSelectedComponents(EMPTY_ARRAY), { + scopes: 'editor', }); - useHotkeys('escape', () => setSelectedComponents(EMPTY_ARRAY)); - const componentMeta = _.cloneDeep(componentTypes.find((comp) => component.component.component === comp.component)); + const componentMeta = JSON.parse(JSON.stringify(allComponents?.[selectedComponentId]?.component)); const isMounted = useMounted(); @@ -316,13 +321,9 @@ export const Inspector = ({ paramUpdated={paramUpdated} dataQueries={dataQueries} componentMeta={componentMeta} - // eventUpdated={eventUpdated} - // eventOptionUpdated={eventOptionUpdated} components={allComponents} currentState={currentState} darkMode={darkMode} - // eventsChanged={eventsChanged} - // apps={apps} !check pages={pages} allComponents={allComponents} /> diff --git a/frontend/src/Editor/Inspector/Utils.js b/frontend/src/Editor/Inspector/Utils.js index aad23c71c6..34cf39891c 100644 --- a/frontend/src/Editor/Inspector/Utils.js +++ b/frontend/src/Editor/Inspector/Utils.js @@ -28,7 +28,6 @@ export function renderCustomStyles( components = {}, accordian, darkMode = false, - verticalLine = true, placeholder = '' ) { const componentConfig = component.component; @@ -100,7 +99,6 @@ export function renderCustomStyles( paramUpdated({ name: param, ...component.component.properties[param] }, 'fxActive', active, paramType); }} component={component} - verticalLine={verticalLine} accordian={accordian} placeholder={placeholder} /> @@ -118,8 +116,7 @@ export function renderElement( currentState, components = {}, darkMode = false, - placeholder = '', - verticalLine = true + placeholder = '' ) { const componentConfig = component.component; const componentDefinition = componentConfig.definition; @@ -162,7 +159,6 @@ export function renderElement( paramUpdated({ name: param, ...component.component.properties[param] }, 'fxActive', active, paramType); }} component={component} - verticalLine={verticalLine} placeholder={placeholder} /> ); diff --git a/frontend/src/Editor/ItemTypes.js b/frontend/src/Editor/ItemTypes.js deleted file mode 100644 index 162fe48486..0000000000 --- a/frontend/src/Editor/ItemTypes.js +++ /dev/null @@ -1,5 +0,0 @@ -export const ItemTypes = { - BOX: 'box', - COMMENT: 'comment', - NEW_COMMENT: 'new_comment', -}; diff --git a/frontend/src/Editor/LeftSidebar/SidebarComment.jsx b/frontend/src/Editor/LeftSidebar/SidebarComment.jsx index 3c64014eb2..7be1378c8d 100644 --- a/frontend/src/Editor/LeftSidebar/SidebarComment.jsx +++ b/frontend/src/Editor/LeftSidebar/SidebarComment.jsx @@ -30,13 +30,14 @@ export const LeftSidebarComment = forwardRef(({ selectedSidebarItem, currentPage const [notifications, setNotifications] = React.useState([]); React.useEffect(() => { - if (appVersionsId && appId) { + if (isActive) { commentsService.getNotifications(appId, false, appVersionsId, currentPageId).then(({ data }) => { setNotifications(data); }); } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [appVersionsId, currentPageId, appId]); + }, [isActive]); + return ( 0} diff --git a/frontend/src/Editor/LeftSidebar/SidebarDebugger/Logs.jsx b/frontend/src/Editor/LeftSidebar/SidebarDebugger/Logs.jsx index 89cbb6cb8d..6ba7834c70 100644 --- a/frontend/src/Editor/LeftSidebar/SidebarDebugger/Logs.jsx +++ b/frontend/src/Editor/LeftSidebar/SidebarDebugger/Logs.jsx @@ -4,6 +4,7 @@ import moment from 'moment'; import JSONTreeViewer from '@/_ui/JSONTreeViewer'; import cx from 'classnames'; import SolidIcon from '@/_ui/Icon/SolidIcons'; +import { useEditorActions, useEditorStore } from '@/_stores/editorStore'; function Logs({ logProps, idx }) { const [open, setOpen] = React.useState(false); @@ -27,6 +28,31 @@ function Logs({ logProps, idx }) { pointerEvents: logProps?.isQuerySuccessLog || logProps.type === 'navToDisablePage' ? 'none' : 'default', }; + const { setSelectedComponents } = useEditorActions(); + + const handleSelectComponentOnEditor = (componentId) => { + const isAlreadySelected = useEditorStore + .getState() + ?.selectedComponents.find((component) => component.id === componentId); + + if (!isAlreadySelected) { + const currentPageId = useEditorStore.getState()?.currentPageId; + const currentPageComponents = useEditorStore.getState()?.appDefinition[currentPageId]?.components; + const component = currentPageComponents?.find((comp) => comp.id === componentId); + + setSelectedComponents([{ id: componentId, component }], false); + } + }; + + const callbackActions = [ + { + for: 'all', + actions: [{ name: 'Select Widget', dispatchAction: handleSelectComponentOnEditor, icon: false, onSelect: true }], + enableForAllChildren: true, + enableFor1stLevelChildren: true, + }, + ]; + const renderNavToDisabledPageMessage = () => { const text = message.split(logProps.page); return ( @@ -83,10 +109,12 @@ function Logs({ logProps, idx }) { useIcons={false} useIndentedBlock={true} enableCopyToClipboard={false} - useActions={false} + useActions={true} actionIdentifier="id" expandWithLabels={true} fontSize={'10px'} + actionsList={callbackActions} + treeType="debugger" /> )} diff --git a/frontend/src/Editor/LeftSidebar/SidebarDebugger/useDebugger.js b/frontend/src/Editor/LeftSidebar/SidebarDebugger/useDebugger.js index 75f9124fa4..a92a655430 100644 --- a/frontend/src/Editor/LeftSidebar/SidebarDebugger/useDebugger.js +++ b/frontend/src/Editor/LeftSidebar/SidebarDebugger/useDebugger.js @@ -14,7 +14,6 @@ const useDebugger = ({ currentPageId, isDebuggerOpen }) => { const { errors, succededQuery } = useCurrentStateStore( (state) => ({ errors: state.errors, - queries: state.queries, succededQuery: state.succededQuery, }), shallow diff --git a/frontend/src/Editor/LeftSidebar/SidebarInspector.jsx b/frontend/src/Editor/LeftSidebar/SidebarInspector.jsx index 7233fcbf72..8c30f74bed 100644 --- a/frontend/src/Editor/LeftSidebar/SidebarInspector.jsx +++ b/frontend/src/Editor/LeftSidebar/SidebarInspector.jsx @@ -62,13 +62,19 @@ export const LeftSidebarInspector = ({ const memoizedJSONData = React.useMemo(() => { const updatedQueries = {}; const { queries: currentQueries } = currentState; - if (!_.isEmpty(dataQueries)) { - dataQueries.forEach((query) => { - updatedQueries[query.name] = _.merge(currentQueries[query.name], { id: query.id }); - }); - } + // if (!_.isEmpty(dataQueries)) { + // const copyCurrentQueies = JSON.parse(JSON.stringify(currentQueries)); + // dataQueries.forEach((query) => { + // updatedQueries[query.name] = _.merge(copyCurrentQueies[query.name], { + // id: query.id, + // isLoading: false, + // data: [], + // rawData: [], + // }); + // }); + // } // const data = _.merge(currentState, { queries: updatedQueries }); - const jsontreeData = { ...currentState, queries: updatedQueries }; + const jsontreeData = { ...currentState, queries: currentQueries }; delete jsontreeData.errors; delete jsontreeData.client; delete jsontreeData.server; diff --git a/frontend/src/Editor/LeftSidebar/SidebarPageSelector/index.jsx b/frontend/src/Editor/LeftSidebar/SidebarPageSelector/index.jsx index f39a5e2ad9..6d4f776cf7 100644 --- a/frontend/src/Editor/LeftSidebar/SidebarPageSelector/index.jsx +++ b/frontend/src/Editor/LeftSidebar/SidebarPageSelector/index.jsx @@ -26,7 +26,6 @@ const LeftSidebarPageSelector = ({ disableEnablePage, updateHomePage, updatePageHandle, - pages, homePageId, showHideViewerNavigationControls, updateOnSortingPages, @@ -35,6 +34,13 @@ const LeftSidebarPageSelector = ({ pinned, setPinned, }) => { + const pages = useMemo( + () => + Object.entries(_.cloneDeep(appDefinition.pages)) + .map(([id, page]) => ({ id, ...page })) + .sort((a, b) => a.index - b.index) || [], + [JSON.stringify(appDefinition.pages)] + ); const [allpages, setPages] = useState(pages); const [haveUserPinned, setHaveUserPinned] = useState(false); const currentState = useCurrentState(); diff --git a/frontend/src/Editor/LeftSidebar/index.jsx b/frontend/src/Editor/LeftSidebar/index.jsx index 120e6e9b40..850c0462af 100644 --- a/frontend/src/Editor/LeftSidebar/index.jsx +++ b/frontend/src/Editor/LeftSidebar/index.jsx @@ -19,8 +19,6 @@ import { useDataSources } from '@/_stores/dataSourcesStore'; import { shallow } from 'zustand/shallow'; import useDebugger from './SidebarDebugger/useDebugger'; import { GlobalSettings } from '../Header/GlobalSettings'; -import { resolveReferences } from '@/_helpers/utils'; -import { useCurrentState } from '@/_stores/currentStateStore'; import cx from 'classnames'; export const LeftSidebar = forwardRef((props, ref) => { @@ -79,7 +77,6 @@ export const LeftSidebar = forwardRef((props, ref) => { }), shallow ); - const currentState = useCurrentState(); const [pinned, setPinned] = useState(!!localStorage.getItem('selectedSidebarItem')); const { errorLogs, clearErrorLogs, unReadErrorCount, allLog } = useDebugger({ @@ -141,97 +138,98 @@ export const LeftSidebar = forwardRef((props, ref) => { const backgroundFxQuery = appDefinition?.globalSettings?.backgroundFxQuery; - const SELECTED_ITEMS = { - page: ( - ({ id, ...page })) - .sort((a, b) => a.index - b.index) || [] - } - homePageId={appDefinition.homePageId} - showHideViewerNavigationControls={showHideViewerNavigationControls} - updateOnSortingPages={updateOnSortingPages} - apps={apps} - setPinned={handlePin} - pinned={pinned} - /> - ), - inspect: ( - - ), - datasource: ( - { - handleSelectedSidebarItem(null); - handlePin(false); - delete sideBarBtnRefs.current['datasource']; - }} - setPinned={handlePin} - pinned={pinned} - /> - ), - debugger: ( - - ), - settings: ( - - ), + const renderPopoverContent = () => { + if (selectedSidebarItem === null) return null; + switch (selectedSidebarItem) { + case 'page': + return ( + ({ id, ...page })) + .sort((a, b) => a.index - b.index) || [] + } + homePageId={appDefinition.homePageId} + showHideViewerNavigationControls={showHideViewerNavigationControls} + updateOnSortingPages={updateOnSortingPages} + apps={apps} + setPinned={handlePin} + pinned={pinned} + /> + ); + case 'inspect': + return ( + + ); + case 'datasource': + return ( + { + handleSelectedSidebarItem(null); + handlePin(false); + delete sideBarBtnRefs.current['datasource']; + }} + setPinned={handlePin} + pinned={pinned} + /> + ); + case 'debugger': + return ( + + ); + case 'settings': + return ( + + ); + } }; - useEffect(() => { - backgroundFxQuery && - globalSettingsChanged({ canvasBackgroundColor: resolveReferences(backgroundFxQuery, currentState) }); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [JSON.stringify(resolveReferences(backgroundFxQuery, currentState))]); - return ( { open={pinned || !!selectedSidebarItem} popoverContentClassName={`p-0 sidebar-h-100-popover ${selectedSidebarItem}`} side="right" - popoverContent={SELECTED_ITEMS[selectedSidebarItem]} + popoverContent={renderPopoverContent()} popoverContentHeight={popoverContentHeight} /> diff --git a/frontend/src/Editor/Middlewares/HydrateWithResolveReferences.jsx b/frontend/src/Editor/Middlewares/HydrateWithResolveReferences.jsx new file mode 100644 index 0000000000..cd1882d0df --- /dev/null +++ b/frontend/src/Editor/Middlewares/HydrateWithResolveReferences.jsx @@ -0,0 +1,108 @@ +import React, { useEffect, useMemo } from 'react'; +import { + resolveGeneralProperties, + resolveGeneralStyles, + resolveProperties, + resolveStyles, +} from '../component-properties-resolution'; +import { validateProperties } from '../component-properties-validation'; +import { getComponentName, debuggerActions } from '@/_helpers/appUtils'; +import { memoizeFunction } from '../../_helpers/editorHelpers'; +import { componentTypes } from '../WidgetManager/components'; +import { useCurrentState } from '@/_stores/currentStateStore'; + +const shouldAddBoxShadowAndVisibility = ['TextInput', 'PasswordInput', 'NumberInput', 'Text']; + +const getComponentMetaData = memoizeFunction((componentType) => { + return componentTypes.find((comp) => componentType === comp.component); +}); + +const HydrateWithResolveReferences = ({ id, mode, component, customResolvables, children }) => { + // eslint-disable-next-line react-hooks/exhaustive-deps + const componentMeta = useMemo(() => getComponentMetaData(component?.component), []); + + const currentState = useCurrentState(); + + const resolvedProperties = useMemo(() => { + return resolveProperties(component, currentState, null, customResolvables, id); + }, [component, currentState, customResolvables, id]); + + const resolvedStyles = useMemo(() => { + return resolveStyles(component, currentState, null, customResolvables); + }, [component, currentState, customResolvables]); + + const resolvedGeneralProperties = useMemo(() => { + return resolveGeneralProperties(component, currentState, null, customResolvables); + }, [component, currentState, customResolvables]); + + const resolvedGeneralStyles = useMemo(() => { + return resolveGeneralStyles(component, currentState, null, customResolvables); + }, [component, currentState, customResolvables]); + + const [validatedProperties, propertyErrors] = + mode === 'edit' && component.validate + ? validateProperties(resolvedProperties, componentMeta.properties) + : [resolvedProperties, []]; + + if (shouldAddBoxShadowAndVisibility.includes(component.component)) { + validatedProperties.visibility = validatedProperties.visibility !== false ? true : false; + } + + const [validatedStyles, styleErrors] = + mode === 'edit' && component.validate + ? validateProperties(resolvedStyles, componentMeta.styles) + : [resolvedStyles, []]; + + if (!shouldAddBoxShadowAndVisibility.includes(component.component)) { + validatedStyles.visibility = validatedStyles.visibility !== false ? true : false; + } + + const [validatedGeneralProperties, generalPropertiesErrors] = component.validate + ? validateProperties(resolvedGeneralProperties, componentMeta.general) + : [resolvedGeneralProperties, []]; + + const [validatedGeneralStyles, generalStylesErrors] = + mode === 'edit' && component.validate + ? validateProperties(resolvedGeneralStyles, componentMeta.generalStyles) + : [resolvedGeneralStyles, []]; + + useEffect(() => { + const currentPage = currentState?.page; + const componentName = getComponentName(currentState, id); + const errorLog = Object.fromEntries( + [...propertyErrors, ...styleErrors, ...generalPropertiesErrors, ...generalStylesErrors].map((error) => [ + `${componentName} - ${error.property}`, + { + page: currentPage, + type: 'component', + kind: 'component', + componentId: id, + strace: 'page_level', + data: { message: `${error.message}`, status: true }, + resolvedProperties: resolvedProperties, + effectiveProperties: validatedProperties, + }, + ]) + ); + debuggerActions?.error(errorLog); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [JSON.stringify({ propertyErrors, styleErrors, generalPropertiesErrors })]); + + const resolvedReferences = useMemo(() => { + return { + properties: validatedProperties, + styles: validatedStyles, + generalProperties: validatedGeneralProperties, + generalStyles: validatedGeneralStyles, + }; + }, [validatedProperties, validatedStyles, validatedGeneralProperties, validatedGeneralStyles]); + + // Clone the child component with resolved props + const childWithProps = React.Children.map(children, (child) => { + return React.cloneElement(child, { ...resolvedReferences }); + }); + + return <>{childWithProps}>; +}; + +export default HydrateWithResolveReferences; diff --git a/frontend/src/Editor/QueryManager/Components/ParameterDetails.jsx b/frontend/src/Editor/QueryManager/Components/ParameterDetails.jsx index 528cc480f9..1274cd791d 100644 --- a/frontend/src/Editor/QueryManager/Components/ParameterDetails.jsx +++ b/frontend/src/Editor/QueryManager/Components/ParameterDetails.jsx @@ -3,7 +3,6 @@ import { Button, ButtonGroup, OverlayTrigger, Popover } from 'react-bootstrap'; import cx from 'classnames'; import PlusRectangle from '@/_ui/Icon/solidIcons/PlusRectangle'; import Remove from '@/_ui/Icon/bulkIcons/Remove'; -import { ButtonSolid } from '@/_ui/AppButton/AppButton'; import ParameterForm from './ParameterForm'; const ParameterDetails = ({ darkMode, onSubmit, isEdit, name, defaultValue, onRemove, currentState, otherParams }) => { @@ -13,30 +12,32 @@ const ParameterDetails = ({ darkMode, onSubmit, isEdit, name, defaultValue, onRe useEffect(() => { const handleClickOutside = (event) => { const isClickedOnAddButton = !!event.target.closest('#runjs-param-add-btn'); + const isClickedOnPillButton = !!event.target.closest('.parameterItemPillButton'); if (isClickedOnAddButton && !isEdit) { - //if the user is in edit mode add button should close other popups open. - //modal closing on this even will be taken care by onClick attached to trigger button + return; + } + if (isClickedOnPillButton) { return; } if ( showModal && event.target.closest('#parameter-form-popover') === null && - event.target.closest('#cm-complete-0') === null + event.target.closest('.cm-completionListIncompleteBottom') === null ) { closeMenu(); } }; if (showModal) { - document.addEventListener('mouseup', handleClickOutside); + document.addEventListener('click', handleClickOutside); } else { - document.removeEventListener('mouseup', handleClickOutside); + document.removeEventListener('click', handleClickOutside); } return () => { - document.removeEventListener('mouseup', handleClickOutside); + document.removeEventListener('click', handleClickOutside); }; // eslint-disable-next-line react-hooks/exhaustive-deps - }, [showModal]); + }, [showModal]); // Include isEdit in the dependency array const handleSubmit = (param) => { if (param.name) { @@ -47,10 +48,9 @@ const ParameterDetails = ({ darkMode, onSubmit, isEdit, name, defaultValue, onRe return ( setShowModal((show) => !show)} className="ms-2" id="runjs-param-add-btn" - data-cy={`runjs-add-param-button`} + data-cy="runjs-add-param-button" style={{ background: 'none' }} > diff --git a/frontend/src/Editor/QueryManager/Components/ParameterForm.jsx b/frontend/src/Editor/QueryManager/Components/ParameterForm.jsx index 3c9daeb5a1..610ede889c 100644 --- a/frontend/src/Editor/QueryManager/Components/ParameterForm.jsx +++ b/frontend/src/Editor/QueryManager/Components/ParameterForm.jsx @@ -1,7 +1,7 @@ -import React, { useEffect, useRef, useState } from 'react'; -import { Form, Popover, Row, Col, OverlayTrigger, Tooltip } from 'react-bootstrap'; -import { CodeHinter } from '@/Editor/CodeBuilder/CodeHinter'; +import React, { useEffect, useState } from 'react'; +import { Form, Popover, Col, OverlayTrigger, Tooltip } from 'react-bootstrap'; import Information from '@/_ui/Icon/solidIcons/Information'; +import CodeHinter from '@/Editor/CodeEditor'; const isValidVariableName = (str) => /^[a-zA-Z_$][a-zA-Z0-9_$]*$/.test(str); @@ -18,12 +18,6 @@ const ParameterForm = ({ const [defaultValue, setDefaultValue] = useState(); const [error, setError] = useState(); - /** - * Storing {} in a ref to make sure its not a object instance whenever component reload. - * passing currentState={{}} to CodeHinter will consider it as a new value whenver this component rerenders - */ - const emptyObj = useRef({}); - useEffect(() => { setName(_name); setDefaultValue(_defaultValue); @@ -112,11 +106,10 @@ const ParameterForm = ({ setDefaultValue(value)} theme={darkMode ? 'monokai' : 'default'} - currentState={emptyObj.current} usePortalEditor={false} style={{ height: '32px', width: '177px', marginBotto: '16px' }} initialValue={defaultValue} - enablePreview={false} + delayOnChange={false} /> diff --git a/frontend/src/Editor/QueryManager/Components/Preview.jsx b/frontend/src/Editor/QueryManager/Components/Preview.jsx index 9f26d3360e..b991a2e044 100644 --- a/frontend/src/Editor/QueryManager/Components/Preview.jsx +++ b/frontend/src/Editor/QueryManager/Components/Preview.jsx @@ -102,7 +102,13 @@ const Preview = ({ darkMode }) => { > - + diff --git a/frontend/src/Editor/QueryManager/Components/SuccessNotificationInputs.jsx b/frontend/src/Editor/QueryManager/Components/SuccessNotificationInputs.jsx index 68a2734ded..23bfe67c3a 100644 --- a/frontend/src/Editor/QueryManager/Components/SuccessNotificationInputs.jsx +++ b/frontend/src/Editor/QueryManager/Components/SuccessNotificationInputs.jsx @@ -1,6 +1,6 @@ import React from 'react'; import { useTranslation } from 'react-i18next'; -import { CodeHinter } from '../../CodeBuilder/CodeHinter'; +import CodeHinter from '@/Editor/CodeEditor'; export default function SuccessNotificationInputs({ currentState, options, darkMode, optionchanged }) { const { t } = useTranslation(); @@ -15,10 +15,8 @@ export default function SuccessNotificationInputs({ currentState, options, darkM optionchanged('successMessage', value)} placeholder={t('editor.queryManager.queryRanSuccessfully', 'Query ran successfully')} cyLabel={'success-message'} diff --git a/frontend/src/Editor/QueryManager/Components/Transformation.jsx b/frontend/src/Editor/QueryManager/Components/Transformation.jsx index 5cfd88e1c9..b2872ec204 100644 --- a/frontend/src/Editor/QueryManager/Components/Transformation.jsx +++ b/frontend/src/Editor/QueryManager/Components/Transformation.jsx @@ -1,10 +1,4 @@ import React, { useState, useEffect } from 'react'; -import 'codemirror/theme/base16-light.css'; -import 'codemirror/mode/javascript/javascript'; -import 'codemirror/addon/hint/show-hint'; -import 'codemirror/addon/search/match-highlighter'; -import 'codemirror/addon/hint/show-hint.css'; -import { CodeHinter } from '@/Editor/CodeBuilder/CodeHinter'; import { Popover, OverlayTrigger } from 'react-bootstrap'; import { useTranslation } from 'react-i18next'; import Select from '@/_ui/Select'; @@ -16,6 +10,7 @@ import { queryManagerSelectComponentStyle } from '@/_ui/Select/styles'; const noop = () => {}; import { Button } from '@/_ui/LeftSidebar'; import Information from '@/_ui/Icon/solidIcons/Information'; +import CodeHinter from '@/Editor/CodeEditor'; export const Transformation = ({ changeOption, options, darkMode, queryId }) => { const { t } = useTranslation(); @@ -181,53 +176,51 @@ return data.filter(row => row.amount > 1000); - - {enableTransformation && ( - - - - - Language - - { - setLang(value); - changeOption('transformationLanguage', value); - changeOption('transformation', state[value]); - }} - placeholder={t('globals.select', 'Select') + '...'} - styles={computeSelectStyles(darkMode, 140)} - useCustomStyles={true} - /> + + {enableTransformation && ( + + + + + Language + { + setLang(value); + changeOption('transformationLanguage', value); + changeOption('transformation', state[value]); + }} + placeholder={t('globals.select', 'Select') + '...'} + styles={computeSelectStyles(darkMode, 140)} + useCustomStyles={true} + /> - - changeOption('transformation', value)} - componentName={`transformation`} - cyLabel={'transformation-input'} - callgpt={noop} - isCopilotEnabled={false} - /> - )} - + + changeOption('transformation', value)} + componentName={`transformation`} + cyLabel={'transformation-input'} + callgpt={noop} + isCopilotEnabled={false} + /> + + )} ); diff --git a/frontend/src/Editor/QueryManager/QueryEditors/GRPC.jsx b/frontend/src/Editor/QueryManager/QueryEditors/GRPC.jsx index 4ecc52e216..c309569322 100644 --- a/frontend/src/Editor/QueryManager/QueryEditors/GRPC.jsx +++ b/frontend/src/Editor/QueryManager/QueryEditors/GRPC.jsx @@ -2,7 +2,7 @@ import React from 'react'; import Select from '@/_ui/Select'; import { queryManagerSelectComponentStyle } from '@/_ui/Select/styles'; import { Tab, ListGroup, Row } from 'react-bootstrap'; -import { CodeHinter } from '../../CodeBuilder/CodeHinter'; +import CodeHinter from '@/Editor/CodeEditor'; const GRPCComponent = ({ darkMode, selectedDataSource, ...restProps }) => { const protobufDefintion = JSON.parse(selectedDataSource?.options?.protobuf?.value); @@ -211,15 +211,13 @@ function ControlledTabs({ onJsonBodyChange(value)} componentName={`${componentName}/message`} - enablePreview={false} /> @@ -251,9 +249,8 @@ const TabContent = ({ {index + 1} onChange('key', index, value)} componentName={`${componentName}/${tabType}::key::${index}`} @@ -261,9 +258,8 @@ const TabContent = ({ onChange('value', index, value)} componentName={`${componentName}/${tabType}::value::${index}`} diff --git a/frontend/src/Editor/QueryManager/QueryEditors/Openapi.jsx b/frontend/src/Editor/QueryManager/QueryEditors/Openapi.jsx index 4ea958960f..6bef5624b6 100644 --- a/frontend/src/Editor/QueryManager/QueryEditors/Openapi.jsx +++ b/frontend/src/Editor/QueryManager/QueryEditors/Openapi.jsx @@ -1,9 +1,9 @@ import React from 'react'; import Select from '@/_ui/Select'; import DOMPurify from 'dompurify'; -import { CodeHinter } from '../../CodeBuilder/CodeHinter'; import { withTranslation } from 'react-i18next'; import { queryManagerSelectComponentStyle } from '@/_ui/Select/styles'; +import CodeHinter from '@/Editor/CodeEditor'; const operationColorMapping = { get: 'azure', @@ -289,13 +289,10 @@ class OpenapiComponent extends React.Component { this.changeParam('path', param.name, value)} - height={'32px'} /> this.changeParam('path', param.name, value)} - height={'32px'} /> this.changeParam('query', param.name, value)} - height={'32px'} /> this.changeParam('request', param, value)} - height={'32px'} /> - + - + onJsonBodyChange(value)} componentName={`${componentName}/${tabType}`} /> diff --git a/frontend/src/Editor/QueryManager/QueryEditors/Restapi/index.jsx b/frontend/src/Editor/QueryManager/QueryEditors/Restapi/index.jsx index b29c83ab70..0ab39547ee 100644 --- a/frontend/src/Editor/QueryManager/QueryEditors/Restapi/index.jsx +++ b/frontend/src/Editor/QueryManager/QueryEditors/Restapi/index.jsx @@ -1,13 +1,13 @@ -import 'codemirror/theme/duotone-light.css'; +// import 'codemirror/theme/duotone-light.css'; import React from 'react'; import { isEmpty, defaults } from 'lodash'; import Tabs from './Tabs'; import Select from '@/_ui/Select'; import { changeOption } from '../utils'; -import { CodeHinter } from '../../../CodeBuilder/CodeHinter'; import { BaseUrl } from './BaseUrl'; import { queryManagerSelectComponentStyle } from '@/_ui/Select/styles'; +import CodeHinter from '@/Editor/CodeEditor'; class Restapi extends React.Component { constructor(props) { @@ -122,6 +122,15 @@ class Restapi extends React.Component { }, cursor: 'pointer', }), + singleValue: (provided) => ({ + ...provided, + marginBottom: '3px', + color: darkMode ? '#fff' : '#11181C', + }), + dropdownIndicator: (provided) => ({ + ...provided, + paddingTop: '4px', + }), }; }; @@ -135,7 +144,7 @@ class Restapi extends React.Component { return ( Request - + Method @@ -166,19 +175,20 @@ class Restapi extends React.Component { {dataSourceURL && ( )} - + { changeOption(this, 'url', value); }} placeholder={dataSourceURL ? 'Enter request endpoint' : 'Enter request URL'} componentName={`${queryName}::url`} - mode="javascript" - lineNumbers={false} - height={'32px'} + lang="javascript" /> diff --git a/frontend/src/Editor/QueryManager/QueryEditors/Runjs/Runjs.jsx b/frontend/src/Editor/QueryManager/QueryEditors/Runjs/Runjs.jsx index ad09e52c5f..5eb8f7a6d5 100644 --- a/frontend/src/Editor/QueryManager/QueryEditors/Runjs/Runjs.jsx +++ b/frontend/src/Editor/QueryManager/QueryEditors/Runjs/Runjs.jsx @@ -1,8 +1,9 @@ import React, { useState, useEffect } from 'react'; -import { CodeHinter } from '@/Editor/CodeBuilder/CodeHinter'; import { defaults } from 'lodash'; import { Card } from 'react-bootstrap'; import { useCurrentState } from '@/_stores/currentStateStore'; +import ParameterList from '../../Components/ParameterList'; +import CodeHinter from '@/Editor/CodeEditor'; const Runjs = (props) => { const currentState = useCurrentState(); @@ -24,22 +25,17 @@ const Runjs = (props) => { return ( { const newOptions = { ...options, code: value }; props.optionsChanged(newOptions); }} - isMultiLineJs={false} - enablePreview={false} componentName="Runjs" cyLabel={`runjs`} - currentState={currStateForCodeHinter} /> ); diff --git a/frontend/src/Editor/QueryManager/QueryEditors/Runpy.jsx b/frontend/src/Editor/QueryManager/QueryEditors/Runpy.jsx index 3eb20fdfb1..563c1fe812 100644 --- a/frontend/src/Editor/QueryManager/QueryEditors/Runpy.jsx +++ b/frontend/src/Editor/QueryManager/QueryEditors/Runpy.jsx @@ -1,7 +1,7 @@ import React from 'react'; -import { CodeHinter } from '../../CodeBuilder/CodeHinter'; import { changeOption } from './utils'; import { defaults } from 'lodash'; +import CodeHinter from '@/Editor/CodeEditor'; export class Runpy extends React.Component { constructor(props) { @@ -16,18 +16,14 @@ export class Runpy extends React.Component { render() { return ( - + changeOption(this, 'code', value)} - isMultiLineJs={false} - enablePreview={false} componentName="Runpy" cyLabel={`runpy`} /> diff --git a/frontend/src/Editor/QueryManager/QueryEditors/Stripe.jsx b/frontend/src/Editor/QueryManager/QueryEditors/Stripe.jsx index f363a42c15..8f18ab4df8 100644 --- a/frontend/src/Editor/QueryManager/QueryEditors/Stripe.jsx +++ b/frontend/src/Editor/QueryManager/QueryEditors/Stripe.jsx @@ -1,11 +1,11 @@ import React from 'react'; -import 'codemirror/theme/duotone-light.css'; +// import 'codemirror/theme/duotone-light.css'; import DOMPurify from 'dompurify'; import Select from '@/_ui/Select'; import { openapiService } from '@/_services'; -import { CodeHinter } from '../../CodeBuilder/CodeHinter'; import { withTranslation } from 'react-i18next'; import { queryManagerSelectComponentStyle } from '@/_ui/Select/styles'; +import CodeHinter from '@/Editor/CodeEditor'; const operationColorMapping = { get: 'azure', @@ -231,13 +231,10 @@ class StripeComponent extends React.Component { this.changeParam('path', param.name, value)} - height={'32px'} /> this.changeParam('query', param.name, value)} - height={'32px'} /> this.changeParam('request', param, value)} - height={'32px'} /> { const mounted = useMounted(); @@ -51,7 +51,7 @@ export const CreateRow = React.memo(({ optionchanged, options, darkMode }) => { Columns - + {Object.entries(columnOptions).map(([key, value]) => ( handleValueChange(newValue)} /> diff --git a/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/DeleteRows.jsx b/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/DeleteRows.jsx index 7be3d57b98..9d9988121b 100644 --- a/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/DeleteRows.jsx +++ b/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/DeleteRows.jsx @@ -2,11 +2,11 @@ import React, { useContext } from 'react'; import { TooljetDatabaseContext } from '@/TooljetDatabase/index'; import { v4 as uuidv4 } from 'uuid'; import { isEmpty } from 'lodash'; -import { CodeHinter } from '@/Editor/CodeBuilder/CodeHinter'; import Select from '@/_ui/Select'; import { operators } from '@/TooljetDatabase/constants'; import { isOperatorOptions } from './util'; import { ButtonSolid } from '@/_ui/AppButton/AppButton'; +import CodeHinter from '@/Editor/CodeEditor'; export const DeleteRows = React.memo(({ darkMode }) => { const { columns, deleteOperationLimitOptionChanged, deleteRowsOptions, handleDeleteRowsOptionsChange } = @@ -53,7 +53,7 @@ export const DeleteRows = React.memo(({ darkMode }) => { Filter - + {Object.values(deleteRowsOptions?.where_filters || {}).map((filter) => ( { deleteOperationLimitOptionChanged(newValue)} /> @@ -132,9 +131,9 @@ const RenderFilterFields = ({ }; return ( - + - + - + ) : ( handleValueChange(newValue)} /> diff --git a/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/JoinSort.jsx b/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/JoinSort.jsx index 06f0431e81..794a263ac7 100644 --- a/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/JoinSort.jsx +++ b/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/JoinSort.jsx @@ -103,7 +103,7 @@ export default function JoinSort({ darkMode }) { /> - + { return ( @@ -91,7 +91,7 @@ const SelectTableMenu = ({ darkMode }) => { {/* Join Section */} From - + {joins.map((join, joinIndex) => ( { {/* Filter Section */} Filter - + {/* Sort Section */} Sort - + {/* Limit Section */} Limit - + { if (value.length) { @@ -169,13 +168,11 @@ const SelectTableMenu = ({ darkMode }) => { {/* Offset Section */} Offset - + { if (value.length) { @@ -190,7 +187,7 @@ const SelectTableMenu = ({ darkMode }) => { {/* Select Section */} Select - + @@ -432,8 +429,8 @@ const RenderFilterSection = ({ darkMode }) => { darkMode={darkMode} /> - - + + {operator === 'IS' ? ( { /> ) : ( { : rightField?.value } className="border border-end-0 fs-12 tjdb-codehinter" - theme={darkMode ? 'monokai' : 'default'} - height={'30px'} placeholder="Value" onChange={(newValue) => updateFilterConditionEntry('Value', index, { value: newValue, isLeftSideCondition: false }) @@ -471,7 +467,7 @@ const RenderFilterSection = ({ darkMode }) => { }} size="sm" variant="ghostBlack" - className="px-1 rounded-0 border rounded-end" + className="px-1 rounded-0 border rounded-end col-2" onClick={() => removeFilterConditionEntry(index)} > diff --git a/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/ListRows.jsx b/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/ListRows.jsx index b86c00f8f0..9aaf2b9f26 100644 --- a/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/ListRows.jsx +++ b/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/ListRows.jsx @@ -1,5 +1,4 @@ import React, { useContext } from 'react'; -import { CodeHinter } from '@/Editor/CodeBuilder/CodeHinter'; import { TooljetDatabaseContext } from '@/TooljetDatabase/index'; import { v4 as uuidv4 } from 'uuid'; import { isEmpty } from 'lodash'; @@ -7,6 +6,7 @@ import Select from '@/_ui/Select'; import { operators } from '@/TooljetDatabase/constants'; import { isOperatorOptions } from './util'; import { ButtonSolid } from '@/_ui/AppButton/AppButton'; +import CodeHinter from '@/Editor/CodeEditor'; export const ListRows = React.memo(({ darkMode }) => { const { columns, listRowsOptions, limitOptionChanged, handleOptionsChange, offsetOptionChanged } = @@ -88,7 +88,7 @@ export const ListRows = React.memo(({ darkMode }) => { Filter - + {Object.values(listRowsOptions?.where_filters || {}).map((filter) => ( { limitOptionChanged(newValue)} /> @@ -178,10 +177,9 @@ export const ListRows = React.memo(({ darkMode }) => { offsetOptionChanged(newValue)} /> @@ -299,8 +297,8 @@ const RenderFilterFields = ({ return ( - - + + - + ) : ( handleValueChange(newValue)} /> diff --git a/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/UpdateRows.jsx b/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/UpdateRows.jsx index d00410be14..6e5e2f996d 100644 --- a/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/UpdateRows.jsx +++ b/frontend/src/Editor/QueryManager/QueryEditors/TooljetDatabase/UpdateRows.jsx @@ -1,5 +1,4 @@ import React, { useContext } from 'react'; -import { CodeHinter } from '@/Editor/CodeBuilder/CodeHinter'; import { TooljetDatabaseContext } from '@/TooljetDatabase/index'; import Select from '@/_ui/Select'; import { operators } from '@/TooljetDatabase/constants'; @@ -7,6 +6,7 @@ import { v4 as uuidv4 } from 'uuid'; import { isEmpty } from 'lodash'; import { isOperatorOptions } from './util'; import { ButtonSolid } from '@/_ui/AppButton/AppButton'; +import CodeHinter from '@/Editor/CodeEditor'; export const UpdateRows = React.memo(({ darkMode }) => { const { columns, updateRowsOptions, handleUpdateRowsOptionsChange } = useContext(TooljetDatabaseContext); @@ -79,7 +79,7 @@ export const UpdateRows = React.memo(({ darkMode }) => { Filter - + {Object.values(updateRowsOptions?.where_filters || {}).map((filter) => ( { Columns - + {Object.entries(updateRowsOptions?.columns).map(([key, value]) => { return ( - - + + - + ) : ( handleValueChange(newValue)} /> @@ -310,10 +309,9 @@ const RenderColumnOptions = ({ handleValueChange(newValue)} /> diff --git a/frontend/src/Editor/SubContainer.jsx b/frontend/src/Editor/SubContainer.jsx index 38e961dcff..0c99b9291a 100644 --- a/frontend/src/Editor/SubContainer.jsx +++ b/frontend/src/Editor/SubContainer.jsx @@ -1,43 +1,41 @@ /* eslint-disable import/no-named-as-default */ -import React, { useCallback, useState, useEffect, useRef, useContext } from 'react'; -import { useDrop, useDragLayer } from 'react-dnd'; -import { ItemTypes } from './ItemTypes'; +import React, { useState, useEffect, useRef, useMemo } from 'react'; +import { useDrop } from 'react-dnd'; +import { ItemTypes } from './editorConstants'; import { DraggableBox } from './DraggableBox'; import update from 'immutability-helper'; -const produce = require('immer').default; -import _ from 'lodash'; +import _, { isEmpty } from 'lodash'; import { componentTypes } from './WidgetManager/components'; -import { addNewWidgetToTheEditor } from '@/_helpers/appUtils'; -import { resolveReferences } from '@/_helpers/utils'; +import { + addNewWidgetToTheEditor, + onComponentOptionChanged, + onComponentOptionsChanged, + isPDFSupported, +} from '@/_helpers/appUtils'; +import { resolveWidgetFieldValue } from '@/_helpers/utils'; import { toast } from 'react-hot-toast'; import { restrictedWidgetsObj } from '@/Editor/WidgetManager/restrictedWidgetsConfig'; import { useCurrentState } from '@/_stores/currentStateStore'; -import { useAppVersionStore } from '@/_stores/appVersionStore'; import { shallow } from 'zustand/shallow'; -import { useMounted } from '@/_hooks/use-mount'; + import { useEditorStore } from '@/_stores/editorStore'; // eslint-disable-next-line import/no-unresolved import { diff } from 'deep-object-diff'; -import { isPDFSupported } from '@/_stores/utils'; - -const NO_OF_GRIDS = 43; +import { useGridStore, useResizingComponentId } from '@/_stores/gridStore'; +import GhostWidget from './GhostWidget'; export const SubContainer = ({ mode, snapToGrid, onComponentClick, onEvent, - appDefinition, appDefinitionChanged, - onComponentOptionChanged, - onComponentOptionsChanged, appLoading, zoomLevel, parent, parentRef, setSelectedComponent, - deviceWindowWidth, selectedComponent, currentLayout, removeComponent, @@ -51,30 +49,29 @@ export const SubContainer = ({ sideBarDebugger, onOptionChange, exposedVariables, - addDefaultChildren = false, height = '100%', currentPageId, childComponents = null, listmode = null, columns = 1, + parentWidgetId, }) => { - //Todo add custom resolve vars for other widgets too - const mounted = useMounted(); - const widgetResolvables = Object.freeze({ - Listview: 'listItem', - }); + const appDefinition = useEditorStore((state) => state.appDefinition, shallow); - const customResolverVariable = widgetResolvables[parentComponent?.component]; const currentState = useCurrentState(); - const { enableReleasedVersionPopupState, isVersionReleased } = useAppVersionStore( + const { selectedComponents } = useEditorStore( (state) => ({ - enableReleasedVersionPopupState: state.actions.enableReleasedVersionPopupState, - isVersionReleased: state.isVersionReleased, + selectedComponents: state.selectedComponents, }), shallow ); - const gridWidth = getContainerCanvasWidth() / NO_OF_GRIDS; + const resizingComponentId = useResizingComponentId(); + + const noOfGrids = 43; + const { isGridActive } = useGridStore((state) => ({ isGridActive: state.activeGrid === parent }), shallow); + + const gridWidth = getContainerCanvasWidth() / noOfGrids; const [_containerCanvasWidth, setContainerCanvasWidth] = useState(0); useEffect(() => { @@ -88,148 +85,109 @@ export const SubContainer = ({ zoomLevel = zoomLevel || 1; // eslint-disable-next-line react-hooks/exhaustive-deps - const allComponents = appDefinition ? appDefinition.pages[currentPageId].components : {}; - const isParentModal = - (allComponents[parent]?.component?.component === 'Modal' || - allComponents[parent]?.component?.component === 'Form' || - allComponents[parent]?.component?.component === 'Container') ?? - false; + const allComponents = appDefinition.pages[currentPageId]?.components ?? {}; - const getChildWidgets = (components) => { - let childWidgets = {}; - Object.keys(components).forEach((key) => { - const componentParent = components[key].component.parent; - if (componentParent === parent) { - childWidgets[key] = { ...components[key], component: { ...components[key]['component'], parent } }; + const allChildComponents = useMemo(() => { + const _childWidgets = {}; + Object.entries(allComponents).forEach(([componentId, componentData]) => { + if (componentData?.component?.parent === parent) { + _childWidgets[componentId] = componentData; } }); - return childWidgets; - }; + return _childWidgets; + }, [allComponents, parent]); - const [boxes, setBoxes] = useState(allComponents); - const [childWidgets, setChildWidgets] = useState([]); + const [childWidgets, setChildWidgets] = useState(() => allChildComponents); const [isDragging, setIsDragging] = useState(false); const [isResizing, setIsResizing] = useState(false); - // const [subContainerHeight, setSubContainerHeight] = useState('100%'); //used to determine the height of the sub container for modal + const subContainerHeightRef = useRef(height ?? '100%'); useEffect(() => { - setBoxes(allComponents); - setChildWidgets(() => getChildWidgets(allComponents)); + if (parent) { + const _childWidgets = {}; - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [allComponents, parent]); - - useEffect(() => { - if (mounted) { - //find children with parent prop - const children = Object.keys(allComponents).filter((key) => { - if (key === parent) return false; - return allComponents[key].parent === parent; + Object.entries(allComponents).forEach(([componentId, componentData]) => { + if (componentData?.component?.parent === parent) { + _childWidgets[componentId] = componentData; + } }); - if (children.length === 0 && addDefaultChildren === true) { - const defaultChildren = _.cloneDeep(parentComponent)['defaultChildren']; - const childrenBoxes = {}; - const parentId = - parentComponent.component !== 'Tabs' - ? parentRef.current.id - : parentRef.current.id?.substring(0, parentRef.current.id.lastIndexOf('-')); + const shouldUpdate = !_.isEqual(childWidgets, _childWidgets); - const _allComponents = JSON.parse(JSON.stringify(allComponents)); - - defaultChildren.forEach((child) => { - const { componentName, layout, incrementWidth, properties, accessorKey, tab, defaultValue, styles } = child; - - const componentMeta = _.cloneDeep(componentTypes.find((component) => component.component === componentName)); - const componentData = JSON.parse(JSON.stringify(componentMeta)); - - const width = layout.width ? layout.width : (componentMeta.defaultSize.width * 100) / NO_OF_GRIDS; - const height = layout.height ? layout.height : componentMeta.defaultSize.height; - const newComponentDefinition = { - ...componentData.definition.properties, - }; - - if (_.isArray(properties) && properties.length > 0) { - properties.forEach((prop) => { - const accessor = customResolverVariable - ? `{{${customResolverVariable}.${accessorKey}}}` - : defaultValue[prop] || ''; - - _.set(newComponentDefinition, prop, { - value: accessor, - }); - }); - _.set(componentData, 'definition.properties', newComponentDefinition); - } - - if (_.isArray(styles) && styles.length > 0) { - styles.forEach((prop) => { - const accessor = customResolverVariable - ? `{{${customResolverVariable}.${accessorKey}}}` - : defaultValue[prop] || ''; - - _.set(newComponentDefinition, prop, { - value: accessor, - }); - }); - _.set(componentData, 'definition.styles', newComponentDefinition); - } - - const newComponent = addNewWidgetToTheEditor( - componentData, - {}, - { ..._allComponents, ...childrenBoxes }, - {}, - currentLayout, - snapToGrid, - zoomLevel, - true, - true - ); - - _.set(childrenBoxes, newComponent.id, { - component: { - ...newComponent.component, - parent: parentComponent.component === 'Tabs' ? parentId + '-' + tab : parentId, - }, - - layouts: { - [currentLayout]: { - ...layout, - width: incrementWidth ? width * incrementWidth : width, - height: height, - }, - }, - }); - }); - - _allComponents[parentId] = { - ...allComponents[parentId], - withDefaultChildren: false, - }; - setBoxes({ - ..._allComponents, - ...childrenBoxes, - }); + if (shouldUpdate) { + setChildWidgets(_childWidgets); } } - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [mounted]); - const moveBox = useCallback( - (id, left, top) => { - setBoxes( - update(boxes, { - [id]: { - $merge: { left, top }, + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [JSON.stringify(allChildComponents), parent]); + + const containerWidth = getContainerCanvasWidth(); + + const placeComponentInsideParent = (newComponent, canvasBoundingRect) => { + const layout = newComponent?.layout?.desktop; + let newWidth = layout.width, + newHeight = layout.top + layout.height; + if (layout) { + if (newWidth + layout.left >= 43) { + newWidth = 43 - layout.left; + } + if (newHeight > canvasBoundingRect.height) { + newHeight = canvasBoundingRect.height - layout.top; + } + return { + ...newComponent, + layout: { + desktop: { + ...layout, + height: newHeight, + width: newWidth, }, - }) - ); - }, - [boxes] - ); + mobile: { + ...layout, + height: newHeight, + width: newWidth, + }, + }, + }; + } + return newComponent; + }; + + const placeComponentInsideListView = (newComponent, canvasBoundingRect) => { + const layout = newComponent?.layout?.desktop; + if (layout && canvasBoundingRect.height <= layout.top) { + let newTop = canvasBoundingRect.height - layout.height, + newHeight = layout.height; + if (newTop < 0) { + newTop = 0; + newHeight = canvasBoundingRect.height; + } + return { + ...newComponent, + layout: { + desktop: { + ...layout, + top: newTop, + height: newHeight, + }, + mobile: { + ...layout, + top: newTop, + height: newHeight, + }, + }, + }; + } + return newComponent; + }; + + useEffect(() => { + useGridStore.getState().actions.setSubContainerWidths(parent, containerWidth / noOfGrids); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [containerWidth]); useEffect(() => { if (appDefinitionChanged) { @@ -239,13 +197,16 @@ export const SubContainer = ({ ...appDefinition.pages, [currentPageId]: { ...appDefinition.pages[currentPageId], - components: boxes, + components: { + ...appDefinition.pages[currentPageId].components, + ...childWidgets, + }, }, }, }; const oldComponents = appDefinition.pages[currentPageId]?.components ?? {}; - const newComponents = boxes; + const newComponents = newDefinition.pages[currentPageId]?.components ?? {}; const componendAdded = Object.keys(newComponents).length > Object.keys(oldComponents).length; @@ -262,54 +223,17 @@ export const SubContainer = ({ } } // eslint-disable-next-line react-hooks/exhaustive-deps - }, [boxes]); + }, [childWidgets]); - const { draggingState } = useDragLayer((monitor) => { - // TODO: Need to move to a performant version of the block below - if (monitor.getItem()) { - if (monitor.getItem().id === undefined) { - if (parentRef.current) { - const currentOffset = monitor.getSourceClientOffset(); - if (currentOffset) { - const canvasBoundingRect = parentRef?.current - ?.getElementsByClassName('real-canvas')[0] - ?.getBoundingClientRect(); - if (!canvasBoundingRect) return { draggingState: false }; - if ( - currentOffset.x > canvasBoundingRect.x && - currentOffset.x < canvasBoundingRect.x + canvasBoundingRect.width - ) { - return { draggingState: true }; - } - } - } - } - } - - if (monitor.isDragging() && monitor.getItem().parent) { - if (monitor.getItem().parent === parent) { - return { draggingState: true }; - } else { - return { draggingState: false }; - } - } else { - return { draggingState: false }; - } - }); - - //!Todo: need to check: this never gets called as draggingState is always false - useEffect(() => { - setIsDragging(draggingState); - }, [draggingState]); - - function convertXToPercentage(x, canvasWidth) { - return (x * 100) / canvasWidth; - } - - const [, drop] = useDrop( + const [{ isOver, isOverCurrent }, drop] = useDrop( () => ({ accept: ItemTypes.BOX, drop(item, monitor) { + const didDrop = monitor.didDrop(); + if (didDrop && !parent) { + return; + } + if (item.component.component === 'PDF' && !isPDFSupported()) { toast.error( 'PDF is not supported in this version of browser. We recommend upgrading to the latest version for full support.' @@ -327,31 +251,168 @@ export const SubContainer = ({ ? 'Kanban_popout' : 'Kanban_card' : parentComponent.component; + if (!restrictedWidgetsObj[parentComp].includes(componentMeta?.component)) { - const newComponent = addNewWidgetToTheEditor( + const currentActiveLayout = useEditorStore.getState().currentLayout; + let newComponent = addNewWidgetToTheEditor( componentMeta, monitor, - boxes, + { ...allComponents, ...childWidgets }, canvasBoundingRect, - item.currentLayout, + currentActiveLayout, snapToGrid, zoomLevel, true ); - setBoxes({ - ...boxes, - [newComponent.id]: { - component: { - ...newComponent.component, - parent: parentRef.current.id, - }, - layouts: { - ...newComponent.layout, - }, - withDefaultChildren: newComponent.withDefaultChildren, - }, - }); + if (parentComp === 'Listview') { + newComponent = placeComponentInsideListView(newComponent, canvasBoundingRect); + } + if (componentMeta.component === 'Form') { + newComponent = placeComponentInsideParent(newComponent, canvasBoundingRect); + } + + // Logic to add default child components + const childrenBoxes = {}; + if (componentMeta.defaultChildren) { + const parentMeta = componentMeta; + const widgetResolvables = Object.freeze({ + Listview: 'listItem', + }); + const customResolverVariable = widgetResolvables[parentMeta?.component]; + const defaultChildren = _.cloneDeep(parentMeta)['defaultChildren']; + const parentId = newComponent.id; + + defaultChildren.forEach((child) => { + const { componentName, layout, incrementWidth, properties, accessorKey, tab, defaultValue, styles } = + child; + + const componentMeta = _.cloneDeep( + componentTypes.find((component) => component.component === componentName) + ); + const componentData = JSON.parse(JSON.stringify(componentMeta)); + + const width = layout.width ? layout.width : (componentMeta.defaultSize.width * 100) / noOfGrids; + const height = layout.height ? layout.height : componentMeta.defaultSize.height; + const newComponentDefinition = { + ...componentData.definition.properties, + }; + + if (_.isArray(properties) && properties.length > 0) { + properties.forEach((prop) => { + const accessor = customResolverVariable + ? `{{${customResolverVariable}.${accessorKey}}}` + : defaultValue[prop] || ''; + + _.set(newComponentDefinition, prop, { + value: accessor, + }); + }); + _.set(componentData, 'definition.properties', newComponentDefinition); + } + + if (_.isArray(styles) && styles.length > 0) { + styles.forEach((prop) => { + const accessor = customResolverVariable + ? `{{${customResolverVariable}.${accessorKey}}}` + : defaultValue[prop] || ''; + + _.set(newComponentDefinition, prop, { + value: accessor, + }); + }); + _.set(componentData, 'definition.styles', newComponentDefinition); + } + + const newChildComponent = addNewWidgetToTheEditor( + componentData, + {}, + { ...allComponents, ...childrenBoxes }, + {}, + currentActiveLayout, + snapToGrid, + zoomLevel, + true, + true + ); + + _.set(childrenBoxes, newChildComponent.id, { + component: { + ...newChildComponent.component, + parent: parentMeta.component === 'Tabs' ? parentId + '-' + tab : parentId, + }, + + layouts: { + [currentActiveLayout]: { + ...layout, + width: incrementWidth ? width * incrementWidth : width, + height: height, + }, + }, + }); + }); + } + + if (newComponent.withDefaultChildren) { + if (appDefinitionChanged) { + const newDefinition = { + ...appDefinition, + pages: { + ...appDefinition.pages, + [currentPageId]: { + ...appDefinition.pages[currentPageId], + components: { + ...appDefinition.pages[currentPageId].components, + [newComponent.id]: { + component: { + ...newComponent.component, + parent: parentRef.current.id, + }, + layouts: { + ...newComponent.layout, + }, + withDefaultChildren: false, + }, + ...childrenBoxes, + }, + }, + }, + }; + + const oldComponents = appDefinition.pages[currentPageId]?.components ?? {}; + const newComponents = newDefinition.pages[currentPageId]?.components ?? {}; + + const componendAdded = Object.keys(newComponents).length > Object.keys(oldComponents).length; + + const opts = { containerChanges: true }; + + if (componendAdded) { + opts.componentAdded = true; + } + + const shouldUpdate = !_.isEmpty(diff(appDefinition, newDefinition)); + + if (shouldUpdate) { + appDefinitionChanged(newDefinition, opts); + } + } + } else { + setChildWidgets((prev) => { + return { + ...prev, + [newComponent.id]: { + component: { + ...newComponent.component, + parent: parentRef.current.id, + }, + layouts: { + ...newComponent.layout, + }, + withDefaultChildren: newComponent.withDefaultChildren, + }, + }; + }); + } setSelectedComponent(newComponent.id, newComponent.component); @@ -369,8 +430,12 @@ export const SubContainer = ({ ); } }, + collect: (monitor) => ({ + isOver: monitor.isOver(), + isOverCurrent: monitor.isOver({ shallow: true }), + }), }), - [moveBox] + [parent, appDefinition] ); function getContainerCanvasWidth() { @@ -385,126 +450,19 @@ export const SubContainer = ({ if (realCanvas) { const canvasBoundingRect = realCanvas.getBoundingClientRect(); width = canvasBoundingRect.width; - } - } - return width; - } - - function onDragStop(e, componentId, direction, currentLayout) { - if (isVersionReleased) { - enableReleasedVersionPopupState(); - return; - } - - const canvasWidth = getContainerCanvasWidth(); - const nodeBounds = direction.node.getBoundingClientRect(); - - const canvasBounds = parentRef.current.getElementsByClassName('real-canvas')[0].getBoundingClientRect(); - - // Computing the left offset - const leftOffset = nodeBounds.x - canvasBounds.x; - const currentLeftOffset = boxes[componentId].layouts[currentLayout].left; - const leftDiff = currentLeftOffset - convertXToPercentage(leftOffset, canvasWidth); - - const topDiff = boxes[componentId].layouts[currentLayout].top - (nodeBounds.y - canvasBounds.y); - - let newBoxes = { ...boxes }; - - const subContainerHeight = canvasBounds.height - 30; - const selectedComponents = useEditorStore.getState().selectedComponents; - - if (selectedComponents) { - for (const selectedComponent of selectedComponents) { - newBoxes = produce(newBoxes, (draft) => { - const topOffset = draft[selectedComponent.id].layouts[currentLayout].top; - const leftOffset = draft[selectedComponent.id].layouts[currentLayout].left; - - draft[selectedComponent.id].layouts[currentLayout].top = topOffset - topDiff; - draft[selectedComponent.id].layouts[currentLayout].left = leftOffset - leftDiff; - }); - - const componentBottom = - newBoxes[selectedComponent.id].layouts[currentLayout].top + - newBoxes[selectedComponent.id].layouts[currentLayout].height; - - if (isParentModal && subContainerHeight <= componentBottom) { - subContainerHeightRef.current = subContainerHeight + 100; - } + return width; } } - setChildWidgets(() => getChildWidgets(newBoxes)); - setBoxes(newBoxes); - } - - function onResizeStop(id, e, direction, ref, d, position) { - if (isVersionReleased) { - enableReleasedVersionPopupState(); - return; - } - - const deltaWidth = Math.round(d.width / gridWidth) * gridWidth; //rounding of width of element to nearest mulitple of gridWidth - const deltaHeight = d.height; - - if (deltaWidth === 0 && deltaHeight === 0) { - return; - } - - let { x, y } = position; - x = Math.round(x / gridWidth) * gridWidth; - - const defaultData = { - top: 100, - left: 0, - width: 445, - height: 500, - }; - - let { left, top, width, height } = boxes[id]['layouts'][currentLayout] || defaultData; - - top = y; - if (deltaWidth !== 0) { - // onResizeStop is triggered for a single click on the border, therefore this conditional logic - // should not be removed. - left = (x * 100) / _containerCanvasWidth; - } - - //round the width to nearest multiple of gridwidth before converting to % - let currentWidth = (_containerCanvasWidth * width) / NO_OF_GRIDS; - - if (currentWidth > _containerCanvasWidth) { - currentWidth = _containerCanvasWidth; - } - - let newWidth = currentWidth + deltaWidth; - newWidth = Math.round(newWidth / gridWidth) * gridWidth; - width = (newWidth * NO_OF_GRIDS) / _containerCanvasWidth; - - height = height + deltaHeight; - - let newBoxes = { - ...boxes, - [id]: { - ...boxes[id], - layouts: { - ...boxes[id]['layouts'], - [currentLayout]: { - ...boxes[id]['layouts'][currentLayout], - width, - height, - top, - left, - }, - }, - }, - }; - - setBoxes(newBoxes); + return useEditorStore.getState().editorCanvasWidth; } function paramUpdated(id, param, value) { + if (id === 'resizingComponentId') { + return; + } if (Object.keys(value).length > 0) { - setBoxes((boxes) => { + setChildWidgets((boxes) => { return update(boxes, { [id]: { $merge: { @@ -571,105 +529,137 @@ export const SubContainer = ({ return false; } + const getContainerProps = (componentId) => { + return { + mode, + snapToGrid, + onComponentClick, + onEvent, + appDefinition, + appDefinitionChanged, + currentState, + appLoading, + zoomLevel, + setSelectedComponent, + removeComponent, + currentLayout, + selectedComponents, + darkMode, + readOnly, + onComponentHover, + hoveredComponent, + sideBarDebugger, + currentPageId, + childComponents, + }; + }; + return ( - - {checkParentVisibility() && - Object.keys(childWidgets).map((key) => { - const addDefaultChildren = childWidgets[key]['withDefaultChildren'] || false; - const box = childWidgets[key]; + + + {checkParentVisibility() && + Object.entries({ + ...childWidgets, + }).map(([key, box]) => { + const activeLayout = useEditorStore.getState().currentLayout; + const canShowInCurrentLayout = + box.component.definition.others[activeLayout === 'mobile' ? 'showOnMobile' : 'showOnDesktop'].value; - const canShowInCurrentLayout = - box.component.definition.others[currentLayout === 'mobile' ? 'showOnMobile' : 'showOnDesktop'].value; - - if (box.component.parent && resolveReferences(canShowInCurrentLayout, currentState)) { - return ( - { - if (typeof value === 'function' && _.findKey(exposedVariables, optionName)) { - return Promise.resolve(); - } - onOptionChange && onOptionChange({ component, optionName, value, componentId }); + if (box.component.parent && resolveWidgetFieldValue(canShowInCurrentLayout)) { + return ( + + { + if (typeof value === 'function' && _.findKey(exposedVariables, optionName)) { + return Promise.resolve(); + } + onOptionChange && onOptionChange({ component, optionName, value, componentId }); + } } - } - onComponentOptionsChanged={(component, variableSet, id) => { - checkParent(box) - ? onComponentOptionsChanged(component, variableSet) - : variableSet.map((item) => { - onOptionChange && - onOptionChange({ - component, - optionName: item[0], - value: item[1], - componentId: id, - }); - }); - }} - key={key} - onResizeStop={onResizeStop} - onDragStop={onDragStop} - paramUpdated={paramUpdated} - id={key} - allComponents={allComponents} - {...childWidgets[key]} - mode={mode} - resizingStatusChanged={(status) => setIsResizing(status)} - draggingStatusChanged={(status) => setIsDragging(status)} - inCanvas={true} - zoomLevel={zoomLevel} - setSelectedComponent={setSelectedComponent} - selectedComponent={selectedComponent} - deviceWindowWidth={deviceWindowWidth} - removeComponent={customRemoveComponent} - canvasWidth={_containerCanvasWidth} - readOnly={readOnly} - darkMode={darkMode} - customResolvables={customResolvables} - onComponentHover={onComponentHover} - hoveredComponent={hoveredComponent} - parentId={parentComponent?.name} - parent={parent} - sideBarDebugger={sideBarDebugger} - exposedVariables={exposedVariables ?? {}} - childComponents={childComponents[key]} - containerProps={{ - mode, - snapToGrid, - onComponentClick, - onEvent, - appDefinition, - appDefinitionChanged, - currentState, - onComponentOptionChanged, - onComponentOptionsChanged, - appLoading, - zoomLevel, - setSelectedComponent, - removeComponent, - currentLayout, - deviceWindowWidth, - darkMode, - readOnly, - onComponentHover, - hoveredComponent, - sideBarDebugger, - addDefaultChildren, - currentPageId, - childComponents, - }} - /> - ); - } - })} + onComponentOptionsChanged={(component, variableSet, id) => { + checkParent(box) + ? onComponentOptionsChanged(component, variableSet) + : variableSet.map((item) => { + onOptionChange && + onOptionChange({ + component, + optionName: item[0], + value: item[1], + componentId: id, + }); + }); + }} + // key={key} + paramUpdated={paramUpdated} + id={key} + allComponents={allComponents} + {...box} + mode={mode} + inCanvas={true} + zoomLevel={zoomLevel} + selectedComponent={selectedComponent} + isSelectedComponent={ + mode === 'edit' ? selectedComponents.find((component) => component.id === key) : false + } + removeComponent={customRemoveComponent} + canvasWidth={_containerCanvasWidth} + readOnly={readOnly} + darkMode={darkMode} + customResolvables={customResolvables} + onComponentHover={onComponentHover} + hoveredComponent={hoveredComponent} + parentId={parent} + isMultipleComponentsSelected={selectedComponents?.length > 1 ? true : false} + exposedVariables={exposedVariables ?? {}} + getContainerProps={getContainerProps} + isFromSubContainer={true} + childComponents={childComponents[key]} + /> + + ); + } + })} + + + {appLoading && ( @@ -679,6 +669,140 @@ export const SubContainer = ({ )} + + ); +}; + +const ResizeGhostWidget = ({ resizingComponentId, widgets, currentLayout, canvasWidth, gridWidth }) => { + if (!resizingComponentId) { + return ''; + } + + return ( + + ); +}; + +const SubWidgetWrapper = ({ + parent, + readOnly, + id, + widget, + currentLayout, + canvasWidth, + gridWidth, + children, + isResizing, + isGhostComponent, + mode, +}) => { + const { layouts } = widget; + + const widgetRef = useRef(null); + + const isOnScreen = useOnScreen(widgetRef); + + const layoutData = layouts[currentLayout] || layouts['desktop'] || {}; + const isSelected = useEditorStore((state) => { + const isSelected = (state.selectedComponents || []).length === 1 && state?.selectedComponents?.[0]?.id === id; + return state?.hoveredComponent == id || isSelected; + }, shallow); + + const isDragging = useGridStore((state) => state?.draggingComponentId === id); + + let width = (canvasWidth * layoutData.width) / 43; + width = width > canvasWidth ? canvasWidth : width; //this handles scenarios where the width is set more than canvas for older components + const styles = { + width: width + 'px', + height: layoutData.height + 'px', + transform: `translate(${layoutData.left * gridWidth}px, ${layoutData.top}px)`, + ...(isGhostComponent ? { opacity: 0.5 } : {}), + }; + + const isWidgetActive = (isSelected || isDragging) && mode !== 'view'; + + useEffect(() => { + const controlBox = document.querySelector(`[target-id="${id}"]`); + // console.log('controlBox', { hide: !isOnScreen && isSelected && !isDragging && !isResizing, isOnScreen }); + //adding attribute instead of class since react-moveable seems to replace classes internally on scroll stop + if (!isOnScreen && isSelected && !isDragging && !isResizing) { + controlBox?.classList.add('hide-control'); + controlBox?.setAttribute('data-off-screen', 'true'); + } else { + // controlBox?.classList.remove('hide-control'); + controlBox?.removeAttribute('data-off-screen'); + } + }, [isOnScreen]); + + if (isEmpty(layoutData)) { + return ''; + } + + return ( + + {children} ); }; + +const SubContianerWrapper = ({ children, isDragging, isResizing, isGridActive, readOnly, drop, styles, parent }) => { + return ( + + {children} + + ); +}; + +export default function useOnScreen(ref) { + const [isIntersecting, setIntersecting] = useState(false); + const currentLayout = useEditorStore((state) => state.currentLayout); + + const observer = useMemo(() => { + if (ref?.current) { + new IntersectionObserver(([entry]) => setIntersecting(entry.isIntersecting), { + root: ref.current?.closest('.real-canvas'), + threshold: 0, + }); + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [ref.current, currentLayout]); + + useEffect(() => { + if (observer) { + observer.observe(ref.current); + } + return () => observer && observer.disconnect(); + // eslint-disable-next-line react-hooks/exhaustive-deps + }, []); + + return isIntersecting; +} diff --git a/frontend/src/Editor/SubCustomDragLayer.jsx b/frontend/src/Editor/SubCustomDragLayer.jsx index 4ff1c1644c..306abc2424 100644 --- a/frontend/src/Editor/SubCustomDragLayer.jsx +++ b/frontend/src/Editor/SubCustomDragLayer.jsx @@ -1,6 +1,6 @@ import React from 'react'; import { useDragLayer } from 'react-dnd'; -import { ItemTypes } from './ItemTypes'; +import { ItemTypes } from './editorConstants'; import { BoxDragPreview } from './BoxDragPreview'; import { snapToGrid } from '@/_helpers/appUtils'; const layerStyles = { @@ -47,8 +47,6 @@ function getItemStyles(delta, item, initialOffset, currentOffset, parentRef, par [x, y] = snapToGrid(canvasWidth, x, y); - console.log(`translate(${x}px, ${y}px)`); - const transform = `translate(${x}px, ${y}px)`; return { transform, diff --git a/frontend/src/Editor/Viewer.jsx b/frontend/src/Editor/Viewer.jsx index 7f7ad0ec7b..e15715440b 100644 --- a/frontend/src/Editor/Viewer.jsx +++ b/frontend/src/Editor/Viewer.jsx @@ -25,13 +25,13 @@ import { import queryString from 'query-string'; import ViewerLogoIcon from './Icons/viewer-logo.svg'; import { DataSourceTypes } from './DataSourceManager/SourceComponents'; -import { resolveReferences, isQueryRunnable, setWindowTitle, pageTitles } from '@/_helpers/utils'; +import { resolveReferences, isQueryRunnable, setWindowTitle, pageTitles, isValidUUID } from '@/_helpers/utils'; import { withTranslation } from 'react-i18next'; import _ from 'lodash'; import { Navigate } from 'react-router-dom'; import Spinner from '@/_ui/Spinner'; import { withRouter } from '@/_hoc/withRouter'; -import { useEditorStore } from '@/_stores/editorStore'; +import { flushComponentsToRender, useEditorActions, useEditorStore } from '@/_stores/editorStore'; import { setCookie } from '@/_helpers/cookie'; import { useDataQueriesStore } from '@/_stores/dataQueriesStore'; import { useCurrentStateStore } from '@/_stores/currentStateStore'; @@ -46,6 +46,10 @@ import ViewerSidebarNavigation from './Viewer/ViewerSidebarNavigation'; import MobileHeader from './Viewer/MobileHeader'; import DesktopHeader from './Viewer/DesktopHeader'; import './Viewer/viewer.scss'; +import { useResolveStore } from '@/_stores/resolverStore'; +import { findComponentsWithReferences } from '@/_helpers/editorHelpers'; +import { findAllEntityReferences } from '@/_stores/utils'; +import { dfs } from '@/_stores/handleReferenceTransactions'; import useAppDarkMode from '@/_hooks/useAppDarkMode'; class ViewerComponent extends React.Component { @@ -99,6 +103,165 @@ class ViewerComponent extends React.Component { appDefinition: { ...appDefData }, pages: appDefData.pages, }); + + useEditorStore.getState().actions.updateEditorState({ + appDefinition: appDefData, + }); + useResolveStore.getState().actions.resetStore(); + }; + + onViewerLoadUpdateEntityReferences = (pageId, loadType) => { + const appDefData = useEditorStore.getState().appDefinition; + const appJson = JSON.parse(JSON.stringify(appDefData)); + const currentPageId = pageId ?? this.state.currentPageId; + const currentComponents = appJson.pages[currentPageId].components; + let dataQueries = JSON.parse(JSON.stringify(useDataQueriesStore.getState().dataQueries)); + let allEvents = JSON.parse(JSON.stringify(useAppDataStore.getState().events)); + const globalSettings = appJson['globalSettings']; + + const entittyReferencesInGlobalSettings = findAllEntityReferences(globalSettings, [])?.filter( + (entity) => entity && isValidUUID(entity) + ); + + const entityReferencesInComponentDefinitions = findAllEntityReferences(currentComponents, [])?.filter( + (entity) => entity && isValidUUID(entity) + ); + + const entityReferencesInQueryOptions = findAllEntityReferences(dataQueries, [])?.filter( + (entity) => entity && isValidUUID(entity) + ); + + const entityReferencesInEvents = findAllEntityReferences(allEvents, [])?.filter( + (entity) => entity && isValidUUID(entity) + ); + + const manager = useResolveStore.getState().referenceMapper; + + if (Array.isArray(entittyReferencesInGlobalSettings) && entittyReferencesInGlobalSettings?.length > 0) { + let newGlobalSettings = JSON.parse(JSON.stringify(globalSettings)); + entittyReferencesInGlobalSettings.forEach((entity) => { + const entityrefExists = manager.has(entity); + + if (entityrefExists) { + const value = manager.get(entity); + newGlobalSettings = dfs(newGlobalSettings, entity, value); + } + }); + + const newAppDefinition = { + ...appJson, + globalSettings: { + ...appJson.globalSettings, + newGlobalSettings, + }, + }; + + useEditorStore.getState().actions.setCanvasBackground({ + backgroundFxQuery: newGlobalSettings?.backgroundFxQuery, + canvasBackgroundColor: newGlobalSettings?.canvasBackgroundColor, + }); + + useEditorStore.getState().actions.updateEditorState({ + isUpdatingEditorStateInProcess: false, + appDefinition: newAppDefinition, + }); + } + + if (Array.isArray(entityReferencesInComponentDefinitions) && entityReferencesInComponentDefinitions?.length > 0) { + let newComponentDefinition = JSON.parse(JSON.stringify(currentComponents)); + + entityReferencesInComponentDefinitions.forEach((entity) => { + const entityrefExists = manager.has(entity); + + if (entityrefExists) { + const value = manager.get(entity); + + newComponentDefinition = dfs(newComponentDefinition, entity, value); + } + }); + + const appDefinition = useEditorStore.getState().appDefinition; + const newAppDefinition = { + ...appDefinition, + pages: { + ...appDefinition.pages, + [currentPageId]: { + ...appDefinition.pages[currentPageId], + components: newComponentDefinition, + }, + }, + }; + + useEditorStore.getState().actions.updateEditorState({ + isUpdatingEditorStateInProcess: false, + appDefinition: newAppDefinition, + }); + + this.setState({ + appDefinition: newAppDefinition, + }); + } + + if (Array.isArray(entityReferencesInQueryOptions) && entityReferencesInQueryOptions?.length > 0) { + let newQueryOptions = {}; + dataQueries?.forEach((query) => { + newQueryOptions[query.id] = query.options; + ``; + }); + + entityReferencesInQueryOptions.forEach((entity) => { + const entityrefExists = manager.has(entity); + + if (entityrefExists) { + const value = manager.get(entity); + newQueryOptions = dfs(newQueryOptions, entity, value); + } + }); + + dataQueries = dataQueries.map((query) => { + const queryId = query.id; + const dqOptions = newQueryOptions[queryId]; + + return { + ...query, + options: dqOptions, + }; + }); + + useDataQueriesStore.getState().actions.setDataQueries(dataQueries, 'mappingUpdate'); + } + + if (Array.isArray(entityReferencesInEvents) && entityReferencesInEvents?.length > 0) { + let newEvents = JSON.parse(JSON.stringify(allEvents)); + + entityReferencesInEvents.forEach((entity) => { + const entityrefExists = manager.has(entity); + + if (entityrefExists) { + const value = manager.get(entity); + newEvents = dfs(newEvents, entity, value); + } + }); + + this.props.updateState({ + events: newEvents, + }); + } + + computeComponentState(currentComponents).then(async () => { + this.setState({ initialComputationOfStateDone: true, defaultComponentStateComputed: true }); + useCurrentStateStore.getState().actions.setEditorReady(true); + + if (loadType === 'appload') { + this.runQueries(dataQueries); + } + + const currentPageEvents = this.state.events.filter( + (event) => event.target === 'page' && event.sourceId === this.state.currentPageId + ); + + await this.handleEvent('onPageLoad', currentPageEvents); + }); }; setStateForContainer = async (data, appVersionId) => { @@ -126,6 +289,19 @@ class ViewerComponent extends React.Component { dataQueries = data.data_queries; } const queryConfirmationList = []; + const referencesManager = useResolveStore.getState().referenceMapper; + const newQueries = dataQueries + .map((dq) => { + if (!referencesManager.get(dq.id)) { + return { + id: dq.id, + name: dq.name, + }; + } + }) + .filter((c) => c !== undefined); + + useResolveStore.getState().actions.addEntitiesToMap(newQueries); if (dataQueries.length > 0) { dataQueries.forEach((query) => { @@ -165,6 +341,9 @@ class ViewerComponent extends React.Component { const currentPage = pages.find((page) => page.id === currentPageId); useDataQueriesStore.getState().actions.setDataQueries(dataQueries); + useEditorStore.getState().actions.updateEditorState({ + currentPageId: currentPageId, + }); this.props.setCurrentState({ queries: queryState, components: {}, @@ -187,7 +366,27 @@ class ViewerComponent extends React.Component { ...constants, }); useEditorStore.getState().actions.toggleCurrentLayout(this.props?.currentLayout == 'mobile' ? 'mobile' : 'desktop'); + this.props.updateState({ events: data.events ?? [] }); + const currentPageComponents = appDefData?.pages[currentPage.id]?.components; + + if (currentPageComponents && !_.isEmpty(currentPageComponents)) { + const referenceManager = useResolveStore.getState().referenceMapper; + + const newComponents = Object.keys(currentPageComponents).map((componentId) => { + const component = currentPageComponents[componentId]; + + if (!referenceManager.get(componentId)) { + return { + id: componentId, + name: component.component.name, + }; + } + }); + + useResolveStore.getState().actions.addEntitiesToMap(newComponents); + } + this.setState( { currentUser, @@ -205,18 +404,7 @@ class ViewerComponent extends React.Component { events: data.events ?? [], }, () => { - const components = appDefData?.pages[currentPageId]?.components || {}; - - computeComponentState(components).then(async () => { - this.setState({ initialComputationOfStateDone: true, defaultComponentStateComputed: true }); - this.runQueries(dataQueries); - - const currentPageEvents = this.state.events.filter( - (event) => event.target === 'page' && event.sourceId === this.state.currentPageId - ); - - await this.handleEvent('onPageLoad', currentPageEvents); - }); + this.onViewerLoadUpdateEntityReferences(currentPage.id, 'appload'); } ); }; @@ -289,6 +477,7 @@ class ViewerComponent extends React.Component { if (authentication_failed && !isAppPublic) { return redirectToErrorPage(ERROR_TYPES.URL_UNAVAILABLE, {}); } + useCurrentStateStore.getState().actions.initializeCurrentStateOnVersionSwitch(); this.setStateForApp(data, true); this.setStateForContainer(data); setWindowTitle({ @@ -461,13 +650,7 @@ class ViewerComponent extends React.Component { name: targetPage.name, }, async () => { - computeComponentState(this.state.appDefinition?.pages[this.state.currentPageId].components).then(async () => { - const currentPageEvents = this.state.events.filter( - (event) => event.target === 'page' && event.sourceId === this.state.currentPageId - ); - - await this.handleEvent('onPageLoad', currentPageEvents); - }); + computeComponentState(this.state.appDefinition?.pages[this.state.currentPageId].components); } ); } @@ -492,8 +675,7 @@ class ViewerComponent extends React.Component { computeCanvasBackgroundColor = () => { const bgColor = - (this.state.appDefinition.globalSettings?.backgroundFxQuery || - this.state.appDefinition.globalSettings?.canvasBackgroundColor) ?? + (this.props.canvasBackground?.backgroundFxQuery || this.props.canvasBackground?.canvasBackgroundColor) ?? '#2f3c4c'; const resolvedBackgroundColor = resolveReferences(bgColor, this.props.currentState); if (['#2f3c4c', '#F2F2F5', '#edeff5'].includes(resolvedBackgroundColor)) { @@ -521,6 +703,8 @@ class ViewerComponent extends React.Component { const defaultParams = getPreviewQueryParams(); if (this.state.currentPageId === id) return; + useCurrentStateStore.getState().actions.setEditorReady(false); + useResolveStore.getState().actions.resetStore(); const { handle } = this.state.appDefinition.pages[id]; @@ -538,20 +722,58 @@ class ViewerComponent extends React.Component { ? `version=${navigationParams.version}` : ''; - this.props.navigate( - `/applications/${this.state.slug}/${handle}?${!_.isEmpty(defaultParams) ? navigationParamsString : ''}${ - queryParamsString ? `${!_.isEmpty(defaultParams) ? '&' : ''}${queryParamsString}` : '' - }`, - { - state: { - isSwitchingPage: true, - }, + useEditorStore.getState().actions.updateEditorState({ + currentPageId: id, + }); + + const currentPageComponents = this.state.appDefinition?.pages[id]?.components; + + if (currentPageComponents && !_.isEmpty(currentPageComponents)) { + const referenceManager = useResolveStore.getState().referenceMapper; + + const newComponents = Object.keys(currentPageComponents).map((componentId) => { + const component = currentPageComponents[componentId]; + + if (!referenceManager.get(componentId)) { + return { + id: componentId, + name: component.component.name, + }; + } + }); + + try { + useResolveStore.getState().actions.addEntitiesToMap(newComponents); + } catch (error) { + console.error(error); } - ); + } + + const toNavigate = `/applications/${this.state.slug}/${handle}?${ + !_.isEmpty(defaultParams) ? navigationParamsString : '' + }${queryParamsString ? `${!_.isEmpty(defaultParams) ? '&' : ''}${queryParamsString}` : ''}`; + + this.props.navigate(toNavigate, { + state: { + isSwitchingPage: true, + }, + }); + this.onViewerLoadUpdateEntityReferences(id, 'page-switch'); }; handleEvent = (eventName, events, options) => { - return onEvent(this.getViewerRef(), eventName, events, options, 'view'); + const latestEvents = useAppDataStore.getState().events; + + const filteredEvents = latestEvents.filter((event) => { + const foundEvent = events.find((e) => e.id === event.id); + return foundEvent && foundEvent.name === eventName; + }); + + try { + return onEvent(this.getViewerRef(), eventName, filteredEvents, options, 'view'); + } catch (error) { + console.error(error); + } }; computeCanvasMaxWidth = () => { @@ -780,14 +1002,55 @@ class ViewerComponent extends React.Component { } const withStore = (Component) => (props) => { const currentState = useCurrentStateStore(); - const { currentLayout, queryConfirmationList } = useEditorStore( + const { currentLayout, queryConfirmationList, currentPageId, appDefinition, canvasBackground } = useEditorStore( (state) => ({ currentLayout: state?.currentLayout, queryConfirmationList: state?.queryConfirmationList, + currentPageId: state?.currentPageId, + appDefinition: state?.appDefinition, + canvasBackground: state.canvasBackground, }), shallow ); + + const { updateComponentsNeedsUpdateOnNextRender } = useEditorActions(); const { updateState } = useAppDataActions(); + + const lastUpdatedRef = useResolveStore((state) => state.lastUpdatedRefs, shallow); + + async function batchUpdateComponents(componentIds) { + if (componentIds.length === 0) return; + + let updatedComponentIds = []; + + for (let i = 0; i < componentIds.length; i += 10) { + const batch = componentIds.slice(i, i + 10); + batch.forEach((id) => { + updatedComponentIds.push(id); + }); + + updateComponentsNeedsUpdateOnNextRender(batch); + // Delay to allow UI to process + await new Promise((resolve) => setTimeout(resolve, 0)); + } + + flushComponentsToRender(updatedComponentIds); + } + + React.useEffect(() => { + if (lastUpdatedRef.length > 0) { + const currentComponents = appDefinition?.pages?.[currentPageId]?.components || {}; + const componentIdsWithReferences = findComponentsWithReferences(currentComponents, lastUpdatedRef); + + if (componentIdsWithReferences.length > 0) { + setTimeout(() => { + batchUpdateComponents(componentIdsWithReferences); + }, 400); + } + } + // eslint-disable-next-line react-hooks/exhaustive-deps + }, [lastUpdatedRef]); + const { isAppDarkMode } = useAppDarkMode(); return ( (props) => { updateState={updateState} queryConfirmationList={queryConfirmationList} darkMode={isAppDarkMode} + canvasBackground={canvasBackground} /> ); }; diff --git a/frontend/src/Editor/Viewer/PreviewSettings.jsx b/frontend/src/Editor/Viewer/PreviewSettings.jsx index 1035472e09..345547b398 100644 --- a/frontend/src/Editor/Viewer/PreviewSettings.jsx +++ b/frontend/src/Editor/Viewer/PreviewSettings.jsx @@ -10,6 +10,7 @@ import Navbar from 'react-bootstrap/Navbar'; import Offcanvas from 'react-bootstrap/Offcanvas'; import 'bootstrap/dist/css/bootstrap.min.css'; import classNames from 'classnames'; +import EnvironmentManager from '@/Editor/Header/EnvironmentManager'; const PreviewSettings = ({ isMobileLayout, setAppDefinitionFromVersion, showHeader, darkMode }) => { const { editingVersion } = useAppVersionStore((state) => ({ @@ -23,6 +24,7 @@ const PreviewSettings = ({ isMobileLayout, setAppDefinitionFromVersion, showHead Preview settings + {editingVersion && ( + {editingVersion && ( + Components ( + + {data.title} + {updateData({title: 'Hello World!!'})}} + > + {data.buttonText} + + + ); + const ConnectedComponent = Tooljet.connectComponent(MyCustomComponent); + ReactDOM.render(, document.body);`, + skipResolve: true, + }, + }, + events: [], + styles: { + visibility: { value: '{{true}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/datepicker.js b/frontend/src/Editor/WidgetManager/configs/datepicker.js new file mode 100644 index 0000000000..44b3276678 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/datepicker.js @@ -0,0 +1,113 @@ +export const datepickerConfig = { + name: 'Datepicker', + displayName: 'Date Picker', + description: 'Choose date and time', + component: 'Datepicker', + defaultSize: { + width: 5, + height: 30, + }, + validation: { + customRule: { type: 'code', displayName: 'Custom validation' }, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + defaultValue: { + type: 'code', + displayName: 'Default value', + validation: { + schema: { type: 'string' }, + defaultValue: '01/01/2022', + }, + }, + format: { + type: 'code', + displayName: 'Format', + validation: { + schema: { type: 'string' }, + defaultValue: 'DD/MM/YYYY', + }, + }, + enableTime: { + type: 'toggle', + displayName: 'Enable time selection?', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + enableDate: { + type: 'toggle', + displayName: 'Enable date selection?', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + disabledDates: { + type: 'code', + displayName: 'Disabled dates', + validation: { + schema: { type: 'array', element: { type: 'string' } }, + defaultValue: "['01/01/2022']", + }, + }, + }, + events: { + onSelect: { displayName: 'On select' }, + }, + styles: { + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + borderRadius: { + type: 'code', + displayName: 'Border radius', + validation: { + schema: { type: 'number' }, + defaultValue: 4, + }, + }, + }, + exposedVariables: { + value: '', + }, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + validation: { + customRule: { value: '' }, + }, + properties: { + defaultValue: { value: '01/01/2022' }, + format: { value: 'DD/MM/YYYY' }, + enableTime: { value: '{{false}}' }, + enableDate: { value: '{{true}}' }, + disabledDates: { value: '{{[]}}' }, + }, + events: [], + styles: { + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + borderRadius: { value: '{{4}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/daterangepicker.js b/frontend/src/Editor/WidgetManager/configs/daterangepicker.js new file mode 100644 index 0000000000..d5c5c3d03b --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/daterangepicker.js @@ -0,0 +1,104 @@ +export const daterangepickerConfig = { + name: 'DateRangePicker', + displayName: 'Range Picker', + description: 'Choose date ranges', + component: 'DaterangePicker', + defaultSize: { + width: 10, + height: 30, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + defaultStartDate: { + type: 'code', + displayName: 'Default start date', + validation: { + schema: { + type: 'string', + }, + defautlValue: '01/04/2022', + }, + }, + defaultEndDate: { + type: 'code', + displayName: 'Default end date', + validation: { + schema: { + type: 'string', + }, + defautlValue: '10/04/2022', + }, + }, + format: { + type: 'code', + displayName: 'Format', + validation: { + schema: { + type: 'string', + }, + defautlValue: 'DD/MM/YYYY', + }, + }, + }, + events: { + onSelect: { displayName: 'On select' }, + }, + styles: { + borderRadius: { + type: 'code', + displayName: 'Border radius', + validation: { + schema: { + type: 'union', + schemas: [{ type: 'number' }, { type: 'string' }], + }, + defautlValue: 4, + }, + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { + type: 'boolean', + }, + defautlValue: true, + }, + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { + type: 'boolean', + }, + defautlValue: false, + }, + }, + }, + exposedVariables: { + endDate: {}, + startDate: {}, + }, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + defaultStartDate: { value: '01/04/2022' }, + defaultEndDate: { value: '10/04/2022' }, + + format: { value: 'DD/MM/YYYY' }, + }, + events: [], + styles: { + borderRadius: { value: '4' }, + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/divider.js b/frontend/src/Editor/WidgetManager/configs/divider.js new file mode 100644 index 0000000000..1614cbc473 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/divider.js @@ -0,0 +1,49 @@ +export const dividerConfig = { + name: 'Divider', + displayName: 'Divider', + description: 'Separator between components', + component: 'Divider', + defaultSize: { + width: 10, + height: 10, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: {}, + events: {}, + styles: { + dividerColor: { + type: 'color', + displayName: 'Divider color', + validation: { + schema: { type: 'string' }, + defaultValue: '#000000', + }, + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + }, + exposedVariables: { + value: {}, + }, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: {}, + events: [], + styles: { + visibility: { value: '{{true}}' }, + dividerColor: { value: '#3e525b' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/dropdown.js b/frontend/src/Editor/WidgetManager/configs/dropdown.js new file mode 100644 index 0000000000..f58eddfee9 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/dropdown.js @@ -0,0 +1,205 @@ +export const dropdownConfig = { + name: 'Dropdown', + displayName: 'Dropdown', + description: 'Single item selector', + defaultSize: { + width: 8, + height: 30, + }, + component: 'DropDown', + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + validation: { + customRule: { type: 'code', displayName: 'Custom validation' }, + }, + properties: { + label: { + type: 'code', + displayName: 'Label', + validation: { + schema: { type: 'string' }, + defaultValue: 'Select', + }, + }, + placeholder: { + type: 'code', + displayName: 'Placeholder', + + validation: { + schema: { type: 'string' }, + defaultValue: 'Select an option', + }, + }, + advanced: { + type: 'toggle', + displayName: 'Advanced', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + value: { + type: 'code', + displayName: 'Default value', + conditionallyRender: { + key: 'advanced', + value: false, + }, + validation: { + schema: { + type: 'union', + schemas: [{ type: 'string' }, { type: 'number' }, { type: 'boolean' }], + }, + defaultValue: 2, + }, + }, + values: { + type: 'code', + displayName: 'Option values', + conditionallyRender: { + key: 'advanced', + value: false, + }, + validation: { + schema: { + type: 'array', + element: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }, { type: 'boolean' }] }, + }, + defaultValue: "['one', 'two', 'three']", + }, + }, + display_values: { + type: 'code', + displayName: 'Option labels', + conditionallyRender: { + key: 'advanced', + value: false, + }, + validation: { + schema: { + type: 'array', + element: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }, { type: 'boolean' }] }, + }, + defaultValue: "['one', 'two', 'three']", + }, + }, + + schema: { + type: 'code', + displayName: 'Schema', + conditionallyRender: { + key: 'advanced', + value: true, + }, + }, + loadingState: { + type: 'toggle', + displayName: 'Options loading state', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + }, + events: { + onSelect: { displayName: 'On select' }, + onSearchTextChanged: { displayName: 'On search text changed' }, + }, + styles: { + borderRadius: { + type: 'code', + displayName: 'Border radius', + validation: { + schema: { + type: 'union', + schemas: [{ type: 'number' }, { type: 'string' }], + }, + defaultValue: 4, + }, + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + }, + defaultValue: true, + }, + selectedTextColor: { + type: 'color', + displayName: 'Selected text color', + validation: { + schema: { + type: 'string', + }, + defaultValue: '#000000', + }, + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { + type: 'boolean', + }, + defaultValue: false, + }, + }, + justifyContent: { + type: 'alignButtons', + displayName: 'Align Text', + validation: { + schema: { + type: 'string', + }, + defaultValue: 'left', + }, + }, + }, + exposedVariables: { + value: 2, + searchText: '', + label: 'Select', + optionLabels: ['one', 'two', 'three'], + selectedOptionLabel: 'two', + }, + actions: [ + { + handle: 'selectOption', + displayName: 'Select option', + params: [{ handle: 'select', displayName: 'Select' }], + }, + ], + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + validation: { + customRule: { value: null }, + }, + properties: { + advanced: { value: `{{false}}` }, + schema: { + value: + "{{[\t{label: 'One',value: 1,disable: false,visible: true,default: true},{label: 'Two',value: 2,disable: false,visible: true},{label: 'Three',value: 3,disable: false,visible: true}\t]}}", + }, + + label: { value: 'Select' }, + value: { value: '{{2}}' }, + values: { value: '{{[1,2,3]}}' }, + display_values: { value: '{{["one", "two", "three"]}}' }, + loadingState: { value: '{{false}}' }, + placeholder: { value: 'Select an option' }, + }, + events: [], + styles: { + borderRadius: { value: '4' }, + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + justifyContent: { value: 'left' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/filepicker.js b/frontend/src/Editor/WidgetManager/configs/filepicker.js new file mode 100644 index 0000000000..8df492daa5 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/filepicker.js @@ -0,0 +1,192 @@ +export const filepickerConfig = { + name: 'FilePicker', + displayName: 'File Picker', + description: 'File Picker', + component: 'FilePicker', + defaultSize: { + width: 15, + height: 100, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + actions: [ + { + handle: 'clearFiles', + displayName: 'Clear Files', + }, + ], + properties: { + instructionText: { + type: 'code', + displayName: 'Instruction text', + validation: { + schema: { type: 'string' }, + defaultValue: 'Instruction text', + }, + }, + enableDropzone: { + type: 'code', + displayName: 'Use drop zone', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + enablePicker: { + type: 'code', + displayName: 'Use file picker', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + enableMultiple: { + type: 'code', + displayName: 'Pick multiple files', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + maxFileCount: { + type: 'code', + displayName: 'Max file count', + validation: { + schema: { + type: 'union', + schemas: [{ type: 'string' }, { type: 'number' }], + }, + defaultValue: 2, + }, + }, + fileType: { + type: 'code', + displayName: 'Accept file types', + validation: { + schema: { + type: 'string', + }, + defaultValue: 'image/*', + }, + }, + maxSize: { + type: 'code', + displayName: 'Max size limit (Bytes)', + validation: { + schema: { + type: 'union', + schemas: [{ type: 'string' }, { type: 'number' }], + }, + defaultValue: 1048576, + }, + }, + minSize: { + type: 'code', + displayName: 'Min size limit (Bytes)', + validation: { + schema: { + type: 'union', + schemas: [{ type: 'string' }, { type: 'number' }], + }, + defaultValue: 50, + }, + }, + parseContent: { + type: 'toggle', + displayName: 'Parse content', + validation: { + schema: { + type: 'boolean', + }, + defaultValue: false, + }, + }, + parseFileType: { + type: 'select', + displayName: 'File type', + options: [ + { name: 'Autodetect from extension', value: 'auto-detect' }, + { name: 'CSV', value: 'csv' }, + { name: 'Microsoft Excel - xls', value: 'vnd.ms-excel' }, + { + name: 'Microsoft Excel - xlsx', + value: 'vnd.openxmlformats-officedocument.spreadsheetml.sheet', + }, + ], + validation: { + schema: { + type: 'string', + }, + defaultValue: 'auto-detect', + }, + }, + }, + events: { + onFileSelected: { displayName: 'On File Selected' }, + onFileLoaded: { displayName: 'On File Loaded' }, + onFileDeselected: { displayName: 'On File Deselected' }, + }, + styles: { + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { + type: 'boolean', + }, + defaultValue: true, + }, + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { + type: 'boolean', + }, + defaultValue: false, + }, + }, + borderRadius: { + type: 'code', + displayName: 'Border radius', + validation: { + schema: { + type: 'union', + schemas: [{ type: 'string' }, { type: 'number' }], + }, + defaultValue: 4, + }, + }, + }, + exposedVariables: { + file: [{ name: '', content: '', dataURL: '', type: '', parsedData: '' }], + isParsing: false, + }, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + instructionText: { value: 'Drag and drop files here or click to select files' }, + enableDropzone: { value: '{{true}}' }, + enablePicker: { value: '{{true}}' }, + maxFileCount: { value: '{{2}}' }, + enableMultiple: { value: '{{false}}' }, + fileType: { value: '{{"image/*"}}' }, + maxSize: { value: '{{1048576}}' }, + minSize: { value: '{{50}}' }, + parseContent: { value: '{{false}}' }, + parseFileType: { value: 'auto-detect' }, + }, + events: [], + styles: { + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + borderRadius: { value: '{{4}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/form.js b/frontend/src/Editor/WidgetManager/configs/form.js new file mode 100644 index 0000000000..ced2561f9b --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/form.js @@ -0,0 +1,330 @@ +export const formConfig = { + name: 'Form', + displayName: 'Form', + description: 'Wrapper for multiple components', + defaultSize: { + width: 13, + height: 330, + }, + defaultChildren: [ + { + componentName: 'Text', + layout: { + top: 40, + left: 10, + height: 30, + width: 17, + }, + properties: ['text'], + styles: [ + 'textSize', + 'fontWeight', + 'fontStyle', + 'textColor', + 'isScrollRequired', + 'lineHeight', + 'textIndent', + 'textAlign', + 'verticalAlignment', + 'decoration', + 'transformation', + 'letterSpacing', + 'wordSpacing', + 'fontVariant', + 'backgroundColor', + 'borderColor', + 'borderRadius', + 'boxShadow', + 'padding', + ], + defaultValue: { + text: 'User Details', + fontWeight: 'bold', + textSize: 18, + textColor: '#000', + backgroundColor: '#fff00000', + textAlign: 'left', + decoration: 'none', + transformation: 'none', + fontStyle: 'normal', + lineHeight: 1.5, + textIndent: '0', + letterSpacing: '0', + wordSpacing: '0', + fontVariant: 'normal', + verticalAlignment: 'top', + padding: 'default', + boxShadow: '0px 0px 0px 0px #00000090', + borderRadius: '0', + isScrollRequired: 'enabled', + }, + }, + { + componentName: 'Text', + layout: { + top: 90, + left: 10, + height: 30, + }, + properties: ['text'], + styles: [ + 'textSize', + 'fontWeight', + 'fontStyle', + 'textColor', + 'isScrollRequired', + 'lineHeight', + 'textIndent', + 'textAlign', + 'verticalAlignment', + 'decoration', + 'transformation', + 'letterSpacing', + 'wordSpacing', + 'fontVariant', + 'backgroundColor', + 'borderColor', + 'borderRadius', + 'boxShadow', + 'padding', + ], + defaultValue: { + text: 'Name', + fontWeight: 'normal', + textSize: 14, + textColor: '#000', + backgroundColor: '#fff00000', + textAlign: 'left', + decoration: 'none', + transformation: 'none', + fontStyle: 'normal', + lineHeight: 1.5, + textIndent: '0', + letterSpacing: '0', + wordSpacing: '0', + fontVariant: 'normal', + verticalAlignment: 'top', + padding: 'default', + boxShadow: '0px 0px 0px 0px #00000090', + borderRadius: '0', + isScrollRequired: 'enabled', + }, + }, + { + componentName: 'Text', + layout: { + top: 160, + left: 10, + height: 30, + }, + properties: ['text'], + styles: [ + 'textSize', + 'fontWeight', + 'fontStyle', + 'textColor', + 'isScrollRequired', + 'lineHeight', + 'textIndent', + 'textAlign', + 'verticalAlignment', + 'decoration', + 'transformation', + 'letterSpacing', + 'wordSpacing', + 'fontVariant', + 'backgroundColor', + 'borderColor', + 'borderRadius', + 'boxShadow', + 'padding', + ], + defaultValue: { + text: 'Age', + fontWeight: 'normal', + textSize: 14, + textColor: '#000', + backgroundColor: '#fff00000', + textAlign: 'left', + decoration: 'none', + transformation: 'none', + fontStyle: 'normal', + lineHeight: 1.5, + textIndent: '0', + letterSpacing: '0', + wordSpacing: '0', + fontVariant: 'normal', + verticalAlignment: 'top', + padding: 'default', + boxShadow: '0px 0px 0px 0px #00000090', + borderRadius: '0', + isScrollRequired: 'enabled', + }, + }, + { + componentName: 'TextInput', + layout: { + top: 120, + left: 10, + height: 30, + width: 25, + }, + properties: ['placeholder', 'label'], + defaultValue: { + placeholder: 'Enter your name', + label: '', + }, + }, + { + componentName: 'NumberInput', + layout: { + top: 190, + left: 10, + height: 30, + width: 25, + }, + properties: ['value', 'label'], + defaultValue: { + value: 24, + label: '', + }, + }, + { + componentName: 'Button', + layout: { + top: 240, + left: 10, + height: 30, + width: 10, + }, + properties: ['text'], + defaultValue: { + text: 'Submit', + }, + }, + ], + component: 'Form', + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + buttonToSubmit: { + type: 'select', + displayName: 'Button to submit form', + options: [{ name: 'None', value: 'none' }], + validation: { + schema: { type: 'string' }, + defaultValue: 'none', + }, + conditionallyRender: { + key: 'advanced', + value: false, + }, + }, + loadingState: { + type: 'toggle', + displayName: 'Loading state', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + advanced: { + type: 'toggle', + displayName: ' Use custom schema', + }, + JSONSchema: { + type: 'code', + displayName: 'JSON Schema', + conditionallyRender: { + key: 'advanced', + value: true, + }, + }, + }, + events: { + onSubmit: { displayName: 'On submit' }, + onInvalid: { displayName: 'On invalid' }, + }, + styles: { + backgroundColor: { + type: 'color', + displayName: 'Background color', + validation: { + schema: { type: 'string' }, + }, + }, + borderRadius: { + type: 'code', + displayName: 'Border radius', + validation: { + schema: { + type: 'union', + schemas: [{ type: 'string' }, { type: 'number' }], + }, + defaultValue: 0, + }, + }, + borderColor: { + type: 'color', + displayName: 'Border color', + validation: { + schema: { type: 'string' }, + defaultValue: '#fff', + }, + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + }, + exposedVariables: { + data: {}, + isValid: true, + }, + actions: [ + { + handle: 'submitForm', + displayName: 'Submit Form', + }, + { + handle: 'resetForm', + displayName: 'Reset Form', + }, + ], + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + loadingState: { value: '{{false}}' }, + advanced: { value: '{{false}}' }, + JSONSchema: { + value: + "{{ {title: 'User registration form', properties: {firstname: {type: 'textinput',value: 'Maria',label:'First name', validation:{maxLength:6}, styles: {backgroundColor: '#f6f5ff',textColor: 'black'},},lastname:{type: 'textinput',value: 'Doe', label:'Last name', styles: {backgroundColor: '#f6f5ff',textColor: 'black'},},age:{type:'number'},}, submitButton: {value: 'Submit', styles: {backgroundColor: '#3a433b',borderColor:'#595959'}}} }}", + }, + }, + events: [], + styles: { + backgroundColor: { value: '#fff' }, + borderRadius: { value: '0' }, + borderColor: { value: '#fff' }, + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/html.js b/frontend/src/Editor/WidgetManager/configs/html.js new file mode 100644 index 0000000000..85b16b4a21 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/html.js @@ -0,0 +1,52 @@ +export const htmlConfig = { + name: 'Html', + displayName: 'HTML Viewer', + description: 'View HTML content', + component: 'Html', + defaultSize: { + width: 10, + height: 310, + }, + properties: { + rawHtml: { + type: 'code', + displayName: 'Raw HTML', + validation: { + schema: { type: 'string' }, + defaultValue: `Hello World`, + }, + }, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + events: {}, + styles: { + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + }, + exposedVariables: {}, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + rawHtml: { + value: `You can build your custom HTML-CSS template here`, + }, + }, + events: [], + styles: { + visibility: { value: '{{true}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/icon.js b/frontend/src/Editor/WidgetManager/configs/icon.js new file mode 100644 index 0000000000..a64e7a486b --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/icon.js @@ -0,0 +1,72 @@ +export const iconConfig = { + name: 'Icon', + displayName: 'Icon', + description: 'Icon', + defaultSize: { + width: 5, + height: 48, + }, + component: 'Icon', + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + icon: { + type: 'iconPicker', + displayName: 'Icon', + validation: { + schema: { type: 'string' }, + defaultValue: 'IconHome2', + }, + }, + }, + events: { + onClick: { displayName: 'On click' }, + onHover: { displayName: 'On hover' }, + }, + styles: { + iconColor: { + type: 'color', + displayName: 'Icon color', + validation: { + schema: { type: 'string' }, + defaultValue: '#000', + }, + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + }, + exposedVariables: {}, + actions: [ + { + handle: 'click', + displayName: 'Click', + }, + { + displayName: 'Set Visibility', + handle: 'setVisibility', + params: [{ handle: 'value', displayName: 'Value', defaultValue: '{{true}}', type: 'toggle' }], + }, + ], + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + icon: { value: 'IconHome2' }, + }, + events: [], + styles: { + iconColor: { value: '#000' }, + visibility: { value: '{{true}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/iframe.js b/frontend/src/Editor/WidgetManager/configs/iframe.js new file mode 100644 index 0000000000..cbafe19d3a --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/iframe.js @@ -0,0 +1,59 @@ +export const iframeConfig = { + name: 'Iframe', + displayName: 'Iframe', + description: 'Embed external content', + defaultSize: { + width: 10, + height: 310, + }, + component: 'IFrame', + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + source: { + type: 'code', + displayName: 'URL', + validation: { + schema: { type: 'string' }, + defaultValue: 'https://tooljet.io/', + }, + }, + }, + events: {}, + styles: { + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + }, + exposedVariables: {}, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + source: { value: 'https://tooljet.io/' }, + visible: { value: '{{true}}' }, + }, + events: [], + styles: { + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/image.js b/frontend/src/Editor/WidgetManager/configs/image.js new file mode 100644 index 0000000000..7f15fbb6c5 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/image.js @@ -0,0 +1,145 @@ +export const imageConfig = { + name: 'Image', + displayName: 'Image', + description: 'Show image files', + defaultSize: { + width: 3, + height: 100, + }, + component: 'Image', + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + source: { + type: 'code', + displayName: 'URL', + validation: { + schema: { type: 'string' }, + defaultValue: 'https://www.svgrepo.com/image.svg', + }, + }, + loadingState: { + type: 'toggle', + displayName: 'Loading state', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + alternativeText: { + type: 'code', + displayName: 'Alternative text', + validation: { + schema: { type: 'string' }, + defaultValue: 'this is an image', + }, + }, + zoomButtons: { + type: 'toggle', + displayName: 'Zoom button', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + rotateButton: { + type: 'toggle', + displayName: 'Rotate button', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + }, + events: { + onClick: { displayName: 'On click' }, + }, + styles: { + borderType: { + type: 'select', + displayName: 'Border type', + options: [ + { name: 'None', value: 'none' }, + { name: 'Rounded', value: 'rounded' }, + { name: 'Circle', value: 'rounded-circle' }, + { name: 'Thumbnail', value: 'img-thumbnail' }, + ], + validation: { + schema: { type: 'string' }, + defaultValue: 'none', + }, + }, + backgroundColor: { + type: 'color', + displayName: 'Background color', + validation: { + schema: { type: 'string' }, + defaultValue: '#ffffff', + }, + }, + padding: { + type: 'code', + displayName: 'Padding', + validation: { + schema: { type: 'number' }, + defaultValue: 0, + }, + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + imageFit: { + type: 'select', + displayName: 'Image fit', + options: [ + { name: 'fill', value: 'fill' }, + { name: 'contain', value: 'contain' }, + { name: 'cover', value: 'cover' }, + { name: 'scale-down', value: 'scale-down' }, + ], + validation: { + schema: { type: 'string' }, + defaultValue: 'contain', + }, + }, + }, + exposedVariables: {}, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + source: { value: 'https://www.svgrepo.com/show/34217/image.svg' }, + visible: { value: '{{true}}' }, + loadingState: { value: '{{false}}' }, + alternativeText: { value: '' }, + zoomButtons: { value: '{{false}}' }, + rotateButton: { value: '{{false}}' }, + }, + events: [], + styles: { + borderType: { value: 'none' }, + padding: { value: '0' }, + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + imageFit: { value: 'contain' }, + backgroundColor: { value: '' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/index.js b/frontend/src/Editor/WidgetManager/configs/index.js new file mode 100644 index 0000000000..72ab22f325 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/index.js @@ -0,0 +1,107 @@ +import { buttonConfig } from './button'; +import { tableConfig } from './table'; +import { chartConfig } from './chart'; +import { modalConfig } from './modal'; +import { formConfig } from './form'; +import { textinputConfig } from './textinput'; +import { numberinputConfig } from './numberinput'; +import { passinputConfig } from './passwordinput'; +import { datepickerConfig } from './datepicker'; +import { checkboxConfig } from './checkbox'; +import { radiobuttonConfig } from './radiobutton'; +import { toggleswitchConfig } from './toggleswitch'; +import { textareaConfig } from './textarea'; +import { daterangepickerConfig } from './daterangepicker'; +import { textConfig } from './text'; +import { imageConfig } from './image'; +import { containerConfig } from './container'; +import { dropdownConfig } from './dropdown'; +import { multiselectConfig } from './multiselect'; +import { richtextareaConfig } from './richtextarea'; +import { mapConfig } from './map'; +import { qrscannerConfig } from './qrscanner'; +import { starratingConfig } from './starrating'; +import { dividerConfig } from './divider'; +import { filepickerConfig } from './filepicker'; +import { calendarConfig } from './calendar'; +import { iframeConfig } from './iframe'; +import { codeEditorConfig } from './codeEditor'; +import { tabsConfig } from './tabs'; +import { timerConfig } from './timer'; +import { listviewConfig } from './listview'; +import { tagsConfig } from './tags'; +import { paginationConfig } from './pagination'; +import { circularProgressbarConfig } from './circularProgressbar'; +import { spinnerConfig } from './spinner'; +import { statisticsConfig } from './statistics'; +import { rangeSliderConfig } from './rangeslider'; +import { timelineConfig } from './timeline'; +import { svgImageConfig } from './svgImage'; +import { htmlConfig } from './html'; +import { verticalDividerConfig } from './verticalDivider'; +import { customComponentConfig } from './customComponent'; +import { buttonGroupConfig } from './buttonGroup'; +import { pdfConfig } from './pdf'; +import { stepsConfig } from './steps'; +import { kanbanConfig } from './kanban'; +import { colorPickerConfig } from './colorPicker'; +import { treeSelectConfig } from './treeSelect'; +import { linkConfig } from './link'; +import { iconConfig } from './icon'; +import { boundedBoxConfig } from './boundedBox'; +import { kanbanBoardConfig } from './kanbanBoard'; + +export { + buttonConfig, + tableConfig, + chartConfig, + modalConfig, + formConfig, + textinputConfig, + numberinputConfig, + passinputConfig, + datepickerConfig, + checkboxConfig, + radiobuttonConfig, + toggleswitchConfig, + textareaConfig, + daterangepickerConfig, + textConfig, + imageConfig, + containerConfig, + dropdownConfig, + multiselectConfig, + richtextareaConfig, + mapConfig, + qrscannerConfig, + starratingConfig, + dividerConfig, + filepickerConfig, + calendarConfig, + iframeConfig, + codeEditorConfig, + tabsConfig, + timerConfig, + listviewConfig, + tagsConfig, + paginationConfig, + circularProgressbarConfig, + spinnerConfig, + statisticsConfig, + rangeSliderConfig, + timelineConfig, + svgImageConfig, + htmlConfig, + verticalDividerConfig, + customComponentConfig, + buttonGroupConfig, + pdfConfig, + stepsConfig, + kanbanConfig, + kanbanBoardConfig, //!Depreciated + colorPickerConfig, + treeSelectConfig, + linkConfig, + iconConfig, + boundedBoxConfig, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/kanban.js b/frontend/src/Editor/WidgetManager/configs/kanban.js new file mode 100644 index 0000000000..0705581c51 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/kanban.js @@ -0,0 +1,163 @@ +export const kanbanConfig = { + name: 'Kanban', + displayName: 'Kanban', + description: 'Task management board', + component: 'Kanban', + defaultSize: { + width: 40, + height: 490, + }, + defaultChildren: [ + { + componentName: 'Text', + layout: { + top: 20, + left: 4, + height: 30, + }, + properties: ['text'], + accessorKey: 'text', + styles: ['fontWeight', 'textSize', 'textColor'], + defaultValue: { + text: '{{cardData.title}}', + fontWeight: 'bold', + textSize: 16, + textColor: '#000', + }, + }, + { + componentName: 'Text', + layout: { + top: 50, + left: 4, + height: 30, + }, + properties: ['text'], + accessorKey: 'text', + styles: ['textSize', 'textColor'], + defaultValue: { + text: '{{cardData.description}}', + textSize: 14, + textColor: '#000', + }, + }, + ], + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + columnData: { type: 'code', displayName: 'Column data' }, + cardData: { type: 'code', displayName: 'Card data' }, + cardWidth: { + type: 'code', + displayName: 'Card width', + validation: { + schema: { type: 'number' }, + }, + }, + cardHeight: { + type: 'code', + displayName: 'Card height', + validation: { + schema: { type: 'number' }, + }, + }, + enableAddCard: { type: 'toggle', displayName: 'Enable add card' }, + showDeleteButton: { type: 'toggle', displayName: 'Show delete button' }, + }, + events: { + onUpdate: { displayName: 'On update' }, + onAddCardClick: { displayName: 'On add card click' }, + onCardRemoved: { displayName: 'Card removed' }, + onCardAdded: { displayName: 'Card added' }, + onCardMoved: { displayName: 'Card moved' }, + onCardSelected: { displayName: 'Card selected' }, + }, + styles: { + disabledState: { type: 'toggle', displayName: 'Disable' }, + visibility: { type: 'toggle', displayName: 'Visibility' }, + accentColor: { type: 'color', displayName: 'Accent color' }, + }, + actions: [ + { + handle: 'addCard', + displayName: 'Add Card', + params: [ + { + handle: 'cardDetails', + displayName: 'Card Details', + defaultValue: `{{{ id: "c11", title: "Title 11", description: "Description 11", columnId: "r3" }}}`, + }, + ], + }, + { + handle: 'deleteCard', + displayName: 'Delete Card', + params: [{ handle: 'id', displayName: 'Card Id', defaultValue: `{{components.kanban1?.lastSelectedCard?.id}}` }], + }, + { + handle: 'moveCard', + displayName: 'Move Card', + params: [ + { handle: 'cardId', displayName: 'Card Id', defaultValue: `{{components.kanban1?.lastSelectedCard?.id}}` }, + { handle: 'columnId', displayName: 'Destination Column Id', defaultValue: '' }, + ], + }, + { + handle: 'updateCardData', + displayName: 'Update Card Data', + params: [ + { handle: 'id', displayName: 'Card Id', defaultValue: `{{components.kanban1?.lastSelectedCard?.id}}` }, + { + handle: 'value', + displayName: 'Value', + defaultValue: `{{{...components.kanban1?.lastSelectedCard, title: 'New Title'}}}`, + }, + ], + }, + ], + exposedVariables: { + updatedCardData: {}, + lastAddedCard: {}, + lastRemovedCard: {}, + lastCardMovement: {}, + lastSelectedCard: {}, + lastUpdatedCard: {}, + lastCardUpdate: [], + }, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + columnData: { + value: + '{{[{ "id": "r1", "title": "To Do" },{ "id": "r2", "title": "In Progress" },{ "id": "r3", "title": "Done" }]}}', + }, + cardData: { + value: + '{{[{ id: "c1", title: "Title 1", description: "Description 1", columnId: "r1" },{ id: "c2", title: "Title 2", description: "Description 2", columnId: "r1" },{ id: "c3", title: "Title 3", description: "Description 3",columnId: "r2" },{ id: "c4", title: "Title 4", description: "Description 4",columnId: "r3" },{ id: "c5", title: "Title 5", description: "Description 5",columnId: "r3" }, { id: "c6", title: "Title 6", description: "Description 6", columnId: "r1" },{ id: "c7", title: "Title 7", description: "Description 7", columnId: "r1" },{ id: "c8", title: "Title 8", description: "Description 8",columnId: "r2" },{ id: "c9", title: "Title 9", description: "Description 9",columnId: "r3" },{ id: "c10", title: "Title 10", description: "Description 10",columnId: "r3" }]}}', + }, + cardWidth: { + value: '{{302}}', + }, + cardHeight: { + value: '{{100}}', + }, + enableAddCard: { + value: `{{true}}`, + }, + showDeleteButton: { + value: `{{true}}`, + }, + }, + events: [], + styles: { + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + accentColor: { value: '#4d72fa' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/kanbanBoard.js b/frontend/src/Editor/WidgetManager/configs/kanbanBoard.js new file mode 100644 index 0000000000..4929bad9fe --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/kanbanBoard.js @@ -0,0 +1,68 @@ +//! KanbanBoard widget is deprecated. This config allows backward compatibility with existing KanbanBoard widgets. + +export const kanbanBoardConfig = { + name: 'KanbanBoard', + displayName: 'Kanban Board', + description: 'Task management board', + component: 'KanbanBoard', + defaultSize: { + width: 40, + height: 490, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + columns: { type: 'code', displayName: 'Columns' }, + cardData: { type: 'code', displayName: 'Card Data' }, + enableAddCard: { type: 'toggle', displayName: 'Enable Add Card' }, + }, + events: { + onCardAdded: { displayName: 'Card added' }, + onCardRemoved: { displayName: 'Card removed' }, + onCardMoved: { displayName: 'Card moved' }, + onCardSelected: { displayName: 'Card selected' }, + onCardUpdated: { displayName: 'Card updated' }, + }, + styles: { + disabledState: { type: 'toggle', displayName: 'Disable' }, + visibility: { type: 'toggle', displayName: 'Visibility' }, + width: { type: 'number', displayName: 'Width' }, + minWidth: { type: 'number', displayName: 'Min Width' }, + accentColor: { type: 'color', displayName: 'Accent color' }, + }, + exposedVariables: { + columns: {}, + lastAddedCard: {}, + lastRemovedCard: {}, + lastCardMovement: {}, + lastUpdatedCard: {}, + }, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + columns: { + value: '{{[{ "id": "1", "title": "to do" },{ "id": "2", "title": "in progress" }]}}', + }, + cardData: { + value: + '{{[{ id: "01", title: "one", columnId: "1" },{ id: "02", title: "two", columnId: "1" },{ id: "03", title: "three", columnId: "2" }]}}', + }, + enableAddCard: { + value: `{{true}}`, + }, + }, + events: [], + styles: { + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + width: { value: '{{400}}' }, + minWidth: { value: '{{200}}' }, + textColor: { value: '' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/link.js b/frontend/src/Editor/WidgetManager/configs/link.js new file mode 100644 index 0000000000..bf419e16c0 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/link.js @@ -0,0 +1,111 @@ +export const linkConfig = { + name: 'Link', + displayName: 'Link', + description: 'Add link to the text', + defaultSize: { + width: 6, + height: 30, + }, + component: 'Link', + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + linkTarget: { + type: 'code', + displayName: 'Link target', + validation: { + schema: { type: 'string' }, + defaultValue: 'https://dev.to/', + }, + }, + linkText: { + type: 'code', + displayName: 'Link text', + validation: { + schema: { type: 'string' }, + defaultValue: 'Click here', + }, + }, + targetType: { + type: 'select', + displayName: 'Target type', + options: [ + { name: 'New Tab', value: 'new' }, + { name: 'Same Tab', value: 'same' }, + ], + validation: { + schema: { type: 'string' }, + }, + }, + }, + events: { + onClick: { displayName: 'On click' }, + onHover: { displayName: 'On hover' }, + }, + styles: { + textColor: { + type: 'color', + displayName: 'Text color', + validation: { + schema: { type: 'string' }, + defaultValue: '#375FCF', + }, + }, + textSize: { + type: 'number', + displayName: 'Text size', + validation: { + schema: { type: 'number' }, + defaultValue: 14, + }, + }, + underline: { + type: 'select', + displayName: 'Underline', + options: [ + { name: 'Never', value: 'no-underline' }, + { name: 'On Hover', value: 'on-hover' }, + { name: 'Always', value: 'underline' }, + ], + validation: { + schema: { type: 'string' }, + defaultValue: 'on-hover', + }, + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + }, + exposedVariables: {}, + actions: [ + { + handle: 'click', + displayName: 'Click', + }, + ], + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + linkTarget: { value: 'https://dev.to/' }, + linkText: { value: 'Click here' }, + targetType: { value: 'new' }, + }, + events: [], + styles: { + textColor: { value: '#375FCF' }, + textSize: { value: '{{14}}' }, + underline: { value: 'on-hover' }, + visibility: { value: '{{true}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/listview.js b/frontend/src/Editor/WidgetManager/configs/listview.js new file mode 100644 index 0000000000..a813bb5a0b --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/listview.js @@ -0,0 +1,198 @@ +export const listviewConfig = { + name: 'Listview', + displayName: 'List View', + description: 'List multiple items', + defaultSize: { + width: 30, + height: 300, + }, + defaultChildren: [ + { + componentName: 'Image', + layout: { + top: 15, + left: 3, + height: 100, + }, + properties: ['source'], + accessorKey: 'imageURL', + }, + { + componentName: 'Text', + layout: { + top: 50, + left: 11, + height: 30, + }, + properties: ['text'], + accessorKey: 'text', + }, + { + componentName: 'Button', + layout: { + top: 50, + left: 26, + height: 30, + }, + incrementWidth: 2, + properties: ['text'], + accessorKey: 'buttonText', + }, + ], + component: 'Listview', + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + data: { + type: 'code', + displayName: 'List data', + validation: { + schema: { type: 'array', element: { type: 'object' } }, + defaultValue: "[{text: 'Sample text 1'}]", + }, + }, + mode: { + type: 'select', + displayName: 'Mode', + options: [ + { name: 'list', value: 'list' }, + { name: 'grid', value: 'grid' }, + ], + validation: { + schema: { type: 'string' }, + defaultValue: 'list', + }, + }, + columns: { + type: 'number', + displayName: 'Columns', + validation: { + schema: { type: 'number' }, + defaultValue: 3, + }, + conditionallyRender: { + key: 'mode', + value: 'grid', + }, + }, + rowHeight: { + type: 'code', + displayName: 'Row height', + validation: { + schema: { type: 'number' }, + defaultValue: 100, + }, + }, + showBorder: { + type: 'code', + displayName: 'Show bottom border', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + conditionallyRender: { + key: 'mode', + value: 'list', + }, + }, + enablePagination: { + type: 'toggle', + displayName: 'Enable pagination', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + rowsPerPage: { + type: 'code', + displayName: 'Rows per page', + validation: { + schema: { type: 'number' }, + defaultValue: 10, + }, + }, + }, + events: { + onRowClicked: { displayName: 'Row clicked (Deprecated)' }, + onRecordClicked: { displayName: 'Record clicked' }, + }, + styles: { + backgroundColor: { + type: 'color', + displayName: 'Background color', + validation: { + schema: { type: 'string' }, + defaultValue: '#fff', + }, + }, + borderColor: { + type: 'color', + displayName: 'Border color', + validation: { + schema: { type: 'string' }, + defaultValue: '#dadcde', + }, + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + borderRadius: { + type: 'number', + displayName: 'Border radius', + validation: { + schema: { type: 'number' }, + defaultValue: 4, + }, + }, + }, + exposedVariables: { + data: [{}], + }, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + data: { + value: `{{[ + { imageURL: 'https://www.svgrepo.com/show/34217/image.svg', text: 'Sample text 1', buttonText: 'Button 1' }, + { imageURL: 'https://www.svgrepo.com/show/34217/image.svg', text: 'Sample text 1', buttonText: 'Button 2' }, + { imageURL: 'https://www.svgrepo.com/show/34217/image.svg', text: 'Sample text 1', buttonText: 'Button 3' }, + ]}}`, + }, + mode: { value: 'list' }, + columns: { value: '{{3}}' }, + rowHeight: { + value: '100', + }, + visible: { value: '{{true}}' }, + showBorder: { value: '{{true}}' }, + rowsPerPage: { value: '{{10}}' }, + enablePagination: { value: '{{false}}' }, + }, + events: [], + styles: { + backgroundColor: { value: '#fff' }, + borderColor: { value: '#dadcde' }, + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + borderRadius: { value: '{{4}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/map.js b/frontend/src/Editor/WidgetManager/configs/map.js new file mode 100644 index 0000000000..fc8b04abd5 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/map.js @@ -0,0 +1,152 @@ +export const mapConfig = { + name: 'Map', + displayName: 'Map', + description: 'Display map locations', + component: 'Map', + defaultSize: { + width: 16, + height: 420, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + initialLocation: { + type: 'code', + displayName: 'Initial location', + tip: 'This location will be the initial center of the map', + options: { + mode: 'javascript', + theme: 'duotone-light', + className: 'map-location-input pr-2', + }, + validation: { + schema: { + type: 'union', + schemas: [{ type: 'array', element: { type: 'object' } }, { type: 'object' }], + }, + defaultValue: `{{ {"lat": 40.7128, "lng": -73.935242} }}`, + }, + }, + defaultMarkers: { + type: 'code', + displayName: 'Default markers', + options: { + mode: 'javascript', + theme: 'duotone-light', + className: 'map-location-input pr-2', + }, + validation: { + schema: { + type: 'union', + schemas: [{ type: 'array', element: { type: 'object' } }, { type: 'object' }], + }, + defaultValue: `{{ [{"lat": 40.7128, "lng": -73.935242}] }}`, + }, + }, + polygonPoints: { + type: 'code', + displayName: 'Polygon points', + options: { + mode: 'javascript', + theme: 'duotone-light', + className: 'map-location-input pr-2', + }, + validation: { + schema: { + type: 'union', + schemas: [{ type: 'array', element: { type: 'object' } }, { type: 'object' }], + }, + defaultValue: `{{[{"lat": 40.7032, "lng": -73.975242},{"lat": 40.7532, "lng": -73.943242},{"lat": 40.7032, "lng": -73.916242}]}}`, + }, + }, + addNewMarkers: { + type: 'toggle', + displayName: 'Add new markers', + validation: { + schema: { + type: 'boolean', + }, + defaultValue: true, + }, + }, + canSearch: { + type: 'toggle', + displayName: 'Search for places', + validation: { + schema: { + type: 'boolean', + }, + defaultValue: true, + }, + }, + }, + events: { + onBoundsChange: { displayName: 'On bounds change' }, + onCreateMarker: { displayName: 'On create marker' }, + onMarkerClick: { displayName: 'On marker click' }, + onPolygonClick: { displayName: 'On polygon click' }, + }, + actions: [ + { + handle: 'setLocation', + displayName: 'Set Location', + params: [ + { handle: 'lat', displayName: 'Latitude' }, + { handle: 'lng', displayName: 'Longitude' }, + ], + }, + ], + styles: { + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { + type: 'boolean', + }, + defaultValue: true, + }, + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { + type: 'boolean', + }, + defaultValue: false, + }, + }, + }, + exposedVariables: { + center: {}, + }, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + initialLocation: { + value: `{{ {"lat": 40.7128, "lng": -73.935242} }}`, + }, + defaultMarkers: { + value: `{{ [{"lat": 40.7128, "lng": -73.935242}] }}`, + }, + polygonPoints: { + value: `{{[\n\t\t{"lat": 40.7032, "lng": -73.975242},\n\t\t{"lat": 40.7532, "lng": -73.943242},\n\t\t{"lat": 40.7032, "lng": -73.916242}\n]}}`, + }, + canSearch: { + value: `{{true}}`, + }, + addNewMarkers: { value: `{{true}}` }, + }, + events: [], + styles: { + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/modal.js b/frontend/src/Editor/WidgetManager/configs/modal.js new file mode 100644 index 0000000000..728df495ee --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/modal.js @@ -0,0 +1,181 @@ +export const modalConfig = { + name: 'Modal', + displayName: 'Modal', + description: 'Show pop-up windows', + component: 'Modal', + defaultSize: { + width: 10, + height: 34, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + title: { + type: 'code', + displayName: 'Title', + validation: { + schema: { type: 'string' }, + defaultValue: 'This title can be changed', + }, + }, + loadingState: { + type: 'toggle', + displayName: 'Loading state', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + useDefaultButton: { + type: 'toggle', + displayName: 'Use default trigger button', + validation: { + schema: { + type: 'boolean', + }, + defaultValue: true, + }, + }, + triggerButtonLabel: { + type: 'code', + displayName: 'Trigger button label', + validation: { + schema: { + type: 'string', + }, + defaultValue: 'Launch Modal', + }, + }, + hideTitleBar: { type: 'toggle', displayName: 'Hide title bar' }, + hideCloseButton: { type: 'toggle', displayName: 'Hide close button' }, + hideOnEsc: { type: 'toggle', displayName: 'Close on escape key' }, + closeOnClickingOutside: { type: 'toggle', displayName: 'Close on clicking outside' }, + + size: { + type: 'select', + displayName: 'Modal size', + options: [ + { name: 'small', value: 'sm' }, + { name: 'medium', value: 'lg' }, + { name: 'large', value: 'xl' }, + ], + validation: { + schema: { type: 'string' }, + defaultValue: 'lg', + }, + }, + modalHeight: { + type: 'code', + displayName: 'Modal height', + validation: { + schema: { type: 'string' }, + defaultValue: '400px', + }, + }, + }, + events: { + onOpen: { displayName: 'On open' }, + onClose: { displayName: 'On close' }, + }, + styles: { + headerBackgroundColor: { + type: 'color', + displayName: 'Header background color', + validation: { + schema: { type: 'string' }, + defaultValue: '#ffffffff', + }, + }, + headerTextColor: { + type: 'color', + displayName: 'Header title color', + validation: { + schema: { type: 'string' }, + defaultValue: '#000000', + }, + }, + bodyBackgroundColor: { + type: 'color', + displayName: 'Body background color', + validation: { + schema: { type: 'string' }, + defaultValue: '#ffffffff', + }, + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + triggerButtonBackgroundColor: { + type: 'color', + displayName: 'Trigger button background color', + validation: { + schema: { type: 'string' }, + defaultValue: false, + }, + }, + triggerButtonTextColor: { + type: 'color', + displayName: 'Trigger button text color', + validation: { + schema: { type: 'string' }, + defaultValue: false, + }, + }, + }, + exposedVariables: { + show: false, + }, + actions: [ + { + handle: 'open', + displayName: 'Open', + }, + { + handle: 'close', + displayName: 'Close', + }, + ], + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + title: { value: 'This title can be changed' }, + loadingState: { value: `{{false}}` }, + useDefaultButton: { value: `{{true}}` }, + triggerButtonLabel: { value: `Launch Modal` }, + size: { value: 'lg' }, + hideTitleBar: { value: '{{false}}' }, + hideCloseButton: { value: '{{false}}' }, + hideOnEsc: { value: '{{true}}' }, + closeOnClickingOutside: { value: '{{false}}' }, + modalHeight: { value: '400px' }, + }, + events: [], + styles: { + headerBackgroundColor: { value: '#ffffffff' }, + headerTextColor: { value: '#000000' }, + bodyBackgroundColor: { value: '#ffffffff' }, + disabledState: { value: '{{false}}' }, + visibility: { value: '{{true}}' }, + triggerButtonBackgroundColor: { value: '#4D72FA' }, + triggerButtonTextColor: { value: '#ffffffff' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/multiselect.js b/frontend/src/Editor/WidgetManager/configs/multiselect.js new file mode 100644 index 0000000000..5ffb58ef40 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/multiselect.js @@ -0,0 +1,136 @@ +export const multiselectConfig = { + name: 'Multiselect', + displayName: 'Multiselect', + description: 'Multiple item selector', + defaultSize: { + width: 12, + height: 30, + }, + component: 'Multiselect', + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + actions: [ + { + handle: 'selectOption', + displayName: 'Select Option', + params: [ + { + handle: 'option', + displayName: 'Option', + }, + ], + }, + { + handle: 'deselectOption', + displayName: 'Deselect Option', + params: [ + { + handle: 'option', + displayName: 'Option', + }, + ], + }, + { + handle: 'clearSelections', + displayName: 'Clear selections', + }, + ], + properties: { + label: { + type: 'code', + displayName: 'Label', + validation: { + schema: { type: 'string' }, + defaultValue: 'Select', + }, + }, + value: { + type: 'code', + displayName: 'Default value', + validation: { + schema: { type: 'array', element: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, + defaultValue: "['two', 'three']", + }, + }, + values: { + type: 'code', + displayName: 'Option values', + validation: { + schema: { type: 'array', element: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, + defaultValue: "['one', 'two', 'three']", + }, + }, + display_values: { + type: 'code', + displayName: 'Option labels', + validation: { + schema: { type: 'array', element: { type: 'string' } }, + defaultValue: "['one', 'two', 'three']", + }, + }, + showAllOption: { + type: 'toggle', + displayName: 'Enable select All option', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + }, + events: { + onSelect: { displayName: 'On select' }, + onSearchTextChanged: { displayName: 'On search text changed' }, + }, + styles: { + borderRadius: { + type: 'code', + displayName: 'Border radius', + validation: { + schema: { type: 'number' }, + defaultValue: 4, + }, + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + }, + exposedVariables: { + values: {}, + searchText: '', + }, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + label: { value: 'Select' }, + value: { value: '{{[2,3]}}' }, + values: { value: '{{[1,2,3]}}' }, + display_values: { value: '{{["one", "two", "three"]}}' }, + visible: { value: '{{true}}' }, + showAllOption: { value: '{{false}}' }, + }, + events: [], + styles: { + borderRadius: { value: '4' }, + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/numberinput.js b/frontend/src/Editor/WidgetManager/configs/numberinput.js new file mode 100644 index 0000000000..148754d5be --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/numberinput.js @@ -0,0 +1,300 @@ +export const numberinputConfig = { + name: 'NumberInput', + displayName: 'Number Input', + description: 'Numeric input field', + component: 'NumberInput', + defaultSize: { + width: 10, + height: 40, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + label: { + type: 'code', + displayName: 'Label', + validation: { schema: { type: 'string' }, defaultValue: 'Label' }, + }, + value: { + type: 'code', + displayName: 'Default value', + validation: { + validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, + defaultValue: 0, + }, + }, + placeholder: { + type: 'code', + displayName: 'Placeholder', + validation: { + schema: { type: 'string' }, + defaultValue: 'Enter your input', + }, + }, + decimalPlaces: { + type: 'code', + displayName: 'Decimal places', + validation: { + schema: { type: 'number' }, + defaultValue: 2, + }, + }, + loadingState: { + type: 'toggle', + displayName: 'Loading state', + validation: { schema: { type: 'boolean' }, defaultValue: false }, + section: 'additionalActions', + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { schema: { type: 'boolean' }, defaultValue: true }, + section: 'additionalActions', + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { schema: { type: 'boolean' }, defaultValue: false }, + section: 'additionalActions', + }, + tooltip: { + type: 'code', + displayName: 'Tooltip', + validation: { schema: { type: 'string' }, defaultValue: 'Tooltip text' }, + section: 'additionalActions', + placeholder: 'Enter tooltip text', + }, + }, + events: { + onChange: { displayName: 'On change' }, + onFocus: { displayName: 'On focus' }, + onBlur: { displayName: 'On blur' }, + onEnterPressed: { displayName: 'On enter pressed' }, + }, + styles: { + color: { + type: 'color', + displayName: 'Text', + validation: { schema: { type: 'string' }, defaultValue: '#1B1F24' }, + accordian: 'label', + }, + alignment: { + type: 'switch', + displayName: 'Alignment', + validation: { schema: { type: 'string' }, defaultValue: 'side' }, + options: [ + { displayName: 'Side', value: 'side' }, + { displayName: 'Top', value: 'top' }, + ], + accordian: 'label', + }, + direction: { + type: 'switch', + displayName: '', + validation: { schema: { type: 'string' }, defaultValue: 'left' }, + showLabel: false, + isIcon: true, + options: [ + { displayName: 'alignleftinspector', value: 'left', iconName: 'alignleftinspector' }, + { displayName: 'alignrightinspector', value: 'right', iconName: 'alignrightinspector' }, + ], + accordian: 'label', + isFxNotRequired: true, + }, + width: { + type: 'slider', + displayName: 'Width', + accordian: 'label', + conditionallyRender: { + key: 'alignment', + value: 'side', + }, + isFxNotRequired: true, + }, + auto: { + type: 'checkbox', + displayName: 'auto', + showLabel: false, + validation: { schema: { type: 'boolean' }, defaultValue: true }, + accordian: 'label', + conditionallyRender: { + key: 'alignment', + value: 'side', + }, + isFxNotRequired: true, + }, + + backgroundColor: { + type: 'color', + displayName: 'Background', + validation: { schema: { type: 'string' }, defaultValue: '#fff' }, + accordian: 'field', + }, + borderColor: { + type: 'color', + displayName: 'Border', + validation: { schema: { type: 'string' }, defaultValue: '#CCD1D5' }, + accordian: 'field', + }, + accentColor: { + type: 'color', + displayName: 'Accent', + validation: { schema: { type: 'string' }, defaultValue: '#4368E3' }, + accordian: 'field', + }, + textColor: { + type: 'color', + displayName: 'Text', + validation: { schema: { type: 'string' }, defaultValue: '#1B1F24' }, + accordian: 'field', + }, + errTextColor: { + type: 'color', + displayName: 'Error text', + validation: { schema: { type: 'string' }, defaultValue: '#D72D39' }, + accordian: 'field', + }, + icon: { + type: 'icon', + displayName: 'Icon', + validation: { schema: { type: 'string' }, defaultValue: 'IconHome2' }, + accordian: 'field', + visibility: false, + }, + iconColor: { + type: 'color', + displayName: 'Icon color', + validation: { schema: { type: 'string' }, defaultValue: '#CFD3D859' }, + accordian: 'field', + visibility: false, + showLabel: false, + }, + borderRadius: { + type: 'numberInput', + displayName: 'Border radius', + validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, defaultValue: 6 }, + accordian: 'field', + }, + boxShadow: { + type: 'boxShadow', + displayName: 'Box Shadow', + validation: { + schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, + defaultValue: '0px 0px 0px 0px #00000040', + }, + accordian: 'field', + }, + padding: { + type: 'switch', + displayName: 'Padding', + validation: { + schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, + defaultValue: 'default', + }, + isFxNotRequired: true, + options: [ + { displayName: 'Default', value: 'default' }, + { displayName: 'None', value: 'none' }, + ], + accordian: 'container', + }, + }, + actions: [ + { + handle: 'setText', + displayName: 'Set text', + params: [{ handle: 'text', displayName: 'text', defaultValue: '100' }], + }, + { + handle: 'clear', + displayName: 'Clear', + }, + { + handle: 'setFocus', + displayName: 'Set focus', + }, + { + handle: 'setBlur', + displayName: 'Set blur', + }, + { + handle: 'setVisibility', + displayName: 'Set visibility', + params: [{ handle: 'disable', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], + }, + { + handle: 'setDisable', + displayName: 'Set disable', + params: [{ handle: 'disable', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], + }, + { + handle: 'setLoading', + displayName: 'Set loading', + params: [{ handle: 'loading', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], + }, + ], + exposedVariables: { + value: 99, + isMandatory: false, + isVisible: true, + isDisabled: false, + isLoading: false, + }, + validation: { + mandatory: { type: 'toggle', displayName: 'Make this field mandatory' }, + regex: { type: 'code', displayName: 'Regex', placeholder: '^d+$' }, + minValue: { type: 'code', displayName: 'Min value', placeholder: 'Enter min value' }, + maxValue: { type: 'code', displayName: 'Max value', placeholder: 'Enter max value' }, + customRule: { + type: 'code', + displayName: 'Custom validation', + placeholder: `{{components.text2.text=='yes'&&'valid'}}`, + }, + }, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + validation: { + mandatory: { value: '{{false}}' }, + regex: { value: '' }, + minValue: { value: '' }, + maxValue: { value: '' }, + customRule: { value: '' }, + }, + properties: { + value: { value: '' }, + label: { value: 'Label' }, + maxValue: { value: '' }, + minValue: { value: '' }, + placeholder: { value: '0' }, + decimalPlaces: { value: '{{2}}' }, + tooltip: { value: '' }, + visibility: { value: '{{true}}' }, + loadingState: { value: '{{false}}' }, + disabledState: { value: '{{false}}' }, + }, + events: [], + styles: { + borderRadius: { value: '{{6}}' }, + backgroundColor: { value: '#fff' }, + borderColor: { value: '#CCD1D5' }, + accentColor: { value: '#4368E3' }, + errTextColor: { value: '#D72D39' }, + textColor: { value: '#1B1F24' }, + color: { value: '#1B1F24' }, + iconColor: { value: '#CFD3D859' }, + direction: { value: 'left' }, + width: { value: '{{33}}' }, + alignment: { value: 'side' }, + auto: { value: '{{true}}' }, + padding: { value: 'default' }, + boxShadow: { value: '0px 0px 0px 0px #00000040' }, + icon: { value: 'IconHome2' }, + iconVisibility: { value: false }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/pagination.js b/frontend/src/Editor/WidgetManager/configs/pagination.js new file mode 100644 index 0000000000..6fabfa889a --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/pagination.js @@ -0,0 +1,78 @@ +export const paginationConfig = { + name: 'Pagination', + displayName: 'Pagination', + description: 'Navigate pages', + component: 'Pagination', + defaultSize: { + width: 10, + height: 30, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + numberOfPages: { + type: 'code', + displayName: 'Number of pages', + validation: { + schema: { type: 'number' }, + defaultValue: '{{5}}', + }, + }, + defaultPageIndex: { + type: 'code', + displayName: 'Default page index', + validation: { + schema: { type: 'number' }, + defaultValue: '{{1}}', + }, + }, + }, + validation: {}, + events: { + onPageChange: { displayName: 'On Page Change' }, + }, + styles: { + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + }, + exposedVariables: { + totalPages: null, + currentPageIndex: null, + }, + definition: { + validation: {}, + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + numberOfPages: { + value: '{{5}}', + }, + defaultPageIndex: { + value: '{{1}}', + }, + }, + events: [], + styles: { + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/passwordinput.js b/frontend/src/Editor/WidgetManager/configs/passwordinput.js new file mode 100644 index 0000000000..808a8dd093 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/passwordinput.js @@ -0,0 +1,296 @@ +export const passinputConfig = { + name: 'PasswordInput', + displayName: 'Password Input', + description: 'Secure text input', + component: 'PasswordInput', + defaultSize: { + width: 10, + height: 40, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + label: { + type: 'code', + displayName: 'Label', + validation: { schema: { type: 'string' }, defaultValue: 'Label' }, + }, + placeholder: { + type: 'code', + displayName: 'Placeholder', + validation: { + schema: { type: 'string' }, + defaultValue: 'Password', + }, + }, + value: { + type: 'code', + displayName: 'Default value', + validation: { + schema: { + type: 'string', + }, + defaultValue: 'default value', + }, + }, + loadingState: { + type: 'toggle', + displayName: 'Loading state', + validation: { schema: { type: 'boolean' }, defaultValue: false }, + section: 'additionalActions', + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { schema: { type: 'boolean' }, defaultValue: true }, + section: 'additionalActions', + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { schema: { type: 'boolean' }, defaultValue: false }, + section: 'additionalActions', + }, + tooltip: { + type: 'code', + displayName: 'Tooltip', + validation: { schema: { type: 'string' }, defaultValue: 'Tooltip text' }, + section: 'additionalActions', + placeholder: 'Enter tooltip text', + }, + }, + validation: { + mandatory: { type: 'toggle', displayName: 'Make this field mandatory' }, + regex: { + type: 'code', + displayName: 'Regex', + placeholder: '^(?=.*[a-z])(?=.*[A-Z])(?=.*d)[a-zA-Zd]{8,}$', + }, + minLength: { type: 'code', displayName: 'Min length', placeholder: 'Enter min length' }, + maxLength: { type: 'code', displayName: 'Max length', placeholder: 'Enter max length' }, + customRule: { + type: 'code', + displayName: 'Custom validation', + placeholder: `{{components.text2.text=='yes'&&'valid'}}`, + }, + }, + events: { + onChange: { displayName: 'On change' }, + onFocus: { displayName: 'On focus' }, + onBlur: { displayName: 'On blur' }, + onEnterPressed: { displayName: 'On enter pressed' }, + }, + styles: { + color: { + type: 'color', + displayName: 'Text', + validation: { schema: { type: 'string' }, defaultValue: '#1B1F24' }, + accordian: 'label', + }, + alignment: { + type: 'switch', + displayName: 'Alignment', + validation: { schema: { type: 'string' }, defaultValue: 'side' }, + options: [ + { displayName: 'Side', value: 'side' }, + { displayName: 'Top', value: 'top' }, + ], + accordian: 'label', + }, + direction: { + type: 'switch', + displayName: '', + validation: { schema: { type: 'string' }, defaultValue: 'left' }, + showLabel: false, + isIcon: true, + options: [ + { displayName: 'alignleftinspector', value: 'left', iconName: 'alignleftinspector' }, + { displayName: 'alignrightinspector', value: 'right', iconName: 'alignrightinspector' }, + ], + accordian: 'label', + isFxNotRequired: true, + }, + width: { + type: 'slider', + displayName: 'Width', + accordian: 'label', + conditionallyRender: { + key: 'alignment', + value: 'side', + }, + isFxNotRequired: true, + }, + auto: { + type: 'checkbox', + displayName: 'auto', + showLabel: false, + validation: { schema: { type: 'boolean' }, defaultValue: true }, + accordian: 'label', + conditionallyRender: { + key: 'alignment', + value: 'side', + }, + isFxNotRequired: true, + }, + + backgroundColor: { + type: 'color', + displayName: 'Background', + validation: { schema: { type: 'string' }, defaultValue: '#fff' }, + accordian: 'field', + }, + accentColor: { + type: 'color', + displayName: 'Accent', + validation: { schema: { type: 'string' }, defaultValue: '#4368E3' }, + accordian: 'field', + }, + borderColor: { + type: 'color', + displayName: 'Border', + validation: { schema: { type: 'string' }, defaultValue: '#CCD1D5' }, + accordian: 'field', + }, + textColor: { + type: 'color', + displayName: 'Text', + validation: { schema: { type: 'string' }, defaultValue: '#1B1F24' }, + accordian: 'field', + }, + errTextColor: { + type: 'color', + displayName: 'Error text', + validation: { schema: { type: 'string' }, defaultValue: '#D72D39' }, + accordian: 'field', + }, + icon: { + type: 'icon', + displayName: 'Icon', + validation: { schema: { type: 'string' }, defaultValue: 'IconLock' }, + accordian: 'field', + visibility: false, + }, + iconColor: { + type: 'color', + displayName: 'Icon color', + validation: { schema: { type: 'string' }, defaultValue: '#CFD3D859' }, + accordian: 'field', + visibility: false, + showLabel: false, + }, + borderRadius: { + type: 'numberInput', + displayName: 'Border radius', + validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, defaultValue: 6 }, + accordian: 'field', + }, + boxShadow: { + type: 'boxShadow', + displayName: 'Box shadow', + validation: { + schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, + defaultValue: '0px 0px 0px 0px #00000040', + }, + accordian: 'field', + }, + + padding: { + type: 'switch', + displayName: 'Padding', + validation: { + schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, + defaultValue: 'default', + }, + options: [ + { displayName: 'Default', value: 'default' }, + { displayName: 'None', value: 'none' }, + ], + isFxNotRequired: true, + accordian: 'container', + }, + }, + exposedVariables: { + value: '', + mandatory: { value: '{{false}}' }, + isVisible: true, + isDisabled: false, + isLoading: false, + }, + actions: [ + { + handle: 'setText', + displayName: 'Set text', + params: [{ handle: 'text', displayName: 'text', defaultValue: 'New Text' }], + }, + { + handle: 'clear', + displayName: 'Clear', + }, + { + handle: 'setFocus', + displayName: 'Set focus', + }, + { + handle: 'setBlur', + displayName: 'Set blur', + }, + { + handle: 'setVisibility', + displayName: 'Set visibility', + params: [{ handle: 'disable', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], + }, + { + handle: 'setDisable', + displayName: 'Set disable', + params: [{ handle: 'disable', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], + }, + { + handle: 'setLoading', + displayName: 'Set loading', + params: [{ handle: 'loading', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], + }, + ], + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + placeholder: { value: 'Password' }, + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + loadingState: { value: '{{false}}' }, + tooltip: { value: '' }, + label: { value: 'Label' }, + value: { value: '' }, + }, + validation: { + mandatory: { value: false }, + regex: { value: '' }, + minLength: { value: '' }, + maxLength: { value: '' }, + customRule: { value: '' }, + }, + events: [], + styles: { + borderRadius: { value: '{{6}}' }, + backgroundColor: { value: '#fff' }, + borderColor: { value: '#CCD1D5' }, + accentColor: { value: '#4368E3' }, + errTextColor: { value: '#D72D39' }, + textColor: { value: '#1B1F24' }, + iconColor: { value: '#CFD3D859' }, + direction: { value: 'left' }, + width: { value: '{{33}}' }, + alignment: { value: 'side' }, + color: { value: '#1B1F24' }, + auto: { value: '{{true}}' }, + padding: { value: 'default' }, + boxShadow: { value: '0px 0px 0px 0px #00000040' }, + icon: { value: 'IconLock' }, + iconVisibility: { value: true }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/pdf.js b/frontend/src/Editor/WidgetManager/configs/pdf.js new file mode 100644 index 0000000000..729e709932 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/pdf.js @@ -0,0 +1,73 @@ +export const pdfConfig = { + name: 'PDF', + displayName: 'PDF', + description: 'Embed PDF documents', + component: 'PDF', + properties: { + url: { + type: 'code', + displayName: 'File URL', + validation: { + schema: { type: 'string' }, + defaultValue: 'https://upload.wikimedia.org/wikipedia/commons/general.pdf', + }, + }, + scale: { + type: 'toggle', + displayName: 'Scale page to width', + validation: { schema: { type: 'boolean' }, defaultValue: true }, + }, + pageControls: { + type: 'toggle', + displayName: 'Show page controls', + validation: { schema: { type: 'boolean' }, defaultValue: true }, + }, + showDownloadOption: { + type: 'toggle', + displayName: 'Show download button', + validation: { schema: { type: 'boolean' }, defaultValue: true }, + }, + }, + defaultSize: { + width: 20, + height: 640, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + events: {}, + styles: { + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { schema: { type: 'boolean' }, defaultValue: true }, + }, + }, + exposedVariables: {}, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + url: { + value: + 'https://upload.wikimedia.org/wikipedia/commons/e/ee/Guideline_No._GD-Ed-2214_Marman_Clamp_Systems_Design_Guidelines.pdf', + }, + scale: { + value: '{{true}}', + }, + pageControls: { + value: `{{true}}`, + }, + showDownloadOption: { + value: `{{true}}`, + }, + }, + events: [], + styles: { + visibility: { value: '{{true}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/qrscanner.js b/frontend/src/Editor/WidgetManager/configs/qrscanner.js new file mode 100644 index 0000000000..a2ef018a00 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/qrscanner.js @@ -0,0 +1,51 @@ +export const qrscannerConfig = { + name: 'QrScanner', + displayName: 'QR Scanner', + description: 'Scan QR codes and hold its data', + component: 'QrScanner', + defaultSize: { + width: 10, + height: 300, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: {}, + events: { + onDetect: { displayName: 'On detect' }, + }, + styles: { + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + }, + exposedVariables: { + lastDetectedValue: '', + }, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{true}}' }, + }, + properties: {}, + events: [], + styles: { + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/radiobutton.js b/frontend/src/Editor/WidgetManager/configs/radiobutton.js new file mode 100644 index 0000000000..145d2dd180 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/radiobutton.js @@ -0,0 +1,121 @@ +export const radiobuttonConfig = { + name: 'Radio-button', + displayName: 'Radio Button', + description: 'Select one from multiple choices', + component: 'RadioButton', + defaultSize: { + width: 6, + height: 60, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + label: { + type: 'code', + displayName: 'Label', + validation: { + schema: { type: 'string' }, + defaultValue: 'Select', + }, + }, + value: { + type: 'code', + displayName: 'Default value', + validation: { + schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }, { type: 'boolean' }] }, + defaultValue: true, + }, + }, + values: { + type: 'code', + displayName: 'Option values', + validation: { + schema: { + type: 'array', + element: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }, { type: 'boolean' }] }, + }, + defaultValue: [true, false], + }, + }, + display_values: { + type: 'code', + displayName: 'Option labels', + validation: { + schema: { type: 'array', element: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, + defaultValue: ['yes', 'no'], + }, + }, + }, + events: { + onSelectionChange: { displayName: 'On select' }, + }, + styles: { + textColor: { + type: 'color', + displayName: 'Text color', + validation: { + schema: { type: 'string' }, + defaultValue: '#000000', + }, + }, + activeColor: { + type: 'color', + displayName: 'Active color', + validation: { + schema: { type: 'string' }, + defaultValue: '#000000', + }, + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + }, + actions: [ + { + handle: 'selectOption', + displayName: 'Select Option', + params: [ + { + handle: 'option', + displayName: 'Option', + }, + ], + }, + ], + exposedVariables: {}, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + label: { value: 'Select' }, + value: { value: '{{true}}' }, + values: { value: '{{[true,false]}}' }, + display_values: { value: '{{["yes", "no"]}}' }, + visible: { value: '{{true}}' }, + }, + events: [], + styles: { + textColor: { value: '' }, + activeColor: { value: '' }, + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/rangeslider.js b/frontend/src/Editor/WidgetManager/configs/rangeslider.js new file mode 100644 index 0000000000..4379ac564d --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/rangeslider.js @@ -0,0 +1,113 @@ +export const rangeSliderConfig = { + name: 'RangeSlider', + displayName: 'Range Slider', + description: 'Adjust value range', + component: 'RangeSlider', + defaultSize: { + width: 9, + height: 30, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + min: { + type: 'number', + displayName: 'Min', + validation: { + schema: { type: 'number' }, + defaultValue: 0, + }, + }, + max: { + type: 'number', + displayName: 'Max', + validation: { + schema: { type: 'number' }, + defaultValue: 100, + }, + }, + value: { + type: 'code', + displayName: 'Value', + validation: { + schema: { type: 'number' }, + defaultValue: 50, + }, + }, + enableTwoHandle: { + type: 'toggle', + displayName: 'Two handles', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + }, + events: { + onChange: { displayName: 'On change' }, + }, + styles: { + lineColor: { + type: 'color', + displayName: 'Line color', + validation: { + schema: { type: 'string' }, + defaultValue: '#375FCF', + }, + }, + handleColor: { + type: 'color', + displayName: 'Handle color', + validation: { + schema: { type: 'string' }, + defaultValue: '#375FCF', + }, + }, + trackColor: { + type: 'color', + displayName: 'Track color', + validation: { + schema: { type: 'string' }, + defaultValue: '#375FCF', + }, + }, + visibility: { + type: 'code', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + }, + exposedVariables: { + value: null, + }, + definition: { + others: { + showOnDesktop: { value: true }, + showOnMobile: { value: false }, + }, + properties: { + min: { + value: '{{0}}', + }, + max: { + value: '{{100}}', + }, + value: { + value: '{{50}}', + }, + enableTwoHandle: { value: false }, + }, + events: [], + styles: { + lineColor: { value: '' }, + handleColor: { value: '' }, + trackColor: { value: '' }, + visibility: { value: '{{true}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/richtextarea.js b/frontend/src/Editor/WidgetManager/configs/richtextarea.js new file mode 100644 index 0000000000..eacee66529 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/richtextarea.js @@ -0,0 +1,73 @@ +export const richtextareaConfig = { + name: 'RichTextEditor', + displayName: 'Text Editor', + description: 'Rich text editor', + component: 'RichTextEditor', + defaultSize: { + width: 16, + height: 210, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + placeholder: { + type: 'code', + displayName: 'Placeholder', + validation: { + schema: { type: 'string' }, + defaultValue: 'Placeholder text', + }, + }, + defaultValue: { + type: 'code', + displayName: 'Default value', + validation: { + schema: { type: 'string' }, + defaultValue: 'Default text', + }, + }, + }, + events: {}, + styles: { + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { + type: 'boolean', + }, + defaultValue: true, + }, + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { + type: 'boolean', + }, + defaultValue: false, + }, + }, + }, + exposedVariables: { + value: '', + }, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + placeholder: { value: 'Placeholder text' }, + defaultValue: { value: '' }, + }, + events: [], + styles: { + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/spinner.js b/frontend/src/Editor/WidgetManager/configs/spinner.js new file mode 100644 index 0000000000..a6bf80b9be --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/spinner.js @@ -0,0 +1,60 @@ +export const spinnerConfig = { + name: 'Spinner', + displayName: 'Spinner', + description: 'Indicate loading state', + component: 'Spinner', + defaultSize: { + width: 4, + height: 30, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: {}, + events: {}, + styles: { + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + colour: { + type: 'color', + displayName: 'Colour', + validation: { + schema: { type: 'string' }, + defaultValue: '#0565ff', + }, + }, + size: { + type: 'select', + displayName: 'Size', + options: [ + { name: 'small', value: 'sm' }, + { name: 'large', value: 'lg' }, + ], + validation: { + schema: { type: 'string' }, + defaultValue: 'sm', + }, + }, + }, + exposedVariables: {}, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: {}, + events: [], + styles: { + visibility: { value: '{{true}}' }, + size: { value: 'sm' }, + colour: { value: '#0565ff' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/starrating.js b/frontend/src/Editor/WidgetManager/configs/starrating.js new file mode 100644 index 0000000000..01240d0369 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/starrating.js @@ -0,0 +1,117 @@ +export const starratingConfig = { + name: 'StarRating', + displayName: 'Rating', + description: 'Star rating', + component: 'StarRating', + defaultSize: { + width: 10, + height: 30, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + label: { + type: 'code', + displayName: 'Label', + validation: { + schema: { type: 'string' }, + defaultValue: 'Select your rating', + }, + }, + maxRating: { + type: 'code', + displayName: 'Number of stars', + validation: { + schema: { type: 'number' }, + defaultValue: 5, + }, + }, + defaultSelected: { + type: 'code', + displayName: 'Default no of selected stars', + validation: { + schema: { type: 'number' }, + defaultValue: 5, + }, + }, + allowHalfStar: { + type: 'toggle', + displayName: 'Enable half star', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + tooltips: { + type: 'code', + displayName: 'Tooltips', + validation: { + schema: { type: 'array', element: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, + defaultValue: '[]', + }, + }, + }, + events: { + onChange: { displayName: 'On Change' }, + }, + styles: { + textColor: { + type: 'color', + displayName: 'Star color', + validation: { + schema: { type: 'string' }, + defaultValue: '#ffb400', + }, + }, + labelColor: { + type: 'color', + displayName: 'Label color', + validation: { + schema: { type: 'string' }, + defaultValue: '#000000', + }, + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + }, + exposedVariables: { + value: 0, + }, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + label: { value: 'Select your rating' }, + maxRating: { value: '5' }, + defaultSelected: { value: '5' }, + allowHalfStar: { value: '{{false}}' }, + visible: { value: '{{true}}' }, + tooltips: { value: '{{[]}}' }, + }, + events: [], + styles: { + textColor: { value: '#ffb400' }, + labelColor: { value: '' }, + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/statistics.js b/frontend/src/Editor/WidgetManager/configs/statistics.js new file mode 100644 index 0000000000..d364d78524 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/statistics.js @@ -0,0 +1,105 @@ +export const statisticsConfig = { + name: 'Statistics', + displayName: 'Statistics', + description: 'Show key metrics', + component: 'Statistics', + defaultSize: { + width: 9, + height: 152, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + primaryValueLabel: { + type: 'code', + displayName: 'Primary value label', + validation: { schema: { type: 'string' }, defaultValue: 'This months earnings' }, + }, + primaryValue: { + type: 'code', + displayName: 'Primary value', + validation: { + schema: { type: 'string' }, + defaultValue: '682.3', + }, + }, + hideSecondary: { + type: 'toggle', + displayName: 'Hide secondary value', + validation: { schema: { type: 'boolean' }, defaultValue: false }, + }, + secondaryValueLabel: { + type: 'code', + displayName: 'Secondary value label', + validation: { schema: { type: 'string' }, defaultValue: 'Last month' }, + }, + secondaryValue: { + type: 'code', + displayName: 'Secondary value', + validation: { schema: { type: 'string' }, defaultValue: '2.85' }, + }, + secondarySignDisplay: { + type: 'code', + displayName: 'Secondary sign display', + + validation: { schema: { type: 'string' }, defaultValue: 'positive' }, + }, + loadingState: { + type: 'toggle', + displayName: 'Loading state', + validation: { schema: { type: 'boolean' }, defaultValue: false }, + }, + }, + events: {}, + styles: { + primaryLabelColour: { + type: 'color', + displayName: 'Primary label colour', + validation: { schema: { type: 'string' }, defaultValue: '#8092AB' }, + }, + primaryTextColour: { + type: 'color', + displayName: 'Primary text colour', + validation: { schema: { type: 'string' }, defaultValue: '#000000' }, + }, + secondaryLabelColour: { + type: 'color', + displayName: 'Secondary label colour', + validation: { schema: { type: 'string' }, defaultValue: '#8092AB' }, + }, + secondaryTextColour: { + type: 'color', + displayName: 'Secondary text colour', + validation: { schema: { type: 'string' }, defaultValue: '#36AF8B' }, + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { schema: { type: 'boolean' }, defaultValue: true }, + }, + }, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + primaryValueLabel: { value: 'This months earnings' }, + primaryValue: { value: '682.3' }, + secondaryValueLabel: { value: 'Last month' }, + secondaryValue: { value: '2.85' }, + secondarySignDisplay: { value: 'positive' }, + loadingState: { value: `{{false}}` }, + }, + events: [], + styles: { + primaryLabelColour: { value: '#8092AB' }, + primaryTextColour: { value: '#000000' }, + secondaryLabelColour: { value: '#8092AB' }, + secondaryTextColour: { value: '#36AF8B' }, + visibility: { value: '{{true}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/steps.js b/frontend/src/Editor/WidgetManager/configs/steps.js new file mode 100644 index 0000000000..a39c634919 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/steps.js @@ -0,0 +1,108 @@ +export const stepsConfig = { + name: 'Steps', + displayName: 'Steps', + description: 'Step-by-step navigation aid', + component: 'Steps', + properties: { + steps: { + type: 'code', + displayName: 'Steps', + validation: { + schema: { + type: 'array', + element: { type: 'object', object: { id: { type: 'number' } } }, + }, + defaultValue: `[{ name: 'step 1'}, {name: 'step 2'}]`, + }, + }, + currentStep: { + type: 'code', + displayName: 'Current step', + validation: { + schema: { type: 'number' }, + defaultValue: 1, + }, + }, + stepsSelectable: { + type: 'toggle', + displayName: 'Steps selectable', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + }, + defaultSize: { + width: 22, + height: 38, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + events: { + onSelect: { displayName: 'On select' }, + }, + styles: { + color: { + type: 'color', + displayName: 'Color', + validation: { + schema: { type: 'string' }, + defaultValue: '#000000', + }, + }, + textColor: { + type: 'color', + displayName: 'Text color', + validation: { + schema: { type: 'string' }, + defaultValue: '#000000', + }, + }, + theme: { + type: 'select', + displayName: 'Theme', + options: [ + { name: 'titles', value: 'titles' }, + { name: 'numbers', value: 'numbers' }, + { name: 'plain', value: 'plain' }, + ], + validation: { + schema: { type: 'string' }, + defaultValue: 'titles', + }, + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + }, + exposedVariables: { + currentStepId: '3', + }, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + steps: { + value: `{{ [{ name: 'step 1', tooltip: 'some tooltip', id: 1},{ name: 'step 2', tooltip: 'some tooltip', id: 2},{ name: 'step 3', tooltip: 'some tooltip', id: 3},{ name: 'step 4', tooltip: 'some tooltip', id: 4},{ name: 'step 5', tooltip: 'some tooltip', id: 5}]}}`, + }, + currentStep: { value: '{{3}}' }, + stepsSelectable: { value: true }, + }, + events: [], + styles: { + visibility: { value: '{{true}}' }, + theme: { value: 'titles' }, + color: { value: '' }, + textColor: { value: '' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/svgImage.js b/frontend/src/Editor/WidgetManager/configs/svgImage.js new file mode 100644 index 0000000000..315a6e2c28 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/svgImage.js @@ -0,0 +1,55 @@ +export const svgImageConfig = { + name: 'SvgImage', + displayName: 'Svg Image', + description: 'Display SVG graphics', + component: 'SvgImage', + properties: { + data: { + type: 'code', + displayName: 'Svg data', + validation: { + schema: { type: 'string' }, + defaultValue: + "", + }, + }, + }, + defaultSize: { + width: 4, + height: 50, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + events: {}, + styles: { + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + }, + exposedVariables: { + value: {}, + }, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + data: { + value: + '', + }, + }, + events: [], + styles: { + visibility: { value: '{{true}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/table.js b/frontend/src/Editor/WidgetManager/configs/table.js new file mode 100644 index 0000000000..13fb42830c --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/table.js @@ -0,0 +1,650 @@ +export const tableConfig = { + name: 'Table', + displayName: 'Table', + description: 'Display paginated tabular data', + component: 'Table', + properties: { + title: { + type: 'string', + displayName: 'Title', + validation: { + schema: { type: 'string' }, + }, + }, + data: { + type: 'code', + displayName: 'Table data', + validation: { + schema: { + type: 'array', + element: { type: 'object' }, + }, + defaultValue: "[{ id: 1, name: 'Sarah', email: 'sarah@mail.com' }]", + }, + }, + loadingState: { + type: 'toggle', + displayName: 'Loading state', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + columns: { + type: 'array', + displayName: 'Table Columns', + }, + useDynamicColumn: { + type: 'toggle', + displayName: 'Use dynamic column', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + columnData: { + type: 'code', + displayName: 'Column data', + }, + rowsPerPage: { + type: 'code', + displayName: 'Number of rows per page', + validation: { + schema: { type: 'number' }, + defaultValue: 10, + }, + }, + + enableNextButton: { + type: 'toggle', + displayName: 'Enable next page button', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + enabledSort: { + type: 'toggle', + displayName: 'Enable column sorting', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + hideColumnSelectorButton: { + type: 'toggle', + displayName: 'Hide column selector button', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + enablePrevButton: { + type: 'toggle', + displayName: 'Enable previous page button', + validation: { + schema: { type: 'boolean' }, + }, + }, + totalRecords: { + type: 'code', + displayName: 'Total records server side', + validation: { + schema: { type: 'number' }, + defaultValue: 10, + }, + }, + enablePagination: { + type: 'toggle', + displayName: 'Enable pagination', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + serverSidePagination: { + type: 'clientServerSwitch', + displayName: 'Type', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + options: [ + { displayName: 'Client side', value: 'clientSide' }, + { displayName: 'Server side', value: 'serverSide' }, + ], + }, + serverSideSearch: { + type: 'clientServerSwitch', + displayName: 'Type', + options: [ + { displayName: 'Client side', value: 'clientSide' }, + { displayName: 'Server side', value: 'serverSide' }, + ], + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + serverSideSort: { + type: 'clientServerSwitch', + displayName: 'Type', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + options: [ + { displayName: 'Client side', value: 'clientSide' }, + { displayName: 'Server side', value: 'serverSide' }, + ], + }, + serverSideFilter: { + type: 'clientServerSwitch', + displayName: 'Type', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + options: [ + { displayName: 'Client side', value: 'clientSide' }, + { displayName: 'Server side', value: 'serverSide' }, + ], + defaultValue: 'clientSide', + }, + actionButtonBackgroundColor: { + type: 'color', + displayName: 'Background color', + validation: { + schema: { type: 'string' }, + defaultValue: '#375FCF', + }, + }, + actionButtonTextColor: { + type: 'color', + displayName: 'Text color', + validation: { + schema: { type: 'string' }, + defaultValue: '#fff', + }, + }, + displaySearchBox: { + type: 'toggle', + displayName: 'Show search', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + showDownloadButton: { + type: 'toggle', + displayName: 'Show download button', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + showFilterButton: { + type: 'toggle', + displayName: 'Enable filtering', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + showBulkUpdateActions: { + type: 'toggle', + displayName: 'Show update buttons', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + allowSelection: { + type: 'toggle', + displayName: 'Allow selection', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + showBulkSelector: { + type: 'toggle', + displayName: 'Bulk selection', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + highlightSelectedRow: { + type: 'toggle', + displayName: 'Highlight selected row', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + defaultSelectedRow: { + type: 'code', + displayName: 'Default selected row', + validation: { + schema: { + type: 'object', + }, + defaultValue: { id: 1 }, + }, + }, + + showAddNewRowButton: { + type: 'toggle', + displayName: 'Show add new row button', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + selectRowOnCellEdit: { + type: 'toggle', + displayName: 'Select row on cell edit', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + }, + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { type: 'boolean' }, + }, + }, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop ' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + defaultSize: { + width: 35, + height: 456, + }, + events: { + onRowHovered: { displayName: 'Row hovered' }, + onRowClicked: { displayName: 'Row clicked' }, + onBulkUpdate: { displayName: 'Save changes' }, + onPageChanged: { displayName: 'Page changed' }, + onSearch: { displayName: 'Search' }, + onCancelChanges: { displayName: 'Cancel changes' }, + onSort: { displayName: 'Sort applied' }, + onCellValueChanged: { displayName: 'Cell value changed' }, + onFilterChanged: { displayName: 'Filter changed' }, + onNewRowsAdded: { displayName: 'Add new rows' }, + }, + styles: { + textColor: { + type: 'color', + displayName: 'Text Color', + validation: { + schema: { type: 'string' }, + defaultValue: '#000', + }, + accordian: 'Data', + }, + tableType: { + type: 'select', + displayName: 'Row style', + options: [ + { name: 'Regular', value: 'table-classic' }, + { name: 'Bordered', value: 'table-bordered' }, + { name: 'Striped', value: 'table-striped' }, + ], + validation: { + schema: { type: 'string' }, + defaultValue: 'table-classic', + }, + accordian: 'Data', + }, + cellSize: { + type: 'select', + displayName: 'Cell height', + options: [ + { name: 'Regular', value: 'regular' }, + { name: 'Condensed', value: 'condensed' }, + ], + validation: { + schema: { type: 'string' }, + defaultValue: 'regular', + }, + accordian: 'Data', + }, + contentWrap: { + type: 'toggle', + showLabel: false, + toggleLabel: 'Content wrap', + validation: { + schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'boolean' }] }, + }, + accordian: 'Data', + }, + maxRowHeight: { + type: 'switch', + displayName: 'Max row height', + validation: { schema: { type: 'string' } }, + accordian: 'Data', + options: [ + { displayName: 'Auto', value: 'auto' }, + { displayName: 'Custom', value: 'custom' }, + ], + conditionallyRender: { + key: 'contentWrap', + value: true, + }, + }, + maxRowHeightValue: { + type: 'tableRowHeightInput', + showLabel: false, + validation: { + schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'boolean' }] }, + }, + accordian: 'Data', + conditionallyRender: [ + { + key: 'maxRowHeight', + value: 'custom', + }, + { + key: 'contentWrap', + value: true, + }, + ], + }, + actionButtonRadius: { + type: 'numberInput', + displayName: 'Button radius', + validation: { + schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'boolean' }] }, + }, + accordian: 'Action button', + }, + borderRadius: { + type: 'numberInput', + displayName: 'Border radius', + validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, + accordian: 'Container', + }, + borderColor: { + type: 'color', + displayName: 'Border', + validation: { + schema: { type: 'string' }, + defaultValue: false, + }, + accordian: 'Container', + }, + boxShadow: { + type: 'boxShadow', + displayName: 'Box Shadow', + validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, + accordian: 'Container', + }, + padding: { + type: 'switch', + displayName: 'Padding', + validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, + options: [ + { displayName: 'Default', value: 'default' }, + { displayName: 'None', value: 'none' }, + ], + accordian: 'Container', + }, + }, + exposedVariables: { + selectedRow: {}, + changeSet: {}, + dataUpdates: [], + pageIndex: 1, + searchText: '', + selectedRows: [], + filters: [], + }, + actions: [ + { + handle: 'setPage', + displayName: 'Set page', + params: [ + { + handle: 'page', + displayName: 'Page', + defaultValue: '{{1}}', + }, + ], + }, + { + handle: 'selectRow', + displayName: 'Select row', + params: [ + { handle: 'key', displayName: 'Key' }, + { handle: 'value', displayName: 'Value' }, + ], + }, + { + handle: 'deselectRow', + displayName: 'Deselect row', + }, + { + handle: 'discardChanges', + displayName: 'Discard Changes', + }, + { + handle: 'discardNewlyAddedRows', + displayName: 'Discard newly added rows', + }, + { + displayName: 'Download table data', + handle: 'downloadTableData', + params: [ + { + handle: 'type', + displayName: 'Type', + options: [ + { name: 'Download as Excel', value: 'xlsx' }, + { name: 'Download as CSV', value: 'csv' }, + { name: 'Download as PDF', value: 'pdf' }, + ], + defaultValue: `{{Download as Excel}}`, + type: 'select', + }, + ], + }, + { + handle: 'selectAllRows', + displayName: 'Select all rows', + }, + { + handle: 'deselectAllRows', + displayName: 'Deselect all rows', + }, + { + handle: 'setFilters', + displayName: 'Set filters', + params: [{ handle: 'parameters', displayName: 'Parameters' }], + }, + { + handle: 'clearFilters', + displayName: 'Clear filters', + }, + ], + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + title: { value: 'Table' }, + visible: { value: '{{true}}' }, + loadingState: { value: '{{false}}' }, + data: { + value: + "{{ [ \n\t\t{ id: 1, name: 'Olivia Nguyen', email: 'olivia.nguyen@example.com', date: '15/05/2022', mobile_number: 9876543210, interest: ['Reading', 'Traveling','Photography'], photo: 'https://reqres.in/img/faces/7-image.jpg' }, \n\t\t{ id: 2, name: 'Liam Patel', email: 'liam.patel@example.com', date: '20/09/2021', mobile_number: 8765432109, interest: ['Cooking','Gardening','Hiking'], photo: 'https://reqres.in/img/faces/5-image.jpg' }, \n\t\t{ id: 3, name: 'Sophia Reyes', email: 'sophia.reyes@example.com', date: '01/01/2023', mobile_number: 7654321098, interest: ['Music','Dancing','Crafting'], photo: 'https://reqres.in/img/faces/3-image.jpg' }, \n\t\t{ id: 4, name: 'Jacob Hernandez', email: 'jacob.hernandez@example.com', date: '10/11/2022', mobile_number: 6543210987, interest: ['Reading', 'Traveling', 'Volunteering'], photo: 'https://reqres.in/img/faces/1-image.jpg' }, \n\t\t{ id: 5, name: 'William Sanchez', email: 'william.sanchez@example.com', date: '07/01/2021', mobile_number: 4321098765, interest: ['Music', 'Dancing', 'Hiking'], photo: 'https://reqres.in/img/faces/4-image.jpg' }, \n\t\t{ id: 6, name: 'Ethan Morales', email: 'ethan.morales@example.com', date: '05/11/2021', mobile_number: 2109876543, interest: ['Cooking', 'Traveling', 'Photography'], photo: 'https://reqres.in/img/faces/6-image.jpg' }, \n\t\t{ id: 7, name: 'Mia Tiana', email: 'mia.tiana@example.com', date: '21/11/2022', mobile_number: 1098705217, interest: ['Music', 'Gardening', 'Hiking'], photo: 'https://reqres.in/img/faces/2-image.jpg' }, \n\t\t{ id: 8, name: 'Lucas Ramirez', email: 'lucas.ramirez@example.com', date: '31/03/2023', mobile_number: 9876543210, interest: ['Reading', 'Dancing', 'Crafting'], photo: 'https://reqres.in/img/faces/9-image.jpg' }, \n\t\t{ id: 9, name: 'Alexander Vela', email: 'alexander.vela@example.com', date: '07/09/2022', mobile_number: 7654321098, interest: ['Music','Gardening','Photography'], photo: 'https://reqres.in/img/faces/8-image.jpg' }, \n\t\t{ id: 10, name: 'Michael Reyes', email: 'michael.reyes@example.com', date: '25/12/2021', mobile_number: 5432109876, interest: ['Cooking','Crafting','Volunteering'], photo: 'https://reqres.in/img/faces/10-image.jpg' } \n] }}", + }, + useDynamicColumn: { value: '{{false}}' }, + columnData: { + value: + "{{[{name: 'email', key: 'email', id: '1'}, {name: 'Full name', key: 'name', id: '2', isEditable: true}]}}", + }, + rowsPerPage: { value: '{{10}}' }, + serverSidePagination: { value: '{{false}}' }, + enableNextButton: { value: '{{true}}' }, + enablePrevButton: { value: '{{true}}' }, + totalRecords: { value: 10 }, + enablePagination: { value: '{{true}}' }, + serverSideSort: { value: '{{false}}' }, + serverSideFilter: { value: '{{false}}' }, + displaySearchBox: { value: '{{true}}' }, + showDownloadButton: { value: '{{true}}' }, + showFilterButton: { value: '{{true}}' }, + autogenerateColumns: { value: true, generateNestedColumns: true }, + isAllColumnsEditable: { value: '{{false}}' }, + columns: { + value: [ + { + name: 'id', + id: 'e3ecbf7fa52c4d7210a93edb8f43776267a489bad52bd108be9588f790126737', + autogenerated: true, + fxActiveFields: [], + columnSize: 30, + columnType: 'string', + }, + { + name: 'photo', + key: 'photo', + id: 'f23b7d134b2e490ea41e3bb8eeb8c8e37472af243bf6b70d5af294482097e3a2', + autogenerated: true, + fxActiveFields: [], + columnType: 'image', + objectFit: 'contain', + borderRadius: '100', + columnSize: 70, + }, + { + name: 'name', + id: '5d2a3744a006388aadd012fcc15cc0dbcb5f9130e0fbb64c558561c97118754a', + autogenerated: true, + fxActiveFields: [], + columnSize: 130, + columnType: 'string', + }, + { + name: 'email', + id: 'afc9a5091750a1bd4760e38760de3b4be11a43452ae8ae07ce2eebc569fe9a7f', + autogenerated: true, + fxActiveFields: [], + columnSize: 230, + columnType: 'string', + }, + { + name: 'date', + id: '27b75c8af9d34d1eaa1f9bb7f8f9f7b0abf1823e799748c8bb57e74f53b2c1dc', + autogenerated: true, + fxActiveFields: [], + columnType: 'datepicker', + isTimeChecked: false, + dateFormat: 'DD/MM/YYYY', + parseDateFormat: 'DD/MM/YYYY', + isDateSelectionEnabled: true, + columnSize: 130, + }, + { + name: 'mobile_number', + id: '9c2e3c40572a4aefb8e179ee39a0e1ac9dc2b2e6634be56e1c05be13c3d1de56', + autogenerated: true, + fxActiveFields: [], + columnType: 'number', + columnSize: 140, + }, + { + name: 'interest', + key: 'interest', + id: 'f23b7d134b2e490ea41e3bb8eeb8c8e37472af243bf6b70d5af294482097e3a1', + autogenerated: true, + fxActiveFields: [], + columnType: 'newMultiSelect', + columnSize: 300, + options: [ + { + label: 'Reading', + value: 'Reading', + }, + { + label: 'Traveling', + value: 'Traveling', + }, + { + label: 'Photography', + value: 'Photography', + }, + { + label: 'Music', + value: 'Music', + }, + { + label: 'Cooking', + value: 'Cooking', + }, + { + label: 'Crafting', + value: 'Crafting', + }, + { + label: 'Voluntering', + value: 'Voluntering', + }, + { + label: 'Garndening', + value: 'Garndening', + }, + { + label: 'Dancing', + value: 'Dancing', + }, + { + label: 'Hiking', + value: 'Hiking', + }, + ], + }, + ], + }, + showBulkUpdateActions: { value: '{{true}}' }, + showBulkSelector: { value: '{{false}}' }, + highlightSelectedRow: { value: '{{false}}' }, + columnSizes: { value: '{{({})}}' }, + actions: { value: [] }, + enabledSort: { value: '{{true}}' }, + hideColumnSelectorButton: { value: '{{false}}' }, + defaultSelectedRow: { value: '{{{"id":1}}}' }, + showAddNewRowButton: { value: '{{true}}' }, + allowSelection: { value: '{{true}}' }, + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + }, + events: [], + styles: { + textColor: { value: '#000' }, + actionButtonRadius: { value: '0' }, + cellSize: { value: 'regular' }, + borderRadius: { value: '8' }, + tableType: { value: 'table-classic' }, + maxRowHeight: { value: 'auto' }, + maxRowHeightValue: { value: '{{0}}' }, // Setting it here as 0 since TableRowHeightInput component will set the value + contentWrap: { value: '{{true}}' }, + boxShadow: { value: '0px 0px 0px 0px #00000090' }, + padding: { value: 'default' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/tabs.js b/frontend/src/Editor/WidgetManager/configs/tabs.js new file mode 100644 index 0000000000..0108d3de0f --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/tabs.js @@ -0,0 +1,183 @@ +export const tabsConfig = { + name: 'Tabs', + displayName: 'Tabs', + description: 'Organize content in tabs', + defaultSize: { + width: 30, + height: 300, + }, + defaultChildren: [ + { + componentName: 'Image', + layout: { + top: 60, + left: 17, + height: 100, + }, + tab: 0, + properties: ['source'], + defaultValue: { + source: 'https://uploads-ssl.webflow.com/6266634263b9179f76b2236e/62666392f32677b5cb2fb84b_logo.svg', + }, + }, + { + componentName: 'Text', + layout: { + top: 100, + left: 5, + height: 50, + width: 34, + }, + tab: 1, + properties: ['text'], + defaultValue: { + text: 'Open-source low-code framework to build & deploy internal tools within minutes.', + }, + }, + { + componentName: 'Table', + layout: { + top: 0, + left: 1, + width: 41, + height: 250, + }, + tab: 2, + }, + ], + component: 'Tabs', + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + tabs: { + type: 'code', + displayName: 'Tabs', + validation: { + schema: { + type: 'array', + element: { + type: 'object', + object: { + id: { + type: 'union', + schemas: [{ type: 'string' }, { type: 'number' }], + }, + }, + }, + }, + defaultValue: [ + { title: 'Home', id: '0' }, + { title: 'Profile', id: '1' }, + { title: 'Settings', id: '2' }, + ], + }, + }, + defaultTab: { + type: 'code', + displayName: 'Default tab', + validation: { + schema: { + type: 'union', + schemas: [{ type: 'string' }, { type: 'number' }], + }, + defaultValue: '0', + }, + }, + hideTabs: { + type: 'toggle', + displayName: 'Hide tabs', + validation: { + schema: { + type: 'boolean', + }, + defaultValue: false, + }, + }, + renderOnlyActiveTab: { + type: 'toggle', + displayName: 'Render only active tab', + validation: { + schema: { + type: 'boolean', + }, + defaultValue: true, + }, + }, + }, + events: { onTabSwitch: { displayName: 'On tab switch' } }, + styles: { + highlightColor: { + type: 'color', + displayName: 'Highlight color', + validation: { + schema: { type: 'string' }, + defaultValue: '#375FCF', + }, + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { + type: 'boolean', + }, + defaultValue: false, + }, + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { + type: 'boolean', + }, + defaultValue: false, + }, + }, + tabWidth: { + type: 'select', + displayName: 'Tab width', + options: [ + { name: 'Auto', value: 'auto' }, + { name: 'Equally split', value: 'split' }, + ], + }, + }, + actions: [ + { + handle: 'setTab', + displayName: 'Set current tab', + params: [ + { + handle: 'id', + displayName: 'Id', + }, + ], + }, + ], + exposedVariables: { currentTab: '' }, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + tabs: { + value: + "{{[ \n\t\t{ title: 'Home', id: '0' }, \n\t\t{ title: 'Profile', id: '1' }, \n\t\t{ title: 'Settings', id: '2' } \n ]}}", + }, + defaultTab: { value: '0' }, + hideTabs: { value: false }, + renderOnlyActiveTab: { value: true }, + }, + events: [], + styles: { + highlightColor: { value: '#375FCF' }, + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + tabWidth: { value: 'auto' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/tags.js b/frontend/src/Editor/WidgetManager/configs/tags.js new file mode 100644 index 0000000000..8af289b23a --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/tags.js @@ -0,0 +1,59 @@ +export const tagsConfig = { + name: 'Tags', + displayName: 'Tags', + description: 'Display tag labels', + component: 'Tags', + defaultSize: { + width: 8, + height: 30, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + data: { + type: 'code', + displayName: 'Tags', + validation: { + schema: { + type: 'array', + element: { + type: 'object', + object: { title: { type: 'string' }, color: { type: 'string' }, textColor: { type: 'string' } }, + }, + }, + defaultValue: + "{{ [{ title: 'success', color: '#2fb344', textColor: '#fff' }, { title: 'info', color: '#206bc4', textColor: '#fff' }] }}", + }, + }, + }, + events: {}, + styles: { + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + }, + exposedVariables: {}, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + data: { + value: + "{{ [ \n\t\t{ title: 'success', color: '#2fb344', textColor: '#fff' }, \n\t\t{ title: 'info', color: '#206bc4', textColor: '#fff' }, \n\t\t{ title: 'warning', color: '#f59f00', textColor: '#fff' }, \n\t\t{ title: 'danger', color: '#d63939', textColor: '#fff' } ] }}", + }, + }, + events: [], + styles: { + visibility: { value: '{{true}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/text.js b/frontend/src/Editor/WidgetManager/configs/text.js new file mode 100644 index 0000000000..ada530d127 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/text.js @@ -0,0 +1,298 @@ +export const textConfig = { + name: 'Text', + displayName: 'Text', + description: 'Display text or HTML', + component: 'Text', + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + textFormat: { + type: 'switch', + displayName: 'Text Format', + options: [ + { displayName: 'Plain text', value: 'plainText' }, + { displayName: 'Markdown', value: 'markdown' }, + { displayName: 'HTML', value: 'html' }, + ], + isFxNotRequired: true, + defaultValue: { value: 'plainText' }, + fullWidth: true, + }, + text: { + type: 'code', + displayName: 'TextComponentTextInput', // Keeping this name unique so that we can filter it in Codehinter + validation: { + schema: { type: 'string' }, + defaultValue: 'Hello, there!', + }, + showLabel: false, + }, + loadingState: { + type: 'toggle', + displayName: 'Show loading state', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + section: 'additionalActions', + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + section: 'additionalActions', + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + section: 'additionalActions', + }, + tooltip: { + type: 'code', + displayName: 'Tooltip', + validation: { schema: { type: 'string' }, defaultValue: 'Tooltip text' }, + section: 'additionalActions', + placeholder: 'Enter tooltip text', + }, + }, + defaultSize: { + width: 6, + height: 40, + }, + events: { + onClick: { displayName: 'On click' }, + onHover: { displayName: 'On hover' }, + }, + styles: { + textSize: { + type: 'numberInput', + displayName: 'Size', + validation: { + schema: [{ type: 'string' }, { type: 'number' }], + defaultValue: 14, + }, + accordian: 'Text', + }, + fontWeight: { + type: 'select', + displayName: 'Weight', + options: [ + { name: 'normal', value: 'normal' }, + { name: 'bold', value: 'bold' }, + { name: 'lighter', value: 'lighter' }, + { name: 'bolder', value: 'bolder' }, + ], + accordian: 'Text', + }, + fontStyle: { + type: 'switch', + displayName: 'Style', + options: [ + { displayName: 'Normal', value: 'normal', iconName: 'minus' }, + { displayName: 'Oblique', value: 'oblique', iconName: 'oblique' }, + { displayName: 'Italic', value: 'italic', iconName: 'italic' }, + ], + isIcon: true, + accordian: 'Text', + }, + textColor: { + type: 'color', + displayName: 'Color', + validation: { + schema: { type: 'string' }, + }, + accordian: 'Text', + }, + isScrollRequired: { + type: 'switch', + displayName: 'Scroll', + options: [ + { displayName: 'Enable', value: 'enabled' }, + { displayName: 'Disable', value: 'disabled' }, + ], + accordian: 'Text', + }, + lineHeight: { type: 'numberInput', displayName: 'Line height', accordian: 'Text' }, + textIndent: { type: 'numberInput', displayName: 'Text indent', accordian: 'Text' }, + textAlign: { + type: 'alignButtons', + displayName: 'Alignment', + validation: { + schema: { type: 'string' }, + defaultValue: 'left', + }, + accordian: 'Text', + }, + verticalAlignment: { + type: 'switch', + displayName: '', + validation: { schema: { type: 'string' }, defaultValue: 'center' }, + showLabel: false, + isIcon: true, + options: [ + { displayName: 'alignverticallytop', value: 'top', iconName: 'alignverticallytop' }, + { displayName: 'alignverticallycenter', value: 'center', iconName: 'alignverticallycenter' }, + { displayName: 'alignverticallybottom', value: 'bottom', iconName: 'alignverticallybottom' }, + ], + accordian: 'Text', + isFxNotRequired: true, + }, + decoration: { + type: 'switch', + displayName: 'Decoration', + isIcon: true, + options: [ + { displayName: 'none', value: 'none', iconName: 'minus' }, + { displayName: 'underline', value: 'underline', iconName: 'underline' }, + { displayName: 'overline', value: 'overline', iconName: 'overline' }, + { displayName: 'line-through', value: 'line-through', iconName: 'linethrough' }, + ], + accordian: 'Text', + }, + transformation: { + type: 'switch', + displayName: 'Transformation', + isIcon: true, + options: [ + { displayName: 'none', value: 'none', iconName: 'minus' }, + { displayName: 'uppercase', value: 'uppercase', iconName: 'uppercase' }, + { displayName: 'lowercase', value: 'lowercase', iconName: 'lowercase' }, + { displayName: 'capitalize', value: 'capitalize', iconName: 'capitalize' }, + ], + accordian: 'Text', + }, + letterSpacing: { type: 'numberInput', displayName: 'Letter spacing', accordian: 'Text' }, + wordSpacing: { type: 'numberInput', displayName: 'Word spacing', accordian: 'Text' }, + fontVariant: { + type: 'select', + displayName: 'Font variant', + options: [ + { name: 'normal', value: 'normal' }, + { name: 'small-caps', value: 'small-caps' }, + { name: 'initial', value: 'initial' }, + { name: 'inherit', value: 'inherit' }, + ], + accordian: 'Text', + }, + + backgroundColor: { + type: 'color', + displayName: 'Background', + validation: { + schema: { type: 'string' }, + defaultValue: '#fff00000', + }, + accordian: 'Container', + colorPickerPosition: 'top', + }, + borderColor: { + type: 'color', + displayName: 'Border', + validation: { + schema: { type: 'string' }, + defaultValue: '#000000', + }, + accordian: 'Container', + colorPickerPosition: 'top', + }, + borderRadius: { + type: 'numberInput', + displayName: 'Border radius', + validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, defaultValue: 6 }, + accordian: 'Container', + }, + boxShadow: { + type: 'boxShadow', + displayName: 'Box shadow', + validation: { + schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, + defaultValue: '0px 0px 0px 0px #00000090', + }, + accordian: 'Container', + }, + padding: { + type: 'switch', + displayName: 'Padding', + validation: { schema: { type: 'string' }, defaultValue: 'default' }, + options: [ + { displayName: 'Default', value: 'default' }, + { displayName: 'None', value: 'none' }, + ], + accordian: 'Container', + isFxNotRequired: true, + }, + }, + exposedVariables: { + text: 'Hello, there!', + }, + actions: [ + { + handle: 'setText', + displayName: 'Set text', + params: [{ handle: 'text', displayName: 'Text', defaultValue: 'New text' }], + }, + { + handle: 'setVisibility', + displayName: 'Set visibility', + params: [{ handle: 'setVisibility', displayName: 'Value', defaultValue: `{{true}}`, type: 'toggle' }], + }, + { + handle: 'clear', + displayName: 'Clear', + }, + { + handle: 'setLoading', + displayName: 'Set loading', + params: [{ handle: 'setLoading', displayName: 'Value', defaultValue: `{{false}}`, type: 'toggle' }], + }, + { + handle: 'setDisable', + displayName: 'Set disable', + params: [{ handle: 'setDisable', displayName: 'Value', defaultValue: `{{false}}`, type: 'toggle' }], + }, + ], + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + textFormat: { value: 'html' }, + text: { value: `Hello {{globals.currentUser.firstName}}👋` }, + loadingState: { value: `{{false}}` }, + disabledState: { value: '{{false}}' }, + visibility: { value: '{{true}}' }, + }, + events: [], + styles: { + backgroundColor: { value: '#fff00000' }, + textColor: { value: '#000000' }, + textSize: { value: '{{14}}' }, + textAlign: { value: 'left' }, + fontWeight: { value: 'normal' }, + decoration: { value: 'none' }, + transformation: { value: 'none' }, + fontStyle: { value: 'normal' }, + lineHeight: { value: '{{1.5}}' }, + textIndent: { value: '{{0}}' }, + letterSpacing: { value: '{{0}}' }, + wordSpacing: { value: '{{0}}' }, + fontVariant: { value: 'normal' }, + verticalAlignment: { value: 'center' }, + padding: { value: 'default' }, + boxShadow: { value: '0px 0px 0px 0px #00000090' }, + borderColor: { value: '' }, + borderRadius: { value: '{{6}}' }, + isScrollRequired: { value: 'enabled' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/textarea.js b/frontend/src/Editor/WidgetManager/configs/textarea.js new file mode 100644 index 0000000000..c5e71be77d --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/textarea.js @@ -0,0 +1,93 @@ +export const textareaConfig = { + name: 'Textarea', + displayName: 'Text Area', + description: 'Multi-line text input', + component: 'TextArea', + defaultSize: { + width: 6, + height: 100, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + value: { + type: 'code', + displayName: 'Default value', + validation: { + schema: { type: 'string' }, + defaultValue: 'default text', + }, + }, + placeholder: { + type: 'code', + displayName: 'Placeholder', + validation: { + schema: { type: 'string' }, + defaultValue: 'Placeholder text', + }, + }, + }, + events: {}, + styles: { + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + borderRadius: { + type: 'code', + displayName: 'Border radius', + validation: { + schema: { type: 'number' }, + defaultValue: 4, + }, + }, + }, + exposedVariables: { + value: + 'ToolJet is an open-source low-code platform for building and deploying internal tools with minimal engineering efforts 🚀', + }, + actions: [ + { + handle: 'setText', + displayName: 'Set Text', + params: [{ handle: 'text', displayName: 'text', defaultValue: 'New Text' }], + }, + { + handle: 'clear', + displayName: 'Clear', + }, + ], + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + value: { + value: + 'ToolJet is an open-source low-code platform for building and deploying internal tools with minimal engineering efforts 🚀', + }, + placeholder: { value: 'Placeholder text' }, + }, + events: [], + styles: { + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + borderRadius: { value: '{{4}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/textinput.js b/frontend/src/Editor/WidgetManager/configs/textinput.js new file mode 100644 index 0000000000..15a52ea306 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/textinput.js @@ -0,0 +1,302 @@ +export const textinputConfig = { + name: 'TextInput', + displayName: 'Text Input', + description: 'User text input field', + component: 'TextInput', + defaultSize: { + width: 10, + height: 40, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + label: { + type: 'code', + displayName: 'Label', + validation: { schema: { type: 'string' }, defaultValue: 'Label' }, + }, + placeholder: { + type: 'code', + displayName: 'Placeholder', + validation: { + schema: { type: 'string' }, + defaultValue: 'Enter your input', + }, + }, + value: { + type: 'code', + displayName: 'Default value', + validation: { + schema: { + type: 'string', + }, + defaultValue: 'Default value', + }, + }, + loadingState: { + type: 'toggle', + displayName: 'Loading state', + validation: { schema: { type: 'boolean' }, defaultValue: false }, + section: 'additionalActions', + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { schema: { type: 'boolean' }, defaultValue: true }, + section: 'additionalActions', + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { schema: { type: 'boolean' }, defaultValue: false }, + section: 'additionalActions', + }, + tooltip: { + type: 'code', + displayName: 'Tooltip', + validation: { schema: { type: 'string' }, defaultValue: 'Tooltip text' }, + section: 'additionalActions', + placeholder: 'Enter tooltip text', + }, + }, + validation: { + mandatory: { type: 'toggle', displayName: 'Make this field mandatory' }, + regex: { type: 'code', displayName: 'Regex', placeholder: '^[a-zA-Z0-9_ -]{3,16}$' }, + minLength: { type: 'code', displayName: 'Min length', placeholder: 'Enter min length' }, + maxLength: { type: 'code', displayName: 'Max length', placeholder: 'Enter max length' }, + customRule: { + type: 'code', + displayName: 'Custom validation', + placeholder: `{{components.text2.text=='yes'&&'valid'}}`, + }, + }, + events: { + onChange: { displayName: 'On change' }, + onEnterPressed: { displayName: 'On enter pressed' }, + onFocus: { displayName: 'On focus' }, + onBlur: { displayName: 'On blur' }, + }, + styles: { + color: { + type: 'color', + displayName: 'Text', + validation: { schema: { type: 'string' }, defaultValue: '#1B1F24' }, + accordian: 'label', + }, + alignment: { + type: 'switch', + displayName: 'Alignment', + validation: { schema: { type: 'string' }, defaultValue: 'side' }, + options: [ + { displayName: 'Side', value: 'side' }, + { displayName: 'Top', value: 'top' }, + ], + accordian: 'label', + }, + direction: { + type: 'switch', + displayName: '', + validation: { schema: { type: 'string' }, defaultValue: 'left' }, + showLabel: false, + isIcon: true, + options: [ + { displayName: 'alignleftinspector', value: 'left', iconName: 'alignleftinspector' }, + { displayName: 'alignrightinspector', value: 'right', iconName: 'alignrightinspector' }, + ], + accordian: 'label', + isFxNotRequired: true, + }, + width: { + type: 'slider', + displayName: 'Width', + accordian: 'label', + conditionallyRender: { + key: 'alignment', + value: 'side', + }, + isFxNotRequired: true, + }, + auto: { + type: 'checkbox', + displayName: 'auto', + showLabel: false, + validation: { schema: { type: 'boolean' }, defaultValue: true }, + accordian: 'label', + conditionallyRender: { + key: 'alignment', + value: 'side', + }, + isFxNotRequired: true, + }, + + backgroundColor: { + type: 'color', + displayName: 'Background', + validation: { schema: { type: 'string' }, defaultValue: '#fff' }, + accordian: 'field', + }, + borderColor: { + type: 'color', + displayName: 'Border', + validation: { schema: { type: 'string' }, defaultValue: '#CCD1D5' }, + accordian: 'field', + }, + accentColor: { + type: 'color', + displayName: 'Accent', + validation: { schema: { type: 'string' }, defaultValue: '#4368E3' }, + accordian: 'field', + }, + textColor: { + type: 'color', + displayName: 'Text', + validation: { schema: { type: 'string' }, defaultValue: '#1B1F24' }, + accordian: 'field', + }, + errTextColor: { + type: 'color', + displayName: 'Error text', + validation: { schema: { type: 'string' }, defaultValue: '#D72D39' }, + accordian: 'field', + }, + icon: { + type: 'icon', + displayName: 'Icon', + validation: { schema: { type: 'string' }, defaultValue: 'IconHome2' }, + accordian: 'field', + visibility: false, + }, + iconColor: { + type: 'color', + displayName: 'Icon color', + validation: { schema: { type: 'string' }, defaultValue: '#CFD3D859' }, + accordian: 'field', + visibility: false, + showLabel: false, + }, + borderRadius: { + type: 'numberInput', + displayName: 'Border radius', + validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, defaultValue: 6 }, + accordian: 'field', + }, + boxShadow: { + type: 'boxShadow', + displayName: 'Box Shadow', + validation: { + schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, + defaultValue: '0px 0px 0px 0px #00000040', + }, + accordian: 'field', + }, + padding: { + type: 'switch', + displayName: 'Padding', + validation: { + schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, + defaultValue: 'default', + }, + isFxNotRequired: true, + options: [ + { displayName: 'Default', value: 'default' }, + { displayName: 'None', value: 'none' }, + ], + accordian: 'container', + }, + }, + exposedVariables: { + value: '', + isMandatory: false, + isVisible: true, + isDisabled: false, + isLoading: false, + }, + actions: [ + { + handle: 'setText', + displayName: 'Set text', + params: [{ handle: 'text', displayName: 'text', defaultValue: 'New text' }], + }, + { + handle: 'clear', + displayName: 'Clear', + }, + { + handle: 'setFocus', + displayName: 'Set focus', + }, + { + handle: 'setBlur', + displayName: 'Set blur', + }, + { + handle: 'disable', + displayName: 'Disable(deprecated)', + params: [{ handle: 'disable', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], + }, + { + handle: 'visibility', + displayName: 'Visibility(deprecated)', + params: [{ handle: 'visibility', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], + }, + { + handle: 'setVisibility', + displayName: 'Set visibility', + params: [{ handle: 'disable', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], + }, + { + handle: 'setDisable', + displayName: 'Set disable', + params: [{ handle: 'disable', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], + }, + { + handle: 'setLoading', + displayName: 'Set loading', + params: [{ handle: 'loading', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], + }, + ], + definition: { + validation: { + mandatory: { value: '{{false}}' }, + regex: { value: '' }, + minLength: { value: '' }, + maxLength: { value: '' }, + customRule: { value: '' }, + }, + + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + value: { value: '' }, + label: { value: 'Label' }, + placeholder: { value: 'Enter your input' }, + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + loadingState: { value: '{{false}}' }, + tooltip: { value: '' }, + }, + events: [], + styles: { + textColor: { value: '#1B1F24' }, + borderColor: { value: '#CCD1D5' }, + accentColor: { value: '#4368E3' }, + errTextColor: { value: '#D72D39' }, + borderRadius: { value: '{{6}}' }, + backgroundColor: { value: '#fff' }, + iconColor: { value: '#CFD3D859' }, + direction: { value: 'left' }, + width: { value: '{{33}}' }, + alignment: { value: 'side' }, + color: { value: '#1B1F24' }, + auto: { value: '{{true}}' }, + padding: { value: 'default' }, + boxShadow: { value: '0px 0px 0px 0px #00000040' }, + icon: { value: 'IconHome2' }, + iconVisibility: { value: false }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/timeline.js b/frontend/src/Editor/WidgetManager/configs/timeline.js new file mode 100644 index 0000000000..6ece608f5c --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/timeline.js @@ -0,0 +1,60 @@ +export const timelineConfig = { + name: 'Timeline', + displayName: 'Timeline', + description: 'Show event timeline', + component: 'Timeline', + properties: { + data: { + type: 'code', + displayName: 'Timeline data', + validation: { + schema: { type: 'array', element: { type: 'object' } }, + defaultValue: "[{title: 'Product Launched', date: '20/10/2021'}]", + }, + }, + hideDate: { + type: 'toggle', + displayName: 'Hide date', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + }, + defaultSize: { + width: 20, + height: 270, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + events: {}, + styles: { + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { schema: { type: 'boolean' } }, + }, + }, + exposedVariables: { + value: {}, + }, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + data: { + value: + "{{ [ \n\t\t{ title: 'Product Launched', subTitle: 'First version of our product released to public', date: '20/10/2021', iconBackgroundColor: '#4d72fa'},\n\t\t { title: 'First Signup', subTitle: 'Congratulations! We got our first signup', date: '22/10/2021', iconBackgroundColor: '#4d72fa'}, \n\t\t { title: 'First Payment', subTitle: 'Hurray! We got our first payment', date: '01/11/2021', iconBackgroundColor: '#4d72fa'} \n] }}", + }, + hideDate: { value: '{{false}}' }, + }, + events: [], + styles: { + visibility: { value: '{{true}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/timer.js b/frontend/src/Editor/WidgetManager/configs/timer.js new file mode 100644 index 0000000000..a7cfe05a41 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/timer.js @@ -0,0 +1,97 @@ +export const timerConfig = { + name: 'Timer', + displayName: 'Timer', + description: 'Countdown or stopwatch', + component: 'Timer', + defaultSize: { + width: 11, + height: 128, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + value: { + type: 'code', + displayName: 'Default value', + validation: { + schema: { type: 'string' }, + defaultValue: '00:00:00:000', + }, + }, + type: { + type: 'select', + displayName: 'Timer type', + options: [ + { name: 'Count up', value: 'countUp' }, + { name: 'Count down', value: 'countDown' }, + ], + validation: { + schema: { type: 'string' }, + defaultValue: 'countUp', + }, + }, + }, + validation: {}, + events: { + onStart: { displayName: 'On Start' }, + onResume: { displayName: 'On Resume' }, + onPause: { displayName: 'On Pause' }, + onCountDownFinish: { displayName: 'On Count Down Finish' }, + onReset: { displayName: 'On Reset' }, + }, + styles: { + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + }, + exposedVariables: { + value: '', + }, + definition: { + validation: {}, + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + value: { + value: '00:00:00:000', + }, + type: { + value: 'countUp', + }, + }, + defaults: [ + { + type: 'countUp', + value: '00:00:00:000', + paramName: 'value', + }, + { + type: 'countDown', + value: '00:00:10:000', + paramName: 'value', + }, + ], + events: [], + styles: { + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/toggleswitch.js b/frontend/src/Editor/WidgetManager/configs/toggleswitch.js new file mode 100644 index 0000000000..7718c0eadb --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/toggleswitch.js @@ -0,0 +1,89 @@ +export const toggleswitchConfig = { + name: 'ToggleSwitch', + displayName: 'Toggle Switch', + description: 'User-controlled on-off switch', + component: 'ToggleSwitch', + defaultSize: { + width: 6, + height: 30, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + label: { + type: 'code', + displayName: 'Label', + validation: { + schema: { type: 'string' }, + defaultValue: 'Toggle label', + }, + }, + defaultValue: { + type: 'toggle', + displayName: 'Default status', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + }, + events: { + onChange: { displayName: 'On change' }, + }, + styles: { + textColor: { + type: 'color', + displayName: 'Text Color', + validation: { + schema: { type: 'string' }, + defaultValue: '#000000', + }, + }, + toggleSwitchColor: { + type: 'color', + displayName: 'Toggle Switch Color', + validation: { + schema: { type: 'string' }, + defaultValue: '#000000', + }, + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + disabledState: { + type: 'toggle', + displayName: 'Disable', + validation: { + schema: { type: 'boolean' }, + defaultValue: false, + }, + }, + }, + exposedVariables: { + value: false, + }, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + label: { value: 'Toggle label' }, + defaultValue: { value: '{{false}}' }, + }, + events: [], + styles: { + textColor: { value: '' }, + toggleSwitchColor: { value: '' }, + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/treeSelect.js b/frontend/src/Editor/WidgetManager/configs/treeSelect.js new file mode 100644 index 0000000000..1d7485b47a --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/treeSelect.js @@ -0,0 +1,79 @@ +export const treeSelectConfig = { + name: 'TreeSelect', + displayName: 'Tree Select', + description: 'Hierarchical item selector', + defaultSize: { + width: 12, + height: 200, + }, + component: 'TreeSelect', + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: { + label: { type: 'code', displayName: 'Title' }, + data: { type: 'code', displayName: 'Structure' }, + checkedData: { type: 'code', displayName: 'Checked values' }, + expandedData: { type: 'code', displayName: 'Expanded values' }, + }, + events: { + onChange: { displayName: 'On change' }, + onCheck: { displayName: 'On check' }, + onUnCheck: { displayName: 'On uncheck' }, + }, + styles: { + textColor: { type: 'color', displayName: 'Text Color' }, + checkboxColor: { type: 'color', displayName: 'Checkbox color' }, + visibility: { type: 'toggle', displayName: 'Visibility' }, + disabledState: { type: 'toggle', displayName: 'Disable' }, + }, + exposedVariables: { + checked: ['asia', 'china', 'beijing', 'shanghai', 'japan', 'india', 'delhi', 'mumbai', 'bengaluru'], + expanded: ['asia'], + checkedPathArray: [ + ['asia'], + ['asia', 'china'], + ['asia', 'china', 'beijing'], + ['asia', 'china', 'shanghai'], + ['asia', 'japan'], + ['asia', 'india'], + ['asia', 'india', 'delhi'], + ['asia', 'india', 'mumbai'], + ['asia', 'india', 'bengaluru'], + ], + checkedPathStrings: [ + 'asia', + 'asia-china', + 'asia-china-beijing', + 'asia-china-shanghai', + 'asia-japan', + 'asia-india', + 'asia-india-delhi', + 'asia-india-mumbai', + 'asia-india-bengaluru', + ], + }, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: { + label: { value: 'Countries' }, + data: { + value: + '{{[{"label":"Asia","value":"asia","children":[{"label":"China","value":"china","children":[{"label":"Beijing","value":"beijing"},{"label":"Shanghai","value":"shanghai"}]},{"label":"Japan","value":"japan"},{"label":"India","value":"india","children":[{"label":"Delhi","value":"delhi"},{"label":"Mumbai","value":"mumbai"},{"label":"Bengaluru","value":"bengaluru"}]}]},{"label":"Europe","value":"europe","children":[{"label":"France","value":"france"},{"label":"Spain","value":"spain"},{"label":"England","value":"england"}]},{"label":"Africa","value":"africa"}]}}', + }, + checkedData: { value: '{{["asia"]}}' }, + expandedData: { value: '{{["asia"]}}' }, + }, + events: [], + styles: { + textColor: { value: '' }, + checkboxColor: { value: '' }, + visibility: { value: '{{true}}' }, + disabledState: { value: '{{false}}' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/configs/verticalDivider.js b/frontend/src/Editor/WidgetManager/configs/verticalDivider.js new file mode 100644 index 0000000000..443526c3b8 --- /dev/null +++ b/frontend/src/Editor/WidgetManager/configs/verticalDivider.js @@ -0,0 +1,49 @@ +export const verticalDividerConfig = { + name: 'VerticalDivider', + displayName: 'Vertical Divider', + description: 'Vertical line separator', + component: 'VerticalDivider', + defaultSize: { + width: 2, + height: 100, + }, + others: { + showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, + showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, + }, + properties: {}, + events: {}, + styles: { + dividerColor: { + type: 'color', + displayName: 'Divider color', + validation: { + schema: { type: 'string' }, + defaultValue: '#000000', + }, + }, + visibility: { + type: 'toggle', + displayName: 'Visibility', + validation: { + schema: { type: 'boolean' }, + defaultValue: true, + }, + }, + }, + exposedVariables: { + value: {}, + }, + definition: { + others: { + showOnDesktop: { value: '{{true}}' }, + showOnMobile: { value: '{{false}}' }, + }, + properties: {}, + events: [], + styles: { + visibility: { value: '{{true}}' }, + dividerColor: { value: '#000000' }, + }, + }, +}; diff --git a/frontend/src/Editor/WidgetManager/widgetConfig.js b/frontend/src/Editor/WidgetManager/widgetConfig.js index 4212985baa..fe225bc148 100644 --- a/frontend/src/Editor/WidgetManager/widgetConfig.js +++ b/frontend/src/Editor/WidgetManager/widgetConfig.js @@ -1,6768 +1,109 @@ +import { + buttonConfig, + tableConfig, + chartConfig, + modalConfig, + formConfig, + textinputConfig, + numberinputConfig, + passinputConfig, + datepickerConfig, + checkboxConfig, + radiobuttonConfig, + toggleswitchConfig, + textareaConfig, + daterangepickerConfig, + textConfig, + imageConfig, + containerConfig, + dropdownConfig, + multiselectConfig, + richtextareaConfig, + mapConfig, + qrscannerConfig, + starratingConfig, + dividerConfig, + filepickerConfig, + calendarConfig, + iframeConfig, + codeEditorConfig, + tabsConfig, + timerConfig, + listviewConfig, + tagsConfig, + paginationConfig, + circularProgressbarConfig, + spinnerConfig, + statisticsConfig, + rangeSliderConfig, + timelineConfig, + svgImageConfig, + htmlConfig, + verticalDividerConfig, + customComponentConfig, + buttonGroupConfig, + pdfConfig, + stepsConfig, + kanbanConfig, + colorPickerConfig, + treeSelectConfig, + linkConfig, + iconConfig, + boundedBoxConfig, + kanbanBoardConfig, +} from './configs'; + export const widgets = [ - { - name: 'Table', - displayName: 'Table', - description: 'Display paginated tabular data', - component: 'Table', - properties: { - title: { - type: 'string', - displayName: 'Title', - validation: { - schema: { type: 'string' }, - }, - }, - data: { - type: 'code', - displayName: 'Table data', - validation: { - schema: { - type: 'array', - element: { type: 'object' }, - optional: true, - }, - }, - }, - loadingState: { - type: 'toggle', - displayName: 'Loading state', - validation: { - schema: { type: 'boolean' }, - }, - }, - columns: { - type: 'array', - displayName: 'Table Columns', - }, - useDynamicColumn: { - type: 'toggle', - displayName: 'Use dynamic column', - validation: { - schema: { type: 'boolean' }, - }, - }, - columnData: { - type: 'code', - displayName: 'Column data', - }, - rowsPerPage: { - type: 'code', - displayName: 'Number of rows per page', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, - }, - }, - - enableNextButton: { - type: 'toggle', - displayName: 'Enable next page button', - validation: { - schema: { type: 'boolean' }, - }, - }, - enabledSort: { - type: 'toggle', - displayName: 'Enable column sorting', - validation: { - schema: { type: 'boolean' }, - }, - }, - hideColumnSelectorButton: { - type: 'toggle', - displayName: 'Hide column selector button', - validation: { - schema: { type: 'boolean' }, - }, - }, - enablePrevButton: { - type: 'toggle', - displayName: 'Enable previous page button', - validation: { - schema: { type: 'boolean' }, - }, - }, - totalRecords: { - type: 'code', - displayName: 'Total records server side', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, - }, - }, - // clientSidePagination: { - // type: 'toggle', - // displayName: 'Enable pagination', - // validation: { - // schema: { type: 'boolean' }, - // }, - // }, - enablePagination: { - type: 'toggle', - displayName: 'Enable pagination', - validation: { - schema: { type: 'boolean' }, - }, - }, - serverSidePagination: { - type: 'clientServerSwitch', - displayName: 'Type', - validation: { - schema: { type: 'boolean' }, - }, - options: [ - { displayName: 'Client side', value: 'clientSide' }, - { displayName: 'Server side', value: 'serverSide' }, - ], - // defaultValue: 'clientSide', - }, - serverSideSearch: { - type: 'clientServerSwitch', - displayName: 'Type', - options: [ - { displayName: 'Client side', value: 'clientSide' }, - { displayName: 'Server side', value: 'serverSide' }, - ], - validation: { - schema: { type: 'boolean' }, - }, - }, - serverSideSort: { - type: 'clientServerSwitch', - displayName: 'Type', - validation: { - schema: { type: 'boolean' }, - }, - options: [ - { displayName: 'Client side', value: 'clientSide' }, - { displayName: 'Server side', value: 'serverSide' }, - ], - }, - serverSideFilter: { - type: 'clientServerSwitch', - displayName: 'Type', - validation: { - schema: { type: 'boolean' }, - }, - options: [ - { displayName: 'Client side', value: 'clientSide' }, - { displayName: 'Server side', value: 'serverSide' }, - ], - defaultValue: 'clientSide', - }, - actionButtonBackgroundColor: { - type: 'color', - displayName: 'Background color', - validation: { - schema: { type: 'string' }, - }, - }, - actionButtonTextColor: { - type: 'color', - displayName: 'Text color', - validation: { - schema: { type: 'string' }, - }, - }, - displaySearchBox: { - type: 'toggle', - displayName: 'Show search', - validation: { - schema: { type: 'boolean' }, - }, - }, - showDownloadButton: { - type: 'toggle', - displayName: 'Show download button', - validation: { - schema: { type: 'boolean' }, - }, - }, - showFilterButton: { - type: 'toggle', - displayName: 'Enable filtering', - validation: { - schema: { type: 'boolean' }, - }, - }, - showBulkUpdateActions: { - type: 'toggle', - displayName: 'Show update buttons', - validation: { - schema: { type: 'boolean' }, - }, - }, - allowSelection: { - type: 'toggle', - displayName: 'Allow selection', - validation: { - schema: { type: 'boolean' }, - }, - }, - showBulkSelector: { - type: 'toggle', - displayName: 'Bulk selection', - validation: { - schema: { type: 'boolean' }, - }, - }, - highlightSelectedRow: { - type: 'toggle', - displayName: 'Highlight selected row', - validation: { - schema: { type: 'boolean' }, - }, - }, - defaultSelectedRow: { - type: 'code', - displayName: 'Default selected row', - validation: { - schema: { - type: 'object', - }, - }, - }, - - showAddNewRowButton: { - type: 'toggle', - displayName: 'Show add new row button', - validation: { - schema: { type: 'boolean' }, - }, - }, - selectRowOnCellEdit: { - type: 'toggle', - displayName: 'Select row on cell edit', - validation: { - schema: { type: 'boolean' }, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop ' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - defaultSize: { - width: 35, - height: 456, - }, - events: { - onRowHovered: { displayName: 'Row hovered' }, - onRowClicked: { displayName: 'Row clicked' }, - onBulkUpdate: { displayName: 'Save changes' }, - onPageChanged: { displayName: 'Page changed' }, - onSearch: { displayName: 'Search' }, - onCancelChanges: { displayName: 'Cancel changes' }, - onSort: { displayName: 'Sort applied' }, - onCellValueChanged: { displayName: 'Cell value changed' }, - onFilterChanged: { displayName: 'Filter changed' }, - onNewRowsAdded: { displayName: 'Add new rows' }, - }, - styles: { - textColor: { - type: 'color', - displayName: 'Text Color', - validation: { - schema: { type: 'string' }, - }, - accordian: 'Data', - }, - tableType: { - type: 'select', - displayName: 'Row style', - options: [ - { name: 'Regular', value: 'table-classic' }, - { name: 'Bordered', value: 'table-bordered' }, - { name: 'Striped', value: 'table-striped' }, - ], - validation: { - schema: { type: 'string' }, - }, - accordian: 'Data', - }, - cellSize: { - type: 'select', - displayName: 'Cell height', - options: [ - { name: 'Regular', value: 'regular' }, - { name: 'Condensed', value: 'condensed' }, - ], - validation: { - schema: { type: 'string' }, - }, - accordian: 'Data', - }, - contentWrap: { - type: 'toggle', - showLabel: false, - toggleLabel: 'Content wrap', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'boolean' }] }, - }, - accordian: 'Data', - }, - maxRowHeight: { - type: 'switch', - displayName: 'Max row height', - validation: { schema: { type: 'string' } }, - accordian: 'Data', - options: [ - { displayName: 'Auto', value: 'auto' }, - { displayName: 'Custom', value: 'custom' }, - ], - conditionallyRender: { - key: 'contentWrap', - value: true, - }, - }, - maxRowHeightValue: { - type: 'tableRowHeightInput', - showLabel: false, - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'boolean' }] }, - }, - accordian: 'Data', - conditionallyRender: [ - { - key: 'maxRowHeight', - value: 'custom', - }, - { - key: 'contentWrap', - value: true, - }, - ], - }, - actionButtonRadius: { - type: 'numberInput', - displayName: 'Button radius', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'boolean' }] }, - }, - accordian: 'Action button', - }, - borderRadius: { - type: 'numberInput', - displayName: 'Border radius', - validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, - accordian: 'Container', - }, - borderColor: { - type: 'color', - displayName: 'Border', - validation: { - schema: { type: 'string' }, - defaultValue: false, - }, - accordian: 'Container', - }, - boxShadow: { - type: 'boxShadow', - displayName: 'Box Shadow', - validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, - accordian: 'Container', - }, - padding: { - type: 'switch', - displayName: 'Padding', - validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, - options: [ - { displayName: 'Default', value: 'default' }, - { displayName: 'None', value: 'none' }, - ], - accordian: 'Container', - }, - }, - exposedVariables: { - selectedRow: {}, - changeSet: {}, - dataUpdates: [], - pageIndex: 1, - searchText: '', - selectedRows: [], - filters: [], - }, - actions: [ - { - handle: 'setPage', - displayName: 'Set page', - params: [ - { - handle: 'page', - displayName: 'Page', - defaultValue: '{{1}}', - }, - ], - }, - { - handle: 'selectRow', - displayName: 'Select row', - params: [ - { handle: 'key', displayName: 'Key' }, - { handle: 'value', displayName: 'Value' }, - ], - }, - { - handle: 'deselectRow', - displayName: 'Deselect row', - }, - { - handle: 'discardChanges', - displayName: 'Discard Changes', - }, - { - handle: 'discardNewlyAddedRows', - displayName: 'Discard newly added rows', - }, - { - displayName: 'Download table data', - handle: 'downloadTableData', - params: [ - { - handle: 'type', - displayName: 'Type', - options: [ - { name: 'Download as Excel', value: 'xlsx' }, - { name: 'Download as CSV', value: 'csv' }, - { name: 'Download as PDF', value: 'pdf' }, - ], - defaultValue: `{{Download as Excel}}`, - type: 'select', - }, - ], - }, - { - handle: 'selectAllRows', - displayName: 'Select all rows', - }, - { - handle: 'deselectAllRows', - displayName: 'Deselect all rows', - }, - { - handle: 'setFilters', - displayName: 'Set filters', - params: [{ handle: 'parameters', displayName: 'Parameters' }], - }, - { - handle: 'clearFilters', - displayName: 'Clear filters', - }, - ], - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - title: { value: 'Table' }, - visible: { value: '{{true}}' }, - loadingState: { value: '{{false}}' }, - data: { - value: - "{{ [ \n\t\t{ id: 1, name: 'Olivia Nguyen', email: 'olivia.nguyen@example.com', date: '15/05/2022', mobile_number: 9876543210, interest: ['Reading', 'Traveling','Photography'], photo: 'https://reqres.in/img/faces/7-image.jpg' }, \n\t\t{ id: 2, name: 'Liam Patel', email: 'liam.patel@example.com', date: '20/09/2021', mobile_number: 8765432109, interest: ['Cooking','Gardening','Hiking'], photo: 'https://reqres.in/img/faces/5-image.jpg' }, \n\t\t{ id: 3, name: 'Sophia Reyes', email: 'sophia.reyes@example.com', date: '01/01/2023', mobile_number: 7654321098, interest: ['Music','Dancing','Crafting'], photo: 'https://reqres.in/img/faces/3-image.jpg' }, \n\t\t{ id: 4, name: 'Jacob Hernandez', email: 'jacob.hernandez@example.com', date: '10/11/2022', mobile_number: 6543210987, interest: ['Reading', 'Traveling', 'Volunteering'], photo: 'https://reqres.in/img/faces/1-image.jpg' }, \n\t\t{ id: 5, name: 'William Sanchez', email: 'william.sanchez@example.com', date: '07/01/2021', mobile_number: 4321098765, interest: ['Music', 'Dancing', 'Hiking'], photo: 'https://reqres.in/img/faces/4-image.jpg' }, \n\t\t{ id: 6, name: 'Ethan Morales', email: 'ethan.morales@example.com', date: '05/11/2021', mobile_number: 2109876543, interest: ['Cooking', 'Traveling', 'Photography'], photo: 'https://reqres.in/img/faces/6-image.jpg' }, \n\t\t{ id: 7, name: 'Mia Tiana', email: 'mia.tiana@example.com', date: '21/11/2022', mobile_number: 1098705217, interest: ['Music', 'Gardening', 'Hiking'], photo: 'https://reqres.in/img/faces/2-image.jpg' }, \n\t\t{ id: 8, name: 'Lucas Ramirez', email: 'lucas.ramirez@example.com', date: '31/03/2023', mobile_number: 9876543210, interest: ['Reading', 'Dancing', 'Crafting'], photo: 'https://reqres.in/img/faces/9-image.jpg' }, \n\t\t{ id: 9, name: 'Alexander Vela', email: 'alexander.vela@example.com', date: '07/09/2022', mobile_number: 7654321098, interest: ['Music','Gardening','Photography'], photo: 'https://reqres.in/img/faces/8-image.jpg' }, \n\t\t{ id: 10, name: 'Michael Reyes', email: 'michael.reyes@example.com', date: '25/12/2021', mobile_number: 5432109876, interest: ['Cooking','Crafting','Volunteering'], photo: 'https://reqres.in/img/faces/10-image.jpg' } \n] }}", - }, - useDynamicColumn: { value: '{{false}}' }, - columnData: { - value: - "{{[{name: 'email', key: 'email', id: '1'}, {name: 'Full name', key: 'name', id: '2', isEditable: true}]}}", - }, - rowsPerPage: { value: '{{10}}' }, - serverSidePagination: { value: '{{false}}' }, - enableNextButton: { value: '{{true}}' }, - enablePrevButton: { value: '{{true}}' }, - totalRecords: { value: '' }, - enablePagination: { value: '{{true}}' }, - serverSideSort: { value: '{{false}}' }, - serverSideFilter: { value: '{{false}}' }, - displaySearchBox: { value: '{{true}}' }, - showDownloadButton: { value: '{{true}}' }, - showFilterButton: { value: '{{true}}' }, - autogenerateColumns: { value: true, generateNestedColumns: true }, - isAllColumnsEditable: { value: '{{false}}' }, - columns: { - value: [ - { - name: 'id', - id: 'e3ecbf7fa52c4d7210a93edb8f43776267a489bad52bd108be9588f790126737', - autogenerated: true, - fxActiveFields: [], - columnSize: 30, - columnType: 'string', - }, - { - name: 'photo', - key: 'photo', - id: 'f23b7d134b2e490ea41e3bb8eeb8c8e37472af243bf6b70d5af294482097e3a2', - autogenerated: true, - fxActiveFields: [], - columnType: 'image', - objectFit: 'contain', - borderRadius: '100', - columnSize: 70, - }, - { - name: 'name', - id: '5d2a3744a006388aadd012fcc15cc0dbcb5f9130e0fbb64c558561c97118754a', - autogenerated: true, - fxActiveFields: [], - columnSize: 130, - columnType: 'string', - }, - { - name: 'email', - id: 'afc9a5091750a1bd4760e38760de3b4be11a43452ae8ae07ce2eebc569fe9a7f', - autogenerated: true, - fxActiveFields: [], - columnSize: 230, - columnType: 'string', - }, - { - name: 'date', - id: '27b75c8af9d34d1eaa1f9bb7f8f9f7b0abf1823e799748c8bb57e74f53b2c1dc', - autogenerated: true, - fxActiveFields: [], - columnType: 'datepicker', - isTimeChecked: false, - dateFormat: 'DD/MM/YYYY', - parseDateFormat: 'DD/MM/YYYY', - isDateSelectionEnabled: true, - columnSize: 130, - }, - { - name: 'mobile_number', - id: '9c2e3c40572a4aefb8e179ee39a0e1ac9dc2b2e6634be56e1c05be13c3d1de56', - autogenerated: true, - fxActiveFields: [], - columnType: 'number', - columnSize: 140, - }, - { - name: 'interest', - key: 'interest', - id: 'f23b7d134b2e490ea41e3bb8eeb8c8e37472af243bf6b70d5af294482097e3a1', - autogenerated: true, - fxActiveFields: [], - columnType: 'newMultiSelect', - columnSize: 300, - options: [ - { - label: 'Reading', - value: 'Reading', - }, - { - label: 'Traveling', - value: 'Traveling', - }, - { - label: 'Photography', - value: 'Photography', - }, - { - label: 'Music', - value: 'Music', - }, - { - label: 'Cooking', - value: 'Cooking', - }, - { - label: 'Crafting', - value: 'Crafting', - }, - { - label: 'Voluntering', - value: 'Voluntering', - }, - { - label: 'Garndening', - value: 'Garndening', - }, - { - label: 'Dancing', - value: 'Dancing', - }, - { - label: 'Hiking', - value: 'Hiking', - }, - ], - }, - ], - }, - showBulkUpdateActions: { value: '{{true}}' }, - showBulkSelector: { value: '{{false}}' }, - highlightSelectedRow: { value: '{{false}}' }, - columnSizes: { value: '{{({})}}' }, - actions: { value: [] }, - enabledSort: { value: '{{true}}' }, - hideColumnSelectorButton: { value: '{{false}}' }, - defaultSelectedRow: { value: '{{{"id":1}}}' }, - showAddNewRowButton: { value: '{{true}}' }, - allowSelection: { value: '{{true}}' }, - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - }, - events: [], - styles: { - textColor: { value: '#000' }, - actionButtonRadius: { value: '0' }, - cellSize: { value: 'regular' }, - borderRadius: { value: '8' }, - tableType: { value: 'table-classic' }, - maxRowHeight: { value: 'auto' }, - maxRowHeightValue: { value: '80px' }, - contentWrap: { value: '{{true}}' }, - boxShadow: { value: '0px 0px 0px 0px #00000090' }, - padding: { value: 'default' }, - }, - }, - }, - { - name: 'Button', - displayName: 'Button', - description: 'Trigger actions: queries, alerts, set variables etc.', - component: 'Button', - defaultSize: { - width: 3, - height: 30, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - text: { - type: 'code', - displayName: 'Button text', - validation: { - schema: { type: 'string' }, - }, - }, - loadingState: { - type: 'toggle', - displayName: 'Loading state', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - events: { - onClick: { displayName: 'On click' }, - onHover: { displayName: 'On hover' }, - }, - styles: { - backgroundColor: { - type: 'color', - displayName: 'Background color', - validation: { - schema: { type: 'string' }, - defaultValue: false, - }, - }, - textColor: { - type: 'color', - displayName: 'Text color', - validation: { - schema: { type: 'string' }, - defaultValue: false, - }, - }, - loaderColor: { - type: 'color', - displayName: 'Loader color', - validation: { - schema: { type: 'string' }, - defaultValue: false, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - defaultValue: false, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - defaultValue: false, - }, - }, - borderRadius: { - type: 'number', - displayName: 'Border radius', - validation: { - schema: { type: 'number' }, - defaultValue: false, - }, - }, - borderColor: { - type: 'color', - displayName: 'Border color', - validation: { - schema: { type: 'string' }, - defaultValue: false, - }, - }, - }, - exposedVariables: { - buttonText: 'Button', - }, - actions: [ - { - handle: 'click', - displayName: 'Click', - }, - { - handle: 'setText', - displayName: 'Set Text', - params: [{ handle: 'text', displayName: 'Text', defaultValue: 'New Text' }], - }, - { - handle: 'disable', - displayName: 'Disable', - params: [{ handle: 'disable', displayName: 'Value', defaultValue: `{{false}}`, type: 'toggle' }], - }, - { - handle: 'visibility', - displayName: 'Visibility', - params: [{ handle: 'visible', displayName: 'Value', defaultValue: `{{false}}`, type: 'toggle' }], - }, - { - handle: 'loading', - displayName: 'Loading', - params: [{ handle: 'loading', displayName: 'Value', defaultValue: `{{false}}`, type: 'toggle' }], - }, - ], - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - text: { value: `Button` }, - loadingState: { value: `{{false}}` }, - }, - events: [], - styles: { - backgroundColor: { value: '#375FCF' }, - textColor: { value: '#fff' }, - loaderColor: { value: '#fff' }, - visibility: { value: '{{true}}' }, - borderRadius: { value: '{{4}}' }, - borderColor: { value: '#375FCF' }, - disabledState: { value: '{{false}}' }, - padding: { value: 'default' }, - }, - }, - }, - { - name: 'Chart', - displayName: 'Chart', - description: 'Visualize data', - component: 'Chart', - defaultSize: { - width: 20, - height: 400, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - title: { - type: 'code', - displayName: 'Title', - validation: { - schema: { - type: 'string', - }, - }, - }, - data: { - type: 'json', - displayName: 'Data', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'array' }] }, - }, - }, - loadingState: { - type: 'toggle', - displayName: 'Loading state', - validation: { - schema: { type: 'boolean' }, - }, - }, - markerColor: { - type: 'color', - displayName: 'Marker color', - validation: { - schema: { - type: 'string', - }, - }, - }, - showAxes: { - type: 'toggle', - displayName: 'Show axes', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - showGridLines: { - type: 'toggle', - displayName: 'Show grid lines', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - type: { - type: 'select', - displayName: 'Chart type', - options: [ - { name: 'Line', value: 'line' }, - { name: 'Bar', value: 'bar' }, - { name: 'Pie', value: 'pie' }, - ], - validation: { - schema: { - type: 'union', - schemas: [{ type: 'string' }, { type: 'boolean' }, { type: 'number' }], - }, - }, - }, - jsonDescription: { - type: 'json', - displayName: 'Json Description', - validation: { - schema: { - type: 'string', - }, - }, - }, - plotFromJson: { - type: 'toggle', - displayName: 'Use Plotly JSON schema', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - barmode: { - type: 'select', - displayName: 'Bar mode', - options: [ - { name: 'Stack', value: 'stack' }, - { name: 'Group', value: 'group' }, - { name: 'Overlay', value: 'overlay' }, - { name: 'Relative', value: 'relative' }, - ], - validation: { - schema: { - schemas: { type: 'string' }, - }, - }, - }, - }, - actions: [ - { - handle: 'clearClickedPoint', - displayName: 'Clear clicked point', - }, - ], - events: { - onClick: { displayName: 'On data point click' }, - onDoubleClick: { displayName: 'On double click' }, - }, - styles: { - backgroundColor: { - type: 'color', - displayName: 'Background color', - validation: { schema: { type: 'string' } }, - }, - padding: { - type: 'code', - displayName: 'Padding', - validation: { - schema: { - type: 'union', - schemas: [{ type: 'number' }, { type: 'string' }], - }, - }, - }, - borderRadius: { - type: 'number', - displayName: 'Border radius', - validation: { - schema: { type: 'number' }, - defaultValue: false, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - }, - exposedVariables: { - show: null, - chartTitle: undefined, - xAxisTitle: undefined, - yAxisTitle: undefined, - clickedDataPoint: {}, - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - title: { value: 'This title can be changed' }, - markerColor: { value: '#CDE1F8' }, - showAxes: { value: '{{true}}' }, - showGridLines: { value: '{{true}}' }, - plotFromJson: { value: '{{false}}' }, - loadingState: { value: `{{false}}` }, - barmode: { value: `group` }, - jsonDescription: { - value: `{ - "data": [ - { - "x": [ - "Jan", - "Feb", - "Mar" - ], - "y": [ - 100, - 80, - 40 - ], - "type": "bar" - } - ] - }`, - }, - type: { value: `line` }, - data: { - value: `[ - { "x": "Jan", "y": 100}, - { "x": "Feb", "y": 80}, - { "x": "Mar", "y": 40} -]`, - }, - }, - events: [], - styles: { - backgroundColor: { value: '#fff' }, - padding: { value: '50' }, - borderRadius: { value: '{{4}}' }, - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - }, - }, - }, - { - name: 'Modal', - displayName: 'Modal', - description: 'Show pop-up windows', - component: 'Modal', - defaultSize: { - width: 10, - height: 34, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - title: { - type: 'code', - displayName: 'Title', - validation: { - schema: { type: 'string' }, - }, - }, - loadingState: { - type: 'toggle', - displayName: 'Loading state', - validation: { - schema: { type: 'boolean' }, - }, - }, - useDefaultButton: { - type: 'toggle', - displayName: 'Use default trigger button', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - triggerButtonLabel: { - type: 'code', - displayName: 'Trigger button label', - validation: { - schema: { - type: 'string', - }, - }, - }, - hideTitleBar: { type: 'toggle', displayName: 'Hide title bar' }, - hideCloseButton: { type: 'toggle', displayName: 'Hide close button' }, - hideOnEsc: { type: 'toggle', displayName: 'Close on escape key' }, - closeOnClickingOutside: { type: 'toggle', displayName: 'Close on clicking outside' }, - - size: { - type: 'select', - displayName: 'Modal size', - options: [ - { name: 'small', value: 'sm' }, - { name: 'medium', value: 'lg' }, - { name: 'large', value: 'xl' }, - ], - validation: { - schema: { type: 'string' }, - }, - }, - modalHeight: { - type: 'code', - displayName: 'Modal height', - validation: { - schema: { type: 'string' }, - }, - }, - }, - events: { - onOpen: { displayName: 'On open' }, - onClose: { displayName: 'On close' }, - }, - styles: { - headerBackgroundColor: { - type: 'color', - displayName: 'Header background color', - validation: { - schema: { type: 'string' }, - }, - }, - headerTextColor: { - type: 'color', - displayName: 'Header title color', - validation: { - schema: { type: 'string' }, - }, - }, - bodyBackgroundColor: { - type: 'color', - displayName: 'Body background color', - validation: { - schema: { type: 'string' }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - defaultValue: true, - }, - }, - triggerButtonBackgroundColor: { - type: 'color', - displayName: 'Trigger button background color', - validation: { - schema: { type: 'string' }, - defaultValue: false, - }, - }, - triggerButtonTextColor: { - type: 'color', - displayName: 'Trigger button text color', - validation: { - schema: { type: 'string' }, - defaultValue: false, - }, - }, - }, - exposedVariables: { - show: false, - }, - actions: [ - { - handle: 'open', - displayName: 'Open', - }, - { - handle: 'close', - displayName: 'Close', - }, - ], - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - title: { value: 'This title can be changed' }, - loadingState: { value: `{{false}}` }, - useDefaultButton: { value: `{{true}}` }, - triggerButtonLabel: { value: `Launch Modal` }, - size: { value: 'lg' }, - hideTitleBar: { value: '{{false}}' }, - hideCloseButton: { value: '{{false}}' }, - hideOnEsc: { value: '{{true}}' }, - closeOnClickingOutside: { value: '{{false}}' }, - modalHeight: { value: '400px' }, - }, - events: [], - styles: { - headerBackgroundColor: { value: '#ffffffff' }, - headerTextColor: { value: '#000000' }, - bodyBackgroundColor: { value: '#ffffffff' }, - disabledState: { value: '{{false}}' }, - visibility: { value: '{{true}}' }, - triggerButtonBackgroundColor: { value: '#4D72FA' }, - triggerButtonTextColor: { value: '#ffffffff' }, - }, - }, - }, - { - name: 'Form', - displayName: 'Form', - description: 'Wrapper for multiple components', - defaultSize: { - width: 13, - height: 330, - }, - defaultChildren: [ - { - componentName: 'Text', - layout: { - top: 40, - left: 10, - height: 30, - width: 17, - }, - properties: ['text'], - styles: [ - 'textSize', - 'fontWeight', - 'fontStyle', - 'textColor', - 'isScrollRequired', - 'lineHeight', - 'textIndent', - 'textAlign', - 'verticalAlignment', - 'decoration', - 'transformation', - 'letterSpacing', - 'wordSpacing', - 'fontVariant', - 'backgroundColor', - 'borderColor', - 'borderRadius', - 'boxShadow', - 'padding', - ], - defaultValue: { - text: 'User Details', - fontWeight: 'bold', - textSize: 18, - textColor: '#000', - backgroundColor: '#fff00000', - textAlign: 'left', - decoration: 'none', - transformation: 'none', - fontStyle: 'normal', - lineHeight: 1.5, - textIndent: '-1', - letterSpacing: '0', - wordSpacing: '0', - fontVariant: 'normal', - verticalAlignment: 'top', - padding: 'default', - boxShadow: '0px 0px 0px 0px #00000090', - borderRadius: '0', - isScrollRequired: 'enabled', - }, - }, - { - componentName: 'Text', - layout: { - top: 90, - left: 10, - height: 30, - }, - properties: ['text'], - styles: [ - 'textSize', - 'fontWeight', - 'fontStyle', - 'textColor', - 'isScrollRequired', - 'lineHeight', - 'textIndent', - 'textAlign', - 'verticalAlignment', - 'decoration', - 'transformation', - 'letterSpacing', - 'wordSpacing', - 'fontVariant', - 'backgroundColor', - 'borderColor', - 'borderRadius', - 'boxShadow', - 'padding', - ], - defaultValue: { - text: 'Name', - fontWeight: 'normal', - textSize: 14, - textColor: '#000', - backgroundColor: '#fff00000', - textAlign: 'left', - decoration: 'none', - transformation: 'none', - fontStyle: 'normal', - lineHeight: 1.5, - textIndent: '0', - letterSpacing: '0', - wordSpacing: '0', - fontVariant: 'normal', - verticalAlignment: 'top', - padding: 'default', - boxShadow: '0px 0px 0px 0px #00000090', - borderRadius: '0', - isScrollRequired: 'enabled', - }, - }, - { - componentName: 'Text', - layout: { - top: 160, - left: 10, - height: 30, - }, - properties: ['text'], - styles: [ - 'textSize', - 'fontWeight', - 'fontStyle', - 'textColor', - 'isScrollRequired', - 'lineHeight', - 'textIndent', - 'textAlign', - 'verticalAlignment', - 'decoration', - 'transformation', - 'letterSpacing', - 'wordSpacing', - 'fontVariant', - 'backgroundColor', - 'borderColor', - 'borderRadius', - 'boxShadow', - 'padding', - ], - defaultValue: { - text: 'Age', - fontWeight: 'normal', - textSize: 14, - textColor: '#000', - backgroundColor: '#fff00000', - textAlign: 'left', - decoration: 'none', - transformation: 'none', - fontStyle: 'normal', - lineHeight: 1.5, - textIndent: '0', - letterSpacing: '0', - wordSpacing: '0', - fontVariant: 'normal', - verticalAlignment: 'top', - padding: 'default', - boxShadow: '0px 0px 0px 0px #00000090', - borderRadius: '0', - isScrollRequired: 'enabled', - }, - }, - { - componentName: 'TextInput', - layout: { - top: 120, - left: 10, - height: 30, - width: 25, - }, - properties: ['placeholder', 'label'], - defaultValue: { - placeholder: 'Enter your name', - label: '', - }, - }, - { - componentName: 'NumberInput', - layout: { - top: 190, - left: 10, - height: 30, - width: 25, - }, - properties: ['value', 'label'], - defaultValue: { - value: 24, - label: '', - }, - }, - { - componentName: 'Button', - layout: { - top: 240, - left: 10, - height: 30, - width: 10, - }, - properties: ['text'], - defaultValue: { - text: 'Submit', - }, - }, - ], - component: 'Form', - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - buttonToSubmit: { - type: 'select', - displayName: 'Button to submit form', - options: [{ name: 'None', value: 'none' }], - validation: { - schema: { type: 'string' }, - }, - conditionallyRender: { - key: 'advanced', - value: false, - }, - }, - loadingState: { - type: 'toggle', - displayName: 'Loading state', - validation: { - schema: { type: 'boolean' }, - }, - }, - advanced: { - type: 'toggle', - displayName: ' Use custom schema', - }, - JSONSchema: { - type: 'code', - displayName: 'JSON Schema', - conditionallyRender: { - key: 'advanced', - value: true, - }, - }, - }, - events: { - onSubmit: { displayName: 'On submit' }, - onInvalid: { displayName: 'On invalid' }, - }, - styles: { - backgroundColor: { - type: 'color', - displayName: 'Background color', - validation: { - schema: { type: 'string' }, - }, - }, - borderRadius: { - type: 'code', - displayName: 'Border radius', - validation: { - schema: { - type: 'union', - schemas: [{ type: 'string' }, { type: 'number' }], - }, - }, - }, - borderColor: { - type: 'color', - displayName: 'Border color', - validation: { - schema: { type: 'string' }, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - exposedVariables: { - data: {}, - isValid: true, - }, - actions: [ - { - handle: 'submitForm', - displayName: 'Submit Form', - }, - { - handle: 'resetForm', - displayName: 'Reset Form', - }, - ], - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - loadingState: { value: '{{false}}' }, - advanced: { value: '{{false}}' }, - JSONSchema: { - value: - "{{ {title: 'User registration form', properties: {firstname: {type: 'textinput',value: 'Maria',label:'First name', validation:{maxLength:6}, styles: {backgroundColor: '#f6f5ff',textColor: 'black'},},lastname:{type: 'textinput',value: 'Doe', label:'Last name', styles: {backgroundColor: '#f6f5ff',textColor: 'black'},},age:{type:'number'},}, submitButton: {value: 'Submit', styles: {backgroundColor: '#3a433b',borderColor:'#595959'}}} }}", - }, - }, - events: [], - styles: { - backgroundColor: { value: '#fff' }, - borderRadius: { value: '0' }, - borderColor: { value: '#fff' }, - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - }, - }, - }, - { - name: 'TextInput', - displayName: 'Text Input', - description: 'User text input field', - component: 'TextInput', - defaultSize: { - width: 10, - height: 40, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - label: { - type: 'code', - displayName: 'Label', - validation: { schema: { type: 'string' } }, - }, - placeholder: { - type: 'code', - displayName: 'Placeholder', - validation: { - schema: { type: 'string' }, - }, - }, - value: { - type: 'code', - displayName: 'Default value', - validation: { - schema: { - type: 'string', - }, - }, - }, - loadingState: { - type: 'toggle', - displayName: 'Loading state', - validation: { schema: { type: 'boolean' } }, - section: 'additionalActions', - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { schema: { type: 'boolean' } }, - section: 'additionalActions', - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { schema: { type: 'boolean' } }, - section: 'additionalActions', - }, - tooltip: { - type: 'code', - displayName: 'Tooltip', - validation: { schema: { type: 'string' } }, - section: 'additionalActions', - placeholder: 'Enter tooltip text', - }, - }, - validation: { - mandatory: { type: 'toggle', displayName: 'Make this field mandatory' }, - regex: { type: 'code', displayName: 'Regex', placeholder: '^[a-zA-Z0-9_ -]{3,16}$' }, - minLength: { type: 'code', displayName: 'Min length', placeholder: 'Enter min length' }, - maxLength: { type: 'code', displayName: 'Max length', placeholder: 'Enter max length' }, - customRule: { - type: 'code', - displayName: 'Custom validation', - placeholder: `{{components.text2.text=='yes'&&'valid'}}`, - }, - }, - events: { - onChange: { displayName: 'On change' }, - onEnterPressed: { displayName: 'On enter pressed' }, - onFocus: { displayName: 'On focus' }, - onBlur: { displayName: 'On blur' }, - }, - styles: { - color: { - type: 'color', - displayName: 'Text', - validation: { schema: { type: 'string' } }, - accordian: 'label', - }, - alignment: { - type: 'switch', - displayName: 'Alignment', - validation: { schema: { type: 'string' } }, - options: [ - { displayName: 'Side', value: 'side' }, - { displayName: 'Top', value: 'top' }, - ], - accordian: 'label', - }, - direction: { - type: 'switch', - displayName: '', - validation: { schema: { type: 'string' } }, - showLabel: false, - isIcon: true, - options: [ - { displayName: 'alignleftinspector', value: 'left', iconName: 'alignleftinspector' }, - { displayName: 'alignrightinspector', value: 'right', iconName: 'alignrightinspector' }, - ], - accordian: 'label', - }, - width: { - type: 'slider', - displayName: 'Width', - accordian: 'label', - conditionallyRender: { - key: 'alignment', - value: 'side', - }, - }, - auto: { - type: 'checkbox', - displayName: 'auto', - showLabel: false, - validation: { schema: { type: 'boolean' } }, - accordian: 'label', - conditionallyRender: { - key: 'alignment', - value: 'side', - }, - }, - backgroundColor: { - type: 'color', - displayName: 'Background', - validation: { schema: { type: 'string' } }, - accordian: 'field', - }, - borderColor: { - type: 'color', - displayName: 'Border', - validation: { schema: { type: 'string' } }, - accordian: 'field', - }, - accentColor: { - type: 'color', - displayName: 'Accent', - validation: { schema: { type: 'string' } }, - accordian: 'field', - }, - textColor: { - type: 'color', - displayName: 'Text', - validation: { schema: { type: 'string' } }, - accordian: 'field', - }, - errTextColor: { - type: 'color', - displayName: 'Error text', - validation: { schema: { type: 'string' } }, - accordian: 'field', - }, - icon: { - type: 'icon', - displayName: 'Icon', - validation: { schema: { type: 'string' } }, - accordian: 'field', - visibility: false, - }, - iconColor: { - type: 'color', - displayName: 'Icon color', - validation: { schema: { type: 'string' } }, - accordian: 'field', - visibility: false, - showLabel: false, - }, - borderRadius: { - type: 'numberInput', - displayName: 'Border radius', - validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, - accordian: 'field', - }, - boxShadow: { - type: 'boxShadow', - displayName: 'Box Shadow', - validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, - accordian: 'field', - }, - padding: { - type: 'switch', - displayName: 'Padding', - validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, - options: [ - { displayName: 'Default', value: 'default' }, - { displayName: 'None', value: 'none' }, - ], - accordian: 'container', - }, - }, - exposedVariables: { - value: '', - isMandatory: false, - isVisible: true, - isDisabled: false, - isLoading: false, - }, - actions: [ - { - handle: 'setText', - displayName: 'Set text', - params: [{ handle: 'text', displayName: 'text', defaultValue: 'New text' }], - }, - { - handle: 'clear', - displayName: 'Clear', - }, - { - handle: 'setFocus', - displayName: 'Set focus', - }, - { - handle: 'setBlur', - displayName: 'Set blur', - }, - { - handle: 'disable', - displayName: 'Disable(deprecated)', - params: [{ handle: 'disable', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], - }, - { - handle: 'visibility', - displayName: 'Visibility(deprecated)', - params: [{ handle: 'visibility', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], - }, - { - handle: 'setVisibility', - displayName: 'Set visibility', - params: [{ handle: 'disable', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], - }, - { - handle: 'setDisable', - displayName: 'Set disable', - params: [{ handle: 'disable', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], - }, - { - handle: 'setLoading', - displayName: 'Set loading', - params: [{ handle: 'loading', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], - }, - ], - definition: { - validation: { - mandatory: { value: '{{false}}' }, - regex: { value: '' }, - minLength: { value: null }, - maxLength: { value: null }, - customRule: { value: null }, - }, - - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - value: { value: '' }, - label: { value: 'Label' }, - placeholder: { value: 'Enter your input' }, - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - loadingState: { value: '{{false}}' }, - tooltip: { value: '' }, - }, - events: [], - styles: { - textColor: { value: '#1B1F24' }, - borderColor: { value: '#CCD1D5' }, - accentColor: { value: '#4368E3' }, - errTextColor: { value: '#D72D39' }, - borderRadius: { value: '{{6}}' }, - backgroundColor: { value: '#fff' }, - iconColor: { value: '#CFD3D859' }, - direction: { value: 'left' }, - width: { value: '{{33}}' }, - alignment: { value: 'side' }, - color: { value: '#1B1F24' }, - auto: { value: '{{true}}' }, - padding: { value: 'default' }, - boxShadow: { value: '0px 0px 0px 0px #00000040' }, - icon: { value: 'IconHome2' }, - iconVisibility: { value: false }, - }, - }, - }, - { - name: 'NumberInput', - displayName: 'Number Input', - description: 'Numeric input field', - component: 'NumberInput', - defaultSize: { - width: 10, - height: 40, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - label: { - type: 'code', - displayName: 'Label', - validation: { schema: { type: 'string' } }, - }, - value: { - type: 'code', - displayName: 'Default value', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, - }, - }, - placeholder: { - type: 'code', - displayName: 'Placeholder', - validation: { - schema: { type: 'string' }, - }, - }, - decimalPlaces: { - type: 'code', - displayName: 'Decimal places', - validation: { - schema: { type: 'number' }, - }, - }, - loadingState: { - type: 'toggle', - displayName: 'Loading state', - validation: { schema: { type: 'boolean' } }, - section: 'additionalActions', - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { schema: { type: 'boolean' } }, - section: 'additionalActions', - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { schema: { type: 'boolean' } }, - section: 'additionalActions', - }, - tooltip: { - type: 'code', - displayName: 'Tooltip', - validation: { schema: { type: 'string' } }, - section: 'additionalActions', - placeholder: 'Enter tooltip text', - }, - }, - events: { - onChange: { displayName: 'On change' }, - onFocus: { displayName: 'On focus' }, - onBlur: { displayName: 'On blur' }, - onEnterPressed: { displayName: 'On enter pressed' }, - }, - styles: { - color: { - type: 'color', - displayName: 'Text', - validation: { schema: { type: 'string' } }, - accordian: 'label', - }, - alignment: { - type: 'switch', - displayName: 'Alignment', - validation: { schema: { type: 'string' } }, - options: [ - { displayName: 'Side', value: 'side' }, - { displayName: 'Top', value: 'top' }, - ], - accordian: 'label', - }, - direction: { - type: 'switch', - displayName: '', - validation: { schema: { type: 'string' } }, - showLabel: false, - isIcon: true, - options: [ - { displayName: 'alignleftinspector', value: 'left', iconName: 'alignleftinspector' }, - { displayName: 'alignrightinspector', value: 'right', iconName: 'alignrightinspector' }, - ], - accordian: 'label', - }, - width: { - type: 'slider', - displayName: 'Width', - accordian: 'label', - conditionallyRender: { - key: 'alignment', - value: 'side', - }, - }, - auto: { - type: 'checkbox', - displayName: 'auto', - showLabel: false, - validation: { schema: { type: 'boolean' } }, - accordian: 'label', - conditionallyRender: { - key: 'alignment', - value: 'side', - }, - }, - - backgroundColor: { - type: 'color', - displayName: 'Background', - validation: { schema: { type: 'string' } }, - accordian: 'field', - }, - borderColor: { - type: 'color', - displayName: 'Border', - validation: { schema: { type: 'string' } }, - accordian: 'field', - }, - accentColor: { - type: 'color', - displayName: 'Accent', - validation: { schema: { type: 'string' } }, - accordian: 'field', - }, - textColor: { - type: 'color', - displayName: 'Text', - validation: { schema: { type: 'string' } }, - accordian: 'field', - }, - errTextColor: { - type: 'color', - displayName: 'Error text', - validation: { schema: { type: 'string' } }, - accordian: 'field', - }, - icon: { - type: 'icon', - displayName: 'Icon', - validation: { schema: { type: 'string' } }, - accordian: 'field', - visibility: false, - }, - iconColor: { - type: 'color', - displayName: 'Icon color', - validation: { schema: { type: 'string' } }, - accordian: 'field', - visibility: false, - showLabel: false, - }, - borderRadius: { - type: 'numberInput', - displayName: 'Border radius', - validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, - accordian: 'field', - }, - boxShadow: { - type: 'boxShadow', - displayName: 'Box Shadow', - validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, - accordian: 'field', - }, - padding: { - type: 'switch', - displayName: 'Padding', - validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, - options: [ - { displayName: 'Default', value: 'default' }, - { displayName: 'None', value: 'none' }, - ], - accordian: 'container', - }, - }, - actions: [ - { - handle: 'setText', - displayName: 'Set text', - params: [{ handle: 'text', displayName: 'text', defaultValue: '100' }], - }, - { - handle: 'clear', - displayName: 'Clear', - }, - { - handle: 'setFocus', - displayName: 'Set focus', - }, - { - handle: 'setBlur', - displayName: 'Set blur', - }, - { - handle: 'setVisibility', - displayName: 'Set visibility', - params: [{ handle: 'disable', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], - }, - { - handle: 'setDisable', - displayName: 'Set disable', - params: [{ handle: 'disable', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], - }, - { - handle: 'setLoading', - displayName: 'Set loading', - params: [{ handle: 'loading', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], - }, - ], - exposedVariables: { - value: 99, - isMandatory: false, - isVisible: true, - isDisabled: false, - isLoading: false, - }, - validation: { - mandatory: { type: 'toggle', displayName: 'Make this field mandatory' }, - regex: { type: 'code', displayName: 'Regex', placeholder: '^d+$' }, - minValue: { type: 'code', displayName: 'Min value', placeholder: 'Enter min value' }, - maxValue: { type: 'code', displayName: 'Max value', placeholder: 'Enter max value' }, - customRule: { - type: 'code', - displayName: 'Custom validation', - placeholder: `{{components.text2.text=='yes'&&'valid'}}`, - }, - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - validation: { - mandatory: { value: '{{false}}' }, - regex: { value: '' }, - minValue: { value: '' }, - maxValue: { value: '' }, - customRule: { value: null }, - }, - properties: { - value: { value: '' }, - label: { value: 'Label' }, - maxValue: { value: '' }, - minValue: { value: '' }, - placeholder: { value: '0' }, - decimalPlaces: { value: '{{2}}' }, - tooltip: { value: '' }, - visibility: { value: '{{true}}' }, - loadingState: { value: '{{false}}' }, - disabledState: { value: '{{false}}' }, - }, - events: [], - styles: { - borderRadius: { value: '{{6}}' }, - backgroundColor: { value: '#fff' }, - borderColor: { value: '#CCD1D5' }, - accentColor: { value: '#4368E3' }, - errTextColor: { value: '#D72D39' }, - textColor: { value: '#1B1F24' }, - color: { value: '#1B1F24' }, - - iconColor: { value: '#CFD3D859' }, - direction: { value: 'left' }, - width: { value: '{{33}}' }, - alignment: { value: 'side' }, - auto: { value: '{{true}}' }, - padding: { value: 'default' }, - boxShadow: { value: '0px 0px 0px 0px #00000040' }, - icon: { value: 'IconHome2' }, - iconVisibility: { value: false }, - }, - }, - }, - { - name: 'PasswordInput', - displayName: 'Password Input', - description: 'Secure text input', - component: 'PasswordInput', - defaultSize: { - width: 10, - height: 40, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - label: { - type: 'code', - displayName: 'Label', - validation: { schema: { type: 'string' } }, - }, - placeholder: { - type: 'code', - displayName: 'Placeholder', - validation: { - schema: { type: 'string' }, - }, - }, - value: { - type: 'code', - displayName: 'Default value', - validation: { - schema: { - type: 'string', - }, - }, - }, - loadingState: { - type: 'toggle', - displayName: 'Loading state', - validation: { schema: { type: 'boolean' } }, - section: 'additionalActions', - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { schema: { type: 'boolean' } }, - section: 'additionalActions', - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { schema: { type: 'boolean' } }, - section: 'additionalActions', - }, - tooltip: { - type: 'code', - displayName: 'Tooltip', - validation: { schema: { type: 'string' } }, - section: 'additionalActions', - placeholder: 'Enter tooltip text', - }, - }, - validation: { - mandatory: { type: 'toggle', displayName: 'Make this field mandatory' }, - regex: { - type: 'code', - displayName: 'Regex', - placeholder: '^(?=.*[a-z])(?=.*[A-Z])(?=.*d)[a-zA-Zd]{8,}$', - }, - minLength: { type: 'code', displayName: 'Min length', placeholder: 'Enter min length' }, - maxLength: { type: 'code', displayName: 'Max length', placeholder: 'Enter max length' }, - customRule: { - type: 'code', - displayName: 'Custom validation', - placeholder: `{{components.text2.text=='yes'&&'valid'}}`, - }, - }, - events: { - onChange: { displayName: 'On change' }, - onFocus: { displayName: 'On focus' }, - onBlur: { displayName: 'On blur' }, - onEnterPressed: { displayName: 'On enter pressed' }, - }, - styles: { - color: { - type: 'color', - displayName: 'Text', - validation: { schema: { type: 'string' } }, - accordian: 'label', - }, - alignment: { - type: 'switch', - displayName: 'Alignment', - validation: { schema: { type: 'string' } }, - options: [ - { displayName: 'Side', value: 'side' }, - { displayName: 'Top', value: 'top' }, - ], - accordian: 'label', - }, - direction: { - type: 'switch', - displayName: '', - validation: { schema: { type: 'string' } }, - showLabel: false, - isIcon: true, - options: [ - { displayName: 'alignleftinspector', value: 'left', iconName: 'alignleftinspector' }, - { displayName: 'alignrightinspector', value: 'right', iconName: 'alignrightinspector' }, - ], - accordian: 'label', - }, - width: { - type: 'slider', - displayName: 'Width', - accordian: 'label', - conditionallyRender: { - key: 'alignment', - value: 'side', - }, - }, - auto: { - type: 'checkbox', - displayName: 'auto', - showLabel: false, - validation: { schema: { type: 'boolean' } }, - accordian: 'label', - conditionallyRender: { - key: 'alignment', - value: 'side', - }, - }, - - backgroundColor: { - type: 'color', - displayName: 'Background', - validation: { schema: { type: 'string' } }, - accordian: 'field', - }, - accentColor: { - type: 'color', - displayName: 'Accent', - validation: { schema: { type: 'string' } }, - accordian: 'field', - }, - borderColor: { - type: 'color', - displayName: 'Border', - validation: { schema: { type: 'string' } }, - accordian: 'field', - }, - textColor: { - type: 'color', - displayName: 'Text', - validation: { schema: { type: 'string' } }, - accordian: 'field', - }, - errTextColor: { - type: 'color', - displayName: 'Error text', - validation: { schema: { type: 'string' } }, - accordian: 'field', - }, - icon: { - type: 'icon', - displayName: 'Icon', - validation: { schema: { type: 'string' } }, - accordian: 'field', - visibility: false, - }, - iconColor: { - type: 'color', - displayName: 'Icon color', - validation: { schema: { type: 'string' } }, - accordian: 'field', - visibility: false, - showLabel: false, - }, - borderRadius: { - type: 'numberInput', - displayName: 'Border radius', - validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, - accordian: 'field', - }, - boxShadow: { - type: 'boxShadow', - displayName: 'Box shadow', - validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, - accordian: 'field', - }, - - padding: { - type: 'switch', - displayName: 'Padding', - validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, - options: [ - { displayName: 'Default', value: 'default' }, - { displayName: 'None', value: 'none' }, - ], - accordian: 'container', - }, - }, - exposedVariables: { - value: '', - mandatory: { value: '{{false}}' }, - isVisible: true, - isDisabled: false, - isLoading: false, - }, - actions: [ - { - handle: 'setText', - displayName: 'Set text', - params: [{ handle: 'text', displayName: 'text', defaultValue: 'New Text' }], - }, - { - handle: 'clear', - displayName: 'Clear', - }, - { - handle: 'setFocus', - displayName: 'Set focus', - }, - { - handle: 'setBlur', - displayName: 'Set blur', - }, - { - handle: 'setVisibility', - displayName: 'Set visibility', - params: [{ handle: 'disable', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], - }, - { - handle: 'setDisable', - displayName: 'Set disable', - params: [{ handle: 'disable', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], - }, - { - handle: 'setLoading', - displayName: 'Set loading', - params: [{ handle: 'loading', displayName: 'Value', defaultValue: '{{false}}', type: 'toggle' }], - }, - ], - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - placeholder: { value: 'Password' }, - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - loadingState: { value: '{{false}}' }, - tooltip: { value: '' }, - label: { value: 'Label' }, - value: { value: '' }, - }, - validation: { - mandatory: { value: false }, - regex: { value: '' }, - minLength: { value: null }, - maxLength: { value: null }, - customRule: { value: null }, - }, - events: [], - styles: { - borderRadius: { value: '{{6}}' }, - backgroundColor: { value: '#fff' }, - borderColor: { value: '#CCD1D5' }, - accentColor: { value: '#4368E3' }, - errTextColor: { value: '#D72D39' }, - textColor: { value: '#1B1F24' }, - iconColor: { value: '#CFD3D859' }, - direction: { value: 'left' }, - width: { value: '{{33}}' }, - alignment: { value: 'side' }, - color: { value: '#1B1F24' }, - auto: { value: '{{true}}' }, - padding: { value: 'default' }, - boxShadow: { value: '0px 0px 0px 0px #00000040' }, - icon: { value: 'IconLock' }, - iconVisibility: { value: true }, - }, - }, - }, - { - name: 'Datepicker', - displayName: 'Date Picker', - description: 'Choose date and time', - component: 'Datepicker', - defaultSize: { - width: 5, - height: 30, - }, - validation: { - customRule: { type: 'code', displayName: 'Custom validation' }, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - defaultValue: { - type: 'code', - displayName: 'Default value', - validation: { - schema: { type: 'string' }, - }, - }, - format: { - type: 'code', - displayName: 'Format', - validation: { - schema: { type: 'string' }, - }, - }, - enableTime: { - type: 'toggle', - displayName: 'Enable time selection?', - validation: { - schema: { type: 'boolean' }, - defaultValue: false, - }, - }, - enableDate: { - type: 'toggle', - displayName: 'Enable date selection?', - validation: { - schema: { type: 'boolean' }, - defaultValue: true, - }, - }, - disabledDates: { - type: 'code', - displayName: 'Disabled dates', - validation: { - schema: { type: 'array', element: { type: 'string' } }, - }, - }, - }, - events: { - onSelect: { displayName: 'On select' }, - }, - styles: { - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - }, - }, - borderRadius: { - type: 'code', - displayName: 'Border radius', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, - }, - }, - }, - exposedVariables: { - value: '', - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - validation: { - customRule: { value: null }, - }, - properties: { - defaultValue: { value: '01/01/2022' }, - format: { value: 'DD/MM/YYYY' }, - enableTime: { value: '{{false}}' }, - enableDate: { value: '{{true}}' }, - disabledDates: { value: '{{[]}}' }, - }, - events: [], - styles: { - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - borderRadius: { value: '{{4}}' }, - }, - }, - }, - { - name: 'Checkbox', - displayName: 'Checkbox', - description: 'Single checkbox toggle', - component: 'Checkbox', - defaultSize: { - width: 5, - height: 30, - }, - actions: [ - { - handle: 'setChecked', - displayName: 'Set checked', - params: [{ handle: 'status', displayName: 'status' }], - }, - ], - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - label: { - type: 'code', - displayName: 'Label', - validation: { - schema: { type: 'string' }, - }, - }, - defaultValue: { - type: 'toggle', - displayName: 'Default status', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - events: { - onCheck: { displayName: 'On check' }, - onUnCheck: { displayName: 'On uncheck' }, - }, - styles: { - textColor: { - type: 'color', - displayName: 'Text Color', - validation: { - schema: { type: 'string' }, - }, - }, - checkboxColor: { - type: 'color', - displayName: 'Checkbox color', - validation: { - schema: { type: 'string' }, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - exposedVariables: { - value: false, - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - label: { value: 'Checkbox label' }, - defaultValue: { value: '{{false}}' }, - }, - events: [], - styles: { - textColor: { value: '' }, - checkboxColor: { value: '' }, - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - }, - }, - }, - { - name: 'Radio-button', - displayName: 'Radio Button', - description: 'Select one from multiple choices', - component: 'RadioButton', - defaultSize: { - width: 6, - height: 60, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - label: { - type: 'code', - displayName: 'Label', - validation: { - schema: { type: 'string' }, - }, - }, - value: { - type: 'code', - displayName: 'Default value', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }, { type: 'boolean' }] }, - }, - }, - values: { - type: 'code', - displayName: 'Option values', - validation: { - schema: { - type: 'array', - element: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }, { type: 'boolean' }] }, - }, - }, - }, - display_values: { - type: 'code', - displayName: 'Option labels', - validation: { - schema: { type: 'array', element: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, - }, - }, - }, - events: { - onSelectionChange: { displayName: 'On select' }, - }, - styles: { - textColor: { - type: 'color', - displayName: 'Text color', - validation: { - schema: { type: 'string' }, - }, - }, - activeColor: { - type: 'color', - displayName: 'Active color', - validation: { - schema: { type: 'string' }, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - actions: [ - { - handle: 'selectOption', - displayName: 'Select Option', - params: [ - { - handle: 'option', - displayName: 'Option', - }, - ], - }, - ], - exposedVariables: {}, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - label: { value: 'Select' }, - value: { value: '{{true}}' }, - values: { value: '{{[true,false]}}' }, - display_values: { value: '{{["yes", "no"]}}' }, - visible: { value: '{{true}}' }, - }, - events: [], - styles: { - textColor: { value: '' }, - activeColor: { value: '' }, - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - }, - }, - }, - { - name: 'ToggleSwitch', - displayName: 'Toggle Switch', - description: 'User-controlled on-off switch', - component: 'ToggleSwitch', - defaultSize: { - width: 6, - height: 30, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - label: { - type: 'code', - displayName: 'Label', - validation: { - schema: { type: 'string' }, - }, - }, - defaultValue: { - type: 'toggle', - displayName: 'Default status', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - events: { - onChange: { displayName: 'On change' }, - }, - styles: { - textColor: { - type: 'color', - displayName: 'Text Color', - validation: { - schema: { type: 'string' }, - }, - }, - toggleSwitchColor: { - type: 'color', - displayName: 'Toggle Switch Color', - validation: { - schema: { type: 'string' }, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - exposedVariables: { - value: false, - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - label: { value: 'Toggle label' }, - defaultValue: { value: '{{false}}' }, - }, - events: [], - styles: { - textColor: { value: '' }, - toggleSwitchColor: { value: '' }, - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - }, - }, - }, - { - name: 'Textarea', - displayName: 'Text Area', - description: 'Multi-line text input', - component: 'TextArea', - defaultSize: { - width: 6, - height: 100, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - value: { - type: 'code', - displayName: 'Default value', - validation: { - schema: { type: 'string' }, - }, - }, - placeholder: { - type: 'code', - displayName: 'Placeholder', - validation: { - schema: { type: 'string' }, - }, - }, - }, - events: {}, - styles: { - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - }, - }, - borderRadius: { - type: 'code', - displayName: 'Border radius', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, - }, - }, - }, - exposedVariables: { - value: - 'ToolJet is an open-source low-code platform for building and deploying internal tools with minimal engineering efforts 🚀', - }, - actions: [ - { - handle: 'setText', - displayName: 'Set Text', - params: [{ handle: 'text', displayName: 'text', defaultValue: 'New Text' }], - }, - { - handle: 'clear', - displayName: 'Clear', - }, - ], - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - value: { - value: - 'ToolJet is an open-source low-code platform for building and deploying internal tools with minimal engineering efforts 🚀', - }, - placeholder: { value: 'Placeholder text' }, - }, - events: [], - styles: { - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - borderRadius: { value: '{{4}}' }, - }, - }, - }, - { - name: 'DateRangePicker', - displayName: 'Range Picker', - description: 'Choose date ranges', - component: 'DaterangePicker', - defaultSize: { - width: 10, - height: 30, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - defaultStartDate: { - type: 'code', - displayName: 'Default start date', - validation: { - schema: { - type: 'string', - }, - }, - }, - defaultEndDate: { - type: 'code', - displayName: 'Default end date', - validation: { - schema: { - type: 'string', - }, - }, - }, - format: { - type: 'code', - displayName: 'Format', - validation: { - schema: { - type: 'string', - }, - }, - }, - }, - events: { - onSelect: { displayName: 'On select' }, - }, - styles: { - borderRadius: { - type: 'code', - displayName: 'Border radius', - validation: { - schema: { - type: 'union', - schemas: [{ type: 'number' }, { type: 'string' }], - }, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - }, - exposedVariables: { - endDate: {}, - startDate: {}, - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - defaultStartDate: { value: '01/04/2022' }, - defaultEndDate: { value: '10/04/2022' }, - - format: { value: 'DD/MM/YYYY' }, - }, - events: [], - styles: { - borderRadius: { value: '4' }, - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - }, - }, - }, - { - name: 'Text', - displayName: 'Text', - description: 'Display text or HTML', - component: 'Text', - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - textFormat: { - type: 'switch', - displayName: 'Text Format', - options: [ - { displayName: 'Plain text', value: 'plainText' }, - { displayName: 'Markdown', value: 'markdown' }, - { displayName: 'HTML', value: 'html' }, - ], - isFxNotRequired: true, - defaultValue: { value: 'plainText' }, - fullWidth: true, - }, - text: { - type: 'code', - displayName: 'TextComponentTextInput', // Keeping this name unique so that we can filter it in Codehinter - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, - }, - }, - loadingState: { - type: 'toggle', - displayName: 'Show loading state', - validation: { - schema: { type: 'boolean' }, - }, - section: 'additionalActions', - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - section: 'additionalActions', - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - }, - section: 'additionalActions', - }, - tooltip: { - type: 'code', - displayName: 'Tooltip', - validation: { schema: { type: 'string' } }, - section: 'additionalActions', - placeholder: 'Enter tooltip text', - }, - }, - defaultSize: { - width: 6, - height: 40, - }, - events: { - onClick: { displayName: 'On click' }, - onHover: { displayName: 'On hover' }, - }, - styles: { - textSize: { - type: 'numberInput', - displayName: 'Size', - validation: { - schema: [{ type: 'string' }, { type: 'number' }], - }, - accordian: 'Text', - }, - fontWeight: { - type: 'select', - displayName: 'Weight', - options: [ - { name: 'normal', value: 'normal' }, - { name: 'bold', value: 'bold' }, - { name: 'lighter', value: 'lighter' }, - { name: 'bolder', value: 'bolder' }, - ], - accordian: 'Text', - }, - fontStyle: { - type: 'switch', - displayName: 'Style', - options: [ - { displayName: 'Normal', value: 'normal', iconName: 'minus' }, - { displayName: 'Oblique', value: 'oblique', iconName: 'oblique' }, - { displayName: 'Italic', value: 'italic', iconName: 'italic' }, - ], - isIcon: true, - accordian: 'Text', - }, - textColor: { - type: 'color', - displayName: 'Color', - validation: { - schema: { type: 'string' }, - }, - accordian: 'Text', - }, - isScrollRequired: { - type: 'switch', - displayName: 'Scroll', - options: [ - { displayName: 'Enable', value: 'enabled' }, - { displayName: 'Disable', value: 'disabled' }, - ], - accordian: 'Text', - }, - lineHeight: { type: 'numberInput', displayName: 'Line height', accordian: 'Text' }, - textIndent: { type: 'numberInput', displayName: 'Text indent', accordian: 'Text' }, - textAlign: { - type: 'alignButtons', - displayName: 'Alignment', - validation: { - schema: { type: 'string' }, - }, - accordian: 'Text', - }, - verticalAlignment: { - type: 'switch', - displayName: '', - validation: { schema: { type: 'string' } }, - showLabel: false, - isIcon: true, - options: [ - { displayName: 'alignverticallytop', value: 'top', iconName: 'alignverticallytop' }, - { displayName: 'alignverticallycenter', value: 'center', iconName: 'alignverticallycenter' }, - { displayName: 'alignverticallybottom', value: 'bottom', iconName: 'alignverticallybottom' }, - ], - accordian: 'Text', - }, - decoration: { - type: 'switch', - displayName: 'Decoration', - isIcon: true, - options: [ - { displayName: 'none', value: 'none', iconName: 'minus' }, - { displayName: 'underline', value: 'underline', iconName: 'underline' }, - { displayName: 'overline', value: 'overline', iconName: 'overline' }, - { displayName: 'line-through', value: 'line-through', iconName: 'linethrough' }, - ], - accordian: 'Text', - }, - transformation: { - type: 'switch', - displayName: 'Transformation', - isIcon: true, - options: [ - { displayName: 'none', value: 'none', iconName: 'minus' }, - { displayName: 'uppercase', value: 'uppercase', iconName: 'uppercase' }, - { displayName: 'lowercase', value: 'lowercase', iconName: 'lowercase' }, - { displayName: 'capitalize', value: 'capitalize', iconName: 'capitalize' }, - ], - accordian: 'Text', - }, - letterSpacing: { type: 'numberInput', displayName: 'Letter spacing', accordian: 'Text' }, - wordSpacing: { type: 'numberInput', displayName: 'Word spacing', accordian: 'Text' }, - fontVariant: { - type: 'select', - displayName: 'Font variant', - options: [ - { name: 'normal', value: 'normal' }, - { name: 'small-caps', value: 'small-caps' }, - { name: 'initial', value: 'initial' }, - { name: 'inherit', value: 'inherit' }, - ], - accordian: 'Text', - }, - - backgroundColor: { - type: 'color', - displayName: 'Background', - validation: { - schema: { type: 'string' }, - }, - accordian: 'Container', - colorPickerPosition: 'top', - }, - borderColor: { - type: 'color', - displayName: 'Border', - validation: { - schema: { type: 'string' }, - }, - accordian: 'Container', - colorPickerPosition: 'top', - }, - borderRadius: { - type: 'numberInput', - displayName: 'Border radius', - validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, - accordian: 'Container', - }, - boxShadow: { - type: 'boxShadow', - displayName: 'Box shadow', - validation: { schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, - accordian: 'Container', - }, - padding: { - type: 'switch', - displayName: 'Padding', - validation: { schema: { type: 'string' } }, - options: [ - { displayName: 'Default', value: 'default' }, - { displayName: 'None', value: 'none' }, - ], - accordian: 'Container', - }, - }, - exposedVariables: { - text: 'Hello, there!', - }, - actions: [ - { - handle: 'setText', - displayName: 'Set text', - params: [{ handle: 'text', displayName: 'Text', defaultValue: 'New text' }], - }, - { - handle: 'setVisibility', - displayName: 'Set visibility', - params: [{ handle: 'setVisibility', displayName: 'Value', defaultValue: `{{true}}`, type: 'toggle' }], - }, - { - handle: 'clear', - displayName: 'Clear', - }, - { - handle: 'setLoading', - displayName: 'Set loading', - params: [{ handle: 'setLoading', displayName: 'Value', defaultValue: `{{false}}`, type: 'toggle' }], - }, - { - handle: 'setDisable', - displayName: 'Set disable', - params: [{ handle: 'setDisable', displayName: 'Value', defaultValue: `{{false}}`, type: 'toggle' }], - }, - ], - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - textFormat: { value: 'html' }, - text: { value: `Hello {{globals?.currentUser?.firstName}}👋` }, - loadingState: { value: `{{false}}` }, - disabledState: { value: '{{false}}' }, - visibility: { value: '{{true}}' }, - }, - events: [], - styles: { - backgroundColor: { value: '#fff00000' }, - textColor: { value: '#000000' }, - textSize: { value: 14 }, - textAlign: { value: 'left' }, - fontWeight: { value: 'normal' }, - decoration: { value: 'none' }, - transformation: { value: 'none' }, - fontStyle: { value: 'normal' }, - lineHeight: { value: 1.5 }, - textIndent: { value: 0 }, - letterSpacing: { value: 0 }, - wordSpacing: { value: 0 }, - fontVariant: { value: 'normal' }, - verticalAlignment: { value: 'center' }, - padding: { value: 'default' }, - boxShadow: { value: '0px 0px 0px 0px #00000090' }, - borderColor: { value: '' }, - borderRadius: { value: 6 }, - isScrollRequired: { value: 'enabled' }, - }, - }, - }, - { - name: 'Image', - displayName: 'Image', - description: 'Show image files', - defaultSize: { - width: 3, - height: 100, - }, - component: 'Image', - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - source: { - type: 'code', - displayName: 'URL', - validation: { - schema: { type: 'string' }, - }, - }, - loadingState: { - type: 'toggle', - displayName: 'Loading state', - validation: { - schema: { type: 'boolean' }, - }, - }, - alternativeText: { - type: 'code', - displayName: 'Alternative text', - validation: { - schema: { type: 'string' }, - }, - }, - zoomButtons: { - type: 'toggle', - displayName: 'Zoom button', - validation: { - schema: { type: 'boolean' }, - }, - }, - rotateButton: { - type: 'toggle', - displayName: 'Rotate button', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - events: { - onClick: { displayName: 'On click' }, - }, - styles: { - borderType: { - type: 'select', - displayName: 'Border type', - options: [ - { name: 'None', value: 'none' }, - { name: 'Rounded', value: 'rounded' }, - { name: 'Circle', value: 'rounded-circle' }, - { name: 'Thumbnail', value: 'img-thumbnail' }, - ], - validation: { - schema: { type: 'string' }, - }, - }, - backgroundColor: { - type: 'color', - displayName: 'Background color', - validation: { - schema: { type: 'string' }, - }, - }, - padding: { - type: 'code', - displayName: 'Padding', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - }, - }, - imageFit: { - type: 'select', - displayName: 'Image fit', - options: [ - { name: 'fill', value: 'fill' }, - { name: 'contain', value: 'contain' }, - { name: 'cover', value: 'cover' }, - { name: 'scale-down', value: 'scale-down' }, - ], - validation: { - schema: { type: 'string' }, - }, - }, - }, - exposedVariables: {}, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - source: { value: 'https://www.svgrepo.com/show/34217/image.svg' }, - visible: { value: '{{true}}' }, - loadingState: { value: '{{false}}' }, - alternativeText: { value: '' }, - zoomButtons: { value: '{{false}}' }, - rotateButton: { value: '{{false}}' }, - }, - events: [], - styles: { - borderType: { value: 'none' }, - padding: { value: '0' }, - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - imageFit: { value: 'contain' }, - backgroundColor: { value: '' }, - }, - }, - }, - { - name: 'Container', - displayName: 'Container', - description: 'Group components', - defaultSize: { - width: 5, - height: 200, - }, - component: 'Container', - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - loadingState: { - type: 'toggle', - displayName: 'Loading state', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - events: {}, - styles: { - backgroundColor: { - type: 'color', - displayName: 'Background color', - validation: { - schema: { type: 'string' }, - }, - }, - borderRadius: { - type: 'code', - displayName: 'Border radius', - validation: { - schema: { - type: 'union', - schemas: [{ type: 'string' }, { type: 'number' }], - }, - }, - }, - borderColor: { - type: 'color', - displayName: 'Border color', - validation: { - schema: { type: 'string' }, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - exposedVariables: {}, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - visible: { value: '{{true}}' }, - loadingState: { value: `{{false}}` }, - }, - events: [], - styles: { - backgroundColor: { value: '#fff' }, - borderRadius: { value: '4' }, - borderColor: { value: '#fff' }, - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - }, - }, - }, - { - name: 'Dropdown', - displayName: 'Dropdown', - description: 'Single item selector', - defaultSize: { - width: 8, - height: 30, - }, - component: 'DropDown', - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - validation: { - customRule: { type: 'code', displayName: 'Custom validation' }, - }, - properties: { - label: { - type: 'code', - displayName: 'Label', - validation: { - schema: { type: 'string' }, - }, - }, - placeholder: { - type: 'code', - displayName: 'Placeholder', - validation: { - validation: { - schema: { type: 'string' }, - }, - }, - }, - advanced: { - type: 'toggle', - displayName: 'Advanced', - validation: { - schema: { type: 'boolean' }, - }, - }, - value: { - type: 'code', - displayName: 'Default value', - conditionallyRender: { - key: 'advanced', - value: false, - }, - validation: { - schema: { - type: 'union', - schemas: [{ type: 'string' }, { type: 'number' }, { type: 'boolean' }], - }, - }, - }, - values: { - type: 'code', - displayName: 'Option values', - conditionallyRender: { - key: 'advanced', - value: false, - }, - validation: { - schema: { - type: 'array', - element: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }, { type: 'boolean' }] }, - }, - }, - }, - display_values: { - type: 'code', - displayName: 'Option labels', - conditionallyRender: { - key: 'advanced', - value: false, - }, - validation: { - schema: { - type: 'array', - element: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }, { type: 'boolean' }] }, - }, - }, - }, - - schema: { - type: 'code', - displayName: 'Schema', - conditionallyRender: { - key: 'advanced', - value: true, - }, - }, - loadingState: { - type: 'toggle', - displayName: 'Options loading state', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - events: { - onSelect: { displayName: 'On select' }, - onSearchTextChanged: { displayName: 'On search text changed' }, - }, - styles: { - borderRadius: { - type: 'code', - displayName: 'Border radius', - validation: { - schema: { - type: 'union', - schemas: [{ type: 'number' }, { type: 'string' }], - }, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - selectedTextColor: { - type: 'color', - displayName: 'Selected text color', - validation: { - schema: { - type: 'string', - }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - justifyContent: { - type: 'alignButtons', - displayName: 'Align Text', - validation: { - schema: { - type: 'string', - }, - }, - }, - }, - exposedVariables: { - value: 2, - searchText: '', - label: 'Select', - optionLabels: ['one', 'two', 'three'], - selectedOptionLabel: 'two', - }, - actions: [ - { - handle: 'selectOption', - displayName: 'Select option', - params: [{ handle: 'select', displayName: 'Select' }], - }, - ], - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - validation: { - customRule: { value: null }, - }, - properties: { - advanced: { value: `{{false}}` }, - schema: { - value: - "{{[\t{label: 'One',value: 1,disable: false,visible: true,default: true},{label: 'Two',value: 2,disable: false,visible: true},{label: 'Three',value: 3,disable: false,visible: true}\t]}}", - }, - - label: { value: 'Select' }, - value: { value: '{{2}}' }, - values: { value: '{{[1,2,3]}}' }, - display_values: { value: '{{["one", "two", "three"]}}' }, - loadingState: { value: '{{false}}' }, - placeholder: { value: 'Select an option' }, - }, - events: [], - styles: { - borderRadius: { value: '4' }, - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - justifyContent: { value: 'left' }, - }, - }, - }, - { - name: 'Multiselect', - displayName: 'Multiselect', - description: 'Multiple item selector', - defaultSize: { - width: 12, - height: 30, - }, - component: 'Multiselect', - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - actions: [ - { - handle: 'selectOption', - displayName: 'Select Option', - params: [ - { - handle: 'option', - displayName: 'Option', - }, - ], - }, - { - handle: 'deselectOption', - displayName: 'Deselect Option', - params: [ - { - handle: 'option', - displayName: 'Option', - }, - ], - }, - { - handle: 'clearSelections', - displayName: 'Clear selections', - }, - ], - properties: { - label: { - type: 'code', - displayName: 'Label', - validation: { - schema: { type: 'string' }, - }, - }, - value: { - type: 'code', - displayName: 'Default value', - validation: { - schema: { type: 'array', element: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, - }, - }, - values: { - type: 'code', - displayName: 'Option values', - validation: { - schema: { type: 'array', element: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, - }, - }, - display_values: { - type: 'code', - displayName: 'Option labels', - validation: { - schema: { type: 'array', element: { type: 'string' } }, - }, - }, - showAllOption: { - type: 'toggle', - displayName: 'Enable select All option', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - events: { - onSelect: { displayName: 'On select' }, - onSearchTextChanged: { displayName: 'On search text changed' }, - }, - styles: { - borderRadius: { - type: 'code', - displayName: 'Border radius', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - exposedVariables: { - values: {}, - searchText: '', - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - label: { value: 'Select' }, - value: { value: '{{[2,3]}}' }, - values: { value: '{{[1,2,3]}}' }, - display_values: { value: '{{["one", "two", "three"]}}' }, - visible: { value: '{{true}}' }, - showAllOption: { value: '{{false}}' }, - }, - events: [], - styles: { - borderRadius: { value: '4' }, - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - }, - }, - }, - { - name: 'RichTextEditor', - displayName: 'Text Editor', - description: 'Rich text editor', - component: 'RichTextEditor', - defaultSize: { - width: 16, - height: 210, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - placeholder: { - type: 'code', - displayName: 'Placeholder', - validation: { - schema: { type: 'string' }, - }, - }, - defaultValue: { - type: 'code', - displayName: 'Default value', - validation: { - schema: { type: 'string' }, - }, - }, - }, - events: {}, - styles: { - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - }, - exposedVariables: { - value: '', - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - placeholder: { value: 'Placeholder text' }, - defaultValue: { value: '' }, - }, - events: [], - styles: { - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - }, - }, - }, - { - name: 'Map', - displayName: 'Map', - description: 'Display map locations', - component: 'Map', - defaultSize: { - width: 16, - height: 420, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - initialLocation: { - type: 'code', - displayName: 'Initial location', - tip: 'This location will be the initial center of the map', - options: { - mode: 'javascript', - theme: 'duotone-light', - className: 'map-location-input pr-2', - }, - validation: { - schema: { - type: 'union', - schemas: [{ type: 'array', element: { type: 'object' } }, { type: 'object' }], - }, - }, - }, - defaultMarkers: { - type: 'code', - displayName: 'Default markers', - options: { - mode: 'javascript', - theme: 'duotone-light', - className: 'map-location-input pr-2', - }, - validation: { - schema: { - type: 'union', - schemas: [{ type: 'array', element: { type: 'object' } }, { type: 'object' }], - }, - }, - }, - polygonPoints: { - type: 'code', - displayName: 'Polygon points', - options: { - mode: 'javascript', - theme: 'duotone-light', - className: 'map-location-input pr-2', - }, - validation: { - schema: { - type: 'union', - schemas: [{ type: 'array', element: { type: 'object' } }, { type: 'object' }], - }, - }, - }, - addNewMarkers: { - type: 'toggle', - displayName: 'Add new markers', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - canSearch: { - type: 'toggle', - displayName: 'Search for places', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - }, - events: { - onBoundsChange: { displayName: 'On bounds change' }, - onCreateMarker: { displayName: 'On create marker' }, - onMarkerClick: { displayName: 'On marker click' }, - onPolygonClick: { displayName: 'On polygon click' }, - }, - actions: [ - { - handle: 'setLocation', - displayName: 'Set Location', - params: [ - { handle: 'lat', displayName: 'Latitude' }, - { handle: 'lng', displayName: 'Longitude' }, - ], - }, - ], - styles: { - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - }, - exposedVariables: { - center: {}, - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - initialLocation: { - value: `{{ {"lat": 40.7128, "lng": -73.935242} }}`, - }, - defaultMarkers: { - value: `{{ [{"lat": 40.7128, "lng": -73.935242}] }}`, - }, - polygonPoints: { - value: `{{[\n\t\t{"lat": 40.7032, "lng": -73.975242},\n\t\t{"lat": 40.7532, "lng": -73.943242},\n\t\t{"lat": 40.7032, "lng": -73.916242}\n]}}`, - }, - canSearch: { - value: `{{true}}`, - }, - addNewMarkers: { value: `{{true}}` }, - }, - events: [], - styles: { - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - }, - }, - }, - { - name: 'QrScanner', - displayName: 'QR Scanner', - description: 'Scan QR codes and hold its data', - component: 'QrScanner', - defaultSize: { - width: 10, - height: 300, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: {}, - events: { - onDetect: { displayName: 'On detect' }, - }, - styles: { - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - exposedVariables: { - lastDetectedValue: '', - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{true}}' }, - }, - properties: {}, - events: [], - styles: { - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - }, - }, - }, - { - name: 'StarRating', - displayName: 'Rating', - description: 'Star rating', - component: 'StarRating', - defaultSize: { - width: 10, - height: 30, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - label: { - type: 'code', - displayName: 'Label', - validation: { - schema: { type: 'string' }, - }, - }, - maxRating: { - type: 'code', - displayName: 'Number of stars', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, - }, - }, - defaultSelected: { - type: 'code', - displayName: 'Default no of selected stars', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, - }, - }, - allowHalfStar: { - type: 'toggle', - displayName: 'Enable half star', - validation: { - schema: { type: 'boolean' }, - }, - }, - tooltips: { - type: 'code', - displayName: 'Tooltips', - validation: { - schema: { type: 'array', element: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }, - }, - }, - }, - events: { - onChange: { displayName: 'On Change' }, - }, - styles: { - textColor: { - type: 'color', - displayName: 'Star color', - validation: { - schema: { type: 'string' }, - }, - }, - labelColor: { - type: 'color', - displayName: 'Label color', - validation: { - schema: { type: 'string' }, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - exposedVariables: { - value: 0, - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - label: { value: 'Select your rating' }, - maxRating: { value: '5' }, - defaultSelected: { value: '5' }, - allowHalfStar: { value: '{{false}}' }, - visible: { value: '{{true}}' }, - tooltips: { value: '{{[]}}' }, - }, - events: [], - styles: { - textColor: { value: '#ffb400' }, - labelColor: { value: '' }, - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - }, - }, - }, - { - name: 'Divider', - displayName: 'Divider', - description: 'Separator between components', - component: 'Divider', - defaultSize: { - width: 10, - height: 10, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: {}, - events: {}, - styles: { - dividerColor: { - type: 'color', - displayName: 'Divider color', - validation: { - schema: { type: 'string' }, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - exposedVariables: { - value: {}, - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: {}, - events: [], - styles: { - visibility: { value: '{{true}}' }, - dividerColor: { value: '' }, - }, - }, - }, - { - name: 'FilePicker', - displayName: 'File Picker', - description: 'File Picker', - component: 'FilePicker', - defaultSize: { - width: 15, - height: 100, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - actions: [ - { - handle: 'clearFiles', - displayName: 'Clear Files', - }, - ], - properties: { - instructionText: { - type: 'code', - displayName: 'Instruction text', - validation: { - schema: { type: 'string' }, - }, - }, - enableDropzone: { - type: 'code', - displayName: 'Use drop zone', - validation: { - schema: { type: 'boolean' }, - }, - }, - enablePicker: { - type: 'code', - displayName: 'Use file picker', - validation: { - schema: { type: 'boolean' }, - }, - }, - enableMultiple: { - type: 'code', - displayName: 'Pick multiple files', - validation: { - schema: { type: 'boolean' }, - }, - }, - maxFileCount: { - type: 'code', - displayName: 'Max file count', - validation: { - schema: { - type: 'union', - schemas: [{ type: 'string' }, { type: 'number' }], - }, - }, - }, - fileType: { - type: 'code', - displayName: 'Accept file types', - validation: { - schema: { - type: 'string', - }, - }, - }, - maxSize: { - type: 'code', - displayName: 'Max size limit (Bytes)', - validation: { - schema: { - type: 'union', - schemas: [{ type: 'string' }, { type: 'number' }], - }, - }, - }, - minSize: { - type: 'code', - displayName: 'Min size limit (Bytes)', - validation: { - schema: { - type: 'union', - schemas: [{ type: 'string' }, { type: 'number' }], - }, - }, - }, - parseContent: { - type: 'toggle', - displayName: 'Parse content', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - parseFileType: { - type: 'select', - displayName: 'File type', - options: [ - { name: 'Autodetect from extension', value: 'auto-detect' }, - { name: 'CSV', value: 'csv' }, - { name: 'Microsoft Excel - xls', value: 'vnd.ms-excel' }, - { - name: 'Microsoft Excel - xlsx', - value: 'vnd.openxmlformats-officedocument.spreadsheetml.sheet', - }, - ], - validation: { - schema: { - type: 'string', - }, - }, - }, - }, - events: { - onFileSelected: { displayName: 'On File Selected' }, - onFileLoaded: { displayName: 'On File Loaded' }, - onFileDeselected: { displayName: 'On File Deselected' }, - }, - styles: { - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - borderRadius: { - type: 'code', - displayName: 'Border radius', - validation: { - schema: { - type: 'union', - schemas: [{ type: 'string' }, { type: 'number' }], - }, - }, - }, - }, - exposedVariables: { - file: [{ name: '', content: '', dataURL: '', type: '', parsedData: '' }], - isParsing: false, - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - instructionText: { value: 'Drag and drop files here or click to select files' }, - enableDropzone: { value: '{{true}}' }, - enablePicker: { value: '{{true}}' }, - maxFileCount: { value: '{{2}}' }, - enableMultiple: { value: '{{false}}' }, - fileType: { value: '{{"image/*"}}' }, - maxSize: { value: '{{1048576}}' }, - minSize: { value: '{{50}}' }, - parseContent: { value: '{{false}}' }, - parseFileType: { value: 'auto-detect' }, - }, - events: [], - styles: { - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - borderRadius: { value: '{{4}}' }, - }, - }, - }, - { - name: 'Calendar', - displayName: 'Calendar', - description: 'Display calendar events', - component: 'Calendar', - defaultSize: { - width: 30, - height: 600, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - dateFormat: { type: 'code', displayName: 'Date format' }, - defaultDate: { type: 'code', displayName: 'Default date' }, - events: { type: 'code', displayName: 'Events' }, - resources: { type: 'code', displayName: 'Resources' }, - defaultView: { type: 'code', displayName: 'Default view' }, - startTime: { - type: 'code', - displayName: 'Start time on week and day view', - }, - endTime: { type: 'code', displayName: 'End time on week and day view' }, - displayToolbar: { type: 'toggle', displayName: 'Show toolbar' }, - displayViewSwitcher: { - type: 'toggle', - displayName: 'Show view switcher', - }, - highlightToday: { type: 'toggle', displayName: 'Highlight today' }, - showPopOverOnEventClick: { - type: 'toggle', - displayName: 'Show popover when event is clicked', - }, - }, - events: { - onCalendarEventSelect: { displayName: 'On Event Select' }, - onCalendarSlotSelect: { displayName: 'On Slot Select' }, - onCalendarNavigate: { displayName: 'On Date Navigate' }, - onCalendarViewChange: { displayName: 'On View Change' }, - }, - styles: { - visibility: { type: 'toggle', displayName: 'Visibility' }, - cellSizeInViewsClassifiedByResource: { - type: 'select', - displayName: 'Cell size in views classified by resource', - options: [ - { name: 'Compact', value: 'compact' }, - { name: 'Spacious', value: 'spacious' }, - ], - }, - weekDateFormat: { - type: 'code', - displayName: 'Header date format on week view', - }, - }, - exposedVariables: { - selectedEvent: {}, - selectedSlots: {}, - currentView: 'month', - currentDate: undefined, - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - dateFormat: { - value: 'MM-DD-YYYY HH:mm:ss A Z', - }, - defaultDate: { - value: '{{moment().format("MM-DD-YYYY HH:mm:ss A Z")}}', - }, - events: { - value: - "{{[\n\t\t{\n\t\t\t title: 'Sample event',\n\t\t\t start: `${moment().startOf('day').format('MM-DD-YYYY HH:mm:ss A Z')}`,\n\t\t\t end: `${moment().endOf('day').format('MM-DD-YYYY HH:mm:ss A Z')}`,\n\t\t\t allDay: false,\n\t\t\t color: '#4D72DA'\n\t\t}\n]}}", - }, - resources: { - value: '{{[]}}', - }, - defaultView: { - value: "{{'month'}}", - }, - startTime: { - value: "{{moment().startOf('day').format('MM-DD-YYYY HH:mm:ss A Z')}}", - }, - endTime: { - value: "{{moment().endOf('day').format('MM-DD-YYYY HH:mm:ss A Z')}}", - }, - displayToolbar: { - value: true, - }, - displayViewSwitcher: { - value: true, - }, - highlightToday: { - value: true, - }, - showPopOverOnEventClick: { - value: false, - }, - }, - events: [], - styles: { - visibility: { value: '{{true}}' }, - cellSizeInViewsClassifiedByResource: { value: 'spacious' }, - weekDateFormat: { value: 'DD MMM' }, - }, - }, - }, - { - name: 'Iframe', - displayName: 'Iframe', - description: 'Embed external content', - defaultSize: { - width: 10, - height: 310, - }, - component: 'IFrame', - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - source: { - type: 'code', - displayName: 'URL', - validation: { - schema: { type: 'string' }, - }, - }, - }, - events: {}, - styles: { - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - exposedVariables: {}, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - source: { value: 'https://tooljet.io/' }, - visible: { value: '{{true}}' }, - }, - events: [], - styles: { - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - }, - }, - }, - { - name: 'CodeEditor', - displayName: 'Code Editor', - description: 'Edit source code', - component: 'CodeEditor', - defaultSize: { - width: 15, - height: 120, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - enableLineNumber: { - type: 'code', - displayName: 'Show line number', - validation: { - schema: { type: 'boolean' }, - }, - }, - mode: { - type: 'code', - displayName: 'Mode', - validation: { - schema: { type: 'string' }, - }, - }, - placeholder: { - type: 'code', - displayName: 'Placeholder', - validation: { - schema: { type: 'string' }, - }, - }, - }, - events: {}, - styles: { - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - }, - }, - borderRadius: { - type: 'code', - displayName: 'Border radius', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, - }, - }, - }, - exposedVariables: { - value: '', - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - enableLineNumber: { value: '{{true}}' }, - mode: { value: 'javascript' }, - placeholder: { value: '' }, - }, - events: [], - styles: { - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - borderRadius: { value: '{{4}}' }, - }, - }, - }, - { - name: 'Tabs', - displayName: 'Tabs', - description: 'Organize content in tabs', - defaultSize: { - width: 30, - height: 300, - }, - defaultChildren: [ - { - componentName: 'Image', - layout: { - top: 60, - left: 37, - height: 100, - }, - tab: 0, - properties: ['source'], - defaultValue: { - source: 'https://uploads-ssl.webflow.com/6266634263b9179f76b2236e/62666392f32677b5cb2fb84b_logo.svg', - }, - }, - { - componentName: 'Text', - layout: { - top: 100, - left: 17, - height: 50, - width: 34, - }, - tab: 1, - properties: ['text'], - defaultValue: { - text: 'Open-source low-code framework to build & deploy internal tools within minutes.', - }, - }, - { - componentName: 'Table', - layout: { - top: 0, - left: 1, - width: 42, - height: 250, - }, - tab: 2, - }, - ], - component: 'Tabs', - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - tabs: { - type: 'code', - displayName: 'Tabs', - validation: { - schema: { - type: 'array', - element: { - type: 'object', - object: { - id: { - type: 'union', - schemas: [{ type: 'string' }, { type: 'number' }], - }, - }, - }, - }, - }, - }, - defaultTab: { - type: 'code', - displayName: 'Default tab', - validation: { - schema: { - type: 'union', - schemas: [{ type: 'string' }, { type: 'number' }], - }, - }, - }, - hideTabs: { - type: 'toggle', - displayName: 'Hide tabs', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - renderOnlyActiveTab: { - type: 'toggle', - displayName: 'Render only active tab', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - }, - events: { onTabSwitch: { displayName: 'On tab switch' } }, - styles: { - highlightColor: { - type: 'color', - displayName: 'Highlight color', - validation: { - schema: { type: 'string' }, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { - type: 'boolean', - }, - }, - }, - tabWidth: { - type: 'select', - displayName: 'Tab width', - options: [ - { name: 'Auto', value: 'auto' }, - { name: 'Equally split', value: 'split' }, - ], - }, - }, - actions: [ - { - handle: 'setTab', - displayName: 'Set current tab', - params: [ - { - handle: 'id', - displayName: 'Id', - }, - ], - }, - ], - exposedVariables: { currentTab: '' }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - tabs: { - value: - "{{[ \n\t\t{ title: 'Home', id: '0' }, \n\t\t{ title: 'Profile', id: '1' }, \n\t\t{ title: 'Settings', id: '2' } \n ]}}", - }, - defaultTab: { value: '0' }, - hideTabs: { value: false }, - renderOnlyActiveTab: { value: true }, - }, - events: [], - styles: { - highlightColor: { value: '' }, - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - tabWidth: { value: 'auto' }, - }, - }, - }, - { - name: 'Timer', - displayName: 'Timer', - description: 'Countdown or stopwatch', - component: 'Timer', - defaultSize: { - width: 11, - height: 128, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - value: { - type: 'code', - displayName: 'Default value', - validation: { - schema: { type: 'string' }, - }, - }, - type: { - type: 'select', - displayName: 'Timer type', - options: [ - { name: 'Count up', value: 'countUp' }, - { name: 'Count down', value: 'countDown' }, - ], - validation: { - schema: { type: 'string' }, - }, - }, - }, - validation: {}, - events: { - onStart: { displayName: 'On Start' }, - onResume: { displayName: 'On Resume' }, - onPause: { displayName: 'On Pause' }, - onCountDownFinish: { displayName: 'On Count Down Finish' }, - onReset: { displayName: 'On Reset' }, - }, - styles: { - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - exposedVariables: { - value: '', - }, - definition: { - validation: {}, - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - value: { - value: '00:00:00:000', - }, - type: { - value: 'countUp', - }, - }, - defaults: [ - { - type: 'countUp', - value: '00:00:00:000', - paramName: 'value', - }, - { - type: 'countDown', - value: '00:00:10:000', - paramName: 'value', - }, - ], - events: [], - styles: { - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - }, - }, - }, - { - name: 'Listview', - displayName: 'List View', - description: 'List multiple items', - defaultSize: { - width: 20, - height: 300, - }, - defaultChildren: [ - { - componentName: 'Image', - layout: { - top: 15, - left: 6.976744186046512, - height: 100, - }, - properties: ['source'], - accessorKey: 'imageURL', - }, - { - componentName: 'Text', - layout: { - top: 50, - left: 27, - height: 30, - }, - properties: ['text'], - accessorKey: 'text', - }, - { - componentName: 'Button', - layout: { - top: 50, - left: 60, - height: 30, - }, - incrementWidth: 2, - properties: ['text'], - accessorKey: 'buttonText', - }, - ], - component: 'Listview', - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - data: { - type: 'code', - displayName: 'List data', - validation: { - schema: { type: 'array', element: { type: 'object' } }, - }, - }, - mode: { - type: 'select', - displayName: 'Mode', - options: [ - { name: 'list', value: 'list' }, - { name: 'grid', value: 'grid' }, - ], - validation: { - schema: { type: 'string' }, - }, - }, - columns: { - type: 'number', - displayName: 'Columns', - validation: { - schema: { type: 'number' }, - }, - conditionallyRender: { - key: 'mode', - value: 'grid', - }, - }, - rowHeight: { - type: 'code', - displayName: 'Row height', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, - }, - }, - showBorder: { - type: 'code', - displayName: 'Show bottom border', - validation: { - schema: { type: 'boolean' }, - }, - conditionallyRender: { - key: 'mode', - value: 'list', - }, - }, - enablePagination: { - type: 'toggle', - displayName: 'Enable pagination', - validation: { - schema: { type: 'boolean' }, - }, - }, - rowsPerPage: { - type: 'code', - displayName: 'Rows per page', - validation: { - schema: { type: 'number' }, - }, - }, - }, - events: { - onRowClicked: { displayName: 'Row clicked (Deprecated)' }, - onRecordClicked: { displayName: 'Record clicked' }, - }, - styles: { - backgroundColor: { - type: 'color', - displayName: 'Background color', - validation: { - schema: { type: 'string' }, - }, - }, - borderColor: { - type: 'color', - displayName: 'Border color', - validation: { - schema: { type: 'string' }, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - }, - }, - borderRadius: { - type: 'number', - displayName: 'Border radius', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, - }, - }, - }, - exposedVariables: { - data: [{}], - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - data: { - value: `{{[ - { imageURL: 'https://www.svgrepo.com/show/34217/image.svg', text: 'Sample text 1', buttonText: 'Button 1' }, - { imageURL: 'https://www.svgrepo.com/show/34217/image.svg', text: 'Sample text 1', buttonText: 'Button 2' }, - { imageURL: 'https://www.svgrepo.com/show/34217/image.svg', text: 'Sample text 1', buttonText: 'Button 3' }, - ]}}`, - }, - mode: { value: 'list' }, - columns: { value: '{{3}}' }, - rowHeight: { - value: '100', - }, - visible: { value: '{{true}}' }, - showBorder: { value: '{{true}}' }, - rowsPerPage: { value: '{{10}}' }, - enablePagination: { value: '{{false}}' }, - }, - events: [], - styles: { - backgroundColor: { value: '#fff' }, - borderColor: { value: '#dadcde' }, - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - borderRadius: { value: '{{4}}' }, - }, - }, - }, - { - name: 'Tags', - displayName: 'Tags', - description: 'Display tag labels', - component: 'Tags', - defaultSize: { - width: 8, - height: 30, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - data: { - type: 'code', - displayName: 'Tags', - validation: { - schema: { - type: 'array', - element: { - type: 'object', - object: { title: { type: 'string' }, color: { type: 'string' }, textColor: { type: 'string' } }, - }, - }, - }, - }, - }, - events: {}, - styles: { - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - exposedVariables: {}, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - data: { - value: - "{{ [ \n\t\t{ title: 'success', color: '#2fb344', textColor: '#fff' }, \n\t\t{ title: 'info', color: '#206bc4', textColor: '#fff' }, \n\t\t{ title: 'warning', color: '#f59f00', textColor: '#fff' }, \n\t\t{ title: 'danger', color: '#d63939', textColor: '#fff' } ] }}", - }, - }, - events: [], - styles: { - visibility: { value: '{{true}}' }, - }, - }, - }, - { - name: 'Pagination', - displayName: 'Pagination', - description: 'Navigate pages', - component: 'Pagination', - defaultSize: { - width: 10, - height: 30, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - numberOfPages: { - type: 'code', - displayName: 'Number of pages', - validation: { - schema: { type: 'number' }, - }, - }, - defaultPageIndex: { - type: 'code', - displayName: 'Default page index', - validation: { - schema: { type: 'number' }, - }, - }, - }, - validation: {}, - events: { - onPageChange: { displayName: 'On Page Change' }, - }, - styles: { - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - exposedVariables: { - totalPages: null, - currentPageIndex: null, - }, - definition: { - validation: {}, - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - numberOfPages: { - value: '{{5}}', - }, - defaultPageIndex: { - value: '{{1}}', - }, - }, - events: [], - styles: { - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - }, - }, - }, - { - name: 'CircularProgressBar', - displayName: 'Circular Progressbar', - description: 'Show circular progress', - component: 'CircularProgressBar', - defaultSize: { - width: 7, - height: 50, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - text: { - type: 'code', - displayName: 'Text', - validation: { - schema: { type: 'string' }, - }, - }, - progress: { - type: 'code', - displayName: 'Progress', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, - }, - }, - }, - events: {}, - styles: { - color: { - type: 'color', - displayName: 'Color', - validation: { - schema: { type: 'string' }, - }, - }, - textColor: { - type: 'color', - displayName: 'Text Color', - validation: { - schema: { type: 'string' }, - }, - }, - textSize: { - type: 'code', - displayName: 'Text size', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, - }, - }, - strokeWidth: { - type: 'code', - displayName: 'Stroke width', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, - }, - }, - counterClockwise: { - type: 'code', - displayName: 'Counter clockwise', - validation: { - schema: { type: 'boolean' }, - }, - }, - circleRatio: { - type: 'code', - displayName: 'Circle ratio', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - exposedVariables: {}, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - text: { - value: '', - }, - progress: { - value: '{{50}}', - }, - }, - events: [], - styles: { - color: { value: '' }, - textColor: { value: '' }, - textSize: { value: '{{16}}' }, - strokeWidth: { value: '{{8}}' }, - counterClockwise: { value: '{{false}}' }, - circleRatio: { value: '{{1}}' }, - visibility: { value: '{{true}}' }, - }, - }, - }, - { - name: 'Spinner', - displayName: 'Spinner', - description: 'Indicate loading state', - component: 'Spinner', - defaultSize: { - width: 4, - height: 30, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: {}, - events: {}, - styles: { - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - colour: { - type: 'color', - displayName: 'Colour', - validation: { - schema: { type: 'string' }, - }, - }, - size: { - type: 'select', - displayName: 'Size', - options: [ - { name: 'small', value: 'sm' }, - { name: 'large', value: 'lg' }, - ], - validation: { - schema: { type: 'string' }, - }, - }, - }, - exposedVariables: {}, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: {}, - events: [], - styles: { - visibility: { value: '{{true}}' }, - size: { value: 'sm' }, - colour: { value: '#0565ff' }, - }, - }, - }, - { - name: 'Statistics', - displayName: 'Statistics', - description: 'Show key metrics', - component: 'Statistics', - defaultSize: { - width: 9.2, - height: 152, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - primaryValueLabel: { - type: 'code', - displayName: 'Primary value label', - validation: { schema: { type: 'string' } }, - }, - primaryValue: { type: 'code', displayName: 'Primary value', validation: { schema: { type: 'string' } } }, - hideSecondary: { - type: 'toggle', - displayName: 'Hide secondary value', - validation: { schema: { type: 'boolean' } }, - }, - secondaryValueLabel: { - type: 'code', - displayName: 'Secondary value label', - validation: { schema: { type: 'string' } }, - }, - secondaryValue: { type: 'code', displayName: 'Secondary value', validation: { schema: { type: 'string' } } }, - secondarySignDisplay: { - type: 'code', - displayName: 'Secondary sign display', - - validation: { schema: { type: 'string' } }, - }, - loadingState: { type: 'toggle', displayName: 'Loading state', validation: { schema: { type: 'boolean' } } }, - }, - events: {}, - styles: { - primaryLabelColour: { - type: 'color', - displayName: 'Primary label colour', - validation: { schema: { type: 'string' } }, - }, - primaryTextColour: { - type: 'color', - displayName: 'Primary text colour', - validation: { schema: { type: 'string' } }, - }, - secondaryLabelColour: { - type: 'color', - displayName: 'Secondary label colour', - validation: { schema: { type: 'string' } }, - }, - secondaryTextColour: { - type: 'color', - displayName: 'Secondary text colour', - validation: { schema: { type: 'string' } }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { schema: { type: 'boolean' } }, - }, - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - primaryValueLabel: { value: 'This months earnings' }, - primaryValue: { value: '682.3' }, - secondaryValueLabel: { value: 'Last month' }, - secondaryValue: { value: '2.85' }, - secondarySignDisplay: { value: 'positive' }, - loadingState: { value: `{{false}}` }, - }, - events: [], - styles: { - primaryLabelColour: { value: '#8092AB' }, - primaryTextColour: { value: '#000000' }, - secondaryLabelColour: { value: '#8092AB' }, - secondaryTextColour: { value: '#36AF8B' }, - visibility: { value: '{{true}}' }, - }, - }, - }, - { - name: 'RangeSlider', - displayName: 'Range Slider', - description: 'Adjust value range', - component: 'RangeSlider', - defaultSize: { - width: 9, - height: 30, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - min: { - type: 'number', - displayName: 'Min', - validation: { - schema: { type: 'number' }, - }, - }, - max: { - type: 'number', - displayName: 'Max', - validation: { - schema: { type: 'number' }, - }, - }, - value: { - type: 'code', - displayName: 'Value', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, - }, - }, - enableTwoHandle: { - type: 'toggle', - displayName: 'Two handles', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - events: { - onChange: { displayName: 'On change' }, - }, - styles: { - lineColor: { - type: 'color', - displayName: 'Line color', - validation: { - schema: { type: 'string' }, - }, - }, - handleColor: { - type: 'color', - displayName: 'Handle color', - validation: { - schema: { type: 'string' }, - }, - }, - trackColor: { - type: 'color', - displayName: 'Track color', - validation: { - schema: { type: 'string' }, - }, - }, - visibility: { - type: 'code', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - exposedVariables: { - value: null, - }, - definition: { - others: { - showOnDesktop: { value: true }, - showOnMobile: { value: false }, - }, - properties: { - min: { - value: '{{0}}', - }, - max: { - value: '{{100}}', - }, - value: { - value: '{{50}}', - }, - enableTwoHandle: { value: false }, - }, - events: [], - styles: { - lineColor: { value: '' }, - handleColor: { value: '' }, - trackColor: { value: '' }, - visibility: { value: '{{true}}' }, - }, - }, - }, - { - name: 'Timeline', - displayName: 'Timeline', - description: 'Show event timeline', - component: 'Timeline', - properties: { - data: { - type: 'code', - displayName: 'Timeline data', - validation: { - schema: { type: 'array', element: { type: 'object' } }, - }, - }, - hideDate: { - type: 'toggle', - displayName: 'Hide date', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - defaultSize: { - width: 20, - height: 270, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - events: {}, - styles: { - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { schema: { type: 'boolean' } }, - }, - }, - exposedVariables: { - value: {}, - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - data: { - value: - "{{ [ \n\t\t{ title: 'Product Launched', subTitle: 'First version of our product released to public', date: '20/10/2021', iconBackgroundColor: '#4d72fa'},\n\t\t { title: 'First Signup', subTitle: 'Congratulations! We got our first signup', date: '22/10/2021', iconBackgroundColor: '#4d72fa'}, \n\t\t { title: 'First Payment', subTitle: 'Hurray! We got our first payment', date: '01/11/2021', iconBackgroundColor: '#4d72fa'} \n] }}", - }, - hideDate: { value: '{{false}}' }, - }, - events: [], - styles: { - visibility: { value: '{{true}}' }, - }, - }, - }, - { - name: 'SvgImage', - displayName: 'Svg Image', - description: 'Display SVG graphics', - component: 'SvgImage', - properties: { - data: { - type: 'code', - displayName: 'Svg data', - validation: { - schema: { type: 'string' }, - }, - }, - }, - defaultSize: { - width: 4, - height: 50, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - events: {}, - styles: { - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - exposedVariables: { - value: {}, - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - data: { - value: - '', - }, - }, - events: [], - styles: { - visibility: { value: '{{true}}' }, - }, - }, - }, - { - name: 'Html', - displayName: 'HTML Viewer', - description: 'View HTML content', - component: 'Html', - defaultSize: { - width: 10, - height: 310, - }, - properties: { - rawHtml: { - type: 'code', - displayName: 'Raw HTML', - validation: { - schema: { type: 'string' }, - }, - }, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - events: {}, - styles: { - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - exposedVariables: {}, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - rawHtml: { - value: `You can build your custom HTML-CSS template here`, - }, - }, - events: [], - styles: { - visibility: { value: '{{true}}' }, - }, - }, - }, - { - name: 'VerticalDivider', - displayName: 'Vertical Divider', - description: 'Vertical line separator', - component: 'VerticalDivider', - defaultSize: { - width: 2, - height: 100, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: {}, - events: {}, - styles: { - dividerColor: { - type: 'color', - displayName: 'Divider color', - validation: { - schema: { type: 'string' }, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - exposedVariables: { - value: {}, - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: {}, - events: [], - styles: { - visibility: { value: '{{true}}' }, - dividerColor: { value: '#000000' }, - }, - }, - }, - { - name: 'CustomComponent', - displayName: 'Custom Component', - description: 'Create React components', - component: 'CustomComponent', - properties: { - data: { type: 'code', displayName: 'Data', validation: { schema: { type: 'object' } } }, - code: { type: 'code', displayName: 'Code' }, - }, - defaultSize: { - width: 20, - height: 140, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - events: {}, - styles: { - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { schema: { type: 'boolean' } }, - }, - }, - exposedVariables: { - data: { value: `{{{ title: 'Hi! There', buttonText: 'Update Title'}}}` }, - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - visible: { value: '{{true}}' }, - data: { - value: `{{{ title: 'Hi! There', buttonText: 'Update Title'}}}`, - }, - code: { - value: `import React from 'https://cdn.skypack.dev/react'; -import ReactDOM from 'https://cdn.skypack.dev/react-dom'; -import { Button, Container } from 'https://cdn.skypack.dev/@material-ui/core'; -const MyCustomComponent = ({data, updateData, runQuery}) => ( - - {data.title} - {updateData({title: 'Hello World!!'})}} - > - {data.buttonText} - - -); -const ConnectedComponent = Tooljet.connectComponent(MyCustomComponent); -ReactDOM.render(, document.body);`, - skipResolve: true, - }, - }, - events: [], - styles: { - visibility: { value: '{{true}}' }, - }, - }, - }, - { - name: 'ButtonGroup', - displayName: 'Button Group', - description: 'Group of buttons', - component: 'ButtonGroup', - properties: { - label: { - type: 'code', - displayName: 'label', - validation: { - schema: { type: 'string' }, - }, - }, - values: { - type: 'code', - displayName: 'values', - validation: { - schema: { - type: 'union', - schemas: [{ type: 'array', element: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }], - }, - }, - }, - labels: { - type: 'code', - displayName: 'Labels', - validation: { - schema: { - type: 'union', - schemas: [{ type: 'array', element: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }], - }, - }, - }, - defaultSelected: { - type: 'code', - displayName: 'Default selected', - validation: { - schema: { - type: 'union', - schemas: [{ type: 'array', element: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] } }], - }, - }, - }, - multiSelection: { - type: 'toggle', - displayName: 'Enable multiple selection', - - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - defaultSize: { - width: 12, - height: 80, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - events: { - onClick: { displayName: 'On click' }, - }, - styles: { - backgroundColor: { - type: 'color', - displayName: 'Background color', - validation: { - schema: { type: 'string' }, - }, - }, - textColor: { - type: 'color', - displayName: 'Text color', - validation: { - schema: { type: 'string' }, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - }, - }, - borderRadius: { - type: 'number', - displayName: 'Border radius', - validation: { - schema: { type: 'number' }, - defaultValue: false, - }, - }, - selectedTextColor: { - type: 'color', - displayName: 'Selected text colour', - validation: { - schema: { type: 'string' }, - }, - }, - selectedBackgroundColor: { - type: 'color', - displayName: 'Selected background color', - validation: { - schema: { type: 'string' }, - }, - }, - }, - exposedVariables: { - selected: [1], - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - label: { value: `Button group` }, - defaultSelected: { value: '{{[1]}}' }, - values: { value: '{{[1,2,3]}}' }, - labels: { value: '{{[]}}' }, - multiSelection: { value: '{{false}}' }, - }, - events: [], - styles: { - backgroundColor: { value: '' }, - textColor: { value: '' }, - visibility: { value: '{{true}}' }, - borderRadius: { value: '{{4}}' }, - disabledState: { value: '{{false}}' }, - selectedTextColor: { value: '' }, - selectedBackgroundColor: { value: '' }, - }, - }, - }, - { - name: 'PDF', - displayName: 'PDF', - description: 'Embed PDF documents', - component: 'PDF', - properties: { - url: { type: 'code', displayName: 'File URL', validation: { schema: { type: 'string' } } }, - scale: { type: 'toggle', displayName: 'Scale page to width', validation: { schema: { type: 'boolean' } } }, - pageControls: { type: 'toggle', displayName: 'Show page controls', validation: { schema: { type: 'boolean' } } }, - showDownloadOption: { - type: 'toggle', - displayName: 'Show download button', - validation: { schema: { type: 'boolean' } }, - }, - }, - defaultSize: { - width: 20, - height: 640, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - events: {}, - styles: { - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { schema: { type: 'boolean' } }, - }, - }, - exposedVariables: {}, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - url: { - value: - 'https://upload.wikimedia.org/wikipedia/commons/e/ee/Guideline_No._GD-Ed-2214_Marman_Clamp_Systems_Design_Guidelines.pdf', - }, - scale: { - value: '{{true}}', - }, - pageControls: { - value: `{{true}}`, - }, - showDownloadOption: { - value: `{{true}}`, - }, - }, - events: [], - styles: { - visibility: { value: '{{true}}' }, - }, - }, - }, - - { - name: 'Steps', - displayName: 'Steps', - description: 'Step-by-step navigation aid', - component: 'Steps', - properties: { - steps: { - type: 'code', - displayName: 'Steps', - validation: { - schema: { - type: 'array', - element: { type: 'object', object: { id: { type: 'number' } } }, - }, - }, - }, - currentStep: { - type: 'code', - displayName: 'Current step', - validation: { - schema: { type: 'number' }, - }, - }, - stepsSelectable: { - type: 'toggle', - displayName: 'Steps selectable', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - defaultSize: { - width: 22, - height: 38, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - events: { - onSelect: { displayName: 'On select' }, - }, - styles: { - color: { - type: 'color', - displayName: 'Color', - validation: { - schema: { type: 'string' }, - }, - }, - textColor: { - type: 'color', - displayName: 'Text color', - validation: { - schema: { type: 'string' }, - }, - }, - theme: { - type: 'select', - displayName: 'Theme', - options: [ - { name: 'titles', value: 'titles' }, - { name: 'numbers', value: 'numbers' }, - { name: 'plain', value: 'plain' }, - ], - validation: { - schema: { type: 'string' }, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - exposedVariables: { - currentStepId: '3', - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - steps: { - value: `{{ [{ name: 'step 1', tooltip: 'some tooltip', id: 1},{ name: 'step 2', tooltip: 'some tooltip', id: 2},{ name: 'step 3', tooltip: 'some tooltip', id: 3},{ name: 'step 4', tooltip: 'some tooltip', id: 4},{ name: 'step 5', tooltip: 'some tooltip', id: 5}]}}`, - }, - currentStep: { value: '{{3}}' }, - stepsSelectable: { value: true }, - }, - events: [], - styles: { - visibility: { value: '{{true}}' }, - theme: { value: 'titles' }, - color: { value: '' }, - textColor: { value: '' }, - }, - }, - }, - { - name: 'KanbanBoard', - displayName: 'Kanban Board', - description: 'Task management board', - component: 'KanbanBoard', - defaultSize: { - width: 40, - height: 490, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - columns: { type: 'code', displayName: 'Columns' }, - cardData: { type: 'code', displayName: 'Card Data' }, - enableAddCard: { type: 'toggle', displayName: 'Enable Add Card' }, - }, - events: { - onCardAdded: { displayName: 'Card added' }, - onCardRemoved: { displayName: 'Card removed' }, - onCardMoved: { displayName: 'Card moved' }, - onCardSelected: { displayName: 'Card selected' }, - onCardUpdated: { displayName: 'Card updated' }, - }, - styles: { - disabledState: { type: 'toggle', displayName: 'Disable' }, - visibility: { type: 'toggle', displayName: 'Visibility' }, - width: { type: 'number', displayName: 'Width' }, - minWidth: { type: 'number', displayName: 'Min Width' }, - accentColor: { type: 'color', displayName: 'Accent color' }, - }, - exposedVariables: { - columns: {}, - lastAddedCard: {}, - lastRemovedCard: {}, - lastCardMovement: {}, - lastUpdatedCard: {}, - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - columns: { - value: '{{[{ "id": "1", "title": "to do" },{ "id": "2", "title": "in progress" }]}}', - }, - cardData: { - value: - '{{[{ id: "01", title: "one", columnId: "1" },{ id: "02", title: "two", columnId: "1" },{ id: "03", title: "three", columnId: "2" }]}}', - }, - enableAddCard: { - value: `{{true}}`, - }, - }, - events: [], - styles: { - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - width: { value: '{{400}}' }, - minWidth: { value: '{{200}}' }, - textColor: { value: '' }, - }, - }, - }, - { - name: 'Kanban', - displayName: 'Kanban', - description: 'Task management board', - component: 'Kanban', - defaultSize: { - width: 40, - height: 490, - }, - defaultChildren: [ - { - componentName: 'Text', - layout: { - top: 20, - left: 4, - height: 30, - }, - properties: ['text'], - accessorKey: 'text', - styles: ['fontWeight', 'textSize', 'textColor'], - defaultValue: { - text: '{{cardData.title}}', - fontWeight: 'bold', - textSize: 16, - textColor: '#000', - }, - }, - { - componentName: 'Text', - layout: { - top: 50, - left: 4, - height: 30, - }, - properties: ['text'], - accessorKey: 'text', - styles: ['textSize', 'textColor'], - defaultValue: { - text: '{{cardData.description}}', - textSize: 14, - textColor: '#000', - }, - }, - ], - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - columnData: { type: 'code', displayName: 'Column data' }, - cardData: { type: 'code', displayName: 'Card data' }, - cardWidth: { - type: 'code', - displayName: 'Card width', - validation: { - schema: { type: 'number' }, - }, - }, - cardHeight: { - type: 'code', - displayName: 'Card height', - validation: { - schema: { type: 'number' }, - }, - }, - enableAddCard: { type: 'toggle', displayName: 'Enable add card' }, - showDeleteButton: { type: 'toggle', displayName: 'Show delete button' }, - }, - events: { - onUpdate: { displayName: 'On update' }, - onAddCardClick: { displayName: 'On add card click' }, - onCardRemoved: { displayName: 'Card removed' }, - onCardAdded: { displayName: 'Card added' }, - onCardMoved: { displayName: 'Card moved' }, - onCardSelected: { displayName: 'Card selected' }, - }, - styles: { - disabledState: { type: 'toggle', displayName: 'Disable' }, - visibility: { type: 'toggle', displayName: 'Visibility' }, - accentColor: { type: 'color', displayName: 'Accent color' }, - }, - actions: [ - { - handle: 'addCard', - displayName: 'Add Card', - params: [ - { - handle: 'cardDetails', - displayName: 'Card Details', - defaultValue: `{{{ id: "c11", title: "Title 11", description: "Description 11", columnId: "r3" }}}`, - }, - ], - }, - { - handle: 'deleteCard', - displayName: 'Delete Card', - params: [ - { handle: 'id', displayName: 'Card Id', defaultValue: `{{components.kanban1?.lastSelectedCard?.id}}` }, - ], - }, - { - handle: 'moveCard', - displayName: 'Move Card', - params: [ - { handle: 'cardId', displayName: 'Card Id', defaultValue: `{{components.kanban1?.lastSelectedCard?.id}}` }, - { handle: 'columnId', displayName: 'Destination Column Id', defaultValue: '' }, - ], - }, - { - handle: 'updateCardData', - displayName: 'Update Card Data', - params: [ - { handle: 'id', displayName: 'Card Id', defaultValue: `{{components.kanban1?.lastSelectedCard?.id}}` }, - { - handle: 'value', - displayName: 'Value', - defaultValue: `{{{...components.kanban1?.lastSelectedCard, title: 'New Title'}}}`, - }, - ], - }, - ], - exposedVariables: { - updatedCardData: {}, - lastAddedCard: {}, - lastRemovedCard: {}, - lastCardMovement: {}, - lastSelectedCard: {}, - lastUpdatedCard: {}, - lastCardUpdate: [], - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - columnData: { - value: - '{{[{ "id": "r1", "title": "To Do" },{ "id": "r2", "title": "In Progress" },{ "id": "r3", "title": "Done" }]}}', - }, - cardData: { - value: - '{{[{ id: "c1", title: "Title 1", description: "Description 1", columnId: "r1" },{ id: "c2", title: "Title 2", description: "Description 2", columnId: "r1" },{ id: "c3", title: "Title 3", description: "Description 3",columnId: "r2" },{ id: "c4", title: "Title 4", description: "Description 4",columnId: "r3" },{ id: "c5", title: "Title 5", description: "Description 5",columnId: "r3" }, { id: "c6", title: "Title 6", description: "Description 6", columnId: "r1" },{ id: "c7", title: "Title 7", description: "Description 7", columnId: "r1" },{ id: "c8", title: "Title 8", description: "Description 8",columnId: "r2" },{ id: "c9", title: "Title 9", description: "Description 9",columnId: "r3" },{ id: "c10", title: "Title 10", description: "Description 10",columnId: "r3" }]}}', - }, - cardWidth: { - value: '{{302}}', - }, - cardHeight: { - value: '{{100}}', - }, - enableAddCard: { - value: `{{true}}`, - }, - showDeleteButton: { - value: `{{true}}`, - }, - }, - events: [], - styles: { - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - accentColor: { value: '#4d72fa' }, - }, - }, - }, - { - name: 'ColorPicker', - displayName: 'Color Picker', - description: 'Choose colors from a palette', - component: 'ColorPicker', - properties: { - defaultColor: { type: 'color', displayName: 'Default color' }, - }, - defaultSize: { - width: 9, - height: 40, - }, - actions: [ - { - displayName: 'Set Color', - handle: 'setColor', - params: [{ handle: 'color', displayName: 'color', defaultValue: '#ffffff', type: 'color' }], - }, - ], - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - events: { - onChange: { displayName: 'On change' }, - }, - styles: { - visibility: { type: 'toggle', displayName: 'Visibility' }, - }, - exposedVariables: { - selectedColorHex: '#000000', - selectedColorRGB: 'rgb(0,0,0)', - selectedColorRGBA: 'rgba(0, 0, 0, 1)', - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - defaultColor: { - value: '#000000', - }, - }, - events: [], - styles: { - visibility: { value: '{{true}}' }, - }, - }, - }, - { - name: 'TreeSelect', - displayName: 'Tree Select', - description: 'Hierarchical item selector', - defaultSize: { - width: 12, - height: 200, - }, - component: 'TreeSelect', - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - label: { type: 'code', displayName: 'Title' }, - data: { type: 'code', displayName: 'Structure' }, - checkedData: { type: 'code', displayName: 'Checked values' }, - expandedData: { type: 'code', displayName: 'Expanded values' }, - }, - events: { - onChange: { displayName: 'On change' }, - onCheck: { displayName: 'On check' }, - onUnCheck: { displayName: 'On uncheck' }, - }, - styles: { - textColor: { type: 'color', displayName: 'Text Color' }, - checkboxColor: { type: 'color', displayName: 'Checkbox color' }, - visibility: { type: 'toggle', displayName: 'Visibility' }, - disabledState: { type: 'toggle', displayName: 'Disable' }, - }, - exposedVariables: { - checked: ['asia', 'china', 'beijing', 'shanghai', 'japan', 'india', 'delhi', 'mumbai', 'bengaluru'], - expanded: ['asia'], - checkedPathArray: [ - ['asia'], - ['asia', 'china'], - ['asia', 'china', 'beijing'], - ['asia', 'china', 'shanghai'], - ['asia', 'japan'], - ['asia', 'india'], - ['asia', 'india', 'delhi'], - ['asia', 'india', 'mumbai'], - ['asia', 'india', 'bengaluru'], - ], - checkedPathStrings: [ - 'asia', - 'asia-china', - 'asia-china-beijing', - 'asia-china-shanghai', - 'asia-japan', - 'asia-india', - 'asia-india-delhi', - 'asia-india-mumbai', - 'asia-india-bengaluru', - ], - }, - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - label: { value: 'Countries' }, - data: { - value: - '{{[{"label":"Asia","value":"asia","children":[{"label":"China","value":"china","children":[{"label":"Beijing","value":"beijing"},{"label":"Shanghai","value":"shanghai"}]},{"label":"Japan","value":"japan"},{"label":"India","value":"india","children":[{"label":"Delhi","value":"delhi"},{"label":"Mumbai","value":"mumbai"},{"label":"Bengaluru","value":"bengaluru"}]}]},{"label":"Europe","value":"europe","children":[{"label":"France","value":"france"},{"label":"Spain","value":"spain"},{"label":"England","value":"england"}]},{"label":"Africa","value":"africa"}]}}', - }, - checkedData: { value: '{{["asia"]}}' }, - expandedData: { value: '{{["asia"]}}' }, - }, - events: [], - styles: { - textColor: { value: '' }, - checkboxColor: { value: '' }, - visibility: { value: '{{true}}' }, - disabledState: { value: '{{false}}' }, - }, - }, - }, - { - name: 'Link', - displayName: 'Link', - description: 'Add link to the text', - defaultSize: { - width: 6, - height: 30, - }, - component: 'Link', - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - linkTarget: { - type: 'code', - displayName: 'Link target', - validation: { - schema: { type: 'string' }, - }, - }, - linkText: { - type: 'code', - displayName: 'Link text', - validation: { - schema: { type: 'string' }, - }, - }, - targetType: { - type: 'select', - displayName: 'Target type', - options: [ - { name: 'New Tab', value: 'new' }, - { name: 'Same Tab', value: 'same' }, - ], - validation: { - schema: { type: 'string' }, - }, - }, - }, - events: { - onClick: { displayName: 'On click' }, - onHover: { displayName: 'On hover' }, - }, - styles: { - textColor: { - type: 'color', - displayName: 'Text color', - validation: { - schema: { type: 'string' }, - }, - }, - textSize: { - type: 'number', - displayName: 'Text size', - validation: { - schema: { type: 'number' }, - }, - }, - underline: { - type: 'select', - displayName: 'Underline', - options: [ - { name: 'Never', value: 'no-underline' }, - { name: 'On Hover', value: 'on-hover' }, - { name: 'Always', value: 'underline' }, - ], - validation: { - schema: { type: 'string' }, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - exposedVariables: {}, - actions: [ - { - handle: 'click', - displayName: 'Click', - }, - ], - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - linkTarget: { value: 'https://dev.to/' }, - linkText: { value: 'Click here' }, - targetType: { value: 'new' }, - }, - events: [], - styles: { - textColor: { value: '#375FCF' }, - textSize: { value: 14 }, - underline: { value: 'on-hover' }, - visibility: { value: '{{true}}' }, - }, - }, - }, - { - name: 'Icon', - displayName: 'Icon', - description: 'Icon', - defaultSize: { - width: 5, - height: 48, - }, - component: 'Icon', - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - icon: { - type: 'iconPicker', - displayName: 'Icon', - validation: { - schema: { type: 'string' }, - }, - }, - }, - events: { - onClick: { displayName: 'On click' }, - onHover: { displayName: 'On hover' }, - }, - styles: { - iconColor: { - type: 'color', - displayName: 'Icon color', - validation: { - schema: { type: 'string' }, - }, - }, - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - }, - }, - }, - exposedVariables: {}, - actions: [ - { - handle: 'click', - displayName: 'Click', - }, - { - displayName: 'Set Visibility', - handle: 'setVisibility', - params: [{ handle: 'value', displayName: 'Value', defaultValue: '{{true}}', type: 'toggle' }], - }, - ], - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - icon: { value: 'IconHome2' }, - }, - events: [], - styles: { - iconColor: { value: '#000' }, - visibility: { value: '{{true}}' }, - }, - }, - }, - { - name: 'BoundedBox', - displayName: 'Bounded Box', - description: 'An infinitely customizable image annotation widget', - component: 'BoundedBox', - defaultSize: { - width: 30, - height: 420, - }, - others: { - showOnDesktop: { type: 'toggle', displayName: 'Show on desktop' }, - showOnMobile: { type: 'toggle', displayName: 'Show on mobile' }, - }, - properties: { - imageUrl: { - type: 'code', - displayName: 'Image URL', - validation: { - schema: { type: 'string' }, - }, - }, - - defaultValue: { - type: 'code', - displayName: 'Default value', - validation: { - schema: { type: 'union', schemas: [{ type: 'string' }, { type: 'array', element: { type: 'object' } }] }, - }, - }, - selector: { - type: 'select', - displayName: 'Selector', - options: [ - { name: 'Rectangle', value: 'RECTANGLE' }, - { name: 'Point', value: 'POINT' }, - ], - validation: { - schema: { type: 'string' }, - }, - }, - labels: { - type: 'code', - displayName: 'List of labels', - validation: { - schema: { type: 'array' }, - element: { type: 'union', schemas: [{ type: 'string' }, { type: 'number' }] }, - }, - }, - }, - events: { - onChange: { displayName: 'On change' }, - }, - styles: { - visibility: { - type: 'toggle', - displayName: 'Visibility', - validation: { - schema: { type: 'boolean' }, - defaultValue: false, - }, - }, - disabledState: { - type: 'toggle', - displayName: 'Disable', - validation: { - schema: { type: 'boolean' }, - defaultValue: false, - }, - }, - }, - exposedVariables: { - annotations: [ - { - type: 'RECTANGLE', - x: 41, - y: 62, - width: 40, - height: 24, - text: 'Car', - id: 'ce103db2-b2a6-46f5-a4f0-5f4eaa6f3663', - }, - { - type: 'RECTANGLE', - x: 41, - y: 12, - width: 40, - height: 24, - text: 'Tree', - id: 'b1a7315e-2b15-4bc8-a1c6-a042dab44f27', - }, - ], - }, - actions: [], - definition: { - others: { - showOnDesktop: { value: '{{true}}' }, - showOnMobile: { value: '{{false}}' }, - }, - properties: { - defaultValue: { - value: - "{{[\t{type: 'RECTANGLE',width: 40,height:24, x:41,y:62,text:'Car'},{type: 'RECTANGLE',width: 40,height:24, x:41,y:12,text:'Tree'}\t]}}", - }, - imageUrl: { - value: `https://burst.shopifycdn.com/photos/three-cars-are-parked-on-stone-paved-street.jpg?width=746&format=pjpg&exif=1&iptc=1`, - }, - selector: { value: `RECTANGLE` }, - labels: { value: `{{['Tree', 'Car', 'Stree light']}}` }, - }, - events: [], - styles: { - visibility: { value: '{{true}}' }, - - disabledState: { value: '{{false}}' }, - }, - }, - }, + tableConfig, + buttonConfig, + chartConfig, + modalConfig, + formConfig, + textinputConfig, + numberinputConfig, + passinputConfig, + datepickerConfig, + checkboxConfig, + radiobuttonConfig, + toggleswitchConfig, + textareaConfig, + daterangepickerConfig, + textConfig, + imageConfig, + containerConfig, + dropdownConfig, + multiselectConfig, + richtextareaConfig, + mapConfig, + qrscannerConfig, + starratingConfig, + dividerConfig, + filepickerConfig, + calendarConfig, + iframeConfig, + codeEditorConfig, + tabsConfig, + timerConfig, + listviewConfig, + tagsConfig, + paginationConfig, + circularProgressbarConfig, + spinnerConfig, + statisticsConfig, + rangeSliderConfig, + timelineConfig, + svgImageConfig, + htmlConfig, + verticalDividerConfig, + customComponentConfig, + buttonGroupConfig, + pdfConfig, + stepsConfig, + kanbanConfig, + colorPickerConfig, + treeSelectConfig, + linkConfig, + iconConfig, + boundedBoxConfig, + kanbanBoardConfig, ]; diff --git a/frontend/src/Editor/component-properties-validation.js b/frontend/src/Editor/component-properties-validation.js index 78472ecbdc..cad643d9f9 100644 --- a/frontend/src/Editor/component-properties-validation.js +++ b/frontend/src/Editor/component-properties-validation.js @@ -1,40 +1,81 @@ -const { type, number, string, array, any, optional, assert, boolean, union, size, pattern } = require('superstruct'); +const { + type, + number, + string, + array, + any, + optional, + boolean, + union, + size, + pattern, + coerce, + create, + never, +} = require('superstruct'); + import _ from 'lodash'; -const generateSchemaFromValidationDefinition = (definition) => { +export const generateSchemaFromValidationDefinition = (definition, recursionDepth = 0) => { let schema; switch (definition?.type ?? '') { case 'string': { schema = string(); if (definition?.pattern) schema = pattern(schema, RegExp(definition.pattern, 'i')); + + if (recursionDepth === 0) { + schema = coerce(schema, number(), JSON.stringify); + } + break; } case 'number': { schema = number(); + + if (recursionDepth === 0) { + schema = coerce(schema, string(), (value) => { + const parsedValue = parseFloat(value); + const finalValue = parsedValue ? parsedValue : value; + return finalValue; + }); + } break; } case 'boolean': { schema = boolean(); + + if (recursionDepth === 0) { + schema = coerce(schema, any(), (value) => (value ? true : false)); + } break; } case 'union': { - schema = union(definition.schemas?.map((subSchema) => generateSchemaFromValidationDefinition(subSchema))); + schema = union( + definition.schemas?.map((subSchema) => generateSchemaFromValidationDefinition(subSchema, recursionDepth)) + ); break; } case 'array': { - const elementSchema = generateSchemaFromValidationDefinition(definition.element ?? {}); + const elementSchema = generateSchemaFromValidationDefinition(definition.element ?? {}, recursionDepth + 1); schema = array(elementSchema); + break; } case 'object': { const obJectSchema = Object.fromEntries( Object.entries(definition.object ?? {}).map(([key, value]) => { - const generatedSchema = generateSchemaFromValidationDefinition(value); + const generatedSchema = generateSchemaFromValidationDefinition(value, recursionDepth + 1); return [key, generatedSchema]; }) ); schema = type(obJectSchema); + + break; + } + + case 'undefined': { + schema = never(); break; } default: @@ -50,23 +91,27 @@ const generateSchemaFromValidationDefinition = (definition) => { return definition.optional ? optional(schema) : schema; }; -const validate = (value, schema, _defaultValue) => { +export const validate = (value, schema, _defaultValue, codePreviewValidator = false) => { let valid = true; const errors = []; + let newValue = undefined; try { - assert(value, schema); + newValue = create(value, schema); } catch (structError) { valid = false; - errors.push(structError.message); + if (structError.type === 'type') errors.push(structError.message); + else { + let errMsg = `Expected a value of type ${structError.type}, but received`; + errMsg = codePreviewValidator + ? errMsg + ` ${typeof structError.value}` + : errMsg + ` ${JSON.stringify(structError.value)}`; + + errors.push(errMsg); + } } - if (_.isUndefined(value)) { - valid = false; - errors.push("Received 'undefined'"); - } - - return [valid, errors]; + return [valid, errors, newValue]; }; export const validateProperties = (resolvedProperties, propertyDefinitions) => { @@ -74,24 +119,44 @@ export const validateProperties = (resolvedProperties, propertyDefinitions) => { const coercedProperties = Object.fromEntries( Object.entries(resolvedProperties ?? {}).map(([propertyName, value]) => { const validationDefinition = propertyDefinitions[propertyName]?.validation?.schema; - const defaultValue = propertyDefinitions[propertyName]?.validation?.defaultValue; + const defaultValue = validationDefinition?.defaultValue + ? validationDefinition?.defaultValue + : validationDefinition + ? findDefault(validationDefinition, value) + : undefined; const schema = _.isUndefined(validationDefinition) ? any() : generateSchemaFromValidationDefinition(validationDefinition); - const [_valid, errors] = propertyName ? validate(value, schema, defaultValue) : [true, []]; + const reservedKeyword = ['app', 'window']; // Case-sensitive reserved keywords + const keywordRegex = new RegExp(`\\b(${reservedKeyword.join('|')})\\b`, 'i'); + const hasReservedkeyword = keywordRegex.test(value); + + if (hasReservedkeyword) { + allErrors.push({ + property: propertyDefinitions[propertyName]?.displayName, + message: 'Code contains reserved keywords', + }); + + return [propertyName, defaultValue]; + } + + const [_valid, errors, newValue] = propertyName ? validate(value, schema, defaultValue) : [true, []]; if (!_.isUndefined(propertyName)) { allErrors = [ ...allErrors, - ...errors.map((message) => ({ property: propertyDefinitions[propertyName]?.displayName, message })), + ...errors.map((message) => ({ + property: propertyDefinitions[propertyName]?.displayName, + message, + })), ]; } - // return [propertyName, _valid ? value : defaultValue]; - // uncomment the above line and comment the below line to enable coercing to default values - return [propertyName, value]; + return [propertyName, _valid ? newValue : defaultValue]; + // comment the above line and uncomment the below line to disable coercing to default values + // return [propertyName, value]; }) ); return [coercedProperties, allErrors]; @@ -105,6 +170,25 @@ export const validateProperty = (resolvedProperty, propertyDefinitions, paramNam const schema = _.isUndefined(validationDefinition) ? any() : generateSchemaFromValidationDefinition(validationDefinition); - const [_valid, errors] = paramName ? validate(value, schema, defaultValue) : [true, []]; - return [_valid, errors]; + const [_valid, errors, newValue] = paramName ? validate(value, schema, defaultValue) : [true, []]; + return [_valid, errors, newValue]; }; + +function findDefault(definition, value) { + switch (definition.type) { + case 'string': + return ''; + case 'number': + return 0; + case 'boolean': + return value; + case 'array': + return []; + case 'object': + return {}; + case 'union': + return findDefault(definition.schemas[0], value); + default: + return undefined; + } +} diff --git a/frontend/src/Editor/constants.js b/frontend/src/Editor/constants.js new file mode 100644 index 0000000000..c4dce94d93 --- /dev/null +++ b/frontend/src/Editor/constants.js @@ -0,0 +1 @@ +export const SUBCONTAINER_WITH_SCROLL = new Set(['Modal', 'Form', 'Container']); diff --git a/frontend/src/Editor/editorConstants.js b/frontend/src/Editor/editorConstants.js new file mode 100644 index 0000000000..963a557e73 --- /dev/null +++ b/frontend/src/Editor/editorConstants.js @@ -0,0 +1,13 @@ +export const ItemTypes = { + BOX: 'box', + COMMENT: 'comment', + NEW_COMMENT: 'new_comment', +}; + +export const EditorConstants = Object.freeze({ + deviceWindowWidth: 450, + leftSideBarWidth: 48, + rightSideBarWidth: 300, +}); + +export const decimalToHex = (alpha) => (alpha === 0 ? '00' : Math.round(255 * alpha).toString(16)); diff --git a/frontend/src/Editor/gridUtils.js b/frontend/src/Editor/gridUtils.js new file mode 100644 index 0000000000..04df15ce49 --- /dev/null +++ b/frontend/src/Editor/gridUtils.js @@ -0,0 +1,284 @@ +import { useGridStore } from '@/_stores/gridStore'; + +export function correctBounds(layout, bounds) { + layout = scaleLayouts(layout); + const collidesWith = []; + for (let i = 0, len = layout.length; i < len; i++) { + const l = layout[i]; + // Overflows right + if (l.left + l.width > bounds.cols) l.left = bounds.cols - l.width; + // Overflows left + if (l.left < 0) { + l.left = 0; + l.width = bounds.cols; + } + if (!l.static) collidesWith.push(l); + else { + // If this is static and collides with other statics, we must move it down. + // We have to do something nicer than just letting them overlap. + while (getFirstCollision(collidesWith, l)) { + l.top++; + } + } + } + return removePaddingLeft(layout); +} + +function removePaddingLeft(layouts) { + return layouts.map((layout) => { + if (layout.left == 1) { + if (!layouts.find((l) => l.top > layout.top && l.top < layout.top + layout.height && l.left < 1)) { + return { ...layout, left: 0 }; + } + } + return { ...layout }; + }); +} + +function collides(l1, l2) { + if (l1.i === l2.i) return false; // same element + if (l1.left + l1.width <= l2.left) return false; // l1 is left of l2 + if (l1.left >= l2.left + l2.width) return false; // l1 is right of l2 + if (l1.top + l1.height <= l2.top) return false; // l1 is above l2 + if (l1.top >= l2.top + l2.height) return false; // l1 is below l2 + return true; // boxes overlap +} + +function getFirstCollision(layout, layoutItem) { + for (let i = 0, len = layout.length; i < len; i++) { + const isCollides = collides(layout[i], layoutItem); + if (isCollides) return layout[i]; + } + return null; // Return null if there's no collision +} + +export function compact(layout, compactType = 'vertical', cols = 20, allowOverlap = false) { + // Statics go in the compareWith array right away so items flow around them. + const compareWith = getStatics(layout); + // We go through the items by row and column. + const sorted = sortLayoutItems(layout, compactType); + // Holding for new items. + const out = new Array(layout.length); + + for (let i = 0, len = sorted.length; i < len; i++) { + let l = cloneLayoutItem(sorted[i]); + + // Don't move static elements + if (!l.static) { + l = compactItem(compareWith, l, compactType, cols, sorted, allowOverlap); + + // Add to comparison array. We only collide with items before this one. + // Statics are already in this array. + compareWith.push(l); + } + + // Add to output array to make sure they still come out in the right order. + out[layout.indexOf(sorted[i])] = l; + + // Clear moved flag, if it exists. + l.moved = false; + } + + return out; +} + +export function getStatics(layout) { + return layout.filter((l) => l.static); +} + +// Fast path to cloning, since this is monomorphic +export function cloneLayoutItem(layoutItem) { + return { + width: layoutItem.width, + height: layoutItem.height, + left: layoutItem.left, + top: layoutItem.top, + i: layoutItem.i, + minW: layoutItem.minW, + maxW: layoutItem.maxW, + minH: layoutItem.minH, + maxH: layoutItem.maxH, + moved: Boolean(layoutItem.moved), + static: Boolean(layoutItem.static), + // These can be null/undefined + isDraggable: layoutItem.isDraggable, + isResizable: layoutItem.isResizable, + resizeHandles: layoutItem.resizeHandles, + isBounded: layoutItem.isBounded, + }; +} + +function compactItem(compareWith, l, compactType, cols, fullLayout, allowOverlap) { + const compactV = compactType === 'vertical'; + const compactH = compactType === 'horizontal'; + if (compactV) { + // Bottom 'top' possible is the bottom of the layout. + // This allows you to do nice stuff like specify {top: Infinity} + // This is here because the layout must be sorted in order to get the correct bottom `top`. + const bottomPos = bottom(compareWith); + l.top = Math.min(bottomPos, l.top); + // Move the element up as far as it can go without colliding. + while (l.top > 0 && !getFirstCollision(compareWith, l)) { + l.top--; + } + } else if (compactH) { + // Move the element left as far as it can go without colliding. + while (l.left > 0 && !getFirstCollision(compareWith, l)) { + l.left--; + } + } + + // Move it down, and keep moving it down if it's colliding. + let collides; + // Checking the compactType null value to avoid breaking the layout when overlapping is allowed. + while ((collides = getFirstCollision(compareWith, l)) && !(compactType === null && allowOverlap)) { + if (compactH) { + resolveCompactionCollision(fullLayout, l, collides.left + collides.width, 'x'); + } else { + resolveCompactionCollision(fullLayout, l, collides.top + collides.height, 'top'); + } + // Since we can't grow without bounds horizontally, if we've overflown, let's move it down and try again. + if (compactH && l.left + l.width > cols) { + l.left = cols - l.width; + l.top++; + // Also move the element as left as we can + while (l.left > 0 && !getFirstCollision(compareWith, l)) { + l.left--; + } + } + } + + // Ensure that there are no negative positions + l.top = Math.max(l.top, 0); + l.left = Math.max(l.left, 0); + + return l; +} + +export function bottom(layout) { + let max = 0, + bottomY; + for (let i = 0, len = layout.length; i < len; i++) { + bottomY = layout[i].top + layout[i].height; + if (bottomY > max) max = bottomY; + } + return max; +} + +function resolveCompactionCollision(layout, item, moveToCoord, axis) { + const sizeProp = heightWidth[axis]; + item[axis] += 1; + const itemIndex = layout + .map((layoutItem) => { + return layoutItem.i; + }) + .indexOf(item.i); + + // Go through each item we collide with. + for (let i = itemIndex + 1; i < layout.length; i++) { + const otherItem = layout[i]; + // Ignore static items + if (otherItem.static) continue; + + // Optimization: we can break early if we know we're past this el + // We can do this b/c it's a sorted layout + if (otherItem.top > item.top + item.height) break; + + if (collides(item, otherItem)) { + resolveCompactionCollision(layout, otherItem, moveToCoord + item[sizeProp], axis); + } + } + + item[axis] = moveToCoord; +} + +const heightWidth = { x: 'width', y: 'height' }; + +function sortLayoutItems(layout, compactType) { + if (compactType === 'horizontal') return sortLayoutItemsByColRow(layout); + if (compactType === 'vertical') return sortLayoutItemsByRowCol(layout); + else return layout; +} + +function sortLayoutItemsByColRow(layout) { + return layout.slice(0).sort(function (a, b) { + if (a.left > b.left || (a.left === b.left && a.top > b.top)) { + return 1; + } + return -1; + }); +} + +/** + * Sort layout items by top ascending and left ascending. + * + * Does not modify the original layout. + */ +function sortLayoutItemsByRowCol(layout) { + // Slice to clone the array as sort modifies the original array + return layout.slice(0).sort(function (a, b) { + if (a.top > b.top || (a.top === b.top && a.left > b.left)) { + return 1; + } else if (a.top === b.top && a.left === b.left) { + // Without this, we can get different sort results in IE vs. Chrome/FF + return 0; + } + return -1; + }); +} + +function scaleLayouts(layouts, cols = 6) { + return layouts.map((layout) => ({ + ...layout, + // width: layout.width <= 4 ? 2 : layout.width <= 8 ? 3 : layout.width, + // width: layout.width <= 10 ? 10 : layout.width <= 20 ? 24 : 43, + width: layout.width * 3 > 43 ? 43 : layout.width * 3, + })); +} + +export const individualGroupableProps = (element) => { + if (element?.classList.contains('target2')) { + return { + resizable: false, + }; + } +}; + +export const handleWidgetResize = (e, list, boxes, gridWidth) => { + const currentLayout = list.find(({ id }) => id === e.target.id); + const currentWidget = boxes.find(({ id }) => id === e.target.id); + let _gridWidth = useGridStore.getState().subContainerWidths[currentWidget.component?.parent] || gridWidth; + document.getElementById('canvas-' + currentWidget.component?.parent)?.classList.add('show-grid'); + const currentWidth = currentLayout.width * _gridWidth; + const diffWidth = e.width - currentWidth; + const diffHeight = e.height - currentLayout.height; + const isLeftChanged = e.direction[0] === -1; + const isTopChanged = e.direction[1] === -1; + + let transformX = currentLayout.left * _gridWidth; + let transformY = currentLayout.top; + if (isLeftChanged) { + transformX = currentLayout.left * _gridWidth - diffWidth; + } + if (isTopChanged) { + transformY = currentLayout.top - diffHeight; + } + + const elemContainer = e.target.closest('.real-canvas'); + const containerHeight = elemContainer.clientHeight; + const containerWidth = elemContainer.clientWidth; + const maxY = containerHeight - e.target.clientHeight; + const maxLeft = containerWidth - e.target.clientWidth; + const maxWidthHit = transformX < 0 || transformX >= maxLeft; + const maxHeightHit = transformY < 0 || transformY >= maxY; + transformY = transformY < 0 ? 0 : transformY > maxY ? maxY : transformY; + transformX = transformX < 0 ? 0 : transformX > maxLeft ? maxLeft : transformX; + + if (!maxWidthHit || e.width < e.target.clientWidth) { + e.target.style.width = `${e.width}px`; + } + if (!maxHeightHit || e.height < e.target.clientHeight) { + e.target.style.height = `${e.height}px`; + } + e.target.style.transform = `translate(${transformX}px, ${transformY}px)`; +}; diff --git a/frontend/src/HomePage/AppCard.jsx b/frontend/src/HomePage/AppCard.jsx index c90dd1e235..d8cd4b3674 100644 --- a/frontend/src/HomePage/AppCard.jsx +++ b/frontend/src/HomePage/AppCard.jsx @@ -127,6 +127,7 @@ export default function AppCard({ to={getPrivateRoute('editor', { slug: isValidSlug(app.slug) ? app.slug : app.id, })} + reloadDocument > diff --git a/frontend/src/_components/DynamicForm.jsx b/frontend/src/_components/DynamicForm.jsx index 93019f94d2..13971b9735 100644 --- a/frontend/src/_components/DynamicForm.jsx +++ b/frontend/src/_components/DynamicForm.jsx @@ -8,7 +8,7 @@ import OAuth from '@/_ui/OAuth'; import Toggle from '@/_ui/Toggle'; import OpenApi from '@/_ui/OpenAPI'; import { Checkbox, CheckboxGroup } from '@/_ui/CheckBox'; -import { CodeHinter } from '@/Editor/CodeBuilder/CodeHinter'; +import CodeHinter from '@/Editor/CodeEditor'; import GoogleSheets from '@/_components/Googlesheets'; import Slack from '@/_components/Slack'; import Zendesk from '@/_components/Zendesk'; @@ -193,6 +193,7 @@ const DynamicForm = ({ className, controller, encrypted, + editorType = 'basic', placeholders = {}, }) => { const source = schema?.source?.kind; @@ -322,22 +323,21 @@ const DynamicForm = ({ }; case 'codehinter': return { + type: editorType, currentState, initialValue: options[key] ? typeof options[key] === 'string' ? options[key] : JSON.stringify(options[key]) : initialValue, - mode, + lang: mode, lineNumbers, className: className ? className : lineNumbers ? 'query-hinter' : 'codehinter-query-editor-input', onChange: (value) => optionchanged(key, value), - theme: darkMode ? 'monokai' : lineNumbers ? 'duotone-light' : 'default', placeholder, height, width, componentName: queryName ? `${queryName}::${key ?? ''}` : null, - ignoreBraces, cyLabel: key ? `${String(key).toLocaleLowerCase().replace(/\s+/g, '-')}` : '', }; case 'react-component-openapi-validator': @@ -489,6 +489,7 @@ const DynamicForm = ({ 'flex-grow-1': isHorizontalLayout && !isSpecificComponent, 'w-100': isHorizontalLayout && type !== 'codehinter', })} + style={{ width: '100%' }} > { e.preventDefault(); - updateEditorState({ isLoading: true }); // Force a reload for clearing interval triggers redirectToDashboard(); }; diff --git a/frontend/src/_components/MultiConditions.jsx b/frontend/src/_components/MultiConditions.jsx index 1d0ae7860c..06401f560b 100644 --- a/frontend/src/_components/MultiConditions.jsx +++ b/frontend/src/_components/MultiConditions.jsx @@ -1,7 +1,7 @@ import React, { useEffect, useState } from 'react'; import _, { isEmpty } from 'lodash'; import Select from '@/_ui/Select'; -import { CodeHinter } from '@/Editor/CodeBuilder/CodeHinter'; +import CodeHinter from '@/Editor/CodeEditor'; import { v4 as uuidv4 } from 'uuid'; import { ButtonSolid } from '@/_ui/AppButton/AppButton'; diff --git a/frontend/src/_components/NotificationCenter/index.jsx b/frontend/src/_components/NotificationCenter/index.jsx index 5202683e83..d5fb84b64c 100644 --- a/frontend/src/_components/NotificationCenter/index.jsx +++ b/frontend/src/_components/NotificationCenter/index.jsx @@ -36,11 +36,6 @@ export const NotificationCenter = ({ darkMode }) => { fetchData(); }; - React.useEffect(() => { - fetchData(); - // eslint-disable-next-line react-hooks/exhaustive-deps - }, [isRead]); - const overlay = ( { ); return ( - + diff --git a/frontend/src/_components/OrganizationManager/List.jsx b/frontend/src/_components/OrganizationManager/List.jsx index bbe38c3644..9fe73bd748 100644 --- a/frontend/src/_components/OrganizationManager/List.jsx +++ b/frontend/src/_components/OrganizationManager/List.jsx @@ -1,24 +1,31 @@ -import React, { useState, useEffect } from 'react'; +import React, { useEffect } from 'react'; import { authenticationService } from '@/_services'; import { CustomSelect } from './CustomSelect'; import { getAvatar, decodeEntities } from '@/_helpers/utils'; import { appendWorkspaceId, getWorkspaceIdOrSlugFromURL } from '@/_helpers/routes'; import { ToolTip } from '@/_components'; +import { useCurrentSessionStore } from '@/_stores/currentSessionStore'; +import { shallow } from 'zustand/shallow'; +/* TODO: + each workspace related component has organizations list component which can be moved to a single wrapper. + otherwise this component will intiate everytime we switch between pages +*/ export const OrganizationList = function () { const { current_organization_id } = authenticationService.currentSessionValue; - const [organizationList, setOrganizationList] = useState([]); - const [getOrgStatus, setGetOrgStatus] = useState(''); + const { fetchOrganizations, organizationList, isGettingOrganizations } = useCurrentSessionStore( + (state) => ({ + organizationList: state.organizations, + isGettingOrganizations: state.isGettingOrganizations, + fetchOrganizations: state.actions.fetchOrganizations, + }), + shallow + ); const darkMode = localStorage.getItem('darkMode') === 'true'; useEffect(() => { - setGetOrgStatus('loading'); - const sessionObservable = authenticationService.currentSession.subscribe((newSession) => { - setOrganizationList(newSession.organizations ?? []); - if (newSession.organizations?.length > 0) setGetOrgStatus('success'); - }); - - () => sessionObservable.unsubscribe(); + fetchOrganizations(); + // eslint-disable-next-line react-hooks/exhaustive-deps }, []); const switchOrganization = (id) => { @@ -54,7 +61,7 @@ export const OrganizationList = function () { return ( switchOrganization(id)} diff --git a/frontend/src/_components/Portal/Portal.jsx b/frontend/src/_components/Portal/Portal.jsx index 441d4ecaee..61e0ddc1db 100644 --- a/frontend/src/_components/Portal/Portal.jsx +++ b/frontend/src/_components/Portal/Portal.jsx @@ -85,12 +85,12 @@ const Modal = ({ className={`resize-handle portal-header d-flex ${darkMode ? 'dark-mode-border' : ''}`} style={{ ...portalStyles }} > - + {componentName ?? 'Editor'} diff --git a/frontend/src/_helpers/appUtils.js b/frontend/src/_helpers/appUtils.js index e20e020171..646570ad41 100644 --- a/frontend/src/_helpers/appUtils.js +++ b/frontend/src/_helpers/appUtils.js @@ -34,6 +34,10 @@ import { useAppVersionStore } from '@/_stores/appVersionStore'; import { camelizeKeys } from 'humps'; import { useAppDataStore } from '@/_stores/appDataStore'; import { useEditorStore } from '@/_stores/editorStore'; +import { useGridStore } from '@/_stores/gridStore'; +import { useResolveStore } from '@/_stores/resolverStore'; +import { handleLowPriorityWork } from './editorHelpers'; +import { updateParentNodes } from './utility'; const ERROR_TYPES = Object.freeze({ ReferenceError: 'ReferenceError', @@ -44,6 +48,8 @@ const ERROR_TYPES = Object.freeze({ EvalError: 'EvalError', }); +export let duplicateCurrentState = null; + export function setStateAsync(_ref, state) { return new Promise((resolve) => { _ref.setState(state, resolve); @@ -61,37 +67,163 @@ export function setCurrentStateAsync(_ref, changes) { }); } -export function onComponentOptionsChanged(component, options) { - const componentName = component.name; - const components = getCurrentState().components; - let componentData = components[componentName]; - componentData = componentData || {}; +const debouncedChange = _.debounce(() => { + const newComponentsState = {}; + for (const [key, value] of Object.entries(getCurrentState().components)) { + if (duplicateCurrentState[key]) { + newComponentsState[key] = { ...value, ...duplicateCurrentState[key] }; + } else { + newComponentsState[key] = value; + } + } + duplicateCurrentState = { ...newComponentsState }; + useCurrentStateStore.getState().actions.setCurrentState({ + components: newComponentsState, + }); +}, 100); - for (const option of options) { - componentData[option[0]] = option[1]; +export function onComponentOptionsChanged(component, options, id) { + let componentName = component.name; + const { isEditorReady, page } = getCurrentState(); + + if (id) { + const _component = useEditorStore.getState().appDefinition.pages[page.id].components[id]; + const _componentName = _component?.component?.name || componentName; + if (_componentName !== componentName) { + componentName = _componentName; + } } - useCurrentStateStore.getState().actions.setCurrentState({ - components: { ...components, [componentName]: componentData }, - }); + if (isEditorReady) { + if (duplicateCurrentState !== null) { + duplicateCurrentState = null; + } + + const components = getCurrentState().components; + let componentData = components[componentName]; + componentData = componentData || {}; + + const shouldUpdateResolvedRefsOfHints = []; + + for (const option of options) { + componentData[option[0]] = option[1]; + + const isListviewOrKanbaComponent = component.component === 'Listview' || component.component === 'Kanban'; + + let path = null; + if (isListviewOrKanbaComponent) { + path = `components.${componentName}`; + } else { + path = `components.${componentName}.${option[0]}`; + } + + if (!isListviewOrKanbaComponent && !_.isEmpty(useResolveStore.getState().lookupTable?.resolvedRefs) && path) { + const lookUpTable = useResolveStore.getState().lookupTable; + + const existingRef = lookUpTable.resolvedRefs?.get(lookUpTable.hints?.get(path)); + + if (typeof existingRef === 'function') return; + + const shouldUpdateRef = existingRef !== componentData[option[0]]; + + if (shouldUpdateRef) { + shouldUpdateResolvedRefsOfHints.push({ hint: path, newRef: componentData[option[0]] }); + } + } + + if (isListviewOrKanbaComponent) { + useResolveStore.getState().actions.updateLastUpdatedRefs([`rerender ${id}`]); + } + } + + if (shouldUpdateResolvedRefsOfHints.length > 0) { + handleLowPriorityWork(() => { + useResolveStore.getState().actions.updateResolvedRefsOfHints(shouldUpdateResolvedRefsOfHints); + }); + } + + useCurrentStateStore.getState().actions.setCurrentState({ + components: { ...components, [componentName]: componentData }, + }); + } else { + const components = duplicateCurrentState === null ? getCurrentState().components : duplicateCurrentState; + let componentData = components[componentName]; + componentData = componentData || {}; + + for (const option of options) { + componentData[option[0]] = option[1]; + } + + duplicateCurrentState = { ...components, [componentName]: componentData }; + + debouncedChange(); + } return Promise.resolve(); } -export function onComponentOptionChanged(component, option_name, value) { - const componentName = component.name; - const components = getCurrentState().components; - let componentData = components[componentName]; - componentData = componentData || {}; +export function onComponentOptionChanged(component, option_name, value, id) { + let componentName = component.name; + + if (id) { + //? component passed as argument contains previous state of the component data, component name is not updated + const _component = useEditorStore.getState().appDefinition.pages[getCurrentState().page.id].components[id]; + const _componentName = _component?.component?.name || componentName; + if (_componentName !== componentName) { + componentName = _componentName; + } + } + + const { isEditorReady, components: currentComponents } = getCurrentState(); + + const components = duplicateCurrentState === null ? currentComponents : duplicateCurrentState; + let componentData = components[componentName] || {}; componentData[option_name] = value; - if (option_name !== 'id') { - useCurrentStateStore.getState().actions.setCurrentState({ - components: { ...components, [componentName]: componentData }, - }); - } else if (!componentData?.id) { + const isListviewOrKanbaComponent = component.component === 'Listview' || component.component === 'Kanban'; + + let path = null; + if (isListviewOrKanbaComponent) { + path = `components.${componentName}`; + } else { + path = option_name ? `components.${componentName}.${option_name}` : null; + } + + if (isEditorReady) { + if (duplicateCurrentState !== null) { + duplicateCurrentState = null; + } + // Always update the current state if editor is ready useCurrentStateStore.getState().actions.setCurrentState({ components: { ...components, [componentName]: componentData }, }); + + if (!isListviewOrKanbaComponent && !_.isEmpty(useResolveStore.getState().lookupTable?.resolvedRefs) && path) { + const lookUpTable = useResolveStore.getState().lookupTable; + + const existingRef = lookUpTable.resolvedRefs?.get(lookUpTable.hints?.get(path)); + + if (typeof existingRef === 'function') return; + + const shouldUpdateRef = existingRef !== componentData[option_name]; + + if (shouldUpdateRef) { + handleLowPriorityWork(() => { + const toUpdateHints = updateParentNodes(path, componentData[option_name], option_name); + + toUpdateHints.push({ hint: path, newRef: componentData[option_name] }); + + useResolveStore.getState().actions.updateResolvedRefsOfHints(toUpdateHints); + }); + } + } + + if (isListviewOrKanbaComponent) { + useResolveStore.getState().actions.updateLastUpdatedRefs([`rerender ${id}`]); + } + } else { + // Update the duplicate state if editor is not ready + duplicateCurrentState = { ...components, [componentName]: componentData }; + debouncedChange(); } return Promise.resolve(); @@ -282,7 +414,16 @@ export function onQueryConfirmOrCancel(_ref, queryConfirmationData, isConfirm = ); _ref.updateQueryConfirmationList(filtertedQueryConfirmation, 'check'); - isConfirm && runQuery(_ref, queryConfirmationData.queryId, queryConfirmationData.queryName, true, mode); + isConfirm && + runQuery( + _ref, + queryConfirmationData.queryId, + queryConfirmationData.queryName, + true, + mode, + undefined, + queryConfirmationData.shouldSetPreviewData + ); } export async function copyToClipboard(text) { @@ -300,7 +441,7 @@ function showModal(_ref, modal, show) { console.log('No modal is associated with this event.'); return Promise.resolve(); } - + useEditorStore.getState().actions.updateComponentsNeedsUpdateOnNextRender([modalId]); const modalMeta = _ref.appDefinition.pages[_ref.currentPageId].components[modalId]; //! NeedToFix const _components = { @@ -478,6 +619,9 @@ function executeActionWithDebounce(_ref, event, mode, customVariables) { const value = resolveReferences(event.value, getCurrentState(), undefined, customVariables); const customAppVariables = { ...getCurrentState().variables }; customAppVariables[key] = value; + useResolveStore.getState().actions.addAppSuggestions({ + variables: customAppVariables, + }); return useCurrentStateStore.getState().actions.setCurrentState({ variables: customAppVariables, }); @@ -493,6 +637,11 @@ function executeActionWithDebounce(_ref, event, mode, customVariables) { const key = resolveReferences(event.key, getCurrentState(), undefined, customVariables); const customAppVariables = { ...getCurrentState().variables }; delete customAppVariables[key]; + useResolveStore.getState().actions.removeAppSuggestions([`variables.${key}`]); + useResolveStore + .getState() + .actions.updateResolvedRefsOfHints([{ hint: 'variables', newRef: customAppVariables }]); + return useCurrentStateStore.getState().actions.setCurrentState({ variables: customAppVariables, }); @@ -505,6 +654,14 @@ function executeActionWithDebounce(_ref, event, mode, customVariables) { ...getCurrentState().page.variables, [key]: value, }; + + useResolveStore.getState().actions.addAppSuggestions({ + page: { + ...getCurrentState().page, + variables: customPageVariables, + }, + }); + return useCurrentStateStore.getState().actions.setCurrentState({ page: { ...getCurrentState().page, @@ -524,6 +681,23 @@ function executeActionWithDebounce(_ref, event, mode, customVariables) { case 'unset-page-variable': { const key = resolveReferences(event.key, getCurrentState(), undefined, customVariables); const customPageVariables = _.omit(getCurrentState().page.variables, key); + + useResolveStore.getState().actions.removeAppSuggestions([`page.variables.${key}`]); + + const pageRef = { + page: { + ...getCurrentState().page, + variables: customPageVariables, + }, + }; + + const toUpdateRefs = [ + { hint: 'page', newRef: pageRef }, + { hint: 'page.variables', newRef: customPageVariables }, + ]; + + useResolveStore.getState().actions.updateResolvedRefsOfHints(toUpdateRefs); + return useCurrentStateStore.getState().actions.setCurrentState({ page: { ...getCurrentState().page, @@ -736,6 +910,7 @@ export async function onEvent(_ref, eventName, events, options = {}, mode = 'edi } if (['onDataQuerySuccess', 'onDataQueryFailure'].includes(eventName)) { + if (!events || !isArray(events) || events.length === 0) return; await executeActionsForEventId(_self, eventName, events, mode, customVariables); } } @@ -900,7 +1075,8 @@ export function runQuery( confirmed = undefined, mode = 'edit', userSuppliedParameters = {}, - shouldSetPreviewData = false + shouldSetPreviewData = false, + isOnLoad = false ) { let parameters = userSuppliedParameters; const query = useDataQueriesStore.getState().dataQueries.find((query) => query.id === queryId); @@ -914,10 +1090,6 @@ export function runQuery( const queryPanelState = useQueryPanelStore.getState(); const { queryPreviewData } = queryPanelState; const { setPreviewLoading, setPreviewData } = queryPanelState.actions; - if (shouldSetPreviewData) { - setPreviewLoading(true); - queryPreviewData && setPreviewData(''); - } if (query) { dataQuery = JSON.parse(JSON.stringify(query)); @@ -947,6 +1119,7 @@ export function runQuery( const queryConfirmation = { queryId, queryName, + shouldSetPreviewData, }; if (!queryConfirmationList.some((query) => queryId === query.queryId)) { queryConfirmationList.push(queryConfirmation); @@ -963,198 +1136,230 @@ export function runQuery( // eslint-disable-next-line no-unused-vars return new Promise(function (resolve, reject) { - useCurrentStateStore.getState().actions.setCurrentState({ - queries: { - ...getCurrentState().queries, - [queryName]: { - ...getCurrentState().queries[queryName], - isLoading: true, - data: [], - rawData: [], - }, - }, - errors: {}, - }); - let queryExecutionPromise = null; - if (query.kind === 'runjs') { - queryExecutionPromise = executeMultilineJS(_self, query.options.code, query?.id, false, mode, parameters); - } else if (query.kind === 'runpy') { - queryExecutionPromise = executeRunPycode(_self, query.options.code, query, false, mode, queryState); - } else { - queryExecutionPromise = dataqueryService.run(queryId, options, query?.options); - } - - queryExecutionPromise - .then(async (data) => { - if (data.status === 'needs_oauth') { - const url = data.data.auth_url; // Backend generates and return sthe auth url - fetchOAuthToken(url, dataQuery['data_source_id'] || dataQuery['dataSourceId']); - } - - let queryStatusCode = data?.status ?? null; - const promiseStatus = query.kind === 'runpy' ? data?.data?.status ?? 'ok' : data.status; - // Note: Need to move away from statusText -> statusCode - if ( - promiseStatus === 'failed' || - promiseStatus === 'Bad Request' || - promiseStatus === 'Not Found' || - promiseStatus === 'Unprocessable Entity' || - queryStatusCode === 400 || - queryStatusCode === 404 || - queryStatusCode === 422 - ) { - let errorData = {}; - switch (query.kind) { - case 'runpy': - errorData = data.data; - break; - case 'tooljetdb': - if (data?.error) { - errorData = { - message: data?.error?.message || 'Something went wrong', - description: data?.error?.message || 'Something went wrong', - status: data?.statusText || 'Failed', - data: data?.error || {}, - }; - } else { - errorData = data; - } - break; - default: - errorData = data; - break; - } - if (shouldSetPreviewData) { - setPreviewLoading(false); - setPreviewData(errorData); - } - // errorData = query.kind === 'runpy' ? data.data : data; - useCurrentStateStore.getState().actions.setErrors({ - [queryName]: { - type: 'query', - kind: query.kind, - data: errorData, - options: options, - }, - }); - - useCurrentStateStore.getState().actions.setCurrentState({ - queries: { - ...getCurrentState().queries, - [queryName]: _.assign( - { - ...getCurrentState().queries[queryName], - isLoading: false, - }, - query.kind === 'restapi' - ? { - request: data.data.requestObject, - response: data.data.responseObject, - responseHeaders: data.data.responseHeaders, - } - : {} - ), - }, - }); - resolve(data); - onEvent(_self, 'onDataQueryFailure', queryEvents); - if (mode !== 'view') { - const err = query.kind == 'tooljetdb' ? data?.error || data : data; - toast.error(err?.message ? err?.message : 'Something went wrong'); - } - return; - } else { - let rawData = data.data; - let finalData = data.data; - - if (dataQuery.options.enableTransformation) { - finalData = await runTransformation( - _ref, - finalData, - query.options.transformation, - query.options.transformationLanguage, - query, - 'edit' - ); - if (finalData.status === 'failed') { - useCurrentStateStore.getState().actions.setCurrentState({ - queries: { - ...getCurrentState().queries, - [queryName]: { - ...getCurrentState().queries[queryName], - isLoading: false, - }, - }, - }); - - useCurrentStateStore.getState().actions.setErrors({ - [queryName]: { - type: 'transformations', - data: finalData, - options: options, - }, - }); - resolve(finalData); - onEvent(_self, 'onDataQueryFailure', queryEvents); - return; - } - } - - if (shouldSetPreviewData) { - setPreviewLoading(false); - setPreviewData(finalData); - } - - if (dataQuery.options.showSuccessNotification) { - const notificationDuration = dataQuery.options.notificationDuration * 1000 || 5000; - toast.success(dataQuery.options.successMessage, { - duration: notificationDuration, - }); - } - useCurrentStateStore.getState().actions.setCurrentState({ - queries: { - ...getCurrentState().queries, - [queryName]: _.assign( - { - ...getCurrentState().queries[queryName], - isLoading: false, - data: finalData, - rawData, - }, - query.kind === 'restapi' - ? { - request: data.request, - response: data.response, - responseHeaders: data.responseHeaders, - } - : {} - ), - }, - // Used to generate logs - succededQuery: { - [queryName]: { - type: 'query', - kind: query.kind, - }, - }, - }); - resolve({ status: 'ok', data: finalData }); - onEvent(_self, 'onDataQuerySuccess', queryEvents, mode); - } - }) - .catch(({ error }) => { - if (mode !== 'view') toast.error(error ?? 'Unknown error'); + setTimeout(() => { + if (shouldSetPreviewData) { + setPreviewLoading(true); + queryPreviewData && setPreviewData(''); + } + if (!isOnLoad) { useCurrentStateStore.getState().actions.setCurrentState({ queries: { ...getCurrentState().queries, [queryName]: { - isLoading: false, + ...getCurrentState().queries[queryName], + isLoading: true, + data: [], + rawData: [], + }, + }, + errors: {}, + }); + useResolveStore.getState().actions.addAppSuggestions({ + queries: { + [queryName]: { + data: [], + isLoading: true, }, }, }); + } + let queryExecutionPromise = null; + if (query.kind === 'runjs') { + queryExecutionPromise = executeMultilineJS(_self, query.options.code, query?.id, false, mode, parameters); + } else if (query.kind === 'runpy') { + queryExecutionPromise = executeRunPycode(_self, query.options.code, query, false, mode, queryState); + } else { + queryExecutionPromise = dataqueryService.run(queryId, options, query?.options); + } - resolve({ status: 'failed', message: error }); - }); + queryExecutionPromise + .then(async (data) => { + if (data.status === 'needs_oauth') { + const url = data.data.auth_url; // Backend generates and return sthe auth url + fetchOAuthToken(url, dataQuery['data_source_id'] || dataQuery['dataSourceId']); + } + + let queryStatusCode = data?.status ?? null; + const promiseStatus = query.kind === 'runpy' ? data?.data?.status ?? 'ok' : data.status; + // Note: Need to move away from statusText -> statusCode + if ( + promiseStatus === 'failed' || + promiseStatus === 'Bad Request' || + promiseStatus === 'Not Found' || + promiseStatus === 'Unprocessable Entity' || + queryStatusCode === 400 || + queryStatusCode === 404 || + queryStatusCode === 422 + ) { + let errorData = {}; + switch (query.kind) { + case 'runpy': + errorData = data.data; + break; + case 'tooljetdb': + if (data?.error) { + errorData = { + message: data?.error?.message || 'Something went wrong', + description: data?.error?.message || 'Something went wrong', + status: data?.statusText || 'Failed', + data: data?.error || {}, + }; + } else { + errorData = data; + } + break; + default: + errorData = data; + break; + } + if (shouldSetPreviewData) { + setPreviewLoading(false); + setPreviewData(errorData); + } + // errorData = query.kind === 'runpy' ? data.data : data; + useCurrentStateStore.getState().actions.setErrors({ + [queryName]: { + type: 'query', + kind: query.kind, + data: errorData, + options: options, + }, + }); + + useCurrentStateStore.getState().actions.setCurrentState({ + queries: { + ...getCurrentState().queries, + [queryName]: _.assign( + { + ...getCurrentState().queries[queryName], + isLoading: false, + }, + query.kind === 'restapi' + ? { + request: data.data.requestObject, + response: data.data.responseObject, + responseHeaders: data.data.responseHeaders, + } + : {} + ), + }, + }); + resolve(data); + onEvent(_self, 'onDataQueryFailure', queryEvents); + if (mode !== 'view') { + const err = query.kind == 'tooljetdb' ? data?.error || data : data; + toast.error(err?.message ? err?.message : 'Something went wrong'); + } + return; + } else { + let rawData = data.data; + let finalData = data.data; + + if (dataQuery.options.enableTransformation) { + finalData = await runTransformation( + _ref, + finalData, + query.options.transformation, + query.options.transformationLanguage, + query, + 'edit' + ); + if (finalData.status === 'failed') { + useCurrentStateStore.getState().actions.setCurrentState({ + queries: { + ...getCurrentState().queries, + [queryName]: { + ...getCurrentState().queries[queryName], + isLoading: false, + }, + }, + }); + + useCurrentStateStore.getState().actions.setErrors({ + [queryName]: { + type: 'transformations', + data: finalData, + options: options, + }, + }); + resolve(finalData); + onEvent(_self, 'onDataQueryFailure', queryEvents); + return; + } + } + + if (shouldSetPreviewData) { + setPreviewLoading(false); + setPreviewData(finalData); + } + + if (dataQuery.options.showSuccessNotification) { + const notificationDuration = dataQuery.options.notificationDuration * 1000 || 5000; + toast.success(dataQuery.options.successMessage, { + duration: notificationDuration, + }); + } + useCurrentStateStore.getState().actions.setCurrentState({ + queries: { + ...getCurrentState().queries, + [queryName]: _.assign( + { + ...getCurrentState().queries[queryName], + isLoading: false, + data: finalData, + rawData, + }, + query.kind === 'restapi' + ? { + request: data.request, + response: data.response, + responseHeaders: data.responseHeaders, + } + : {} + ), + }, + // Used to generate logs + succededQuery: { + [queryName]: { + type: 'query', + kind: query.kind, + }, + }, + }); + + if (mode === 'edit') { + useResolveStore.getState().actions.addAppSuggestions({ + queries: { + [queryName]: { + data: finalData, + isLoading: false, + }, + }, + }); + } + + const basePath = `queries.${queryName}`; + + useResolveStore.getState().actions.updateLastUpdatedRefs([`${basePath}.data`, `${basePath}.isLoading`]); + + resolve({ status: 'ok', data: finalData }); + onEvent(_self, 'onDataQuerySuccess', queryEvents, mode); + } + }) + .catch(({ error }) => { + if (mode !== 'view') toast.error(error ?? 'Unknown error'); + useCurrentStateStore.getState().actions.setCurrentState({ + queries: { + ...getCurrentState().queries, + [queryName]: { + isLoading: false, + }, + }, + }); + + resolve({ status: 'failed', message: error }); + }); + }, 100); }); } @@ -1235,7 +1440,7 @@ export function computeComponentState(components = {}) { useEditorStore.getState().actions.updateEditorState({ defaultComponentStateComputed: true, }); - resolve(); + resolve('CURRENT_STATE_UPDATED'); }); } catch (error) { console.log(error); @@ -1324,6 +1529,7 @@ export const debuggerActions = { generalProps.message = value.data.message; generalProps.property = key.split('- ')[1]; error.resolvedProperties = value.resolvedProperties; + error.componentId = value.componentId; break; case 'navToDisablePage': generalProps.message = value.data.message; @@ -1451,7 +1657,7 @@ export const cloneComponents = ( } if (isCloning) { - const parentId = selectedComponents[0]['component']?.parent ?? undefined; + const parentId = allComponents[selectedComponents[0]?.id]?.['component']?.parent ?? undefined; addComponents(currentPageId, appDefinition, updateAppDefinition, parentId, newComponentObj, true); toast.success('Component cloned succesfully'); @@ -1633,10 +1839,9 @@ export const addNewWidgetToTheEditor = ( ) => { const componentMetaData = _.cloneDeep(componentMeta); const componentData = _.cloneDeep(componentMetaData); + const noOfGrid = useGridStore.getState().noOfGrid; - const defaultWidth = isInSubContainer - ? (componentMetaData.defaultSize.width * 100) / 43 - : componentMetaData.defaultSize.width; + const defaultWidth = componentMetaData.defaultSize.width; const defaultHeight = componentMetaData.defaultSize.height; componentData.name = computeComponentName(componentData.component, currentComponents); @@ -1675,11 +1880,13 @@ export const addNewWidgetToTheEditor = ( [left, top] = snapToGrid(subContainerWidth, left, top); } - left = (left * 100) / subContainerWidth; + const gridWidth = subContainerWidth / noOfGrid; + left = Math.round(left / gridWidth); + console.log('Top calc', { top, initialClientOffset, delta, zoomLevel, offsetFromTopOfWindow, subContainerWidth }); if (currentLayout === 'mobile') { - componentData.definition.others.showOnDesktop.value = false; - componentData.definition.others.showOnMobile.value = true; + componentData.definition.others.showOnDesktop.value = `{{false}}`; + componentData.definition.others.showOnMobile.value = `{{true}}`; } const widgetsWithDefaultComponents = ['Listview', 'Tabs', 'Form', 'Kanban']; @@ -1710,7 +1917,7 @@ export const addNewWidgetToTheEditor = ( }; export function snapToGrid(canvasWidth, x, y) { - const gridX = canvasWidth / 43; + const gridX = canvasWidth / useGridStore.getState().noOfGrid; const snappedX = Math.round(x / gridX) * gridX; const snappedY = Math.round(y / 10) * 10; @@ -1779,10 +1986,10 @@ function convertMapSet(obj) { export const checkExistingQueryName = (newName) => useDataQueriesStore.getState().dataQueries.some((query) => query.name === newName); -export const runQueries = (queries, _ref) => { +export const runQueries = (queries, _ref, isOnLoad = false) => { queries.forEach((query) => { if (query.options.runOnPageLoad && isQueryRunnable(query)) { - runQuery(_ref, query.id, query.name); + runQuery(_ref, query.id, query.name, isOnLoad); } }); }; @@ -1869,7 +2076,7 @@ export const buildAppDefinition = (data) => { _.unset(editingVersion, 'id'); const pages = data.pages.reduce((acc, page) => { - const currentComponents = buildComponentMetaDefinition(_.cloneDeep(page?.components)); + const currentComponents = buildComponentMetaDefinition(page?.components); page.components = currentComponents; @@ -1898,3 +2105,73 @@ export const removeFunctionObjects = (obj) => { } return obj; }; + +export function isPDFSupported() { + const browser = getBrowserUserAgent(); + + if (!browser) { + return true; + } + + const isChrome = browser.name === 'Chrome' && browser.major >= 92; + const isEdge = browser.name === 'Edge' && browser.major >= 92; + const isSafari = browser.name === 'Safari' && browser.major >= 15 && browser.minor >= 4; // Handle minor version check for Safari + const isFirefox = browser.name === 'Firefox' && browser.major >= 90; + + console.log('browser--', browser, isChrome || isEdge || isSafari || isFirefox); + + return isChrome || isEdge || isSafari || isFirefox; +} + +function getBrowserUserAgent(userAgent) { + var regexps = { + Chrome: [/Chrome\/(\S+)/], + Firefox: [/Firefox\/(\S+)/], + MSIE: [/MSIE (\S+);/], + Opera: [/Opera\/.*?Version\/(\S+)/ /* Opera 10 */, /Opera\/(\S+)/ /* Opera 9 and older */], + Safari: [/Version\/(\S+).*?Safari\//], + }, + re, + m, + browser, + version; + + if (userAgent === undefined) userAgent = navigator.userAgent; + + for (browser in regexps) + while ((re = regexps[browser].shift())) + if ((m = userAgent.match(re))) { + version = m[1].match(new RegExp('[^.]+(?:.[^.]+){0,1}'))[0]; + const { major, minor } = extractVersion(version); + return { + name: browser, + major, + minor, + }; + } + + return null; +} + +function extractVersion(versionStr) { + // Split the string by "." + const parts = versionStr.split('.'); + + // Check for valid input + if (parts.length === 0 || parts.some((part) => isNaN(part))) { + return { major: null, minor: null }; + } + + // Extract major version + const major = parseInt(parts[0], 10); + + // Handle minor version (default to 0) + const minor = parts.length > 1 ? parseInt(parts[1], 10) : 0; + + return { major, minor }; +} + +// Select multiple components using Selecto via drag +export const setMultipleComponentsSelected = (components) => { + useEditorStore.getState().actions.selectMultipleComponents(components); +}; diff --git a/frontend/src/_helpers/authorizeWorkspace.js b/frontend/src/_helpers/authorizeWorkspace.js index 6ccba9cc1c..a0ed47f698 100644 --- a/frontend/src/_helpers/authorizeWorkspace.js +++ b/frontend/src/_helpers/authorizeWorkspace.js @@ -104,19 +104,6 @@ const isThisExistedRoute = () => { return pathnames?.length > 0 ? (checkPath() ? true : false) : false; }; -const fetchOrganizations = (current_organization_id, callback, onRequestFailure = () => {}) => { - organizationService - .getOrganizations() - .then((response) => { - const current_organization = response.organizations?.find((org) => org.id === current_organization_id); - callback({ - organizations: response.organizations, - current_organization, - }); - }) - .catch(onRequestFailure); -}; - const isThisWorkspaceLoginPage = (justLoginPage = false) => { const subpath = getSubpath(); const pathname = location.pathname.replace(subpath, ''); @@ -147,19 +134,15 @@ export const authorizeUserAndHandleErrors = (workspace_id, workspace_slug, callb .authorize() .then((data) => { /* CASE-1 */ - const { current_organization_id } = data; - fetchOrganizations(current_organization_id, ({ organizations, current_organization }) => { - const { name: current_organization_name } = current_organization; - /* add the user details like permission and user previlliage details to the subject */ - updateCurrentSession({ - ...data, - current_organization_name, - organizations, - load_app: true, - noWorkspaceAttachedInTheSession: false, - }); - if (callback) callback(); + const { current_organization_name } = data; + /* add the user details like permission and user previlliage details to the subject */ + updateCurrentSession({ + ...data, + current_organization_name, + load_app: true, + noWorkspaceAttachedInTheSession: false, }); + if (callback) callback(); }) .catch((error) => { if (error && error?.data?.statusCode === 401) { @@ -172,7 +155,7 @@ export const authorizeUserAndHandleErrors = (workspace_id, workspace_slug, callb /* get current session's workspace id */ authenticationService .validateSession() - .then(({ current_organization_id }) => { + .then(({ current_organization_id, ...restSessionData }) => { /* change current organization id to valid one [current logged in organization] */ updateCurrentSession({ current_organization_id, @@ -183,28 +166,24 @@ export const authorizeUserAndHandleErrors = (workspace_id, workspace_slug, callb .then(() => { authorizeUserAndHandleErrors(unauthorized_organization_id); }) - .catch((error) => { - /* CASE-3 */ - fetchOrganizations(current_organization_id, ({ current_organization }) => { - const { name: current_organization_name, slug: current_organization_slug } = current_organization; - updateCurrentSession({ - current_organization_name, - current_organization_slug, - load_app: true, - }); - - if (!isThisWorkspaceLoginPage()) - return (window.location = `${ - subpath ?? '' - }/login/${unauthorized_organization_slug}?redirectTo=${getRedirectToWithParams()}`); - - const statusCode = error?.data.statusCode; - if (statusCode === 401) { - updateCurrentSession({ - isOrgSwitchingFailed: true, - }); - } + .catch(() => { + const { current_organization_name, current_organization_slug } = restSessionData; + updateCurrentSession({ + current_organization_name, + current_organization_slug, + load_app: true, }); + + if (!isThisWorkspaceLoginPage()) + return (window.location = `${ + subpath ?? '' + }/login/${unauthorized_organization_slug}?redirectTo=${getRedirectToWithParams()}`); + const statusCode = error?.data.statusCode; + if (statusCode === 401) { + updateCurrentSession({ + isOrgSwitchingFailed: true, + }); + } }); }) /* CASE-3 */ diff --git a/frontend/src/_helpers/editorHelpers.js b/frontend/src/_helpers/editorHelpers.js new file mode 100644 index 0000000000..6702d30f29 --- /dev/null +++ b/frontend/src/_helpers/editorHelpers.js @@ -0,0 +1,284 @@ +import { Button } from '@/Editor/Components/Button'; +import { Image } from '@/Editor/Components/Image'; +import { Text } from '@/Editor/Components/Text'; +import { Table } from '@/Editor/Components/Table/Table'; +import { TextInput } from '@/Editor/Components/TextInput'; +import { NumberInput } from '@/Editor/Components/NumberInput'; +import { TextArea } from '@/Editor/Components/TextArea'; +import { Container } from '@/Editor/Components/Container'; +import { Tabs } from '@/Editor/Components/Tabs'; +import { RichTextEditor } from '@/Editor/Components/RichTextEditor'; +import { DropDown } from '@/Editor/Components/DropDown'; +import { Checkbox } from '@/Editor/Components/Checkbox'; +import { Datepicker } from '@/Editor/Components/Datepicker'; +import { DaterangePicker } from '@/Editor/Components/DaterangePicker'; +import { Multiselect } from '@/Editor/Components/Multiselect'; +import { Modal } from '@/Editor/Components/Modal'; +import { Chart } from '@/Editor/Components/Chart'; +import { Map as MapComponent } from '@/Editor/Components/Map/Map'; +import { QrScanner } from '@/Editor/Components/QrScanner/QrScanner'; +import { ToggleSwitch } from '@/Editor/Components/Toggle'; +import { RadioButton } from '@/Editor/Components/RadioButton'; +import { StarRating } from '@/Editor/Components/StarRating'; +import { Divider } from '@/Editor/Components/Divider'; +import { FilePicker } from '@/Editor/Components/FilePicker'; +import { PasswordInput } from '@/Editor/Components/PasswordInput'; +import { Calendar } from '@/Editor/Components/Calendar'; +import { Listview } from '@/Editor/Components/Listview'; +import { IFrame } from '@/Editor/Components/IFrame'; +import { CodeEditor } from '@/Editor/Components/CodeEditor'; +import { Timer } from '@/Editor/Components/Timer'; +import { Statistics } from '@/Editor/Components/Statistics'; +import { Pagination } from '@/Editor/Components/Pagination'; +import { Tags } from '@/Editor/Components/Tags'; +import { Spinner } from '@/Editor/Components/Spinner'; +import { CircularProgressBar } from '@/Editor/Components/CirularProgressbar'; +import { RangeSlider } from '@/Editor/Components/RangeSlider'; +import { Timeline } from '@/Editor/Components/Timeline'; +import { SvgImage } from '@/Editor/Components/SvgImage'; +import { Html } from '@/Editor/Components/Html'; +import { ButtonGroup } from '@/Editor/Components/ButtonGroup'; +import { CustomComponent } from '@/Editor/Components/CustomComponent/CustomComponent'; +import { VerticalDivider } from '@/Editor/Components/verticalDivider'; +import { ColorPicker } from '@/Editor/Components/ColorPicker'; +import { KanbanBoard } from '@/Editor/Components/KanbanBoard/KanbanBoard'; +import { Kanban } from '@/Editor/Components/Kanban/Kanban'; +import { Steps } from '@/Editor/Components/Steps'; +import { TreeSelect } from '@/Editor/Components/TreeSelect'; +import { Icon } from '@/Editor/Components/Icon'; +import { Link } from '@/Editor/Components/Link'; +import { Form } from '@/Editor/Components/Form/Form'; +import { BoundedBox } from '@/Editor/Components/BoundedBox/BoundedBox'; +import { isPDFSupported } from '@/_helpers/appUtils'; +import { resolveWidgetFieldValue } from '@/_helpers/utils'; +import { useEditorStore } from '@/_stores/editorStore'; + +export function memoizeFunction(func) { + const cache = new Map(); + + return function (...args) { + const key = JSON.stringify(args); + + if (cache.has(key)) { + return cache.get(key); + } + + const result = func.apply(this, args); + cache.set(key, result); + return result; + }; +} + +export const AllComponents = { + Button, + Image, + Text, + TextInput, + NumberInput, + Table, + TextArea, + Container, + Tabs, + RichTextEditor, + DropDown, + Checkbox, + Datepicker, + DaterangePicker, + Multiselect, + Modal, + Chart, + Map: MapComponent, + QrScanner, + ToggleSwitch, + RadioButton, + StarRating, + Divider, + FilePicker, + PasswordInput, + Calendar, + IFrame, + CodeEditor, + Listview, + Timer, + Statistics, + Pagination, + Tags, + Spinner, + CircularProgressBar, + RangeSlider, + Timeline, + SvgImage, + Html, + ButtonGroup, + CustomComponent, + VerticalDivider, + ColorPicker, + KanbanBoard, + Kanban, + Steps, + TreeSelect, + Link, + Icon, + Form, + BoundedBox, +}; +if (isPDFSupported()) { + AllComponents.PDF = await import('@/Editor/Components/PDF').then((module) => module.PDF); +} + +export const getComponentToRender = (componentName) => { + const shouldHideWidget = componentName === 'PDF' && !isPDFSupported(); + if (shouldHideWidget) return null; + return AllComponents[componentName]; +}; + +export function isOnlyLayoutUpdate(diffState) { + const componentDiff = Object.keys(diffState).filter((key) => diffState[key]?.layouts && !diffState[key]?.component); + + return componentDiff.length > 0; +} + +function findReferenceInComponent(node, changedCurrentState) { + if (!node) return false; + + try { + if (typeof node === 'object') { + for (let key in node) { + const value = node[key]; + if (typeof value === 'string' && value.includes('{{') && value.includes('}}')) { + // Check if the referenced entity is in the state + if (changedCurrentState.some((state) => value.includes(state))) { + return true; + } + } else if (typeof value === 'object') { + const found = findReferenceInComponent(value, changedCurrentState); + + if (found) return true; + } + } + } + + return false; + } catch (error) { + console.log('error', { error }); + + return false; + } +} + +// Function to find which component ids contain the references +export function findComponentsWithReferences(components, changedCurrentState) { + const componentIdsWithReferences = []; + + if (!components) return componentIdsWithReferences; + + Object.entries(components).forEach(([componentId, componentData]) => { + const hasReference = findReferenceInComponent(componentData, changedCurrentState); + if (hasReference) { + componentIdsWithReferences.push(componentId); + } + }); + + return componentIdsWithReferences; +} + +//* TaskManager to track and manage scheduled tasks +//Todo: Move this to a separate file +class TaskManager { + constructor() { + this.tasks = new Set(); + } + + addTask(taskId) { + this.tasks.add(taskId); + } + + cancelTask(taskId) { + window.cancelIdleCallback(taskId); + this.tasks.delete(taskId); + } + + clearAllTasks() { + for (let taskId of this.tasks) { + window.cancelIdleCallback(taskId); + } + this.tasks.clear(); + } +} + +const taskManager = new TaskManager(); + +export function handleLowPriorityWork(callback, timeout = null, immediate = false) { + if (immediate) { + callback(); + } else { + const options = timeout ? { timeout } : {}; + const taskId = window.requestIdleCallback(callback, options); + taskManager.addTask(taskId); + } +} + +// Clear all tasks on a page switch or similar action +export function clearAllQueuedTasks() { + taskManager.clearAllTasks(); +} + +export function generatePath(obj, targetKey, currentPath = '') { + for (const key in obj) { + const newPath = currentPath ? currentPath + '.' + key : key; + + if (key === targetKey) { + return newPath; + } + + if (typeof obj[key] === 'object' && obj[key] !== null) { + const result = generatePath(obj[key], targetKey, newPath); + if (result) { + return result; + } + } + } + return null; +} + +/** + * Update the canvas background with the given parameters + * @param {Object} params The parameters to update the canvas background with + * @param {string} params.canvasBackgroundColor The new background color + * @param {string} params.backgroundFxQuery The new background color formula + * @param {boolean} [isUpdate=false] Whether to update the background color without + * re-calculating it from the given formula. + */ +export const updateCanvasBackground = ({ canvasBackgroundColor, backgroundFxQuery }, isUpdate = false) => { + const { setCanvasBackground } = useEditorStore.getState().actions; + + /** + * If the background color should be updated, update it with the given parameters + */ + if (isUpdate) { + return setCanvasBackground({ + backgroundFxQuery, + canvasBackgroundColor, + }); + } + + /** + * If the background color formula is not empty, calculate the new background color + * and update it if it has changed + */ + if (backgroundFxQuery !== '') { + const computedBackgroundColor = resolveWidgetFieldValue( + useEditorStore.getState().canvasBackground?.backgroundFxQuery + ); + + /** + * If the computed background color is different from the current one, update it + */ + if (computedBackgroundColor !== canvasBackgroundColor) { + setCanvasBackground({ + ...useEditorStore.getState().canvasBackground, + canvasBackgroundColor: computedBackgroundColor, + }); + } + } +}; diff --git a/frontend/src/_helpers/utility.js b/frontend/src/_helpers/utility.js new file mode 100644 index 0000000000..51e4fd881c --- /dev/null +++ b/frontend/src/_helpers/utility.js @@ -0,0 +1,88 @@ +import { useResolveStore } from '@/_stores/resolverStore'; +import _ from 'lodash'; + +export function validateMultilineCode(code) { + const reservedKeyword = ['app', 'window', 'this']; // Case-sensitive reserved keywords + const keywordRegex = new RegExp(`\\b(${reservedKeyword.join('|')})\\b`, 'i'); + let inString = false; + let inComment = false; + let currentQuote = null; + + for (let i = 0; i < code.length; i++) { + const char = code[i]; + const nextChar = code[i + 1]; + + // Check if entering or exiting a string + if ((char === '"' || char === "'") && !inComment) { + if (inString && char === currentQuote && code[i - 1] !== '\\') { + inString = false; + currentQuote = null; + } else if (!inString) { + inString = true; + currentQuote = char; + } + } + + if (!inString && char === '/' && nextChar === '/') { + inComment = true; + } + + if (inComment && (char === '\n' || char === '\r')) { + inComment = false; + } + + // If we are not within a string or a comment, check for keywords + if (!inString && !inComment) { + const restOfCode = code.substring(i); + const match = restOfCode.match(keywordRegex); + if (match && match.index === 0) { + return { + status: 'failed', + data: { + message: `Code contains reserved keywords`, + description: 'Cannot resolve code with reserved keywords in it. Please remove them and try again.', + }, + }; + } + } + } + + return { + status: 'success', + data: { + message: 'No reserved keywords found.', + }, + }; +} + +export function updateParentNodes(path, newValue) { + const pathsToUpdate = []; + + const updateReceivedPath = path; + + const allPathsToBeUpdated = updateReceivedPath.split('.'); + + let currentPath = ''; + + for (let i = 0; i < allPathsToBeUpdated.length; i++) { + currentPath = currentPath + allPathsToBeUpdated[i]; + + if (i !== allPathsToBeUpdated.length - 1) { + const lookUpTable = useResolveStore.getState().lookupTable; + + const existingRef = lookUpTable.resolvedRefs?.get(lookUpTable.hints?.get(currentPath)); + + if (typeof existingRef === 'function') return; + + const updatePath = allPathsToBeUpdated.slice(i + 1).join('.'); + + const newRef = _.set(existingRef, updatePath, newValue); + + pathsToUpdate.push({ hint: currentPath, newRef }); + } + + currentPath = currentPath + '.'; + } + + return pathsToUpdate; +} diff --git a/frontend/src/_helpers/utils.js b/frontend/src/_helpers/utils.js index 61f86b49d1..d05abe090c 100644 --- a/frontend/src/_helpers/utils.js +++ b/frontend/src/_helpers/utils.js @@ -11,6 +11,9 @@ import { getWorkspaceIdOrSlugFromURL, getSubpath, returnWorkspaceIdIfNeed, erase import { staticDataSources } from '@/Editor/QueryManager/constants'; import { getDateTimeFormat } from '@/Editor/Components/Table/Datepicker'; import { useDataQueriesStore } from '@/_stores/dataQueriesStore'; +import { validateMultilineCode } from './utility'; + +const reservedKeyword = ['app', 'window']; export function findProp(obj, prop, defval) { if (typeof defval === 'undefined') defval = null; @@ -157,7 +160,7 @@ export function resolveReferences( forPreviewBox = false ) { if (object === '{{{}}}') return ''; - const reservedKeyword = ['app', 'window']; //Keywords that slows down the app + object = _.clone(object); const objectType = typeof object; let error; @@ -171,7 +174,10 @@ export function resolveReferences( if ((object.match(/{{/g) || []).length === 1) { const code = object.replace('{{', '').replace('}}', ''); - if (reservedKeyword.includes(code)) { + const _reservedKeyword = ['app', 'window', 'this']; // Case-sensitive reserved keywords + const keywordRegex = new RegExp(`\\b(${_reservedKeyword.join('|')})\\b`, 'i'); + + if (code.match(keywordRegex)) { error = `${code} is a reserved keyword`; return [{}, error]; } @@ -323,10 +329,11 @@ export const serializeNestedObjectToQueryParams = function (obj, prefix) { return str.join('&'); }; -export function resolveWidgetFieldValue(prop, state, _default = [], customResolveObjects = {}) { +export function resolveWidgetFieldValue(prop, _default = [], customResolveObjects = {}) { const widgetFieldValue = prop; try { + const state = getCurrentState(); return resolveReferences(widgetFieldValue, state, _default, customResolveObjects); } catch (err) { console.log(err); @@ -346,7 +353,7 @@ export function validateWidget({ validationObject, widgetValue, currentState, cu const maxValue = validationObject?.maxValue?.value; const customRule = validationObject?.customRule?.value; const mandatory = validationObject?.mandatory?.value; - const validationRegex = resolveWidgetFieldValue(regex, currentState, '', customResolveObjects); + const validationRegex = resolveWidgetFieldValue(regex, '', customResolveObjects); const re = new RegExp(validationRegex, 'g'); if (!re.test(widgetValue)) { @@ -356,7 +363,7 @@ export function validateWidget({ validationObject, widgetValue, currentState, cu }; } - const resolvedMinLength = resolveWidgetFieldValue(minLength, currentState, 0, customResolveObjects); + const resolvedMinLength = resolveWidgetFieldValue(minLength, 0, customResolveObjects); if ((widgetValue || '').length < parseInt(resolvedMinLength)) { return { isValid: false, @@ -364,7 +371,7 @@ export function validateWidget({ validationObject, widgetValue, currentState, cu }; } - const resolvedMaxLength = resolveWidgetFieldValue(maxLength, currentState, undefined, customResolveObjects); + const resolvedMaxLength = resolveWidgetFieldValue(maxLength, undefined, customResolveObjects); if (resolvedMaxLength !== undefined) { if ((widgetValue || '').length > parseInt(resolvedMaxLength)) { return { @@ -374,7 +381,7 @@ export function validateWidget({ validationObject, widgetValue, currentState, cu } } - const resolvedMinValue = resolveWidgetFieldValue(minValue, currentState, undefined, customResolveObjects); + const resolvedMinValue = resolveWidgetFieldValue(minValue, undefined, customResolveObjects); if (resolvedMinValue !== undefined) { if (widgetValue === undefined || widgetValue < parseFloat(resolvedMinValue)) { return { @@ -394,12 +401,12 @@ export function validateWidget({ validationObject, widgetValue, currentState, cu } } - const resolvedCustomRule = resolveWidgetFieldValue(customRule, currentState, false, customResolveObjects); + const resolvedCustomRule = resolveWidgetFieldValue(customRule, false, customResolveObjects); if (typeof resolvedCustomRule === 'string' && resolvedCustomRule !== '') { return { isValid: false, validationError: resolvedCustomRule }; } - const resolvedMandatory = resolveWidgetFieldValue(mandatory, currentState, false, customResolveObjects); + const resolvedMandatory = resolveWidgetFieldValue(mandatory, false, customResolveObjects); if (resolvedMandatory == true) { if (!widgetValue) { @@ -510,15 +517,13 @@ export function validateEmail(email) { } // eslint-disable-next-line no-unused-vars -export async function executeMultilineJS( - _ref, - code, - queryId, - isPreview, - mode = '', - parameters = {}, - hasParamSupport = false -) { +export async function executeMultilineJS(_ref, code, queryId, isPreview, mode = '', parameters = {}) { + const isValidCode = validateMultilineCode(code); + + if (isValidCode.status === 'failed') { + return isValidCode; + } + const currentState = getCurrentState(); let result = {}, error = null; @@ -669,12 +674,26 @@ export const handleCircularStructureToJSON = () => { }; export function hasCircularDependency(obj) { - try { - JSON.stringify(obj); - } catch (e) { - return String(e).includes('Converting circular structure to JSON'); + let seenObjects = new WeakSet(); + + function detect(obj) { + if (obj && typeof obj === 'object') { + if (seenObjects.has(obj)) { + // Circular reference found + return true; + } + seenObjects.add(obj); + + for (let key in obj) { + if (obj.hasOwnProperty(key) && detect(obj[key])) { + return true; + } + } + } + return false; } - return false; + + return detect(obj); } export const hightlightMentionedUserInComment = (comment) => { @@ -1190,6 +1209,11 @@ export const determineJustifyContentValue = (value) => { } }; +export function isValidUUID(uuid) { + const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; + return uuidRegex.test(uuid); +} + export const USER_DRAWER_MODES = { EDIT: 'EDIT', CREATE: 'CREATE', diff --git a/frontend/src/_hoc/withProfiler.jsx b/frontend/src/_hoc/withProfiler.jsx new file mode 100644 index 0000000000..9c6bc58623 --- /dev/null +++ b/frontend/src/_hoc/withProfiler.jsx @@ -0,0 +1,18 @@ +import React, { Profiler } from 'react'; + +export const withProfiler = (WrappedComponent) => (props) => { + function onRenderCallback(id, phase, actualDuration, baseDuration, startTime, commitTime) { + const markName = `⚛ ${id} (${phase})`; + performance.measure(markName, { + end: commitTime, + start: startTime, + }); + performance.clearMeasures(markName); + } + + return ( + + + + ); +}; diff --git a/frontend/src/_hooks/useKeyHooks.js b/frontend/src/_hooks/useKeyHooks.js index 4344adf59b..48883e0b0d 100644 --- a/frontend/src/_hooks/useKeyHooks.js +++ b/frontend/src/_hooks/useKeyHooks.js @@ -1,9 +1,13 @@ import { useHotkeys } from 'react-hotkeys-hook'; const useKeyHooks = (hotkeys = [], callback) => - useHotkeys(hotkeys.toString(), (e) => { - e.preventDefault(); - callback(e.code); - }); + useHotkeys( + hotkeys.toString(), + (e) => { + e.preventDefault(); + callback(e.code); + }, + { scopes: 'editor' } + ); export default useKeyHooks; diff --git a/frontend/src/_services/app_environment.service.js b/frontend/src/_services/app_environment.service.js index 8e237c2db1..9f6b5286c8 100644 --- a/frontend/src/_services/app_environment.service.js +++ b/frontend/src/_services/app_environment.service.js @@ -5,6 +5,8 @@ import queryString from 'query-string'; export const appEnvironmentService = { getAllEnvironments, getVersionsByEnvironment, + init, + postVersionDeleteAction, }; function getAllEnvironments() { @@ -29,3 +31,19 @@ function getVersionsByEnvironment(appId, environmentId /* not needed for CE */) requestOptions ).then(handleResponse); } + +function init(editing_version_id = null) { + const requestOptions = { method: 'GET', headers: authHeader(), credentials: 'include' }; + const query = queryString.stringify({ editing_version_id }); + return fetch(`${config.apiUrl}/app-environments/init?${query}`, requestOptions).then(handleResponse); +} + +function postVersionDeleteAction(actionParams = {}) { + const requestOptions = { + method: 'POST', + body: JSON.stringify(actionParams), + headers: authHeader(), + credentials: 'include', + }; + return fetch(`${config.apiUrl}/app-environments/post-action/version_deleted`, requestOptions).then(handleResponse); +} diff --git a/frontend/src/_services/apps.service.js b/frontend/src/_services/apps.service.js index 6af8a7c70c..f1f816cfd3 100644 --- a/frontend/src/_services/apps.service.js +++ b/frontend/src/_services/apps.service.js @@ -25,6 +25,7 @@ export const appsService = { getAppUsers, getVersions, getTables, + releaseVersion, }; function validateReleasedApp(slug) { @@ -204,3 +205,14 @@ function getTables(id) { const requestOptions = { method: 'GET', headers: authHeader(), credentials: 'include' }; return fetch(`${config.apiUrl}/apps/${id}/tables`, requestOptions).then(handleResponse); } + +function releaseVersion(appId, versionToBeReleased) { + const requestOptions = { + method: 'PUT', + headers: authHeader(), + body: JSON.stringify({ versionToBeReleased }), + credentials: 'include', + }; + + return fetch(`${config.apiUrl}/v2/apps/${appId}/release`, requestOptions).then(handleResponse); +} diff --git a/frontend/src/_services/dataquery.service.js b/frontend/src/_services/dataquery.service.js index 12107351af..cd64f2eccf 100644 --- a/frontend/src/_services/dataquery.service.js +++ b/frontend/src/_services/dataquery.service.js @@ -10,6 +10,7 @@ export const dataqueryService = { preview, changeQueryDataSource, updateStatus, + bulkUpdateQueryOptions, }; function getAll(appVersionId) { @@ -43,6 +44,17 @@ function update(id, name, options) { return fetch(`${config.apiUrl}/data_queries/${id}`, requestOptions).then(handleResponse); } +function bulkUpdateQueryOptions(queryOptions, appVersionId) { + const body = { + data_queries_options: queryOptions, + app_version_id: appVersionId, + }; + + const requestOptions = { method: 'PATCH', headers: authHeader(), credentials: 'include', body: JSON.stringify(body) }; + + return fetch(`${config.apiUrl}/data_queries/`, requestOptions).then(handleResponse); +} + function updateStatus(id, status) { const body = { status, diff --git a/frontend/src/_stores/appDataStore.js b/frontend/src/_stores/appDataStore.js index d6e5fc0d98..02c87ac29a 100644 --- a/frontend/src/_stores/appDataStore.js +++ b/frontend/src/_stores/appDataStore.js @@ -1,6 +1,12 @@ import { appVersionService } from '@/_services'; -import { create, zustandDevTools } from './utils'; +import { create, findAllEntityReferences, zustandDevTools } from './utils'; import { shallow } from 'zustand/shallow'; +import { useResolveStore } from './resolverStore'; +import { useEditorStore } from './editorStore'; +import { useDataQueriesStore } from './dataQueriesStore'; +import _ from 'lodash'; +import { dfs, handleReferenceTransactions } from './handleReferenceTransactions'; +import { isValidUUID } from '@/_helpers/utils'; const initialState = { editingVersion: null, @@ -46,11 +52,17 @@ export const useAppDataStore = create( get().actions.setIsSaving(true); const isComponentCutProcess = get().appDiffOptions?.componentCut === true; + let updateDiff = appDefinitionDiff.updateDiff; + + if (appDefinitionDiff.operation === 'update') { + updateDiff = useResolveStore.getState().actions.findReferences(updateDiff); + } + appVersionService .autoSaveApp( appId, versionId, - appDefinitionDiff.updateDiff, + updateDiff, appDefinitionDiff.type, pageId, appDefinitionDiff.operation, @@ -78,7 +90,14 @@ export const useAppDataStore = create( const appId = get().appId; const versionId = get().currentVersionId; - const response = await appVersionService.saveAppVersionEventHandlers(appId, versionId, events, updateType); + const entityIdMappingData = useResolveStore.getState().actions.findReferences(events); + + const response = await appVersionService.saveAppVersionEventHandlers( + appId, + versionId, + entityIdMappingData, + updateType + ); get().actions.setIsSaving(false); set({ eventsUpdatedLoader: false, actionsUpdatedLoader: false }); @@ -91,7 +110,23 @@ export const useAppDataStore = create( } }); - set(() => ({ events: updatedEvents })); + const entityReferencesInEvents = findAllEntityReferences(updatedEvents, [])?.filter( + (entity) => entity && isValidUUID(entity) + ); + + const manager = useResolveStore.getState().referenceMapper; + let newEvents = JSON.parse(JSON.stringify(updatedEvents)); + + entityReferencesInEvents.forEach((entity) => { + const entityrefExists = manager.has(entity); + + if (entityrefExists) { + const value = manager.get(entity); + newEvents = dfs(newEvents, entity, value); + } + }); + + set(() => ({ events: newEvents })); }, createAppVersionEventHandlers: async (event) => { @@ -141,6 +176,7 @@ export const useAppDataStore = create( setIsSaving: (isSaving) => set(() => ({ isSaving })), setAppId: (appId) => set(() => ({ appId })), setAppPreviewLink: (appVersionPreviewLink) => set(() => ({ appVersionPreviewLink })), + setComponents: (components) => set(() => ({ components })), setMetadata: (metadata) => set(() => ({ metadata })), setEventToDeleteLoaderIndex: (index) => set(() => ({ eventToDeleteLoaderIndex: index })), updateIsTJDarkMode: (isTJDarkMode) => set({ isTJDarkMode }), @@ -150,6 +186,58 @@ export const useAppDataStore = create( ) ); +const itemToObserve = 'appDiffOptions'; + +useAppDataStore.subscribe( + (state) => { + const isComponentNameUpdated = state[itemToObserve]?.componentNameUpdated; + + if (!isComponentNameUpdated) return; + + const { appDefinition, currentPageId, isUpdatingEditorStateInProcess } = useEditorStore.getState(); + const { dataQueries } = useDataQueriesStore.getState(); + + if (isComponentNameUpdated && !isUpdatingEditorStateInProcess) { + const components = JSON.parse(JSON.stringify(state.components)); + const _dataQueries = JSON.parse(JSON.stringify(dataQueries)); + const currentAppEvents = JSON.parse(JSON.stringify(state.events)); + const updatedNames = []; + + const referenceManager = useResolveStore.getState().referenceMapper; + + Object.entries(state.components).forEach(([id, component]) => { + const existingName = referenceManager.get(id); + + if (existingName === component.component.name) { + return; + } + + referenceManager.update(id, component.component.name); + + updatedNames.push({ + id: id, + name: existingName, + newName: component.component.name, + type: 'components', + }); + }); + + if (updatedNames.length === 0) return; + + handleReferenceTransactions( + components, + _dataQueries, + currentAppEvents, + appDefinition, + currentPageId, + state.currentVersionId, + updatedNames + ); + } + }, + (state) => [state[itemToObserve]] +); + export const useEditingVersion = () => useAppDataStore((state) => state.editingVersion, shallow); export const useIsSaving = () => useAppDataStore((state) => state.isSaving, shallow); export const useUpdateEditingVersion = () => useAppDataStore((state) => state.actions, shallow); diff --git a/frontend/src/_stores/currentSessionStore.js b/frontend/src/_stores/currentSessionStore.js new file mode 100644 index 0000000000..f62d974346 --- /dev/null +++ b/frontend/src/_stores/currentSessionStore.js @@ -0,0 +1,32 @@ +import create from 'zustand'; +import { zustandDevTools } from './utils'; +import { organizationService } from '@/_services'; + +const initialState = { + organizations: [], + isGettingOrganizations: false, +}; + +//TODO: migrate all rxjs functions to zustand in future +export const useCurrentSessionStore = create( + zustandDevTools( + (set, get) => ({ + ...initialState, + actions: { + fetchOrganizations: async () => { + if (get().isGettingOrganizations || get().organizations.length) return; + try { + set({ isGettingOrganizations: true }); + const response = await organizationService.getOrganizations(); + set({ organizations: response.organizations, isGettingOrganizations: false }); + } catch (error) { + console.error('Error while fetching organizations', error); + } + }, + }, + }), + { name: 'Current Session Store' } + ) +); + +export const useCurrentSessionStoreActions = () => useCurrentSessionStore((state) => state.actions); diff --git a/frontend/src/_stores/currentStateStore.js b/frontend/src/_stores/currentStateStore.js index 7775303bb0..e2e16b123d 100644 --- a/frontend/src/_stores/currentStateStore.js +++ b/frontend/src/_stores/currentStateStore.js @@ -1,6 +1,10 @@ import { shallow } from 'zustand/shallow'; import { create, zustandDevTools } from './utils'; -import { omit } from 'lodash'; +import _, { omit } from 'lodash'; +import { useResolveStore } from './resolverStore'; +import { handleLowPriorityWork, updateCanvasBackground } from '@/_helpers/editorHelpers'; +import { useEditorStore } from '@/_stores/editorStore'; + const initialState = { queries: {}, components: {}, @@ -17,9 +21,28 @@ const initialState = { variables: {}, }, succededQuery: {}, + isEditorReady: false, constants: {}, }; +function generatePath(obj, targetKey, currentPath = '') { + for (const key in obj) { + const newPath = currentPath ? currentPath + '.' + key : key; + + if (key === targetKey) { + return newPath; + } + + if (typeof obj[key] === 'object' && obj[key] !== null) { + const result = generatePath(obj[key], targetKey, newPath); + if (result) { + return result; + } + } + } + return null; +} + export const useCurrentStateStore = create( zustandDevTools( (set, get) => ({ @@ -31,6 +54,17 @@ export const useCurrentStateStore = create( setErrors: (error) => { set({ errors: { ...get().errors, ...error } }, false, { type: 'SET_ERRORS', error }); }, + setEditorReady: (isEditorReady) => set({ isEditorReady }), + initializeCurrentStateOnVersionSwitch: () => { + const newInitialState = { + ...initialState, + constants: get().constants, + }; + set({ ...newInitialState }, false, { + type: 'INITIALIZE_CURRENT_STATE_ON_VERSION_SWITCH', + newInitialState, + }); + }, }, }), { name: 'Current State' } @@ -55,6 +89,40 @@ export const useCurrentState = () => }; }, shallow); +useCurrentStateStore.subscribe((state) => { + const isEditorReady = state.isEditorReady; + + if (!isEditorReady) return; + + // TODO: Change the logic of updating canvas background + updateCanvasBackground(useEditorStore.getState().canvasBackground); + + const isStoreIntialized = useResolveStore.getState().storeReady; + if (!isStoreIntialized) { + const isPageSwitched = useResolveStore.getState().isPageSwitched; + + handleLowPriorityWork( + () => { + useResolveStore.getState().actions.updateAppSuggestions({ + queries: state.queries, + components: state.components, + globals: state.globals, + page: state.page, + variables: state.variables, + client: state.client, + server: state.server, + constants: state.constants, + }); + useResolveStore.getState().actions.pageSwitched(false); + }, + null, + isPageSwitched + ); + + return useResolveStore.getState().actions.updateStoreState({ storeReady: true }); + } +}, shallow); + export const getCurrentState = () => { return omit(useCurrentStateStore.getState(), 'actions'); }; diff --git a/frontend/src/_stores/dataQueriesStore.js b/frontend/src/_stores/dataQueriesStore.js index 9aee442d8f..5b9bba899d 100644 --- a/frontend/src/_stores/dataQueriesStore.js +++ b/frontend/src/_stores/dataQueriesStore.js @@ -3,12 +3,13 @@ import { getDefaultOptions } from './storeHelper'; import { dataqueryService } from '@/_services'; // import debounce from 'lodash/debounce'; import { useAppDataStore } from '@/_stores/appDataStore'; -import { runQueries } from '@/_helpers/appUtils'; import { v4 as uuidv4 } from 'uuid'; import { toast } from 'react-hot-toast'; import _, { isEmpty, throttle } from 'lodash'; import { shallow } from 'zustand/shallow'; import { getCurrentState, useCurrentStateStore } from './currentStateStore'; +import { useResolveStore } from './resolverStore'; +import { handleReferenceTransactions } from './handleReferenceTransactions'; import { useAppVersionStore } from '@/_stores/appVersionStore'; import { useEditorStore } from '@/_stores/editorStore'; import { useQueryPanelStore } from '@/_stores/queryPanelStore'; @@ -25,6 +26,7 @@ const initialState = { isUpdatingQueryInProcess: false, /** When a 'Create Data Query' operation is in progress, rename/update API calls are cached in the variable. */ queuedActions: {}, + // queuedQueriesForRunOnAppLoad: [], }; export const useDataQueriesStore = create( @@ -34,25 +36,59 @@ export const useDataQueriesStore = create( actions: { // TODO: Remove editor state while changing currentState fetchDataQueries: async (appVersionId, selectFirstQuery = false, runQueriesOnAppLoad = false, ref) => { - set({ loadingDataQueries: true }); + get().loadingDataQueries && set({ loadingDataQueries: true }); const data = await dataqueryService.getAll(appVersionId); + + const diff = _.differenceWith(data.data_queries, get().dataQueries, _.isEqual); + const referencesManager = useResolveStore.getState().referenceMapper; + const newQueries = diff + .map((dq) => { + if (!referencesManager.get(dq.id)) { + return { + id: dq.id, + name: dq.name, + }; + } + }) + .filter((c) => c !== undefined); + + useResolveStore.getState().actions.addEntitiesToMap(newQueries); + set((state) => ({ dataQueries: sortByAttribute(data.data_queries, state.sortBy, state.sortOrder), loadingDataQueries: false, })); + // Compute query state to be added in the current state + const { actions, selectedQuery } = useQueryPanelStore.getState(); + if (selectFirstQuery) { + actions.setSelectedQuery(data.data_queries[0]?.id, data.data_queries[0]); + } else if (selectedQuery?.id) { + const query = data.data_queries.find((query) => query.id === selectedQuery?.id); + actions.setSelectedQuery(query?.id); + } + if (data.data_queries.length !== 0) { const queryConfirmationList = []; const updatedQueries = {}; const currentQueries = useCurrentStateStore.getState().queries; data.data_queries.forEach(({ id, name, options }) => { - updatedQueries[name] = _.merge(currentQueries[name], { - id: id, - isLoading: false, - data: [], - rawData: [], - }); + if (runQueriesOnAppLoad && options.runOnPageLoad) { + updatedQueries[name] = _.merge(currentQueries[name], { + id: id, + isLoading: true, + data: [], + rawData: [], + }); + } else + updatedQueries[name] = _.merge(currentQueries[name], { + id: id, + isLoading: false, + data: [], + rawData: [], + }); + if (options && options?.requestConfirmation && options?.runOnPageLoad) { queryConfirmationList.push({ queryId: id, queryName: name }); } @@ -68,19 +104,21 @@ export const useDataQueriesStore = create( }); } - // Compute query state to be added in the current state - const { actions, selectedQuery } = useQueryPanelStore.getState(); - if (selectFirstQuery) { - actions.setSelectedQuery(data.data_queries[0]?.id, data.data_queries[0]); - } else if (selectedQuery?.id) { - const query = data.data_queries.find((query) => query.id === selectedQuery?.id); - actions.setSelectedQuery(query?.id); - } - // Runs query on loading application - if (runQueriesOnAppLoad) runQueries(data.data_queries, ref); + // if (runQueriesOnAppLoad) { + // set({ queuedQueriesForRunOnAppLoad: data.data_queries }); + // } + }, + setDataQueries: (dataQueries, type = 'initial') => { + set({ dataQueries }); + if (type === 'mappingUpdate') { + const { actions } = useQueryPanelStore.getState(); + actions.setSelectedQuery(null); + const queryId = dataQueries[0]?.id; + + actions.setSelectedQuery(queryId); + } }, - setDataQueries: (dataQueries) => set({ dataQueries }), deleteDataQueries: (queryId) => { set({ isDeletingQueryInProcess: true }); useAppDataStore.getState().actions.setIsSaving(true); @@ -89,6 +127,7 @@ export const useDataQueriesStore = create( .then(() => { const { actions } = useQueryPanelStore.getState(); const { dataQueries } = useDataQueriesStore.getState(); + const deletedQueryName = dataQueries.find((query) => query.id === queryId).name; const newSelectedQuery = dataQueries.find((query) => query.id !== queryId); actions.setSelectedQuery(newSelectedQuery?.id || null); if (!newSelectedQuery?.id) { @@ -102,7 +141,7 @@ export const useDataQueriesStore = create( const currentQueries = useCurrentStateStore.getState().queries; useCurrentStateStore.getState().actions.setCurrentState({ - ...getCurrentState(), + ...useCurrentStateStore.getState(), queries: Object.keys(currentQueries).reduce((acc, key) => { if (currentQueries[key].id !== queryId) { acc[key] = currentQueries[key]; @@ -110,6 +149,18 @@ export const useDataQueriesStore = create( return acc; }, {}), }); + + const referenceManager = useResolveStore.getState().referenceMapper; + referenceManager.delete(queryId); + + const allHintsAssociatedWithQuery = useResolveStore + .getState() + .suggestions.appHints?.filter((suggestion) => { + return suggestion?.hint.includes(deletedQueryName); + }) + .map((item) => item.hint); + + return useResolveStore.getState().actions.removeAppSuggestions(allHintsAssociatedWithQuery); }) .catch(() => { set({ @@ -200,7 +251,7 @@ export const useDataQueriesStore = create( const currentQueries = useCurrentStateStore.getState().queries; useCurrentStateStore.getState().actions.setCurrentState({ - ...getCurrentState(), + ...useCurrentStateStore.getState(), queries: { ...currentQueries, [data.name]: { @@ -211,6 +262,18 @@ export const useDataQueriesStore = create( }, }, }); + + useResolveStore.getState().actions.addEntitiesToMap([{ id: data.id, name: data.name }]); + useResolveStore.getState().actions.addAppSuggestions({ + queries: { + [data.name]: { + id: data.id, + isLoading: false, + data: [], + rawData: [], + }, + }, + }); }) .catch((error) => { set((state) => ({ @@ -256,7 +319,7 @@ export const useDataQueriesStore = create( const { [queryName]: _, ...rest } = currentQueries; useCurrentStateStore.getState().actions.setCurrentState({ - ...getCurrentState(), + ...useCurrentStateStore.getState(), queries: { ...rest, [newName]: { @@ -266,7 +329,47 @@ export const useDataQueriesStore = create( }, }); }) - .finally(() => useAppDataStore.getState().actions.setIsSaving(false)); + .finally(() => { + useAppDataStore.getState().actions.setIsSaving(false); + + const dataQueries = useDataQueriesStore.getState().dataQueries; + const updatedNames = []; + + const referenceManager = useResolveStore.getState().referenceMapper; + + dataQueries.forEach((dataQuery) => { + const existingName = referenceManager.get(dataQuery.id); + + if (existingName === dataQuery.name) { + return; + } + + referenceManager.update(dataQuery.id, dataQuery.name); + + updatedNames.push({ + id: dataQuery.id, + name: existingName, + newName: dataQuery.name, + type: 'queries', + }); + }); + + const currentAppEvents = useAppDataStore.getState().events; + const appDefinition = useEditorStore.getState().appDefinition; + const currentPageId = useEditorStore.getState().currentPageId; + const components = appDefinition.pages[currentPageId].components; + const currentVersionId = useAppDataStore.getState().currentVersionId; + + handleReferenceTransactions( + components, + dataQueries, + currentAppEvents, + appDefinition, + currentPageId, + currentVersionId, + updatedNames + ); + }); }, changeDataQuery: (newDataSource) => { const { selectedQuery } = useQueryPanelStore.getState(); @@ -328,6 +431,18 @@ export const useDataQueriesStore = create( })); actions.setSelectedQuery(data.id, { ...data, data_source_id: queryToClone.data_source_id }); + useResolveStore.getState().actions.addEntitiesToMap([{ id: data.id, name: data.name }]); + useResolveStore.getState().actions.addAppSuggestions({ + queries: { + [data.name]: { + id: data.id, + isLoading: false, + data: [], + rawData: [], + }, + }, + }); + const dataQueryEvents = useAppDataStore .getState() .events?.filter((event) => event.target === 'data_query' && event.sourceId === queryToClone.id); @@ -358,10 +473,12 @@ export const useDataQueriesStore = create( set({ queuedActions: { ...get().queuedActions, saveData: newValues } }); return; } + const entityIdMappedOptions = useResolveStore.getState().actions.findReferences(newValues?.options); + useAppDataStore.getState().actions.setIsSaving(true); set({ isUpdatingQueryInProcess: true }); dataqueryService - .update(newValues?.id, newValues?.name, newValues?.options) + .update(newValues?.id, newValues?.name, entityIdMappedOptions) .then((data) => { localStorage.removeItem('transformation'); set((state) => ({ @@ -391,6 +508,72 @@ export const useDataQueriesStore = create( }; }); }, + + updateBulkQueryOptions: (queryOptions, appVersionId) => { + useAppDataStore.getState().actions.setIsSaving(true); + set({ isUpdatingQueryInProcess: true }); + + dataqueryService + .bulkUpdateQueryOptions(queryOptions, appVersionId) + .then((data) => { + localStorage.removeItem('transformation'); + const { actions, selectedQuery } = useQueryPanelStore.getState(); + + const prevSelectedQuery = selectedQuery; + actions.setSelectedQuery(null); + + set((state) => ({ + dataQueries: state.dataQueries.map((query) => { + const updatedQuery = data.find((q) => q.id === query.id); + + if (updatedQuery) { + return { ...query, options: updatedQuery.options, updated_at: updatedQuery.updated_at }; + } + return query; + }), + + isUpdatingQueryInProcess: false, + })); + + if (prevSelectedQuery?.id) { + actions.setSelectedQuery(prevSelectedQuery.id); + } + }) + + .catch(() => { + set({ isUpdatingQueryInProcess: false }); + }) + .finally(() => { + useAppDataStore.getState().actions.setIsSaving(false); + }); + }, + // clearQueuedQueriesForRunOnAppLoad: () => { + // set({ queuedQueriesForRunOnAppLoad: [] }); + // }, + updateQueryOptionsState: (queryOptionsList) => { + set({ isUpdatingQueryInProcess: true }); + const { actions, selectedQuery } = useQueryPanelStore.getState(); + + const prevSelectedQuery = selectedQuery; + actions.setSelectedQuery(null); + + set((state) => ({ + dataQueries: state.dataQueries.map((query) => { + const updatedQuery = queryOptionsList.find((q) => q.id === query.id); + + if (updatedQuery) { + return { ...query, options: updatedQuery.options }; + } + return query; + }), + + isUpdatingQueryInProcess: false, + })); + + if (prevSelectedQuery?.id) { + actions.setSelectedQuery(prevSelectedQuery.id); + } + }, }, }), { name: 'Data Queries Store' } diff --git a/frontend/src/_stores/editorStore.js b/frontend/src/_stores/editorStore.js index f5cd361583..be5eedddb9 100644 --- a/frontend/src/_stores/editorStore.js +++ b/frontend/src/_stores/editorStore.js @@ -1,5 +1,7 @@ +import _ from 'lodash'; import { create } from './utils'; import { v4 as uuid } from 'uuid'; +import { useResolveStore } from './resolverStore'; const STORE_NAME = 'Editor'; export const EMPTY_ARRAY = []; @@ -22,11 +24,6 @@ const initialState = { selectedComponents: [], isEditorActive: false, selectedComponent: null, - scrollOptions: { - container: null, - throttleTime: 0, - threshold: 0, - }, canUndo: false, canRedo: false, currentVersion: {}, @@ -40,7 +37,11 @@ const initialState = { queryConfirmationList: [], currentPageId: null, currentSessionId: uuid(), + componentsNeedsUpdateOnNextRender: [], appMode: 'auto', + editorCanvasWidth: 1092, + canvasBackground: {}, + pageSwitchInProgress: false, }; export const useEditorStore = create( @@ -53,17 +54,35 @@ export const useEditorStore = create( type: ACTIONS.SET_HOVERED_COMPONENT, showComments, }), + setCanvasWidth: (editorCanvasWidth) => set({ editorCanvasWidth }), + setPageProgress: (bool) => set({ pageSwitchInProgress: bool }), toggleComments: () => set({ showComments: !get().showComments }, false, { type: ACTIONS.TOGGLE_COMMENTS, }), - toggleCurrentLayout: (currentLayout) => + toggleCurrentLayout: (currentLayout) => { + set({ selectedComponents: EMPTY_ARRAY }); set({ currentLayout }, false, { type: ACTIONS.TOGGLE_CURRENT_LAYOUT, currentLayout, - }), + }); + }, setIsEditorActive: (isEditorActive) => set(() => ({ isEditorActive })), updateEditorState: (state) => set((prev) => ({ ...prev, ...state })), + updateCurrentStateDiff: (currentStateDiff) => set(() => ({ currentStateDiff })), + updateComponentsNeedsUpdateOnNextRender: (componentsNeedsUpdateOnNextRender) => { + set(() => ({ componentsNeedsUpdateOnNextRender })); + }, + flushComponentsNeedsUpdateOnNextRender: (toRemoveIds = []) => { + const currentComponents = get().componentsNeedsUpdateOnNextRender; + + if (currentComponents.length === 0 || toRemoveIds.length === 0) return; + + const updatedComponents = currentComponents.filter((item) => !toRemoveIds.includes(item)); + + set(() => ({ componentsNeedsUpdateOnNextRender: updatedComponents })); + }, + updateQueryConfirmationList: (queryConfirmationList) => set({ queryConfirmationList }), setHoveredComponent: (hoveredComponent) => set({ hoveredComponent }, false, { @@ -88,8 +107,13 @@ export const useEditorStore = create( selectedComponents: newSelectedComponents, }); }, + //TODO: Refactor multiple component selection with a single function + selectMultipleComponents: (selectedComponents) => { + set({ selectedComponents: selectedComponents }); + }, setCurrentPageId: (currentPageId) => set({ currentPageId }), setAppMode: (appMode) => set({ appMode }), + setCanvasBackground: (canvasBackground) => set({ canvasBackground }), }, }), { name: STORE_NAME } @@ -97,3 +121,14 @@ export const useEditorStore = create( export const useEditorActions = () => useEditorStore((state) => state.actions); export const useEditorState = () => useEditorStore((state) => state); + +export const getComponentsToRenders = () => { + return useEditorStore.getState().componentsNeedsUpdateOnNextRender; +}; + +export const flushComponentsToRender = (componentIds = []) => { + if (!componentIds.length) return; + + useEditorStore.getState().actions.flushComponentsNeedsUpdateOnNextRender(componentIds); + useResolveStore.getState().actions.flushLastUpdatedRefs(); +}; diff --git a/frontend/src/_stores/environmentsAndVersionsStore.js b/frontend/src/_stores/environmentsAndVersionsStore.js new file mode 100644 index 0000000000..56af559edc --- /dev/null +++ b/frontend/src/_stores/environmentsAndVersionsStore.js @@ -0,0 +1,148 @@ +import create from 'zustand'; +import { zustandDevTools } from './utils'; +import { appEnvironmentService, appVersionService } from '@/_services'; + +const initialState = { + selectedVersion: null, + selectedEnvironment: null, + appVersionEnvironment: null, + versionsPromotedToEnvironment: [], + environments: [], + shouldRenderPromoteButton: false, + shouldRenderReleaseButton: false, + initializedEnvironmentDropdown: false, + environmentsLazyLoaded: false, + appVersionsLazyLoaded: false, +}; + +export const useEnvironmentsAndVersionsStore = create( + zustandDevTools( + (set, get) => ({ + ...initialState, + actions: { + init: async (editingVersionId) => { + try { + const response = await appEnvironmentService.init(editingVersionId); + set((state) => ({ + ...state, + selectedEnvironment: response.editorEnvironment, + selectedVersion: response.editorVersion, + appVersionEnvironment: response.appVersionEnvironment, + shouldRenderPromoteButton: response.shouldRenderPromoteButton, + shouldRenderReleaseButton: response.shouldRenderReleaseButton, + environments: response.environments, + versionsPromotedToEnvironment: [response.editorVersion], + })); + } catch (error) { + console.error('Error while initializing the environment dropdown', error); + } + }, + setEnvironmentDropdownStatus: (state) => set({ initializedEnvironmentDropdown: state }), + lazyLoadAppVersions: async (appId) => { + try { + const response = await appEnvironmentService.getVersionsByEnvironment(appId, get().selectedEnvironment.id); + set((state) => ({ + ...state, + versionsPromotedToEnvironment: response.appVersions, + appVersionsLazyLoaded: true, + })); + } catch (error) { + console.error('Error while getting the versions', error); + } + }, + setSelectedVersion: (selectedVersion) => set({ selectedVersion }), + setEnvironmentAndVersionsInitStatus: (state) => set({ completedEnvironmentAndVersionsInit: state }), + createNewVersionAction: async (appId, versionName, selectedVersionId, onSuccess, onFailure) => { + try { + const newVersion = await appVersionService.create(appId, versionName, selectedVersionId); + const editorVersion = { + id: newVersion.id, + name: newVersion.name, + current_environment_id: newVersion.current_environment_id, + }; + set((state) => ({ + ...state, + selectedVersion: editorVersion, + versionsPromotedToEnvironment: [editorVersion], + appVersionsLazyLoaded: false, + })); + onSuccess(newVersion); + } catch (error) { + onFailure(error); + } + }, + updateVersionNameAction: async (appId, versionId, versionName, onSuccess, onFailure) => { + try { + await appVersionService.save(appId, versionId, { name: versionName }); + const selectedVersion = get().selectedVersion; + selectedVersion.name = versionName; + set((state) => ({ + ...state, + selectedVersion, + versionsPromotedToEnvironment: [selectedVersion], + appVersionsLazyLoaded: false, + })); + onSuccess(); + } catch (error) { + onFailure(error); + } + }, + deleteVersionAction: async (appId, versionId, onSuccess, onFailure) => { + try { + await appVersionService.del(appId, versionId); + const isCurrentVersion = get().selectedVersion.id === versionId; + let optionsToUpdate = { + appVersionsLazyLoaded: false, + }; + if (isCurrentVersion) { + /* User is deleted the editor version (currently selected). */ + const response = await appEnvironmentService.postVersionDeleteAction({ + appId, + editorVersionId: versionId, + deletedVersionId: versionId, + }); + const selectedVersion = response.editorVersion; + optionsToUpdate = { + ...optionsToUpdate, + selectedVersion, + selectedEnvironment: response.editorEnvironment, + appVersionEnvironment: response.appVersionEnvironment, + shouldRenderPromoteButton: response.shouldRenderPromoteButton, + shouldRenderReleaseButton: response.shouldRenderReleaseButton, + }; + } + set((state) => ({ + ...state, + ...optionsToUpdate, + })); + let newVersionDef; + const newEditorVersion = optionsToUpdate.selectedVersion; + if (newEditorVersion) { + newVersionDef = await appVersionService.getAppVersionData(appId, newEditorVersion.id); + } + onSuccess(newVersionDef); + } catch (error) { + onFailure(error); + } + }, + changeEditorVersionAction: async (appId, versionId, onSuccess, onFailure) => { + try { + const data = await appVersionService.getAppVersionData(appId, versionId); + const selectedVersion = { + id: data.editing_version.id, + name: data.editing_version.name, + current_environment_id: data.editing_version.currentEnvironmentId, + }; + set((state) => ({ ...state, selectedVersion })); + onSuccess(data); + } catch (error) { + onFailure(error); + } + }, + }, + }), + { name: 'App Version Manager Store' } + ) +); + +export const useEnvironmentsAndVersionsActions = () => useEnvironmentsAndVersionsStore((state) => state.actions); diff --git a/frontend/src/_stores/gridStore.js b/frontend/src/_stores/gridStore.js new file mode 100644 index 0000000000..919d09a784 --- /dev/null +++ b/frontend/src/_stores/gridStore.js @@ -0,0 +1,66 @@ +import { create, zustandDevTools } from './utils'; +import { shallow } from 'zustand/shallow'; + +const initialState = { + draggedElement: null, + activeGrid: null, + noOfGrid: 43, + draggedSubContainer: false, + resizingComponentId: null, + draggingComponentId: null, + dragTarget: null, + isGroupHandleHoverd: false, + idGroupDragged: false, + openModalWidgetId: null, + subContainerWidths: {}, +}; + +export const useGridStore = create( + zustandDevTools( + (set) => ({ + ...initialState, + actions: { + setActiveGrid: (gridId) => set({ activeGrid: gridId }), + setNoOfGrid: (noOfGrid) => set({ noOfGrid }), + setDraggedSubContainer: (draggedSubContainer) => set({ draggedSubContainer }), + setResizingComponentId: (id) => set({ resizingComponentId: id }), + setDraggingComponentId: (id) => set({ draggingComponentId: id }), + setDragTarget: (dragTarget) => set({ dragTarget }), + setIsGroupHandleHoverd: (isGroupHandleHoverd) => set({ isGroupHandleHoverd }), + setIdGroupDragged: (idGroupDragged) => set({ idGroupDragged }), + setOpenModalWidgetId: (openModalWidgetId) => set({ openModalWidgetId }), + setSubContainerWidths: (id, width) => + set((state) => ({ subContainerWidths: { ...state.subContainerWidths, [id]: width } })), + }, + }), + { name: 'Grid Store' } + ) +); + +useGridStore.subscribe(({ draggingComponentId }) => { + if (draggingComponentId) { + document.querySelector(`.dragged-movable-control-box`)?.classList?.remove('dragged-movable-control-box'); + document.querySelector(`[target-id='${draggingComponentId}']`).classList.add('dragged-movable-control-box'); + } else if (document.querySelector(`.dragged-movable-control-box`)) { + document.querySelector(`.dragged-movable-control-box`)?.classList.remove('dragged-movable-control-box'); + } +}); + +// useEditorStore.subscribe(({ hoveredComponent }) => { +// console.log('hoveredComponent--', hoveredComponent); +// if (hoveredComponent) { +// document.querySelector(`[data-hovered-control]`)?.removeAttribute('data-hovered-control'); +// document.querySelector(`[target-id='${hoveredComponent}']`)?.setAttribute('data-hovered-control', true); +// } else if (document.querySelector(`[data-hovered-control]`)) { +// document.querySelector(`[data-hovered-control]`)?.removeAttribute('data-hovered-control'); +// } +// }); + +export const useActiveGrid = () => useGridStore((state) => state.activeGrid, shallow); +export const useNoOfGrid = () => useGridStore((state) => state.noOfGrid, shallow); +export const useDraggedSubContainer = () => useGridStore((state) => state.draggedSubContainer, shallow); +export const useGridStoreActions = () => useGridStore((state) => state.actions, shallow); +export const useDragTarget = () => useGridStore((state) => state.dragTarget, shallow); +export const useResizingComponentId = () => useGridStore((state) => state.resizingComponentId, shallow); +export const useIsGroupHandleHoverd = () => useGridStore((state) => state.isGroupHandleHoverd, shallow); +export const useOpenModalWidgetId = () => useGridStore((state) => state.openModalWidgetId, shallow); diff --git a/frontend/src/_stores/handleReferenceTransactions.js b/frontend/src/_stores/handleReferenceTransactions.js new file mode 100644 index 0000000000..46f10abb06 --- /dev/null +++ b/frontend/src/_stores/handleReferenceTransactions.js @@ -0,0 +1,169 @@ +import _ from 'lodash'; +import { useAppDataStore } from './appDataStore'; +import { useEditorStore } from './editorStore'; +import { useDataQueriesStore } from './dataQueriesStore'; +// eslint-disable-next-line import/no-unresolved +import { diff } from 'deep-object-diff'; +import { useResolverStoreActions } from './resolverStore'; + +//* using binary search to find and replace it with new hint (re-named entities) from the currentSuggestions array +function binarySearchUpdate(array, obj) { + const { old, newHint } = obj; + let start = 0; + let end = array.length - 1; + while (start <= end) { + let middle = Math.floor((start + end) / 2); + if (array[middle].hint === old) { + array[middle].hint = newHint; + return; + } else if (array[middle].hint < old) { + start = middle + 1; + } else { + end = middle - 1; + } + } +} + +export function removeAppSuggestions(suggestionsArray, deleteAndReplaceArray) { + const sortedSuggestionsArray = JSON.parse( + JSON.stringify(suggestionsArray.sort((a, b) => a.hint.localeCompare(b.hint))) + ); + + deleteAndReplaceArray.forEach((suggestion) => { + binarySearchUpdate(sortedSuggestionsArray, suggestion); + }); + + return sortedSuggestionsArray; +} + +//* finding references and update within deeply nested objects using Depth-First Search (DFS) traversal +export function dfs(node, oldRef, newRef) { + if (typeof node === 'object') { + for (let key in node) { + const value = node[key]; + if (typeof value === 'string' && value.includes('{{') && value.includes('}}')) { + const referenceExists = value.includes(oldRef); + + if (referenceExists) { + node[key] = value.replace(oldRef, newRef); + } + } else if (typeof value === 'object') { + dfs(value, oldRef, newRef); + } + } + } + + return node; +} + +export const handleReferenceTransactions = ( + components, + dataQueries, + currentAppEvents, + appDefinition, + currentPageId, + currentVersionId, + updatedEntityNames = [] +) => { + // Start Transaction + const transactionSnapshot = { + components: JSON.parse(JSON.stringify(components)), + dataQueries: JSON.parse(JSON.stringify(dataQueries)), + events: JSON.parse(JSON.stringify(currentAppEvents)), + appDefinition: JSON.parse(JSON.stringify(appDefinition)), + }; + + try { + if (updatedEntityNames.length === 0) return; + + // Update Operations + const _components = JSON.parse(JSON.stringify(components)); + const _dataQueries = JSON.parse(JSON.stringify(dataQueries)); + const events = JSON.parse(JSON.stringify(currentAppEvents)); + updatedEntityNames.forEach((entity) => { + Object.entries(_components).forEach(([id, component]) => { + let componentDefinition = component.component.definition; + componentDefinition = dfs(componentDefinition, entity.name, entity.newName); + component.component.definition = componentDefinition; + }); + + _dataQueries.forEach((query) => { + query.options = dfs(query.options, entity.name, entity.newName); + }); + + events.forEach((event) => { + event.event = dfs(event.event, entity.name, entity.newName); + }); + }); + + // Commit Transaction + updatedEntityNames.forEach((entity) => { + useResolverStoreActions().handleUpdatesOnReferencingEnities(entity); + }); + + const newAppDefinition = JSON.parse(JSON.stringify(appDefinition)); + const componentsFromAppDef = newAppDefinition.pages[currentPageId].components; + + Object.entries(_components).forEach(([id, component]) => { + componentsFromAppDef[id].component.definition = component.component.definition; + }); + newAppDefinition.pages[currentPageId].components = componentsFromAppDef; + + const diffPatches = diff(appDefinition, newAppDefinition); + + const queriesToUpdate = _.differenceWith(_dataQueries, dataQueries, _.isEqual).map((q) => { + return { + id: q.id, + options: q.options, + }; + }); + + if (diffPatches) { + useAppDataStore.getState().actions.updateState({ + appDiffOptions: { componentDefinitionChanged: true, entityReferenceUpdated: true }, + appDefinitionDiff: diffPatches, + }); + + useEditorStore.getState().actions.updateEditorState({ + appDefinition: newAppDefinition, + isUpdatingEditorStateInProcess: true, + }); + } + + if (queriesToUpdate.length > 0) { + useDataQueriesStore.getState().actions.updateQueryOptionsState(queriesToUpdate); + } + + const eventsToUpdate = _.differenceWith(events, currentAppEvents, _.isEqual).map((event) => { + return { + event_id: event.id, + diff: event, + }; + }); + + if (eventsToUpdate.length > 0) { + useAppDataStore.getState().actions.updateAppVersionEventHandlers(eventsToUpdate, 'update'); + } + } catch (error) { + /** + * !Revert to the transaction snapshot + * Rollback any changes made during the transaction + */ + + console.error('Transaction failed:', error); + + useEditorStore.getState().actions.updateEditorState({ + appDefinition: transactionSnapshot.appDefinition, + isUpdatingEditorStateInProcess: false, + }); + + useAppDataStore.getState().actions.updateState({ + appDiffOptions: { componentDefinitionChanged: false }, + appDefinitionDiff: {}, + }); + + useDataQueriesStore.getState().actions.updateBulkQueryOptions(transactionSnapshot.dataQueries, currentVersionId); + + useAppDataStore.getState().actions.updateAppVersionEventHandlers(transactionSnapshot.events, 'update'); + } +}; diff --git a/frontend/src/_stores/queryPanelStore.js b/frontend/src/_stores/queryPanelStore.js index cde450174d..9a6ecabef0 100644 --- a/frontend/src/_stores/queryPanelStore.js +++ b/frontend/src/_stores/queryPanelStore.js @@ -1,5 +1,5 @@ import { create, zustandDevTools } from './utils'; - +import { shallow } from 'zustand/shallow'; import { useDataQueriesStore } from '@/_stores/dataQueriesStore'; const queryManagerPreferences = JSON.parse(localStorage.getItem('queryManagerPreferences')) ?? {}; const initialState = { diff --git a/frontend/src/_stores/resolverStore.js b/frontend/src/_stores/resolverStore.js new file mode 100644 index 0000000000..14f84c615e --- /dev/null +++ b/frontend/src/_stores/resolverStore.js @@ -0,0 +1,338 @@ +import { create } from 'zustand'; +import { createReferencesLookup, findAllEntityReferences, findEntityId } from './utils'; +import { createJavaScriptSuggestions } from '../Editor/CodeEditor/utils'; +import { v4 as uuid } from 'uuid'; +import _ from 'lodash'; +import { dfs, removeAppSuggestions } from './handleReferenceTransactions'; + +class ReferencesBiMap { + constructor() { + this._map = new Map(); + this._reverseMap = new Map(); + } + + set(key, value) { + const lookupId = uuid(); + + this._map.set(key, lookupId); + this._reverseMap.set(lookupId, value); + } + + has(key) { + return this._map.has(key); + } + + get(key) { + const lookupid = this._map.get(key); + + return this._reverseMap.get(lookupid); + } + + reverseGet(key) { + return this._reverseMap.get(key); + } + + update(id, value) { + const lookUpId = this._map.get(id); + this._reverseMap.set(lookUpId, value); + } + + delete(key) { + const value = this._map.get(key); + this._map.delete(key); + this._reverseMap.delete(value); + } + + getAll = () => { + return Array.from(this._map.values()); + }; +} + +const initialState = { + storeReady: false, + suggestions: { + appHints: [], + jsHints: [], + }, + lookupTable: { + hints: {}, + resolvedRefs: {}, + }, + lastUpdatedRefs: [], + referenceMapper: new ReferencesBiMap(), + isPageSwitched: false, +}; + +export const useResolveStore = create( + (set, get) => ({ + ...initialState, + actions: { + updateStoreState: (state) => { + set(() => ({ ...state, storeReady: true })); + }, + resetStore: () => { + set(() => initialState); + }, + pageSwitched: (bool) => set(() => ({ isPageSwitched: bool })), + updateAppSuggestions: (refState) => { + const { suggestionList, hintsMap, resolvedRefs } = createReferencesLookup(refState, false, true); + + set(() => ({ + suggestions: { ...get().suggestions, appHints: suggestionList }, + lookupTable: { ...get().lookupTable, hints: hintsMap, resolvedRefs }, + })); + }, + + flushLastUpdatedRefs: () => { + set(() => ({ lastUpdatedRefs: [] })); + }, + getLastUpdatedRefs: () => { + return get().lastUpdatedRefs; + }, + //for queries references used in component definitons + updateLastUpdatedRefs: (updatedRefs) => { + set(() => ({ lastUpdatedRefs: updatedRefs })); + }, + addAppSuggestions: (partialRefState) => { + if (Object.keys(partialRefState).length === 0) return; + + const { suggestionList, hintsMap, resolvedRefs } = createReferencesLookup(partialRefState); + + const _hintsMap = get().lookupTable.hints; + const resolvedRefsMap = get().lookupTable.resolvedRefs; + + let lookupHintsMap, lookupResolvedRefs; + + if (_hintsMap.size > 0) { + lookupHintsMap = new Map([..._hintsMap]); + } else { + lookupHintsMap = new Map(); + } + + if (resolvedRefsMap.size > 0) { + lookupResolvedRefs = new Map([...resolvedRefsMap]); + } else { + lookupResolvedRefs = new Map(); + } + + const newUpdatedrefs = []; + + hintsMap.forEach((value, key) => { + const alreadyExists = lookupHintsMap.has(key); + + if (!alreadyExists) { + lookupHintsMap.set(key, value); + } else { + const existingLookupId = lookupHintsMap.get(key); + const newResolvedRef = resolvedRefs.get(value); + + resolvedRefs.delete(value); + resolvedRefs.set(existingLookupId, newResolvedRef); + newUpdatedrefs.push(key); + } + }); + + resolvedRefs.forEach((value, key) => { + lookupResolvedRefs.set(key, value); + }); + + const uniqueAppHints = suggestionList.filter((hint) => { + return !get().suggestions.appHints.find((h) => h.hint === hint.hint); + }); + + set(() => ({ + suggestions: { + ...get().suggestions, + appHints: [...get().suggestions.appHints, ...uniqueAppHints], + }, + lookupTable: { + ...get().lookupTable, + hints: lookupHintsMap, + resolvedRefs: lookupResolvedRefs, + }, + lastUpdatedRefs: newUpdatedrefs, + })); + }, + + removeAppSuggestions: (suggestionsArray) => { + if (suggestionsArray?.length === 0) return new Promise((resolve) => resolve({ status: '' })); + + const lookupHintsMap = new Map([...get().lookupTable.hints]); + const lookupResolvedRefs = new Map([...get().lookupTable.resolvedRefs]); + const currentSuggestions = get().suggestions.appHints; + + suggestionsArray?.forEach((suggestion) => { + const index = currentSuggestions.findIndex((s) => s.hint === suggestion); + + if (index === -1) return; + + currentSuggestions.splice(index, 1); + const lookUpId = lookupHintsMap.get(suggestion); + + lookupHintsMap.delete(suggestion); + lookupResolvedRefs.delete(lookUpId); + }); + + return new Promise((resolve) => { + set(() => ({ + suggestions: { + ...get().suggestions, + appHints: currentSuggestions, + }, + + lookupTable: { + ...get().lookupTable, + hints: lookupHintsMap, + resolvedRefs: lookupResolvedRefs, + }, + })); + + resolve({ status: 'ok' }); + }); + }, + + updateResolvedRefsOfHints: (resolvedRefs = []) => { + const lookupResolvedRefs = new Map([...get().lookupTable.resolvedRefs]); + const hintsMap = new Map([...get().lookupTable.hints]); + + const updatedList = []; + + resolvedRefs.forEach((ref) => { + if ( + !ref.hint || + (typeof ref.newRef === 'string' && ref.newRef !== '' && !ref.newRef) || + !hintsMap.has(ref.hint) + ) + return; + + const refId = hintsMap.get(ref.hint); + const currentRef = lookupResolvedRefs.get(refId); + + if (currentRef !== ref.newRef) { + lookupResolvedRefs.set(refId, ref.newRef); + updatedList.push(ref.hint); + } + }); + + if (updatedList.length > 0) { + set(() => ({ + lookupTable: { + ...get().lookupTable, + resolvedRefs: lookupResolvedRefs, + }, + lastUpdatedRefs: updatedList, + })); + } + }, + + updateJSHints: () => { + const hints = createJavaScriptSuggestions(); + set(() => ({ suggestions: { ...get().suggestions, jsHints: hints } })); + }, + + addEntitiesToMap: (entities) => { + if (!Array.isArray(entities) || entities.length === 0) return; + + const { referenceMapper } = get(); + + entities.forEach((entity) => { + if (entity?.id && !referenceMapper.has(entity.id)) { + referenceMapper.set(entity.id, entity.name); + } + }); + }, + + removeEntitiesFromMap: (entitiesIds) => { + const { referenceMapper } = get(); + + entitiesIds.forEach((entityId) => { + referenceMapper.delete(entityId); + }); + }, + + getReferenceMapper: () => { + return get().referenceMapper; + }, + + findReferences: (obj) => { + const entityNameReferences = findAllEntityReferences(obj, []); + + if (entityNameReferences.length === 0) return obj; + + function findEntityIdsFromRefNames(refs) { + const entityMap = {}; + const manager = get().referenceMapper; + + refs.forEach((entityName) => { + if (!entityName) return; + + entityMap[entityName] = findEntityId(entityName, manager._map, manager._reverseMap); + }); + + return entityMap; + } + + const entityRefs = findEntityIdsFromRefNames(entityNameReferences); + + if (!_.isEmpty(entityRefs)) { + let diffObj = _.cloneDeep(obj); + + for (const [key, value] of Object.entries(entityRefs)) { + diffObj = dfs(diffObj, key, value); + } + + return diffObj; + } + + return obj; + }, + handleUpdatesOnReferencingEnities: (updatedEntityName) => { + if (!updatedEntityName) return; + const referencesSubstring = updatedEntityName.type + '.' + updatedEntityName.name; + const allRefsInHints = []; + const toDeleteAppHints = []; + const lookupHintsMap = new Map(_.cloneDeep([...get().lookupTable.hints])); + const currentSuggestions = get().suggestions.appHints; + + lookupHintsMap.forEach((value, key) => { + if (key.includes(referencesSubstring)) { + const newReference = key.replace( + referencesSubstring, + updatedEntityName.type + '.' + updatedEntityName.newName + ); + + allRefsInHints.push({ refKey: key, refId: value, newRefKey: newReference }); + toDeleteAppHints.push({ old: key, newHint: newReference }); + } + }); + + allRefsInHints.forEach((ref) => { + if (!lookupHintsMap.has(ref.refKey)) { + return; + } + + lookupHintsMap.delete(ref.refKey); + lookupHintsMap.set(ref.newRefKey, ref.refId); + }); + + const newAppHints = removeAppSuggestions(currentSuggestions, toDeleteAppHints); + + set(() => { + return { + suggestions: { + ...get().suggestions, + appHints: newAppHints, + }, + lookupTable: { + ...get().lookupTable, + hints: lookupHintsMap, + }, + }; + }); + }, + }, + }), + { name: 'Resolver Store' } +); + +export const useResolverStoreActions = () => useResolveStore.getState().actions; diff --git a/frontend/src/_stores/utils.js b/frontend/src/_stores/utils.js index 0a6ec6d10f..53aa4c0052 100644 --- a/frontend/src/_stores/utils.js +++ b/frontend/src/_stores/utils.js @@ -207,6 +207,9 @@ const computePageUpdate = (appDiff, currentPageId, opts) => { } else if (opts.includes('pageDefinitionChanged')) { updateDiff = appDiff?.pages[currentPageId]; + //remove invalid diffs that are added to pageDiff + delete updateDiff.components; + type = updateType.pageDefinitionChanged; if (opts.includes('addNewPage')) { @@ -330,67 +333,144 @@ function toRemoveExposedvariablesFromComponentDiff(object) { return copy; } -export function isPDFSupported() { - const browser = getBrowserUserAgent(); - - if (!browser) { - return true; +export function createReferencesLookup(refState, forQueryParams = false, initalLoad = false) { + if (forQueryParams && _.isEmpty(refState['parameters'])) { + return { suggestionList: [] }; } - const isChrome = browser.name === 'Chrome' && browser.major >= 92; - const isEdge = browser.name === 'Edge' && browser.major >= 92; - const isSafari = browser.name === 'Safari' && browser.major >= 15 && browser.minor >= 4; // Handle minor version check for Safari - const isFirefox = browser.name === 'Firefox' && browser.major >= 90; + const getCurrentNodeType = (node) => Object.prototype.toString.call(node).slice(8, -1); - console.log('browser--', browser, isChrome || isEdge || isSafari || isFirefox); + const state = _.cloneDeep(refState); + const queries = forQueryParams ? {} : state['queries']; + const actions = initalLoad + ? [ + 'runQuery', + 'setVariable', + 'unSetVariable', + 'showAlert', + 'logout', + 'showModal', + 'closeModal', + 'setLocalStorage', + 'copyToClipboard', + 'goToApp', + 'generateFile', + 'setPageVariable', + 'unsetPageVariable', + 'switchPage', + ] + : []; - return isChrome || isEdge || isSafari || isFirefox; -} + if (!forQueryParams) { + // eslint-disable-next-line no-unused-vars + _.forIn(queries, (query, key) => { + if (!query.hasOwnProperty('run')) { + query.run = true; + } + }); + } -export function getBrowserUserAgent(userAgent) { - var regexps = { - Chrome: [/Chrome\/(\S+)/], - Firefox: [/Firefox\/(\S+)/], - MSIE: [/MSIE (\S+);/], - Opera: [/Opera\/.*?Version\/(\S+)/ /* Opera 10 */, /Opera\/(\S+)/ /* Opera 9 and older */], - Safari: [/Version\/(\S+).*?Safari\//], - }, - re, - m, - browser, - version; + const currentState = !forQueryParams && initalLoad ? _.merge(state, { queries }) : state; + const suggestionList = []; + const map = new Map(); - if (userAgent === undefined) userAgent = navigator.userAgent; + const hintsMap = new Map(); + const resolvedRefs = new Map(); + const resolvedRefTypes = new Map(); - for (browser in regexps) - while ((re = regexps[browser].shift())) - if ((m = userAgent.match(re))) { - version = m[1].match(new RegExp('[^.]+(?:.[^.]+){0,1}'))[0]; - const { major, minor } = extractVersion(version); - return { - name: browser, - major, - minor, - }; + const buildMap = (data, path = '') => { + const keys = Object.keys(data); + keys.forEach((key, index) => { + const uniqueId = _.uniqueId(); + const value = data[key]; + const _type = Object.prototype.toString.call(value).slice(8, -1); + const prevType = map.get(path)?.type; + + let newPath = ''; + if (path === '') { + newPath = key; + } else if (prevType === 'Array') { + newPath = `${path}[${index}]`; + } else { + newPath = `${path}.${key}`; } - return null; -} + if (_type === 'Object') { + map.set(newPath, { type: _type }); + buildMap(value, newPath); + } + if (_type === 'Array') { + map.set(newPath, { type: _type }); -function extractVersion(versionStr) { - // Split the string by "." - const parts = versionStr.split('.'); + if (path.startsWith('queries') && key === 'data' && value.length > 30000) { + // do nothing + } else { + buildMap(value, newPath); + } + } else { + map.set(newPath, { type: _type }); + } - // Check for valid input - if (parts.length === 0 || parts.some((part) => isNaN(part))) { - return { major: null, minor: null }; + // Populate hints and refs + + hintsMap.set(newPath, uniqueId); + resolvedRefs.set(uniqueId, value); + const resolveRefType = getCurrentNodeType(value); + resolvedRefTypes.set(uniqueId, resolveRefType); + }); + }; + + buildMap(currentState, ''); + + map.forEach((__, key) => { + if (key.endsWith('run') && key.startsWith('queries')) { + return suggestionList.push({ hint: `${key}()`, type: 'Function' }); + } + return suggestionList.push({ hint: key, type: resolvedRefTypes.get(hintsMap.get(key)) }); + }); + if (!forQueryParams && initalLoad) { + actions.forEach((action) => { + suggestionList.push({ hint: `actions.${action}()`, type: 'method' }); + }); } - // Extract major version - const major = parseInt(parts[0], 10); - - // Handle minor version (default to 0) - const minor = parts.length > 1 ? parseInt(parts[1], 10) : 0; - - return { major, minor }; + return { suggestionList, hintsMap, resolvedRefs }; +} + +export function findAllEntityReferences(node, allRefs) { + if (typeof node === 'object') { + for (let key in node) { + const value = node[key]; + if ( + typeof value === 'string' && + value.includes('{{') && + value.includes('}}') && + (value.startsWith('{{components') || value.startsWith('{{queries')) + ) { + const referenceExists = value; + + if (referenceExists) { + const ref = value.replace('{{', '').replace('}}', ''); + + const entityName = ref.split('.')[1]; + + allRefs.push(entityName); + } + } else if (typeof value === 'object') { + findAllEntityReferences(value, allRefs); + } + } + } + return allRefs; +} + +export function findEntityId(entityName, map, reverseMap) { + for (const [key, value] of map.entries()) { + const lookupid = value; + const reverseValue = reverseMap.get(lookupid); + + if (reverseValue === entityName) { + return key; + } + } } diff --git a/frontend/src/_styles/components.scss b/frontend/src/_styles/components.scss index e0553cf378..df518ec0b2 100644 --- a/frontend/src/_styles/components.scss +++ b/frontend/src/_styles/components.scss @@ -376,6 +376,12 @@ $btn-dark-color: #FFFFFF; border: none; } +#inspector-tabpane-properties .code-hinter textarea { + border: 0; + overflow: hidden; + max-height: 22.5px; +} + // Style for Chart component .widget-chart{ .js-plotly-plot{ diff --git a/frontend/src/_styles/queryManager.scss b/frontend/src/_styles/queryManager.scss index 5e5f9781ba..92312f8fd3 100644 --- a/frontend/src/_styles/queryManager.scss +++ b/frontend/src/_styles/queryManager.scss @@ -27,7 +27,6 @@ $border-radius: 4px; } .card-header { - // background-color: var(--slate3); height: 28px; border-radius: 4px; color: var(--slate11); @@ -534,7 +533,7 @@ $border-radius: 4px; } .delete-field-option { - height: 34px; + height: 32.2px; flex: 0 0 28px; background: #ffffff; width: 34px; @@ -1196,6 +1195,11 @@ $border-radius: 4px; .transformation-editor { margin-top: 28px; + .transformation-container { + min-width: 470px !important; + width: 100% !important; + } + &>div.rounded-3 { padding: 0 24px !important; } @@ -1223,14 +1227,9 @@ $border-radius: 4px; } .runjs-editor { - background-color: var(--base) !important; - border: 1px solid var(--slate5); - border-radius: 6px; - .card-header { background-color: var(--slate1); color: var(--slate9); - border-radius: 6px 6px 0px 0px; } .CodeMirror-scroll, @@ -1316,6 +1315,14 @@ $border-radius: 4px; } } + .delete-field-option:hover { + svg { + path { + fill: $color-light-tomato-10 !important; + } + } + } + .add-tabs:hover { svg { path { @@ -1642,8 +1649,8 @@ $border-radius: 4px; } .copilot-section-header { - background-color: var(--slate2); - border: 1px solid var(--slate5); + background-color: var(--surfaces-surface-01); + border: 1px solid var(--borders-disabled-on-white); border-top-right-radius: 6px; border-top-left-radius: 6px; } @@ -1655,7 +1662,6 @@ $border-radius: 4px; } .query-hinter { - border: 1px solid var(--slate5); border-radius: 0px 0px 6px 6px; .cm-s-base16-light.CodeMirror, @@ -1663,4 +1669,8 @@ $border-radius: 4px; .CodeMirror-gutters { background-color: var(--slate3) !important; } + + .cm-scroller { + border-bottom-left-radius: 4px; + } } diff --git a/frontend/src/_styles/table-component.scss b/frontend/src/_styles/table-component.scss index aefe4f1988..376579d16d 100644 --- a/frontend/src/_styles/table-component.scss +++ b/frontend/src/_styles/table-component.scss @@ -1038,7 +1038,7 @@ } .table-column-popover#popover-basic-2 { - z-index: 9999 !important; + z-index: 999 !important; min-width: 280px; max-height: 85vh !important; diff --git a/frontend/src/_styles/theme.scss b/frontend/src/_styles/theme.scss index 9ef7ed739b..d36aecfe78 100644 --- a/frontend/src/_styles/theme.scss +++ b/frontend/src/_styles/theme.scss @@ -298,9 +298,6 @@ button { background-image: url('data:image/svg+xml,'); } -.accordion-button:not(.collapsed) { - // padding-bottom: 0 !important; -} .accordion-body { padding: 4px 16px 16px 16px !important; @@ -331,8 +328,6 @@ button { .resizer-select, .resizer-active { - outline: solid 1px $primary !important; - .top-right, .top-left, @@ -1614,7 +1609,6 @@ button { */ .select-search__value { position: relative; - // z-index: 1; } .select-search__value::after { @@ -2330,11 +2324,6 @@ body { color: #5890ff; } -.transformation-editor { - .CodeMirror { - min-height: 70px; - } -} .chart-data-input { .CodeMirror { @@ -2502,11 +2491,6 @@ body { margin-bottom: 0px; } -.transformation-editor { - .CodeMirror { - min-height: 220px; - } -} hr { margin: 1rem 0; @@ -2518,7 +2502,6 @@ hr { .codehinter-default-input { font-family: "Roboto", sans-serif; - // padding: 0.0475rem 0rem !important; display: block; width: 100%; font-size: 0.875rem; @@ -2586,6 +2569,14 @@ hr { } } +.multiple-components-config-handle { + position: absolute; + left: 54px; + top: -20px; + transform: translate(-50%, 0px); + width: 110px; +} + .draggable-box { .config-handle { top: -20px; @@ -2593,32 +2584,35 @@ hr { max-height: 10px; z-index: 100; min-width: 108px; + } +} - .handle-content { - cursor: move; - color: #ffffff; - background: $primary; +.draggable-box .config-handle, +.multiple-components-config-handle { + .handle-content { + cursor: move; + color: #ffffff; + background: $primary; + } + + .badge { + font-size: 9px; + border-bottom-left-radius: 0; + border-bottom-right-radius: 0; + + .delete-part { + margin-left: 10px; + float: right; } - .badge { - font-size: 9px; - border-bottom-left-radius: 0; - border-bottom-right-radius: 0; - - .delete-part { - margin-left: 10px; - float: right; - } - - .delete-part::before { - height: 12px; - display: inline-block; - width: 2px; - background-color: rgba(255, 255, 255, 0.8); - opacity: 0.5; - content: ""; - vertical-align: middle; - } + .delete-part::before { + height: 12px; + display: inline-block; + width: 2px; + background-color: rgba(255, 255, 255, 0.8); + opacity: 0.5; + content: ""; + vertical-align: middle; } } } @@ -2627,6 +2621,20 @@ hr { z-index: 3 !important; } +.config-handle:hover, +.widget-in-canvas:hover .config-handle { + visibility: visible; +} + +.config-handle { + visibility: hidden; + transition: all .15s ease-in-out; +} + +.canvas-area #modal-container .modal-component>.config-handle { + visibility: visible !important; +} + .modal-content { .config-handle { position: absolute; @@ -2690,7 +2698,6 @@ hr { .CodeMirror-placeholder { color: #9e9e9e !important; font-size: 0.7rem !important; - // margin-top: 2px !important; font-size: 12px !important; } @@ -4017,6 +4024,9 @@ input[type="text"] { .popup-btn { cursor: pointer !important; display: block; + padding: 2px; + border-radius: 4px; + border: 1px solid rgba(204, 209, 213, 1); } .preview-icons { @@ -4058,12 +4068,7 @@ input[type="text"] { } } - .portal-header { - width: 100% !important; - border-bottom: 1px solid var(--slate5, #26292B); - outline: 1px solid var(--slate5, #26292B); - background-color: var(--slate1) !important; - } + .portal-header {} .resize-handle { cursor: move; @@ -4078,6 +4083,7 @@ input[type="text"] { position: absolute; left: 50%; top: 5%; + z-index: 1400; .modal-body { width: 500px !important; @@ -4168,14 +4174,16 @@ input[type="text"] { display: flex; align-items: center; padding: 0.5rem 0.75rem; - color: #656d77; - background-color: #ffffffd9; + color: var(--text-default); + background-color: var(--surfaces-surface-01) !important; background-clip: padding-box; - border-top-left-radius: 5px !important; - border-top-right-radius: 5px !important; - width: 498px !important; - outline: 0.75px solid; + border-top-left-radius: 4px !important; + border-top-right-radius: 4px !important; + width: 100% !important; + outline: none !important; + border: 1px solid var(--borders-disabled-on-white, #E4E7EB); + margin: -1px; @include theme-border($light-theme: true, $outline: true); &.dark-mode-border { @@ -6682,9 +6690,7 @@ input.hide-input-arrows { box-shadow: 0px 12px 16px -4px rgba(16, 24, 40, 0.08), 0px 4px 6px -2px rgba(16, 24, 40, 0.03); border-radius: 4px; border: 1px solid var(--slate3) !important; - // left: 109px !important; - // top: 8px !important; - // position: absolute !important; + .card-body, @@ -6702,9 +6708,7 @@ input.hide-input-arrows { box-shadow: 0px 12px 16px -4px rgba(16, 24, 40, 0.08), 0px 4px 6px -2px rgba(16, 24, 40, 0.03); border-radius: 4px; border: 1px solid var(--slate3) !important; - // left: 193px !important; - // top: 10px !important; - // position: absolute !important; + .card-body, @@ -8223,7 +8227,6 @@ tbody { height: calc(100vh - 64px) !important; overflow-y: auto; position: relative; - // background: var(--slate2); .filter-container { display: none; @@ -9133,8 +9136,7 @@ tbody { color: var(--slate12) !important; &:first-child { - // display: flex !important; - // align-items: center !important; + padding-left: 1rem !important; } @@ -9209,7 +9211,6 @@ tbody { flex-direction: row !important; justify-content: center !important; align-items: center !important; - //padding: 4px 16px !important; width: 100% !important; height: 28px !important; background: var(--grass2) !important; @@ -9222,12 +9223,10 @@ tbody { flex-direction: row !important; justify-content: center !important; align-items: center !important; - //padding: 4px 16px !important; width: 100% !important; height: 28px !important; border-radius: 6px !important; background: var(--indigo4) !important; - //border: 1px solid var(--indigo9) !important; color: var(--indigo9) !important; } @@ -9242,9 +9241,7 @@ tbody { gap: 6px; border: none; - padding: span { - //color: var(--indigo9); - } + padding: span {} } .tj-db-sort-btn { @@ -11590,7 +11587,6 @@ tbody { .marketplace-body { height: calc(100vh - 64px) !important; overflow-y: auto; - // background: var(--slate2); } .plugins-card { @@ -12278,7 +12274,6 @@ tbody { .header>.navbar { background-color: var(--base) !important; border-bottom: 1px solid var(--slate5); - z-index: 10; } } } @@ -12445,11 +12440,7 @@ tbody { align-items: center; } -.copilot-codehinter-wrap { - .CodeMirror.cm-s-monokai.CodeMirror-wrap { - border-radius: 0px; - } -} + .avatar-list-stacked { display: flex; @@ -12890,6 +12881,45 @@ tbody { } } +.rest-api-url-codehinter { + .cm-content>.cm-line { + max-width: 505px !important; + } +} + +.rest-api-options-codehinter { + .cm-content>.cm-line { + max-width: 357px !important; + } +} + +.rest-api-codehinter-key-field { + .cm-content>.cm-line { + max-width: 184px !important; + } +} + +.rest-api-codehinter-key-field, +.rest-api-url-codehinter, +.rest-api-options-codehinter { + .cm-content>.cm-line { + white-space: pre-wrap; + word-wrap: break-word; + } +} + +.fx-button-container { + opacity: 0; + transition: opacity 0.3s ease; +} + +.show-fx-button-container { + opacity: 1 !important; +} + +.wrapper-div-code-editor:hover .fx-button-container { + opacity: 1; +} .action-description-highlighter { color: var(--indigo9) !important; } diff --git a/frontend/src/_ui/Alert/Alert.jsx b/frontend/src/_ui/Alert/Alert.jsx index ae22300a8f..576fbcfbbc 100644 --- a/frontend/src/_ui/Alert/Alert.jsx +++ b/frontend/src/_ui/Alert/Alert.jsx @@ -7,13 +7,14 @@ export const Alert = ({ imgHeight = null, imgWidth = null, useDarkMode = true, + iconCls, placeSvgTop = false, }) => { const imgStyles = imgHeight && imgWidth ? { height: imgHeight, width: imgWidth } : {}; const darkMode = useDarkMode ? localStorage.getItem('darkMode') === 'true' : false; return ( - + {svg && ( @@ -31,7 +32,18 @@ const Container = ({ children, cls = '', useDarkMode }) => { const Message = ({ children }) => { return ( - + {children} ); diff --git a/frontend/src/_ui/HttpHeaders/QueryEditor.jsx b/frontend/src/_ui/HttpHeaders/QueryEditor.jsx index 84a81146ee..b533dea6fd 100644 --- a/frontend/src/_ui/HttpHeaders/QueryEditor.jsx +++ b/frontend/src/_ui/HttpHeaders/QueryEditor.jsx @@ -1,7 +1,7 @@ import React from 'react'; -import { CodeHinter } from '@/Editor/CodeBuilder/CodeHinter'; import { ButtonSolid } from '@/_ui/AppButton/AppButton'; import AddRectangle from '@/_ui/Icon/bulkIcons/AddRectangle'; +import CodeHinter from '@/Editor/CodeEditor'; import InfoIcon from '@assets/images/icons/info.svg'; import Trash from '@/_ui/Icon/solidIcons/Trash'; @@ -22,7 +22,7 @@ export default ({ options, addNewKeyValuePair, removeKeyValuePair, keyValuePairV keyValuePairValueChanged(value, 0, index)} componentName={`HttpHeaders::key::${index}`} @@ -31,7 +31,7 @@ export default ({ options, addNewKeyValuePair, removeKeyValuePair, keyValuePairV keyValuePairValueChanged(value, 1, index)} componentName={`HttpHeaders::value::${index}`} diff --git a/frontend/src/_ui/JSONTreeViewer/JSONNode.jsx b/frontend/src/_ui/JSONTreeViewer/JSONNode.jsx index a4d79da943..9e4bf86654 100644 --- a/frontend/src/_ui/JSONTreeViewer/JSONNode.jsx +++ b/frontend/src/_ui/JSONTreeViewer/JSONNode.jsx @@ -35,6 +35,7 @@ export const JSONNode = ({ data, ...restProps }) => { fontSize, inspectorTree, renderCurrentNodeInfoIcon, + debuggerTree, } = restProps; const [expandable, set] = React.useState(() => @@ -194,7 +195,13 @@ export const JSONNode = ({ data, ...restProps }) => { let $key = ( toExpandNode && handleOnClickLabels(data, currentNode, path)} + onClick={() => { + const shouldTriggerActions = debuggerTree && currentNode === 'componentId'; + + if (toExpandNode || shouldTriggerActions) { + handleOnClickLabels(data, currentNode, path); + } + }} style={{ marginTop: '1px', cursor: 'pointer', textTransform: 'none', fontSize: fontSize }} className={cx('node-key mx-0 badge badge-outline', { 'color-primary': applySelectedNodeStyles && !showHiddenOptionsForNode, diff --git a/frontend/src/_ui/JSONTreeViewer/JSONTreeViewer.jsx b/frontend/src/_ui/JSONTreeViewer/JSONTreeViewer.jsx index fa36f0e4b4..0e13681077 100644 --- a/frontend/src/_ui/JSONTreeViewer/JSONTreeViewer.jsx +++ b/frontend/src/_ui/JSONTreeViewer/JSONTreeViewer.jsx @@ -171,8 +171,12 @@ export class JSONTreeViewer extends React.Component { getOnSelectLabelDispatchActions = (currentNode, path) => { const actions = []; - const parent = path ? path[path.length - 2] : 'root'; - const dispatchActionForCurrentNode = this.getDispatchActionsForNode(parent); + let parent = path ? path[path.length - 2] : 'root'; + + const nodeActions = this.props.treeType === 'debugger' && currentNode === 'componentId' ? 'all' : parent; + + const dispatchActionForCurrentNode = this.getDispatchActionsForNode(nodeActions); + if (currentNode === parent) return; if (dispatchActionForCurrentNode && dispatchActionForCurrentNode['enableFor1stLevelChildren']) { @@ -269,6 +273,7 @@ export class JSONTreeViewer extends React.Component { getAbsoluteNodePath={this.getAbsoluteNodePath} fontSize={this.props.fontSize ?? '12px'} inspectorTree={this.props.treeType === 'inspector'} + debuggerTree={this.props.treeType === 'debugger'} renderCurrentNodeInfoIcon={this.renderCurrentNodeInfoIcon} /> diff --git a/frontend/src/index.jsx b/frontend/src/index.jsx index 92d995444f..6b87da50a1 100755 --- a/frontend/src/index.jsx +++ b/frontend/src/index.jsx @@ -1,6 +1,6 @@ import React from 'react'; import { render } from 'react-dom'; -// import { createRoot } from 'react-dom/client'; + import * as Sentry from '@sentry/react'; import { useLocation, useNavigationType, createRoutesFromChildren, matchRoutes } from 'react-router-dom'; import { appService } from '@/_services'; @@ -8,7 +8,7 @@ import { App } from './App'; // eslint-disable-next-line import/no-unresolved import i18n from 'i18next'; import { initReactI18next } from 'react-i18next'; -// import LanguageDetector from 'i18next-browser-languagedetector'; + import Backend from 'i18next-http-backend'; const AppWithProfiler = Sentry.withProfiler(App); diff --git a/frontend/src/wdyr.js b/frontend/src/wdyr.js new file mode 100644 index 0000000000..83c7d54a58 --- /dev/null +++ b/frontend/src/wdyr.js @@ -0,0 +1,8 @@ +import React from 'react'; + +if (process.env.NODE_ENV === 'development') { + const whyDidYouRender = require('@welldone-software/why-did-you-render'); + whyDidYouRender(React, { + trackAllPureComponents: true, + }); +} diff --git a/marketplace/plugins/aws-lambda/lib/operations.json b/marketplace/plugins/aws-lambda/lib/operations.json index 67dfb51238..f03d3c07bd 100644 --- a/marketplace/plugins/aws-lambda/lib/operations.json +++ b/marketplace/plugins/aws-lambda/lib/operations.json @@ -33,7 +33,8 @@ "description": "JSON payload to send to the Lambda function", "className": "codehinter-plugins", "placeholder": "{\"key\": \"value\"}", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } } } diff --git a/marketplace/plugins/awsredshift/lib/operations.json b/marketplace/plugins/awsredshift/lib/operations.json index 8ae58f11aa..cc8ed9e6f5 100644 --- a/marketplace/plugins/awsredshift/lib/operations.json +++ b/marketplace/plugins/awsredshift/lib/operations.json @@ -24,8 +24,9 @@ "key": "sql_query", "type": "codehinter", "description": "Enter your SQL query", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } } } -} +} \ No newline at end of file diff --git a/marketplace/plugins/harperdb/lib/operations.json b/marketplace/plugins/harperdb/lib/operations.json index 6ebd3d08d0..fd621da045 100644 --- a/marketplace/plugins/harperdb/lib/operations.json +++ b/marketplace/plugins/harperdb/lib/operations.json @@ -28,7 +28,8 @@ "key": "sql_query", "type": "codehinter", "description": "Enter your SQL query", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "nosql": { @@ -90,7 +91,8 @@ "mode": "javascript", "description": "Enter records to insert", "placeholder": "[{id: 1, name: 'Jose', age: 24}]", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "update": { @@ -119,7 +121,8 @@ "mode": "javascript", "description": "Enter records to update", "placeholder": "[{id: 1, age: 25}]", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "delete": { @@ -148,7 +151,8 @@ "mode": "javascript", "description": "Enter hash attribute - primary key to delete records", "placeholder": "[123, 65]", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "search_by_hash": { @@ -305,6 +309,7 @@ "mode": "javascript", "description": "Enter Conditions to Filter", "height": "150px", + "editorType": "extendedSingleLine", "placeholder": "[{'search_attribute': 'age', 'search_type': 'between', 'search_value': [25, 29]}, {'search_attribute': 'weight_lbs', 'search_type': 'greater_than', 'search_value': 40}]" } } diff --git a/plugins/packages/airtable/lib/operations.json b/plugins/packages/airtable/lib/operations.json index 79a2234b2f..20ea08362f 100644 --- a/plugins/packages/airtable/lib/operations.json +++ b/plugins/packages/airtable/lib/operations.json @@ -143,6 +143,7 @@ "type": "codehinter", "description": "Enter list of records", "height": "150px", + "editorType": "extendedSingleLine", "placeholder": "[{ \"fields\": {} }]" } }, @@ -185,7 +186,8 @@ "key": "body", "type": "codehinter", "description": "Enter body", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "delete_record": { diff --git a/plugins/packages/amazonses/lib/operations.json b/plugins/packages/amazonses/lib/operations.json index bfe31b07ca..58cd253e81 100644 --- a/plugins/packages/amazonses/lib/operations.json +++ b/plugins/packages/amazonses/lib/operations.json @@ -1,4 +1,3 @@ - { "$schema": "https://raw.githubusercontent.com/ToolJet/ToolJet/develop/plugins/schemas/operations.schema.json", "title": "Amazon SES datasource", @@ -78,7 +77,7 @@ "type": "codehinter", "description": "Supports HTML", "height": "150px", - "mode": "handlebars", + "editorType": "extendedSingleLine", "lineNumbers": true } } diff --git a/plugins/packages/appwrite/lib/operations.json b/plugins/packages/appwrite/lib/operations.json index 253357d6dc..eb9234f9cd 100644 --- a/plugins/packages/appwrite/lib/operations.json +++ b/plugins/packages/appwrite/lib/operations.json @@ -1,4 +1,3 @@ - { "$schema": "https://raw.githubusercontent.com/ToolJet/ToolJet/develop/plugins/schemas/operations.schema.json", "title": "Appwrite datasource", @@ -38,7 +37,7 @@ } ] }, - "list_docs":{ + "list_docs": { "collectionId": { "label": "Collection ID", "key": "collectionId", @@ -177,7 +176,8 @@ "key": "body", "type": "codehinter", "description": "Enter document body", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "update_document": { @@ -206,7 +206,8 @@ "key": "body", "type": "codehinter", "description": "Enter document body", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "delete_document": { @@ -260,7 +261,8 @@ "type": "codehinter", "mode": "javascript", "description": "Enter records", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } } } diff --git a/plugins/packages/athena/lib/operations.json b/plugins/packages/athena/lib/operations.json index 5557e6a2be..43903c9506 100644 --- a/plugins/packages/athena/lib/operations.json +++ b/plugins/packages/athena/lib/operations.json @@ -1,4 +1,3 @@ - { "$schema": "https://raw.githubusercontent.com/ToolJet/ToolJet/develop/plugins/schemas/operations.schema.json", "title": "Amazon Athena datasource", @@ -25,7 +24,8 @@ "key": "query", "type": "codehinter", "description": "Enter query", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "Pagination": { "label": "Pagination", @@ -62,4 +62,4 @@ } } } -} +} \ No newline at end of file diff --git a/plugins/packages/baserow/lib/operations.json b/plugins/packages/baserow/lib/operations.json index 6039579534..88f4aafcbb 100644 --- a/plugins/packages/baserow/lib/operations.json +++ b/plugins/packages/baserow/lib/operations.json @@ -1,4 +1,3 @@ - { "$schema": "https://raw.githubusercontent.com/ToolJet/ToolJet/develop/plugins/schemas/operations.schema.json", "title": "Baserow datasource", @@ -110,6 +109,7 @@ "type": "codehinter", "description": "Enter list of records", "height": "150px", + "editorType": "extendedSingleLine", "placeholder": "{ fieldName: 'Value' }" } }, @@ -142,6 +142,7 @@ "type": "codehinter", "description": "Enter list of records", "height": "150px", + "editorType": "extendedSingleLine", "placeholder": "{ fieldName: 'Value' }" } }, @@ -205,4 +206,4 @@ } } } -} +} \ No newline at end of file diff --git a/plugins/packages/bigquery/lib/operations.json b/plugins/packages/bigquery/lib/operations.json index cd32293b83..a68dc0bc17 100644 --- a/plugins/packages/bigquery/lib/operations.json +++ b/plugins/packages/bigquery/lib/operations.json @@ -49,7 +49,6 @@ } ] }, - "insert_record": { "tableId": { "label": "Table id", @@ -80,10 +79,10 @@ "mode": "javascript", "placeholder": "[{name: 'Tom', age: 30},{name: 'Jane', age: 32}]", "description": "Enter rows", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, - "delete_record": { "tableId": { "label": "Table id", @@ -114,7 +113,8 @@ "mode": "javascript", "placeholder": "CustomerName='Alfreds Futterkiste'", "description": "Enter condition", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "queryOptions": { "label": "Query options", @@ -123,7 +123,8 @@ "mode": "javascript", "placeholder": "{ location: 'US', dryRun: true }", "description": "Enter query options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "queryResultsOptions": { "label": "Query results options", @@ -132,10 +133,10 @@ "mode": "javascript", "placeholder": "{ wrapIntegers: true }", "description": "Enter Query results options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, - "create_table": { "tableId": { "label": "Table id", @@ -166,7 +167,8 @@ "mode": "javascript", "placeholder": "{schema: [{name: 'Name', type: 'STRING', mode: 'REQUIRED'},{name: 'Age', type: 'INTEGER'}], location: 'US' }", "description": "Enter options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "delete_table": { @@ -233,7 +235,8 @@ "type": "codehinter", "placeholder": "column1, column2, ... ", "description": "Enter viewcolumns", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "condition": { "label": "Condition", @@ -242,7 +245,8 @@ "mode": "javascript", "placeholder": "CustomerName='Alfreds Futterkiste'", "description": "Enter condition", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "queryOptions": { "label": "Query options", @@ -251,7 +255,8 @@ "mode": "javascript", "placeholder": "{ location: 'US', dryRun: true }", "description": "Enter query options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "queryResultsOptions": { "label": "Query results options", @@ -260,7 +265,8 @@ "mode": "javascript", "placeholder": "{ wrapIntegers: true }", "description": "Enter Query results options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "update_record": { @@ -292,7 +298,8 @@ "type": "codehinter", "placeholder": "{{({name:'bob',age:30})}}", "description": "Enter columns", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "condition": { "label": "Condition", @@ -301,7 +308,8 @@ "mode": "javascript", "placeholder": "CustomerName='Alfreds Futterkiste'", "description": "Enter condition", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "queryOptions": { "label": "Query options", @@ -310,7 +318,8 @@ "mode": "javascript", "placeholder": "{ location: 'US', dryRun: true }", "description": "Enter query options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "queryResultsOptions": { "label": "Query results options", @@ -319,7 +328,8 @@ "mode": "javascript", "placeholder": "{ wrapIntegers: true }", "description": "Enter Query results options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "list_tables": { @@ -340,10 +350,10 @@ "label": "Query", "key": "query", "type": "codehinter", - "mode": "text", "placeholder": "SELECT name FROM `bigquery-public-data.usa_names.usa_1910_2013` WHERE state = 'TX' LIMIT 100", "description": "Enter query", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "queryOptions": { "label": "Query options", @@ -352,7 +362,8 @@ "mode": "javascript", "placeholder": "{ location: 'US', dryRun: true }", "description": "Enter query options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "queryResultsOptions": { "label": "Query results options", @@ -361,8 +372,9 @@ "mode": "javascript", "placeholder": "{ wrapIntegers: true }", "description": "Enter Query results options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } } } -} +} \ No newline at end of file diff --git a/plugins/packages/clickhouse/lib/operations.json b/plugins/packages/clickhouse/lib/operations.json index b06418d02f..e5305c4c5e 100644 --- a/plugins/packages/clickhouse/lib/operations.json +++ b/plugins/packages/clickhouse/lib/operations.json @@ -28,7 +28,8 @@ "key": "query", "type": "codehinter", "description": "Enter query", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "insert": { @@ -37,7 +38,8 @@ "type": "codehinter", "description": "Enter array of objects", "height": "150px", - "placeholder":"Enter array of objects" + "editorType": "extendedSingleLine", + "placeholder": "Enter array of objects" }, "tablename": { "label": "Table name", diff --git a/plugins/packages/couchdb/lib/operations.json b/plugins/packages/couchdb/lib/operations.json index c38340cf3a..36ae690c74 100644 --- a/plugins/packages/couchdb/lib/operations.json +++ b/plugins/packages/couchdb/lib/operations.json @@ -107,6 +107,7 @@ "type": "codehinter", "description": "Enter list of records", "height": "150px", + "editorType": "extendedSingleLine", "placeholder": "[{ \"fields\": \"value\"}]" } }, @@ -139,6 +140,7 @@ "type": "codehinter", "description": "Enter body", "height": "150px", + "editorType": "extendedSingleLine", "placeholder": "[{ \"fields\": \"value\"}]" } }, @@ -173,6 +175,7 @@ "type": "codehinter", "description": "", "height": "150px", + "editorType": "extendedSingleLine", "placeholder": "" } }, @@ -234,4 +237,4 @@ } } } -} +} \ No newline at end of file diff --git a/plugins/packages/dynamodb/lib/operations.json b/plugins/packages/dynamodb/lib/operations.json index c8bf565bcd..a10f1afc5d 100644 --- a/plugins/packages/dynamodb/lib/operations.json +++ b/plugins/packages/dynamodb/lib/operations.json @@ -67,7 +67,8 @@ "type": "codehinter", "mode": "javascript", "description": "Enter key name", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "query_table": { @@ -77,7 +78,8 @@ "type": "codehinter", "mode": "javascript", "description": "Enter query condition", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "scan_table": { @@ -87,7 +89,8 @@ "type": "codehinter", "mode": "javascript", "description": "Enter scan condition", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "delete_item": { @@ -108,7 +111,8 @@ "type": "codehinter", "mode": "javascript", "description": "Enter key name", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "update_item": { @@ -118,7 +122,8 @@ "type": "codehinter", "mode": "javascript", "description": "Enter update condition", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "create_table": { @@ -150,7 +155,8 @@ "type": "codehinter", "mode": "javascript", "description": "Enter new item details to insert", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } } } diff --git a/plugins/packages/elasticsearch/lib/operations.json b/plugins/packages/elasticsearch/lib/operations.json index 92d1b0cde2..4b92fb8aa0 100644 --- a/plugins/packages/elasticsearch/lib/operations.json +++ b/plugins/packages/elasticsearch/lib/operations.json @@ -50,7 +50,8 @@ "type": "codehinter", "placeholder": "{ \"name\": \"\" }", "description": "Enter query", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "index_document": { @@ -72,7 +73,8 @@ "mode": "javascript", "placeholder": "{ \"name\": \"The Hitchhikers Guide to the Galaxy\" }", "description": "Enter body", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "get": { @@ -86,7 +88,6 @@ "height": "36px", "className": "codehinter-plugins", "placeholder": "Enter index" - }, "id": { "label": "Id", @@ -130,7 +131,8 @@ "mode": "javascript", "placeholder": "{ doc: { page_count: 225 } }", "description": "Enter body", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } } } diff --git a/plugins/packages/firestore/lib/operations.json b/plugins/packages/firestore/lib/operations.json index 73e41ea898..1641bf6e19 100644 --- a/plugins/packages/firestore/lib/operations.json +++ b/plugins/packages/firestore/lib/operations.json @@ -192,7 +192,8 @@ "key": "body", "type": "codehinter", "description": "Enter body", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "update_document": { @@ -212,7 +213,8 @@ "key": "body", "type": "codehinter", "description": "Enter body", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "set_document": { @@ -232,7 +234,8 @@ "key": "body", "type": "codehinter", "description": "Enter body", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "bulk_update": { @@ -264,7 +267,8 @@ "type": "codehinter", "mode": "javascript", "description": "Enter records", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "delete_document": { diff --git a/plugins/packages/googlesheets/lib/operations.json b/plugins/packages/googlesheets/lib/operations.json index 5e068e1472..677fadf251 100644 --- a/plugins/packages/googlesheets/lib/operations.json +++ b/plugins/packages/googlesheets/lib/operations.json @@ -97,6 +97,7 @@ "type": "codehinter", "description": "Enter rows", "height": "150px", + "editorType": "extendedSingleLine", "placeholder": "Enter rows" } }, @@ -110,7 +111,6 @@ "height": "36px", "className": "codehinter-plugins", "placeholder": "Enter spreadsheet_id" - } }, "delete_row": { @@ -218,6 +218,7 @@ "key": "body", "type": "codehinter", "height": "150px", + "editorType": "extendedSingleLine", "description": "Enter body" } } diff --git a/plugins/packages/graphql/lib/operations.json b/plugins/packages/graphql/lib/operations.json index be0a7ca382..48264434b2 100644 --- a/plugins/packages/graphql/lib/operations.json +++ b/plugins/packages/graphql/lib/operations.json @@ -10,21 +10,24 @@ "key": "query", "type": "codehinter", "description": "Enter query", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "variables": { "label": "Variables", "key": "variables", "type": "codehinter", "description": "Enter Variables", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "headers": { "label": "Headers", "key": "headers", "type": "react-component-headers", "description": "key-value pair headers for graphql api", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "required": [ diff --git a/plugins/packages/influxdb/lib/operations.json b/plugins/packages/influxdb/lib/operations.json index a46d619b57..837ffb5012 100644 --- a/plugins/packages/influxdb/lib/operations.json +++ b/plugins/packages/influxdb/lib/operations.json @@ -32,7 +32,6 @@ "value": "query_suggestions_for_branching", "name": "Retrieve query suggestions for a branching suggestion" }, - { "value": "analyze_flux_query", "name": "Analyze a Flux query" @@ -67,6 +66,7 @@ "type": "codehinter", "description": "Enter query", "height": "150px", + "editorType": "extendedSingleLine", "placeholder": "Flux query script to be analyzed" } }, @@ -114,6 +114,7 @@ "type": "codehinter", "description": "Enter query", "height": "150px", + "editorType": "extendedSingleLine", "placeholder": "Flux query script to be analyzed" } }, @@ -157,6 +158,7 @@ "type": "codehinter", "description": "Enter data", "height": "150px", + "editorType": "extendedSingleLine", "placeholder": "Enter data" } }, @@ -167,10 +169,10 @@ "type": "codehinter", "description": "Enter query", "height": "150px", + "editorType": "extendedSingleLine", "placeholder": "Flux query script to be analyzed" } }, - "query_suggestions_for_branching": { "name": { "label": "Name", @@ -185,7 +187,6 @@ } }, "query_suggestions": {}, - "query_data": { "org": { "label": "Organization name or ID", @@ -204,6 +205,7 @@ "type": "codehinter", "description": "Enter query", "height": "150px", + "editorType": "extendedSingleLine", "placeholder": "Flux query script to be analyzed" } }, @@ -214,8 +216,9 @@ "type": "codehinter", "description": "Enter query", "height": "150px", + "editorType": "extendedSingleLine", "placeholder": "Flux query script to be analyzed" } } } -} +} \ No newline at end of file diff --git a/plugins/packages/mailgun/lib/operations.json b/plugins/packages/mailgun/lib/operations.json index 0ab52542f1..6273790da7 100644 --- a/plugins/packages/mailgun/lib/operations.json +++ b/plugins/packages/mailgun/lib/operations.json @@ -55,7 +55,7 @@ "type": "codehinter", "description": "Enter text", "height": "150px", - "mode": "text" + "editorType": "extendedSingleLine" }, "html": { "label": "Body as HTML", @@ -63,9 +63,9 @@ "type": "codehinter", "description": "Enter html", "height": "150px", - "mode": "handlebars", + "editorType": "extendedSingleLine", "lineNumbers": true } } } -} +} \ No newline at end of file diff --git a/plugins/packages/mariadb/lib/operations.json b/plugins/packages/mariadb/lib/operations.json index 8c2ad27e52..8401e99835 100644 --- a/plugins/packages/mariadb/lib/operations.json +++ b/plugins/packages/mariadb/lib/operations.json @@ -24,7 +24,8 @@ "key": "query", "type": "codehinter", "description": "Enter query", - "height": "150px" + "height": "150px", + "editorType": "multiline" } } } diff --git a/plugins/packages/mongodb/lib/operations.json b/plugins/packages/mongodb/lib/operations.json index 22f8e2a066..948a681771 100644 --- a/plugins/packages/mongodb/lib/operations.json +++ b/plugins/packages/mongodb/lib/operations.json @@ -105,7 +105,8 @@ "mode": "javascript", "placeholder": "{ name: 'Steve', 'hobbies: [ 'hiking', 'tennis', 'fly fishing' ] }", "description": "Enter document", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "options": { "label": "Options", @@ -114,7 +115,8 @@ "mode": "javascript", "placeholder": "{ checkKeys: true }", "description": "Enter options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "insert_many": { @@ -135,7 +137,8 @@ "mode": "javascript", "placeholder": "[ { _id: 1, name: 'Steve' }, { _id: 2, name: 'Sally' } ]", "description": "Enter document", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "options": { "label": "Options", @@ -144,7 +147,8 @@ "mode": "javascript", "placeholder": "{ checkKeys: true }", "description": "Enter options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "find_one": { @@ -165,7 +169,8 @@ "mode": "javascript", "placeholder": "{ birth: { $lt: 'new Date({{new Date('01/01/1990').getTime()}})' } }", "description": "Enter filter", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "options": { "label": "Options", @@ -174,7 +179,8 @@ "mode": "javascript", "placeholder": "{ projection: { _id: 0, 'name.first': 0, birth: 1 }, sort: { birth: -1 }, limit: 10, skip: 2 }", "description": "Enter options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "find_many": { @@ -195,7 +201,8 @@ "mode": "javascript", "placeholder": "{ birth: { $lt: 'new Date({{new Date('01/01/1990').getTime()}})' } }", "description": "Enter filter", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "options": { "label": "Options", @@ -204,7 +211,8 @@ "mode": "javascript", "placeholder": "{ projection: { _id: 0, 'name.first': 0, birth: 1 }, sort: { birth: -1 }, limit: 10, skip: 2 }", "description": "Enter options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "count_total": { @@ -225,7 +233,8 @@ "mode": "javascript", "placeholder": "{ fullResponse: true }", "description": "Enter options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "count": { @@ -246,7 +255,8 @@ "mode": "javascript", "placeholder": "{ birth: { $lt: 'new Date({{new Date('01/01/1990').getTime()}})' } }", "description": "Enter filter", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "options": { "label": "Options", @@ -255,7 +265,8 @@ "mode": "javascript", "placeholder": "{ skip: 2 }", "description": "Enter options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "distinct": { @@ -287,7 +298,8 @@ "mode": "javascript", "placeholder": "{ directors: 'Barbra Streisand', }", "description": "Enter filter", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "options": { "label": "Options", @@ -296,7 +308,8 @@ "mode": "javascript", "placeholder": "{ comment: 'some comment' }", "description": "Enter options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "update_one": { @@ -317,7 +330,8 @@ "mode": "javascript", "placeholder": "{ directors: 'Barbra Streisand', }", "description": "Enter filter", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "update": { "label": "Update", @@ -326,7 +340,8 @@ "mode": "javascript", "placeholder": "{ $set: { status: 'Modified' } }", "description": "Enter update", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "options": { "label": "Options", @@ -335,7 +350,8 @@ "mode": "javascript", "placeholder": "{ comment: 'some comment' }", "description": "Enter options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "update_many": { @@ -356,7 +372,8 @@ "mode": "javascript", "placeholder": "{ directors: 'Barbra Streisand', }", "description": "Enter filter", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "update": { "label": "Update", @@ -365,7 +382,8 @@ "mode": "javascript", "placeholder": "{ $set: { status: 'Modified' } }", "description": "Enter update", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "options": { "label": "Options", @@ -374,7 +392,8 @@ "mode": "javascript", "placeholder": "{ comment: 'some comment' }", "description": "Enter options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "replace_one": { @@ -395,7 +414,8 @@ "mode": "javascript", "placeholder": "{ title: { $regex: 'The Cat from' } } }", "description": "Enter filter", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "replacement": { "label": "Replacement", @@ -404,7 +424,8 @@ "mode": "javascript", "placeholder": "{ title: { $regex: 'The Cat from some sector' } }", "description": "Enter replacement", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "options": { "label": "Options", @@ -413,7 +434,8 @@ "mode": "javascript", "placeholder": "{ comment: 'some comment' }", "description": "Enter options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "find_one_replace": { @@ -434,7 +456,8 @@ "mode": "javascript", "placeholder": "{ title: { $regex: 'The Cat from' } } }", "description": "Enter filter", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "replacement": { "label": "Replacement", @@ -443,7 +466,8 @@ "mode": "javascript", "placeholder": "{ title: { $regex: 'The Cat from some sector' } }", "description": "Enter replacement", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "options": { "label": "Options", @@ -452,7 +476,8 @@ "mode": "javascript", "placeholder": "{ comment: 'some comment' }", "description": "Enter options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "find_one_update": { @@ -473,7 +498,8 @@ "mode": "javascript", "placeholder": "{ directors: 'Barbra Streisand', }", "description": "Enter filter", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "update": { "label": "Update", @@ -482,7 +508,8 @@ "mode": "javascript", "placeholder": "{ $set: { status: 'Modified' } }", "description": "Enter update", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "options": { "label": "Options", @@ -491,7 +518,8 @@ "mode": "javascript", "placeholder": "{ upsert: true }", "description": "Enter options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "find_one_delete": { @@ -512,7 +540,8 @@ "mode": "javascript", "placeholder": "{ directors: 'Barbra Streisand', }", "description": "Enter filter", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "options": { "label": "Options", @@ -521,7 +550,8 @@ "mode": "javascript", "placeholder": "{ sort: { field: -1 } }", "description": "Enter options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "delete_one": { @@ -542,7 +572,8 @@ "mode": "javascript", "placeholder": "{ directors: 'Barbra Streisand', }", "description": "Enter filter", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "options": { "label": "Options", @@ -551,7 +582,8 @@ "mode": "javascript", "placeholder": "{ comment: 'some comment' }", "description": "Enter options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "delete_many": { @@ -572,7 +604,8 @@ "mode": "javascript", "placeholder": "{ directors: 'Barbra Streisand', }", "description": "Enter filter", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "options": { "label": "Options", @@ -581,7 +614,8 @@ "mode": "javascript", "placeholder": "{ comment: 'some comment' }", "description": "Enter options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "bulk_write": { @@ -602,7 +636,8 @@ "mode": "javascript", "placeholder": "[{ insertOne: { document: { directors: 'Barbra Streisand' } } }]", "description": "Enter operations", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "options": { "label": "Options", @@ -611,7 +646,8 @@ "mode": "javascript", "placeholder": "{ comment: 'some comment' }", "description": "Enter options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "aggregate": { @@ -632,7 +668,8 @@ "mode": "javascript", "placeholder": "[{ $match: { categories: 'Bakery' } }, { $group: { _id: '$stars', count: { $sum: 1 } } }]", "description": "Enter pipeline", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "options": { "label": "Options", @@ -641,7 +678,8 @@ "mode": "javascript", "placeholder": "{ comment: 'some comment' }", "description": "Enter options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } } } diff --git a/plugins/packages/mssql/lib/operations.json b/plugins/packages/mssql/lib/operations.json index 3e7d474ba5..31e88fb5f6 100644 --- a/plugins/packages/mssql/lib/operations.json +++ b/plugins/packages/mssql/lib/operations.json @@ -26,7 +26,8 @@ "key": "query", "type": "codehinter", "description": "Enter query", - "height": "150px" + "height": "150px", + "editorType": "multiline" } }, "gui": { @@ -71,6 +72,7 @@ "type": "codehinter", "description": "Enter records", "height": "150px", + "editorType": "extendedSingleLine", "placeholder": "{{ [ ] }}" } } diff --git a/plugins/packages/mysql/lib/operations.json b/plugins/packages/mysql/lib/operations.json index 7147f0fcf8..ae0252a647 100644 --- a/plugins/packages/mysql/lib/operations.json +++ b/plugins/packages/mysql/lib/operations.json @@ -26,7 +26,8 @@ "key": "query", "type": "codehinter", "description": "Enter query", - "height": "150px" + "height": "150px", + "editorType": "multiline" } }, "gui": { @@ -53,7 +54,6 @@ "height": "36px", "className": "codehinter-plugins", "placeholder": "Enter table" - }, "primary_key_column": { "label": "Primary key column", @@ -71,7 +71,8 @@ "key": "records", "type": "codehinter", "description": "Enter records", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } } } diff --git a/plugins/packages/n8n/lib/operations.json b/plugins/packages/n8n/lib/operations.json index fc0a797e66..4e8209fb3d 100644 --- a/plugins/packages/n8n/lib/operations.json +++ b/plugins/packages/n8n/lib/operations.json @@ -8,7 +8,7 @@ "method": { "label": "Method", "key": "method", - "className":"col-md-4", + "className": "col-md-4", "type": "dropdown-component-flip", "description": "Single request type", "list": [ @@ -21,8 +21,8 @@ "name": "POST" } ], - "commonFields":{ - "url":{ + "commonFields": { + "url": { "label": "Webhook URL", "key": "url", "type": "codehinter", @@ -34,7 +34,7 @@ } } }, - "get":{ + "get": { "parameters": { "label": "URL parameters", "key": "url_params", @@ -42,10 +42,11 @@ "mode": "javascript", "placeholder": "{ \"name\": \"bob\" }", "description": "Enter options", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, - "post":{ + "post": { "parameters": { "label": "URL parameters", "key": "url_params", @@ -53,7 +54,8 @@ "mode": "javascript", "placeholder": "{ \"name\": \"bob\" }", "description": "Enter url parameters", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "body": { "label": "Body", @@ -62,7 +64,8 @@ "mode": "javascript", "placeholder": "{ \"age\": \"12\" }", "description": "Enter body parameters", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } } } diff --git a/plugins/packages/notion/lib/operations.json b/plugins/packages/notion/lib/operations.json index 3bc341b4cb..23c51319bc 100644 --- a/plugins/packages/notion/lib/operations.json +++ b/plugins/packages/notion/lib/operations.json @@ -1,4 +1,3 @@ - { "$schema": "https://raw.githubusercontent.com/ToolJet/ToolJet/develop/plugins/schemas/operations.schema.json", "title": "Notion datasource", @@ -9,7 +8,7 @@ "resource": { "label": "Resource", "key": "resource", - "className":"col-md-4", + "className": "col-md-4", "type": "dropdown-component-flip", "description": "Resource select", "list": [ @@ -31,11 +30,11 @@ } ] }, - "database":{ + "database": { "operation": { "label": "Operation", "key": "operation", - "className":"col-md-4", + "className": "col-md-4", "type": "dropdown-component-flip", "description": "Operation select", "list": [ @@ -57,8 +56,8 @@ } ] }, - "get_database":{ - "database_id":{ + "get_database": { + "database_id": { "label": "Database ID", "key": "database_id", "type": "codehinter", @@ -69,8 +68,8 @@ "description": "Enter database id here" } }, - "query_database":{ - "database_id":{ + "query_database": { + "database_id": { "label": "Database ID", "key": "database_id", "type": "codehinter", @@ -87,9 +86,10 @@ "mode": "javascript", "placeholder": "{or: [{ property: 'In stock', checkbox: { equals: true, } },...]}", "description": "Enter filter object", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, - "sorts":{ + "sorts": { "label": "Sort", "key": "sorts", "type": "codehinter", @@ -97,9 +97,10 @@ "placeholder": "[{\"property\": \"Name\",\"direction\": \"ascending\"}]", "description": "Enter the sort array", "height": "150px", - "width":"400px" + "editorType": "extendedSingleLine", + "width": "400px" }, - "limit":{ + "limit": { "label": "Limit", "key": "limit", "type": "codehinter", @@ -109,7 +110,7 @@ "className": "codehinter-plugins", "description": "Enter limit here" }, - "start_cursor":{ + "start_cursor": { "label": "Start cursor", "key": "start_cursor", "type": "codehinter", @@ -120,8 +121,8 @@ "description": "Enter cursor id" } }, - "create_database":{ - "page_id":{ + "create_database": { + "page_id": { "label": "Page ID", "key": "page_id", "type": "codehinter", @@ -131,7 +132,7 @@ "className": "codehinter-plugins", "description": "Enter page id here" }, - "title":{ + "title": { "label": "Title", "key": "title", "type": "codehinter", @@ -139,9 +140,10 @@ "placeholder": "Array of rich text objects \n [{\"type\": \"text\",\"text\": {\"content\": \"Grocery List\",\"link\": null}}]", "description": "Enter filter object", "height": "150px", - "width":"400px" + "editorType": "extendedSingleLine", + "width": "400px" }, - "properties":{ + "properties": { "label": "Properties", "key": "properties", "type": "codehinter", @@ -150,10 +152,10 @@ "description": "Enter filter object", "height": "200px" }, - "icon_type":{ + "icon_type": { "label": "Icon Type", "key": "icon_type", - "className":"col-md-4", + "className": "col-md-4", "type": "dropdown", "description": "Icon type select", "list": [ @@ -177,10 +179,10 @@ "height": "36px", "className": "codehinter-plugins" }, - "cover_type":{ + "cover_type": { "label": "Cover Type", "key": "cover_type", - "className":"col-md-4", + "className": "col-md-4", "type": "dropdown", "description": "Cover type select", "list": [ @@ -201,8 +203,8 @@ "className": "codehinter-plugins" } }, - "update_database":{ - "database_id":{ + "update_database": { + "database_id": { "label": "Database ID", "key": "database_id", "type": "codehinter", @@ -212,7 +214,7 @@ "className": "codehinter-plugins", "description": "Enter database id here" }, - "title":{ + "title": { "label": "Title", "key": "title", "type": "codehinter", @@ -220,9 +222,10 @@ "placeholder": "Array of rich text objects \n [{\"type\": \"text\",\"text\": {\"content\": \"Grocery List\",\"link\": null}}]", "description": "Enter filter object", "height": "150px", - "width":"400px" + "editorType": "extendedSingleLine", + "width": "400px" }, - "properties":{ + "properties": { "label": "Properties", "key": "properties", "type": "codehinter", @@ -231,10 +234,10 @@ "description": "Enter filter object", "height": "200px" }, - "icon_type":{ + "icon_type": { "label": "Icon Type", "key": "icon_type", - "className":"col-md-4", + "className": "col-md-4", "type": "dropdown", "description": "Icon type select", "list": [ @@ -258,10 +261,10 @@ "height": "36px", "className": "codehinter-plugins" }, - "cover_type":{ + "cover_type": { "label": "Cover Type", "key": "cover_type", - "className":"col-md-4", + "className": "col-md-4", "type": "dropdown", "description": "Cover type select", "list": [ @@ -283,11 +286,11 @@ } } }, - "page":{ + "page": { "operation": { "label": "Operation", "key": "operation", - "className":"col-md-4", + "className": "col-md-4", "type": "dropdown-component-flip", "description": "Operation select", "list": [ @@ -313,8 +316,8 @@ } ] }, - "get_page":{ - "page_id":{ + "get_page": { + "page_id": { "label": "Page ID", "key": "page_id", "type": "codehinter", @@ -325,11 +328,11 @@ "description": "Enter page id here" } }, - "create_page":{ + "create_page": { "parent_type": { "label": "Parent Type", "key": "parent_type", - "className":"col-md-4", + "className": "col-md-4", "type": "dropdown-component-flip", "description": "Parent select", "list": [ @@ -343,8 +346,8 @@ } ] }, - "page_id":{ - "page_id":{ + "page_id": { + "page_id": { "label": "Page ID", "key": "page_id", "type": "codehinter", @@ -354,7 +357,7 @@ "className": "codehinter-plugins", "description": "Enter page id here" }, - "properties":{ + "properties": { "label": "Properties", "key": "properties", "type": "codehinter", @@ -363,7 +366,7 @@ "description": "Enter filter object", "height": "200px" }, - "children":{ + "children": { "label": "Children (Blocks)", "key": "children", "type": "codehinter", @@ -372,10 +375,10 @@ "description": "Enter blocks array", "height": "200px" }, - "icon_type":{ + "icon_type": { "label": "Icon Type", "key": "icon_type", - "className":"col-md-4", + "className": "col-md-4", "type": "dropdown", "description": "Icon type select", "list": [ @@ -399,10 +402,10 @@ "height": "36px", "className": "codehinter-plugins" }, - "cover_type":{ + "cover_type": { "label": "Cover Type", "key": "cover_type", - "className":"col-md-4", + "className": "col-md-4", "type": "dropdown", "description": "Cover type select", "list": [ @@ -423,8 +426,8 @@ "className": "codehinter-plugins" } }, - "database_id":{ - "database_id":{ + "database_id": { + "database_id": { "label": "Database ID", "key": "database_id", "type": "codehinter", @@ -434,7 +437,7 @@ "className": "codehinter-plugins", "description": "Enter database id here" }, - "properties":{ + "properties": { "label": "Properties", "key": "properties", "type": "codehinter", @@ -443,7 +446,7 @@ "description": "Enter filter object", "height": "200px" }, - "children":{ + "children": { "label": "Children (Blocks)", "key": "children", "type": "codehinter", @@ -452,10 +455,10 @@ "description": "Enter blocks array", "height": "200px" }, - "icon_type":{ + "icon_type": { "label": "Icon Type", "key": "icon_type", - "className":"col-md-4", + "className": "col-md-4", "type": "dropdown", "description": "Icon type select", "list": [ @@ -479,10 +482,10 @@ "height": "36px", "className": "codehinter-plugins" }, - "cover_type":{ + "cover_type": { "label": "Cover Type", "key": "cover_type", - "className":"col-md-4", + "className": "col-md-4", "type": "dropdown", "description": "Cover type select", "list": [ @@ -504,8 +507,8 @@ } } }, - "update_page":{ - "page_id":{ + "update_page": { + "page_id": { "label": "Page ID", "key": "page_id", "type": "codehinter", @@ -515,7 +518,7 @@ "className": "codehinter-plugins", "description": "Enter page id here" }, - "properties":{ + "properties": { "label": "Properties", "key": "properties", "type": "codehinter", @@ -524,10 +527,10 @@ "description": "Enter filter object", "height": "200px" }, - "icon_type":{ + "icon_type": { "label": "Icon Type", "key": "icon_type", - "className":"col-md-4", + "className": "col-md-4", "type": "dropdown", "description": "Icon type select", "list": [ @@ -551,10 +554,10 @@ "height": "36px", "className": "codehinter-plugins" }, - "cover_type":{ + "cover_type": { "label": "Cover Type", "key": "cover_type", - "className":"col-md-4", + "className": "col-md-4", "type": "dropdown", "description": "Cover type select", "list": [ @@ -575,8 +578,8 @@ "className": "codehinter-plugins" } }, - "get_page_property":{ - "page_id":{ + "get_page_property": { + "page_id": { "label": "Page ID", "key": "page_id", "type": "codehinter", @@ -586,7 +589,7 @@ "className": "codehinter-plugins", "description": "Enter page id here" }, - "property_id":{ + "property_id": { "label": "Property ID", "key": "property_id", "type": "codehinter", @@ -596,7 +599,7 @@ "className": "codehinter-plugins", "description": "Enter property id here" }, - "limit":{ + "limit": { "label": "Limit", "key": "limit", "type": "codehinter", @@ -606,7 +609,7 @@ "className": "codehinter-plugins", "description": "Enter limit here" }, - "start_cursor":{ + "start_cursor": { "label": "Start cursor", "key": "start_cursor", "type": "codehinter", @@ -617,8 +620,8 @@ "description": "Enter cursor id" } }, - "archive_page":{ - "page_id":{ + "archive_page": { + "page_id": { "label": "Page ID", "key": "page_id", "type": "codehinter", @@ -647,11 +650,11 @@ } } }, - "block":{ + "block": { "operation": { "label": "Operation", "key": "operation", - "className":"col-md-4", + "className": "col-md-4", "type": "dropdown-component-flip", "description": "Operation select", "list": [ @@ -677,8 +680,8 @@ } ] }, - "get_block":{ - "block_id":{ + "get_block": { + "block_id": { "label": "Block ID", "key": "block_id", "type": "codehinter", @@ -689,8 +692,8 @@ "description": "Enter block id here" } }, - "update_block":{ - "block_id":{ + "update_block": { + "block_id": { "label": "Block ID", "key": "block_id", "type": "codehinter", @@ -700,7 +703,7 @@ "className": "codehinter-plugins", "description": "Enter block id here" }, - "properties":{ + "properties": { "label": "Properties", "key": "properties", "type": "codehinter", @@ -731,8 +734,8 @@ ] } }, - "get_block_children":{ - "block_id":{ + "get_block_children": { + "block_id": { "label": "Block ID", "key": "block_id", "type": "codehinter", @@ -742,7 +745,7 @@ "className": "codehinter-plugins", "description": "Enter block id here" }, - "limit":{ + "limit": { "label": "Limit", "key": "limit", "type": "codehinter", @@ -752,7 +755,7 @@ "className": "codehinter-plugins", "description": "Enter limit here" }, - "start_cursor":{ + "start_cursor": { "label": "Start cursor", "key": "start_cursor", "type": "codehinter", @@ -763,8 +766,8 @@ "description": "Enter cursor id" } }, - "append_block_children":{ - "block_id":{ + "append_block_children": { + "block_id": { "label": "Block ID", "key": "block_id", "type": "codehinter", @@ -774,7 +777,7 @@ "className": "codehinter-plugins", "description": "Enter block id here" }, - "children":{ + "children": { "label": "Children (Blocks)", "key": "children", "type": "codehinter", @@ -784,8 +787,8 @@ "height": "200px" } }, - "delete_block":{ - "block_id":{ + "delete_block": { + "block_id": { "label": "Block ID", "key": "block_id", "type": "codehinter", @@ -797,11 +800,11 @@ } } }, - "user":{ + "user": { "operation": { "label": "Operation", "key": "operation", - "className":"col-md-4", + "className": "col-md-4", "type": "dropdown-component-flip", "description": "Operation select", "list": [ @@ -815,8 +818,8 @@ } ] }, - "get_user":{ - "user_id":{ + "get_user": { + "user_id": { "label": "User ID", "key": "user_id", "type": "codehinter", @@ -827,8 +830,8 @@ "description": "Enter user id here" } }, - "list_users":{ - "limit":{ + "list_users": { + "limit": { "label": "Limit", "key": "limit", "type": "codehinter", @@ -838,7 +841,7 @@ "className": "codehinter-plugins", "description": "Enter limit here" }, - "start_cursor":{ + "start_cursor": { "label": "Start cursor", "key": "start_cursor", "type": "codehinter", diff --git a/plugins/packages/oracledb/lib/operations.json b/plugins/packages/oracledb/lib/operations.json index 4ea9e5460b..a0225d9139 100644 --- a/plugins/packages/oracledb/lib/operations.json +++ b/plugins/packages/oracledb/lib/operations.json @@ -1,4 +1,3 @@ - { "$schema": "https://raw.githubusercontent.com/ToolJet/ToolJet/develop/plugins/schemas/operations.schema.json", "title": "Oracle DB datasource", @@ -28,7 +27,8 @@ "type": "codehinter", "description": "Enter query", "placeholder": "SELECT * FROM customers", - "height": "150px" + "height": "150px", + "editorType": "multiline" } }, "gui": { @@ -55,7 +55,6 @@ "height": "36px", "className": "codehinter-plugins", "placeholder": "Enter table" - }, "primary_key_column": { "label": "Primary key column", @@ -73,7 +72,8 @@ "key": "records", "type": "codehinter", "description": "Enter records", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } } } diff --git a/plugins/packages/postgresql/lib/operations.json b/plugins/packages/postgresql/lib/operations.json index 50fda5e4f6..4f838e48d6 100644 --- a/plugins/packages/postgresql/lib/operations.json +++ b/plugins/packages/postgresql/lib/operations.json @@ -28,7 +28,8 @@ "key": "query", "type": "codehinter", "description": "Enter query", - "height": "150px" + "height": "150px", + "editorType": "multiline" } }, "gui": { @@ -73,6 +74,7 @@ "type": "codehinter", "description": "Enter records", "height": "150px", + "editorType": "extendedSingleLine", "placeholder": "{{ [ ] }}" } } diff --git a/plugins/packages/redis/lib/operations.json b/plugins/packages/redis/lib/operations.json index 785da75cf0..bb1350ab71 100644 --- a/plugins/packages/redis/lib/operations.json +++ b/plugins/packages/redis/lib/operations.json @@ -12,7 +12,8 @@ "type": "codehinter", "description": "Enter query", "placeholder": "PING", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "required": [ diff --git a/plugins/packages/rethinkdb/lib/operations.json b/plugins/packages/rethinkdb/lib/operations.json index fdb1cc7f03..ad3b193a88 100644 --- a/plugins/packages/rethinkdb/lib/operations.json +++ b/plugins/packages/rethinkdb/lib/operations.json @@ -207,6 +207,7 @@ "type": "codehinter", "description": "Enter data to be inserted", "height": "150px", + "editorType": "extendedSingleLine", "placeholder": "Enter data to be inserted" } }, @@ -344,6 +345,7 @@ "type": "codehinter", "description": "Enter data to be inserted", "height": "150px", + "editorType": "extendedSingleLine", "placeholder": "Enter data to be inserted" } }, @@ -376,8 +378,9 @@ "type": "codehinter", "description": "Enter data to be inserted", "height": "150px", + "editorType": "extendedSingleLine", "placeholder": "Enter data to be inserted" } } } -} +} \ No newline at end of file diff --git a/plugins/packages/saphana/lib/operations.json b/plugins/packages/saphana/lib/operations.json index aac1242ea9..a91bc8c1cf 100644 --- a/plugins/packages/saphana/lib/operations.json +++ b/plugins/packages/saphana/lib/operations.json @@ -24,7 +24,8 @@ "key": "query", "type": "codehinter", "description": "Enter query", - "height": "150px" + "height": "150px", + "editorType": "multiline" } } } diff --git a/plugins/packages/sendgrid/lib/operations.json b/plugins/packages/sendgrid/lib/operations.json index afbb20de1b..f3fb4bf333 100644 --- a/plugins/packages/sendgrid/lib/operations.json +++ b/plugins/packages/sendgrid/lib/operations.json @@ -66,7 +66,7 @@ "type": "codehinter", "description": "Enter text", "height": "150px", - "mode": "text" + "editorType": "extendedSingleLine" }, "html": { "label": "Body as HTML", @@ -74,7 +74,7 @@ "type": "codehinter", "description": "Enter html", "height": "150px", - "mode": "handlebars", + "editorType": "extendedSingleLine", "lineNumbers": true } } diff --git a/plugins/packages/slack/lib/operations.json b/plugins/packages/slack/lib/operations.json index 4a451a8128..082ea1a2f4 100644 --- a/plugins/packages/slack/lib/operations.json +++ b/plugins/packages/slack/lib/operations.json @@ -44,6 +44,7 @@ "description": "Enter message", "className": "codehinter-plugins", "height": "150px", + "editorType": "extendedSingleLine", "placeholder": "Enter message" } }, @@ -58,7 +59,6 @@ "className": "codehinter-plugins", "placeholder": "Enter channel id" }, - "limit": { "label": "Limit", "key": "limit", @@ -69,7 +69,6 @@ "className": "codehinter-plugins", "placeholder": "Enter limit" }, - "cursor": { "label": "Next cursor", "key": "cursor", diff --git a/plugins/packages/smtp/lib/operations.json b/plugins/packages/smtp/lib/operations.json index 1d3839432a..7b57fb457b 100644 --- a/plugins/packages/smtp/lib/operations.json +++ b/plugins/packages/smtp/lib/operations.json @@ -80,7 +80,8 @@ "type": "codehinter", "description": "Field for message", "placeholder": "Enter message", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "htmlContent": { "key": "htmlContent", @@ -88,7 +89,8 @@ "type": "codehinter", "description": "Field for message", "placeholder": "Enter message", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" }, "attachment_array": { "key": "attachment_array", @@ -102,4 +104,4 @@ "lineNumbers": false } } -} +} \ No newline at end of file diff --git a/plugins/packages/snowflake/lib/operations.json b/plugins/packages/snowflake/lib/operations.json index 43cee39252..c8ce0b29c0 100644 --- a/plugins/packages/snowflake/lib/operations.json +++ b/plugins/packages/snowflake/lib/operations.json @@ -24,8 +24,9 @@ "key": "query", "type": "codehinter", "description": "Enter query", - "height": "150px" + "height": "150px", + "editorType": "multiline" } } } -} +} \ No newline at end of file diff --git a/plugins/packages/typesense/lib/operations.json b/plugins/packages/typesense/lib/operations.json index a8f993fd72..a8af967c78 100644 --- a/plugins/packages/typesense/lib/operations.json +++ b/plugins/packages/typesense/lib/operations.json @@ -47,7 +47,8 @@ "type": "codehinter", "placeholder": "{ \"name\": \"\" }", "description": "Enter schema", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "search": { @@ -68,7 +69,8 @@ "type": "codehinter", "placeholder": "{ \"name\": \"\" }", "description": "Enter search parameters", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "index_document": { @@ -90,7 +92,8 @@ "mode": "javascript", "placeholder": "{ \"name\": \"The Hitchhikers Guide to the Galaxy\" }", "description": "Enter document", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "get": { @@ -147,7 +150,8 @@ "mode": "javascript", "placeholder": "{ doc: { page_count: 225 } }", "description": "Enter body", - "height": "150px" + "height": "150px", + "editorType": "extendedSingleLine" } }, "delete": { diff --git a/plugins/packages/woocommerce/lib/operations/definitions.ts b/plugins/packages/woocommerce/lib/operations/definitions.ts index 264f5190b1..d7e075ae5f 100644 --- a/plugins/packages/woocommerce/lib/operations/definitions.ts +++ b/plugins/packages/woocommerce/lib/operations/definitions.ts @@ -5,6 +5,7 @@ export const body = { description: 'Enter data', height: '150px', placeholder: '', + editorType: 'extendedSingleLine', }; export const customer_id = { diff --git a/plugins/packages/zendesk/lib/operations.json b/plugins/packages/zendesk/lib/operations.json index 26669c3a07..cb88aa2b77 100644 --- a/plugins/packages/zendesk/lib/operations.json +++ b/plugins/packages/zendesk/lib/operations.json @@ -1,4 +1,3 @@ - { "$schema": "https://raw.githubusercontent.com/ToolJet/ToolJet/develop/plugins/schemas/operations.schema.json", "title": "Zendesk datasource", @@ -111,6 +110,7 @@ "type": "codehinter", "className": "codehinter-plugins", "height": "150px", + "editorType": "extendedSingleLine", "description": "Enter ticket", "placeholder": "Enter ticket" } diff --git a/server/.version b/server/.version index 3e197472e2..e599014eab 100644 --- a/server/.version +++ b/server/.version @@ -1 +1 @@ -2.44.0 +2.45.0 diff --git a/server/migrations/1702196735455-AddAutoLayoutFlagToPagesTable.ts b/server/migrations/1702196735455-AddAutoLayoutFlagToPagesTable.ts new file mode 100644 index 0000000000..b63aa2bb87 --- /dev/null +++ b/server/migrations/1702196735455-AddAutoLayoutFlagToPagesTable.ts @@ -0,0 +1,32 @@ +import { MigrationInterface, QueryRunner, TableColumn } from 'typeorm'; + +export class AddAutoLayoutFlagToPagesTable1702196735455 implements MigrationInterface { + public async up(queryRunner: QueryRunner): Promise { + // Add the new columns to the app_versions table + await queryRunner.addColumn( + 'pages', + new TableColumn({ + name: 'auto_compute_layout', + type: 'boolean', + isNullable: false, + default: 'false', + }) + ); + + await queryRunner.addColumn( + 'layouts', + new TableColumn({ + name: 'dimension_unit', + type: 'enum', + enumName: 'dimension_unit', + enum: ['count', 'percent'], + isNullable: false, + default: `'percent'`, + }) + ); + } + + public async down(queryRunner: QueryRunner): Promise { + await queryRunner.dropColumn('pages', 'auto_compute_layout'); + } +} diff --git a/server/src/controllers/app_environments.controller.ts b/server/src/controllers/app_environments.controller.ts index 1b7e411904..b15a9fc199 100644 --- a/server/src/controllers/app_environments.controller.ts +++ b/server/src/controllers/app_environments.controller.ts @@ -1,4 +1,4 @@ -import { Controller, Get, Query, UseGuards } from '@nestjs/common'; +import { Body, Controller, Get, Param, Post, Query, UseGuards } from '@nestjs/common'; import { decamelizeKeys } from 'humps'; import { JwtAuthGuard } from '../modules/auth/jwt-auth.guard'; import { ForbiddenException } from '@nestjs/common'; @@ -8,6 +8,7 @@ import { GlobalDataSourceAbilityFactory } from 'src/modules/casl/abilities/globa import { DataSource } from 'src/entities/data_source.entity'; import { OrgEnvironmentVariablesAbilityFactory } from 'src/modules/casl/abilities/org-environment-variables-ability.factory'; import { OrgEnvironmentVariable } from 'src/entities/org_envirnoment_variable.entity'; +import { AppEnvironmentActionParametersDto } from '@dto/environment_action_parameters.dto'; @Controller('app-environments') export class AppEnvironmentsController { @@ -17,6 +18,29 @@ export class AppEnvironmentsController { private orgEnvironmentVariablesAbilityFactory: OrgEnvironmentVariablesAbilityFactory ) {} + @UseGuards(JwtAuthGuard) + @Get('init') + async init(@User() user, @Query('editing_version_id') editingVersionId: string) { + /* + init is a method in the AppEnvironmentService class that is used to initialize the app environment mananger. + Should not use for any other purpose. + */ + return await this.appEnvironmentServices.init(editingVersionId, user.organizationId); + } + + @UseGuards(JwtAuthGuard) + @Post('/post-action/:action') + async environmentActions( + @Param('action') action: string, + @Body() appEnvironmentActionParametersDto: AppEnvironmentActionParametersDto + ) { + /* + init is a method in the AppEnvironmentService class that is used to initialize the app environment mananger. + Should not use for any other purpose. + */ + return await this.appEnvironmentServices.processActions(action, appEnvironmentActionParametersDto); + } + @UseGuards(JwtAuthGuard) @Get() async index(@User() user, @Query('app_id') appId: string) { @@ -39,9 +63,13 @@ export class AppEnvironmentsController { } @UseGuards(JwtAuthGuard) - @Get('versions') - async getVersions(@User() user, @Query('app_id') appId: string) { - const appVersions = await this.appEnvironmentServices.getVersionsByEnvironment(user?.organizationId, appId); + @Get(':id/versions') + async getVersionsByEnvironment(@User() user, @Param('id') environmentId: string, @Query('app_id') appId: string) { + const appVersions = await this.appEnvironmentServices.getVersionsByEnvironment( + user?.organizationId, + appId, + environmentId + ); return { appVersions }; } } diff --git a/server/src/controllers/apps.controller.v2.ts b/server/src/controllers/apps.controller.v2.ts index 215e8db5c2..ddec27d9a1 100644 --- a/server/src/controllers/apps.controller.v2.ts +++ b/server/src/controllers/apps.controller.v2.ts @@ -32,6 +32,7 @@ import { PageService } from '@services/page.service'; import { EventsService } from '@services/events_handler.service'; import { AppVersionUpdateDto } from '@dto/app-version-update.dto'; import { CreateEventHandlerDto, UpdateEventHandlerDto } from '@dto/event-handler.dto'; +import { VersionReleaseDto } from '@dto/version-release.dto'; @Controller({ path: 'apps', @@ -501,4 +502,20 @@ export class AppsControllerV2 { return await this.eventService.deleteEvent(eventId, versionId); } + + @UseGuards(JwtAuthGuard) + @UseInterceptors(ValidAppInterceptor) + @Put(':id/release') + async releaseVersion( + @User() user, + @Param('id') id, + @AppDecorator() app: App, + @Body() versionReleaseDto: VersionReleaseDto + ) { + const ability = await this.appsAbilityFactory.appsActions(user, app.id); + if (!ability.can('updateParams', app)) { + throw new ForbiddenException('You do not have permissions to perform this action'); + } + return await this.appsService.releaseVersion(app.id, versionReleaseDto); + } } diff --git a/server/src/controllers/data_queries.controller.ts b/server/src/controllers/data_queries.controller.ts index d0224b568f..84f73bdeba 100644 --- a/server/src/controllers/data_queries.controller.ts +++ b/server/src/controllers/data_queries.controller.ts @@ -19,7 +19,7 @@ import { DataSourcesService } from '../../src/services/data_sources.service'; import { QueryAuthGuard } from 'src/modules/auth/query-auth.guard'; import { AppsAbilityFactory } from 'src/modules/casl/abilities/apps-ability.factory'; import { AppsService } from '@services/apps.service'; -import { CreateDataQueryDto, UpdateDataQueryDto } from '@dto/data-query.dto'; +import { CreateDataQueryDto, UpdateDataQueryDto, UpdatingReferencesOptionsDto } from '@dto/data-query.dto'; import { User } from 'src/decorators/user.decorator'; import { decode } from 'js-base64'; import { dbTransactionWrap } from 'src/helpers/utils.helper'; @@ -155,6 +155,21 @@ export class DataQueriesController { return decamelizedQuery; } + //* On Updating references, need update the options of multiple queries + @UseGuards(JwtAuthGuard) + @Patch() + async bulkUpdate(@User() user, @Body() updatingReferencesOptions: UpdatingReferencesOptionsDto) { + const appVersionId = updatingReferencesOptions.app_version_id; + const app = await this.appsService.findAppFromVersion(appVersionId); + const ability = await this.appsAbilityFactory.appsActions(user, app.id); + + if (!ability.can('getQueries', app)) { + throw new ForbiddenException('you do not have permissions to perform this action'); + } + + return await this.dataQueriesService.bulkUpdateQueryOptions(updatingReferencesOptions.data_queries_options); + } + @UseGuards(JwtAuthGuard) @Delete(':id') async delete(@User() user, @Param('id') dataQueryId) { diff --git a/server/src/dto/component.dto.ts b/server/src/dto/component.dto.ts index 1c12fa8ce5..027877590d 100644 --- a/server/src/dto/component.dto.ts +++ b/server/src/dto/component.dto.ts @@ -70,7 +70,7 @@ export class LayoutUpdateDto { @IsObject() @IsNotEmpty() @Validate(LayoutDataValidator, { each: true }) - diff: Record; + diff: Record; } class ComponentDto { diff --git a/server/src/dto/data-query.dto.ts b/server/src/dto/data-query.dto.ts index ef2775169c..300f7e8197 100644 --- a/server/src/dto/data-query.dto.ts +++ b/server/src/dto/data-query.dto.ts @@ -1,5 +1,5 @@ import { Transform } from 'class-transformer'; -import { IsUUID, IsString, IsOptional, IsObject, IsNotEmpty } from 'class-validator'; +import { IsUUID, IsString, IsOptional, IsObject, IsNotEmpty, IsArray } from 'class-validator'; import { sanitizeInput } from 'src/helpers/utils.helper'; import { PartialType } from '@nestjs/mapped-types'; @@ -38,3 +38,16 @@ export class CreateDataQueryDto { } export class UpdateDataQueryDto extends PartialType(CreateDataQueryDto) {} + +export interface IUpdatingReferencesOptions { + id: string; + options: object; +} + +export class UpdatingReferencesOptionsDto { + @IsUUID() + app_version_id: string; + + @IsArray() + data_queries_options: IUpdatingReferencesOptions[]; +} diff --git a/server/src/dto/environment_action_parameters.dto.ts b/server/src/dto/environment_action_parameters.dto.ts new file mode 100644 index 0000000000..a3994c309e --- /dev/null +++ b/server/src/dto/environment_action_parameters.dto.ts @@ -0,0 +1,19 @@ +import { IsOptional, IsUUID } from 'class-validator'; + +export class AppEnvironmentActionParametersDto { + @IsOptional() + @IsUUID() + editorEnvironmentId: string; + + @IsOptional() + @IsUUID() + editorVersionId: string; + + @IsOptional() + @IsUUID() + deletedVersionId: string; + + @IsOptional() + @IsUUID() + appId: string; +} diff --git a/server/src/dto/pages.dto.ts b/server/src/dto/pages.dto.ts index 875585b3ce..9c84f16ceb 100644 --- a/server/src/dto/pages.dto.ts +++ b/server/src/dto/pages.dto.ts @@ -24,6 +24,9 @@ export class CreatePageDto { @IsOptional() hidden: boolean; + + @IsOptional() + autoComputeLayout: boolean; } export class DeletePageDto { diff --git a/server/src/dto/version-release.dto.ts b/server/src/dto/version-release.dto.ts new file mode 100644 index 0000000000..f191290a14 --- /dev/null +++ b/server/src/dto/version-release.dto.ts @@ -0,0 +1,10 @@ +import { IsNotEmpty, IsUUID } from 'class-validator'; +import { Transform } from 'class-transformer'; +import { sanitizeInput } from 'src/helpers/utils.helper'; + +export class VersionReleaseDto { + @IsNotEmpty() + @IsUUID() + @Transform(({ value }) => sanitizeInput(value)) + versionToBeReleased: string; +} diff --git a/server/src/entities/layout.entity.ts b/server/src/entities/layout.entity.ts index dfd5feb435..d85e4cfa94 100644 --- a/server/src/entities/layout.entity.ts +++ b/server/src/entities/layout.entity.ts @@ -24,6 +24,13 @@ export class Layout { @Column({ name: 'component_id' }) componentId: string; + @Column({ + type: 'enum', + enumName: 'dimension_unit', + name: 'dimension_unit', + enum: ['count', 'percent'], + }) + dimensionUnit: string; @UpdateDateColumn({ default: () => 'now()', name: 'updated_at' }) updatedAt: Date; diff --git a/server/src/entities/page.entity.ts b/server/src/entities/page.entity.ts index 2731d301e7..52aedf296d 100644 --- a/server/src/entities/page.entity.ts +++ b/server/src/entities/page.entity.ts @@ -37,6 +37,9 @@ export class Page { @UpdateDateColumn({ default: () => 'now()', name: 'updated_at' }) updatedAt: Date; + @Column({ name: 'auto_compute_layout' }) + autoComputeLayout: boolean; + @Column({ name: 'app_version_id' }) appVersionId: string; diff --git a/server/src/helpers/components.helper.ts b/server/src/helpers/components.helper.ts new file mode 100644 index 0000000000..e562659c1a --- /dev/null +++ b/server/src/helpers/components.helper.ts @@ -0,0 +1,10 @@ +export enum LayoutDimensionUnits { + COUNT = 'count', + PERCENT = 'percent', +} + +export const resolveGridPositionForComponent = (dimension: number, type: string) => { + // const numberOfGrids = type === 'desktop' ? 43 : 12; + const numberOfGrids = 43; + return Math.round((dimension * numberOfGrids) / 100); +}; diff --git a/server/src/helpers/import_export.helpers.ts b/server/src/helpers/import_export.helpers.ts new file mode 100644 index 0000000000..db9b02ddec --- /dev/null +++ b/server/src/helpers/import_export.helpers.ts @@ -0,0 +1,53 @@ +export function updateEntityReferences(node, resourceMapping: Record = {}) { + if (typeof node === 'object') { + for (const key in node) { + let value = node[key]; + if (typeof value === 'string' && value.includes('{{') && value.includes('}}')) { + const referenceExists = value; + + if (referenceExists) { + const ref = value.replace('{{', '').replace('}}', ''); + + const entityName = ref.split('.')[1]; + + if (resourceMapping[entityName]) { + const newValue = value.replace(entityName, resourceMapping[entityName]); + + node[key] = newValue; + } + } + } else if (typeof value === 'object') { + value = updateEntityReferences(value, resourceMapping); + } + } + } + + return node; +} + +export function findAllEntityReferences(node, allRefs): [] { + if (typeof node === 'object') { + for (const key in node) { + const value = node[key]; + if (typeof value === 'string' && value.includes('{{') && value.includes('}}')) { + const referenceExists = value; + + if (referenceExists) { + const ref = value.replace('{{', '').replace('}}', ''); + + const entityName = ref.split('.')[1]; + + allRefs.push(entityName); + } + } else if (typeof value === 'object') { + findAllEntityReferences(value, allRefs); + } + } + } + return allRefs; +} + +export function isValidUUID(uuid) { + const uuidRegex = /^[0-9a-f]{8}-[0-9a-f]{4}-[1-5][0-9a-f]{3}-[89ab][0-9a-f]{3}-[0-9a-f]{12}$/i; + return uuidRegex.test(uuid); +} diff --git a/server/src/services/app_environments.service.ts b/server/src/services/app_environments.service.ts index 461f486e1c..1a01afa28e 100644 --- a/server/src/services/app_environments.service.ts +++ b/server/src/services/app_environments.service.ts @@ -6,9 +6,197 @@ import { OrgEnvironmentConstantValue } from 'src/entities/org_environment_consta import { OrganizationConstant } from 'src/entities/organization_constants.entity'; import { EntityManager, FindOneOptions, In, DeleteResult } from 'typeorm'; import { AppVersion } from 'src/entities/app_version.entity'; +import { AppEnvironmentActionParametersDto } from '@dto/environment_action_parameters.dto'; +import { App } from 'src/entities/app.entity'; + +interface ExtendedEnvironment extends AppEnvironment { + appVersionsCount?: number; +} + +export interface AppEnvironmentResponse { + editorVersion: Partial; + editorEnvironment: AppEnvironment; + appVersionEnvironment: AppEnvironment; + shouldRenderPromoteButton: boolean; + shouldRenderReleaseButton: boolean; + environments: ExtendedEnvironment[]; +} + +export enum AppEnvironmentActions { + VERSION_DELETED = 'version_deleted', + ENVIROMENT_CHANGED = 'environment_changed', +} @Injectable() export class AppEnvironmentService { + async init( + editingVersionId: string, + organizationId: string, + manager?: EntityManager + ): Promise { + return await dbTransactionWrap(async (manager: EntityManager) => { + const editorVersion = await manager.findOne(AppVersion, { + select: ['id', 'name', 'currentEnvironmentId', 'appId'], + where: { id: editingVersionId }, + }); + const environments: ExtendedEnvironment[] = await this.getAll(organizationId, manager, editorVersion.appId); + const editorEnvironment = environments.find((env) => env.id === editorVersion.currentEnvironmentId); + const { shouldRenderPromoteButton, shouldRenderReleaseButton } = await this.calculateButtonVisibility( + false, + editorEnvironment, + editorVersion.appId, + editorVersion.id, + manager + ); + const response: AppEnvironmentResponse = { + editorVersion, + editorEnvironment, + appVersionEnvironment: editorEnvironment, + shouldRenderPromoteButton, + shouldRenderReleaseButton, + environments, + }; + return response; + }, manager); + } + + async calculateButtonVisibility( + isMultiEnvironmentEnabled: boolean, + appVersionEnvironment?: AppEnvironment, + appId?: string, + versionId?: string, + manager?: EntityManager + ) { + /* Further conditions can handle from here */ + if (!isMultiEnvironmentEnabled) { + return { + shouldRenderPromoteButton: false, + shouldRenderReleaseButton: true, + }; + } + const appDetails = await manager.findOneOrFail(App, { + select: ['id', 'currentVersionId'], + where: { id: appId }, + }); + const isVersionReleased = appDetails.currentVersionId === versionId; + const isCurrentVersionInProduction = appVersionEnvironment?.isDefault; + const shouldRenderPromoteButton = !isCurrentVersionInProduction && !isVersionReleased; + const shouldRenderReleaseButton = isCurrentVersionInProduction || isVersionReleased; + return { shouldRenderPromoteButton, shouldRenderReleaseButton }; + } + + async getSelectedVersion(selectedEnvironmentId: string, appId: string, manager?: EntityManager): Promise { + const newVersionQuery = ` + SELECT name, id, current_environment_id + FROM app_versions + WHERE current_environment_id IN ( + SELECT id + FROM app_environments + WHERE priority >= ( + SELECT priority + FROM app_environments + WHERE id = $1 + ) + ) + AND app_id = $2 + ORDER BY updated_at DESC + LIMIT 1; + `; + const result = await manager.query(newVersionQuery, [selectedEnvironmentId, appId]); + return result[0]; + } + + async processActions(action: string, actionParameters: AppEnvironmentActionParametersDto) { + const { editorEnvironmentId, deletedVersionId, editorVersionId, appId } = actionParameters; + + return await dbTransactionWrap(async (manager: EntityManager) => { + switch (action) { + case AppEnvironmentActions.VERSION_DELETED: { + const appEnvironmentResponse: Partial = {}; + const isUserDeletedTheCurrentVersion = editorVersionId === deletedVersionId; + /* + This is post action which is triggered when a version is deleted from the app version manager. + */ + + const multiEnvironmentsNotAvailable = !editorEnvironmentId; + if (multiEnvironmentsNotAvailable) { + const { shouldRenderPromoteButton, shouldRenderReleaseButton } = await this.calculateButtonVisibility( + false + ); + appEnvironmentResponse.shouldRenderPromoteButton = shouldRenderPromoteButton; + appEnvironmentResponse.shouldRenderReleaseButton = shouldRenderReleaseButton; + if (isUserDeletedTheCurrentVersion) { + const newVersionQuery = ` + SELECT name, id, current_environment_id + FROM app_versions + WHERE app_id = $1 + ORDER BY updated_at DESC + LIMIT 1; + `; + const selectedVersionQueryResponse = await manager.query(newVersionQuery, [appId]); + const selectedVersion = selectedVersionQueryResponse[0]; + const selectedEnvironment = await manager.findOneOrFail(AppEnvironment, { + where: { id: selectedVersion.current_environment_id }, + }); + appEnvironmentResponse.editorEnvironment = selectedEnvironment; + appEnvironmentResponse.editorVersion = selectedVersion; + appEnvironmentResponse.appVersionEnvironment = selectedEnvironment; + } + return appEnvironmentResponse; + } + + /* If the editorEnvironment is null then the method will return all the versions of an App */ + const versionsCountOfEnvironment = await manager.count(AppVersion, { + where: { currentEnvironmentId: editorEnvironmentId, appId }, + }); + const environmentDoensNotHaveVersions = versionsCountOfEnvironment === 0; + if (environmentDoensNotHaveVersions) { + /* Send back new editor environment and version */ + const newEnvironmentQuery = ` + SELECT * + FROM app_environments + WHERE priority < ( + SELECT priority + FROM app_environments + WHERE id = $1 + ) + ORDER BY priority DESC + LIMIT 1; + `; + const selectedEnvironmentResponse = await manager.query(newEnvironmentQuery, [editorEnvironmentId]); + const selectedEnvironment = selectedEnvironmentResponse[0]; + const selectedVersion = await this.getSelectedVersion(selectedEnvironment.id, appId, manager); + appEnvironmentResponse.editorEnvironment = selectedEnvironment; + appEnvironmentResponse.editorVersion = selectedVersion; + /* Add extra things to respons */ + } else if (isUserDeletedTheCurrentVersion) { + const selectedEnvironment = await manager.findOneOrFail(AppEnvironment, { + id: editorEnvironmentId, + }); + /* User deleted current editor version. Client needs new editor version */ + if (selectedEnvironment) { + const selectedVersion = await this.getSelectedVersion(editorEnvironmentId, appId, manager); + const appVersionEnvironment = await manager.findOneOrFail(AppEnvironment, { + where: { id: selectedVersion.current_environment_id }, + }); + appEnvironmentResponse.editorVersion = selectedVersion; + appEnvironmentResponse.editorEnvironment = selectedEnvironment; + appEnvironmentResponse.appVersionEnvironment = appVersionEnvironment; + } + } + return appEnvironmentResponse; + } + case AppEnvironmentActions.ENVIROMENT_CHANGED: { + const appEnvironmentResponse: Partial = {}; + appEnvironmentResponse.editorVersion = await this.getSelectedVersion(editorEnvironmentId, appId, manager); + return appEnvironmentResponse; + } + default: + break; + } + }); + } + async get( organizationId: string, id?: string, @@ -17,7 +205,10 @@ export class AppEnvironmentService { ): Promise { return await dbTransactionWrap(async (manager: EntityManager) => { const condition: FindOneOptions = { - where: { organizationId, ...(id ? { id } : !priorityCheck && { isDefault: true }) }, + where: { + organizationId, + ...(id ? { id } : !priorityCheck && { isDefault: true }), + }, ...(priorityCheck && { order: { priority: 'ASC' } }), }; return await manager.findOneOrFail(AppEnvironment, condition); @@ -30,7 +221,9 @@ export class AppEnvironmentService { if (!environmentId) { envId = (await this.get(organizationId, null, false, manager)).id; } - return await manager.findOneOrFail(DataSourceOptions, { where: { environmentId: envId, dataSourceId } }); + return await manager.findOneOrFail(DataSourceOptions, { + where: { environmentId: envId, dataSourceId }, + }); }); } @@ -56,7 +249,7 @@ export class AppEnvironmentService { }, manager); } - async getAll(organizationId: string, manager?: EntityManager, appId?: string): Promise { + async getAll(organizationId: string, manager?: EntityManager, appId?: string): Promise { return await dbTransactionWrap(async (manager: EntityManager) => { const appEnvironments = await manager.find(AppEnvironment, { where: { @@ -72,7 +265,9 @@ export class AppEnvironmentService { for (const appEnvironment of appEnvironments) { const count = await manager.count(AppVersion, { where: { - ...(appEnvironment.priority !== 1 && { currentEnvironmentId: appEnvironment.id }), + ...(appEnvironment.priority !== 1 && { + currentEnvironmentId: appEnvironment.id, + }), appId, }, }); @@ -85,7 +280,12 @@ export class AppEnvironmentService { }, manager); } - async getVersionsByEnvironment(organizationId: string, appId: string, currentEnvironmentId?: string) { + async getVersionsByEnvironment( + organizationId: string, + appId: string, + currentEnvironmentId?: string, + manager?: EntityManager + ) { return await dbTransactionWrap(async (manager: EntityManager) => { const conditions = { appId }; if (currentEnvironmentId) { @@ -116,7 +316,7 @@ export class AppEnvironmentService { }, select: ['id', 'name', 'appId'], }); - }); + }, manager); } async updateOptions(options: object, environmentId: string, dataSourceId: string, manager?: EntityManager) { @@ -212,7 +412,11 @@ export class AppEnvironmentService { envId = (await this.get(organizationId, environmentId, false, manager)).id; } - const constantId = (await manager.findOne(OrganizationConstant, { where: { constantName, organizationId } })).id; + const constantId = ( + await manager.findOne(OrganizationConstant, { + where: { constantName, organizationId }, + }) + ).id; return await manager.findOneOrFail(OrgEnvironmentConstantValue, { where: { organizationConstantId: constantId, environmentId: envId }, diff --git a/server/src/services/app_import_export.service.ts b/server/src/services/app_import_export.service.ts index d96f8dba38..3719d8ae31 100644 --- a/server/src/services/app_import_export.service.ts +++ b/server/src/services/app_import_export.service.ts @@ -19,6 +19,7 @@ import { isTooljetVersionWithNormalizedAppDefinitionSchem, isVersionGreaterThanOrEqual, } from 'src/helpers/utils.helper'; +import { LayoutDimensionUnits, resolveGridPositionForComponent } from 'src/helpers/components.helper'; import { AppEnvironmentService } from './app_environments.service'; import { convertAppDefinitionFromSinglePageToMultiPage } from '../../lib/single-page-to-and-from-multipage-definition-conversion'; import { DataSourceScopes, DataSourceTypes } from 'src/helpers/data_source.constants'; @@ -31,7 +32,7 @@ import { Component } from 'src/entities/component.entity'; import { Layout } from 'src/entities/layout.entity'; import { EventHandler, Target } from 'src/entities/event_handler.entity'; import { v4 as uuid } from 'uuid'; - +import { findAllEntityReferences, isValidUUID, updateEntityReferences } from 'src/helpers/import_export.helpers'; interface AppResourceMappings { defaultDataSourceIdMapping: Record; dataQueryMapping: Record; @@ -240,7 +241,7 @@ export class AppImportExportService { const importedApp = await this.createImportedAppForUser(this.entityManager, schemaUnifiedAppParams, user); const currentTooljetVersion = !cloning ? tooljetVersion : null; - await this.setupImportedAppAssociations( + const resourceMapping = await this.setupImportedAppAssociations( this.entityManager, importedApp, schemaUnifiedAppParams, @@ -250,6 +251,7 @@ export class AppImportExportService { currentTooljetVersion ); await this.createAdminGroupPermissions(this.entityManager, importedApp); + await this.updateEntityReferencesForImportedApp(this.entityManager, resourceMapping); // NOTE: App slug updation callback doesn't work while wrapped in transaction // hence updating slug explicitly @@ -260,6 +262,64 @@ export class AppImportExportService { return importedApp; } + async updateEntityReferencesForImportedApp(manager: EntityManager, resourceMapping: AppResourceMappings) { + const mappings = { ...resourceMapping.componentsMapping, ...resourceMapping.dataQueryMapping }; + const newComponentIds = Object.values(resourceMapping.componentsMapping); + const newQueriesIds = Object.values(resourceMapping.dataQueryMapping); + + if (newComponentIds.length > 0) { + const components = await manager + .createQueryBuilder(Component, 'components') + .where('components.id IN(:...componentIds)', { componentIds: newComponentIds }) + .select([ + 'components.id', + 'components.properties', + 'components.styles', + 'components.general', + 'components.validation', + 'components.generalStyles', + 'components.displayPreferences', + ]) + .getMany(); + + const toUpdateComponents = components.filter((component) => { + const entityReferencesInComponentDefinitions = findAllEntityReferences(component, []).filter( + (entity) => entity && isValidUUID(entity) + ); + + if (entityReferencesInComponentDefinitions.length > 0) { + return updateEntityReferences(component, mappings); + } + }); + + if (!isEmpty(toUpdateComponents)) { + await manager.save(toUpdateComponents); + } + } + + if (newQueriesIds.length > 0) { + const dataQueries = await manager + .createQueryBuilder(DataQuery, 'dataQueries') + .where('dataQueries.id IN(:...dataQueryIds)', { dataQueryIds: newQueriesIds }) + .select(['dataQueries.id', 'dataQueries.options']) + .getMany(); + + const toUpdateDataQueries = dataQueries.filter((dataQuery) => { + const entityReferencesInQueryOptions = findAllEntityReferences(dataQuery, []).filter( + (entity) => entity && isValidUUID(entity) + ); + + if (entityReferencesInQueryOptions.length > 0) { + return updateEntityReferences(dataQuery, mappings); + } + }); + + if (!isEmpty(toUpdateDataQueries)) { + await manager.save(toUpdateDataQueries); + } + } + } + async createImportedAppForUser(manager: EntityManager, appParams: any, user: User): Promise { return await catchDbException(async () => { const importedApp = manager.create(App, { @@ -432,6 +492,7 @@ export class AppImportExportService { index: pagePostionIntheList, disabled: page.disabled || false, hidden: page.hidden || false, + autoComputeLayout: page.autoComputeLayout || false, }); const pageCreated = await transactionalEntityManager.save(newPage); @@ -452,7 +513,11 @@ export class AppImportExportService { const newLayout = new Layout(); newLayout.type = type; newLayout.top = layout.top; - newLayout.left = layout.left; + newLayout.left = + layout.dimensionUnit !== LayoutDimensionUnits.COUNT + ? resolveGridPositionForComponent(layout.left, type) + : layout.left; + newLayout.dimensionUnit = LayoutDimensionUnits.COUNT; newLayout.width = layout.width; newLayout.height = layout.height; newLayout.componentId = appResourceMappings.componentsMapping[componentId]; @@ -694,6 +759,7 @@ export class AppImportExportService { index: page.index, disabled: page.disabled || false, hidden: page.hidden || false, + autoComputeLayout: page.autoComputeLayout || false, }); const pageCreated = await manager.save(newPage); @@ -769,7 +835,11 @@ export class AppImportExportService { const newLayout = new Layout(); newLayout.type = layout.type; newLayout.top = layout.top; - newLayout.left = layout.left; + newLayout.left = + layout.dimensionUnit !== LayoutDimensionUnits.COUNT + ? resolveGridPositionForComponent(layout.left, layout.type) + : layout.left; + newLayout.dimensionUnit = LayoutDimensionUnits.COUNT; newLayout.width = layout.width; newLayout.height = layout.height; newLayout.component = savedComponent; @@ -1672,9 +1742,10 @@ export class AppImportExportService { .createQueryBuilder(EventHandler, 'event') .where('event.appVersionId = :versionId', { versionId }) .getMany(); + const mappings = { ...oldDataQueryToNewMapping, ...oldComponentToNewComponentMapping } as Record; for (const event of allEvents) { - const eventDefinition = event.event; + const eventDefinition = updateEntityReferences(event.event, mappings); if (eventDefinition?.actionId === 'run-query' && oldDataQueryToNewMapping[eventDefinition.queryId]) { eventDefinition.queryId = oldDataQueryToNewMapping[eventDefinition.queryId]; diff --git a/server/src/services/apps.service.ts b/server/src/services/apps.service.ts index 0f4ac95493..cea7f8d20e 100644 --- a/server/src/services/apps.service.ts +++ b/server/src/services/apps.service.ts @@ -25,12 +25,22 @@ import { DataBaseConstraints } from 'src/helpers/db_constraints.constants'; import { Page } from 'src/entities/page.entity'; import { AppVersionUpdateDto } from '@dto/app-version-update.dto'; import { Layout } from 'src/entities/layout.entity'; - import { Component } from 'src/entities/component.entity'; import { EventHandler } from 'src/entities/event_handler.entity'; +import { VersionReleaseDto } from '@dto/version-release.dto'; + +import { findAllEntityReferences, isValidUUID, updateEntityReferences } from 'src/helpers/import_export.helpers'; +import { isEmpty } from 'lodash'; import { AppBase } from 'src/entities/app_base.entity'; +import { LayoutDimensionUnits } from 'src/helpers/components.helper'; const uuid = require('uuid'); + +interface AppResourceMappings { + dataQueryMapping: Record; + componentsMapping: Record; +} + @Injectable() export class AppsService { constructor( @@ -133,6 +143,7 @@ export class AppsService { handle: 'home', appVersionId: appVersion.id, index: 1, + autoComputeLayout: true, }) ); @@ -398,6 +409,11 @@ export class AppsService { const { oldComponentToNewComponentMapping, oldPageToNewPageMapping } = await this.createNewPagesAndComponentsForVersion(manager, appVersion, versionFrom.id, versionFrom.homePageId); + await this.updateEntityReferencesForNewVersion(manager, { + componentsMapping: oldComponentToNewComponentMapping, + dataQueryMapping: oldDataQueryToNewMapping, + }); + await this.updateEventActionsForNewVersionWithNewMappingIds( manager, appVersion.id, @@ -411,6 +427,64 @@ export class AppsService { }, manager); } + async updateEntityReferencesForNewVersion(manager: EntityManager, resourceMapping: AppResourceMappings) { + const mappings = { ...resourceMapping.componentsMapping, ...resourceMapping.dataQueryMapping }; + const newComponentIds = Object.values(resourceMapping.componentsMapping); + const newQueriesIds = Object.values(resourceMapping.dataQueryMapping); + + if (newComponentIds.length > 0) { + const components = await manager + .createQueryBuilder(Component, 'components') + .where('components.id IN(:...componentIds)', { componentIds: newComponentIds }) + .select([ + 'components.id', + 'components.properties', + 'components.styles', + 'components.general', + 'components.validation', + 'components.generalStyles', + 'components.displayPreferences', + ]) + .getMany(); + + const toUpdateComponents = components.filter((component) => { + const entityReferencesInComponentDefinitions = findAllEntityReferences(component, []).filter( + (entity) => entity && isValidUUID(entity) + ); + + if (entityReferencesInComponentDefinitions.length > 0) { + return updateEntityReferences(component, mappings); + } + }); + + if (!isEmpty(toUpdateComponents)) { + await manager.save(toUpdateComponents); + } + } + + if (newQueriesIds.length > 0) { + const dataQueries = await manager + .createQueryBuilder(DataQuery, 'dataQueries') + .where('dataQueries.id IN(:...dataQueryIds)', { dataQueryIds: newQueriesIds }) + .select(['dataQueries.id', 'dataQueries.options']) + .getMany(); + + const toUpdateDataQueries = dataQueries.filter((dataQuery) => { + const entityReferencesInQueryOptions = findAllEntityReferences(dataQuery, []).filter( + (entity) => entity && isValidUUID(entity) + ); + + if (entityReferencesInQueryOptions.length > 0) { + return updateEntityReferences(dataQuery, mappings); + } + }); + + if (!isEmpty(toUpdateDataQueries)) { + await manager.save(toUpdateDataQueries); + } + } + } + async updateEventActionsForNewVersionWithNewMappingIds( manager: EntityManager, versionId: string, @@ -422,8 +496,10 @@ export class AppsService { where: { appVersionId: versionId }, }); + const mappings = { ...oldDataQueryToNewMapping, ...oldComponentToNewComponentMapping } as Record; + for (const event of allEvents) { - const eventDefinition = event.event; + const eventDefinition = updateEntityReferences(event.event, mappings); if (eventDefinition?.actionId === 'run-query') { eventDefinition.queryId = oldDataQueryToNewMapping[eventDefinition.queryId]; @@ -536,6 +612,20 @@ export class AppsService { oldComponentToNewComponentMapping[component.id] = newComponent.id; + let parentId = component.parent ? component.parent : null; + + const isParentTabOrCalendar = isChildOfTabsOrCalendar(component, page.components, parentId); + + if (isParentTabOrCalendar) { + const childTabId = component.parent.split('-')[component.parent.split('-').length - 1]; + const _parentId = component?.parent?.split('-').slice(0, -1).join('-'); + const mappedParentId = oldComponentToNewComponentMapping[_parentId]; + + parentId = `${mappedParentId}-${childTabId}`; + } else { + parentId = oldComponentToNewComponentMapping[parentId]; + } + newComponent.name = component.name; newComponent.type = component.type; newComponent.pageId = savedPage.id; @@ -559,6 +649,7 @@ export class AppsService { newLayout.width = layout.width; newLayout.height = layout.height; newLayout.componentId = layout.componentId; + newLayout.dimensionUnit = LayoutDimensionUnits.COUNT; newLayout.component = newComponent; @@ -588,7 +679,7 @@ export class AppsService { const isParentTabOrCalendar = isChildOfTabsOrCalendar(component, page.components, parentId); if (isParentTabOrCalendar) { - const childTabId = component.parent.split('-')[component.parent.split('-').length - 1]; + const childTabId = component?.parent?.split('-')[component?.parent?.split('-').length - 1]; const _parentId = component?.parent?.split('-').slice(0, -1).join('-'); const mappedParentId = oldComponentToNewComponentMapping[_parentId]; @@ -1037,4 +1128,25 @@ export class AppsService { }); }); } + + async releaseVersion(appId: string, versionReleaseDto: VersionReleaseDto, manager?: EntityManager) { + return await dbTransactionWrap(async (manager: EntityManager) => { + const { versionToBeReleased } = versionReleaseDto; + //check if the app version is eligible for release + const currentEnvironment: AppEnvironment = await manager + .createQueryBuilder(AppEnvironment, 'app_environments') + .select(['app_environments.id', 'app_environments.isDefault']) + .innerJoinAndSelect('app_versions', 'app_versions', 'app_versions.current_environment_id = app_environments.id') + .where('app_versions.id = :versionToBeReleased', { + versionToBeReleased, + }) + .getOne(); + + if (!currentEnvironment?.isDefault) { + throw new BadRequestException('You can only release when the version is promoted to production'); + } + + return await manager.update(App, appId, { currentVersionId: versionToBeReleased }); + }, manager); + } } diff --git a/server/src/services/auth.service.ts b/server/src/services/auth.service.ts index 5cf03621db..0704a3be63 100644 --- a/server/src/services/auth.service.ts +++ b/server/src/services/auth.service.ts @@ -225,6 +225,7 @@ export class AuthService { return decamelizeKeys({ currentOrganizationId: user.organizationId, currentOrganizationSlug: organization.slug, + currentOrganizationName: organization.name, admin: await this.usersService.hasGroup(user, 'admin', null, manager), groupPermissions: await this.usersService.groupPermissions(user, manager), appGroupPermissions: await this.usersService.appGroupPermissions(user, null, manager), @@ -917,23 +918,28 @@ export class AuthService { } async generateSessionPayload(user: User, currentOrganization: Organization) { - const currentOrganizationId = currentOrganization?.id - ? currentOrganization?.id - : user?.organizationIds?.includes(user?.defaultOrganizationId) - ? user.defaultOrganizationId - : user?.organizationIds?.[0]; + return dbTransactionWrap(async (manager: EntityManager) => { + const currentOrganizationId = currentOrganization?.id + ? currentOrganization?.id + : user?.organizationIds?.includes(user?.defaultOrganizationId) + ? user.defaultOrganizationId + : user?.organizationIds?.[0]; + const organizationDetails = currentOrganization + ? currentOrganization + : await manager.findOneOrFail(Organization, { + where: { id: currentOrganizationId }, + select: ['slug', 'name', 'id'], + }); - const activeWorkspacesCount = await this.organizationUsersService.getActiveWorkspacesCount(user.id); - const noWorkspaceAttachedInTheSession = activeWorkspacesCount === 0; - - return decamelizeKeys({ - id: user.id, - email: user.email, - firstName: user.firstName, - lastName: user.lastName, - noWorkspaceAttachedInTheSession, - currentOrganizationId, - currentOrganizationSlug: currentOrganization?.slug, + return decamelizeKeys({ + id: user.id, + email: user.email, + firstName: user.firstName, + lastName: user.lastName, + currentOrganizationSlug: organizationDetails.slug, + currentOrganizationName: organizationDetails.name, + currentOrganizationId, + }); }); } diff --git a/server/src/services/components.service.ts b/server/src/services/components.service.ts index ce4111398e..35f51a314a 100644 --- a/server/src/services/components.service.ts +++ b/server/src/services/components.service.ts @@ -5,6 +5,7 @@ import { Component } from 'src/entities/component.entity'; import { Layout } from 'src/entities/layout.entity'; import { Page } from 'src/entities/page.entity'; import { dbTransactionForAppVersionAssociationsUpdate, dbTransactionWrap } from 'src/helpers/utils.helper'; +import { LayoutDimensionUnits, resolveGridPositionForComponent } from 'src/helpers/components.helper'; import { EventsService } from './events_handler.service'; import { LayoutData } from '@dto/component.dto'; @@ -53,6 +54,7 @@ export class ComponentsService { newLayout.width = layout.width; newLayout.height = layout.height; newLayout.component = component; + newLayout.dimensionUnit = LayoutDimensionUnits.COUNT; componentLayouts.push(newLayout); } @@ -139,7 +141,10 @@ export class ComponentsService { }, appVersionId); } - async componentLayoutChange(componenstLayoutDiff: Record, appVersionId: string) { + async componentLayoutChange( + componenstLayoutDiff: Record, + appVersionId: string + ) { return dbTransactionForAppVersionAssociationsUpdate(async (manager: EntityManager) => { for (const componentId in componenstLayoutDiff) { const doesComponentExist = await manager.findAndCount(Component, { id: componentId }); @@ -152,7 +157,7 @@ export class ComponentsService { }; } - const { layouts } = componenstLayoutDiff[componentId]; + const { layouts, component } = componenstLayoutDiff[componentId]; for (const type in layouts) { const componentLayout = await manager.findOne(Layout, { componentId, type }); @@ -164,6 +169,10 @@ export class ComponentsService { await manager.update(Layout, { id: componentLayout.id }, layout); } + //Handle parent change cases. component.parent can be undefined if the element is moved form container to canvas + if (component) { + await manager.update(Component, { id: componentId }, { parent: component.parent }); + } } } }, appVersionId); @@ -196,7 +205,7 @@ export class ComponentsService { const componentData = component; const componentLayout = component.layouts; - const transformedData = this.createComponentWithLayout(componentData, componentLayout); + const transformedData = this.createComponentWithLayout(componentData, componentLayout, manager); acc[componentId] = transformedData[componentId]; @@ -230,18 +239,33 @@ export class ComponentsService { return transformedComponents; } - createComponentWithLayout(componentData: Component, layoutData = []) { + createComponentWithLayout(componentData: Component, layoutData = [], manager: EntityManager) { const { id, name, properties, styles, generalStyles, validation, parent, displayPreferences, general } = componentData; const layouts = {}; layoutData.forEach((layout) => { - const { type, top, left, width, height } = layout; + const { type, top, left, width, height, dimensionUnit, id } = layout; + + let adjustedLeftValue = left; + if (dimensionUnit === LayoutDimensionUnits.PERCENT) { + adjustedLeftValue = resolveGridPositionForComponent(left, type); + manager.update( + Layout, + { + id, + }, + { + dimensionUnit: LayoutDimensionUnits.COUNT, + left: adjustedLeftValue, + } + ); + } layouts[type] = { top, - left, + left: adjustedLeftValue, width, height, }; diff --git a/server/src/services/data_queries.service.ts b/server/src/services/data_queries.service.ts index 7ff7977e42..7775cd4fd3 100644 --- a/server/src/services/data_queries.service.ts +++ b/server/src/services/data_queries.service.ts @@ -17,6 +17,7 @@ import { dbTransactionWrap } from 'src/helpers/utils.helper'; import allPlugins from '@tooljet/plugins/dist/server'; import { DataSourceScopes } from 'src/helpers/data_source.constants'; import { EventHandler } from 'src/entities/event_handler.entity'; +import { IUpdatingReferencesOptions } from '@dto/data-query.dto'; @Injectable() export class DataQueriesService { @@ -102,6 +103,24 @@ export class DataQueriesService { return dataQuery; } + async bulkUpdateQueryOptions(dataQueriesOptions: IUpdatingReferencesOptions[]) { + return await dbTransactionWrap(async (manager: EntityManager) => { + for (const { id, options } of dataQueriesOptions) { + await manager.save(DataQuery, { + id, + options, + updatedAt: new Date(), + }); + } + + return await manager + .createQueryBuilder(DataQuery, 'data_query') + .select(['id', 'options', 'updated_at']) + .where('data_query.id IN (:...ids)', { ids: dataQueriesOptions.map((query) => query.id) }) + .execute(); + }); + } + async fetchServiceAndParsedParams(dataSource, dataQuery, queryOptions, organization_id, environmentId = undefined) { const sourceOptions = await this.parseSourceOptions(dataSource.options, organization_id, environmentId); diff --git a/server/src/services/page.service.ts b/server/src/services/page.service.ts index 805e7ea1c9..b16d527510 100644 --- a/server/src/services/page.service.ts +++ b/server/src/services/page.service.ts @@ -33,7 +33,6 @@ export class PageService { return { ...page, components }; }) ); - return pagesWithComponents; } @@ -49,6 +48,7 @@ export class PageService { newPage.handle = page.handle; newPage.index = page.index; newPage.appVersionId = appVersionId; + newPage.autoComputeLayout = true; return await manager.save(Page, newPage); }, appVersionId); @@ -81,6 +81,7 @@ export class PageService { newPage.handle = pageHandle; newPage.index = pageToClone.index + 1; newPage.appVersionId = appVersionId; + newPage.autoComputeLayout = true; const clonedpage = await this.pageRepository.save(newPage);
+ {prettyPrintedJson?.startsWith('{{') && prettyPrintedJson?.endsWith('{{') + ? prettyPrintedJson?.replace(/{{/g, '').replace(/}}/g, '') + : prettyPrintedJson} +
Components