diff --git a/.github/workflows/publish.yaml b/.github/workflows/publish.yaml index 4d8225e4d5..a8819dd699 100644 --- a/.github/workflows/publish.yaml +++ b/.github/workflows/publish.yaml @@ -69,8 +69,8 @@ jobs: cd ../react && pnpm pkg set peerDependencies.@jsonforms/core="${{ github.event.inputs.next_version }}" cd ../vanilla-renderers && pnpm pkg set peerDependencies.@jsonforms/core="${{ github.event.inputs.next_version }}" && pnpm pkg set peerDependencies.@jsonforms/react="${{ github.event.inputs.next_version }}" cd ../vue && pnpm pkg set peerDependencies.@jsonforms/core="${{ github.event.inputs.next_version }}" - cd ../vue-vanilla && pnpm pkg set peerDependencies.@jsonforms/core="${{ github.event.inputs.next_version }}" && pnpm pkg set peerDependencies.@jsonforms/vue="${{ github.event.inputs.next_version }}" - cd ../vue-vuetify && pnpm pkg set peerDependencies.@jsonforms/core="${{ github.event.inputs.next_version }}" && pnpm pkg set peerDependencies.@jsonforms/vue="${{ github.event.inputs.next_version }}" + cd ../vue-vanilla && pnpm pkg set peerDependencies.@jsonforms/core="${{ github.event.inputs.next_version }}" && pnpm pkg set peerDependencies.@flextract/json-forms-vue="${{ github.event.inputs.next_version }}" + cd ../vue-vuetify && pnpm pkg set peerDependencies.@jsonforms/core="${{ github.event.inputs.next_version }}" && pnpm pkg set peerDependencies.@flextract/json-forms-vue="${{ github.event.inputs.next_version }}" - name: 'Tag and Commit' run: | diff --git a/.gitignore b/.gitignore index 658b9f0e0e..9b901955c6 100644 --- a/.gitignore +++ b/.gitignore @@ -15,4 +15,6 @@ stats.html .coveralls.yml packages/examples-react/build -**/.angular/cache \ No newline at end of file +**/.angular/cache + +**/.npmrc diff --git a/lerna.json b/lerna.json index a036256722..5ad78ce88e 100644 --- a/lerna.json +++ b/lerna.json @@ -1,5 +1,5 @@ { - "version": "3.6.0", + "version": "4.0.3", "npmClient": "pnpm", "useWorkspaces": true } diff --git a/packages/angular-material/.eslintrc.js b/packages/angular-material/.eslintrc.js deleted file mode 100644 index 1eef8aa523..0000000000 --- a/packages/angular-material/.eslintrc.js +++ /dev/null @@ -1,53 +0,0 @@ -/* eslint-env node */ -/** @type {import('eslint').Linter.Config} */ -module.exports = { - root: true, - parser: '@typescript-eslint/parser', - parserOptions: { - /* Reset project because @angular-eslint/recommended sets this to an incompatible value */ - project: null, - }, - // There is no file include in ESLint. Thus, ignore all and include files via negative ignore (!) - ignorePatterns: ['/*', '!/src', '!/test', '!/example', '/example/dist'], - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:import/recommended', - 'plugin:import/typescript', - 'plugin:@angular-eslint/recommended', - 'plugin:@angular-eslint/template/process-inline-templates', - 'plugin:prettier/recommended', - ], - rules: { - '@angular-eslint/component-class-suffix': 'off', - '@angular-eslint/directive-class-suffix': 'off', - '@angular-eslint/no-conflicting-lifecycle': 'warn', - '@typescript-eslint/no-explicit-any': 'off', - // Base rule must be disabled to avoid incorrect errors - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': [ - 'warn', // or "error" - { - argsIgnorePattern: '^_', - varsIgnorePattern: '^_', - caughtErrorsIgnorePattern: '^_', - }, - ], - // workaround for - // https://github.com/import-js/eslint-plugin-import/issues/1810: - "import/no-unresolved": [ - "error", - { - ignore: [ - "@angular/cdk/.*", - "@angular/core/.*", - "@angular/material/.*", - "@angular/platform-browser/.*", - "@angular/platform-browser-dynamic/.*", - "core-js/es7/.*", - "zone.js/.*", - ] - } - ], - }, -}; diff --git a/packages/angular-material/.prettierrc.js b/packages/angular-material/.prettierrc.js deleted file mode 100644 index 2c26853c4a..0000000000 --- a/packages/angular-material/.prettierrc.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - $schema: 'http://json.schemastore.org/prettierrc', - singleQuote: true, - jsxSingleQuote: true, - endOfLine: 'auto', -}; diff --git a/packages/angular-material/LICENSE b/packages/angular-material/LICENSE deleted file mode 100644 index 064ca1d9d2..0000000000 --- a/packages/angular-material/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License - -Copyright (c) 2019 EclipseSource Munich -https://github.com/eclipsesource/jsonforms - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/packages/angular-material/README.md b/packages/angular-material/README.md deleted file mode 100644 index c8ab6e12af..0000000000 --- a/packages/angular-material/README.md +++ /dev/null @@ -1,137 +0,0 @@ -# JSON Forms - More Forms. Less Code - -_Complex forms in the blink of an eye_ - -JSON Forms eliminates the tedious task of writing fully-featured forms by hand by leveraging the capabilities of JSON, JSON Schema and Javascript. - -## Angular Material Renderers Package - -This is the JSONForms Angular Material renderers package. This package only contains renderers and must be combined with [JSON Forms Angular](https://github.com/eclipsesource/jsonforms/blob/master/packages/angular). - -See the official [documentation](https://jsonforms.io/docs/integrations/angular) and the JSON Forms Angular [seed repository](https://github.com/eclipsesource/jsonforms-angular-seed) for examples on how to integrate JSON Forms with your application. - -Check for all published JSON Forms packages. - -### Quick start - -Install JSON Forms Core, Angular and Angular Material Renderers - -```bash -npm i --save @jsonforms/core @jsonforms/angular @jsonforms/angular-material -``` - -Use the `json-forms` component for each form you want to render and hand over the renderer set. - -Example component file `app.component.ts`: - -```ts -import { Component } from '@angular/core'; -import { angularMaterialRenderers } from '@jsonforms/angular-material'; - -@Component({ - selector: 'app-root', - template: ``, -}) -export class AppComponent { - renderers = angularMaterialRenderers; - uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - label: false, - scope: '#/properties/done', - }, - { - type: 'Control', - scope: '#/properties/name', - }, - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/due_date', - }, - { - type: 'Control', - scope: '#/properties/recurrence', - }, - ], - }, - ], - }; - schema = { - type: 'object', - properties: { - name: { - type: 'string', - minLength: 1, - }, - done: { - type: 'boolean', - }, - due_date: { - type: 'string', - format: 'date', - }, - recurrence: { - type: 'string', - enum: ['Never', 'Daily', 'Weekly', 'Monthly'], - }, - }, - required: ['name', 'due_date'], - }; - data = {}; -} -``` - -Example module file `app.module.ts`: - -```ts -import { NgModule } from '@angular/core'; -import { BrowserModule } from '@angular/platform-browser'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { JsonFormsModule } from '@jsonforms/angular'; -import { JsonFormsAngularMaterialModule } from '@jsonforms/angular-material'; -import { AppComponent } from './app.component'; - -@NgModule({ - declarations: [AppComponent], - imports: [ - BrowserModule, - BrowserAnimationsModule, - JsonFormsModule, - JsonFormsAngularMaterialModule, - ], - schemas: [], - bootstrap: [AppComponent], -}) -export class AppModule {} -``` - -## License - -The JSON Forms project is licensed under the MIT License. See the [LICENSE file](https://github.com/eclipsesource/jsonforms/blob/master/LICENSE) for more information. - -## Roadmap - -Our current roadmap is available [here](https://github.com/eclipsesource/jsonforms/blob/master/ROADMAP.md). - -## Feedback, Help and Support - -JSON Forms is developed by [EclipseSource](https://eclipsesource.com). - -If you encounter any problems feel free to [open an issue](https://github.com/eclipsesource/jsonforms/issues/new/choose) on the repo. -For questions and discussions please use the [JSON Forms board](https://jsonforms.discourse.group). -You can also reach us via [email](mailto:jsonforms@eclipsesource.com?subject=JSON%20Forms). -In addition, EclipseSource also offers [professional support](https://jsonforms.io/support) for JSON Forms. - -## Migration - -See our [migration guide](https://github.com/eclipsesource/jsonforms/blob/master/MIGRATION.md) when updating JSON Forms. diff --git a/packages/angular-material/angular.json b/packages/angular-material/angular.json deleted file mode 100644 index b92d93fdd6..0000000000 --- a/packages/angular-material/angular.json +++ /dev/null @@ -1,84 +0,0 @@ -{ - "$schema": "../../node_modules/@angular/cli/lib/config/schema.json", - "version": 1, - "newProjectRoot": ".", - "projects": { - "example": { - "projectType": "application", - "schematics": { - "@schematics/angular:component": { - "style": "scss" - } - }, - "root": "example", - "sourceRoot": "example", - "prefix": "app", - "architect": { - "build": { - "builder": "@angular-devkit/build-angular:browser", - "options": { - "outputPath": "example/dist/", - "index": "example/index.html", - "main": "example/main.ts", - "polyfills": [ - "zone.js" - ], - "tsConfig": "tsconfig.example.json", - "inlineStyleLanguage": "scss", - "assets": [], - "styles": [ - "./node_modules/@angular/material/prebuilt-themes/indigo-pink.css" - ], - "scripts": [], - "allowedCommonJsDependencies": [ - "lodash", - "hammerjs" - ], - "optimization": false, - "buildOptimizer": false - } - }, - "serve": { - "builder": "@angular-devkit/build-angular:dev-server", - "options": { - "buildTarget": "example:build" - } - } - } - }, - "angular-material": { - "projectType": "library", - "root": ".", - "sourceRoot": ".", - "prefix": "lib", - "architect": { - "build": { - "builder": "@angular-devkit/build-angular:ng-packagr", - "options": { - "project": "ng-package.json" - }, - "configurations": { - "production": { - "tsConfig": "tsconfig.json" - }, - "development": { - "tsConfig": "tsconfig.json" - } - }, - "defaultConfiguration": "production" - }, - "test": { - "builder": "@angular-devkit/build-angular:karma", - "options": { - "karmaConfig": "karma.conf.js", - "tsConfig": "tsconfig.spec.json", - "polyfills": [ - "zone.js", - "zone.js/testing" - ] - } - } - } - } - } -} diff --git a/packages/angular-material/example/app/app.component.ts b/packages/angular-material/example/app/app.component.ts deleted file mode 100644 index 1d93aaef5a..0000000000 --- a/packages/angular-material/example/app/app.component.ts +++ /dev/null @@ -1,122 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2020 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { Component } from '@angular/core'; -import { ExampleDescription, getExamples } from '@jsonforms/examples'; -import { - JsonFormsI18nState, - UISchemaElement, - UISchemaTester, -} from '@jsonforms/core'; -import { angularMaterialRenderers } from '../../src/library'; - -const uiSchema = { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/buyer/properties/email', - }, - { - type: 'Control', - scope: '#/properties/status', - }, - ], -}; -const defaultI18n: JsonFormsI18nState = { - locale: 'en-US', -}; -const itemTester: UISchemaTester = (_schema, schemaPath, _path) => { - if (schemaPath === '#/properties/warehouseitems/items') { - return 10; - } - return -1; -}; -@Component({ - selector: 'app-root', - template: ` -

Angular Material Examples

- Data: {{ selectedExample.data | json }} -
- Example: - -
-
- - - Current locale: {{ i18n.locale }} - -
- - `, - standalone: false, -}) -export class AppComponent { - readonly renderers = angularMaterialRenderers; - readonly examples = getExamples(); - selectedExample: ExampleDescription | undefined; - i18n: JsonFormsI18nState; - readonly = false; - data: any; - uischemas: { tester: UISchemaTester; uischema: UISchemaElement }[] = [ - { tester: itemTester, uischema: uiSchema }, - ]; - - constructor() { - this.selectedExample = this.examples[19]; - this.i18n = this.selectedExample.i18n ?? defaultI18n; - } - - onChange(ev: any) { - this.selectedExample = this.examples.find( - (e) => e.name === ev.target.value - ); - this.i18n = this.selectedExample?.i18n ?? defaultI18n; - } - - changeLocale(locale: string) { - this.i18n = { ...this.i18n, locale }; - } - - toggleReadonly() { - this.readonly = !this.readonly; - } -} diff --git a/packages/angular-material/example/app/app.module.ts b/packages/angular-material/example/app/app.module.ts deleted file mode 100644 index 0acb9995c1..0000000000 --- a/packages/angular-material/example/app/app.module.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2020 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { BrowserModule } from '@angular/platform-browser'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { AppComponent } from './app.component'; -import { JsonFormsAngularMaterialModule } from '../../src/library'; - -@NgModule({ - declarations: [AppComponent], - imports: [ - BrowserModule, - BrowserAnimationsModule, - JsonFormsAngularMaterialModule, - ], - bootstrap: [AppComponent], - schemas: [CUSTOM_ELEMENTS_SCHEMA], -}) -export class AppModule {} diff --git a/packages/angular-material/example/index.html b/packages/angular-material/example/index.html deleted file mode 100644 index 07875afcb5..0000000000 --- a/packages/angular-material/example/index.html +++ /dev/null @@ -1,28 +0,0 @@ - - - - - JSON Forms Angular Material RendererSet - - - - - - - - - - - - diff --git a/packages/angular-material/example/main.ts b/packages/angular-material/example/main.ts deleted file mode 100644 index 2a4879ee7b..0000000000 --- a/packages/angular-material/example/main.ts +++ /dev/null @@ -1,36 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import 'zone.js'; -import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; - -import { AppModule } from './app/app.module'; - -platformBrowserDynamic().bootstrapModule(AppModule); - -/* -Copyright 2017-2018 Google Inc. All Rights Reserved. -Use of this source code is governed by an MIT-style license that -can be found in the LICENSE file at http://angular.io/license -*/ diff --git a/packages/angular-material/karma.conf.js b/packages/angular-material/karma.conf.js deleted file mode 100644 index 6f7af534d7..0000000000 --- a/packages/angular-material/karma.conf.js +++ /dev/null @@ -1,54 +0,0 @@ -// Karma configuration file, see link for more information -// https://karma-runner.github.io/1.0/config/configuration-file.html - -module.exports = function (config) { - config.set({ - basePath: '', - frameworks: ['jasmine', '@angular-devkit/build-angular'], - plugins: [ - require('karma-jasmine'), - require('karma-chrome-launcher'), - require('karma-jasmine-html-reporter'), - require('karma-coverage'), - require('@angular-devkit/build-angular/plugins/karma') - ], - client: { - jasmine: { - // you can add configuration options for Jasmine here - // the possible options are listed at https://jasmine.github.io/api/edge/Configuration.html - // for example, you can disable the random execution with `random: false` - // or set a specific seed with `seed: 4321` - }, - clearContext: false // leave Jasmine Spec Runner output visible in browser - }, - jasmineHtmlReporter: { - suppressAll: true // removes the duplicated traces - }, - coverageReporter: { - subdir: '.', - reporters: [ - { type: 'lcov' }, - { type: 'text-summary' } - ] - }, - reporters: ['progress', 'kjhtml', 'dots'], - - browsers: [ 'ChromeHeadlessNoSandbox' ], - customLaunchers: { - ChromeHeadlessNoSandbox: { - base: 'ChromeHeadless', - flags: ['--no-sandbox'], - }, - }, - restartOnFileChange: true, - logLevel: config.LOG_INFO, - - webpackMiddleware: { - stats: 'detailed', - }, - - webpackServer: { - noInfo: true, - }, - }); -}; diff --git a/packages/angular-material/ng-package.json b/packages/angular-material/ng-package.json deleted file mode 100644 index e13258f5df..0000000000 --- a/packages/angular-material/ng-package.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "$schema": "./node_modules/ng-packagr/ng-package.schema.json", - "dest": "./lib", - "allowedNonPeerDependencies": [ - "@jsonforms/angular", - "@jsonforms/core", - "hammerjs", - "lodash" - ] -} \ No newline at end of file diff --git a/packages/angular-material/package.json b/packages/angular-material/package.json deleted file mode 100644 index e908c39775..0000000000 --- a/packages/angular-material/package.json +++ /dev/null @@ -1,142 +0,0 @@ -{ - "name": "@jsonforms/angular-material", - "version": "3.6.0", - "description": "Material Renderer Set for Angular module of JSON Forms", - "repository": "https://github.com/eclipsesource/jsonforms", - "bugs": "https://github.com/eclipsesource/jsonforms/issues", - "homepage": "http://jsonforms.io/", - "license": "MIT", - "publishConfig": { - "access": "public" - }, - "directories": { - "src": "src", - "test": "test" - }, - "files": [ - "lib", - "src" - ], - "keywords": [ - "angular", - "material", - "form", - "forms", - "json", - "jsonforms", - "frontend", - "generator", - "input", - "renderengine", - "jsonschema", - "schema", - "uischema", - "layout", - "customization" - ], - "module": "./lib/fesm2022/jsonforms-angular-material.mjs", - "typings": "./lib/index.d.ts", - "scripts": { - "build": "ng build", - "build:examples-app": "pnpm run build && ng build --project=example", - "dev": "ng serve --project=example", - "clean": "rimraf lib coverage example/dist .nyc_output 2> /dev/null", - "lint": "eslint .", - "lint:fix": "eslint --fix .", - "report": "nyc report --reporter=html", - "doc": "typedoc --name 'JSON Forms Angular Material Renderers' --out docs src", - "test-dbg": "ng test", - "test": "ng test --watch=false", - "test-ci": "ng test --watch=false --browsers ChromeHeadlessNoSandbox", - "test-cov": "ng test --watch=false --code-coverage --browsers ChromeHeadlessNoSandbox", - "e2e": "npm run e2e-update && npm run e2e-test", - "e2e-test": "protractor ./test-config/protractor.conf.js", - "e2e-update": "webdriver-manager update --standalone false --gecko false" - }, - "nyc": { - "reporter": [ - "lcov", - "text-summary" - ] - }, - "peerDependencies": { - "@angular/animations": "^18.0.0 || ^19.0.0 || ^20.0.0", - "@angular/cdk": "^18.0.0 || ^19.0.0 || ^20.0.0", - "@angular/common": "^18.0.0 || ^19.0.0 || ^20.0.0", - "@angular/core": "^18.0.0 || ^19.0.0 || ^20.0.0", - "@angular/forms": "^18.0.0 || ^19.0.0 || ^20.0.0", - "@angular/material": "^18.0.0 || ^19.0.0 || ^20.0.0", - "@angular/platform-browser": "^18.0.0 || ^19.0.0 || ^20.0.0", - "@angular/router": "^18.0.0 || ^19.0.0 || ^20.0.0", - "@jsonforms/angular": "3.6.0", - "@jsonforms/core": "3.6.0", - "dayjs": "^1.11.10", - "rxjs": "^6.6.0 || ^7.4.0" - }, - "dependencies": { - "hammerjs": "2.0.8", - "lodash": "^4.17.21" - }, - "devDependencies": { - "@angular-devkit/build-angular": "^18.0.0", - "@angular-devkit/core": "^18.0.0", - "@angular-eslint/eslint-plugin": "^18.0.0", - "@angular-eslint/eslint-plugin-template": "^18.0.0", - "@angular-eslint/schematics": "^18.0.0", - "@angular-eslint/template-parser": "^18.0.0", - "@angular/animations": "^18.0.0", - "@angular/cdk": "^18.0.0", - "@angular/common": "^18.0.0", - "@angular/compiler": "^18.0.0", - "@angular/compiler-cli": "^18.0.0", - "@angular/core": "^18.0.0", - "@angular/forms": "^18.0.0", - "@angular/material": "^18.0.0", - "@angular/platform-browser": "^18.0.0", - "@angular/platform-browser-dynamic": "^18.0.0", - "@angular/router": "^18.0.0", - "@babel/plugin-proposal-nullish-coalescing-operator": "^7.16.5", - "@babel/plugin-proposal-optional-chaining": "^7.16.5", - "@jsonforms/angular": "workspace:*", - "@jsonforms/core": "workspace:*", - "@jsonforms/examples": "workspace:*", - "@ngtools/webpack": "^18.0.0", - "@types/jasmine": "~3.8.0", - "@types/lodash": "4.14.149", - "@types/node": "^22.13.8", - "@typescript-eslint/eslint-plugin": "^5.54.1", - "@typescript-eslint/parser": "^5.54.1", - "babel-loader": "^8.0.6", - "copy-webpack-plugin": "^11.0.0", - "dayjs": "^1.11.10", - "eslint": "^8.56.0", - "eslint-config-prettier": "^8.7.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-prettier": "^4.2.1", - "html-loader": "^0.5.5", - "http-server": "^14.1.1", - "jasmine": "^3.99.0", - "jasmine-spec-reporter": "^4.2.1", - "karma": "^6.4.3", - "karma-chrome-launcher": "^3.2.0", - "karma-coverage": "~2.0.3", - "karma-jasmine": "^2.0.1", - "karma-jasmine-html-reporter": "^1.7.0", - "karma-sourcemap-loader": "^0.3.8", - "karma-webpack": "^5.0.0", - "ng-packagr": "^18.0.0", - "null-loader": "^0.1.1", - "nyc": "^15.1.0", - "prettier": "^2.8.4", - "protractor": "^7.0.0", - "rimraf": "^3.0.2", - "rxjs": "^6.6.0", - "ts-loader": "^9.5.1", - "tslib": "^2.5.0", - "typedoc": "~0.25.3", - "typescript": "~5.5.0", - "webpack": "^5.78.0", - "yargs": "^17.7.2", - "zone.js": "~0.14.10" - } -} diff --git a/packages/angular-material/src/index.ts b/packages/angular-material/src/index.ts deleted file mode 100644 index 4aaf8f92ed..0000000000 --- a/packages/angular-material/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './public_api'; diff --git a/packages/angular-material/src/library/controls/autocomplete.renderer.ts b/packages/angular-material/src/library/controls/autocomplete.renderer.ts deleted file mode 100644 index a1d64b3eb8..0000000000 --- a/packages/angular-material/src/library/controls/autocomplete.renderer.ts +++ /dev/null @@ -1,176 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - ChangeDetectionStrategy, - Component, - Input, - OnInit, -} from '@angular/core'; -import type { MatAutocompleteSelectedEvent } from '@angular/material/autocomplete'; -import { JsonFormsAngularService, JsonFormsControl } from '@jsonforms/angular'; -import { - Actions, - composeWithUi, - ControlElement, - isEnumControl, - OwnPropsOfControl, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import type { Observable } from 'rxjs'; -import { map, startWith } from 'rxjs/operators'; - -/** - * To use this component you will need to add your own tester: - *

- * ...
- * export const AutocompleteControlRendererTester: RankedTester = rankWith(2, isEnumControl);
- * ...
- * 
- * Add the tester and renderer to JSONForms registry: - *

- * ...
- * { tester: AutocompleteControlRendererTester, renderer: AutocompleteControlRenderer },
- * ...
- * 
- * Furthermore you need to update your module. - *

- * ...
- * imports: [JsonFormsAngularMaterialModule, MatAutocompleteModule],
- * declarations: [AutocompleteControlRenderer]
- * ...
- * 
- * - */ -@Component({ - selector: 'AutocompleteControlRenderer', - template: ` - - {{ label }} - - - - {{ option }} - - - {{ - description - }} - {{ error }} - - `, - styles: [ - ` - :host { - display: flex; - flex-direction: row; - } - mat-form-field { - flex: 1 1 auto; - } - `, - ], - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false, -}) -export class AutocompleteControlRenderer - extends JsonFormsControl - implements OnInit -{ - @Input() options: string[]; - filteredOptions: Observable; - shouldFilter: boolean; - focused = false; - - constructor(jsonformsService: JsonFormsAngularService) { - super(jsonformsService); - } - getEventValue = (event: any) => event.target.value; - - ngOnInit() { - super.ngOnInit(); - this.shouldFilter = false; - this.filteredOptions = this.form.valueChanges.pipe( - startWith(''), - map((val) => this.filter(val)) - ); - } - - updateFilter(event: any) { - // ENTER - if (event.keyCode === 13) { - this.shouldFilter = false; - } else { - this.shouldFilter = true; - } - } - - onSelect(ev: MatAutocompleteSelectedEvent) { - const path = composeWithUi(this.uischema as ControlElement, this.path); - this.shouldFilter = false; - this.jsonFormsService.updateCore( - Actions.update(path, () => ev.option.value) - ); - this.triggerValidation(); - } - - filter(val: string): string[] { - return (this.options || this.scopedSchema.enum || []).filter( - (option) => - !this.shouldFilter || - !val || - option.toLowerCase().indexOf(val.toLowerCase()) === 0 - ); - } - protected getOwnProps(): OwnPropsOfAutoComplete { - return { - ...super.getOwnProps(), - options: this.options, - }; - } -} - -export const enumControlTester: RankedTester = rankWith(2, isEnumControl); - -interface OwnPropsOfAutoComplete extends OwnPropsOfControl { - options: string[]; -} diff --git a/packages/angular-material/src/library/controls/boolean.renderer.ts b/packages/angular-material/src/library/controls/boolean.renderer.ts deleted file mode 100644 index 37b1c798ad..0000000000 --- a/packages/angular-material/src/library/controls/boolean.renderer.ts +++ /dev/null @@ -1,87 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - ChangeDetectionStrategy, - ChangeDetectorRef, - Component, - ViewRef, -} from '@angular/core'; -import { JsonFormsAngularService, JsonFormsControl } from '@jsonforms/angular'; -import { isBooleanControl, RankedTester, rankWith } from '@jsonforms/core'; - -@Component({ - selector: 'BooleanControlRenderer', - template: ` -
- - {{ label }} - - {{ - description - }} - {{ error }} -
- `, - styles: [ - ` - :host { - display: flex; - flex-direction: row; - } - .boolean-control { - flex: 1 1 auto; - display: flex; - flex-direction: column; - justify-content: center; - height: 100%; - } - `, - ], - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false, -}) -export class BooleanControlRenderer extends JsonFormsControl { - constructor( - jsonformsService: JsonFormsAngularService, - private changeDetectionRef: ChangeDetectorRef - ) { - super(jsonformsService); - } - isChecked = () => this.data || false; - getEventValue = (event: any) => event.checked; - - mapAdditionalProps() { - if (!(this.changeDetectionRef as ViewRef).destroyed) { - this.changeDetectionRef.markForCheck(); - } - } -} - -export const booleanControlTester: RankedTester = rankWith(2, isBooleanControl); diff --git a/packages/angular-material/src/library/controls/date.renderer.ts b/packages/angular-material/src/library/controls/date.renderer.ts deleted file mode 100644 index c272e98ddc..0000000000 --- a/packages/angular-material/src/library/controls/date.renderer.ts +++ /dev/null @@ -1,179 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - Component, - ChangeDetectionStrategy, - Inject, - ViewEncapsulation, -} from '@angular/core'; -import { - defaultDateFormat, - isDateControl, - JsonFormsState, - RankedTester, - rankWith, - StatePropsOfControl, -} from '@jsonforms/core'; -import { JsonFormsAngularService, JsonFormsControl } from '@jsonforms/angular'; -import { DateAdapter, MAT_DATE_FORMATS } from '@angular/material/core'; -import { MyFormat } from '../util/date-format'; -import { DayJsDateAdapter } from '../util/dayjs-date-adapter'; -import { MatDatepicker } from '@angular/material/datepicker'; - -@Component({ - selector: 'DateControlRenderer', - template: ` - - {{ label }} - - - - {{ - description - }} - {{ error }} - - `, - styles: [ - ` - DateControlRenderer { - display: flex; - flex-direction: row; - } - .date-control-renderer { - flex: 1 1 auto; - } - .no-panel-navigation .mat-calendar-period-button { - pointer-events: none; - } - .no-panel-navigation .mat-calendar-arrow { - display: none; - } - `, - ], - encapsulation: ViewEncapsulation.None, - changeDetection: ChangeDetectionStrategy.OnPush, - providers: [ - { - provide: DateAdapter, - useClass: DayJsDateAdapter, - }, - { - provide: MAT_DATE_FORMATS, - useClass: MyFormat, - }, - ], - standalone: false, -}) -export class DateControlRenderer extends JsonFormsControl { - focused = false; - views: string[] = []; - startView = ''; - panelClass = ''; - - constructor( - jsonformsService: JsonFormsAngularService, - @Inject(MAT_DATE_FORMATS) private dateFormat: MyFormat, - @Inject(DateAdapter) private dateAdapter: DayJsDateAdapter - ) { - super(jsonformsService); - } - - getEventValue = (event: any) => { - const value = event.value ? event.value : event; - return this.dateAdapter.toSaveFormat(value); - }; - - protected mapToProps(state: JsonFormsState): StatePropsOfControl { - const props = super.mapToProps(state); - const saveFormat = this.uischema?.options?.dateSaveFormat - ? this.uischema.options.dateSaveFormat - : defaultDateFormat; - this.views = this.uischema?.options?.views - ? this.uischema.options.views - : ['year', 'month', 'day']; - this.setViewProperties(); - - const dateFormat = this.uischema?.options?.dateFormat; - - if (dateFormat) { - this.dateFormat.setDisplayFormat(dateFormat); - } - - this.dateAdapter.setSaveFormat(saveFormat); - if (this.jsonFormsService.getLocale()) { - this.dateAdapter.setLocale(this.jsonFormsService.getLocale()); - } - const date = this.dateAdapter.parseSaveFormat(props.data); - return { ...props, data: date }; - } - - yearSelected($event: any, datepicker: MatDatepicker) { - if (!this.views.includes('day') && !this.views.includes('month')) { - this.onChange($event); - datepicker.close(); - } - } - monthSelected($event: any, datepicker: MatDatepicker) { - if (!this.views.includes('day')) { - this.onChange($event); - datepicker.close(); - } - } - - setViewProperties() { - if (!this.views.includes('day')) { - this.startView = 'multi-year'; - this.panelClass = 'no-panel-navigation'; - } else { - this.startView = 'month'; - } - } -} - -export const DateControlRendererTester: RankedTester = rankWith( - 2, - isDateControl -); diff --git a/packages/angular-material/src/library/controls/index.ts b/packages/angular-material/src/library/controls/index.ts deleted file mode 100644 index ec7666823b..0000000000 --- a/packages/angular-material/src/library/controls/index.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -export * from './boolean.renderer'; -export * from './text.renderer'; -export * from './textarea.renderer'; -export * from './number.renderer'; -export * from './range.renderer'; -export * from './date.renderer'; -export * from './toggle.renderer'; -export * from './autocomplete.renderer'; diff --git a/packages/angular-material/src/library/controls/number.renderer.ts b/packages/angular-material/src/library/controls/number.renderer.ts deleted file mode 100644 index 297c30e324..0000000000 --- a/packages/angular-material/src/library/controls/number.renderer.ts +++ /dev/null @@ -1,187 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { ChangeDetectionStrategy, Component } from '@angular/core'; -import { JsonFormsAngularService, JsonFormsControl } from '@jsonforms/angular'; -import { - isIntegerControl, - isNumberControl, - or, - RankedTester, - rankWith, - StatePropsOfControl, -} from '@jsonforms/core'; -import merge from 'lodash/merge'; - -@Component({ - selector: 'NumberControlRenderer', - template: ` - - {{ label }} - - {{ - description - }} - {{ error }} - - `, - styles: [ - ` - :host { - display: flex; - flex-direction: row; - } - mat-form-field { - flex: 1 1 auto; - } - `, - ], - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false, -}) -export class NumberControlRenderer extends JsonFormsControl { - private readonly MAXIMUM_FRACTIONAL_DIGITS = 20; - - oldValue: string; - min: number; - max: number; - multipleOf: number; - locale: string; - numberFormat: Intl.NumberFormat; - decimalSeparator: string; - focused = false; - - constructor(jsonformsService: JsonFormsAngularService) { - super(jsonformsService); - } - - onChange(ev: any) { - const data = this.oldValue - ? ev.target.value.replace(this.oldValue, '') - : ev.target.value; - // ignore these - if ( - data === '.' || - data === ',' || - data === ' ' || - // if the value is 0 and we already have a value then we ignore - (data === '0' && - this.getValue() !== '' && - // a 0 in the first place - ((ev.target.selectionStart === 1 && ev.target.selectionEnd === 1) || - // or in the last place as this doesn't change the value (when there is a separator) - (ev.target.selectionStart === ev.target.value.length && - ev.target.selectionEnd === ev.target.value.length && - ev.target.value.indexOf(this.decimalSeparator) !== -1))) - ) { - this.oldValue = ev.target.value; - return; - } - super.onChange(ev); - this.oldValue = this.getValue(); - } - - getEventValue = (event: any) => { - const cleanPattern = new RegExp(`[^-+0-9${this.decimalSeparator}]`, 'g'); - const cleaned = event.target.value.replace(cleanPattern, ''); - const normalized = cleaned.replace(this.decimalSeparator, '.'); - - if (normalized === '') { - return undefined; - } - - // convert to number - const number = +normalized; - // if not a number just return the string - if (Number.isNaN(number)) { - return event.target.value; - } - return number; - }; - - getValue = () => { - if (this.data !== undefined && this.data !== null) { - if (typeof this.data === 'number') { - return this.numberFormat.format(this.data); - } - return this.data; - } - return ''; - }; - - mapAdditionalProps(props: StatePropsOfControl) { - if (this.scopedSchema) { - const testerContext = { - rootSchema: this.rootSchema, - config: props.config, - }; - const defaultStep = isNumberControl( - this.uischema, - this.rootSchema, - testerContext - ) - ? 0.1 - : 1; - this.min = this.scopedSchema.minimum; - this.max = this.scopedSchema.maximum; - this.multipleOf = this.scopedSchema.multipleOf || defaultStep; - const appliedUiSchemaOptions = merge( - {}, - props.config, - this.uischema.options - ); - const currentLocale = this.jsonFormsService.getLocale(); - if (this.locale === undefined || this.locale !== currentLocale) { - this.locale = currentLocale; - this.numberFormat = new Intl.NumberFormat(this.locale, { - useGrouping: appliedUiSchemaOptions.useGrouping, - maximumFractionDigits: this.MAXIMUM_FRACTIONAL_DIGITS, - }); - this.determineDecimalSeparator(); - this.oldValue = this.getValue(); - } - this.form.setValue(this.getValue()); - } - } - - private determineDecimalSeparator(): void { - const example = this.numberFormat.format(1.1); - this.decimalSeparator = example.charAt(1); - } -} -export const NumberControlRendererTester: RankedTester = rankWith( - 2, - or(isNumberControl, isIntegerControl) -); diff --git a/packages/angular-material/src/library/controls/range.renderer.ts b/packages/angular-material/src/library/controls/range.renderer.ts deleted file mode 100644 index 1d7bca3779..0000000000 --- a/packages/angular-material/src/library/controls/range.renderer.ts +++ /dev/null @@ -1,99 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - ChangeDetectionStrategy, - Component, - ChangeDetectorRef, -} from '@angular/core'; -import { JsonFormsAngularService, JsonFormsControl } from '@jsonforms/angular'; -import { isRangeControl, RankedTester, rankWith } from '@jsonforms/core'; - -@Component({ - selector: 'RangeControlRenderer', - template: ` -
- - - - - {{ - description - }} - {{ error }} -
- `, - styles: [ - ` - :host { - display: flex; - flex-direction: row; - } - .range-control { - flex: 1 1 auto; - display: flex; - flex-direction: column; - } - `, - ], - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false, -}) -export class RangeControlRenderer extends JsonFormsControl { - min: number; - max: number; - multipleOf: number; - focused = false; - - constructor( - jsonformsService: JsonFormsAngularService, - private changeDetectorRef: ChangeDetectorRef - ) { - super(jsonformsService); - } - getEventValue = (event: number) => Number(event); - mapAdditionalProps() { - if (this.scopedSchema) { - this.min = this.scopedSchema.minimum; - this.max = this.scopedSchema.maximum; - this.multipleOf = this.scopedSchema.multipleOf || 1; - } - this.changeDetectorRef.markForCheck(); - } -} -export const RangeControlRendererTester: RankedTester = rankWith( - 4, - isRangeControl -); diff --git a/packages/angular-material/src/library/controls/text.renderer.ts b/packages/angular-material/src/library/controls/text.renderer.ts deleted file mode 100644 index 0c388ff4a3..0000000000 --- a/packages/angular-material/src/library/controls/text.renderer.ts +++ /dev/null @@ -1,89 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { ChangeDetectionStrategy, Component } from '@angular/core'; -import { JsonFormsAngularService, JsonFormsControl } from '@jsonforms/angular'; -import { isStringControl, RankedTester, rankWith } from '@jsonforms/core'; - -@Component({ - selector: 'TextControlRenderer', - template: ` - - {{ label }} - - {{ - description - }} - {{ error }} - - `, - styles: [ - ` - :host { - display: flex; - flex-direction: row; - } - mat-form-field { - flex: 1 1 auto; - } - `, - ], - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false, -}) -export class TextControlRenderer extends JsonFormsControl { - focused = false; - constructor(jsonformsService: JsonFormsAngularService) { - super(jsonformsService); - } - getEventValue = (event: any) => event.target.value || undefined; - getType = (): string => { - if (this.uischema.options && this.uischema.options.format) { - return this.uischema.options.format; - } - if (this.scopedSchema && this.scopedSchema.format) { - switch (this.scopedSchema.format) { - case 'email': - return 'email'; - case 'tel': - return 'tel'; - default: - return 'text'; - } - } - return 'text'; - }; -} -export const TextControlRendererTester: RankedTester = rankWith( - 1, - isStringControl -); diff --git a/packages/angular-material/src/library/controls/textarea.renderer.ts b/packages/angular-material/src/library/controls/textarea.renderer.ts deleted file mode 100644 index c3ec5f56d3..0000000000 --- a/packages/angular-material/src/library/controls/textarea.renderer.ts +++ /dev/null @@ -1,72 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { ChangeDetectionStrategy, Component } from '@angular/core'; -import { JsonFormsAngularService, JsonFormsControl } from '@jsonforms/angular'; -import { isMultiLineControl, RankedTester, rankWith } from '@jsonforms/core'; - -@Component({ - selector: 'TextAreaRenderer', - template: ` - - {{ label }} - - {{ - description - }} - {{ error }} - - `, - styles: [ - ` - :host { - display: flex; - flex-direction: row; - } - mat-form-field { - flex: 1 1 auto; - } - `, - ], - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false, -}) -export class TextAreaRenderer extends JsonFormsControl { - focused = false; - constructor(jsonformsService: JsonFormsAngularService) { - super(jsonformsService); - } - getEventValue = (event: any) => event.target.value || undefined; -} -export const TextAreaRendererTester: RankedTester = rankWith( - 2, - isMultiLineControl -); diff --git a/packages/angular-material/src/library/controls/toggle.renderer.ts b/packages/angular-material/src/library/controls/toggle.renderer.ts deleted file mode 100644 index 15b2bf891f..0000000000 --- a/packages/angular-material/src/library/controls/toggle.renderer.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - ChangeDetectionStrategy, - Component, - ChangeDetectorRef, -} from '@angular/core'; -import { JsonFormsAngularService, JsonFormsControl } from '@jsonforms/angular'; -import { - and, - isBooleanControl, - optionIs, - RankedTester, - rankWith, -} from '@jsonforms/core'; - -@Component({ - selector: 'ToggleControlRenderer', - template: ` -
- - {{ label }} - - {{ - description - }} - {{ error }} -
- `, - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false, -}) -export class ToggleControlRenderer extends JsonFormsControl { - constructor( - jsonformsService: JsonFormsAngularService, - private changeDetectorRef: ChangeDetectorRef - ) { - super(jsonformsService); - } - isChecked = () => this.data || false; - getEventValue = (event: any) => event.checked; - mapAdditionalProps() { - this.changeDetectorRef.markForCheck(); - } -} - -export const ToggleControlRendererTester: RankedTester = rankWith( - 3, - and(isBooleanControl, optionIs('toggle', true)) -); diff --git a/packages/angular-material/src/library/index.ts b/packages/angular-material/src/library/index.ts deleted file mode 100644 index 64c286e7d7..0000000000 --- a/packages/angular-material/src/library/index.ts +++ /dev/null @@ -1,121 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import 'hammerjs'; -import { RankedTester } from '@jsonforms/core'; -export * from './module'; -import { - BooleanControlRenderer, - booleanControlTester, -} from './controls/boolean.renderer'; -import { - TextControlRenderer, - TextControlRendererTester, -} from './controls/text.renderer'; -import { - TextAreaRenderer, - TextAreaRendererTester, -} from './controls/textarea.renderer'; -import { - NumberControlRenderer, - NumberControlRendererTester, -} from './controls/number.renderer'; -import { - RangeControlRenderer, - RangeControlRendererTester, -} from './controls/range.renderer'; -import { - DateControlRenderer, - DateControlRendererTester, -} from './controls/date.renderer'; -import { - ToggleControlRenderer, - ToggleControlRendererTester, -} from './controls/toggle.renderer'; -import { - AutocompleteControlRenderer, - enumControlTester, -} from './controls/autocomplete.renderer'; -import { - ObjectControlRenderer, - ObjectControlRendererTester, -} from './other/object.renderer'; -import { - VerticalLayoutRenderer, - verticalLayoutTester, -} from './layouts/vertical-layout.renderer'; -import { - HorizontalLayoutRenderer, - horizontalLayoutTester, -} from './layouts/horizontal-layout.renderer'; - -import { - CategorizationTabLayoutRenderer, - categorizationTester, -} from './layouts/categorization-layout.renderer'; - -import { LabelRenderer, LabelRendererTester } from './other/label.renderer'; -import { - masterDetailTester, - MasterListComponent, -} from './other/master-detail/master'; -import { - GroupLayoutRenderer, - groupLayoutTester, -} from './layouts/group-layout.renderer'; -import { TableRenderer, TableRendererTester } from './other/table.renderer'; -import { - ArrayLayoutRenderer, - ArrayLayoutRendererTester, -} from './layouts/array-layout.renderer'; - -export * from './controls'; -export * from './layouts'; -export * from './other'; - -export const angularMaterialRenderers: { - tester: RankedTester; - renderer: any; -}[] = [ - // controls - { tester: booleanControlTester, renderer: BooleanControlRenderer }, - { tester: TextControlRendererTester, renderer: TextControlRenderer }, - { tester: TextAreaRendererTester, renderer: TextAreaRenderer }, - { tester: NumberControlRendererTester, renderer: NumberControlRenderer }, - { tester: RangeControlRendererTester, renderer: RangeControlRenderer }, - { tester: DateControlRendererTester, renderer: DateControlRenderer }, - { tester: ToggleControlRendererTester, renderer: ToggleControlRenderer }, - { tester: enumControlTester, renderer: AutocompleteControlRenderer }, - { tester: ObjectControlRendererTester, renderer: ObjectControlRenderer }, - // layouts - { tester: verticalLayoutTester, renderer: VerticalLayoutRenderer }, - { tester: groupLayoutTester, renderer: GroupLayoutRenderer }, - { tester: horizontalLayoutTester, renderer: HorizontalLayoutRenderer }, - { tester: categorizationTester, renderer: CategorizationTabLayoutRenderer }, - { tester: LabelRendererTester, renderer: LabelRenderer }, - { tester: ArrayLayoutRendererTester, renderer: ArrayLayoutRenderer }, - // other - { tester: masterDetailTester, renderer: MasterListComponent }, - { tester: TableRendererTester, renderer: TableRenderer }, -]; diff --git a/packages/angular-material/src/library/layouts/array-layout.renderer.ts b/packages/angular-material/src/library/layouts/array-layout.renderer.ts deleted file mode 100644 index 569b92075b..0000000000 --- a/packages/angular-material/src/library/layouts/array-layout.renderer.ts +++ /dev/null @@ -1,259 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2020 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { ChangeDetectionStrategy, Component, OnInit } from '@angular/core'; -import { - JsonFormsAngularService, - JsonFormsAbstractControl, -} from '@jsonforms/angular'; -import { - arrayDefaultTranslations, - ArrayLayoutProps, - ArrayTranslations, - createDefaultValue, - defaultJsonFormsI18nState, - findUISchema, - getArrayTranslations, - isObjectArrayWithNesting, - JsonFormsState, - mapDispatchToArrayControlProps, - mapStateToArrayLayoutProps, - OwnPropsOfRenderer, - Paths, - RankedTester, - rankWith, - setReadonly, - StatePropsOfArrayLayout, - UISchemaElement, - UISchemaTester, - unsetReadonly, -} from '@jsonforms/core'; - -@Component({ - selector: 'app-array-layout-renderer', - template: ` -
-
-

{{ label }}

- - - error_outline - - - -
-

{{ translations.noDataMessage }}

-
- - - - - - - - - - -
-
- `, - styles: [ - ` - .array-layout { - display: flex; - flex-direction: column; - gap: 16px; - } - .array-layout > * { - flex: 1 1 auto; - } - .array-layout-toolbar { - display: flex; - align-items: center; - } - .array-layout-title { - margin: 0; - } - .array-layout-toolbar > span { - flex: 1 1 auto; - } - .array-item { - padding: 16px; - } - ::ng-deep .error-message-tooltip { - white-space: pre-line; - } - `, - ], - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false, -}) -export class ArrayLayoutRenderer - extends JsonFormsAbstractControl - implements OnInit -{ - noData: boolean; - translations: ArrayTranslations = {}; - addItem: (path: string, value: any) => () => void; - moveItemUp: (path: string, index: number) => () => void; - moveItemDown: (path: string, index: number) => () => void; - removeItems: (path: string, toDelete: number[]) => () => void; - uischemas: { - tester: UISchemaTester; - uischema: UISchemaElement; - }[]; - constructor(jsonFormsService: JsonFormsAngularService) { - super(jsonFormsService); - } - mapToProps( - state: JsonFormsState - ): StatePropsOfArrayLayout & { translations: ArrayTranslations } { - const props = mapStateToArrayLayoutProps(state, this.getOwnProps()); - const t = - state.jsonforms.i18n?.translate ?? defaultJsonFormsI18nState.translate; - const translations = getArrayTranslations( - t, - arrayDefaultTranslations, - props.i18nKeyPrefix, - props.label - ); - return { ...props, translations }; - } - remove(index: number): void { - this.removeItems(this.propsPath, [index])(); - } - add(): void { - this.addItem( - this.propsPath, - createDefaultValue(this.scopedSchema, this.rootSchema) - )(); - } - up(index: number): void { - this.moveItemUp(this.propsPath, index)(); - } - down(index: number): void { - this.moveItemDown(this.propsPath, index)(); - } - ngOnInit() { - super.ngOnInit(); - const { addItem, removeItems, moveUp, moveDown } = - mapDispatchToArrayControlProps( - this.jsonFormsService.updateCore.bind(this.jsonFormsService) - ); - this.addItem = addItem; - this.moveItemUp = moveUp; - this.moveItemDown = moveDown; - this.removeItems = removeItems; - } - mapAdditionalProps( - props: ArrayLayoutProps & { translations: ArrayTranslations } - ) { - this.noData = !props.data || props.data === 0; - this.uischemas = props.uischemas; - this.translations = props.translations; - } - getProps(index: number): OwnPropsOfRenderer { - const uischema = findUISchema( - this.uischemas, - this.scopedSchema, - this.uischema.scope, - this.propsPath, - undefined, - this.uischema, - this.rootSchema - ); - if (this.isEnabled()) { - unsetReadonly(uischema); - } else { - setReadonly(uischema); - } - return { - schema: this.scopedSchema, - path: Paths.compose(this.propsPath, `${index}`), - uischema, - }; - } - trackByFn(index: number) { - return index; - } -} - -export const ArrayLayoutRendererTester: RankedTester = rankWith( - 4, - isObjectArrayWithNesting -); diff --git a/packages/angular-material/src/library/layouts/categorization-layout.renderer.ts b/packages/angular-material/src/library/layouts/categorization-layout.renderer.ts deleted file mode 100644 index 06c6465a74..0000000000 --- a/packages/angular-material/src/library/layouts/categorization-layout.renderer.ts +++ /dev/null @@ -1,108 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - and, - Categorization, - categorizationHasCategory, - Category, - defaultJsonFormsI18nState, - deriveLabelForUISchemaElement, - getAjv, - isVisible, - JsonFormsState, - Labelable, - mapStateToLayoutProps, - RankedTester, - rankWith, - uiTypeIs, -} from '@jsonforms/core'; -import { Component, OnInit } from '@angular/core'; -import { - JsonFormsAngularService, - JsonFormsBaseRenderer, -} from '@jsonforms/angular'; - -@Component({ - selector: 'jsonforms-categorization-layout', - template: ` - - -
- -
-
-
- `, - standalone: false, -}) -export class CategorizationTabLayoutRenderer - extends JsonFormsBaseRenderer - implements OnInit -{ - hidden: boolean; - visibleCategories: (Category | Categorization)[]; - categoryLabels: string[]; - - constructor(private jsonFormsService: JsonFormsAngularService) { - super(); - } - - ngOnInit() { - this.addSubscription( - this.jsonFormsService.$state.subscribe({ - next: (state: JsonFormsState) => { - const props = mapStateToLayoutProps(state, this.getOwnProps()); - this.hidden = !props.visible; - this.visibleCategories = this.uischema.elements.filter( - (category: Category | Categorization) => - isVisible(category, props.data, undefined, getAjv(state)) - ); - this.categoryLabels = this.visibleCategories.map((element) => - deriveLabelForUISchemaElement( - element as Labelable, - state.jsonforms.i18n?.translate ?? - defaultJsonFormsI18nState.translate - ) - ); - }, - }) - ); - } -} - -export const categorizationTester: RankedTester = rankWith( - 2, - and(uiTypeIs('Categorization'), categorizationHasCategory) -); diff --git a/packages/angular-material/src/library/layouts/group-layout.renderer.ts b/packages/angular-material/src/library/layouts/group-layout.renderer.ts deleted file mode 100644 index ecfb6cd505..0000000000 --- a/packages/angular-material/src/library/layouts/group-layout.renderer.ts +++ /dev/null @@ -1,77 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - ChangeDetectionStrategy, - ChangeDetectorRef, - Component, -} from '@angular/core'; -import { GroupLayout, RankedTester, rankWith, uiTypeIs } from '@jsonforms/core'; -import { LayoutRenderer } from './layout.renderer'; -import { JsonFormsAngularService } from '@jsonforms/angular'; - -@Component({ - selector: 'GroupLayoutRenderer', - template: ` - - {{ label }} -
- -
-
- `, - styles: [ - ` - .group-layout { - display: flex; - flex-direction: column; - gap: 16px; - padding: 16px; - } - .group-layout > div { - flex: 1 1 auto; - } - `, - ], - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false, -}) -export class GroupLayoutRenderer extends LayoutRenderer { - constructor( - jsonFormsService: JsonFormsAngularService, - changeDetectionRef: ChangeDetectorRef - ) { - super(jsonFormsService, changeDetectionRef); - } -} -export const groupLayoutTester: RankedTester = rankWith(1, uiTypeIs('Group')); diff --git a/packages/angular-material/src/library/layouts/horizontal-layout.renderer.ts b/packages/angular-material/src/library/layouts/horizontal-layout.renderer.ts deleted file mode 100644 index 86f6f4c7c2..0000000000 --- a/packages/angular-material/src/library/layouts/horizontal-layout.renderer.ts +++ /dev/null @@ -1,84 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - ChangeDetectionStrategy, - ChangeDetectorRef, - Component, -} from '@angular/core'; -import { - HorizontalLayout, - RankedTester, - rankWith, - uiTypeIs, -} from '@jsonforms/core'; -import { LayoutRenderer } from './layout.renderer'; -import { JsonFormsAngularService } from '@jsonforms/angular'; - -@Component({ - selector: 'HorizontalLayoutRenderer', - template: ` -
-
- -
-
- `, - styles: [ - ` - .horizontal-layout { - display: flex; - gap: 16px; - flex-flow: row wrap; - align-items: flex-start; - place-content: flex-start center; - } - .horizontal-layout > div { - flex: 1 1 auto; - } - `, - ], - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false, -}) -export class HorizontalLayoutRenderer extends LayoutRenderer { - constructor( - jsonFormsService: JsonFormsAngularService, - changeDetectionRef: ChangeDetectorRef - ) { - super(jsonFormsService, changeDetectionRef); - } -} -export const horizontalLayoutTester: RankedTester = rankWith( - 1, - uiTypeIs('HorizontalLayout') -); diff --git a/packages/angular-material/src/library/layouts/index.ts b/packages/angular-material/src/library/layouts/index.ts deleted file mode 100644 index 61c0e338b8..0000000000 --- a/packages/angular-material/src/library/layouts/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -export * from './array-layout.renderer'; -export * from './horizontal-layout.renderer'; -export * from './vertical-layout.renderer'; -export * from './categorization-layout.renderer'; -export * from './layout.renderer'; -export * from './group-layout.renderer'; diff --git a/packages/angular-material/src/library/layouts/layout.renderer.ts b/packages/angular-material/src/library/layouts/layout.renderer.ts deleted file mode 100644 index 23d57aab05..0000000000 --- a/packages/angular-material/src/library/layouts/layout.renderer.ts +++ /dev/null @@ -1,97 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - OnInit, - ChangeDetectorRef, - Component, - PipeTransform, - Pipe, -} from '@angular/core'; -import { - JsonFormsAngularService, - JsonFormsBaseRenderer, -} from '@jsonforms/angular'; -import { - JsonFormsState, - Layout, - mapStateToLayoutProps, - OwnPropsOfRenderer, - UISchemaElement, - JsonSchema, -} from '@jsonforms/core'; - -@Component({ - template: '', - standalone: false, -}) -export class LayoutRenderer - extends JsonFormsBaseRenderer - implements OnInit -{ - hidden: boolean; - label: string | undefined; - - constructor( - private jsonFormsService: JsonFormsAngularService, - protected changeDetectionRef: ChangeDetectorRef - ) { - super(); - } - - ngOnInit() { - this.addSubscription( - this.jsonFormsService.$state.subscribe({ - next: (state: JsonFormsState) => { - const props = mapStateToLayoutProps(state, this.getOwnProps()); - this.label = props.label; - this.hidden = !props.visible; - this.changeDetectionRef.markForCheck(); - }, - }) - ); - } - - trackElement(_index: number, renderProp: OwnPropsOfRenderer): string { - return renderProp - ? renderProp.path + JSON.stringify(renderProp.uischema) - : null; - } -} - -@Pipe({ name: 'layoutChildrenRenderProps', standalone: false }) -export class LayoutChildrenRenderPropsPipe implements PipeTransform { - transform( - uischema: Layout, - schema: JsonSchema, - path: string - ): OwnPropsOfRenderer[] { - const elements = (uischema.elements || []).map((el: UISchemaElement) => ({ - uischema: el, - schema: schema, - path: path, - })); - return elements; - } -} diff --git a/packages/angular-material/src/library/layouts/vertical-layout.renderer.ts b/packages/angular-material/src/library/layouts/vertical-layout.renderer.ts deleted file mode 100644 index 80a1cdafdb..0000000000 --- a/packages/angular-material/src/library/layouts/vertical-layout.renderer.ts +++ /dev/null @@ -1,79 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - ChangeDetectionStrategy, - ChangeDetectorRef, - Component, -} from '@angular/core'; -import { - RankedTester, - rankWith, - uiTypeIs, - VerticalLayout, -} from '@jsonforms/core'; -import { LayoutRenderer } from './layout.renderer'; -import { JsonFormsAngularService } from '@jsonforms/angular'; - -@Component({ - selector: 'VerticalLayoutRenderer', - template: ` -
-
- -
-
- `, - styles: [ - ` - .vertical-layout { - display: flex; - flex-direction: column; - gap: 16px; - } - .vertical-layout > div { - flex: 1 1 auto; - } - `, - ], - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false, -}) -export class VerticalLayoutRenderer extends LayoutRenderer { - constructor( - jsonFormsService: JsonFormsAngularService, - changeDetectionRef: ChangeDetectorRef - ) { - super(jsonFormsService, changeDetectionRef); - } -} -export const verticalLayoutTester: RankedTester = rankWith( - 1, - uiTypeIs('VerticalLayout') -); diff --git a/packages/angular-material/src/library/module.ts b/packages/angular-material/src/library/module.ts deleted file mode 100644 index 15866aeb2a..0000000000 --- a/packages/angular-material/src/library/module.ts +++ /dev/null @@ -1,138 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { CommonModule } from '@angular/common'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MatAutocompleteModule } from '@angular/material/autocomplete'; -import { MatButtonModule } from '@angular/material/button'; -import { MatBadgeModule } from '@angular/material/badge'; -import { MatCardModule } from '@angular/material/card'; -import { MatCheckboxModule } from '@angular/material/checkbox'; -import { MatDatepickerModule } from '@angular/material/datepicker'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatTooltipModule } from '@angular/material/tooltip'; -import { MatIconModule } from '@angular/material/icon'; -import { MatInputModule } from '@angular/material/input'; -import { MatListModule } from '@angular/material/list'; -import { MatNativeDateModule } from '@angular/material/core'; -import { MatSelectModule } from '@angular/material/select'; -import { MatSidenavModule } from '@angular/material/sidenav'; -import { MatSliderModule } from '@angular/material/slider'; -import { MatSlideToggleModule } from '@angular/material/slide-toggle'; -import { MatTableModule } from '@angular/material/table'; -import { MatTabsModule } from '@angular/material/tabs'; -import { MatToolbarModule } from '@angular/material/toolbar'; -import { CUSTOM_ELEMENTS_SCHEMA, NgModule } from '@angular/core'; -import { JsonFormsModule } from '@jsonforms/angular'; -import { AutocompleteControlRenderer } from './controls/autocomplete.renderer'; -import { BooleanControlRenderer } from './controls/boolean.renderer'; -import { DateControlRenderer } from './controls/date.renderer'; -import { NumberControlRenderer } from './controls/number.renderer'; -import { RangeControlRenderer } from './controls/range.renderer'; -import { TextAreaRenderer } from './controls/textarea.renderer'; -import { TextControlRenderer } from './controls/text.renderer'; -import { ToggleControlRenderer } from './controls/toggle.renderer'; -import { LabelRenderer } from './other/label.renderer'; -import { JsonFormsDetailComponent } from './other/master-detail/detail'; -import { MasterListComponent } from './other/master-detail/master'; -import { ObjectControlRenderer } from './other/object.renderer'; -import { TableRenderer, GetProps } from './other/table.renderer'; -import { CategorizationTabLayoutRenderer } from './layouts/categorization-layout.renderer'; -import { GroupLayoutRenderer } from './layouts/group-layout.renderer'; -import { HorizontalLayoutRenderer } from './layouts/horizontal-layout.renderer'; -import { VerticalLayoutRenderer } from './layouts/vertical-layout.renderer'; -import { ArrayLayoutRenderer } from './layouts/array-layout.renderer'; -import { LayoutChildrenRenderPropsPipe } from './layouts'; - -@NgModule({ - imports: [ - CommonModule, - JsonFormsModule, - MatFormFieldModule, - MatCheckboxModule, - MatInputModule, - MatSliderModule, - MatSlideToggleModule, - MatNativeDateModule, - MatDatepickerModule, - MatTabsModule, - MatSidenavModule, - MatListModule, - ReactiveFormsModule, - MatCardModule, - MatSelectModule, - MatButtonModule, - MatIconModule, - MatAutocompleteModule, - MatTableModule, - MatToolbarModule, - MatTooltipModule, - MatBadgeModule, - ], - declarations: [ - BooleanControlRenderer, - TextAreaRenderer, - TextControlRenderer, - NumberControlRenderer, - RangeControlRenderer, - DateControlRenderer, - ToggleControlRenderer, - VerticalLayoutRenderer, - HorizontalLayoutRenderer, - CategorizationTabLayoutRenderer, - GroupLayoutRenderer, - LabelRenderer, - MasterListComponent, - JsonFormsDetailComponent, - ObjectControlRenderer, - AutocompleteControlRenderer, - TableRenderer, - ArrayLayoutRenderer, - LayoutChildrenRenderPropsPipe, - GetProps, - ], - exports: [ - CommonModule, - JsonFormsModule, - MatFormFieldModule, - MatCheckboxModule, - MatInputModule, - MatSliderModule, - MatSlideToggleModule, - MatNativeDateModule, - MatDatepickerModule, - MatTabsModule, - MatSidenavModule, - MatListModule, - ReactiveFormsModule, - MatCardModule, - MatSelectModule, - MatButtonModule, - MatIconModule, - MatAutocompleteModule, - ], - schemas: [CUSTOM_ELEMENTS_SCHEMA], - providers: [], -}) -export class JsonFormsAngularMaterialModule {} diff --git a/packages/angular-material/src/library/other/index.ts b/packages/angular-material/src/library/other/index.ts deleted file mode 100644 index ecdab3c25d..0000000000 --- a/packages/angular-material/src/library/other/index.ts +++ /dev/null @@ -1,28 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -export * from './label.renderer'; -export * from './master-detail'; -export * from './object.renderer'; -export * from './table.renderer'; diff --git a/packages/angular-material/src/library/other/label.renderer.ts b/packages/angular-material/src/library/other/label.renderer.ts deleted file mode 100644 index ec5f7e4263..0000000000 --- a/packages/angular-material/src/library/other/label.renderer.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { Component, OnInit } from '@angular/core'; -import { - JsonFormsAngularService, - JsonFormsBaseRenderer, -} from '@jsonforms/angular'; -import { - JsonFormsState, - LabelElement, - mapStateToLabelProps, - OwnPropsOfLabel, - RankedTester, - rankWith, - uiTypeIs, -} from '@jsonforms/core'; - -@Component({ - selector: 'LabelRenderer', - template: ` `, - styles: [ - ` - :host { - flex: 1 1 auto; - } - `, - ], - standalone: false, -}) -export class LabelRenderer - extends JsonFormsBaseRenderer - implements OnInit -{ - label: string; - visible: boolean; - - constructor(private jsonFormsService: JsonFormsAngularService) { - super(); - } - ngOnInit() { - this.addSubscription( - this.jsonFormsService.$state.subscribe({ - next: (state: JsonFormsState) => { - const props = mapStateToLabelProps( - state, - this.getOwnProps() as OwnPropsOfLabel - ); - this.visible = props.visible; - this.label = props.text; - }, - }) - ); - } -} - -export const LabelRendererTester: RankedTester = rankWith(4, uiTypeIs('Label')); diff --git a/packages/angular-material/src/library/other/master-detail/detail.ts b/packages/angular-material/src/library/other/master-detail/detail.ts deleted file mode 100644 index 832815b7f5..0000000000 --- a/packages/angular-material/src/library/other/master-detail/detail.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { Component, Input } from '@angular/core'; - -@Component({ - selector: 'jsonforms-detail', - template: ` -
- -
- `, - standalone: false, -}) -export class JsonFormsDetailComponent { - _item: any; - _schema: any; - initialized = false; - - @Input() - set item(item: any) { - if (item) { - this._item = item; - this.initialized = true; - } - } -} diff --git a/packages/angular-material/src/library/other/master-detail/index.ts b/packages/angular-material/src/library/other/master-detail/index.ts deleted file mode 100644 index 60fb7a1b82..0000000000 --- a/packages/angular-material/src/library/other/master-detail/index.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -export * from './detail'; -export * from './master'; diff --git a/packages/angular-material/src/library/other/master-detail/master.ts b/packages/angular-material/src/library/other/master-detail/master.ts deleted file mode 100644 index a918d69de9..0000000000 --- a/packages/angular-material/src/library/other/master-detail/master.ts +++ /dev/null @@ -1,310 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import some from 'lodash/some'; -import get from 'lodash/get'; -import { - ChangeDetectionStrategy, - ChangeDetectorRef, - Component, - OnInit, -} from '@angular/core'; -import { - JsonFormsAngularService, - JsonFormsArrayControl, -} from '@jsonforms/angular'; -import { - ArrayControlProps, - arrayDefaultTranslations, - ArrayTranslations, - ControlElement, - createDefaultValue, - decode, - defaultJsonFormsI18nState, - findUISchema, - getArrayTranslations, - getFirstPrimitiveProp, - JsonFormsState, - mapDispatchToArrayControlProps, - mapStateToArrayControlProps, - RankedTester, - rankWith, - setReadonly, - StatePropsOfArrayControl, - uiTypeIs, -} from '@jsonforms/core'; - -const keywords = ['#', 'properties', 'items']; - -export const removeSchemaKeywords = (path: string) => { - return decode( - path - .split('/') - .filter((s) => !some(keywords, (key) => key === s)) - .join('.') - ); -}; - -@Component({ - selector: 'jsonforms-list-with-detail-master', - template: ` - - - - {{ - translations.noDataMessage - }} - - {{ item.label || 'No label set' }} - - - - - - - - - - `, - styles: [ - ` - /* TODO(mdc-migration): The following rule targets internal classes of list that may no longer apply for the MDC version. */ - mat-list-item.selected { - background: rgba(0, 0, 0, 0.04); - } - .container { - height: 100vh; - } - .content { - padding: 15px; - background-color: #fff; - } - .add-button { - float: right; - margin-top: 0.5em; - margin-right: 0.25em; - } - .button { - float: right; - margin-right: 0.25em; - } - .item-button { - position: absolute; - top: 0; - right: 0; - } - .hide { - display: none; - } - .show { - display: inline-block; - } - mat-sidenav { - width: 20%; - } - `, - ], - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false, -}) -export class MasterListComponent - extends JsonFormsArrayControl - implements OnInit -{ - masterItems: any[]; - selectedItem: any; - selectedItemIdx: number; - addItem: (path: string, value: any) => () => void; - removeItems: (path: string, toDelete: number[]) => () => void; - highlightedIdx: number; - translations: ArrayTranslations; - - constructor( - jsonformsService: JsonFormsAngularService, - private changeDetectorRef: ChangeDetectorRef - ) { - super(jsonformsService); - } - - onListItemHover(idx: number) { - this.highlightedIdx = idx; - } - - trackElement(_index: number, element: any) { - return element ? element.label : null; - } - - ngOnInit() { - super.ngOnInit(); - const dispatch = this.jsonFormsService.updateCore.bind( - this.jsonFormsService - ); - const { addItem, removeItems } = mapDispatchToArrayControlProps(dispatch); - this.addItem = addItem; - this.removeItems = removeItems; - } - - mapAdditionalProps( - props: ArrayControlProps & { translations: ArrayTranslations } - ) { - const { data, path, schema, uischema } = props; - const controlElement = uischema as ControlElement; - this.propsPath = props.path; - const detailUISchema = findUISchema( - props.uischemas, - schema, - `${controlElement.scope}/items`, - props.path, - 'VerticalLayout', - controlElement, - props.rootSchema - ); - - if (!this.isEnabled()) { - setReadonly(detailUISchema); - } - - this.translations = props.translations; - - const masterItems = (data || []).map((d: any, index: number) => { - const labelRefInstancePath = - controlElement.options?.labelRef && - removeSchemaKeywords(controlElement.options.labelRef); - const isPrimitive = d !== undefined && typeof d !== 'object'; - const masterItem = { - label: isPrimitive - ? d.toString() - : get(d, labelRefInstancePath ?? getFirstPrimitiveProp(schema)), - data: d, - path: `${path}.${index}`, - schema, - uischema: detailUISchema, - }; - return masterItem; - }); - this.masterItems = masterItems; - let newSelectedIdx = -1; - let newSelectedItem; - if (this.masterItems.length === 0) { - // unset select if no elements anymore - this.selectedItem = undefined; - this.selectedItemIdx = -1; - } else if (this.selectedItemIdx >= this.masterItems.length) { - // the previous index is to high, reduce it to the maximal possible - newSelectedIdx = this.masterItems.length - 1; - newSelectedItem = this.masterItems[newSelectedIdx]; - } else if ( - this.selectedItemIdx !== -1 && - this.selectedItemIdx < this.masterItems.length - ) { - newSelectedIdx = this.selectedItemIdx; - newSelectedItem = this.masterItems[this.selectedItemIdx]; - } - - if ( - newSelectedItem !== undefined && - this.selectedItem !== undefined && - (newSelectedItem.label === this.selectedItem.label || - newSelectedItem.path === this.selectedItem.path) - ) { - // after checking that we are on the same path, set selection - this.selectedItem = newSelectedItem; - this.selectedItemIdx = newSelectedIdx; - } else if (this.masterItems.length > 0) { - // pre-select 1st entry if the previous selected element as fallback - this.selectedItem = this.masterItems[0]; - this.selectedItemIdx = 0; - } - this.changeDetectorRef.markForCheck(); - } - - onSelect(item: any, idx: number): void { - this.selectedItem = item; - this.selectedItemIdx = idx; - } - - onAddClick() { - this.addItem( - this.propsPath, - createDefaultValue(this.scopedSchema, this.rootSchema) - )(); - } - - onDeleteClick(item: number) { - this.removeItems(this.propsPath, [item])(); - } - - protected mapToProps( - state: JsonFormsState - ): StatePropsOfArrayControl & { translations: ArrayTranslations } { - const props = mapStateToArrayControlProps(state, this.getOwnProps()); - const t = - state.jsonforms.i18n?.translate ?? defaultJsonFormsI18nState.translate; - const translations = getArrayTranslations( - t, - arrayDefaultTranslations, - props.i18nKeyPrefix, - props.label - ); - return { ...props, translations }; - } -} - -export const masterDetailTester: RankedTester = rankWith( - 4, - uiTypeIs('ListWithDetail') -); diff --git a/packages/angular-material/src/library/other/object.renderer.ts b/packages/angular-material/src/library/other/object.renderer.ts deleted file mode 100644 index 7f5e5e96d5..0000000000 --- a/packages/angular-material/src/library/other/object.renderer.ts +++ /dev/null @@ -1,107 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import isEmpty from 'lodash/isEmpty'; -import startCase from 'lodash/startCase'; -import { ChangeDetectionStrategy, Component } from '@angular/core'; -import { - JsonFormsAngularService, - JsonFormsControlWithDetail, -} from '@jsonforms/angular'; -import { - ControlWithDetailProps, - findUISchema, - Generate, - GroupLayout, - isObjectControl, - RankedTester, - rankWith, - setReadonly, - UISchemaElement, -} from '@jsonforms/core'; -import cloneDeep from 'lodash/cloneDeep'; - -@Component({ - selector: 'ObjectRenderer', - template: ` - - - - - `, - styles: [ - ` - .object-layout { - padding: 16px; - } - `, - ], - changeDetection: ChangeDetectionStrategy.OnPush, - standalone: false, -}) -export class ObjectControlRenderer extends JsonFormsControlWithDetail { - detailUiSchema: UISchemaElement; - constructor(jsonformsService: JsonFormsAngularService) { - super(jsonformsService); - } - mapAdditionalProps(props: ControlWithDetailProps) { - this.detailUiSchema = findUISchema( - props.uischemas, - props.schema, - props.uischema.scope, - props.path, - () => { - const newSchema = cloneDeep(props.schema); - // delete unsupported operators - delete newSchema.oneOf; - delete newSchema.anyOf; - delete newSchema.allOf; - return Generate.uiSchema( - newSchema, - 'Group', - undefined, - this.rootSchema - ); - }, - props.uischema, - props.rootSchema - ); - if (isEmpty(props.path)) { - this.detailUiSchema.type = 'VerticalLayout'; - } else { - (this.detailUiSchema as GroupLayout).label = startCase(props.path); - } - if (!this.isEnabled()) { - setReadonly(this.detailUiSchema); - } - } -} -export const ObjectControlRendererTester: RankedTester = rankWith( - 2, - isObjectControl -); diff --git a/packages/angular-material/src/library/other/table.renderer.ts b/packages/angular-material/src/library/other/table.renderer.ts deleted file mode 100644 index 6d86304136..0000000000 --- a/packages/angular-material/src/library/other/table.renderer.ts +++ /dev/null @@ -1,286 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import startCase from 'lodash/startCase'; -import { Component, OnInit, Pipe, PipeTransform } from '@angular/core'; -import { - JsonFormsAngularService, - JsonFormsArrayControl, -} from '@jsonforms/angular'; -import { - ArrayControlProps, - ArrayTranslations, - ControlElement, - createDefaultValue, - deriveTypes, - encode, - isObjectArrayControl, - isPrimitiveArrayControl, - JsonSchema, - mapDispatchToArrayControlProps, - or, - OwnPropsOfRenderer, - Paths, - RankedTester, - rankWith, - setReadonly, - UISchemaElement, -} from '@jsonforms/core'; - -@Component({ - selector: 'TableRenderer', - template: ` -
- - - - - - - - - - - - - - - - - - -
- -
- - - -
{{ item.header }} - -
-
- `, - styles: [ - 'table {width: 100%;}', - '.cdk-column-action { width: 15%;}', - '.sort-column { min-width: 12vw;}', - '.table-container {max-width: 100%; overflow: auto;}', - ], - standalone: false, -}) -export class TableRenderer extends JsonFormsArrayControl implements OnInit { - detailUiSchema: UISchemaElement; - displayedColumns: string[]; - items: ColumnDescription[]; - readonly columnsToIgnore = ['array', 'object']; - addItem: (path: string, value: any) => () => void; - moveItemUp: (path: string, index: number) => () => void; - moveItemDown: (path: string, index: number) => () => void; - removeItems: (path: string, toDelete: number[]) => () => void; - translations: ArrayTranslations = {}; - - constructor(jsonformsService: JsonFormsAngularService) { - super(jsonformsService); - } - trackElement(index: number, _element: any) { - return index ? index : null; - } - mapAdditionalProps( - props: ArrayControlProps & { translations: ArrayTranslations } - ) { - this.items = this.generateCells(props.schema, props.path); - this.displayedColumns = this.items.map((item) => item.property); - if (this.isEnabled()) { - this.displayedColumns.push('action'); - } - this.translations = props.translations; - } - - remove(index: number): void { - this.removeItems(this.propsPath, [index])(); - } - add(): void { - this.addItem( - this.propsPath, - createDefaultValue(this.scopedSchema, this.rootSchema) - )(); - } - up(index: number): void { - this.moveItemUp(this.propsPath, index)(); - } - down(index: number): void { - this.moveItemDown(this.propsPath, index)(); - } - ngOnInit() { - super.ngOnInit(); - - const { addItem, removeItems, moveUp, moveDown } = - mapDispatchToArrayControlProps( - this.jsonFormsService.updateCore.bind(this.jsonFormsService) - ); - this.addItem = addItem; - this.moveItemUp = moveUp; - this.moveItemDown = moveDown; - this.removeItems = removeItems; - } - - generateCells = ( - schema: JsonSchema, - rowPath: string - ): ColumnDescription[] => { - if (schema.type === 'object') { - return this.getValidColumnProps(schema).map((prop) => { - const encProp = encode(prop); - const uischema = controlWithoutLabel(`#/properties/${encProp}`); - if (!this.isEnabled()) { - setReadonly(uischema); - } - return { - property: prop, - header: startCase(prop), - props: { - schema: schema, - uischema, - path: rowPath, - }, - }; - }); - } - // needed to correctly render input control for multi attributes - return [ - { - property: 'DUMMY', - header: this.label, - props: { - schema: schema, - uischema: controlWithoutLabel(`#`), - path: rowPath, - }, - }, - ]; - }; - - getValidColumnProps = (scopedSchema: JsonSchema) => { - if (scopedSchema.type === 'object') { - return Object.keys(scopedSchema.properties).filter((prop) => { - const types = deriveTypes(scopedSchema.properties[prop]); - if (types.length > 1) { - return false; - } - return this.columnsToIgnore.indexOf(types[0]) === -1; - }); - } - // primitives - return ['']; - }; -} -export const TableRendererTester: RankedTester = rankWith( - 3, - or(isObjectArrayControl, isPrimitiveArrayControl) -); - -interface ColumnDescription { - property: string; - header: string; - props: OwnPropsOfRenderer; -} - -export const controlWithoutLabel = (scope: string): ControlElement => ({ - type: 'Control', - scope: scope, - label: false, -}); - -@Pipe({ name: 'getProps', standalone: false }) -export class GetProps implements PipeTransform { - transform(index: number, props: OwnPropsOfRenderer) { - const rowPath = Paths.compose(props.path, `${index}`); - return { - schema: props.schema, - uischema: props.uischema, - path: rowPath, - }; - } -} diff --git a/packages/angular-material/src/library/other/util.ts b/packages/angular-material/src/library/other/util.ts deleted file mode 100644 index 7672002873..0000000000 --- a/packages/angular-material/src/library/other/util.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - ControlElement, - getAjv, - getData, - isVisible, - JsonFormsState, - OwnPropsOfRenderer, -} from '@jsonforms/core'; - -export const controlWithoutLabel = (scope: string): ControlElement => ({ - type: 'Control', - scope: scope, - label: false, -}); - -export const mapStateToVisible = ( - state: JsonFormsState, - ownProps: OwnPropsOfRenderer -) => { - const visible = - ownProps.visible !== undefined - ? ownProps.visible - : isVisible(ownProps.uischema, getData(state), undefined, getAjv(state)); - - return { - visible, - }; -}; diff --git a/packages/angular-material/src/library/util/date-format.ts b/packages/angular-material/src/library/util/date-format.ts deleted file mode 100644 index 95db12e74d..0000000000 --- a/packages/angular-material/src/library/util/date-format.ts +++ /dev/null @@ -1,24 +0,0 @@ -import { Injectable } from '@angular/core'; - -@Injectable() -export class MyFormat { - displayFormat = 'M/D/YYYY'; - - setDisplayFormat(displayFormat: string) { - this.displayFormat = displayFormat; - } - - get display() { - return { - monthYearLabel: 'YYYY-MM', - dateA11yLabel: 'YYYY-MM-DD', - monthYearA11yLabel: 'YYYY-MM', - dateInput: this.displayFormat, - }; - } - get parse() { - return { - dateInput: this.displayFormat, - }; - } -} diff --git a/packages/angular-material/src/library/util/dayjs-date-adapter.ts b/packages/angular-material/src/library/util/dayjs-date-adapter.ts deleted file mode 100644 index b1fbf3c152..0000000000 --- a/packages/angular-material/src/library/util/dayjs-date-adapter.ts +++ /dev/null @@ -1,101 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -import { Injectable } from '@angular/core'; -import { NativeDateAdapter } from '@angular/material/core'; -import { defaultDateFormat } from '@jsonforms/core'; -import dayjs from 'dayjs'; -import customParsing from 'dayjs/plugin/customParseFormat'; - -// allows to parse date strings with custom format -dayjs.extend(customParsing); - -/** - * date adapter for dayjs to parse and format dates - */ -@Injectable() -export class DayJsDateAdapter extends NativeDateAdapter { - saveFormat: string = defaultDateFormat; - - setSaveFormat(format: string) { - this.saveFormat = format; - } - - /** - * parses a given data prop string in the save-format into a date object - * @param value date string to be parsed - * @returns date object or null if parsing failed - */ - parseSaveFormat(value: string): Date | null { - return this.parse(value, this.saveFormat); - } - - parse(value: string, format: string): Date | null { - if (!value) { - return null; - } - const date = dayjs(value, format); - - if (date.isValid()) { - return date.toDate(); - } else { - return null; - } - } - - toSaveFormat(value: Date) { - if (!value) { - return undefined; - } - const date = dayjs(value); - if (date.isValid()) { - return date.format(this.saveFormat); - } else { - return undefined; - } - } - - /** - * transforms the date to a string representation for display - * @param date date to be formatted - * @param displayFormat format to be used for formatting the date e.g. YYYY-MM-DD - * @returns string representation of the date - */ - format(date: Date, displayFormat: string): string { - return dayjs(date).format(displayFormat); - } - - deserialize(value: any): Date | null { - if (!value) { - return null; - } - const date = dayjs(value); - if (date.isValid()) { - return date.toDate(); - } else { - return null; - } - } -} diff --git a/packages/angular-material/src/public_api.ts b/packages/angular-material/src/public_api.ts deleted file mode 100644 index 4b02e6973f..0000000000 --- a/packages/angular-material/src/public_api.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './library'; diff --git a/packages/angular-material/test/autocomplete-control.spec.ts b/packages/angular-material/test/autocomplete-control.spec.ts deleted file mode 100644 index 2594330bac..0000000000 --- a/packages/angular-material/test/autocomplete-control.spec.ts +++ /dev/null @@ -1,372 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - MatAutocompleteModule, - MatAutocompleteSelectedEvent, -} from '@angular/material/autocomplete'; -import { MatError, MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { DebugElement } from '@angular/core'; -import { - ComponentFixture, - fakeAsync, - TestBed, - tick, - waitForAsync, -} from '@angular/core/testing'; -import { ReactiveFormsModule } from '@angular/forms'; -import { By } from '@angular/platform-browser'; -import { NoopAnimationsModule } from '@angular/platform-browser/animations'; -import { - ErrorTestExpectation, - setupMockStore, - getJsonFormsService, -} from './common'; -import { ControlElement, JsonSchema, Actions } from '@jsonforms/core'; -import { AutocompleteControlRenderer } from '../src'; -import { JsonFormsAngularService } from '@jsonforms/angular'; -import { ErrorObject } from 'ajv'; -import { HarnessLoader } from '@angular/cdk/testing'; -import { TestbedHarnessEnvironment } from '@angular/cdk/testing/testbed'; -import { MatAutocompleteHarness } from '@angular/material/autocomplete/testing'; - -const data = { foo: 'A' }; -const schema: JsonSchema = { - type: 'object', - properties: { - foo: { - type: 'string', - enum: ['A', 'B', 'C'], - }, - }, -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', -}; - -const imports = [ - MatAutocompleteModule, - MatInputModule, - MatFormFieldModule, - NoopAnimationsModule, - ReactiveFormsModule, -]; -const providers = [JsonFormsAngularService]; -const componentUT: any = AutocompleteControlRenderer; -const errorTest: ErrorTestExpectation = { - errorInstance: MatError, - numberOfElements: 1, - indexOfElement: 0, -}; - -describe('Autocomplete control Base Tests', () => { - let fixture: ComponentFixture; - let component: AutocompleteControlRenderer; - let inputElement: HTMLInputElement; - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [componentUT], - imports: imports, - providers: providers, - }).compileComponents(); - })); - beforeEach(() => { - fixture = TestBed.createComponent(componentUT); - component = fixture.componentInstance; - - inputElement = fixture.debugElement.query(By.css('input')).nativeElement; - }); - - it('should render', fakeAsync(() => { - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore( - Actions.init(data, schema, uischema) - ); - component.ngOnInit(); - fixture.detectChanges(); - tick(); - expect(component.data).toBe('A'); - expect(inputElement.value).toBe('A'); - expect(inputElement.disabled).toBe(false); - })); - - it('should support updating the state', fakeAsync(() => { - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore( - Actions.init(data, schema, uischema) - ); - component.ngOnInit(); - fixture.detectChanges(); - tick(); - getJsonFormsService(component).updateCore(Actions.update('foo', () => 'B')); - tick(); - fixture.detectChanges(); - expect(component.data).toBe('B'); - expect(inputElement.value).toBe('B'); - })); - - it('should update with undefined value', () => { - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore( - Actions.init(data, schema, uischema) - ); - component.ngOnInit(); - fixture.detectChanges(); - - getJsonFormsService(component).updateCore( - Actions.update('foo', () => undefined) - ); - fixture.detectChanges(); - expect(component.data).toBe(undefined); - expect(inputElement.value).toBe(''); - }); - it('should update with null value', () => { - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore( - Actions.init(data, schema, uischema) - ); - fixture.detectChanges(); - component.ngOnInit(); - - getJsonFormsService(component).updateCore( - Actions.update('foo', () => null) - ); - fixture.detectChanges(); - expect(component.data).toBe(null); - expect(inputElement.value).toBe(''); - }); - it('should not update with wrong ref', fakeAsync(() => { - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore( - Actions.init(data, schema, uischema) - ); - component.ngOnInit(); - fixture.detectChanges(); - tick(); - getJsonFormsService(component).updateCore(Actions.update('foo', () => 'A')); - getJsonFormsService(component).updateCore(Actions.update('bar', () => 'B')); - fixture.detectChanges(); - tick(); - expect(component.data).toBe('A'); - expect(inputElement.value).toBe('A'); - })); - // store needed as we evaluate the calculated enabled value to disable/enable the control - it('can be disabled', () => { - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore( - Actions.init(data, schema, uischema) - ); - component.disabled = true; - component.ngOnInit(); - fixture.detectChanges(); - expect(inputElement.disabled).toBe(true); - }); - it('can be hidden', () => { - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore( - Actions.init(data, schema, uischema) - ); - component.visible = false; - component.ngOnInit(); - fixture.detectChanges(); - const hasDisplayNone = - 'none' === fixture.nativeElement.children[0].style.display; - const hasHidden = fixture.nativeElement.children[0].hidden; - expect(hasDisplayNone || hasHidden).toBeTruthy(); - }); - - it('id should be present in output', () => { - setupMockStore(fixture, { uischema, schema, data }); - component.id = 'myId'; - getJsonFormsService(component).updateCore( - Actions.init(data, schema, uischema) - ); - - fixture.detectChanges(); - component.ngOnInit(); - expect(inputElement.id).toBe('myId'); - }); -}); -describe('AutoComplete control Input Event Tests', () => { - let fixture: ComponentFixture; - let component: AutocompleteControlRenderer; - let loader: HarnessLoader; - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [componentUT], - imports: imports, - providers: [...providers], - }).compileComponents(); - })); - beforeEach(waitForAsync(() => { - fixture = TestBed.createComponent(componentUT); - component = fixture.componentInstance; - loader = TestbedHarnessEnvironment.loader(fixture); - })); - - it('should update via input event', fakeAsync(async () => { - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore( - Actions.init(data, schema, uischema) - ); - - component.ngOnInit(); - fixture.detectChanges(); - - const spy = spyOn(component, 'onSelect'); - - await (await loader.getHarness(MatAutocompleteHarness)).focus(); - fixture.detectChanges(); - - await ( - await loader.getHarness(MatAutocompleteHarness) - ).selectOption({ text: 'B' }); - tick(); - fixture.detectChanges(); - - expect(spy).toHaveBeenCalled(); - const event = spy.calls.mostRecent() - .args[0] as MatAutocompleteSelectedEvent; - - expect(event.option.value).toBe('B'); - })); - it('options should prefer own props', fakeAsync(async () => { - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore( - Actions.init(data, schema, uischema) - ); - component.options = ['X', 'Y', 'Z']; - - component.ngOnInit(); - fixture.detectChanges(); - const spy = spyOn(component, 'onSelect'); - - await (await loader.getHarness(MatAutocompleteHarness)).focus(); - fixture.detectChanges(); - - await ( - await loader.getHarness(MatAutocompleteHarness) - ).selectOption({ text: 'Y' }); - fixture.detectChanges(); - tick(); - - const event = spy.calls.mostRecent() - .args[0] as MatAutocompleteSelectedEvent; - expect(event.option.value).toBe('Y'); - })); -}); -describe('AutoComplete control Error Tests', () => { - let fixture: ComponentFixture; - let component: AutocompleteControlRenderer; - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [componentUT], - imports: imports, - providers: providers, - }).compileComponents(); - })); - beforeEach(() => { - fixture = TestBed.createComponent(componentUT); - component = fixture.componentInstance; - }); - it('should display errors', () => { - const errors: ErrorObject[] = [ - { - instancePath: '/foo', - message: 'Hi, this is me, test error!', - params: {}, - keyword: '', - schemaPath: '', - }, - ]; - setupMockStore(fixture, { - uischema, - schema, - data, - }); - const formsService = getJsonFormsService(component); - formsService.updateCore(Actions.updateErrors(errors)); - formsService.refresh(); - - component.ngOnInit(); - fixture.detectChanges(); - const debugErrors: DebugElement[] = fixture.debugElement.queryAll( - By.directive(errorTest.errorInstance) - ); - expect(debugErrors.length).toBe(errorTest.numberOfElements); - expect( - debugErrors[errorTest.indexOfElement].nativeElement.textContent - ).toBe('Hi, this is me, test error!'); - }); -}); - -describe('AutoComplete control updateFilter function', () => { - let fixture: ComponentFixture; - let component: AutocompleteControlRenderer; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [componentUT], - imports: imports, - providers: providers, - }).compileComponents(); - })); - - beforeEach(() => { - fixture = TestBed.createComponent(componentUT); - component = fixture.componentInstance; - }); - - it('should not filter options on ENTER key press', () => { - component.shouldFilter = false; - component.options = ['X', 'Y', 'Z']; - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore( - Actions.init(data, schema, uischema) - ); - component.ngOnInit(); - fixture.detectChanges(); - component.updateFilter({ keyCode: 13 }); - fixture.detectChanges(); - expect(component.shouldFilter).toBe(false); - }); - - it('should filter options when a key other than ENTER is pressed', () => { - component.shouldFilter = false; - component.options = ['X', 'Y', 'Z']; - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore( - Actions.init(data, schema, uischema) - ); - component.ngOnInit(); - fixture.detectChanges(); - - component.updateFilter({ keyCode: 65 }); - fixture.detectChanges(); - - expect(component.shouldFilter).toBe(true); - }); -}); diff --git a/packages/angular-material/test/boolean-control.spec.ts b/packages/angular-material/test/boolean-control.spec.ts deleted file mode 100644 index 8231bb9233..0000000000 --- a/packages/angular-material/test/boolean-control.spec.ts +++ /dev/null @@ -1,79 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { MatCheckbox, MatCheckboxModule } from '@angular/material/checkbox'; -import { MatError, MatFormFieldModule } from '@angular/material/form-field'; -import { - booleanBaseTest, - booleanErrorTest, - booleanInputEventTest, - ErrorTestExpectation, -} from './common'; -import { BooleanControlRenderer, booleanControlTester } from '../src'; -import { JsonFormsAngularService } from '@jsonforms/angular'; - -describe('Material boolean field tester', () => { - const uischema = { - type: 'Control', - scope: '#/properties/foo', - }; - - it('should succeed', () => { - expect( - booleanControlTester( - uischema, - { - type: 'object', - properties: { - foo: { - type: 'boolean', - }, - }, - }, - undefined - ) - ).toBe(2); - }); -}); -const imports = [MatCheckboxModule, MatFormFieldModule]; -const providers = [JsonFormsAngularService]; -const componentUT: any = BooleanControlRenderer; -const errorTest: ErrorTestExpectation = { - errorInstance: MatError, - numberOfElements: 1, - indexOfElement: 0, -}; -const testConfig = { imports, providers, componentUT }; -describe( - 'Boolean control Base Tests', - booleanBaseTest(testConfig, MatCheckbox) -); -describe( - 'Boolean control Input Event Tests', - booleanInputEventTest(testConfig, MatCheckbox, 'label') -); -describe( - 'Boolean control Error Tests', - booleanErrorTest(testConfig, MatCheckbox, errorTest) -); diff --git a/packages/angular-material/test/categorization-tab-layout.spec.ts b/packages/angular-material/test/categorization-tab-layout.spec.ts deleted file mode 100644 index 5174d4583e..0000000000 --- a/packages/angular-material/test/categorization-tab-layout.spec.ts +++ /dev/null @@ -1,329 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { DebugElement } from '@angular/core'; -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { - MatTab, - MatTabBody, - MatTabGroup, - MatTabsModule, -} from '@angular/material/tabs'; -import { By } from '@angular/platform-browser'; -import { NoopAnimationsModule } from '@angular/platform-browser/animations'; -import { - JsonFormsAngularService, - JsonFormsModule, - JsonFormsOutlet, -} from '@jsonforms/angular'; -import { - CategorizationTabLayoutRenderer, - TextControlRenderer, - TextControlRendererTester, -} from '../src'; -import { setupMockStore, getJsonFormsService } from './common'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { ReactiveFormsModule } from '@angular/forms'; -import { CommonModule } from '@angular/common'; - -const renderers = [ - { tester: TextControlRendererTester, renderer: TextControlRenderer }, -]; - -describe('Categorization tab layout', () => { - let fixture: ComponentFixture; - let component: any; - - const data = { foo: 'true' }; - const schema = { - type: 'object', - properties: { - foo: { - type: 'string', - }, - bar: { - type: 'string', - }, - }, - }; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [CategorizationTabLayoutRenderer, TextControlRenderer], - imports: [ - CommonModule, - MatTabsModule, - NoopAnimationsModule, - JsonFormsModule, - MatFormFieldModule, - MatInputModule, - ReactiveFormsModule, - ], - providers: [JsonFormsAngularService], - }).compileComponents(); - - fixture = TestBed.createComponent(CategorizationTabLayoutRenderer); - component = fixture.componentInstance; - })); - - it('render categories initially', waitForAsync(() => { - const uischema = { - type: 'Categorization', - elements: [ - { - type: 'Category', - label: 'foo', - elements: [ - { - type: 'Control', - scope: '#/properties/foo', - }, - { - type: 'Control', - scope: '#/properties/bar', - }, - ], - }, - { - type: 'Category', - label: 'bar', - elements: [ - { - type: 'Control', - scope: '#/properties/bar', - }, - ], - }, - ], - }; - - setupMockStore(fixture, { uischema, schema, data }); - - fixture.detectChanges(); - fixture.whenRenderingDone().then(() => { - fixture.detectChanges(); - const tabGroupDE: DebugElement[] = fixture.debugElement.queryAll( - By.directive(MatTabGroup) - ); - expect(tabGroupDE.length).toBe(1); - const tabGroup: MatTabGroup = tabGroupDE[0].componentInstance; - expect(tabGroup._tabs.length).toBe(2); - const tab1: MatTab = tabGroup._tabs.first; - const tab2: MatTab = tabGroup._tabs.last; - expect(tab1.isActive).toBeTruthy(); - expect(tab2.isActive).toBeFalsy(); - expect(tab1.textLabel).toBe('foo'); - expect(tab2.textLabel).toBe('bar'); - expect(tab1.isActive).toBeTruthy(); - expect(tab2.isActive).toBeFalsy(); - expect(tab1.content.isAttached).toBeTruthy(); - expect(tab2.content.isAttached).toBeFalsy(); - - const contents: DebugElement[] = fixture.debugElement.queryAll( - By.directive(MatTabBody) - ); - const activeTabOutlets = contents[0].queryAll( - By.directive(JsonFormsOutlet) - ); - expect(activeTabOutlets.length).toBe(2); - - expect(fixture.nativeElement.children[0].style.display).not.toBe('none'); - }); - })); - - it('pass path and schema to children', waitForAsync(() => { - const uischema = { - type: 'Categorization', - elements: [ - { - type: 'Category', - label: 'foo', - elements: [ - { - type: 'Control', - scope: '#/properties/foo', - }, - ], - }, - ], - }; - setupMockStore(fixture, { uischema, schema, data }); - component.path = 'aa'; - const subSchema = { type: 'string' }; - component.schema = subSchema; - getJsonFormsService(component).init({ - renderers: renderers, - core: { - data: {}, - schema: schema, - uischema: undefined, - }, - }); - - fixture.detectChanges(); - fixture.whenRenderingDone().then(() => { - const contents: DebugElement[] = fixture.debugElement.queryAll( - By.directive(MatTabBody) - ); - const activeTabOutlets = contents[0].queryAll( - By.directive(TextControlRenderer) - ); - expect(activeTabOutlets[0].componentInstance.path).toBe('aa'); - expect(activeTabOutlets[0].componentInstance.schema).toBe(subSchema); - }); - })); - - it('add category', waitForAsync(() => { - const uischema = { - type: 'Categorization', - elements: [ - { - type: 'Category', - label: 'foo', - elements: [ - { - type: 'Control', - scope: '#/properties/foo', - }, - { - type: 'Control', - scope: '#/properties/bar', - }, - ], - }, - { - type: 'Category', - label: 'bar', - elements: [ - { - type: 'Control', - scope: '#/properties/bar', - }, - ], - }, - ], - }; - setupMockStore(fixture, { uischema, schema, data }); - fixture.detectChanges(); - fixture.whenRenderingDone().then(() => { - fixture.detectChanges(); - const tabGroupDE: DebugElement[] = fixture.debugElement.queryAll( - By.directive(MatTabGroup) - ); - const tabGroup: MatTabGroup = tabGroupDE[0].componentInstance; - expect(tabGroup._tabs.length).toBe(2); - - const newUischema = { - type: 'Categorization', - elements: [ - { - type: 'Category', - label: 'foo', - elements: [ - { - type: 'Control', - scope: '#/properties/foo', - }, - ], - }, - { - type: 'Category', - label: 'bar', - elements: [ - { - type: 'Control', - scope: '#/properties/bar', - }, - ], - }, - { - type: 'Category', - label: 'quux', - elements: [ - { - type: 'Control', - scope: '#/properties/bar', - }, - ], - }, - ], - }; - component.uischema = newUischema; - fixture.detectChanges(); - getJsonFormsService(component).setUiSchema(newUischema); - - fixture.whenRenderingDone().then(() => { - fixture.detectChanges(); - const tabGroupDE2: DebugElement[] = fixture.debugElement.queryAll( - By.directive(MatTabGroup) - ); - const tabGroup2: MatTabGroup = tabGroupDE2[0].componentInstance; - expect(tabGroup2._tabs.length).toBe(3); - const lastTab: MatTab = tabGroup2._tabs.last; - expect(lastTab.isActive).toBeFalsy(); - expect(lastTab.textLabel).toBe('quux'); - }); - }); - })); - - // TODO: broken due to https://github.com/angular/flex-layout/issues/848 - xit('can be hidden', waitForAsync(() => { - const uischema = { - type: 'Categorization', - elements: [ - { - type: 'Category', - label: 'foo', - elements: [ - { - type: 'Control', - scope: '#/properties/foo', - }, - { - type: 'Control', - scope: '#/properties/bar', - }, - ], - }, - { - type: 'Category', - label: 'bar', - elements: [ - { - type: 'Control', - scope: '#/properties/bar', - }, - ], - }, - ], - }; - setupMockStore(fixture, { uischema, schema, data }); - component.visible = false; - fixture.detectChanges(); - fixture.whenRenderingDone().then(() => { - expect(fixture.nativeElement.children[0].style.display).toBe('none'); - }); - })); -}); diff --git a/packages/angular-material/test/common/boolean.ts b/packages/angular-material/test/common/boolean.ts deleted file mode 100644 index 0e8a8b1975..0000000000 --- a/packages/angular-material/test/common/boolean.ts +++ /dev/null @@ -1,348 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import type { DebugElement, Type } from '@angular/core'; -import { By } from '@angular/platform-browser'; -import type { JsonFormsControl } from '@jsonforms/angular'; -import { ControlElement, JsonSchema, Actions } from '@jsonforms/core'; -import { - baseSetup, - ErrorTestExpectation, - TestConfig, - getJsonFormsService, -} from './util'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -const prepareComponent = ( - testConfig: TestConfig, - instance: Type -) => { - const fixture = TestBed.createComponent(testConfig.componentUT); - const component = fixture.componentInstance; - const checkboxDebugElement = fixture.debugElement.query( - By.directive(instance) - ); - const checkboxInstance = checkboxDebugElement.componentInstance; - const checkboxNativeElement = checkboxDebugElement.nativeElement; - - return { fixture, component, checkboxInstance, checkboxNativeElement }; -}; - -const data = { foo: true }; -export const defaultBooleanTestSchema: JsonSchema = { - type: 'object', - properties: { - foo: { - type: 'boolean', - }, - }, -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', -}; -export const defaultBooleanTestData = { - data, - schema: defaultBooleanTestSchema, - uischema, -}; - -export const booleanBaseTest = - ( - testConfig: TestConfig, - instance: Type - ) => - () => { - let fixture: ComponentFixture; - let checkboxNativeElement: HTMLElement; - let checkboxInstance: any; - let component: C; - - baseSetup(testConfig); - - beforeEach(() => { - const preparedComponents = prepareComponent(testConfig, instance); - fixture = preparedComponents.fixture; - checkboxNativeElement = preparedComponents.checkboxNativeElement; - checkboxInstance = preparedComponents.checkboxInstance; - component = preparedComponents.component; - }); - - it('should render', () => { - component.uischema = uischema; - - getJsonFormsService(component).init({ - core: { - data: data, - schema: defaultBooleanTestSchema, - uischema: uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - expect(component.data).toBe(true); - expect(checkboxInstance.checked).toBe(true); - expect(checkboxInstance.disabled).toBe(false); - // the component is wrapped in a div - const hasDisplayNone = - 'none' === fixture.nativeElement.children[0].style.display; - const hasHidden = fixture.nativeElement.children[0].hidden; - expect(hasDisplayNone || hasHidden).toBeFalsy(); - }); - it('should support updating the state', () => { - component.uischema = uischema; - - getJsonFormsService(component).init({ - core: { - data: data, - schema: defaultBooleanTestSchema, - uischema: uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - - getJsonFormsService(component).updateCore( - Actions.update('foo', () => false) - ); - fixture.detectChanges(); - expect(component.data).toBe(false); - expect(checkboxInstance.checked).toBe(false); - }); - it('should update with undefined value', () => { - component.uischema = uischema; - - getJsonFormsService(component).init({ - core: { - data: data, - schema: defaultBooleanTestSchema, - uischema: uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - - getJsonFormsService(component).updateCore( - Actions.update('foo', () => undefined) - ); - fixture.detectChanges(); - expect(component.data).toBe(undefined); - expect(checkboxInstance.checked).toBe(false); - }); - it('should update with null value', () => { - component.uischema = uischema; - - getJsonFormsService(component).init({ - core: { - data: data, - schema: defaultBooleanTestSchema, - uischema: uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - - getJsonFormsService(component).updateCore( - Actions.update('foo', () => null) - ); - fixture.detectChanges(); - expect(component.data).toBe(null); - expect(checkboxInstance.checked).toBe(false); - }); - it('should not update with wrong ref', () => { - component.uischema = uischema; - - getJsonFormsService(component).init({ - core: { - data: data, - schema: defaultBooleanTestSchema, - uischema: uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - - getJsonFormsService(component).updateCore( - Actions.update('foo', () => true) - ); - getJsonFormsService(component).updateCore( - Actions.update('bar', () => false) - ); - fixture.detectChanges(); - expect(component.data).toBe(true); - expect(checkboxInstance.checked).toBe(true); - }); - // store needed as we evaluate the calculated enabled value to disable/enable the control - it('can be disabled', () => { - component.uischema = uischema; - component.disabled = true; - - getJsonFormsService(component).init({ - core: { - data: data, - schema: defaultBooleanTestSchema, - uischema: uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - expect(checkboxInstance.disabled).toBe(true); - }); - // store needed as we evaluate the calculated enabled value to disable/enable the control - it('can be hidden', () => { - component.uischema = uischema; - component.visible = false; - - getJsonFormsService(component).init({ - core: { - data: data, - schema: defaultBooleanTestSchema, - uischema: uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - // the component is wrapped in a div - const hasDisplayNone = - 'none' === fixture.nativeElement.children[0].style.display; - const hasHidden = fixture.nativeElement.children[0].hidden; - expect(hasDisplayNone || hasHidden).toBeTruthy(); - }); - - it('id should be present in output', () => { - component.uischema = uischema; - component.id = 'myId'; - - getJsonFormsService(component).init({ - core: { - data: data, - schema: defaultBooleanTestSchema, - uischema: uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - expect(checkboxNativeElement.id).toBe('myId'); - }); - }; -export const booleanInputEventTest = - ( - testConfig: TestConfig, - instance: Type, - selectorForClick: string - ) => - () => { - let fixture: ComponentFixture; - let checkboxNativeElement: HTMLElement; - let checkboxInstance: any; - let component: C & { onChange(evt: string): void }; - let elementToClick: any; - - baseSetup(testConfig); - - beforeEach(() => { - const preparedComponents = prepareComponent(testConfig, instance); - fixture = preparedComponents.fixture; - checkboxNativeElement = preparedComponents.checkboxNativeElement; - checkboxInstance = preparedComponents.checkboxInstance; - component = preparedComponents.component; - - elementToClick = checkboxNativeElement.querySelector(selectorForClick); - }); - - it('should update via input event', () => { - component.uischema = uischema; - getJsonFormsService(component).init({ - core: { - data: data, - schema: defaultBooleanTestSchema, - uischema: uischema, - }, - }); - fixture.detectChanges(); - component.ngOnInit(); - - const spy = spyOn(component, 'onChange'); - elementToClick.click(); - // trigger change detection - fixture.detectChanges(); - - expect(spy).toHaveBeenCalled(); - expect(checkboxInstance.checked).toBe(false); - }); - }; - -export const booleanErrorTest = - ( - testConfig: TestConfig, - instance: Type, - errorTestInformation: ErrorTestExpectation - ) => - () => { - let fixture: ComponentFixture; - let component: C; - - baseSetup(testConfig); - - beforeEach(() => { - const preparedComponents = prepareComponent(testConfig, instance); - fixture = preparedComponents.fixture; - component = preparedComponents.component; - }); - it('should display errors', () => { - component.uischema = uischema; - - const formsService = getJsonFormsService(component); - formsService.init({ - core: { - data, - schema: defaultBooleanTestSchema, - uischema: uischema, - }, - }); - formsService.updateCore( - Actions.updateErrors([ - { - instancePath: '/foo', - message: 'Hi, this is me, test error!', - keyword: '', - schemaPath: '', - params: {}, - }, - ]) - ); - formsService.refresh(); - - component.ngOnInit(); - fixture.detectChanges(); - const debugErrors: DebugElement[] = fixture.debugElement.queryAll( - By.directive(errorTestInformation.errorInstance) - ); - expect(debugErrors.length).toBe(errorTestInformation.numberOfElements); - expect( - debugErrors[errorTestInformation.indexOfElement].nativeElement - .textContent - ).toBe('Hi, this is me, test error!'); - }); - }; diff --git a/packages/angular-material/test/common/index.ts b/packages/angular-material/test/common/index.ts deleted file mode 100644 index 5739d05f88..0000000000 --- a/packages/angular-material/test/common/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -export * from './boolean'; -export * from './text'; -export * from './number'; -export * from './range'; -export * from './util'; -export * from './layout'; diff --git a/packages/angular-material/test/common/layout.ts b/packages/angular-material/test/common/layout.ts deleted file mode 100644 index 8fbee8225e..0000000000 --- a/packages/angular-material/test/common/layout.ts +++ /dev/null @@ -1,42 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { - JsonFormsAngularService, - JsonFormsOutlet, - UnknownRenderer, -} from '@jsonforms/angular'; - -export const beforeEachLayoutTest = ( - Renderer: any, - { declarations = [], imports = [], providers = [] }: any = {} -): ComponentFixture => { - TestBed.configureTestingModule({ - declarations: [Renderer, UnknownRenderer, JsonFormsOutlet, ...declarations], - imports, - providers: [JsonFormsAngularService, ...providers], - }).compileComponents(); - return TestBed.createComponent(Renderer); -}; diff --git a/packages/angular-material/test/common/number.ts b/packages/angular-material/test/common/number.ts deleted file mode 100644 index 6387d0419c..0000000000 --- a/packages/angular-material/test/common/number.ts +++ /dev/null @@ -1,443 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import type { DebugElement } from '@angular/core'; -import { By } from '@angular/platform-browser'; -import type { JsonFormsControl } from '@jsonforms/angular'; -import { Actions, ControlElement, JsonSchema } from '@jsonforms/core'; -import { - baseSetup, - ErrorTestExpectation, - getJsonFormsService, - setupMockStore, - TestConfig, - TestData, -} from './util'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; - -interface ComponentResult { - fixture: ComponentFixture; - component: C; - numberElement?: DebugElement; - numberNativeElement?: any; -} - -export const prepareComponent = ( - testConfig: TestConfig, - instance?: string, - elementToUse?: (element: DebugElement) => any -): ComponentResult => { - const fixture = TestBed.createComponent(testConfig.componentUT); - const component = fixture.componentInstance; - const result: ComponentResult = { fixture, component }; - if (instance && elementToUse) { - const numberElement = fixture.debugElement.query(By.css(instance)); - const numberNativeElement = elementToUse(numberElement); - result.numberElement = numberElement; - result.numberNativeElement = numberNativeElement; - } - - return result; -}; -const defaultData = { foo: 123.123 }; -const defaultSchema: JsonSchema = { - type: 'object', - properties: { - foo: { - type: 'number', - }, - }, -}; -const defaultUischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', -}; -export const defaultNumberTestData: TestData = { - data: defaultData, - schema: defaultSchema, - uischema: defaultUischema, -}; -export const updateWithSiblingNumberValue = ( - fixture: ComponentFixture, - testData: TestData, - expectations: () => any -) => { - setupMockStore(fixture, testData); - getJsonFormsService(fixture.componentInstance).init({ - core: { - data: { foo: 123.123, bar: 456.456 }, - schema: testData.schema, - uischema: undefined, - }, - }); - fixture.componentInstance.ngOnInit(); - fixture.detectChanges(); - expectations(); -}; - -export const numberBaseTest = - ( - testConfig: TestConfig, - instance: string, - elementToUse: (element: DebugElement) => any, - testData: TestData = defaultNumberTestData - ) => - () => { - let fixture: ComponentFixture; - let numberElement: DebugElement; - let numberNativeElement: any; - let component: C; - - baseSetup(testConfig); - - beforeEach(() => { - const preparedComponents = prepareComponent( - testConfig, - instance, - elementToUse - ); - fixture = preparedComponents.fixture; - numberNativeElement = preparedComponents.numberNativeElement; - numberElement = preparedComponents.numberElement; - component = preparedComponents.component; - }); - - it('should render floats', () => { - component.uischema = testData.uischema; - getJsonFormsService(component).init({ core: testData }); - getJsonFormsService(component).updateCore( - Actions.init(testData.data, testData.schema) - ); - component.ngOnInit(); - fixture.detectChanges(); - expect(component.data).toBe(123.123); - expect(numberNativeElement.value).toBe('123.123'); - // step is of type string - expect(numberNativeElement.step).toBe('0.1'); - expect(numberNativeElement.disabled).toBe(false); - // the component is wrapped in a div - expect(fixture.nativeElement.children[0].style.display).not.toBe('none'); - }); - - it('should render integers', () => { - const state = { - data: { foo: 123 }, - schema: { - type: 'object', - properties: { - foo: { type: 'integer' }, - }, - }, - uischema: testData.uischema, - }; - component.uischema = testData.uischema; - getJsonFormsService(component).init({ core: state }); - getJsonFormsService(component).updateCore( - Actions.init(state.data, state.schema) - ); - component.ngOnInit(); - fixture.detectChanges(); - - expect(component.data).toBe(123); - expect(numberNativeElement.value).toBe('123'); - // step is of type string - expect(numberNativeElement.step).toBe('1'); - expect(numberNativeElement.disabled).toBe(false); - // the component is wrapped in a div - expect(fixture.nativeElement.children[0].style.display).not.toBe('none'); - }); - - it('should support updating the state', () => { - component.uischema = testData.uischema; - getJsonFormsService(component).init({ core: testData }); - getJsonFormsService(component).updateCore( - Actions.init(testData.data, testData.schema) - ); - component.ngOnInit(); - fixture.detectChanges(); - getJsonFormsService(fixture.componentInstance).updateCore( - Actions.update('foo', () => 456.456) - ); - fixture.detectChanges(); - expect(component.data).toBe(456.456); - expect(Number(numberNativeElement.value)).toBe(456.456); - }); - - it('should update with undefined value', () => { - component.uischema = testData.uischema; - getJsonFormsService(component).init({ core: testData }); - getJsonFormsService(component).updateCore( - Actions.init(testData.data, testData.schema) - ); - component.ngOnInit(); - fixture.detectChanges(); - getJsonFormsService(fixture.componentInstance).updateCore( - Actions.update('foo', () => undefined) - ); - fixture.detectChanges(); - - expect(component.data).toBe(undefined); - expect(numberNativeElement.value).toBe(''); - }); - - it('should update with null value', () => { - component.uischema = testData.uischema; - getJsonFormsService(component).init({ core: testData }); - getJsonFormsService(component).updateCore( - Actions.init(testData.data, testData.schema) - ); - component.ngOnInit(); - fixture.detectChanges(); - getJsonFormsService(fixture.componentInstance).updateCore( - Actions.update('foo', () => null) - ); - fixture.detectChanges(); - expect(component.data).toBe(null); - expect(numberNativeElement.value).toBe(''); - }); - - it('should not update with wrong ref', () => { - component.uischema = testData.uischema; - getJsonFormsService(component).init({ core: testData }); - getJsonFormsService(component).updateCore( - Actions.init(testData.data, testData.schema) - ); - component.ngOnInit(); - fixture.detectChanges(); - getJsonFormsService(fixture.componentInstance).updateCore( - Actions.update('bar', () => 456.456) - ); - fixture.detectChanges(); - expect(component.data).toBe(123.123); - expect(Number(numberNativeElement.value)).toBe(123.123); - }); - - // store needed as we evaluate the calculated enabled value to disable/enable the control - it('can be disabled', () => { - component.uischema = testData.uischema; - component.disabled = true; - - getJsonFormsService(component).init({ - core: { - data: testData.data, - schema: testData.schema, - uischema: testData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - expect(numberNativeElement.disabled).toBe(true); - }); - // store needed as we evaluate the calculated enabled value to disable/enable the control - it('can be hidden', () => { - component.uischema = testData.uischema; - component.visible = false; - - getJsonFormsService(component).init({ - core: { - data: testData.data, - schema: testData.schema, - uischema: testData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - const hasDisplayNone = - 'none' === fixture.nativeElement.children[0].style.display; - const hasHidden = fixture.nativeElement.children[0].hidden; - expect(hasDisplayNone || hasHidden).toBeTruthy(); - }); - - it('id should be present in output', () => { - component.uischema = testData.uischema; - component.id = 'myId'; - getJsonFormsService(component).init({ - core: { - data: testData.data, - schema: testData.schema, - uischema: testData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - expect(numberElement.nativeElement.id).toBe('myId'); - }); - }; -export const numberInputEventTest = - ( - testConfig: TestConfig, - instance: string, - elementToUse: (element: DebugElement) => any, - testData: TestData = defaultNumberTestData - ) => - () => { - let fixture: ComponentFixture; - let numberNativeElement: any; - let component: C & { onChange(evt: string): void }; - - baseSetup(testConfig); - - beforeEach(() => { - const preparedComponents = prepareComponent( - testConfig, - instance, - elementToUse - ); - fixture = preparedComponents.fixture; - numberNativeElement = preparedComponents.numberNativeElement; - component = preparedComponents.component; - }); - - it('should update via input event', () => { - component.uischema = testData.uischema as ControlElement; - - getJsonFormsService(component).init({ - core: { - data: testData.data, - schema: testData.schema, - uischema: undefined, - }, - }); - fixture.detectChanges(); - component.ngOnInit(); - - const spy = spyOn(component, 'onChange'); - numberNativeElement.value = 456.456; - if (numberNativeElement.dispatchEvent) { - numberNativeElement.dispatchEvent(new Event('input')); - } - // trigger change detection - fixture.detectChanges(); - expect(spy).toHaveBeenCalled(); - expect(Number(numberNativeElement.value)).toBe(456.456); - }); - }; -export const numberErrorTest = - ( - testConfig: TestConfig, - errorTestInformation: ErrorTestExpectation, - testData: TestData = defaultNumberTestData - ) => - () => { - let fixture: ComponentFixture; - let component: C; - - baseSetup(testConfig); - - beforeEach(() => { - const preparedComponents = prepareComponent(testConfig); - fixture = preparedComponents.fixture; - component = preparedComponents.component; - }); - - it('should display errors', () => { - component.uischema = testData.uischema; - - const formsService = getJsonFormsService(component); - formsService.init({ - core: { - data: testData.data, - schema: testData.schema, - uischema: undefined, - }, - }); - formsService.updateCore( - Actions.updateErrors([ - { - instancePath: '/foo', - message: 'Hi, this is me, test error!', - keyword: '', - schemaPath: '', - params: {}, - }, - ]) - ); - formsService.refresh(); - component.ngOnInit(); - fixture.detectChanges(); - const debugErrors: DebugElement[] = fixture.debugElement.queryAll( - By.directive(errorTestInformation.errorInstance) - ); - expect(debugErrors.length).toBe(errorTestInformation.numberOfElements); - expect( - debugErrors[errorTestInformation.indexOfElement].nativeElement - .textContent - ).toBe('Hi, this is me, test error!'); - }); - }; - -const additionalSchema: JsonSchema = { - type: 'object', - properties: { - foo: { - type: 'number', - minimum: -42.42, - maximum: 42, - multipleOf: 3, - }, - }, -}; -export const additionalTestData: TestData = { - data: defaultData, - schema: additionalSchema, - uischema: defaultUischema, -}; - -export const numberAdditionalPropsTest = - ( - testConfig: TestConfig, - instance: string, - elementToUse: (element: DebugElement) => any, - testData: TestData = additionalTestData - ) => - () => { - let fixture: ComponentFixture; - let numberNativeElement: any; - - baseSetup(testConfig); - - beforeEach(() => { - const preparedComponents = prepareComponent( - testConfig, - instance, - elementToUse - ); - fixture = preparedComponents.fixture; - numberNativeElement = preparedComponents.numberNativeElement; - }); - - it('should respect min,max,multipleOf', () => { - setupMockStore(fixture, testData); - getJsonFormsService(fixture.componentInstance).updateCore( - Actions.init(testData.data, testData.schema) - ); - fixture.componentInstance.ngOnInit(); - fixture.detectChanges(); - - // step, min and max are of type string on an input control - expect(numberNativeElement.step).toBe('3'); - expect(numberNativeElement.min).toBe('-42.42'); - expect(numberNativeElement.max).toBe('42'); - }); - }; diff --git a/packages/angular-material/test/common/range.ts b/packages/angular-material/test/common/range.ts deleted file mode 100644 index 9f8f4baa77..0000000000 --- a/packages/angular-material/test/common/range.ts +++ /dev/null @@ -1,435 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import type { DebugElement, Type } from '@angular/core'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { By } from '@angular/platform-browser'; - -import type { JsonFormsControl } from '@jsonforms/angular'; -import { - baseSetup, - ErrorTestExpectation, - setupMockStore, - TestConfig, - TestData, - getJsonFormsService, -} from './util'; -import { ControlElement, JsonSchema, Actions } from '@jsonforms/core'; - -interface ComponentResult { - fixture: ComponentFixture; - component: C; - rangeElement: DebugElement; - thumbElement: DebugElement; -} - -const prepareComponent = ( - testConfig: TestConfig, - instance: Type -): ComponentResult => { - const fixture = TestBed.createComponent(testConfig.componentUT); - const component = fixture.componentInstance; - const rangeElement = fixture.debugElement.query(By.directive(instance)); - const thumbElement = fixture.debugElement.query(By.css('[matsliderthumb]')); //rangeElement.nativeElement.children[0]; // todo: find a safer way to get the 'matSliderThumb' - const result: ComponentResult = { - fixture, - component, - rangeElement, - thumbElement, - }; - return result; -}; -export const rangeDefaultData = { foo: 1.234 }; -export const rangeDefaultSchema: JsonSchema = { - type: 'object', - properties: { - foo: { - type: 'number', - minimum: -42.42, - maximum: 42.42, - default: 0.42, - }, - }, -}; -export const rangeDefaultUischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { slider: true }, -}; -export const rangeDefaultTestData: TestData = { - data: rangeDefaultData, - schema: rangeDefaultSchema, - uischema: rangeDefaultUischema, -}; - -export const rangeBaseTest = - ( - testConfig: TestConfig, - instance: Type - ) => - () => { - let fixture: ComponentFixture; - let rangeElement: DebugElement; - let thumbElement: DebugElement; - let component: C; - - baseSetup(testConfig); - - beforeEach(() => { - const preparedComponents = prepareComponent(testConfig, instance); - fixture = preparedComponents.fixture; - rangeElement = preparedComponents.rangeElement; - thumbElement = preparedComponents.thumbElement; - component = preparedComponents.component; - }); - - it('should render floats', () => { - component.uischema = rangeDefaultTestData.uischema; - component.schema = rangeDefaultTestData.schema; - - getJsonFormsService(component).init({ - core: { - data: rangeDefaultTestData.data, - schema: rangeDefaultTestData.schema, - uischema: rangeDefaultTestData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - expect(component.data).toBe(1.234); - expect(thumbElement.componentInstance.data).toBe(1.234); - // step is of type string - expect(rangeElement.componentInstance.step).toBe(1); - expect(rangeElement.componentInstance.min).toBe(-42.42); - expect(rangeElement.componentInstance.max).toBe(42.42); - expect(rangeElement.componentInstance.disabled).toBe(false); - expect(fixture.nativeElement.children[0].style.display).not.toBe('none'); - }); - - it('should render integer', () => { - component.uischema = rangeDefaultTestData.uischema; - const schema = JSON.parse(JSON.stringify(rangeDefaultTestData.schema)); - schema.properties.foo.type = 'integer'; - schema.properties.foo.minimum = -42; - schema.properties.foo.maximum = 42; - schema.properties.foo.default = 1; - setupMockStore(fixture, { - uischema: rangeDefaultTestData.uischema, - schema, - data: { foo: 12 }, - }); - getJsonFormsService(component).updateCore( - Actions.init({ foo: 12 }, schema, rangeDefaultTestData.uischema) - ); - - fixture.componentInstance.ngOnInit(); - fixture.detectChanges(); - expect(component.data).toBe(12); - expect(thumbElement.componentInstance.data).toBe(12); - // step is of type string - expect(rangeElement.componentInstance.step).toBe(1); - expect(rangeElement.componentInstance.min).toBe(-42); - expect(rangeElement.componentInstance.max).toBe(42); - expect(rangeElement.componentInstance.disabled).toBe(false); - // the component is wrapped in a div - expect(fixture.nativeElement.children[0].style.display).not.toBe('none'); - }); - - it('should support updating the state', () => { - component.uischema = rangeDefaultTestData.uischema; - component.schema = rangeDefaultTestData.schema; - - getJsonFormsService(component).init({ - core: { - data: rangeDefaultTestData.data, - schema: rangeDefaultTestData.schema, - uischema: rangeDefaultTestData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - - getJsonFormsService(component).updateCore( - Actions.update('foo', () => 4.56) - ); - fixture.detectChanges(); - expect(component.data).toBe(4.56); - expect(thumbElement.componentInstance.data).toBe(4.56); - }); - it('should update with undefined value', () => { - component.uischema = rangeDefaultTestData.uischema; - component.schema = rangeDefaultTestData.schema; - - getJsonFormsService(component).init({ - core: { - data: rangeDefaultTestData.data, - schema: rangeDefaultTestData.schema, - uischema: rangeDefaultTestData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - - getJsonFormsService(component).updateCore( - Actions.update('foo', () => undefined) - ); - fixture.detectChanges(); - expect(component.data).toBe(undefined); - expect(thumbElement.componentInstance.data).toBe(undefined); - }); - it('should update with null value', () => { - component.uischema = rangeDefaultTestData.uischema; - component.schema = rangeDefaultTestData.schema; - - getJsonFormsService(component).init({ - core: { - data: rangeDefaultTestData.data, - schema: rangeDefaultTestData.schema, - uischema: rangeDefaultTestData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - - getJsonFormsService(component).updateCore( - Actions.update('foo', () => null) - ); - fixture.detectChanges(); - expect(component.data).toBe(null); - expect(thumbElement.componentInstance.data).toBe(null); - }); - it('should not update with wrong ref', () => { - component.uischema = rangeDefaultTestData.uischema; - component.schema = rangeDefaultTestData.schema; - - getJsonFormsService(component).init({ - core: { - data: rangeDefaultTestData.data, - schema: rangeDefaultTestData.schema, - uischema: rangeDefaultTestData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - - getJsonFormsService(component).updateCore( - Actions.update('foo', () => 1.234) - ); - getJsonFormsService(component).updateCore( - Actions.update('bar', () => 456.456) - ); - - fixture.detectChanges(); - expect(component.data).toBe(1.234); - expect(thumbElement.componentInstance.data).toBe(1.234); - }); - // store needed as we evaluate the calculated enabled value to disable/enable the control - it('can be disabled', () => { - component.uischema = rangeDefaultTestData.uischema; - component.schema = rangeDefaultTestData.schema; - component.disabled = true; - - getJsonFormsService(component).init({ - core: { - data: rangeDefaultTestData.data, - schema: rangeDefaultTestData.schema, - uischema: rangeDefaultTestData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - expect(rangeElement.componentInstance.disabled).toBe(true); - }); - it('can be hidden', () => { - component.uischema = rangeDefaultTestData.uischema; - component.schema = rangeDefaultTestData.schema; - component.visible = false; - - getJsonFormsService(component).init({ - core: { - data: rangeDefaultTestData.data, - schema: rangeDefaultTestData.schema, - uischema: rangeDefaultTestData.uischema, - }, - }); - fixture.detectChanges(); - component.ngOnInit(); - expect(fixture.nativeElement.children[0].style.display).toBe('none'); - }); - it('id should be present in output', () => { - component.uischema = rangeDefaultTestData.uischema; - component.schema = rangeDefaultTestData.schema; - component.id = 'myId'; - getJsonFormsService(component).init({ - core: { - data: rangeDefaultTestData.data, - schema: rangeDefaultTestData.schema, - uischema: rangeDefaultTestData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - expect(rangeElement.nativeElement.id).toBe('myId'); - }); - }; -export const rangeInputEventTest = - ( - testConfig: TestConfig, - instance: Type - ) => - () => { - let fixture: ComponentFixture; - let component: C & { onChange(evt: string): void }; - - baseSetup(testConfig); - - beforeEach(() => { - const preparedComponents = prepareComponent(testConfig, instance); - fixture = preparedComponents.fixture; - component = preparedComponents.component; - }); - - xit('should update via input event', async () => { - component.uischema = rangeDefaultTestData.uischema; - component.schema = rangeDefaultTestData.schema; - - getJsonFormsService(component).init({ - core: { - data: rangeDefaultTestData.data, - schema: rangeDefaultTestData.schema, - uischema: rangeDefaultTestData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - - const spy = spyOn(component, 'onChange'); - - const sliderElement = fixture.debugElement.query( - By.css('.mat-slider') - ).nativeElement; - - const trackElement = fixture.debugElement.query( - By.css('.mat-slider-wrapper') - ).nativeElement; - const dimensions = trackElement.getBoundingClientRect(); - const x = dimensions.left + dimensions.width * 0.2; - const y = dimensions.top + dimensions.height * 0.2; - - dispatchEvent(sliderElement, createMouseEvent('mousedown', x, y, 0)); - - // trigger change detection - fixture.detectChanges(); - await fixture.whenStable(); - expect(spy).toHaveBeenCalled(); - }); - }; -export const rangeErrorTest = - ( - testConfig: TestConfig, - instance: Type, - errorTestInformation: ErrorTestExpectation - ) => - () => { - let fixture: ComponentFixture; - let component: C; - - baseSetup(testConfig); - - beforeEach(() => { - const preparedComponents = prepareComponent(testConfig, instance); - fixture = preparedComponents.fixture; - component = preparedComponents.component; - }); - it('should display errors', () => { - component.uischema = rangeDefaultTestData.uischema; - component.schema = rangeDefaultTestData.schema; - - const formsService = getJsonFormsService(component); - formsService.init({ - core: { - data: rangeDefaultTestData.data, - schema: rangeDefaultTestData.schema, - uischema: undefined, - }, - }); - formsService.updateCore( - Actions.updateErrors([ - { - instancePath: '/foo', - message: 'Hi, this is me, test error!', - keyword: '', - schemaPath: '', - params: {}, - }, - ]) - ); - formsService.refresh(); - - component.ngOnInit(); - fixture.detectChanges(); - const debugErrors: DebugElement[] = fixture.debugElement.queryAll( - By.directive(errorTestInformation.errorInstance) - ); - expect(debugErrors.length).toBe(errorTestInformation.numberOfElements); - expect( - debugErrors[errorTestInformation.indexOfElement].nativeElement - .textContent - ).toBe('Hi, this is me, test error!'); - }); - }; - -/** Creates a browser MouseEvent with the specified options. */ -const createMouseEvent = (type: string, x = 0, y = 0, button = 0) => { - const event = document.createEvent('MouseEvent'); - - event.initMouseEvent( - type, - true /* canBubble */, - false /* cancelable */, - window /* view */, - 0 /* detail */, - x /* screenX */, - y /* screenY */, - x /* clientX */, - y /* clientY */, - false /* ctrlKey */, - false /* altKey */, - false /* shiftKey */, - false /* metaKey */, - button /* button */, - null /* relatedTarget */ - ); - - // `initMouseEvent` doesn't allow us to pass the `buttons` and - // defaults it to 0 which looks like a fake event. - Object.defineProperty(event, 'buttons', { get: () => 1 }); - - return event; -}; -/** Utility to dispatch any event on a Node. */ -const dispatchEvent = (node: Node | Window, event: Event): Event => { - node.dispatchEvent(event); - return event; -}; diff --git a/packages/angular-material/test/common/text.ts b/packages/angular-material/test/common/text.ts deleted file mode 100644 index 2a29cf6659..0000000000 --- a/packages/angular-material/test/common/text.ts +++ /dev/null @@ -1,454 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import type { DebugElement } from '@angular/core'; -import { ComponentFixture, TestBed } from '@angular/core/testing'; -import { By } from '@angular/platform-browser'; -import type { JsonFormsControl } from '@jsonforms/angular'; -import { Actions, ControlElement, JsonSchema } from '@jsonforms/core'; -import { - baseSetup, - ErrorTestExpectation, - getJsonFormsService, - TestConfig, - TestData, -} from './util'; - -interface ComponentResult { - fixture: ComponentFixture; - component: C; - textElement?: DebugElement; - textNativeElement?: any; -} - -const prepareComponent = ( - testConfig: TestConfig, - instance?: string, - elementToUse?: (element: DebugElement) => any -): ComponentResult => { - const fixture = TestBed.createComponent(testConfig.componentUT); - const component = fixture.componentInstance; - const result: ComponentResult = { fixture, component }; - if (instance && elementToUse) { - const textElement = fixture.debugElement.query(By.css(instance)); - const textNativeElement = elementToUse(textElement); - result.textElement = textElement; - result.textNativeElement = textNativeElement; - } - return result; -}; -const defaultData = { foo: 'foo' }; -const defaultSchema: JsonSchema = { - type: 'object', - properties: { - foo: { - type: 'string', - }, - }, -}; -const defaultUischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', -}; -export const defaultTextTestData: TestData = { - data: defaultData, - schema: defaultSchema, - uischema: defaultUischema, -}; -export const textBaseTest = - ( - testConfig: TestConfig, - instance: string, - elementToUse: (element: DebugElement) => any, - testData: TestData = defaultTextTestData - ) => - () => { - let fixture: ComponentFixture; - let textElement: DebugElement; - let textNativeElement: any; - let component: C; - - baseSetup(testConfig); - - beforeEach(() => { - const preparedComponents = prepareComponent( - testConfig, - instance, - elementToUse - ); - fixture = preparedComponents.fixture; - textNativeElement = preparedComponents.textNativeElement; - textElement = preparedComponents.textElement; - component = preparedComponents.component; - }); - - it('should render', () => { - component.uischema = testData.uischema; - getJsonFormsService(component).init({ - core: { - data: testData.data, - schema: testData.schema, - uischema: testData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - expect(component.data).toBe('foo'); - expect(textNativeElement.value).toBe('foo'); - expect(textNativeElement.disabled).toBe(false); - // the component is wrapped in a div - const hasDisplayNone = - 'none' === fixture.nativeElement.children[0].style.display; - const hasHidden = fixture.nativeElement.children[0].hidden; - expect(!hasDisplayNone && !hasHidden).toBeTruthy(); - }); - - it('should support updating the state', () => { - component.uischema = testData.uischema; - - getJsonFormsService(component).init({ - core: { - data: testData.data, - schema: testData.schema, - uischema: testData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - - getJsonFormsService(component).updateCore( - Actions.update('foo', () => 'bar') - ); - fixture.detectChanges(); - expect(component.data).toBe('bar'); - expect(textNativeElement.value).toBe('bar'); - }); - it('should update with undefined value', () => { - component.uischema = testData.uischema; - - getJsonFormsService(component).init({ - core: { - data: testData.data, - schema: testData.schema, - uischema: testData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - - getJsonFormsService(component).updateCore( - Actions.update('foo', () => undefined) - ); - fixture.detectChanges(); - expect(component.data).toBe(undefined); - expect(textNativeElement.value).toBe(''); - }); - it('should update with null value', () => { - component.uischema = testData.uischema; - - getJsonFormsService(component).init({ - core: { - data: testData.data, - schema: testData.schema, - uischema: testData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - - getJsonFormsService(component).updateCore( - Actions.update('foo', () => null) - ); - fixture.detectChanges(); - expect(component.data).toBe(null); - expect(textNativeElement.value).toBe(''); - }); - it('should not update with wrong ref', () => { - component.uischema = testData.uischema; - - getJsonFormsService(component).init({ - core: { - data: testData.data, - schema: testData.schema, - uischema: testData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - - getJsonFormsService(component).updateCore( - Actions.update('foo', () => 'foo') - ); - getJsonFormsService(component).updateCore( - Actions.update('bar', () => 'bar') - ); - fixture.detectChanges(); - expect(component.data).toBe('foo'); - expect(textNativeElement.value).toBe('foo'); - }); - // store needed as we evaluate the calculated enabled value to disable/enable the control - it('can be disabled', () => { - component.uischema = testData.uischema; - component.disabled = true; - - getJsonFormsService(component).init({ - core: { - data: testData.data, - schema: testData.schema, - uischema: testData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - expect(textNativeElement.disabled).toBe(true); - }); - it('can be hidden', () => { - component.uischema = testData.uischema; - component.visible = false; - - getJsonFormsService(component).init({ - core: { - data: testData.data, - schema: testData.schema, - uischema: testData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - const hasDisplayNone = - 'none' === fixture.nativeElement.children[0].style.display; - const hasHidden = fixture.nativeElement.children[0].hidden; - expect(hasDisplayNone || hasHidden).toBeTruthy(); - }); - it('id should be present in output', () => { - component.uischema = testData.uischema; - component.id = 'myId'; - getJsonFormsService(component).init({ - core: { - data: testData.data, - schema: testData.schema, - uischema: testData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - expect(textElement.nativeElement.id).toBe('myId'); - }); - }; -export const textInputEventTest = - ( - testConfig: TestConfig, - instance: string, - elementToUse: (element: DebugElement) => any, - testData: TestData = defaultTextTestData - ) => - () => { - let fixture: ComponentFixture; - let textNativeElement: any; - let component: C & { onChange(evt: string): void }; - - baseSetup(testConfig); - - beforeEach(() => { - const preparedComponents = prepareComponent( - testConfig, - instance, - elementToUse - ); - fixture = preparedComponents.fixture; - textNativeElement = preparedComponents.textNativeElement; - component = preparedComponents.component; - }); - - it('should update via input event', () => { - component.uischema = testData.uischema; - - getJsonFormsService(component).init({ - core: { - data: testData.data, - schema: testData.schema, - uischema: testData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - - const spy = spyOn(component, 'onChange'); - textNativeElement.value = 'bar'; - if (textNativeElement.dispatchEvent) { - textNativeElement.dispatchEvent(new Event('input')); - } - // trigger change detection - fixture.detectChanges(); - expect(spy).toHaveBeenCalled(); - expect(textNativeElement.value).toBe('bar'); - }); - }; -export const textErrorTest = - ( - testConfig: TestConfig, - errorTestInformation: ErrorTestExpectation, - testData: TestData = defaultTextTestData - ) => - () => { - let fixture: ComponentFixture; - let component: C; - - baseSetup(testConfig); - - beforeEach(() => { - const preparedComponents = prepareComponent(testConfig); - fixture = preparedComponents.fixture; - component = preparedComponents.component; - }); - it('should display errors', () => { - component.uischema = testData.uischema; - - const formsService = getJsonFormsService(component); - formsService.init({ - core: { - data: testData.data, - schema: testData.schema, - uischema: undefined, - }, - }); - formsService.updateCore( - Actions.updateErrors([ - { - instancePath: '/foo', - message: 'Hi, this is me, test error!', - keyword: '', - schemaPath: '', - params: {}, - }, - ]) - ); - formsService.refresh(); - component.ngOnInit(); - fixture.detectChanges(); - const debugErrors: DebugElement[] = fixture.debugElement.queryAll( - By.directive(errorTestInformation.errorInstance) - ); - expect(debugErrors.length).toBe(errorTestInformation.numberOfElements); - expect( - debugErrors[errorTestInformation.indexOfElement].nativeElement - .textContent - ).toBe('Hi, this is me, test error!'); - }); - }; -export const textTypeTest = - ( - testConfig: TestConfig, - instance: string, - elementToUse: (element: DebugElement) => any, - testData: TestData = defaultTextTestData - ) => - () => { - let fixture: ComponentFixture; - let component: C; - let textNativeElement: any; - - baseSetup(testConfig); - - beforeEach(() => { - const preparedComponents = prepareComponent( - testConfig, - instance, - elementToUse - ); - fixture = preparedComponents.fixture; - component = preparedComponents.component; - textNativeElement = preparedComponents.textNativeElement; - }); - it('should show password independent of schema', () => { - const uischema = JSON.parse(JSON.stringify(testData.uischema)); - uischema.options = { format: 'password' }; - const schema = JSON.parse(JSON.stringify(testData.schema)); - schema.properties.foo.format = 'email'; - - component.uischema = uischema; - component.schema = schema; - - getJsonFormsService(component).init({ - core: { data: testData.data, schema: schema, uischema: uischema }, - }); - component.ngOnInit(); - fixture.detectChanges(); - expect(textNativeElement.type).toBe('password'); - }); - it('should show email', () => { - const schema = JSON.parse(JSON.stringify(testData.schema)); - schema.properties.foo.format = 'email'; - - component.uischema = testData.uischema; - component.schema = schema; - - getJsonFormsService(component).init({ - core: { - data: testData.data, - schema: schema, - uischema: testData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - expect(textNativeElement.type).toBe('email'); - }); - xit('should show tel', () => { - const schema = JSON.parse(JSON.stringify(testData.schema)); - schema.properties.foo.format = 'tel'; - - component.uischema = testData.uischema; - component.schema = schema; - - getJsonFormsService(component).init({ - core: { - data: testData.data, - schema: schema, - uischema: testData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - expect(textNativeElement.type).toBe('tel'); - }); - xit('should fallback to text', () => { - const schema = JSON.parse(JSON.stringify(testData.schema)); - schema.properties.foo.format = 'foo'; - - component.uischema = testData.uischema; - component.schema = schema; - - getJsonFormsService(component).init({ - core: { - data: testData.data, - schema: schema, - uischema: testData.uischema, - }, - }); - component.ngOnInit(); - fixture.detectChanges(); - expect(textNativeElement.type).toBe('text'); - }); - }; diff --git a/packages/angular-material/test/common/util.ts b/packages/angular-material/test/common/util.ts deleted file mode 100644 index 044fc72910..0000000000 --- a/packages/angular-material/test/common/util.ts +++ /dev/null @@ -1,89 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import type { Type } from '@angular/core'; -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { JsonFormsAngularService, JsonFormsControl } from '@jsonforms/angular'; -import type { - JsonFormsRendererRegistryEntry, - JsonSchema, - UISchemaElement, -} from '@jsonforms/core'; -import type { ErrorObject } from 'ajv'; - -export interface ErrorTestExpectation { - errorInstance: Type; - numberOfElements: number; - indexOfElement: number; -} -export interface TestConfig { - imports: any[]; - providers: any[]; - componentUT: Type; -} - -export const baseSetup = ( - testConfig: TestConfig -) => { - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [testConfig.componentUT], - imports: testConfig.imports, - providers: [JsonFormsAngularService].concat(testConfig.providers), - }).compileComponents(); - })); -}; - -export interface TestData { - data: any; - schema: JsonSchema; - uischema: T; - errors?: ErrorObject[]; - renderers?: JsonFormsRendererRegistryEntry[]; -} - -export const getJsonFormsService = ( - component: JsonFormsControl -): JsonFormsAngularService => { - return (component as any).jsonFormsService as JsonFormsAngularService; -}; - -export const setupMockStore = ( - fixture: ComponentFixture, - testData: TestData -): void => { - const component = fixture.componentInstance; - component.uischema = testData.uischema; - component.schema = testData.schema; - - getJsonFormsService(component).init({ - core: { - data: testData.data, - schema: testData.schema, - errors: testData.errors, - uischema: testData.uischema, - }, - }); - getJsonFormsService(component).registerRenderers(testData.renderers); -}; diff --git a/packages/angular-material/test/date-control.spec.ts b/packages/angular-material/test/date-control.spec.ts deleted file mode 100644 index 01f8ca640b..0000000000 --- a/packages/angular-material/test/date-control.spec.ts +++ /dev/null @@ -1,320 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { DebugElement } from '@angular/core'; -import { - ComponentFixture, - fakeAsync, - flush, - TestBed, - waitForAsync, -} from '@angular/core/testing'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MatNativeDateModule } from '@angular/material/core'; -import { - MatDatepicker, - MatDatepickerModule, -} from '@angular/material/datepicker'; -import { MatError, MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { By } from '@angular/platform-browser'; -import { NoopAnimationsModule } from '@angular/platform-browser/animations'; -import { - ErrorTestExpectation, - getJsonFormsService, - setupMockStore, -} from './common'; -import { Actions, ControlElement, JsonSchema } from '@jsonforms/core'; -import { DateControlRenderer, DateControlRendererTester } from '../src'; -import { JsonFormsAngularService } from '@jsonforms/angular'; -import { createTesterContext } from './util'; - -const data = { foo: '2018-01-01' }; -const schema: JsonSchema = { - type: 'object', - properties: { - foo: { - type: 'string', - format: 'date', - }, - }, -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', -}; - -describe('Material boolean field tester', () => { - it('should succeed', () => { - expect( - DateControlRendererTester(uischema, schema, createTesterContext(schema)) - ).toBe(2); - }); -}); -const imports = [ - MatDatepickerModule, - MatInputModule, - MatNativeDateModule, - MatFormFieldModule, - NoopAnimationsModule, - ReactiveFormsModule, -]; -const providers = [JsonFormsAngularService]; -const componentUT: any = DateControlRenderer; -const errorTest: ErrorTestExpectation = { - errorInstance: MatError, - numberOfElements: 1, - indexOfElement: 0, -}; - -describe('Date control Base Tests', () => { - let fixture: ComponentFixture; - let component: DateControlRenderer; - let inputElement: HTMLInputElement; - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [componentUT], - imports: imports, - providers: providers, - }).compileComponents(); - })); - beforeEach(() => { - fixture = TestBed.createComponent(componentUT); - component = fixture.componentInstance; - - inputElement = fixture.debugElement.query(By.css('input')).nativeElement; - }); - - it('should render', () => { - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore( - Actions.init(data, schema, uischema) - ); - component.ngOnInit(); - fixture.detectChanges(); - expect(component.data.toString()).toEqual( - new Date('2018-01-01T00:00').toString() - ); - // auto? shown with US layout - expect(inputElement.value).toBe('1/1/2018'); - expect(inputElement.disabled).toBe(false); - // the component is wrapped in a div - expect(fixture.nativeElement.children[0].style.display).not.toBe('none'); - }); - - it('should support updating the state', () => { - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore( - Actions.init(data, schema, uischema) - ); - component.ngOnInit(); - fixture.detectChanges(); - - getJsonFormsService(component).updateCore( - Actions.update('foo', () => '2018-03-03') - ); - fixture.detectChanges(); - expect(component.data.toString()).toEqual( - new Date('2018-03-03T00:00').toString() - ); - expect(inputElement.value).toBe('3/3/2018'); - }); - it('should update with undefined value', () => { - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore( - Actions.init(data, schema, uischema) - ); - component.ngOnInit(); - fixture.detectChanges(); - - getJsonFormsService(component).updateCore( - Actions.update('foo', () => undefined) - ); - fixture.detectChanges(); - expect(component.data).toBe(null); - expect(inputElement.value).toBe(''); - }); - it('should update with null value', () => { - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore( - Actions.init(data, schema, uischema) - ); - component.ngOnInit(); - fixture.detectChanges(); - - getJsonFormsService(component).updateCore( - Actions.update('foo', () => null) - ); - fixture.detectChanges(); - expect(component.data).toBe(null); - expect(inputElement.value).toBe(''); - }); - it('should not update with wrong ref', () => { - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore( - Actions.init(data, schema, uischema) - ); - component.ngOnInit(); - fixture.detectChanges(); - - getJsonFormsService(component).updateCore( - Actions.update('foo', () => '2018-01-01') - ); - getJsonFormsService(component).updateCore( - Actions.update('bar', () => '2018-03-03') - ); - fixture.detectChanges(); - expect(component.data.toString()).toEqual( - new Date('2018-01-01T00:00').toString() - ); - expect(inputElement.value).toEqual('1/1/2018'); - }); - // store needed as we evaluate the calculated enabled value to disable/enable the control - it('can be disabled', () => { - setupMockStore(fixture, { uischema, schema, data }); - component.disabled = true; - getJsonFormsService(component).updateCore( - Actions.init(data, schema, uischema) - ); - - component.ngOnInit(); - fixture.detectChanges(); - expect(inputElement.disabled).toBe(true); - }); - // store needed as we evaluate the calculated enabled value to disable/enable the control - it('can be hidden', () => { - setupMockStore(fixture, { uischema, schema, data }); - component.visible = false; - getJsonFormsService(component).updateCore( - Actions.init(data, schema, uischema) - ); - - component.ngOnInit(); - fixture.detectChanges(); - // the component is wrapped in a div - expect(fixture.nativeElement.children[0].style.display).toBe('none'); - }); - it('id should be present in output', () => { - component.uischema = uischema; - component.id = 'myId'; - getJsonFormsService(component).init({ - core: { data: data, schema: schema, uischema: uischema }, - }); - - component.ngOnInit(); - fixture.detectChanges(); - expect(inputElement.id).toBe('myId'); - }); -}); -describe('Date control Input Event Tests', () => { - let fixture: ComponentFixture; - let component: DateControlRenderer; - let inputElement: HTMLInputElement; - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [componentUT], - imports: imports, - providers: providers, - }).compileComponents(); - })); - beforeEach(() => { - fixture = TestBed.createComponent(componentUT); - component = fixture.componentInstance; - - inputElement = fixture.debugElement.query(By.css('input')).nativeElement; - }); - it('should update via input event', fakeAsync(() => { - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore( - Actions.init(data, schema, uischema) - ); - component.ngOnInit(); - fixture.detectChanges(); - - const spy = spyOn(component, 'onChange'); - - fixture.debugElement - .query(By.directive(MatDatepicker)) - .componentInstance.open(); - fixture.detectChanges(); - flush(); - - const cells = document.querySelectorAll('.mat-calendar-body-cell'); - const firstCell: HTMLElement = cells[1] as HTMLElement; - firstCell.click(); - fixture.detectChanges(); - flush(); - - inputElement.dispatchEvent(new Event('change')); - // trigger change detection - fixture.detectChanges(); - expect(spy).toHaveBeenCalled(); - expect(inputElement.value).toBe('1/2/2018'); - })); -}); -describe('Date control Error Tests', () => { - let fixture: ComponentFixture; - let component: DateControlRenderer; - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [componentUT], - imports: imports, - providers: providers, - }).compileComponents(); - })); - beforeEach(() => { - fixture = TestBed.createComponent(componentUT); - component = fixture.componentInstance; - }); - it('should display errors', () => { - setupMockStore(fixture, { - uischema, - schema, - data, - }); - const formsService = getJsonFormsService(component); - formsService.updateCore( - Actions.updateErrors([ - { - instancePath: '/foo', - message: 'Hi, this is me, test error!', - params: {}, - keyword: '', - schemaPath: '', - }, - ]) - ); - formsService.refresh(); - - component.ngOnInit(); - fixture.detectChanges(); - const debugErrors: DebugElement[] = fixture.debugElement.queryAll( - By.directive(errorTest.errorInstance) - ); - expect(debugErrors.length).toBe(errorTest.numberOfElements); - expect( - debugErrors[errorTest.indexOfElement].nativeElement.textContent - ).toBe('Hi, this is me, test error!'); - }); -}); diff --git a/packages/angular-material/test/group-layout.spec.ts b/packages/angular-material/test/group-layout.spec.ts deleted file mode 100644 index 2e2a44495e..0000000000 --- a/packages/angular-material/test/group-layout.spec.ts +++ /dev/null @@ -1,101 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { ComponentFixture, waitForAsync } from '@angular/core/testing'; -import { GroupLayout, UISchemaElement } from '@jsonforms/core'; -import { MatCard, MatCardTitle } from '@angular/material/card'; -import { By } from '@angular/platform-browser'; -import { DebugElement } from '@angular/core'; -import { beforeEachLayoutTest, setupMockStore } from './common'; -import { LayoutChildrenRenderPropsPipe } from '../src/library/layouts/layout.renderer'; -import { - GroupLayoutRenderer, - groupLayoutTester, -} from '../src/library/layouts/group-layout.renderer'; - -describe('Group layout tester', () => { - it('should succeed', () => { - expect(groupLayoutTester({ type: 'Group' }, undefined, undefined)).toBe(1); - }); -}); -describe('Group layout', () => { - let fixture: ComponentFixture; - - beforeEach(waitForAsync(() => { - fixture = beforeEachLayoutTest(GroupLayoutRenderer, { - declarations: [LayoutChildrenRenderPropsPipe], - imports: [MatCard, MatCardTitle], - }); - })); - - it('render with undefined elements', () => { - const uischema: UISchemaElement = { - type: 'Group', - }; - setupMockStore(fixture, { data: {}, schema: {}, uischema }); - fixture.componentInstance.ngOnInit(); - fixture.detectChanges(); - const card: DebugElement[] = fixture.debugElement.queryAll( - By.directive(MatCard) - ); - // title - expect(card[0].nativeElement.children.length).toBe(1); - }); - - it('render with null elements', () => { - const uischema: GroupLayout = { - type: 'Group', - elements: null, - }; - setupMockStore(fixture, { data: {}, schema: {}, uischema }); - fixture.componentInstance.ngOnInit(); - fixture.detectChanges(); - const card: DebugElement[] = fixture.debugElement.queryAll( - By.directive(MatCard) - ); - // title - expect(card[0].nativeElement.children.length).toBe(1); - }); - - it('render with children', () => { - const uischema: GroupLayout = { - type: 'Group', - label: 'foo', - elements: [{ type: 'Control' }, { type: 'Control' }], - }; - setupMockStore(fixture, { data: {}, schema: {}, uischema }); - fixture.componentInstance.ngOnInit(); - fixture.detectChanges(); - const card: DebugElement[] = fixture.debugElement.queryAll( - By.directive(MatCard) - ); - const title: DebugElement = fixture.debugElement.query( - By.directive(MatCardTitle) - ); - - expect(title.nativeElement.textContent).toBe('foo'); - // title + 2 controls - expect(card[0].nativeElement.children.length).toBe(3); - }); -}); diff --git a/packages/angular-material/test/horizontal-layout.spec.ts b/packages/angular-material/test/horizontal-layout.spec.ts deleted file mode 100644 index 800dd3da27..0000000000 --- a/packages/angular-material/test/horizontal-layout.spec.ts +++ /dev/null @@ -1,94 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { ComponentFixture, waitForAsync } from '@angular/core/testing'; -import { HorizontalLayout, UISchemaElement } from '@jsonforms/core'; -import { beforeEachLayoutTest, setupMockStore } from './common'; -import { - HorizontalLayoutRenderer, - horizontalLayoutTester, -} from '../src/library/layouts/horizontal-layout.renderer'; -import { LayoutChildrenRenderPropsPipe } from '../src/library/layouts/layout.renderer'; - -describe('Horizontal layout tester', () => { - it('should succeed', () => { - expect( - horizontalLayoutTester({ type: 'HorizontalLayout' }, undefined, undefined) - ).toBe(1); - }); -}); -describe('Horizontal layout', () => { - let fixture: ComponentFixture; - - beforeEach(waitForAsync(() => { - fixture = beforeEachLayoutTest(HorizontalLayoutRenderer, { - declarations: [LayoutChildrenRenderPropsPipe], - }); - })); - - it('render with undefined elements', () => { - const uischema: UISchemaElement = { - type: 'HorizontalLayout', - }; - setupMockStore(fixture, { - data: {}, - schema: {}, - uischema, - }); - fixture.componentInstance.ngOnInit(); - fixture.detectChanges(); - expect(fixture.nativeElement.children[0].children.length).toBe(0); - }); - - it('render with null elements', () => { - const uischema: HorizontalLayout = { - type: 'HorizontalLayout', - elements: null, - }; - setupMockStore(fixture, { - data: {}, - schema: {}, - uischema, - }); - fixture.componentInstance.ngOnInit(); - fixture.detectChanges(); - expect(fixture.nativeElement.children[0].children.length).toBe(0); - }); - - it('render with children', () => { - const uischema: HorizontalLayout = { - type: 'HorizontalLayout', - elements: [{ type: 'Control' }, { type: 'Control' }], - }; - setupMockStore(fixture, { - data: {}, - schema: {}, - uischema, - }); - fixture.componentInstance.ngOnInit(); - fixture.detectChanges(); - expect(fixture.nativeElement.children[0].children.length).toBe(2); - expect(fixture.nativeElement.children[0].hidden).toBe(false); - }); -}); diff --git a/packages/angular-material/test/label-renderer.spec.ts b/packages/angular-material/test/label-renderer.spec.ts deleted file mode 100644 index 549e59a555..0000000000 --- a/packages/angular-material/test/label-renderer.spec.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { By } from '@angular/platform-browser'; -import { JsonSchema, LabelElement } from '@jsonforms/core'; - -import { LabelRenderer, LabelRendererTester } from '../src/library/other'; -import { setupMockStore } from './common'; -import { JsonFormsAngularService } from '@jsonforms/angular'; - -const data = {}; -const schema: JsonSchema = { - type: 'object', - properties: { - foo: { - type: 'string', - }, - }, -}; -const uischema: LabelElement = { - type: 'Label', - text: 'FooBar', -}; - -describe('Material label field tester', () => { - it('should succeed', () => { - expect(LabelRendererTester(uischema, schema, undefined)).toBe(4); - }); -}); -const providers = [JsonFormsAngularService]; -const componentUT: any = LabelRenderer; - -describe('Label Renderer Base Tests', () => { - let fixture: ComponentFixture; - let component: LabelRenderer; - let labelElement: HTMLLabelElement; - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [componentUT], - providers: providers, - }).compileComponents(); - })); - beforeEach(() => { - fixture = TestBed.createComponent(componentUT); - component = fixture.componentInstance; - - labelElement = fixture.debugElement.query(By.css('label')).nativeElement; - }); - - it('should render', () => { - setupMockStore(fixture, { uischema, schema, data }); - fixture.detectChanges(); - component.ngOnInit(); - expect(labelElement.innerText.trim()).toBe('FooBar'); - }); -}); diff --git a/packages/angular-material/test/master-detail.spec.ts b/packages/angular-material/test/master-detail.spec.ts deleted file mode 100644 index 7b91e99b06..0000000000 --- a/packages/angular-material/test/master-detail.spec.ts +++ /dev/null @@ -1,410 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { By } from '@angular/platform-browser'; -import { MatButtonModule } from '@angular/material/button'; -import { MatIconModule } from '@angular/material/icon'; -import { MatListItem, MatListModule } from '@angular/material/list'; -import { MatSidenavModule } from '@angular/material/sidenav'; -import { NoopAnimationsModule } from '@angular/platform-browser/animations'; -import { - JsonFormsAngularService, - JsonFormsOutlet, - UnknownRenderer, -} from '@jsonforms/angular'; -import { DebugElement } from '@angular/core'; -import { MasterListComponent } from '../src/library/other/master-detail/master'; -import { JsonFormsDetailComponent } from '../src/library/other/master-detail/detail'; -import { getJsonFormsService, setupMockStore } from './common'; -import { Actions } from '@jsonforms/core'; -import { MatTooltipModule } from '@angular/material/tooltip'; - -describe('Master detail', () => { - let fixture: ComponentFixture; - let component: any; - - const data = { - orders: [ - { - customer: { - name: 'ACME', - }, - title: 'Carrots', - }, - ], - }; - const schema = { - definitions: { - order: { - type: 'object', - properties: { - customer: { - type: 'object', - properties: { - name: { type: 'string' }, - }, - }, - title: { - type: 'string', - }, - }, - }, - }, - type: 'object', - properties: { - orders: { - type: 'array', - items: { - $ref: '#/definitions/order', - }, - }, - }, - }; - const uischema = { - type: 'ListWithDetail', - scope: '#/properties/orders', - options: { - labelRef: '#/items/properties/customer/properties/name', - detail: { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/customer/properties/name', - }, - ], - }, - }, - }; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [ - JsonFormsOutlet, - MasterListComponent, - UnknownRenderer, - JsonFormsDetailComponent, - ], - imports: [ - MatListModule, - MatSidenavModule, - MatIconModule, - MatButtonModule, - NoopAnimationsModule, - MatTooltipModule, - ], - providers: [JsonFormsAngularService], - }).compileComponents(); - - fixture = TestBed.createComponent(MasterListComponent); - component = fixture.componentInstance; - })); - - it('should render', waitForAsync(() => { - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore(Actions.init(data, schema)); - component.ngOnInit(); - - fixture.detectChanges(); - fixture.whenStable().then(() => { - fixture.detectChanges(); - expect(component.masterItems.length).toBe(1); - expect( - fixture.debugElement.queryAll(By.directive(MatListItem)).length - ).toBe(1); - // the component is wrapped in a div - expect(fixture.nativeElement.children[0].style.display).not.toBe('none'); - }); - })); - - it('add a master item', waitForAsync(() => { - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore(Actions.init(data, schema)); - component.ngOnInit(); - fixture.detectChanges(); - - const spy = spyOn(component, 'addItem').and.returnValue(() => { - /* noop */ - }); - fixture.whenStable().then(() => { - const buttons: DebugElement[] = fixture.debugElement.queryAll( - By.css('button') - ); - buttons[1].nativeElement.click(); - fixture.detectChanges(); - fixture.whenRenderingDone().then(() => { - fixture.detectChanges(); - expect(spy).toHaveBeenCalled(); - }); - }); - })); - - it('remove an item', waitForAsync(() => { - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore(Actions.init(data, schema)); - component.ngOnInit(); - fixture.detectChanges(); - - const spy = spyOn(component, 'removeItems').and.returnValue(() => { - /* noop */ - }); - fixture.whenStable().then(() => { - const buttons: DebugElement[] = fixture.debugElement.queryAll( - By.css('button') - ); - buttons[0].nativeElement.click(); - fixture.whenStable().then(() => { - fixture.detectChanges(); - expect(spy).toHaveBeenCalled(); - }); - }); - })); - - it('remove an item with index < selected index', () => { - const moreData = { - orders: [ - { - customer: { name: 'Carrot Chipmunk' }, - title: 'Carrots', - }, - { - customer: { name: 'Banana Joe' }, - title: 'Bananas', - }, - { - customer: { name: 'Fry' }, - title: 'Slurm', - }, - ], - }; - - setupMockStore(fixture, { - uischema, - schema, - data: moreData, - }); - getJsonFormsService(component).updateCore(Actions.init(moreData, schema)); - component.ngOnInit(); - fixture.detectChanges(); - - // select last element - const listItems: DebugElement[] = fixture.debugElement.queryAll( - By.directive(MatListItem) - ); - listItems[2].nativeElement.click(); - fixture.detectChanges(); - expect(component.selectedItemIdx).toBe(2); - - // delete 1st item - spyOn(component, 'removeItems').and.callFake(() => () => { - getJsonFormsService(component).updateCore( - Actions.update('orders', () => moreData.orders.slice(1)) - ); - fixture.detectChanges(); - }); - const buttons: DebugElement[] = fixture.debugElement.queryAll( - By.css('button') - ); - buttons[0].nativeElement.click(); - - expect(component.selectedItemIdx).toBe(1); - expect(component.selectedItem.data.title).toBe('Slurm'); - }); - - it('remove an item with index > selected index', () => { - const moreData = { - orders: [ - { - customer: { name: 'Carrot Chipmunk' }, - title: 'Carrots', - }, - { - customer: { name: 'Banana Joe' }, - title: 'Bananas', - }, - { - customer: { name: 'Fry' }, - title: 'Slurm', - }, - ], - }; - setupMockStore(fixture, { - uischema, - schema, - data: moreData, - }); - getJsonFormsService(component).updateCore(Actions.init(moreData, schema)); - component.ngOnInit(); - fixture.detectChanges(); - - // delete 2nd item - spyOn(component, 'removeItems').and.callFake(() => () => { - const copy = moreData.orders.slice(); - copy.splice(1, 1); - getJsonFormsService(component).updateCore( - Actions.update('orders', () => copy) - ); - fixture.detectChanges(); - }); - const buttons: DebugElement[] = fixture.debugElement.queryAll( - By.css('button') - ); - buttons[1].nativeElement.click(); - - expect(component.selectedItemIdx).toBe(0); - expect(component.selectedItem.data.title).toBe('Carrots'); - }); - - it('remove an item with index == selected index', () => { - const moreData = { - orders: [ - { - customer: { name: 'Carrot Chipmunk' }, - title: 'Carrots', - }, - { - customer: { name: 'Banana Joe' }, - title: 'Bananas', - }, - { - customer: { name: 'Fry' }, - title: 'Slurm', - }, - ], - }; - setupMockStore(fixture, { - uischema, - schema, - data: moreData, - }); - getJsonFormsService(component).updateCore(Actions.init(moreData, schema)); - component.ngOnInit(); - fixture.detectChanges(); - - // delete 1st item - spyOn(component, 'removeItems').and.callFake(() => () => { - getJsonFormsService(component).updateCore( - Actions.update('orders', () => moreData.orders.slice(1)) - ); - fixture.detectChanges(); - }); - const buttons: DebugElement[] = fixture.debugElement.queryAll( - By.css('button') - ); - buttons[0].nativeElement.click(); - - expect(component.selectedItemIdx).toBe(0); - expect(component.selectedItem.data.title).toBe('Bananas'); - }); - - it('remove last item', () => { - const moreData = { - orders: [ - { - customer: { name: 'Carrot Chipmunk' }, - title: 'Carrots', - }, - ], - }; - setupMockStore(fixture, { - uischema, - schema, - data: moreData, - }); - getJsonFormsService(component).updateCore(Actions.init(moreData, schema)); - component.ngOnInit(); - fixture.detectChanges(); - - // delete item - spyOn(component, 'removeItems').and.callFake(() => () => { - getJsonFormsService(component).updateCore( - Actions.update('orders', () => []) - ); - fixture.detectChanges(); - }); - const buttons: DebugElement[] = fixture.debugElement.queryAll( - By.css('button') - ); - buttons[0].nativeElement.click(); - - expect(component.selectedItemIdx).toBe(-1); - expect(component.selectedItem).toBe(undefined); - }); - - it('setting detail on click', waitForAsync(() => { - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore(Actions.init(data, schema)); - component.ngOnInit(); - - fixture.detectChanges(); - fixture.whenStable().then(() => { - spyOn(component, 'onSelect'); - const select = fixture.debugElement.query( - By.directive(MatListItem) - ).nativeElement; - select.click(); - fixture.detectChanges(); - fixture.whenStable().then(() => { - fixture.detectChanges(); - expect( - fixture.debugElement.queryAll(By.directive(JsonFormsDetailComponent)) - .length - ).toBe(1); - expect(component.onSelect).toHaveBeenCalledWith( - { - label: 'ACME', - data: { - customer: { name: 'ACME' }, - title: 'Carrots', - }, - path: 'orders.0', - schema: schema.definitions.order, - uischema: { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/customer/properties/name', - }, - ], - }, - }, - 0 - ); - }); - }); - })); - - it('can be hidden', waitForAsync(() => { - setupMockStore(fixture, { uischema, schema, data }); - getJsonFormsService(component).updateCore(Actions.init(data, schema)); - component.visible = false; - component.ngOnInit(); - fixture.detectChanges(); - fixture.whenRenderingDone().then(() => { - expect(fixture.nativeElement.children[0].style.display).toBe('none'); - }); - })); -}); diff --git a/packages/angular-material/test/middleware.spec.ts b/packages/angular-material/test/middleware.spec.ts deleted file mode 100644 index b6f01c2d1b..0000000000 --- a/packages/angular-material/test/middleware.spec.ts +++ /dev/null @@ -1,85 +0,0 @@ -/* - The MIT License - - Copyright (c) 2023-2023 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -import { ReactiveFormsModule } from '@angular/forms'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { NoopAnimationsModule } from '@angular/platform-browser/animations'; -import { NumberControlRenderer } from '../src'; -import { JsonFormsAngularService, JsonFormsControl } from '@jsonforms/angular'; -import { baseSetup, getJsonFormsService, prepareComponent } from './common'; - -const imports = [ - MatFormFieldModule, - MatInputModule, - NoopAnimationsModule, - ReactiveFormsModule, -]; -const providers = [JsonFormsAngularService]; -const componentUT: any = NumberControlRenderer; -const testConfig = { imports, providers, componentUT }; - -describe('middleware tests', () => { - let component: JsonFormsControl; - const startingValues = { - core: { - data: 'startValue', - schema: { type: 'string' }, - uischema: { - type: 'control', - }, - }, - }; - - baseSetup(testConfig); - - beforeEach(() => { - const preparedComponents = prepareComponent(testConfig, 'input'); - component = preparedComponents.component; - }); - - it('init using middleware', () => { - const jsonFormsService: JsonFormsAngularService = - getJsonFormsService(component); - const spyMiddleware = jasmine.createSpy('spy1').and.returnValue({ - data: 4, - schema: { type: 'number' }, - uischema: { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - }, - ], - }, - }); - jsonFormsService.init(startingValues, spyMiddleware); - expect(spyMiddleware).toHaveBeenCalled(); - const core = jsonFormsService.getState().jsonforms.core; - expect(core?.data).toBe(4); - expect(core?.schema.type).toBe('number'); - expect(core?.uischema.type).toBe('VerticalLayout'); - }); -}); diff --git a/packages/angular-material/test/number-control.spec.ts b/packages/angular-material/test/number-control.spec.ts deleted file mode 100644 index 715ae20e51..0000000000 --- a/packages/angular-material/test/number-control.spec.ts +++ /dev/null @@ -1,334 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { DebugElement } from '@angular/core'; -import { ComponentFixture } from '@angular/core/testing'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MatError, MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { NoopAnimationsModule } from '@angular/platform-browser/animations'; -import { JsonFormsAngularService, JsonFormsControl } from '@jsonforms/angular'; -import { - baseSetup, - ErrorTestExpectation, - getJsonFormsService, - numberAdditionalPropsTest, - numberBaseTest, - numberErrorTest, - numberInputEventTest, - prepareComponent, -} from './common'; -import { Actions, ControlElement, JsonFormsCore } from '@jsonforms/core'; -import { NumberControlRenderer, NumberControlRendererTester } from '../src'; - -describe('Material number field tester', () => { - const uischema = { - type: 'Control', - scope: '#/properties/foo', - }; - - it('should succeed with floats', () => { - expect( - NumberControlRendererTester( - uischema, - { - type: 'object', - properties: { - foo: { - type: 'number', - }, - }, - }, - undefined - ) - ).toBe(2); - }); - it('should succeed with integers', () => { - expect( - NumberControlRendererTester( - uischema, - { - type: 'object', - properties: { - foo: { - type: 'integer', - }, - }, - }, - undefined - ) - ).toBe(2); - }); -}); - -const imports = [ - MatFormFieldModule, - MatInputModule, - NoopAnimationsModule, - ReactiveFormsModule, -]; -const providers = [JsonFormsAngularService]; -const componentUT: any = NumberControlRenderer; -const errorTest: ErrorTestExpectation = { - errorInstance: MatError, - numberOfElements: 1, - indexOfElement: 0, -}; -const toSelect = (el: DebugElement) => el.nativeElement; -const testConfig = { imports, providers, componentUT }; - -describe( - 'Number control Base Tests', - numberBaseTest(testConfig, 'input', toSelect) -); -describe( - 'Number control Input Event Tests', - numberInputEventTest(testConfig, 'input', toSelect) -); -describe('Number control Error Tests', numberErrorTest(testConfig, errorTest)); -describe( - 'Number control Additional Props Tests', - numberAdditionalPropsTest(testConfig, 'input', toSelect) -); - -describe('Number control custom', () => { - let fixture: ComponentFixture; - let numberNativeElement: any; - let component: JsonFormsControl; - baseSetup(testConfig); - - const defaultSchema = { - type: 'object', - properties: { - foo: { type: 'number' }, - }, - }; - const defaultData = { foo: 1000000 }; - const defaultUischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - }; - - beforeEach(() => { - const preparedComponents = prepareComponent(testConfig, 'input', toSelect); - fixture = preparedComponents.fixture; - numberNativeElement = preparedComponents.numberNativeElement; - component = preparedComponents.component; - }); - - it('default grouping behavior', () => { - const uischema = Object.assign({}, defaultUischema); - component.uischema = uischema; - const state: JsonFormsCore = { - data: defaultData, - schema: defaultSchema, - uischema: uischema, - }; - getJsonFormsService(component).init({ - core: state, - i18n: { - locale: 'en', - }, - }); - getJsonFormsService(component).updateCore( - Actions.init(state.data, state.schema) - ); - component.ngOnInit(); - fixture.detectChanges(); - - expect(numberNativeElement.value).toBe('1,000,000'); - }); - - it('should use config for grouping', () => { - const uischema = Object.assign({}, defaultUischema); - component.uischema = uischema; - const state: JsonFormsCore = { - data: defaultData, - schema: defaultSchema, - uischema: uischema, - }; - getJsonFormsService(component).init({ - core: state, - i18n: { - locale: 'en', - }, - config: { - useGrouping: false, - }, - }); - getJsonFormsService(component).updateCore( - Actions.init(state.data, state.schema) - ); - component.ngOnInit(); - fixture.detectChanges(); - - expect(numberNativeElement.value).toBe('1000000'); - }); - it('should use uischema for grouping', () => { - const uischema = Object.assign({}, defaultUischema); - uischema.options = { - useGrouping: false, - }; - component.uischema = uischema; - const state: JsonFormsCore = { - data: defaultData, - schema: defaultSchema, - uischema: uischema, - }; - getJsonFormsService(component).init({ - core: state, - i18n: { - locale: 'en', - }, - config: { - useGrouping: true, - }, - }); - getJsonFormsService(component).updateCore( - Actions.init(state.data, state.schema) - ); - component.ngOnInit(); - fixture.detectChanges(); - - expect(numberNativeElement.value).toBe('1000000'); - }); - - it('should have description property set correctly', () => { - const schema = { - type: 'object', - properties: { - foo: { - type: 'number', - description: 'This is a number field', - }, - }, - }; - const uischema = Object.assign({}, defaultUischema); - component.uischema = uischema; - const state: JsonFormsCore = { - data: defaultData, - schema: schema, - uischema: uischema, - }; - getJsonFormsService(component).init({ - core: state, - i18n: { - locale: 'en', - }, - }); - getJsonFormsService(component).updateCore( - Actions.init(state.data, state.schema) - ); - component.ngOnInit(); - fixture.detectChanges(); - - // Verify the description property is set correctly on the component - expect(component.description).toBe('This is a number field'); - }); - - it('should show description when showUnfocusedDescription is true', () => { - const schema = { - type: 'object', - properties: { - foo: { - type: 'number', - description: 'This is a number field', - }, - }, - }; - const uischema = Object.assign({}, defaultUischema); - uischema.options = { - showUnfocusedDescription: true, - }; - component.uischema = uischema; - const state: JsonFormsCore = { - data: defaultData, - schema: schema, - uischema: uischema, - }; - getJsonFormsService(component).init({ - core: state, - i18n: { - locale: 'en', - }, - }); - getJsonFormsService(component).updateCore( - Actions.init(state.data, state.schema) - ); - component.ngOnInit(); - fixture.detectChanges(); - - // Description should be visible even without focus - const matHint = fixture.nativeElement.querySelector('mat-hint'); - expect(matHint).toBeTruthy(); - expect(matHint.textContent.trim()).toBe('This is a number field'); - }); - - it('should render translated description correctly', () => { - const schema = { - type: 'object', - properties: { - foo: { - type: 'number', - description: 'description.number', - }, - }, - }; - const uischema = Object.assign({}, defaultUischema); - uischema.options = { - showUnfocusedDescription: true, - }; - component.uischema = uischema; - const state: JsonFormsCore = { - data: defaultData, - schema: schema, - uischema: uischema, - }; - getJsonFormsService(component).init({ - core: state, - i18n: { - locale: 'en', - translate: (key: string, defaultMessage: string | undefined) => { - const translations: { [key: string]: string } = { - 'foo.description': 'Translated number description', - }; - return translations[key] ?? defaultMessage; - }, - }, - }); - getJsonFormsService(component).updateCore( - Actions.init(state.data, state.schema) - ); - component.ngOnInit(); - fixture.detectChanges(); - - // Verify the description is translated and rendered correctly - expect(component.description).toBe('Translated number description'); - - // Check that the translated description is displayed in the DOM - const matHint = fixture.nativeElement.querySelector('mat-hint'); - expect(matHint).toBeTruthy(); - expect(matHint.textContent.trim()).toBe('Translated number description'); - }); -}); diff --git a/packages/angular-material/test/object-control.spec.ts b/packages/angular-material/test/object-control.spec.ts deleted file mode 100644 index 26597f79d2..0000000000 --- a/packages/angular-material/test/object-control.spec.ts +++ /dev/null @@ -1,219 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { CommonModule } from '@angular/common'; -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MatCardModule } from '@angular/material/card'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { NoopAnimationsModule } from '@angular/platform-browser/animations'; -import { JsonFormsAngularService, JsonFormsModule } from '@jsonforms/angular'; -import { ControlElement } from '@jsonforms/core'; -import { - GroupLayoutRenderer, - groupLayoutTester, - TextControlRenderer, - TextControlRendererTester, - VerticalLayoutRenderer, - verticalLayoutTester, -} from '../src'; -import { - ObjectControlRenderer, - ObjectControlRendererTester, -} from '../src/library/other/object.renderer'; -import { getJsonFormsService } from './common'; -import { LayoutChildrenRenderPropsPipe } from '../src/library/layouts/layout.renderer'; - -const uischema1: ControlElement = { type: 'Control', scope: '#' }; -const uischema2: ControlElement = { - type: 'Control', - scope: '#/properties/foo', -}; -const schema1 = { - type: 'object', - properties: { - foo: { type: 'string' }, - }, -}; -const schema2 = { - type: 'object', - properties: { - foo: { - type: 'object', - properties: { - foo_1: { type: 'string' }, - }, - }, - bar: { - type: 'object', - properties: { - bar_1: { type: 'string' }, - }, - }, - }, -}; -const renderers = [ - { tester: TextControlRendererTester, renderer: TextControlRenderer }, - { tester: verticalLayoutTester, renderer: VerticalLayoutRenderer }, - { tester: groupLayoutTester, renderer: GroupLayoutRenderer }, - { tester: ObjectControlRendererTester, renderer: ObjectControlRenderer }, -]; - -describe('Object Control tester', () => { - it('should succeed', () => { - expect(ObjectControlRendererTester(uischema1, schema1, undefined)).toBe(2); - expect(ObjectControlRendererTester(uischema2, schema2, undefined)).toBe(2); - }); -}); -describe('Object Control', () => { - let fixture: ComponentFixture; - let component: any; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [ - ObjectControlRenderer, - TextControlRenderer, - VerticalLayoutRenderer, - GroupLayoutRenderer, - LayoutChildrenRenderPropsPipe, - ], - imports: [ - CommonModule, - JsonFormsModule, - MatCardModule, - NoopAnimationsModule, - MatFormFieldModule, - MatInputModule, - ReactiveFormsModule, - ], - providers: [JsonFormsAngularService], - }).compileComponents(); - - fixture = TestBed.createComponent(ObjectControlRenderer); - component = fixture.componentInstance; - })); - - it('object control creates group', waitForAsync(() => { - component.uischema = uischema2; - component.schema = schema2; - - getJsonFormsService(component).init({ - renderers: renderers, - core: { - data: {}, - schema: schema2, - uischema: undefined, - }, - }); - fixture.detectChanges(); - component.ngOnInit(); - fixture.whenStable().then(() => { - // one for the object renderer and one for the group - expect(fixture.nativeElement.querySelectorAll('mat-card').length).toBe(2); - expect( - fixture.nativeElement.querySelectorAll('mat-card-title')[0].textContent - ).toBe('Foo'); - }); - })); - - it('render all elements', waitForAsync(() => { - component.uischema = uischema1; - component.schema = schema2; - - getJsonFormsService(component).init({ - core: { - data: {}, - schema: schema2, - uischema: undefined, - }, - }); - getJsonFormsService(component).registerRenderers(renderers); - - fixture.detectChanges(); - component.ngOnInit(); - fixture.whenStable().then(() => { - expect(fixture.nativeElement.querySelectorAll('input').length).toBe(2); - }); - })); - - it('render only own elements', waitForAsync(() => { - component.uischema = uischema2; - component.schema = schema2; - - getJsonFormsService(component).init({ - core: { - data: {}, - schema: schema2, - uischema: undefined, - }, - }); - getJsonFormsService(component).registerRenderers(renderers); - fixture.detectChanges(); - component.ngOnInit(); - fixture.whenStable().then(() => { - expect(fixture.nativeElement.querySelectorAll('input').length).toBe(1); - }); - })); - - xit('can be disabled', waitForAsync(() => { - component.uischema = uischema1; - component.schema = schema1; - component.disabled = true; - - getJsonFormsService(component).init({ - core: { - data: {}, - schema: schema1, - uischema: undefined, - }, - }); - getJsonFormsService(component).registerRenderers(renderers); - fixture.detectChanges(); - component.ngOnInit(); - fixture.whenStable().then(() => { - expect(fixture.nativeElement.querySelector('input').disabled).toBe(true); - }); - })); - xit('should be enabled by default', waitForAsync(() => { - component.uischema = uischema1; - component.schema = schema1; - - getJsonFormsService(component).init({ - core: { - data: {}, - schema: schema1, - uischema: undefined, - }, - }); - getJsonFormsService(component).registerRenderers(renderers); - component.ngOnInit(); - fixture.detectChanges(); - fixture.whenRenderingDone().then(() => { - fixture.detectChanges(); - expect(fixture.nativeElement.querySelector('input').disabled).toBeFalsy(); - }); - })); -}); diff --git a/packages/angular-material/test/range-control.spec.ts b/packages/angular-material/test/range-control.spec.ts deleted file mode 100644 index 55ca7a1b23..0000000000 --- a/packages/angular-material/test/range-control.spec.ts +++ /dev/null @@ -1,110 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { ReactiveFormsModule } from '@angular/forms'; -import { MatError, MatFormFieldModule } from '@angular/material/form-field'; -import { MatSlider, MatSliderModule } from '@angular/material/slider'; -import { NoopAnimationsModule } from '@angular/platform-browser/animations'; -import { - ErrorTestExpectation, - rangeBaseTest, - rangeErrorTest, - rangeInputEventTest, -} from './common'; -import { RangeControlRenderer, RangeControlRendererTester } from '../src'; -import { JsonFormsAngularService } from '@jsonforms/angular'; - -describe('Material number field tester', () => { - const uischema = { - type: 'Control', - scope: '#/properties/foo', - options: { slider: true }, - }; - - it('should succeed with floats', () => { - expect( - RangeControlRendererTester( - uischema, - { - type: 'object', - properties: { - foo: { - type: 'number', - minimum: -42.42, - maximum: 42.42, - default: 0.42, - }, - }, - }, - undefined - ) - ).toBe(4); - }); - it('should succeed with integers', () => { - expect( - RangeControlRendererTester( - uischema, - { - type: 'object', - properties: { - foo: { - type: 'integer', - minimum: -42, - maximum: 42, - default: 1, - }, - }, - }, - undefined - ) - ).toBe(4); - }); -}); -const imports = [ - NoopAnimationsModule, - MatSliderModule, - MatFormFieldModule, - ReactiveFormsModule, -]; -const providers = [JsonFormsAngularService]; -const componentUT: any = RangeControlRenderer; -const errorTest: ErrorTestExpectation = { - errorInstance: MatError, - numberOfElements: 1, - indexOfElement: 0, -}; -const defaultTestConfig = { imports, providers, componentUT }; - -describe( - 'Range control Base Tests', - rangeBaseTest(defaultTestConfig, MatSlider) -); -describe( - 'Range control Input Event Tests', - rangeInputEventTest(defaultTestConfig, MatSlider) -); -describe( - 'Range control Error Tests', - rangeErrorTest(defaultTestConfig, MatSlider, errorTest) -); diff --git a/packages/angular-material/test/table-control.spec.ts b/packages/angular-material/test/table-control.spec.ts deleted file mode 100644 index 0d7c23ce95..0000000000 --- a/packages/angular-material/test/table-control.spec.ts +++ /dev/null @@ -1,388 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { CommonModule } from '@angular/common'; -import { ComponentFixture, TestBed, waitForAsync } from '@angular/core/testing'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MatCardModule } from '@angular/material/card'; -import { MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { MatIconModule } from '@angular/material/icon'; -import { MatTableModule } from '@angular/material/table'; -import { NoopAnimationsModule } from '@angular/platform-browser/animations'; -import { JsonFormsAngularService, JsonFormsModule } from '@jsonforms/angular'; -import { ControlElement } from '@jsonforms/core'; -import { TextControlRenderer, TextControlRendererTester } from '../src'; -import { - GetProps, - TableRenderer, - TableRendererTester, -} from '../src/library/other/table.renderer'; -import { setupMockStore } from './common'; -import { createTesterContext } from './util'; -import { MatTooltipModule } from '@angular/material/tooltip'; - -const uischema1: ControlElement = { type: 'Control', scope: '#' }; -const uischema2: ControlElement = { - type: 'Control', - scope: '#/properties/my', -}; -const uischemaWithSorting: ControlElement = { - type: 'Control', - scope: '#', - options: { - showSortButtons: true, - }, -}; -const schema_object1 = { - type: 'array', - items: { - type: 'object', - properties: { - foo: { type: 'string' }, - bar: { type: 'string' }, - }, - }, -}; -const schema_object2 = { - type: 'object', - properties: { - my: { - type: 'array', - items: { - type: 'object', - properties: { - foo: { type: 'string' }, - bar: { type: 'string' }, - }, - }, - }, - }, -}; -const schema_simple1 = { - type: 'array', - items: { - type: 'string', - }, -}; -const schema_simple2 = { - type: 'object', - properties: { - my: { - type: 'array', - items: { - type: 'string', - }, - }, - }, -}; -const renderers = [ - { tester: TextControlRendererTester, renderer: TextControlRenderer }, - { tester: TableRendererTester, renderer: TableRenderer }, -]; - -describe('Table tester', () => { - it('should succeed', () => { - expect( - TableRendererTester( - uischema1, - schema_object1, - createTesterContext(schema_object1) - ) - ).toBe(3); - expect( - TableRendererTester( - uischema1, - schema_simple1, - createTesterContext(schema_simple1) - ) - ).toBe(3); - expect( - TableRendererTester( - uischema2, - schema_object2, - createTesterContext(schema_object2) - ) - ).toBe(3); - expect( - TableRendererTester( - uischema2, - schema_simple2, - createTesterContext(schema_simple2) - ) - ).toBe(3); - }); -}); -describe('Table', () => { - let fixture: ComponentFixture; - let component: any; - - beforeEach(waitForAsync(() => { - TestBed.configureTestingModule({ - declarations: [TableRenderer, TextControlRenderer, GetProps], - imports: [ - CommonModule, - JsonFormsModule, - MatCardModule, - NoopAnimationsModule, - MatFormFieldModule, - MatIconModule, - MatInputModule, - ReactiveFormsModule, - MatTableModule, - MatTooltipModule, - ], - providers: [JsonFormsAngularService], - }).compileComponents(); - - fixture = TestBed.createComponent(TableRenderer); - component = fixture.componentInstance; - })); - - it('renders object array on root', waitForAsync(() => { - setupMockStore(fixture, { - uischema: uischema1, - schema: schema_object1, - data: [ - { foo: 'foo_1', bar: 'bar_1' }, - { foo: 'foo_2', bar: 'bar_2' }, - ], - renderers, - }); - fixture.detectChanges(); - component.ngOnInit(); - fixture.whenStable().then(() => { - // 2 columns - expect(fixture.nativeElement.querySelectorAll('th').length).toBe(3); - // 1 head row and 2 data rows - expect(fixture.nativeElement.querySelectorAll('tr').length).toBe(1 + 2); - // 4 data entries - expect(fixture.nativeElement.querySelectorAll('td').length).toBe(6); - }); - })); - it('renders object array on path', waitForAsync(() => { - setupMockStore(fixture, { - uischema: uischema2, - schema: schema_object2, - data: { - my: [ - { foo: 'foo_1', bar: 'bar_1' }, - { foo: 'foo_2', bar: 'bar_2' }, - ], - }, - renderers, - }); - - fixture.detectChanges(); - component.ngOnInit(); - fixture.whenStable().then(() => { - // 2 columns - expect(fixture.nativeElement.querySelectorAll('th').length).toBe(3); - // 1 head row and 2 data rows - expect(fixture.nativeElement.querySelectorAll('tr').length).toBe(1 + 2); - // 4 data entries - expect(fixture.nativeElement.querySelectorAll('td').length).toBe(6); - }); - })); - - it('renders simple array on root', waitForAsync(() => { - setupMockStore(fixture, { - uischema: uischema1, - schema: schema_simple1, - data: ['foo', 'bar'], - renderers, - }); - fixture.detectChanges(); - component.ngOnInit(); - fixture.whenStable().then(() => { - // 1 column - expect(fixture.nativeElement.querySelectorAll('th').length).toBe(2); - // 1 head row and 2 data rows - expect(fixture.nativeElement.querySelectorAll('tr').length).toBe(1 + 2); - // 2 data entries - expect(fixture.nativeElement.querySelectorAll('td').length).toBe(4); - }); - })); - it('renders simple array on path', waitForAsync(() => { - setupMockStore(fixture, { - uischema: uischema2, - schema: schema_simple2, - data: { my: ['foo', 'bar'] }, - renderers, - }); - fixture.detectChanges(); - component.ngOnInit(); - fixture.whenStable().then(() => { - // 1 columns - expect(fixture.nativeElement.querySelectorAll('th').length).toBe(2); - // 1 head row and 2 data rows - expect(fixture.nativeElement.querySelectorAll('tr').length).toBe(1 + 2); - // 2 data entries - expect(fixture.nativeElement.querySelectorAll('td').length).toBe(4); - }); - })); - - it('can be disabled', waitForAsync(() => { - setupMockStore(fixture, { - uischema: uischema1, - schema: schema_object1, - data: [{ foo: 'foo_1', bar: 'bar_1' }], - renderers, - }); - component.disabled = true; - fixture.detectChanges(); - component.ngOnInit(); - fixture.whenStable().then(() => { - expect(fixture.nativeElement.querySelectorAll('input').length).toBe(2); - expect( - fixture.nativeElement.querySelectorAll('input')[0].disabled - ).toBeTruthy(); - expect( - fixture.nativeElement.querySelectorAll('input')[1].disabled - ).toBeTruthy(); - }); - })); - it('should be enabled by default', waitForAsync(() => { - setupMockStore(fixture, { - uischema: uischema1, - schema: schema_object1, - data: [{ foo: 'foo_1', bar: 'bar_1' }], - renderers, - }); - fixture.detectChanges(); - component.ngOnInit(); - fixture.whenStable().then(() => { - component.add(); - expect(fixture.nativeElement.querySelectorAll('input').length).toBe(2); - expect(fixture.nativeElement.querySelector('input').disabled).toBeFalsy(); - }); - })); - - it('renderer handles removing of rows', waitForAsync(() => { - setupMockStore(fixture, { - uischema: uischema1, - schema: schema_object1, - data: [ - { foo: 'foo_1', bar: 'bar_1' }, - { foo: 'foo_2', bar: 'bar_2' }, - ], - renderers, - }); - - fixture.detectChanges(); - component.ngOnInit(); - component.remove(0); - component.remove(0); - fixture.detectChanges(); - - fixture.whenStable().then(() => { - // 1 row - expect(fixture.nativeElement.querySelectorAll('tr').length).toBe(1 + 0); - }); - })); - - it('renderer handles adding of rows', waitForAsync(() => { - setupMockStore(fixture, { - uischema: uischema1, - schema: schema_object1, - data: [ - { foo: 'foo_1', bar: 'bar_1' }, - { foo: 'foo_2', bar: 'bar_2' }, - ], - renderers, - }); - - fixture.detectChanges(); - component.ngOnInit(); - - component.add(); - component.add(); - fixture.detectChanges(); - - fixture.whenStable().then(() => { - // 3 row - expect(fixture.nativeElement.querySelectorAll('tr').length).toBe(1 + 4); - }); - })); - - it('when disabled doesnt render `add` nor `remove` icons', waitForAsync(() => { - setupMockStore(fixture, { - uischema: uischema1, - schema: schema_object1, - data: [ - { foo: 'foo_1', bar: 'bar_1' }, - { foo: 'foo_2', bar: 'bar_2' }, - ], - renderers, - }); - component.disabled = true; - fixture.detectChanges(); - - component.ngOnInit(); - fixture.whenStable().then(() => { - // 2 columns - expect(fixture.nativeElement.querySelectorAll('th').length).toBe(2); - // 2 rows - expect(fixture.nativeElement.querySelectorAll('tr').length).toBe(1 + 2); - // 2 data entries - expect(fixture.nativeElement.querySelectorAll('td').length).toBe(4); - }); - })); - it('when options.showSortButtons is True, it should render sort buttons', waitForAsync(() => { - setupMockStore(fixture, { - uischema: uischemaWithSorting, - schema: schema_simple1, - data: ['foo', 'bar'], - renderers, - }); - component.disabled = false; - fixture.detectChanges(); - - component.ngOnInit(); - fixture.whenStable().then(() => { - expect(fixture.nativeElement.querySelectorAll('.item-up').length).toBe(2); - expect(fixture.nativeElement.querySelectorAll('.item-down').length).toBe( - 2 - ); - }); - })); - it('when options.showSortButtons is False, it should NOT render sort buttons', waitForAsync(() => { - setupMockStore(fixture, { - uischema: uischema1, - schema: schema_simple1, - data: ['foo', 'bar'], - renderers, - }); - component.disabled = false; - fixture.detectChanges(); - - component.ngOnInit(); - fixture.whenStable().then(() => { - expect(fixture.nativeElement.querySelectorAll('.item-up').length).toBe(0); - expect(fixture.nativeElement.querySelectorAll('.item-down').length).toBe( - 0 - ); - }); - })); -}); diff --git a/packages/angular-material/test/test.ts b/packages/angular-material/test/test.ts deleted file mode 100644 index a3f0e9eb0e..0000000000 --- a/packages/angular-material/test/test.ts +++ /dev/null @@ -1,14 +0,0 @@ -// This file is required by karma.conf.js and loads recursively all the .spec and framework files - -import 'zone.js/testing'; -import { getTestBed } from '@angular/core/testing'; -import { - BrowserDynamicTestingModule, - platformBrowserDynamicTesting, -} from '@angular/platform-browser-dynamic/testing'; - -// First, initialize the Angular testing environment. -getTestBed().initTestEnvironment( - BrowserDynamicTestingModule, - platformBrowserDynamicTesting() -); diff --git a/packages/angular-material/test/text-area.spec.ts b/packages/angular-material/test/text-area.spec.ts deleted file mode 100644 index a52cb19683..0000000000 --- a/packages/angular-material/test/text-area.spec.ts +++ /dev/null @@ -1,110 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { DebugElement } from '@angular/core'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MatError, MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { NoopAnimationsModule } from '@angular/platform-browser/animations'; -import { - ErrorTestExpectation, - TestData, - textBaseTest, - textErrorTest, - textInputEventTest, -} from './common'; -import { TextAreaRenderer, TextAreaRendererTester } from '../src'; -import { ControlElement, JsonSchema } from '@jsonforms/core'; -import { JsonFormsAngularService } from '@jsonforms/angular'; - -describe('Material text field tester', () => { - const uischema = { - type: 'Control', - scope: '#/properties/foo', - options: { multi: true }, - }; - - it('should succeed', () => { - expect( - TextAreaRendererTester( - uischema, - { - type: 'object', - properties: { - foo: { - type: 'string', - }, - }, - }, - undefined - ) - ).toBe(2); - }); -}); -const imports = [ - MatFormFieldModule, - MatInputModule, - NoopAnimationsModule, - ReactiveFormsModule, -]; -const providers = [JsonFormsAngularService]; -const componentUT: any = TextAreaRenderer; -const errorTest: ErrorTestExpectation = { - errorInstance: MatError, - numberOfElements: 1, - indexOfElement: 0, -}; -const toSelect = (el: DebugElement) => el.nativeElement; -const testConfig = { imports, providers, componentUT }; -const defaultData = { foo: 'foo' }; -const defaultSchema: JsonSchema = { - type: 'object', - properties: { - foo: { - type: 'string', - }, - }, -}; -const defaultUischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { multi: true }, -}; -const defaultTestData: TestData = { - data: defaultData, - schema: defaultSchema, - uischema: defaultUischema, -}; -describe( - 'Text control Base Tests', - textBaseTest(testConfig, 'textarea', toSelect, defaultTestData) -); -describe( - 'Text control Input Event Tests', - textInputEventTest(testConfig, 'textarea', toSelect, defaultTestData) -); -describe( - 'Text control Error Tests', - textErrorTest(testConfig, errorTest, defaultTestData) -); diff --git a/packages/angular-material/test/text-control.spec.ts b/packages/angular-material/test/text-control.spec.ts deleted file mode 100644 index 0a940384a5..0000000000 --- a/packages/angular-material/test/text-control.spec.ts +++ /dev/null @@ -1,91 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { DebugElement } from '@angular/core'; -import { ReactiveFormsModule } from '@angular/forms'; -import { MatError, MatFormFieldModule } from '@angular/material/form-field'; -import { MatInputModule } from '@angular/material/input'; -import { NoopAnimationsModule } from '@angular/platform-browser/animations'; -import { - ErrorTestExpectation, - textBaseTest, - textErrorTest, - textInputEventTest, - textTypeTest, -} from './common'; -import { TextControlRenderer, TextControlRendererTester } from '../src'; -import { JsonFormsAngularService } from '@jsonforms/angular'; - -describe('Material text field tester', () => { - const uischema = { - type: 'Control', - scope: '#/properties/foo', - }; - - it('should succeed', () => { - expect( - TextControlRendererTester( - uischema, - { - type: 'object', - properties: { - foo: { - type: 'string', - }, - }, - }, - undefined - ) - ).toBe(1); - }); -}); -const imports = [ - MatFormFieldModule, - MatInputModule, - NoopAnimationsModule, - ReactiveFormsModule, -]; -const providers = [JsonFormsAngularService]; -const componentUT: any = TextControlRenderer; -const errorTest: ErrorTestExpectation = { - errorInstance: MatError, - numberOfElements: 1, - indexOfElement: 0, -}; -const toSelect = (el: DebugElement) => el.nativeElement; -const testConfig = { imports, providers, componentUT }; - -describe( - 'Text control Base Tests', - textBaseTest(testConfig, 'input', toSelect) -); -describe( - 'Text control Input Event Tests', - textInputEventTest(testConfig, 'input', toSelect) -); -describe('Text control Error Tests', textErrorTest(testConfig, errorTest)); -describe( - 'Text control Type Tests', - textTypeTest(testConfig, 'input', toSelect) -); diff --git a/packages/angular-material/test/toggle-control.spec.ts b/packages/angular-material/test/toggle-control.spec.ts deleted file mode 100644 index 91ed433375..0000000000 --- a/packages/angular-material/test/toggle-control.spec.ts +++ /dev/null @@ -1,83 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { MatError, MatFormFieldModule } from '@angular/material/form-field'; -import { - MatSlideToggle, - MatSlideToggleModule, -} from '@angular/material/slide-toggle'; -import { - booleanBaseTest, - booleanErrorTest, - booleanInputEventTest, - ErrorTestExpectation, -} from './common'; -import { ToggleControlRenderer, ToggleControlRendererTester } from '../src'; -import { JsonFormsAngularService } from '@jsonforms/angular'; - -describe('Material boolean field tester', () => { - const uischema = { - type: 'Control', - scope: '#/properties/foo', - options: { toggle: true }, - }; - - it('should succeed', () => { - expect( - ToggleControlRendererTester( - uischema, - { - type: 'object', - properties: { - foo: { - type: 'boolean', - }, - }, - }, - undefined - ) - ).toBe(3); - }); -}); -const imports = [MatSlideToggleModule, MatFormFieldModule]; -const providers = [JsonFormsAngularService]; -const componentUT: any = ToggleControlRenderer; -const errorTest: ErrorTestExpectation = { - errorInstance: MatError, - numberOfElements: 1, - indexOfElement: 0, -}; -const testConfig = { imports, providers, componentUT }; -describe( - 'Toggle control Base Tests', - booleanBaseTest(testConfig, MatSlideToggle) -); -describe( - 'Toggle control Input Event Tests', - booleanInputEventTest(testConfig, MatSlideToggle, 'label') -); -describe( - 'Toggle control Error Tests', - booleanErrorTest(testConfig, MatSlideToggle, errorTest) -); diff --git a/packages/angular-material/test/util.ts b/packages/angular-material/test/util.ts deleted file mode 100644 index c0bd9b7448..0000000000 --- a/packages/angular-material/test/util.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - The MIT License - - Copyright (c) 2022 EclipseSource - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { JsonSchema, TesterContext } from '@jsonforms/core'; - -export const createTesterContext = ( - rootSchema: JsonSchema, - config?: any -): TesterContext => ({ rootSchema, config }); diff --git a/packages/angular-material/test/vertical-layout.spec.ts b/packages/angular-material/test/vertical-layout.spec.ts deleted file mode 100644 index 66d1fdd35e..0000000000 --- a/packages/angular-material/test/vertical-layout.spec.ts +++ /dev/null @@ -1,115 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { ComponentFixture, waitForAsync } from '@angular/core/testing'; -import { UISchemaElement, VerticalLayout } from '@jsonforms/core'; -import { beforeEachLayoutTest, setupMockStore } from './common'; -import { - VerticalLayoutRenderer, - verticalLayoutTester, -} from '../src/library/layouts/vertical-layout.renderer'; -import { LayoutChildrenRenderPropsPipe } from '../src/library/layouts/layout.renderer'; - -describe('Vertical layout tester', () => { - it('should succeed', () => { - expect( - verticalLayoutTester({ type: 'VerticalLayout' }, undefined, undefined) - ).toBe(1); - }); -}); -describe('Vertical layout', () => { - let fixture: ComponentFixture; - let component: any; - - beforeEach(waitForAsync(() => { - fixture = beforeEachLayoutTest(VerticalLayoutRenderer, { - declarations: [LayoutChildrenRenderPropsPipe], - }); - component = fixture.componentInstance; - })); - - it('render with undefined elements', () => { - const uischema: UISchemaElement = { - type: 'VerticalLayout', - }; - setupMockStore(fixture, { - data: {}, - schema: {}, - uischema, - }); - fixture.componentInstance.ngOnInit(); - fixture.detectChanges(); - expect(fixture.nativeElement.children[0].children.length).toBe(0); - // the component is wrapped in a div - expect(fixture.nativeElement.children[0].style.display).not.toBe('none'); - }); - - it('render with null elements', () => { - const uischema: VerticalLayout = { - type: 'VerticalLayout', - elements: null, - }; - - setupMockStore(fixture, { - data: {}, - schema: {}, - uischema, - }); - fixture.componentInstance.ngOnInit(); - fixture.detectChanges(); - expect(fixture.nativeElement.children[0].children.length).toBe(0); - }); - - it('render with children', () => { - const uischema: VerticalLayout = { - type: 'VerticalLayout', - elements: [{ type: 'Control' }, { type: 'Control' }], - }; - setupMockStore(fixture, { - data: {}, - schema: {}, - uischema, - }); - fixture.componentInstance.ngOnInit(); - fixture.detectChanges(); - expect(fixture.nativeElement.children[0].children.length).toBe(2); - expect(fixture.nativeElement.children[0].hidden).toBe(false); - }); - - // TODO: broken due to https://github.com/angular/flex-layout/issues/848 - xit('can be hidden', () => { - const uischema: VerticalLayout = { - type: 'VerticalLayout', - elements: [{ type: 'Control' }, { type: 'Control' }], - }; - component.visible = false; - setupMockStore(fixture, { - data: {}, - schema: {}, - uischema, - }); - component.ngOnInit(); - expect(fixture.nativeElement.children[0].style.display).toBe('none'); - }); -}); diff --git a/packages/angular-material/tsconfig.example.json b/packages/angular-material/tsconfig.example.json deleted file mode 100644 index becc65b27d..0000000000 --- a/packages/angular-material/tsconfig.example.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "extends": "./tsconfig", - "compilerOptions": { - "outDir": "./example/dist", - "baseUrl": "./", - "paths": { - "@jsonforms/angular": ["../angular/src"], - "@jsonforms/core": ["../core/src"], - "@jsonforms/examples": ["../examples/src"], - }, - }, - "files": ["./example/main.ts"], - "angularCompilerOptions": { - "compilationMode": "full", - "strictMetadataEmit": true, - "generateCodeForLibraries": false, - "skipTemplateCodegen": true, - } -} diff --git a/packages/angular-material/tsconfig.json b/packages/angular-material/tsconfig.json deleted file mode 100644 index 64692753aa..0000000000 --- a/packages/angular-material/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "../../tsconfig.base", - "compilerOptions": { - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "sourceMap": true, - }, - "exclude": ["node_modules"], - "files": ["src/index.ts"], - "angularCompilerOptions": { - "compilationMode": "partial", - "strictMetadataEmit": true, - "generateCodeForLibraries": false, - "skipTemplateCodegen": true - } -} diff --git a/packages/angular-material/tsconfig.spec.json b/packages/angular-material/tsconfig.spec.json deleted file mode 100644 index 516ba50e6b..0000000000 --- a/packages/angular-material/tsconfig.spec.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "extends": "../../tsconfig.base", - "compilerOptions": { - "outDir": "../../out-tsc/spec", - "inlineSourceMap": true, - "sourceMap": true, - "types": [ - "jasmine" - ] - }, - "include": [ - "test/test.ts", - "**/*.spec.ts", - "**/*.d.ts" - ], - "angularCompilerOptions": { - "compilationMode": "partial", - "strictMetadataEmit": true, - "generateCodeForLibraries": false, - "skipTemplateCodegen": true - } -} diff --git a/packages/angular/.eslintrc.js b/packages/angular/.eslintrc.js deleted file mode 100644 index 80191b13e9..0000000000 --- a/packages/angular/.eslintrc.js +++ /dev/null @@ -1,44 +0,0 @@ -/* eslint-env node */ -/** @type {import('eslint').Linter.Config} */ -module.exports = { - root: true, - parser: '@typescript-eslint/parser', - parserOptions: { - /* Reset project because @angular-eslint/recommended sets this to an incompatible value */ - project: null, - }, - // There is no file include in ESLint. Thus, ignore all and include files via negative ignore (!) - ignorePatterns: ['/*', '!/src', '!/test'], - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:import/recommended', - 'plugin:import/typescript', - 'plugin:@angular-eslint/recommended', - 'plugin:@angular-eslint/template/process-inline-templates', - 'plugin:prettier/recommended', - ], - rules: { - '@angular-eslint/component-class-suffix': 'off', - '@angular-eslint/directive-class-suffix': 'off', - '@angular-eslint/no-conflicting-lifecycle': 'warn', - '@typescript-eslint/no-explicit-any': 'off', - // Base rule must be disabled to avoid incorrect errors - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': [ - 'warn', // or "error" - { - argsIgnorePattern: '^_', - varsIgnorePattern: '^_', - caughtErrorsIgnorePattern: '^_', - }, - ], - 'import/no-unresolved': [ - 'error', - { - // Ignore ava import because it is incorrectly reported as unresolved despite working as expected. - ignore: ['^ava$'], - }, - ], - }, -}; diff --git a/packages/angular/.prettierrc.js b/packages/angular/.prettierrc.js deleted file mode 100644 index 2c26853c4a..0000000000 --- a/packages/angular/.prettierrc.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - $schema: 'http://json.schemastore.org/prettierrc', - singleQuote: true, - jsxSingleQuote: true, - endOfLine: 'auto', -}; diff --git a/packages/angular/LICENSE b/packages/angular/LICENSE deleted file mode 100644 index 064ca1d9d2..0000000000 --- a/packages/angular/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License - -Copyright (c) 2019 EclipseSource Munich -https://github.com/eclipsesource/jsonforms - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/packages/angular/README.md b/packages/angular/README.md deleted file mode 100644 index c956524946..0000000000 --- a/packages/angular/README.md +++ /dev/null @@ -1,152 +0,0 @@ -# JSON Forms - More Forms. Less Code - -_Complex forms in the blink of an eye_ - -JSON Forms eliminates the tedious task of writing fully-featured forms by hand by leveraging the capabilities of JSON, JSON Schema and Javascript. - -## Angular Package - -This is the JSON Forms Angular package which provides the necessary bindings for Angular. It uses [JSON Forms Core](https://github.com/eclipsesource/jsonforms/blob/master/packages/core). - -You can combine the Angular package with any Angular-based renderer set you want, for example the [Material Renderers](https://github.com/eclipsesource/jsonforms/blob/master/packages/angular-material). - -See the official [documentation](https://jsonforms.io/docs/integrations/angular) and the JSON Forms Angular [seed repository](https://github.com/eclipsesource/jsonforms-angular-seed) for examples on how to integrate JSON Forms with your application. - -Check for all published JSON Forms packages. - -### Usage - -Use the `JsonForms` component to render a form for your data. - -Mandatory props: - -- `data: any` - the data to show -- `renderers: JsonFormsRendererRegistryEntry[]` - the Angular renderer set to use - -Optional props: - -- `schema: JsonSchema` - the data schema for the given data. Will be generated when not given. -- `uischema: UISchemaElement` - the UI schema for the given data schema. Will be generated when not given. -- `config: any` - form-wide options. May contain default ui schema options. -- `readonly: boolean` - whether all controls shall be readonly. -- `uischemas: JsonFormsUiSchemaEntry[]` - registry for dynamic ui schema dispatching -- `validationMode: 'ValidateAndShow' | 'ValidateAndHide' | 'NoValidation'` - the validation mode for the form -- `ajv: AJV` - custom Ajv instance for the form -- `middleware: Middleware` - can be used to hook into the form-wide data management. -- `i18n: JsonFormsI18nState` - can be used to internationalize the rendered form. -- `dataChange` - event emitter which is called on each data change, containing the updated data and the validation result. -- `errors` - event emitter which is called with all validations errors. - -Example component file `app.component.ts`: - -```ts -import { Component } from '@angular/core'; -import { angularMaterialRenderers } from '@jsonforms/angular-material'; - -@Component({ - selector: 'app-root', - template: ``, -}) -export class AppComponent { - renderers = angularMaterialRenderers; - uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - label: false, - scope: '#/properties/done', - }, - { - type: 'Control', - scope: '#/properties/name', - }, - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/due_date', - }, - { - type: 'Control', - scope: '#/properties/recurrence', - }, - ], - }, - ], - }; - schema = { - type: 'object', - properties: { - name: { - type: 'string', - minLength: 1, - }, - done: { - type: 'boolean', - }, - due_date: { - type: 'string', - format: 'date', - }, - recurrence: { - type: 'string', - enum: ['Never', 'Daily', 'Weekly', 'Monthly'], - }, - }, - required: ['name', 'due_date'], - }; - data = {}; -} -``` - -Example module file: - -```ts -import { NgModule } from '@angular/core'; -import { BrowserModule } from '@angular/platform-browser'; -import { BrowserAnimationsModule } from '@angular/platform-browser/animations'; -import { JsonFormsModule } from '@jsonforms/angular'; -import { JsonFormsAngularMaterialModule } from '@jsonforms/angular-material'; -import { AppComponent } from './app.component'; - -@NgModule({ - declarations: [AppComponent], - imports: [ - BrowserModule, - BrowserAnimationsModule, - JsonFormsModule, - JsonFormsAngularMaterialModule, - ], - schemas: [], - bootstrap: [AppComponent], -}) -export class AppModule {} -``` - -## License - -The JSON Forms project is licensed under the MIT License. See the [LICENSE file](https://github.com/eclipsesource/jsonforms/blob/master/LICENSE) for more information. - -## Roadmap - -Our current roadmap is available [here](https://github.com/eclipsesource/jsonforms/blob/master/ROADMAP.md). - -## Feedback, Help and Support - -JSON Forms is developed by [EclipseSource](https://eclipsesource.com). - -If you encounter any problems feel free to [open an issue](https://github.com/eclipsesource/jsonforms/issues/new/choose) on the repo. -For questions and discussions please use the [JSON Forms board](https://jsonforms.discourse.group). -You can also reach us via [email](mailto:jsonforms@eclipsesource.com?subject=JSON%20Forms). -In addition, EclipseSource also offers [professional support](https://jsonforms.io/support) for JSON Forms. - -## Migration - -See our [migration guide](https://github.com/eclipsesource/jsonforms/blob/master/MIGRATION.md) when updating JSON Forms. diff --git a/packages/angular/build-package.js b/packages/angular/build-package.js deleted file mode 100644 index aef214d1a9..0000000000 --- a/packages/angular/build-package.js +++ /dev/null @@ -1,11 +0,0 @@ -const ngPackage = require('ng-packagr'); - -ngPackage - .ngPackagr() - .forProject('ng-package.json') - .withTsConfig('tsconfig.json') - .build() - .catch(error => { - console.error(error); - process.exit(1); - }); \ No newline at end of file diff --git a/packages/angular/ng-package.json b/packages/angular/ng-package.json deleted file mode 100644 index 84439008d2..0000000000 --- a/packages/angular/ng-package.json +++ /dev/null @@ -1,5 +0,0 @@ -{ - "$schema": "./node_modules/ng-packagr/ng-package.schema.json", - "dest": "./lib", - "allowedNonPeerDependencies": ["lodash"] -} \ No newline at end of file diff --git a/packages/angular/package.json b/packages/angular/package.json deleted file mode 100644 index 990db785c0..0000000000 --- a/packages/angular/package.json +++ /dev/null @@ -1,103 +0,0 @@ -{ - "name": "@jsonforms/angular", - "version": "3.6.0", - "description": "Angular module of JSON Forms", - "repository": "https://github.com/eclipsesource/jsonforms", - "bugs": "https://github.com/eclipsesource/jsonforms/issues", - "homepage": "http://jsonforms.io/", - "license": "MIT", - "publishConfig": { - "access": "public" - }, - "directories": { - "src": "src", - "test": "test" - }, - "files": [ - "lib", - "src" - ], - "keywords": [ - "angular", - "form", - "forms", - "json", - "jsonforms", - "frontend", - "generator", - "input", - "renderengine", - "jsonschema", - "schema", - "uischema", - "layout", - "customization" - ], - "module": "./lib/fesm2022/jsonforms-angular.mjs", - "typings": "./lib/index.d.ts", - "scripts": { - "build": "node ./build-package.js", - "clean": "rimraf lib coverage dist .nyc_output 2> /dev/null", - "lint": "eslint .", - "lint:fix": "eslint --fix .", - "report": "nyc report --reporter=html", - "test": "ava", - "test-cov": "nyc ava", - "doc": "typedoc --name 'JSON Forms Angular Core' --out docs src" - }, - "nyc": { - "reporter": [ - "lcov", - "text-summary" - ] - }, - "ava": { - "files": [ - "test/**/*" - ], - "extensions": [ - "ts" - ], - "require": [ - "./test-config/ts-node.config.js", - "source-map-support/register.js" - ] - }, - "dependencies": { - "lodash": "^4.17.21" - }, - "peerDependencies": { - "@angular/core": "^18.0.0 || ^19.0.0 || ^20.0.0", - "@angular/forms": "^18.0.0 || ^19.0.0 || ^20.0.0", - "@jsonforms/core": "3.6.0", - "rxjs": "^6.6.0 || ^7.4.0" - }, - "devDependencies": { - "@angular-eslint/eslint-plugin": "^18.0.0", - "@angular-eslint/eslint-plugin-template": "^18.0.0", - "@angular-eslint/schematics": "^18.0.0", - "@angular-eslint/template-parser": "^18.0.0", - "@angular/compiler": "^18.0.0", - "@angular/compiler-cli": "^18.0.0", - "@angular/core": "^18.0.0", - "@angular/forms": "^18.0.0", - "@jsonforms/core": "workspace:*", - "@typescript-eslint/eslint-plugin": "^5.54.1", - "@typescript-eslint/parser": "^5.54.1", - "ava": "^6.1.2", - "copy-webpack-plugin": "^5.0.5", - "eslint": "^8.56.0", - "eslint-config-prettier": "^8.7.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-prettier": "^4.2.1", - "ng-packagr": "^18.0.0", - "nyc": "^15.1.0", - "prettier": "^2.8.4", - "rimraf": "^3.0.2", - "rxjs": "^6.6.0", - "source-map-support": "^0.5.21", - "tslib": "^2.3.0", - "typedoc": "~0.25.3", - "typescript": "~5.5.0" - } -} diff --git a/packages/angular/src/index.ts b/packages/angular/src/index.ts deleted file mode 100644 index 4aaf8f92ed..0000000000 --- a/packages/angular/src/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './public_api'; diff --git a/packages/angular/src/library/abstract-control.ts b/packages/angular/src/library/abstract-control.ts deleted file mode 100644 index 0da994a05a..0000000000 --- a/packages/angular/src/library/abstract-control.ts +++ /dev/null @@ -1,181 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - Actions, - computeLabel, - ControlElement, - JsonFormsState, - JsonSchema, - OwnPropsOfControl, - removeId, - StatePropsOfControl, -} from '@jsonforms/core'; -import { Component, Input, OnDestroy, OnInit } from '@angular/core'; -import { - AbstractControl, - FormControl, - ValidationErrors, - ValidatorFn, -} from '@angular/forms'; - -import { JsonFormsBaseRenderer } from './base.renderer'; -import { JsonFormsAngularService } from './jsonforms.service'; -import merge from 'lodash/merge'; -@Component({ - template: '', - standalone: false, -}) -export abstract class JsonFormsAbstractControl< - Props extends StatePropsOfControl - > - extends JsonFormsBaseRenderer - implements OnInit, OnDestroy -{ - @Input() id: string; - @Input() disabled: boolean; - @Input() visible: boolean; - - form: FormControl; - data: any; - label: string; - description: string; - error: string | null; - scopedSchema: JsonSchema; - rootSchema: JsonSchema; - enabled: boolean; - hidden: boolean; - propsPath: string; - - constructor(protected jsonFormsService: JsonFormsAngularService) { - super(); - this.form = new FormControl( - { - value: '', - disabled: true, - }, - { - updateOn: 'change', - validators: this.validator.bind(this), - } - ); - } - - getEventValue = (event: any) => event.value; - - onChange(ev: any) { - this.jsonFormsService.updateCore( - Actions.update(this.propsPath, () => this.getEventValue(ev)) - ); - this.triggerValidation(); - } - - shouldShowUnfocusedDescription(): boolean { - const config = this.jsonFormsService.getConfig(); - const appliedUiSchemaOptions = merge({}, config, this.uischema.options); - return !!appliedUiSchemaOptions.showUnfocusedDescription; - } - - ngOnInit() { - this.addSubscription( - this.jsonFormsService.$state.subscribe({ - next: (state: JsonFormsState) => { - const props = this.mapToProps(state); - const { - data, - enabled, - errors, - label, - required, - schema, - rootSchema, - visible, - path, - config, - } = props; - this.label = computeLabel( - label, - required, - config ? config.hideRequiredAsterisk : false - ); - this.data = data; - this.error = errors; - this.enabled = enabled; - this.isEnabled() ? this.form.enable() : this.form.disable(); - this.hidden = !visible; - this.scopedSchema = schema; - this.rootSchema = rootSchema; - this.description = props.description ?? ''; - this.id = props.id; - this.form.setValue(data); - this.propsPath = path; - this.mapAdditionalProps(props); - }, - }) - ); - this.triggerValidation(); - } - - validator: ValidatorFn = (_c: AbstractControl): ValidationErrors | null => { - return this.error ? { error: this.error } : null; - }; - - mapAdditionalProps(_props: Props) { - // do nothing by default - } - - ngOnDestroy() { - super.ngOnDestroy(); - removeId(this.id); - } - - isEnabled(): boolean { - return this.enabled; - } - - protected getOwnProps(): OwnPropsOfControl { - const props: OwnPropsOfControl = { - uischema: this.uischema, - schema: this.schema, - path: this.path, - id: this.id, - }; - if (this.disabled !== undefined) { - props.enabled = !this.disabled; - } - if (this.visible !== undefined) { - props.visible = this.visible; - } - return props; - } - - protected abstract mapToProps(state: JsonFormsState): Props; - - protected triggerValidation() { - // these cause the correct update of the error underline, seems to be - // related to ionic-team/ionic#11640 - this.form.markAsTouched(); - this.form.updateValueAndValidity(); - } -} diff --git a/packages/angular/src/library/array-control.ts b/packages/angular/src/library/array-control.ts deleted file mode 100644 index 5e0bfbc5e5..0000000000 --- a/packages/angular/src/library/array-control.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - arrayDefaultTranslations, - ArrayTranslations, - defaultJsonFormsI18nState, - getArrayTranslations, - JsonFormsState, - mapStateToArrayControlProps, - StatePropsOfArrayControl, -} from '@jsonforms/core'; -import type { OnDestroy, OnInit } from '@angular/core'; -import { JsonFormsAbstractControl } from './abstract-control'; - -export class JsonFormsArrayControl - extends JsonFormsAbstractControl - implements OnInit, OnDestroy -{ - protected mapToProps( - state: JsonFormsState - ): StatePropsOfArrayControl & { translations: ArrayTranslations } { - const props = mapStateToArrayControlProps(state, this.getOwnProps()); - const t = - state.jsonforms.i18n?.translate ?? defaultJsonFormsI18nState.translate; - const translations = getArrayTranslations( - t, - arrayDefaultTranslations, - props.i18nKeyPrefix, - props.label - ); - return { ...props, translations }; - } -} diff --git a/packages/angular/src/library/base.renderer.ts b/packages/angular/src/library/base.renderer.ts deleted file mode 100644 index 5b283ed03a..0000000000 --- a/packages/angular/src/library/base.renderer.ts +++ /dev/null @@ -1,61 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { Directive, Input, OnDestroy } from '@angular/core'; -import { - JsonSchema, - OwnPropsOfRenderer, - UISchemaElement, -} from '@jsonforms/core'; -import { Subscription } from 'rxjs'; - -@Directive() -export class JsonFormsBaseRenderer - implements OnDestroy -{ - @Input() uischema: T; - @Input() schema: JsonSchema; - @Input() path: string; - protected subscriptions: Subscription = new Subscription(); - - protected addSubscription(subscription: Subscription | Subscription[]) { - if (Array.isArray(subscription)) { - subscription.forEach((sub) => this.subscriptions.add(sub)); - } else { - this.subscriptions.add(subscription); - } - } - - protected getOwnProps(): OwnPropsOfRenderer { - return { - uischema: this.uischema, - schema: this.schema, - path: this.path, - }; - } - - ngOnDestroy(): void { - this.subscriptions.unsubscribe(); - } -} diff --git a/packages/angular/src/library/control.ts b/packages/angular/src/library/control.ts deleted file mode 100644 index 80aa166648..0000000000 --- a/packages/angular/src/library/control.ts +++ /dev/null @@ -1,53 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - JsonFormsState, - mapStateToControlProps, - mapStateToControlWithDetailProps, - StatePropsOfControl, - StatePropsOfControlWithDetail, -} from '@jsonforms/core'; -import type { OnDestroy, OnInit } from '@angular/core'; -import { JsonFormsAbstractControl } from './abstract-control'; - -export class JsonFormsControl - extends JsonFormsAbstractControl - implements OnInit, OnDestroy -{ - protected mapToProps(state: JsonFormsState): StatePropsOfControl { - const props = mapStateToControlProps(state, this.getOwnProps()); - return { ...props }; - } -} - -export class JsonFormsControlWithDetail - extends JsonFormsAbstractControl - implements OnInit, OnDestroy -{ - protected mapToProps(state: JsonFormsState): StatePropsOfControlWithDetail { - const props = mapStateToControlWithDetailProps(state, this.getOwnProps()); - return { ...props }; - } -} diff --git a/packages/angular/src/library/index.ts b/packages/angular/src/library/index.ts deleted file mode 100644 index c68de6b6b5..0000000000 --- a/packages/angular/src/library/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2020 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -export * from './base.renderer'; -export * from './control'; -export * from './array-control'; -export * from './jsonforms.component'; -export * from './jsonforms.module'; -export * from './unknown.component'; -export * from './jsonforms.service'; -export * from './jsonforms-root.component'; -export * from './abstract-control'; diff --git a/packages/angular/src/library/jsonforms-root.component.ts b/packages/angular/src/library/jsonforms-root.component.ts deleted file mode 100644 index e923da9365..0000000000 --- a/packages/angular/src/library/jsonforms-root.component.ts +++ /dev/null @@ -1,211 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2020 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - Component, - DoCheck, - EventEmitter, - Input, - OnChanges, - OnDestroy, - OnInit, - Output, - SimpleChanges, -} from '@angular/core'; -import { - Actions, - JsonFormsI18nState, - JsonFormsRendererRegistryEntry, - JsonSchema, - Middleware, - UISchemaElement, - UISchemaTester, - ValidationMode, - defaultMiddleware, -} from '@jsonforms/core'; -import type Ajv from 'ajv'; -import type { ErrorObject } from 'ajv'; -import { JsonFormsAngularService, USE_STATE_VALUE } from './jsonforms.service'; -import { Subscription } from 'rxjs'; - -// TODO Can this be rewritten to not use DoCheck and OnChanges? -/* eslint-disable @angular-eslint/no-conflicting-lifecycle */ -@Component({ - selector: 'jsonforms', - template: '', - providers: [JsonFormsAngularService], - standalone: false, -}) -export class JsonForms implements DoCheck, OnChanges, OnInit, OnDestroy { - @Input() uischema: UISchemaElement; - @Input() schema: JsonSchema; - @Input() data: any; - @Input() renderers: JsonFormsRendererRegistryEntry[]; - @Input() uischemas: { tester: UISchemaTester; uischema: UISchemaElement }[]; - @Output() dataChange = new EventEmitter(); - @Input() readonly: boolean; - @Input() validationMode: ValidationMode; - @Input() ajv: Ajv; - @Input() config: any; - @Input() i18n: JsonFormsI18nState; - @Input() additionalErrors: ErrorObject[]; - @Input() middleware: Middleware = defaultMiddleware; - @Output() errors = new EventEmitter(); - - private previousData: any; - private previousErrors: ErrorObject[]; - subscription: Subscription; - - private initialized = false; - oldI18N: JsonFormsI18nState; - - constructor(private jsonformsService: JsonFormsAngularService) {} - - ngOnInit(): void { - this.jsonformsService.init( - { - core: { - data: this.data, - uischema: this.uischema, - schema: this.schema, - ajv: this.ajv, - validationMode: this.validationMode, - additionalErrors: this.additionalErrors, - }, - uischemas: this.uischemas, - i18n: this.i18n, - renderers: this.renderers, - config: this.config, - readonly: this.readonly, - }, - this.middleware - ); - this.subscription = this.jsonformsService.$state.subscribe((state) => { - const data = state?.jsonforms?.core?.data; - const errors = state?.jsonforms?.core?.errors; - if (this.previousData !== data) { - this.previousData = data; - this.dataChange.emit(data); - } - if (this.previousErrors !== errors) { - this.previousErrors = errors; - this.errors.emit(errors); - } - }); - this.oldI18N = this.i18n; - this.initialized = true; - } - - ngDoCheck(): void { - // we can't use ngOnChanges as then nested i18n changes will not be detected - // the update will result in a no-op when the parameters did not change - if ( - this.oldI18N?.locale !== this.i18n?.locale || - this.oldI18N?.translate !== this.i18n?.translate || - this.oldI18N?.translateError !== this.i18n?.translateError - ) { - this.jsonformsService.updateI18n( - Actions.updateI18n( - this.oldI18N?.locale === this.i18n?.locale - ? this.jsonformsService.getState().jsonforms.i18n.locale - : this.i18n?.locale, - this.oldI18N?.translate === this.i18n?.translate - ? this.jsonformsService.getState().jsonforms.i18n.translate - : this.i18n?.translate, - this.oldI18N?.translateError === this.i18n?.translateError - ? this.jsonformsService.getState().jsonforms.i18n.translateError - : this.i18n?.translateError - ) - ); - this.oldI18N = this.i18n; - } - } - - ngOnChanges(changes: SimpleChanges): void { - if (!this.initialized) { - return; - } - const newData = changes.data; - const newSchema = changes.schema; - const newUiSchema = changes.uischema; - const newRenderers = changes.renderers; - const newUischemas = changes.uischemas; - const newI18n = changes.i18n; - const newReadonly = changes.readonly; - const newValidationMode = changes.validationMode; - const newAjv = changes.ajv; - const newConfig = changes.config; - const newAdditionalErrors = changes.additionalErrors; - - if ( - newData || - newSchema || - newUiSchema || - newValidationMode || - newAjv || - newAdditionalErrors - ) { - this.jsonformsService.updateCoreState( - newData ? newData.currentValue : USE_STATE_VALUE, - newSchema ? newSchema.currentValue : USE_STATE_VALUE, - newUiSchema ? newUiSchema.currentValue : USE_STATE_VALUE, - newAjv ? newAjv.currentValue : USE_STATE_VALUE, - newValidationMode ? newValidationMode.currentValue : USE_STATE_VALUE, - newAdditionalErrors ? newAdditionalErrors.currentValue : USE_STATE_VALUE - ); - } - - if (newRenderers && !newRenderers.isFirstChange()) { - this.jsonformsService.setRenderers(newRenderers.currentValue); - } - - if (newUischemas && !newUischemas.isFirstChange()) { - this.jsonformsService.setUiSchemas(newUischemas.currentValue); - } - - if (newI18n && !newI18n.isFirstChange()) { - this.jsonformsService.updateI18n( - Actions.updateI18n( - newI18n.currentValue?.locale, - newI18n.currentValue?.translate, - newI18n.currentValue?.translateError - ) - ); - } - - if (newReadonly && !newReadonly.isFirstChange()) { - this.jsonformsService.setReadonly(newReadonly.currentValue); - } - - if (newConfig && !newConfig.isFirstChange()) { - this.jsonformsService.updateConfig( - Actions.setConfig(newConfig.currentValue) - ); - } - } - - ngOnDestroy(): void { - this.subscription.unsubscribe(); - } -} diff --git a/packages/angular/src/library/jsonforms.component.ts b/packages/angular/src/library/jsonforms.component.ts deleted file mode 100644 index a8720ab079..0000000000 --- a/packages/angular/src/library/jsonforms.component.ts +++ /dev/null @@ -1,155 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import maxBy from 'lodash/maxBy'; -import { - ComponentFactoryResolver, - Directive, - Input, - OnInit, - Type, - ViewContainerRef, -} from '@angular/core'; -import { - createId, - isControl, - getConfig, - JsonFormsProps, - JsonFormsState, - JsonSchema, - mapStateToJsonFormsRendererProps, - OwnPropsOfRenderer, - StatePropsOfJsonFormsRenderer, - UISchemaElement, -} from '@jsonforms/core'; -import { UnknownRenderer } from './unknown.component'; -import { JsonFormsBaseRenderer } from './base.renderer'; -import { JsonFormsControl } from './control'; -import { JsonFormsAngularService } from './jsonforms.service'; - -import isEqual from 'lodash/isEqual'; -import get from 'lodash/get'; - -const areEqual = ( - prevProps: StatePropsOfJsonFormsRenderer, - nextProps: StatePropsOfJsonFormsRenderer -) => { - return ( - get(prevProps, 'renderers.length') === get(nextProps, 'renderers.length') && - get(prevProps, 'cells.length') === get(nextProps, 'cells.length') && - get(prevProps, 'uischemas.length') === get(nextProps, 'uischemas.length') && - get(prevProps, 'schema') === get(nextProps, 'schema') && - isEqual(get(prevProps, 'uischema'), get(nextProps, 'uischema')) && - get(prevProps, 'path') === get(nextProps, 'path') - ); -}; - -@Directive({ - selector: 'jsonforms-outlet', - standalone: false, -}) -export class JsonFormsOutlet - extends JsonFormsBaseRenderer - implements OnInit -{ - private previousProps: StatePropsOfJsonFormsRenderer; - - constructor( - private viewContainerRef: ViewContainerRef, - private componentFactoryResolver: ComponentFactoryResolver, - private jsonformsService: JsonFormsAngularService - ) { - super(); - } - - @Input() - set renderProps(renderProps: OwnPropsOfRenderer) { - this.path = renderProps.path; - this.schema = renderProps.schema; - this.uischema = renderProps.uischema; - this.update(this.jsonformsService.getState()); - } - - ngOnInit(): void { - this.addSubscription( - this.jsonformsService.$state.subscribe({ - next: (state: JsonFormsState) => this.update(state), - }) - ); - } - - update(state: JsonFormsState) { - const props = mapStateToJsonFormsRendererProps(state, { - schema: this.schema, - uischema: this.uischema, - path: this.path, - }); - if (areEqual(this.previousProps, props)) { - return; - } else { - this.previousProps = props; - } - const { renderers } = props as JsonFormsProps; - const schema: JsonSchema = this.schema || props.schema; - const uischema = this.uischema || props.uischema; - const testerContext = { - rootSchema: props.rootSchema, - config: getConfig(state), - }; - - const renderer = maxBy(renderers, (r) => - r.tester(uischema, schema, testerContext) - ); - let bestComponent: Type = UnknownRenderer; - if ( - renderer !== undefined && - renderer.tester(uischema, schema, testerContext) !== -1 - ) { - bestComponent = renderer.renderer; - } - - const componentFactory = - this.componentFactoryResolver.resolveComponentFactory(bestComponent); - this.viewContainerRef.clear(); - const currentComponentRef = - this.viewContainerRef.createComponent(componentFactory); - - if (currentComponentRef.instance instanceof JsonFormsBaseRenderer) { - const instance = - currentComponentRef.instance as JsonFormsBaseRenderer; - instance.uischema = uischema; - instance.schema = schema; - instance.path = this.path; - if (instance instanceof JsonFormsControl) { - const controlInstance = instance as JsonFormsControl; - if (controlInstance.id === undefined) { - const id = isControl(props.uischema) - ? createId(props.uischema.scope) - : undefined; - (instance as JsonFormsControl).id = id; - } - } - } - } -} diff --git a/packages/angular/src/library/jsonforms.module.ts b/packages/angular/src/library/jsonforms.module.ts deleted file mode 100644 index 037af6bc2c..0000000000 --- a/packages/angular/src/library/jsonforms.module.ts +++ /dev/null @@ -1,34 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2020 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { NgModule } from '@angular/core'; - -import { JsonForms } from './jsonforms-root.component'; -import { JsonFormsOutlet } from './jsonforms.component'; -import { UnknownRenderer } from './unknown.component'; -@NgModule({ - declarations: [JsonFormsOutlet, UnknownRenderer, JsonForms], - exports: [JsonFormsOutlet, JsonForms], -}) -export class JsonFormsModule {} diff --git a/packages/angular/src/library/jsonforms.service.ts b/packages/angular/src/library/jsonforms.service.ts deleted file mode 100644 index 294772731d..0000000000 --- a/packages/angular/src/library/jsonforms.service.ts +++ /dev/null @@ -1,328 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2020 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - Actions, - configReducer, - CoreActions, - coreReducer, - generateDefaultUISchema, - generateJsonSchema, - i18nReducer, - JsonFormsRendererRegistryEntry, - JsonFormsState, - JsonFormsSubStates, - JsonSchema, - I18nActions, - RankedTester, - setConfig, - SetConfigAction, - UISchemaActions, - UISchemaElement, - uischemaRegistryReducer, - UISchemaTester, - ValidationMode, - updateI18n, - Middleware, - defaultMiddleware, -} from '@jsonforms/core'; -import { BehaviorSubject, Observable } from 'rxjs'; -import type { JsonFormsBaseRenderer } from './base.renderer'; - -import cloneDeep from 'lodash/cloneDeep'; -import type Ajv from 'ajv'; -import type { ErrorObject } from 'ajv'; - -export const USE_STATE_VALUE = Symbol('Marker to use state value'); -export class JsonFormsAngularService { - private _state: JsonFormsSubStates; - private state: BehaviorSubject; - private middleware: Middleware; - - init( - initialState: JsonFormsSubStates = { - core: { - data: undefined, - schema: undefined, - uischema: undefined, - validationMode: 'ValidateAndShow', - additionalErrors: undefined, - }, - }, - middleware: Middleware = defaultMiddleware - ) { - this.middleware = middleware; - this._state = initialState; - this._state.config = configReducer( - undefined, - setConfig(this._state.config) - ); - this._state.i18n = i18nReducer( - this._state.i18n, - updateI18n( - this._state.i18n?.locale, - this._state.i18n?.translate, - this._state.i18n?.translateError - ) - ); - this.state = new BehaviorSubject({ jsonforms: this._state }); - const data = initialState.core.data; - const schema = initialState.core.schema ?? generateJsonSchema(data); - const uischema = - initialState.core.uischema ?? generateDefaultUISchema(schema); - this.updateCore(Actions.init(data, schema, uischema)); - } - - get $state(): Observable { - if (!this.state) { - throw new Error('Please call init first!'); - } - return this.state.asObservable(); - } - - /** - * @deprecated use {@link JsonFormsAngularService.addRenderer} - */ - registerRenderer( - renderer: JsonFormsBaseRenderer, - tester: RankedTester - ): void { - this.addRenderer(renderer, tester); - } - addRenderer( - renderer: JsonFormsBaseRenderer, - tester: RankedTester - ): void { - this._state.renderers.push({ renderer, tester }); - this.updateSubject(); - } - - /** - * @deprecated use {@link JsonFormsAngularService.setRenderer} - */ - registerRenderers(renderers: JsonFormsRendererRegistryEntry[]): void { - this.setRenderers(renderers); - } - setRenderers(renderers: JsonFormsRendererRegistryEntry[]): void { - this._state.renderers = renderers; - this.updateSubject(); - } - - /** - * @deprecated use {@link JsonFormsAngularService.removeRenderer} - */ - unregisterRenderer(tester: RankedTester): void { - this.removeRenderer(tester); - } - removeRenderer(tester: RankedTester): void { - const findIndex = this._state.renderers.findIndex( - (v) => v.tester === tester - ); - if (findIndex === -1) { - return; - } - const renderers = this._state.renderers.filter((v) => v.tester !== tester); - this._state.renderers = renderers; - this.updateSubject(); - } - - updateValidationMode(validationMode: ValidationMode): void { - const coreState = this.middleware( - this._state.core, - Actions.setValidationMode(validationMode), - coreReducer - ); - this._state.core = coreState; - this.updateSubject(); - } - - updateI18n(i18nAction: T): T { - const i18nState = i18nReducer(this._state.i18n, i18nAction); - if (i18nState !== this._state.i18n) { - this._state.i18n = i18nState; - this.updateSubject(); - } - return i18nAction; - } - - updateCore(coreAction: T): T { - const coreState = this.middleware( - this._state.core, - coreAction, - coreReducer - ); - if (coreState !== this._state.core) { - this._state.core = coreState; - this.updateSubject(); - } - return coreAction; - } - - /** - * @deprecated use {@link JsonFormsAngularService.setUiSchemas} - */ - updateUiSchema(uischemaAction: T): T { - const uischemaState = uischemaRegistryReducer( - this._state.uischemas, - uischemaAction - ); - this._state.uischemas = uischemaState; - this.updateSubject(); - return uischemaAction; - } - - setUiSchemas( - uischemas: { tester: UISchemaTester; uischema: UISchemaElement }[] - ): void { - this._state.uischemas = uischemas; - this.updateSubject(); - } - - updateConfig(setConfigAction: T): T { - const configState = configReducer(this._state.config, setConfigAction); - this._state.config = configState; - this.updateSubject(); - return setConfigAction; - } - - setUiSchema(uischema: UISchemaElement | undefined): void { - const newUiSchema = - uischema ?? generateDefaultUISchema(this._state.core.schema); - const coreState = this.middleware( - this._state.core, - Actions.updateCore( - this._state.core.data, - this._state.core.schema, - newUiSchema - ), - coreReducer - ); - if (coreState !== this._state.core) { - this._state.core = coreState; - this.updateSubject(); - } - } - - setSchema(schema: JsonSchema | undefined): void { - const coreState = this.middleware( - this._state.core, - Actions.updateCore( - this._state.core.data, - schema ?? generateJsonSchema(this._state.core.data), - this._state.core.uischema - ), - coreReducer - ); - if (coreState !== this._state.core) { - this._state.core = coreState; - this.updateSubject(); - } - } - - setData(data: any): void { - const coreState = this.middleware( - this._state.core, - Actions.updateCore( - data, - this._state.core.schema, - this._state.core.uischema - ), - coreReducer - ); - if (coreState !== this._state.core) { - this._state.core = coreState; - this.updateSubject(); - } - } - - getLocale(): string | undefined { - return this._state.i18n?.locale; - } - - setLocale(locale: string): void { - this._state.i18n.locale = locale; - this.updateSubject(); - } - - setReadonly(readonly: boolean): void { - this._state.readonly = readonly; - this.updateSubject(); - } - - setMiddleware(middleware: Middleware): void { - this._state.middleware = middleware; - this.updateSubject(); - } - - getState(): JsonFormsState { - return cloneDeep({ jsonforms: this._state }); - } - - getConfig(): any { - return cloneDeep(this._state.config); - } - - refresh(): void { - this.updateSubject(); - } - - updateCoreState( - data: any | typeof USE_STATE_VALUE, - schema: JsonSchema | typeof USE_STATE_VALUE, - uischema: UISchemaElement | typeof USE_STATE_VALUE, - ajv: Ajv | typeof USE_STATE_VALUE, - validationMode: ValidationMode | typeof USE_STATE_VALUE, - additionalErrors: ErrorObject[] | typeof USE_STATE_VALUE - ): void { - const newData = data === USE_STATE_VALUE ? this._state.core.data : data; - const newSchema = - schema === USE_STATE_VALUE - ? this._state.core.schema - : schema ?? generateJsonSchema(newData); - const newUischema = - uischema === USE_STATE_VALUE - ? this._state.core.uischema - : uischema ?? generateDefaultUISchema(newSchema); - const newAjv = ajv === USE_STATE_VALUE ? this._state.core.ajv : ajv; - const newValidationMode = - validationMode === USE_STATE_VALUE - ? this._state.core.validationMode - : validationMode; - const newAdditionalErrors = - additionalErrors === USE_STATE_VALUE - ? this._state.core.additionalErrors - : additionalErrors; - this.updateCore( - Actions.updateCore(newData, newSchema, newUischema, { - ajv: newAjv, - validationMode: newValidationMode, - additionalErrors: newAdditionalErrors, - }) - ); - } - - private updateSubject(): void { - this.state.next({ jsonforms: this._state }); - } -} diff --git a/packages/angular/src/library/unknown.component.ts b/packages/angular/src/library/unknown.component.ts deleted file mode 100644 index cd16d33c52..0000000000 --- a/packages/angular/src/library/unknown.component.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { Component } from '@angular/core'; -@Component({ - selector: 'unknown.renderer', - template: 'No applicable renderer found!', - standalone: false, -}) -export class UnknownRenderer {} diff --git a/packages/angular/src/public_api.ts b/packages/angular/src/public_api.ts deleted file mode 100644 index 4b02e6973f..0000000000 --- a/packages/angular/src/public_api.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './library'; diff --git a/packages/angular/test-config/ts-node.config.js b/packages/angular/test-config/ts-node.config.js deleted file mode 100644 index d2d154370e..0000000000 --- a/packages/angular/test-config/ts-node.config.js +++ /dev/null @@ -1,6 +0,0 @@ -// Register ts-node and override ts options for ava -require('ts-node').register({ - compilerOptions: { - module: 'commonjs', - }, -}); diff --git a/packages/angular/test/dummy.test.ts b/packages/angular/test/dummy.test.ts deleted file mode 100644 index 9936e607af..0000000000 --- a/packages/angular/test/dummy.test.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import test from 'ava'; -test.todo('dummy'); diff --git a/packages/angular/test/tsconfig.test.json b/packages/angular/test/tsconfig.test.json deleted file mode 100644 index 8b6cff6dc8..0000000000 --- a/packages/angular/test/tsconfig.test.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../../../tsconfig.base.json", - "compilerOptions": { - "outDir": "../dist/test", - "target": "es6", - "inlineSourceMap": true - }, - "include": ["**/*.ts", "**/*.tsx"], - "exclude": ["node_modules"], - "files": ["../src/index.ts"] -} diff --git a/packages/angular/tsconfig.cjs.json b/packages/angular/tsconfig.cjs.json deleted file mode 100644 index b0c215c3d9..0000000000 --- a/packages/angular/tsconfig.cjs.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig", - "compilerOptions": { - "outDir": "./lib/cjs", - "sourceMap": true, - "target": "es5", - "module": "commonjs" - } -} diff --git a/packages/angular/tsconfig.json b/packages/angular/tsconfig.json deleted file mode 100644 index 64692753aa..0000000000 --- a/packages/angular/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "extends": "../../tsconfig.base", - "compilerOptions": { - "declaration": true, - "declarationMap": true, - "inlineSources": true, - "sourceMap": true, - }, - "exclude": ["node_modules"], - "files": ["src/index.ts"], - "angularCompilerOptions": { - "compilationMode": "partial", - "strictMetadataEmit": true, - "generateCodeForLibraries": false, - "skipTemplateCodegen": true - } -} diff --git a/packages/core/package.json b/packages/core/package.json index d28519d7bb..d08d9e7901 100644 --- a/packages/core/package.json +++ b/packages/core/package.json @@ -1,6 +1,6 @@ { - "name": "@jsonforms/core", - "version": "3.6.0", + "name": "@flextract/json-forms-core", + "version": "4.0.3", "description": "Core module of JSON Forms", "repository": "https://github.com/eclipsesource/jsonforms", "bugs": "https://github.com/eclipsesource/jsonforms/issues", diff --git a/packages/examples-app/README.md b/packages/examples-app/README.md deleted file mode 100644 index c1698de931..0000000000 --- a/packages/examples-app/README.md +++ /dev/null @@ -1,12 +0,0 @@ -# JSON Forms - More Forms. Less Code - -_Complex forms in the blink of an eye_ - -JSON Forms eliminates the tedious task of writing fully-featured forms by hand by leveraging the capabilities of JSON, JSON Schema and Javascript. - -## Examples App - -This package aggregates JSON Forms examples and makes them reachable via single `index.html` file. - -Aggregating the examples assumes that packages were built and their examples bundled. -Afterwards, the examples app can be aggregated with [prepare-examples-app.js](./prepare-examples-app.js) into folder `dist`. diff --git a/packages/examples-app/index.html b/packages/examples-app/index.html deleted file mode 100644 index 3639439cc2..0000000000 --- a/packages/examples-app/index.html +++ /dev/null @@ -1,19 +0,0 @@ - - - - - JSON Forms Examples - - - - -

JSON Forms Examples

- - - diff --git a/packages/examples-app/package.json b/packages/examples-app/package.json deleted file mode 100644 index bb29383387..0000000000 --- a/packages/examples-app/package.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "@jsonforms/examples-app", - "version": "3.6.0", - "private": true, - "license": "MIT", - "type": "module", - "scripts": {}, - "devDependencies": { - "@types/fs-extra": "^9.0.13", - "fs-extra": "^11.1.0" - } -} diff --git a/packages/examples-app/prepare-examples-app.js b/packages/examples-app/prepare-examples-app.js deleted file mode 100644 index 8db81b0176..0000000000 --- a/packages/examples-app/prepare-examples-app.js +++ /dev/null @@ -1,39 +0,0 @@ -#!/usr/bin/env node - -import { copySync } from 'fs-extra/esm'; -import { copyFileSync, existsSync, mkdirSync, rmdirSync } from 'fs'; -import { dirname, join } from 'path'; -import { fileURLToPath } from 'url'; - -const __filename = fileURLToPath(import.meta.url); -const __dirname = dirname(__filename); - -const distDir = join(__dirname, 'dist'); -const packagesDir = join(__dirname, '..'); -const examples = { - 'react-vanilla': join(packagesDir, 'vanilla-renderers', 'example', 'dist'), - 'react-material': join(packagesDir, 'material-renderers', 'example', 'dist'), - 'angular-material': join(packagesDir, 'angular-material', 'example', 'dist'), - 'vue-vanilla': join(packagesDir, 'vue-vanilla', 'example', 'dist'), - 'vue-vuetify': join(packagesDir, 'vue-vuetify', 'example', 'dist'), -}; - -// Clean and recreate dist dir -if (existsSync(distDir)) { - console.log('Remove existing dist dir...'); - rmdirSync(distDir, { recursive: true, force: true }); -} -console.log('Create dist dir...'); -mkdirSync(distDir, { recursive: true }); - -// Copy index and built examples -console.log('Copy index.html...'); -console.log('Copy example apps...'); -copyFileSync(join(__dirname, 'index.html'), join(distDir, 'index.html')); -Object.keys(examples).forEach((key) => { - console.log(`Copying example ${key}...`); - const path = examples[key]; - copySync(path, join(distDir, key)); -}); - -console.log('...finished'); diff --git a/packages/examples-react/.eslintrc.js b/packages/examples-react/.eslintrc.js deleted file mode 100644 index 09f7ec2a0f..0000000000 --- a/packages/examples-react/.eslintrc.js +++ /dev/null @@ -1,39 +0,0 @@ -/* eslint-env node */ -/** @type {import('eslint').Linter.Config} */ -module.exports = { - root: true, - parser: '@typescript-eslint/parser', - parserOptions: { - ecmaFeatures: { - jsx: true, - }, - }, - // There is no file include in ESLint. Thus, ignore all and include files via negative ignore (!) - ignorePatterns: ['/*', '!/src'], - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:import/recommended', - 'plugin:import/typescript', - 'plugin:react/recommended', - 'plugin:prettier/recommended', - ], - rules: { - '@typescript-eslint/no-explicit-any': 'off', - // Base rule must be disabled to avoid incorrect errors - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': [ - 'warn', // or "error" - { - argsIgnorePattern: '^_', - varsIgnorePattern: '^_', - caughtErrorsIgnorePattern: '^_', - }, - ], - }, - settings: { - react: { - version: 'detect', - }, - }, -}; diff --git a/packages/examples-react/.prettierrc.js b/packages/examples-react/.prettierrc.js deleted file mode 100644 index 2c26853c4a..0000000000 --- a/packages/examples-react/.prettierrc.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - $schema: 'http://json.schemastore.org/prettierrc', - singleQuote: true, - jsxSingleQuote: true, - endOfLine: 'auto', -}; diff --git a/packages/examples-react/package.json b/packages/examples-react/package.json deleted file mode 100644 index 2d18f1dec7..0000000000 --- a/packages/examples-react/package.json +++ /dev/null @@ -1,39 +0,0 @@ -{ - "name": "@jsonforms/examples-react", - "version": "3.6.0", - "private": true, - "dependencies": { - "@jsonforms/core": "workspace:*", - "@jsonforms/examples": "workspace:*", - "@jsonforms/react": "workspace:*", - "@mui/material": "~5.13.0", - "@types/react-highlight": "^0.12.5", - "@types/react-tabs": "^2.3.3", - "highlight.js": "^11.3.1", - "json-refs": "3.0.15", - "lodash": "^4.17.21", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "react-highlight": "^0.14.0", - "react-tabs": "^3.2.3" - }, - "devDependencies": { - "@types/react": "^17.0.24", - "@types/react-dom": "^17.0.9", - "@typescript-eslint/eslint-plugin": "^5.54.1", - "@typescript-eslint/parser": "^5.54.1", - "eslint": "^8.56.0", - "eslint-config-prettier": "^8.7.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-react": "^7.32.2", - "prettier": "^2.8.4", - "tslib": "^2.5.0" - }, - "scripts": { - "build": "echo 'Nothing to do'", - "lint": "eslint .", - "lint:fix": "eslint --fix .", - "test": "echo 'Nothing to do'" - } -} diff --git a/packages/examples-react/public/favicon.ico b/packages/examples-react/public/favicon.ico deleted file mode 100644 index a11777cc47..0000000000 Binary files a/packages/examples-react/public/favicon.ico and /dev/null differ diff --git a/packages/examples-react/public/index.html b/packages/examples-react/public/index.html deleted file mode 100644 index 29aba544c2..0000000000 --- a/packages/examples-react/public/index.html +++ /dev/null @@ -1,41 +0,0 @@ - - - - - - - - - - - React App - - - -
- - - diff --git a/packages/examples-react/public/manifest.json b/packages/examples-react/public/manifest.json deleted file mode 100644 index ef19ec243e..0000000000 --- a/packages/examples-react/public/manifest.json +++ /dev/null @@ -1,15 +0,0 @@ -{ - "short_name": "React App", - "name": "Create React App Sample", - "icons": [ - { - "src": "favicon.ico", - "sizes": "64x64 32x32 24x24 16x16", - "type": "image/x-icon" - } - ], - "start_url": "./index.html", - "display": "standalone", - "theme_color": "#000000", - "background_color": "#ffffff" -} diff --git a/packages/examples-react/src/App.css b/packages/examples-react/src/App.css deleted file mode 100644 index 0d0027a400..0000000000 --- a/packages/examples-react/src/App.css +++ /dev/null @@ -1,173 +0,0 @@ -body { - margin: 0; - padding: 0; - font-family: sans-serif; - background: #f3f4fa; -} - -.header { - background-color: #00021e; - padding: 20px; - color: white; - text-align: center; -} -.header .logo { - animation: spin infinite 20s linear; - height: 80px; -} -.header .title { - font-size: 1.5em; -} -.header .intro { - font-size: large; -} - -.content { - padding: 0 20px 20px 20px; -} - -.tools .example-selector { - display: flex; - justify-content: center; - align-items: center; - margin-top: 20px; - gap: 20px; -} -.tools .example-selector h4 { - margin: 0 10px 0 0; -} -.tools .example-selector select { - background: #fff; - border-radius: 9px; - height: 30px; - border: 0; - padding: 0 10px; - outline: none; -} -.tools .toggle-panel { - display: flex; - justify-content: center; - align-items: center; - margin-top: 10px; -} -.tools .toggle-panel:hover { - cursor: pointer; -} - -.demo-wrapper { - display: flex; -} -.demo-wrapper .props-panel { - margin-right: 30px; -} -.demo-wrapper .props-panel.hide { - display: none; -} -.demo-wrapper .props-panel .expand-hint { - font-family: monospace; - font-style: italic; - text-align: right; - padding: 10px; - margin: 0; -} -.demo-wrapper .props-panel .expand-hint:hover { - cursor: pointer; -} -.demo-wrapper .demoform { - width: 100%; - margin-top: 20px; -} -.demo-wrapper .demoform .buttons { - margin-bottom: 20px; - text-align: center; -} -.demo-wrapper .demoform .demo { - background: #fff; - border-radius: 9px; - padding: 20px; - margin-top: 20px; -} - -.action-button { - margin-right: 10px; - background-color: #0069ed; - color: #ffffff; - border: 1px solid; - font-size: 1rem; - line-height: 1; - padding: 0.5rem 1rem; - border-radius: 5px; - cursor: pointer; - text-align: center; -} -.action-button:hover { - background-color: #0053ba; -} -.action-button:active { - transform: scale(0.99); -} - -@keyframes spin { - from { - transform: rotate(0deg); - } - to { - transform: rotate(360deg); - } -} -.hljs { - background: none; - padding: 0 !important; -} -.hljs pre { - overflow-x: auto; - margin: 0; -} - -.react-tabs { - max-width: 400px; - margin: 40px auto 20px auto; - padding: 0; - background: #fff; - border-radius: 9px; - display: inline-block; -} -.react-tabs .react-tabs__tab-list { - list-style: none; - display: flex; - margin-top: -18px; - margin-bottom: 0; - justify-content: center; - padding-left: 10px; - padding-right: 10px; -} -.react-tabs .react-tabs__tab-list .react-tabs__tab { - display: inline; - background-color: #0069ed; - color: #ffffff; - font-size: 1rem; - line-height: 1; - padding: 0.5rem 2rem; - cursor: pointer; -} -.react-tabs .react-tabs__tab-list .react-tabs__tab:first-child { - border-radius: 5px 0 0 5px; -} -.react-tabs .react-tabs__tab-list .react-tabs__tab:last-child { - border-radius: 0 5px 5px 0; -} -.react-tabs .react-tabs__tab-list .react-tabs__tab.react-tabs__tab--selected { - background-color: #0047a1; -} -.react-tabs .panel-wrapper { - overflow: scroll; - padding: 0 15px; -} -.react-tabs .panel-wrapper .react-tabs__tab-panel { - display: none; -} -.react-tabs - .panel-wrapper - .react-tabs__tab-panel.react-tabs__tab-panel--selected { - display: block; -} diff --git a/packages/examples-react/src/App.tsx b/packages/examples-react/src/App.tsx deleted file mode 100644 index 269ccb3d6e..0000000000 --- a/packages/examples-react/src/App.tsx +++ /dev/null @@ -1,244 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the 'Software'), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -import React, { useEffect, useMemo, useState } from 'react'; -import { JsonForms, JsonFormsInitStateProps } from '@jsonforms/react'; -import { ExampleDescription } from '@jsonforms/examples'; -import { - JsonFormsCellRendererRegistryEntry, - JsonFormsRendererRegistryEntry, - ValidationMode, -} from '@jsonforms/core'; -import { Tab, Tabs, TabList, TabPanel } from 'react-tabs'; -import Highlight from 'react-highlight'; -import 'highlight.js/styles/default.css'; -import './App.css'; - -type AppProps = { - examples: ExampleDescription[]; - cells: JsonFormsCellRendererRegistryEntry[]; - renderers: JsonFormsRendererRegistryEntry[]; - Wrapper?: React.JSXElementConstructor; -}; - -type Action = { - label: string; - apply: any; -}; - -const getProps = ( - example: ExampleDescription, - cells?: any, - renderers?: any -) => { - const schema = example.schema; - const uischema = example.uischema; - const data = example.data; - const uischemas = example.uischemas; - const config = example.config; - const i18n = example.i18n; - return { - schema, - uischema, - data, - config, - uischemas, - cells, - renderers, - i18n, - }; -}; - -const App = ({ - examples, - cells, - renderers, - Wrapper = React.Fragment, -}: AppProps) => { - const [currentExample, setExample] = useState( - examples[0] - ); - const [currentIndex, setIndex] = useState(0); - const [dataAsString, setDataAsString] = useState(''); - const [exampleProps, setExampleProps] = useState( - getProps(currentExample, cells, renderers) - ); - const [showPanel, setShowPanel] = useState(true); - const [validationMode, setValidationMode] = useState< - ValidationMode | undefined - >(undefined); - const schemaAsString = useMemo( - () => JSON.stringify(exampleProps.schema, null, 2), - [exampleProps.schema] - ); - const uiSchemaAsString = useMemo( - () => JSON.stringify(exampleProps.uischema, null, 2), - [exampleProps.uischema] - ); - - const actions: Action[] = currentExample.actions ?? []; - - useEffect(() => { - const hash = window.location.hash.replace('#', ''); - const exampleIndex = examples.findIndex((example) => { - return example.name === hash; - }); - if (exampleIndex !== -1) { - changeExample(exampleIndex); - } - }, []); - - const changeExample = (exampleID: number) => { - const example = examples[exampleID]; - setIndex(exampleID); - setExample(example); - setExampleProps(getProps(example, cells, renderers)); - window.location.hash = example.name; - if (example.name == 'huge') { - setShowPanel(false); - } - }; - - const changeData = (data: any) => { - setDataAsString(JSON.stringify(data, null, 2)); - }; - - return ( -
-
-
- logo -

Welcome to JSON Forms with React

-

More Forms. Less Code.

-
-
-
-
-

Select Example:

- -

Select ValidationMode:

- -
-
- setShowPanel((prevShow) => !prevShow)} - /> - -
-
- -
- {showPanel && ( -
- - - Data - Schema - UISchema - -
- - {dataAsString} - - - {schemaAsString} - - - {uiSchemaAsString} - -
-
-
- )} -
-
- {actions?.map((action: Action, index: number) => ( - - ))} -
-
- - changeData(data)} - /> - -
-
-
-
-
-
- ); -}; - -export default App; diff --git a/packages/examples-react/src/index.tsx b/packages/examples-react/src/index.tsx deleted file mode 100644 index a610510710..0000000000 --- a/packages/examples-react/src/index.tsx +++ /dev/null @@ -1,46 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import ReactDOM from 'react-dom'; -import React from 'react'; -import App from './App'; -import { RankedTester } from '@jsonforms/core'; -import { getExamples } from '@jsonforms/examples'; - -export const renderExample = ( - renderers: { tester: RankedTester; renderer: any }[], - cells: { tester: RankedTester; cell: any }[], - Wrapper?: React.JSXElementConstructor -) => { - const examples = getExamples(); - ReactDOM.render( - , - document.getElementById('root') - ); -}; diff --git a/packages/examples-react/src/logo.svg b/packages/examples-react/src/logo.svg deleted file mode 100644 index 6b60c1042f..0000000000 --- a/packages/examples-react/src/logo.svg +++ /dev/null @@ -1,7 +0,0 @@ - - - - - - - diff --git a/packages/examples/.eslintrc.js b/packages/examples/.eslintrc.js deleted file mode 100644 index 22942a301a..0000000000 --- a/packages/examples/.eslintrc.js +++ /dev/null @@ -1,28 +0,0 @@ -/* eslint-env node */ -/** @type {import('eslint').Linter.Config} */ -module.exports = { - root: true, - parser: '@typescript-eslint/parser', - // There is no file include in ESLint. Thus, ignore all and include files via negative ignore (!) - ignorePatterns: ['/*', '!/src'], - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:import/recommended', - 'plugin:import/typescript', - 'plugin:prettier/recommended', - ], - rules: { - '@typescript-eslint/no-explicit-any': 'off', - // Base rule must be disabled to avoid incorrect errors - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': [ - 'warn', // or "error" - { - argsIgnorePattern: '^_', - varsIgnorePattern: '^_', - caughtErrorsIgnorePattern: '^_', - }, - ], - }, -}; diff --git a/packages/examples/.prettierrc.js b/packages/examples/.prettierrc.js deleted file mode 100644 index 2c26853c4a..0000000000 --- a/packages/examples/.prettierrc.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - $schema: 'http://json.schemastore.org/prettierrc', - singleQuote: true, - jsxSingleQuote: true, - endOfLine: 'auto', -}; diff --git a/packages/examples/README.md b/packages/examples/README.md deleted file mode 100644 index b3d9a435ec..0000000000 --- a/packages/examples/README.md +++ /dev/null @@ -1,34 +0,0 @@ -# JSON Forms - More Forms. Less Code - -_Complex forms in the blink of an eye_ - -JSON Forms eliminates the tedious task of writing fully-featured forms by hand by leveraging the capabilities of JSON, JSON Schema and Javascript. - -## Examples Package - -This is the examples package which demonstrates how to integrate JSON Forms with your application. - -You can use the examples with any renderer set you want, for example the [Material Renderers](https://github.com/eclipsesource/jsonforms/tree/master/packages/material-renderers) or the [Angular Renderers](https://github.com/eclipsesource/jsonforms/tree/master/packages/angular-material). - -Check for all published JSON Forms packages. - -## License - -The JSON Forms project is licensed under the MIT License. See the [LICENSE file](https://github.com/eclipsesource/jsonforms/blob/master/LICENSE) for more information. - -## Roadmap - -Our current roadmap is available [here](https://github.com/eclipsesource/jsonforms/blob/master/ROADMAP.md). - -## Feedback, Help and Support - -JSON Forms is developed by [EclipseSource](https://eclipsesource.com). - -If you encounter any problems feel free to [open an issue](https://github.com/eclipsesource/jsonforms/issues/new/choose) on the repo. -For questions and discussions please use the [JSON Forms board](https://jsonforms.discourse.group). -You can also reach us via [email](mailto:jsonforms@eclipsesource.com?subject=JSON%20Forms). -In addition, EclipseSource also offers [professional support](https://jsonforms.io/support) for JSON Forms. - -## Migration - -See our [migration guide](https://github.com/eclipsesource/jsonforms/blob/master/MIGRATION.md) when updating JSON Forms. diff --git a/packages/examples/icons/drive.png b/packages/examples/icons/drive.png deleted file mode 100644 index 37b7c9b27d..0000000000 Binary files a/packages/examples/icons/drive.png and /dev/null differ diff --git a/packages/examples/icons/folder.png b/packages/examples/icons/folder.png deleted file mode 100644 index 784e8fa482..0000000000 Binary files a/packages/examples/icons/folder.png and /dev/null differ diff --git a/packages/examples/icons/page.png b/packages/examples/icons/page.png deleted file mode 100644 index 03ddd799fa..0000000000 Binary files a/packages/examples/icons/page.png and /dev/null differ diff --git a/packages/examples/package.json b/packages/examples/package.json deleted file mode 100644 index e2c4352a29..0000000000 --- a/packages/examples/package.json +++ /dev/null @@ -1,71 +0,0 @@ -{ - "name": "@jsonforms/examples", - "version": "3.6.0", - "description": "JSON Forms Example Data", - "repository": "https://github.com/eclipsesource/jsonforms", - "bugs": "https://github.com/eclipsesource/jsonforms/issues", - "homepage": "http://jsonforms.io/", - "license": "MIT", - "publishConfig": { - "access": "public" - }, - "directories": { - "icons": "icons", - "lib": "lib", - "library": "library", - "src": "src", - "test": "wct-test" - }, - "keywords": [ - "form", - "forms", - "json", - "jsonforms", - "frontend", - "generator", - "input", - "renderengine", - "jsonschema", - "schema", - "uischema", - "layout", - "customization" - ], - "main": "lib/jsonforms-examples.cjs.js", - "module": "lib/jsonforms-examples.esm.js", - "typings": "./lib/index.d.ts", - "scripts": { - "build": "rollup -c rollup.config.js", - "clean": "rimraf lib coverage dist .nyc_output 2> /dev/null", - "lint": "eslint .", - "lint:fix": "eslint --fix .", - "test": "echo 'Nothing to do for `examples` package'", - "doc": "typedoc --name 'JSON Forms Examples' --excludeExternals --out docs src" - }, - "dependencies": { - "ajv-i18n": "^4.2.0", - "lodash": "^4.17.21" - }, - "peerDependencies": { - "@jsonforms/core": "3.6.0" - }, - "devDependencies": { - "@jsonforms/core": "workspace:*", - "@types/node": "^22.13.8", - "@typescript-eslint/eslint-plugin": "^5.54.1", - "@typescript-eslint/parser": "^5.54.1", - "eslint": "^8.56.0", - "eslint-config-prettier": "^8.7.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-prettier": "^4.2.1", - "prettier": "^2.8.4", - "rimraf": "^3.0.2", - "rollup": "^2.78.0", - "rollup-plugin-cleanup": "^3.2.1", - "rollup-plugin-typescript2": "^0.34.1", - "rollup-plugin-visualizer": "^5.4.1", - "tslib": "^2.5.0", - "typedoc": "~0.25.3", - "typescript": "~5.5.0" - } -} diff --git a/packages/examples/rollup.config.js b/packages/examples/rollup.config.js deleted file mode 100644 index e9f14fc976..0000000000 --- a/packages/examples/rollup.config.js +++ /dev/null @@ -1,48 +0,0 @@ -import typescript from 'rollup-plugin-typescript2'; -import cleanup from 'rollup-plugin-cleanup'; -import { visualizer } from 'rollup-plugin-visualizer'; - -const packageJson = require('./package.json'); - -const baseConfig = { - input: 'src/index.ts', - external: [ - ...Object.keys(packageJson.dependencies), - ...Object.keys(packageJson.peerDependencies), - /^lodash\/.*/, - ], -}; - -export default [ - { - ...baseConfig, - output: { - file: packageJson.module, - format: 'esm', - sourcemap: true, - }, - plugins: [ - typescript(), - cleanup({ extensions: ['js', 'ts', 'jsx', 'tsx'] }), - visualizer({ open: false }), - ], - }, - { - ...baseConfig, - output: { - file: packageJson.main, - format: 'cjs', - sourcemap: true, - }, - plugins: [ - typescript({ - tsconfigOverride: { - compilerOptions: { - target: 'ES5', - }, - }, - }), - cleanup({ extensions: ['js', 'ts', 'jsx', 'tsx'] }), - ], - }, -]; diff --git a/packages/examples/src/example.ts b/packages/examples/src/example.ts deleted file mode 100644 index f4e1407010..0000000000 --- a/packages/examples/src/example.ts +++ /dev/null @@ -1,56 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - JsonFormsCellRendererRegistryEntry, - JsonFormsUISchemaRegistryEntry, - JsonFormsRendererRegistryEntry, - JsonSchema, - UISchemaElement, - JsonFormsI18nState, -} from '@jsonforms/core'; - -export interface ExampleDescription { - name: string; - label: string; - data: any; - schema: JsonSchema; - uischema: UISchemaElement; - uischemas?: JsonFormsUISchemaRegistryEntry[]; - config?: any; - actions?: { label: string; apply: (props: StateProps) => any }[]; - i18n?: JsonFormsI18nState; - readonly?: boolean; -} - -export interface StateProps { - data: any; - schema?: JsonSchema; - uischema?: UISchemaElement; - renderers: JsonFormsRendererRegistryEntry[]; - cells?: JsonFormsCellRendererRegistryEntry[]; - config?: any; - uischemas?: JsonFormsUISchemaRegistryEntry[]; - readonly?: boolean; -} diff --git a/packages/examples/src/examples/1884.ts b/packages/examples/src/examples/1884.ts deleted file mode 100644 index b22f7e7301..0000000000 --- a/packages/examples/src/examples/1884.ts +++ /dev/null @@ -1,191 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - type: 'object', - required: ['age'], - properties: { - firstName: { - type: 'string', - minLength: 2, - maxLength: 20, - }, - lastName: { - type: 'string', - minLength: 5, - maxLength: 15, - }, - age: { - type: 'integer', - minimum: 18, - maximum: 100, - }, - gender: { - type: 'string', - enum: ['Male', 'Female', 'Undisclosed'], - }, - height: { - type: 'number', - }, - dateOfBirth: { - type: 'string', - format: 'date', - }, - rating: { - type: 'integer', - }, - committer: { - type: 'boolean', - }, - address: { - type: 'object', - properties: { - street: { - type: 'string', - }, - streetnumber: { - type: 'string', - }, - postalCode: { - type: 'string', - }, - city: { - type: 'string', - }, - }, - }, - }, -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Label', - text: 'Toggle the committer boolean to enable/disable the address block.', - }, - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/firstName', - }, - { - type: 'Control', - scope: '#/properties/lastName', - }, - ], - }, - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/age', - }, - { - type: 'Control', - scope: '#/properties/dateOfBirth', - }, - ], - }, - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/height', - }, - { - type: 'Control', - scope: '#/properties/gender', - }, - { - type: 'Control', - scope: '#/properties/committer', - }, - ], - }, - { - type: 'Group', - label: 'Address for Shipping T-Shirt', - elements: [ - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/address/properties/street', - }, - { - type: 'Control', - scope: '#/properties/address/properties/streetnumber', - }, - ], - }, - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/address/properties/postalCode', - }, - { - type: 'Control', - scope: '#/properties/address/properties/city', - }, - ], - }, - ], - rule: { - effect: 'ENABLE', - condition: { - scope: '#/properties/committer', - schema: { - const: true, - }, - }, - }, - }, - ], -}; - -export const data = { - firstName: 'Max', - lastName: 'Power', - committer: false, -}; - -registerExamples([ - { - name: '1884', - label: 'Issue 1884 - Nested enable/disable', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/1948.ts b/packages/examples/src/examples/1948.ts deleted file mode 100644 index 42cc43e126..0000000000 --- a/packages/examples/src/examples/1948.ts +++ /dev/null @@ -1,87 +0,0 @@ -/* - The MIT License - - Copyright (c) 2022 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the 'Software'), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; -import { UISchemaElement } from '@jsonforms/core'; - -export const schema = { - type: 'object', - definitions: { - import: { - title: 'Import', - type: 'object', - properties: { - eClass: { - const: 'http://my_schema/1.0.0#//Import', - }, - document: { - type: 'string', - }, - package: { - type: 'string', - }, - prefix: { - type: 'string', - }, - }, - }, - }, - properties: { - import: { - type: 'array', - items: { - $ref: '#/definitions/import', - }, - }, - }, -}; - -export const uischema: UISchemaElement = undefined; - -export const data = { - import: [ - { - document: 'Document1', - package: 'Package1', - prefix: 'Prefix', - }, - ], -}; - -registerExamples([ - { - name: '1948_with', - label: 'Issue 1948 - Array renderer selection (with schema)', - data, - schema, - uischema, - }, - { - name: '1948_without', - label: 'Issue 1948 - Array renderer selection (w/o schema)', - data, - schema: undefined, - uischema, - }, -]); diff --git a/packages/examples/src/examples/additional-errors.ts b/packages/examples/src/examples/additional-errors.ts deleted file mode 100644 index 4b158715a6..0000000000 --- a/packages/examples/src/examples/additional-errors.ts +++ /dev/null @@ -1,60 +0,0 @@ -/* - The MIT License - - Copyright (c) 2022 STMicroelectronics and others. - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { ErrorObject } from 'ajv'; -import { StateProps } from '../example'; -import { registerExamples } from '../register'; -import { schema, uischema, data } from './person'; - -export const additionalErrors: ErrorObject[] = []; - -export const actions = [ - { - label: 'Add additional error', - apply: (props: StateProps) => { - additionalErrors.push({ - instancePath: '/personalData/age', - message: `New error #${additionalErrors.length + 1}`, - schemaPath: '', - keyword: '', - params: {}, - }); - return { - ...props, - additionalErrors: [...additionalErrors], - }; - }, - }, -]; - -registerExamples([ - { - name: 'additional-errors', - label: 'Additional errors', - data, - schema, - uischema, - actions, - }, -]); diff --git a/packages/examples/src/examples/additional-properties.ts b/packages/examples/src/examples/additional-properties.ts deleted file mode 100644 index 01fc152a77..0000000000 --- a/packages/examples/src/examples/additional-properties.ts +++ /dev/null @@ -1,131 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - $schema: 'http://json-schema.org/draft-07/schema#', - type: 'object', - properties: { - propertiesString: { - type: 'string', - }, - }, - propertyNames: { - minLength: 2, - }, - patternProperties: { - '^string$': { - type: 'string', - }, - '^number$': { - type: 'number', - }, - '^integer$': { - type: 'integer', - }, - '^object$': { - type: 'object', - properties: { - prop1: { - type: 'string', - }, - }, - }, - '^boolean$': { - type: 'boolean', - }, - '^stringArray$': { - type: 'array', - items: { - type: 'string', - }, - }, - '^numberArray$': { - type: 'array', - items: { - type: 'number', - }, - }, - '^integerArray$': { - type: 'array', - items: { - type: 'integer', - }, - }, - '^objectArray$': { - type: 'array', - items: { - type: 'object', - properties: { - prop1: { - type: 'string', - }, - }, - }, - }, - '^booleanArray$': { - type: 'array', - items: { - type: 'boolean', - }, - }, - }, - additionalProperties: { - type: 'string', - title: 'Additional Properties', - }, - maxProperties: 15, -}; - -export const uischema = { - type: 'Control', - scope: '#/', -}; - -const data = { - propertiesString: 'data', - string: 'string value', - number: 10.2, - integer: 11, - object: { - prop1: 'prop 1 value', - }, - boolean: true, - stringArray: ['value1', 'value2'], - numberArray: [12.2], - integerArray: [33], - objectArray: [{ prop1: 'prop1 val' }, {}], - booleanArray: [false, true], -}; - -registerExamples([ - { - name: 'additional-properties', - label: 'Additional Properties', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/allOf.ts b/packages/examples/src/examples/allOf.ts deleted file mode 100644 index 61ac38d7bf..0000000000 --- a/packages/examples/src/examples/allOf.ts +++ /dev/null @@ -1,95 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - $schema: 'http://json-schema.org/draft-07/schema#', - - definitions: { - address: { - type: 'object', - properties: { - street_address: { type: 'string' }, - city: { type: 'string' }, - state: { type: 'string' }, - }, - required: ['street_address', 'city', 'state'], - }, - }, - - type: 'object', - - properties: { - billing_address: { $ref: '#/definitions/address' }, - shipping_address: { - allOf: [ - { $ref: '#/definitions/address' }, - { - type: 'object', - properties: { - type: { - type: 'string', - enum: ['residential', 'business'], - }, - }, - required: ['type'], - }, - ], - }, - }, -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - label: 'Billing address', - type: 'Control', - scope: '#/properties/billing_address', - }, - { - type: 'Control', - scope: '#/properties/shipping_address', - }, - ], -}; - -const data = { - billing_address: { - street_address: '1600 Pennsylvania Avenue NW', - city: 'Washington', - state: 'DC', - }, -}; - -registerExamples([ - { - name: 'allOf', - label: 'allOf', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/anyOf-oneOf-allOf-resolve.ts b/packages/examples/src/examples/anyOf-oneOf-allOf-resolve.ts deleted file mode 100644 index 33a4e89dee..0000000000 --- a/packages/examples/src/examples/anyOf-oneOf-allOf-resolve.ts +++ /dev/null @@ -1,95 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - $defs: { - Base: { - type: 'object', - properties: { - width: { - type: 'integer', - }, - }, - }, - Child: { - type: 'object', - allOf: [ - { $ref: '#/$defs/Base' }, - { - properties: { - geometry: { - type: 'string', - }, - }, - }, - ], - }, - }, - type: 'object', - properties: { - element: { - $ref: '#/$defs/Child', - }, - }, -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Label', - text: 'AllOfRenderer', - }, - { - type: 'Control', - scope: '#/properties/element', - }, - { - type: 'Label', - text: 'Manual controls', - }, - { - type: 'Control', - scope: '#/properties/element/properties/width', - }, - { - type: 'Control', - scope: '#/properties/element/properties/geometry', - }, - ], -}; - -const data = {}; - -registerExamples([ - { - name: 'anyOf-oneOf-allOf-resolve', - label: 'AnyOf OneOf AllOf Resolve', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/anyOf.ts b/packages/examples/src/examples/anyOf.ts deleted file mode 100644 index 31eb17a3b3..0000000000 --- a/packages/examples/src/examples/anyOf.ts +++ /dev/null @@ -1,137 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - $schema: 'http://json-schema.org/draft-07/schema#', - - definitions: { - address: { - type: 'object', - properties: { - street_address: { type: 'string' }, - city: { type: 'string' }, - state: { type: 'string' }, - }, - required: ['street_address', 'city', 'state'], - }, - user: { - type: 'object', - properties: { - name: { type: 'string' }, - mail: { type: 'string' }, - }, - required: ['name', 'mail'], - }, - users: { - type: 'array', - items: { $ref: '#/definitions/user' }, - }, - addresses: { - type: 'array', - items: { $ref: '#/definitions/address' }, - }, - }, - - type: 'object', - - properties: { - addressOrUser: { - anyOf: [ - { $ref: '#/definitions/address' }, - { $ref: '#/definitions/user' }, - ], - }, - addressesOrUsers: { - anyOf: [ - { $ref: '#/definitions/addresses' }, - { $ref: '#/definitions/users' }, - ], - }, - addressesOrUsersAnyOfItems: { - type: 'array', - items: { - anyOf: [ - { $ref: '#/definitions/addresses' }, - { $ref: '#/definitions/users' }, - ], - }, - }, - }, -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/addressOrUser', - }, - { - type: 'Control', - scope: '#/properties/addressesOrUsers', - label: 'Addresses or Users (AnyOf Schema)', - }, - { - type: 'Control', - scope: '#/properties/addressesOrUsersAnyOfItems', - label: 'Addresses or Users (AnyOf Array Items)', - }, - ], -}; - -const data = { - addressOrUser: { - street_address: '1600 Pennsylvania Avenue NW', - city: 'Washington', - state: 'DC', - }, -}; - -const schema_simple = { - type: 'object', - properties: { - foo: { - anyOf: [{ type: 'string' }, { enum: ['foo', 'bar'] }], - }, - }, -}; - -registerExamples([ - { - name: 'anyOf', - label: 'anyOf', - data, - schema, - uischema, - }, - { - name: 'anyOf_simple', - label: 'AnyOf Simple', - data: { foo: 'foo' }, - schema: schema_simple, - uischema: undefined, - }, -]); diff --git a/packages/examples/src/examples/arrays-with-custom-element-label.ts b/packages/examples/src/examples/arrays-with-custom-element-label.ts deleted file mode 100644 index 5ab2ace9a0..0000000000 --- a/packages/examples/src/examples/arrays-with-custom-element-label.ts +++ /dev/null @@ -1,95 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - type: 'object', - properties: { - comments: { - type: 'array', - title: 'Messages', - items: { - type: 'object', - properties: { - message1: { - type: 'string', - }, - message2: { - type: 'string', - }, - }, - }, - }, - }, -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/comments', - options: { - elementLabelProp: 'message2', - detail: { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/message1', - }, - { - type: 'Control', - scope: '#/properties/message2', - }, - ], - }, - }, - }, - ], -}; - -export const data = { - comments: [ - { - message1: 'This is an example message', - message2: 'This is an example message 2', - }, - { - message1: 'Get ready for booohay 1', - message2: 'Get ready for booohay 2', - }, - ], -}; - -registerExamples([ - { - name: 'array-with-custom-element-label', - label: 'Array with custom element label', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/arrays-with-defaults.ts b/packages/examples/src/examples/arrays-with-defaults.ts deleted file mode 100644 index 9ee4cb37f8..0000000000 --- a/packages/examples/src/examples/arrays-with-defaults.ts +++ /dev/null @@ -1,129 +0,0 @@ -/* - The MIT License - - Copyright (c) 2023 STMicroelectronics - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the 'Software'), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { convertDateToString } from '@jsonforms/core'; -import { registerExamples } from '../register'; - -export const schema = { - definitions: { - itemsType: { - type: 'object', - properties: { - name: { - type: 'string', - default: 'foo1', - }, - name_noDefault: { - type: 'string', - }, - description: { - type: 'string', - default: 'bar', - }, - done: { - type: 'boolean', - default: false, - }, - rating: { - type: 'integer', - default: 5, - }, - cost: { - type: 'number', - default: 5.5, - }, - date: { - type: 'string', - format: 'date', - default: convertDateToString(new Date(), 'date'), - }, - }, - }, - stringDef: { type: 'string', default: 'excellent' }, - numberDef: { type: 'number', default: 10 }, - intDef: { type: 'integer', default: 11 }, - boolDef: { type: 'boolean', default: true }, - arrayDef: { type: 'array', default: ['a', 'b', 'c'] }, - }, - type: 'object', - properties: { - objectArray: { - type: 'array', - items: { - $ref: '#/definitions/itemsType', - }, - }, - stringArray: { - type: 'array', - items: { - type: 'string', - default: '123', - }, - }, - objectArrayWithPropertyRefs: { - type: 'array', - items: { - type: 'object', - properties: { - string1: { $ref: '#/definitions/stringDef' }, - string2: { type: 'string' }, - number: { $ref: '#/definitions/numberDef' }, - int: { $ref: '#/definitions/intDef' }, - bool: { $ref: '#/definitions/boolDef' }, - array: { $ref: '#/definitions/arrayDef' }, - }, - }, - }, - }, -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/objectArray', - }, - { - type: 'Control', - scope: '#/properties/stringArray', - }, - { - type: 'Control', - scope: '#/properties/objectArrayWithPropertyRefs', - }, - ], -}; - -export const data = {}; - -registerExamples([ - { - name: 'array-with-defaults', - label: 'Array with defaults', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/arrays-with-detail-and-rule.ts b/packages/examples/src/examples/arrays-with-detail-and-rule.ts deleted file mode 100644 index b2237a5394..0000000000 --- a/packages/examples/src/examples/arrays-with-detail-and-rule.ts +++ /dev/null @@ -1,126 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; -import { personCoreSchema } from './person'; - -export const schema = { - type: 'object', - properties: { - ...personCoreSchema.properties, - occupation: { type: 'string' }, - enableArray: { type: 'boolean' }, - comments: { - type: 'array', - title: 'Messages', - items: { - type: 'object', - properties: { - date: { - type: 'string', - format: 'date', - }, - message: { - type: 'string', - maxLength: 5, - }, - }, - }, - }, - }, - required: ['occupation', 'nationality'], -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/occupation', - }, - { - type: 'Control', - scope: '#/properties/enableArray', - }, - { - type: 'Control', - scope: '#/properties/comments', - rule: { - effect: 'SHOW', - condition: { - type: 'OR', - conditions: [ - { - schema: { const: 'developer' }, - scope: '#/properties/occupation', - }, - { - schema: { const: true }, - scope: '/properties/enableArray', - }, - ], - }, - }, - options: { - detail: { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/message', - }, - { - type: 'Control', - scope: '#/properties/date', - }, - ], - }, - }, - }, - ], -}; - -export const data = { - occupation: 'developer', - comments: [ - { - date: new Date(2001, 8, 11).toISOString().substr(0, 10), - message: 'This is an example message', - }, - { - date: new Date().toISOString().substr(0, 10), - message: 'Get ready for booohay', - }, - ], -}; - -registerExamples([ - { - name: 'array-with-detail-and-rule', - label: 'Array with detail and rule', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/arrays-with-detail.ts b/packages/examples/src/examples/arrays-with-detail.ts deleted file mode 100644 index c727bb0d62..0000000000 --- a/packages/examples/src/examples/arrays-with-detail.ts +++ /dev/null @@ -1,115 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; -import { personCoreSchema } from './person'; -import { StateProps } from '../example'; - -export const schema = { - type: 'object', - properties: { - ...personCoreSchema.properties, - occupation: { type: 'string' }, - comments: { - type: 'array', - description: 'Description for array with details', - minItems: 2, - maxItems: 8, - items: { - type: 'object', - properties: { - date: { - type: 'string', - format: 'date', - }, - message: { - type: 'string', - maxLength: 5, - }, - }, - }, - }, - }, - required: ['occupation', 'nationality'], -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/comments', - options: { - showSortButtons: true, - restrict: true, - detail: { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/message', - }, - { - type: 'Control', - scope: '#/properties/date', - }, - ], - }, - }, - }, - ], -}; - -export const data = { - comments: [ - { - date: new Date(2001, 8, 11).toISOString().substr(0, 10), - message: 'This is an example message', - }, - { - date: new Date().toISOString().substr(0, 10), - message: 'Get ready for booohay', - }, - ], -}; - -const actions = [ - { - label: 'Toggle readonly', - apply: (props: StateProps) => { - return { ...props, readonly: !props.readonly }; - }, - }, -]; - -registerExamples([ - { - name: 'array-with-detail', - label: 'Array with detail', - data, - schema, - uischema, - actions, - }, -]); diff --git a/packages/examples/src/examples/arrays-with-sorting.ts b/packages/examples/src/examples/arrays-with-sorting.ts deleted file mode 100644 index 9891c2d947..0000000000 --- a/packages/examples/src/examples/arrays-with-sorting.ts +++ /dev/null @@ -1,139 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; -import { StateProps } from '../example'; - -export const schema = { - type: 'object', - properties: { - comments: { - type: 'array', - minItems: 2, - maxItems: 8, - items: { - type: 'object', - properties: { - date: { - type: 'string', - format: 'date', - }, - message: { - type: 'string', - maxLength: 5, - }, - enum: { - type: 'string', - const: 'foo', - }, - }, - }, - }, - foo: { type: 'string' }, - }, -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/foo', - }, - { - type: 'Control', - scope: '#/properties/comments', - options: { - showSortButtons: true, - restrict: true, - }, - }, - ], -}; - -export const uischemaWithSorting = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/foo', - }, - { - type: 'Control', - scope: '#/properties/comments', - options: { - showSortButtons: true, - restrict: true, - }, - }, - ], -}; - -export const data = { - comments: [ - { - date: new Date(2001, 8, 11).toISOString().substr(0, 10), - message: 'This is an example message With sorting', - }, - { - date: new Date().toISOString().substr(0, 10), - message: 'Get ready for booohay', - }, - ], -}; - -const actions = [ - { - label: 'Enable Sorting', - apply: (props: StateProps) => { - return { - ...props, - uischema: uischemaWithSorting, - }; - }, - }, - { - label: 'Disable Sorting', - apply: (props: StateProps) => { - return { - ...props, - uischema: uischema, - }; - }, - }, -]; - -registerExamples([ - { - name: 'array-with-sorting', - label: 'Array with sorting', - data, - schema, - uischema, - config: { - withSort: uischemaWithSorting, - }, - actions, - }, -]); diff --git a/packages/examples/src/examples/arrays-with-translated-custom-element-label.ts b/packages/examples/src/examples/arrays-with-translated-custom-element-label.ts deleted file mode 100644 index efd39f0ed4..0000000000 --- a/packages/examples/src/examples/arrays-with-translated-custom-element-label.ts +++ /dev/null @@ -1,284 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; -import { JsonSchema7, Translator } from '@jsonforms/core'; - -export const data = { - article: { - title: 'title', - comments: [ - { - visibility: 'PUBLIC', - status: 'NEW', - author: { - name: 'John', - type: 'WRITER', - role: 'ROLE_1', - }, - }, - { - visibility: 'PRIVATE', - status: 'REVIEWED', - author: { - name: 'John', - type: 'AUTHOR', - role: 'ROLE_2', - }, - }, - ], - }, -}; - -const schema: JsonSchema7 = { - type: 'object', - properties: { - article: { - type: 'object', - properties: { - title: { - type: 'string', - }, - comments: { - type: 'array', - items: { - type: 'object', - properties: { - visibility: { - type: 'string', - enum: ['PUBLIC', 'PRIVATE'], - }, - status: { - type: 'string', - oneOf: [ - { - const: 'NEW', - }, - { - const: 'REVIEWED', - title: 'Reviewed comment', - }, - ], - }, - author: { - type: 'object', - properties: { - name: { - type: 'string', - }, - type: { - type: 'string', - enum: ['AUTHOR', 'WRITER'], - }, - role: { - type: 'string', - oneOf: [ - { - const: 'ROLE_1', - }, - { - const: 'ROLE_2', - title: 'Second role', - }, - ], - }, - }, - }, - }, - }, - }, - }, - }, - }, -}; - -const detail = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/visibility', - }, - { - type: 'Control', - scope: '#/properties/status', - }, - { - type: 'Control', - scope: '#/properties/author/properties/name', - }, - { - type: 'Control', - scope: '#/properties/author/properties/type', - }, - { - type: 'Control', - scope: '#/properties/author/properties/role', - }, - ], -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Group', - label: - 'Standard array control with elementLabelProp pointing on an direct enum (expected translated PUBLIC/PRIVATE)', - elements: [ - { - type: 'Control', - scope: '#/properties/article/properties/comments', - options: { - elementLabelProp: 'visibility', - detail: detail, - }, - }, - ], - }, - { - type: 'Group', - label: - 'Standard array control with elementLabelProp pointing on an direct oneOf (expected translated NEW/Reviewed comment)', - elements: [ - { - type: 'Control', - scope: '#/properties/article/properties/comments', - options: { - elementLabelProp: 'status', - detail: detail, - }, - }, - ], - }, - { - type: 'Group', - label: - 'ListWithDetail with elementLabelProp pointing on an direct enum (expected translated PUBLIC/PRIVATE)', - elements: [ - { - type: 'ListWithDetail', - scope: '#/properties/article/properties/comments', - options: { - elementLabelProp: 'visibility', - detail: detail, - }, - }, - ], - }, - { - type: 'Group', - label: - 'ListWithDetail with elementLabelProp pointing on an direct oneOf (expected translated NEW/Reviewed comment)', - elements: [ - { - type: 'ListWithDetail', - scope: '#/properties/article/properties/comments', - options: { - elementLabelProp: 'status', - detail: detail, - }, - }, - ], - }, - { - type: 'Group', - label: - 'Standard array control with elementLabelProp pointing on an deep enum (expected translated WRITER/AUTHOR)', - elements: [ - { - type: 'Control', - scope: '#/properties/article/properties/comments', - options: { - elementLabelProp: 'author.type', - detail: detail, - }, - }, - ], - }, - { - type: 'Group', - label: - 'Standard array control with elementLabelProp pointing on an deep oneOf (expected translated ROLE_1/Second role)', - elements: [ - { - type: 'Control', - scope: '#/properties/article/properties/comments', - options: { - elementLabelProp: 'author.role', - detail: detail, - }, - }, - ], - }, - { - type: 'Group', - label: - 'ListWithDetail with elementLabelProp pointing on an deep enum (expected translated WRITER/AUTHOR)', - elements: [ - { - type: 'ListWithDetail', - scope: '#/properties/article/properties/comments', - options: { - elementLabelProp: 'author.type', - detail: detail, - }, - }, - ], - }, - { - type: 'Group', - label: - 'ListWithDetail with elementLabelProp pointing on an deep oneOf (expected translated ROLE_1/Second role)', - elements: [ - { - type: 'ListWithDetail', - scope: '#/properties/article/properties/comments', - options: { - elementLabelProp: 'author.role', - detail: detail, - }, - }, - ], - }, - ], -}; - -export const translate: Translator = (key: string) => { - return 'translator.' + key; -}; - -registerExamples([ - { - name: 'array-with-translated-custom-element-label', - label: 'Array with translated custom element label', - data, - schema, - uischema, - i18n: { - translate: translate, - locale: 'en', - }, - }, -]); diff --git a/packages/examples/src/examples/arrays.ts b/packages/examples/src/examples/arrays.ts deleted file mode 100644 index 13980f5b14..0000000000 --- a/packages/examples/src/examples/arrays.ts +++ /dev/null @@ -1,146 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; -import { StateProps } from '../example'; - -export const schema = { - type: 'object', - properties: { - comments: { - type: 'array', - items: { - type: 'object', - properties: { - date: { - type: 'string', - format: 'date', - }, - message: { - type: 'string', - maxLength: 5, - }, - enum: { - type: 'string', - const: 'foo', - }, - oneOfEnum: { - type: 'string', - oneOf: [{ const: 'foo' }, { const: 'bar' }], - }, - }, - }, - }, - foo: { type: 'string' }, - }, -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/foo', - }, - { - type: 'Control', - scope: '#/properties/comments', - options: { - showSortButtons: false, - }, - }, - ], -}; - -export const uischemaWithSorting = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/foo', - }, - { - type: 'Control', - scope: '#/properties/comments', - options: { - showSortButtons: false, - }, - }, - ], -}; - -export const data = { - comments: [ - { - date: new Date(2001, 8, 11).toISOString().substr(0, 10), - message: 'This is an example message', - }, - { - date: new Date().toISOString().substr(0, 10), - message: 'Get ready for booohay', - oneOfEnum: 'test', - }, - ], -}; - -const actions = [ - { - label: 'Enable Sorting', - apply: (props: StateProps) => { - return { - ...props, - uischema: uischemaWithSorting, - }; - }, - }, - { - label: 'Disable Sorting', - apply: (props: StateProps) => { - return { - ...props, - uischema: uischema, - }; - }, - }, - { - label: 'Toggle readonly', - apply: (props: StateProps) => { - return { ...props, readonly: !props.readonly }; - }, - }, -]; - -registerExamples([ - { - name: 'array', - label: 'Array', - data, - schema, - uischema, - config: { - withSort: uischemaWithSorting, - }, - actions, - }, -]); diff --git a/packages/examples/src/examples/arraysI18n.ts b/packages/examples/src/examples/arraysI18n.ts deleted file mode 100644 index 8b17339304..0000000000 --- a/packages/examples/src/examples/arraysI18n.ts +++ /dev/null @@ -1,107 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; -import { ArrayTranslationEnum, Translator } from '@jsonforms/core'; -import get from 'lodash/get'; - -export const schema = { - type: 'object', - properties: { - comments: { - type: 'array', - items: { - type: 'object', - properties: { - date: { - type: 'string', - format: 'date', - }, - message: { - type: 'string', - maxLength: 5, - }, - enum: { - type: 'string', - const: 'foo', - }, - }, - }, - }, - }, -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/comments', - options: { - showSortButtons: true, - }, - }, - ], -}; - -export const data = { - comments: [ - { - date: new Date(2001, 8, 11).toISOString().substr(0, 10), - message: 'This is an example message', - }, - { - date: new Date().toISOString().substr(0, 10), - message: 'Get ready for booohay', - }, - ], -}; - -export const translations = { - comments: { - [ArrayTranslationEnum.noDataMessage]: 'Be the first to write a comment', - [ArrayTranslationEnum.addTooltip]: 'Add a Comment', - [ArrayTranslationEnum.deleteDialogAccept]: 'Delete!', - [ArrayTranslationEnum.deleteDialogDecline]: 'Cancel!', - [ArrayTranslationEnum.deleteDialogMessage]: - 'Are you sure you want to delete this comment?', - }, -}; -export const translate: Translator = (key: string, defaultMessage: string) => { - return get(translations, key) ?? defaultMessage; -}; - -registerExamples([ - { - name: 'array-i18n', - label: 'Array (i18n)', - data, - schema, - uischema, - i18n: { - translate: translate, - locale: 'en', - }, - }, -]); diff --git a/packages/examples/src/examples/categorization-stepper-nav-buttons.ts b/packages/examples/src/examples/categorization-stepper-nav-buttons.ts deleted file mode 100644 index f2c943477a..0000000000 --- a/packages/examples/src/examples/categorization-stepper-nav-buttons.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; -import { - data as categorizationData, - schema as categorizationSchema, - uischema as categorizationUiSchema, -} from './categorization'; - -export const schema = categorizationSchema; - -export const uischema = { - ...categorizationUiSchema, - options: { - variant: 'stepper', - showNavButtons: true, - }, -}; - -export const data = categorizationData; - -registerExamples([ - { - name: 'categorization-stepper-nav-buttons', - label: 'Categorization (Stepper - Nav Buttons)', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/categorization-stepper.ts b/packages/examples/src/examples/categorization-stepper.ts deleted file mode 100644 index 8fcb7c152f..0000000000 --- a/packages/examples/src/examples/categorization-stepper.ts +++ /dev/null @@ -1,51 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; -import { - data as categorizationData, - schema as categorizationSchema, - uischema as categorizationUiSchema, -} from './categorization'; - -export const schema = categorizationSchema; - -export const uischema = { - ...categorizationUiSchema, - options: { - variant: 'stepper', - }, -}; - -export const data = categorizationData; - -registerExamples([ - { - name: 'categorizationstepper', - label: 'Categorization (Stepper)', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/categorization.ts b/packages/examples/src/examples/categorization.ts deleted file mode 100644 index 63a83e5215..0000000000 --- a/packages/examples/src/examples/categorization.ts +++ /dev/null @@ -1,315 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { Translator } from '@jsonforms/core'; -import get from 'lodash/get'; -import { registerExamples } from '../register'; - -export const schema = { - type: 'object', - properties: { - firstName: { - type: 'string', - minLength: 3, - description: 'Please enter your first name', - }, - secondName: { - type: 'string', - minLength: 3, - description: 'Please enter your second name', - }, - vegetarian: { - type: 'boolean', - }, - birthDate: { - type: 'string', - format: 'date', - description: 'Please enter your birth date.', - }, - nationality: { - type: 'string', - enum: ['DE', 'IT', 'JP', 'US', 'RU', 'Other'], - }, - provideAddress: { - type: 'boolean', - }, - address: { - type: 'object', - properties: { - street: { - type: 'string', - }, - streetNumber: { - type: 'string', - }, - city: { - type: 'string', - }, - postalCode: { - type: 'string', - maxLength: 5, - }, - }, - }, - vegetarianOptions: { - type: 'object', - properties: { - vegan: { - type: 'boolean', - }, - favoriteVegetable: { - type: 'string', - enum: ['Tomato', 'Potato', 'Salad', 'Aubergine', 'Cucumber', 'Other'], - }, - otherFavoriteVegetable: { - type: 'string', - }, - }, - }, - }, -}; - -export const uischema = { - type: 'Categorization', - elements: [ - { - type: 'Category', - label: 'categoryLabelKey', - elements: [ - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/firstName', - }, - { - type: 'Control', - scope: '#/properties/secondName', - }, - ], - }, - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/birthDate', - }, - { - type: 'Control', - scope: '#/properties/nationality', - }, - ], - }, - { - type: 'Control', - scope: '#/properties/provideAddress', - }, - { - type: 'Control', - scope: '#/properties/vegetarian', - }, - ], - }, - { - type: 'Category', - i18n: 'address', - elements: [ - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/address/properties/street', - }, - { - type: 'Control', - scope: '#/properties/address/properties/streetNumber', - }, - ], - }, - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/address/properties/city', - }, - { - type: 'Control', - scope: '#/properties/address/properties/postalCode', - }, - ], - }, - ], - rule: { - effect: 'SHOW', - condition: { - scope: '#/properties/provideAddress', - schema: { const: true }, - }, - }, - }, - { - type: 'Category', - label: 'Additional', - elements: [ - { - type: 'Control', - scope: '#/properties/vegetarianOptions/properties/vegan', - }, - { - type: 'Control', - scope: '#/properties/vegetarianOptions/properties/favoriteVegetable', - }, - { - type: 'Control', - scope: - '#/properties/vegetarianOptions/properties/otherFavoriteVegetable', - rule: { - effect: 'SHOW', - condition: { - scope: - '#/properties/vegetarianOptions/properties/favoriteVegetable', - schema: { const: 'Other' }, - }, - }, - }, - ], - rule: { - effect: 'SHOW', - condition: { - scope: '#/properties/vegetarian', - schema: { const: true }, - }, - }, - }, - ], -}; - -export const data = { - provideAddress: true, - vegetarian: false, -}; - -const schema_1713 = { - type: 'object', - properties: { - experiments: { - type: 'array', - items: { - type: 'object', - properties: { - ID: { - type: 'string', - }, - }, - additionalProperties: false, - additionalItems: false, - }, - }, - }, - required: ['experiments'], -}; -const uischema_1713 = { - type: 'Categorization', - elements: [ - { - type: 'Category', - label: 'Experiments', - elements: [ - { - type: 'ListWithDetail', - scope: '#/properties/experiments', - options: { - labelRef: '#/items/properties/ID', - detail: { - type: 'VerticalLayout', - elements: [ - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/ID', - }, - ], - }, - { - type: 'Categorization', - elements: [ - { - type: 'Category', - label: 'Sequential', - elements: [ - { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/ID', - }, - ], - }, - ], - }, - ], - }, - ], - }, - }, - }, - ], - }, - ], -}; - -export const translations = { - categoryLabelKey: 'Basic', - address: { - label: 'Address', - }, -}; -export const translate: Translator = (key: string, defaultMessage: string) => { - return get(translations, key) ?? defaultMessage; -}; - -registerExamples([ - { - name: 'categorization', - label: 'Categorization', - data, - schema, - uischema, - i18n: { locale: 'en', translate: translate }, - }, - { - name: 'categorization_1713', - label: 'Categorization - Issue 1713', - data, - schema: schema_1713, - uischema: uischema_1713, - }, -]); diff --git a/packages/examples/src/examples/conditional-schema-compositions.ts b/packages/examples/src/examples/conditional-schema-compositions.ts deleted file mode 100644 index 6c96209123..0000000000 --- a/packages/examples/src/examples/conditional-schema-compositions.ts +++ /dev/null @@ -1,118 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - type: 'object', - properties: { - name: { - type: 'string', - minLength: 1, - description: "The task's name", - }, - recurrence: { - type: 'string', - enum: ['Never', 'Daily', 'Weekly', 'Monthly'], - }, - }, - anyOf: [ - { - if: { - properties: { - recurrence: { - const: 'Never', - }, - }, - }, - then: { - properties: { - lastname: { - type: 'string', - }, - age: { - type: 'number', - }, - }, - }, - }, - ], -}; - -export const uischema = { - type: 'HorizontalLayout', - elements: [ - { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/name', - }, - { - type: 'Control', - scope: '#/properties/recurrence', - }, - { - type: 'Control', - scope: '#/anyOf/0/then/properties/lastname', - rule: { - effect: 'SHOW', - condition: { - scope: '#/properties/recurrence', - schema: { - const: 'Never', - }, - }, - }, - }, - { - type: 'Control', - scope: '#/properties/age', - rule: { - effect: 'SHOW', - condition: { - scope: '#/properties/recurrence', - schema: { - const: 'Never', - }, - }, - }, - }, - ], - }, - ], -}; - -const data = {}; - -registerExamples([ - { - name: 'conditional-schema-compositions', - label: 'Conditional Schema Compositions', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/config.ts b/packages/examples/src/examples/config.ts deleted file mode 100644 index 0255701563..0000000000 --- a/packages/examples/src/examples/config.ts +++ /dev/null @@ -1,91 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - type: 'object', - properties: { - postalCode: { - type: 'string', - description: 'A Postal Code', - maxLength: 5, - }, - recurrenceInterval: { - type: 'integer', - description: 'A recurrence interval', - }, - }, - required: ['postalCode'], -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/postalCode', - label: 'Postal Code', - }, - { - type: 'Control', - scope: '#/properties/recurrenceInterval', - label: 'Recurrence Interval', - }, - ], - }, - ], -}; - -export const data = { - postalCode: '12345', -}; - -const config = { - restrict: true, - trim: true, - showUnfocusedDescription: true, - hideRequiredAsterisk: true, -}; - -registerExamples([ - { - name: 'configDefault', - label: 'Configuration (Default)', - data, - schema, - uischema: uischema, - }, - { - name: 'configCustom', - label: 'Configuration (Custom)', - data, - schema, - uischema, - config, - }, -]); diff --git a/packages/examples/src/examples/control-options.ts b/packages/examples/src/examples/control-options.ts deleted file mode 100644 index aec6f2f1ad..0000000000 --- a/packages/examples/src/examples/control-options.ts +++ /dev/null @@ -1,254 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2021 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - type: 'object', - properties: { - string: { - type: 'string', - }, - boolean: { - type: 'boolean', - description: 'Boolean description as a tooltip', - }, - number: { - type: 'number', - }, - integer: { - type: 'integer', - }, - date: { - type: 'string', - format: 'date', - }, - time: { - type: 'string', - format: 'time', - }, - dateTime: { - type: 'string', - format: 'date-time', - }, - enum: { - type: 'string', - enum: ['One', 'Two', 'Three'], - }, - }, -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/string', - }, - { - type: 'Control', - scope: '#/properties/boolean', - }, - { - type: 'Control', - scope: '#/properties/number', - }, - { - type: 'Control', - scope: '#/properties/integer', - }, - { - type: 'Control', - scope: '#/properties/date', - }, - { - type: 'Control', - scope: '#/properties/time', - }, - { - type: 'Control', - scope: '#/properties/dateTime', - }, - { - type: 'Control', - scope: '#/properties/enum', - }, - ], -}; - -export const data = { - string: 'This is a string', - boolean: true, - number: 50.5, - integer: 50, - date: '2020-06-25', - time: '23:08:00', - dateTime: '2020-06-25T23:08:42+02:00', - enum: 'Two', -}; - -export const extendedSchema = { - type: 'object', - properties: { - multilineString: { - type: 'string', - description: 'Multiline Example', - }, - slider: { - type: 'number', - minimum: 1, - maximum: 5, - default: 2, - description: 'Slider Example', - }, - trimText: { - type: 'string', - description: - 'Trim indicates whether the control shall grab the full width available', - }, - restrictText: { - type: 'string', - maxLength: 5, - description: - 'Restricts the input length to the set value (in this case: 5)', - }, - unfocusedDescription: { - type: 'string', - description: - 'This description is shown even when the control is not focused', - }, - hideRequiredAsterisk: { - type: 'string', - description: 'Hides the "*" symbol, when the field is required', - }, - toggle: { - type: 'boolean', - description: 'The "toggle" option renders boolean values as a toggle.', - }, - }, - required: ['hideRequiredAsterisk', 'restrictText'], -}; - -export const extendedUischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/multilineString', - options: { - multi: true, - }, - }, - { - type: 'Control', - scope: '#/properties/slider', - options: { - slider: true, - }, - }, - { - type: 'Control', - scope: '#/properties/trimText', - options: { - trim: true, - }, - }, - { - type: 'Control', - scope: '#/properties/restrictText', - options: { - restrict: true, - }, - }, - { - type: 'Control', - scope: '#/properties/unfocusedDescription', - options: { - showUnfocusedDescription: true, - }, - }, - { - type: 'Control', - scope: '#/properties/hideRequiredAsterisk', - options: { - hideRequiredAsterisk: true, - }, - }, - { - type: 'Control', - scope: '#/properties/toggle', - label: 'Boolean as Toggle', - options: { - toggle: true, - }, - }, - ], -}; - -export const extendedData = { - multilineString: 'Multi-\nline\nexample', - slider: 4, - trimText: 'abcdefg', - restrictText: 'abcde', - toggle: false, -}; - -const combinedSchema = { - ...extendedSchema, - properties: { - ...schema.properties, - ...extendedSchema.properties, - }, -}; - -const combinedUiSchema = { - type: 'Categorization', - elements: [ - { - type: 'Category', - label: 'Normal controls', - elements: [uischema], - }, - { - type: 'Category', - label: 'Configured controls', - elements: [extendedUischema], - }, - ], -}; - -const combinedData = { - ...data, - ...extendedData, -}; - -registerExamples([ - { - name: 'control-options', - label: 'Control Options', - data: combinedData, - schema: combinedSchema, - uischema: combinedUiSchema, - }, -]); diff --git a/packages/examples/src/examples/dates.ts b/packages/examples/src/examples/dates.ts deleted file mode 100644 index 37b8430e01..0000000000 --- a/packages/examples/src/examples/dates.ts +++ /dev/null @@ -1,149 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - type: 'object', - properties: { - schemaBased: { - type: 'object', - properties: { - date: { - type: 'string', - format: 'date', - description: 'schema-based date picker', - }, - time: { - type: 'string', - format: 'time', - description: 'schema-based time picker', - }, - datetime: { - type: 'string', - format: 'date-time', - description: 'schema-based datetime picker', - }, - }, - }, - uiSchemaBased: { - type: 'object', - properties: { - date: { - type: 'string', - description: 'does not allow to select days', - }, - time: { - type: 'string', - description: '24 hour format', - }, - datetime: { - type: 'string', - description: 'uischema-based datetime picker', - }, - }, - }, - }, -}; -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/schemaBased/properties/date', - }, - { - type: 'Control', - scope: '#/properties/schemaBased/properties/time', - }, - { - type: 'Control', - scope: '#/properties/schemaBased/properties/datetime', - }, - ], - }, - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/uiSchemaBased/properties/date', - label: 'Year Month Picker', - options: { - format: 'date', - clearLabel: 'Clear it!', - cancelLabel: 'Abort', - okLabel: 'Do it', - views: ['year', 'month'], - dateFormat: 'YYYY.MM', - dateSaveFormat: 'YYYY-MM', - }, - }, - { - type: 'Control', - scope: '#/properties/uiSchemaBased/properties/time', - options: { - format: 'time', - ampm: true, - }, - }, - { - type: 'Control', - scope: '#/properties/uiSchemaBased/properties/datetime', - options: { - format: 'date-time', - dateTimeFormat: 'DD-MM-YY hh:mm:a', - dateTimeSaveFormat: 'YYYY/MM/DD h:mm a', - ampm: true, - }, - }, - ], - }, - ], -}; - -export const data = { - schemaBased: { - date: new Date().toISOString().substr(0, 10), - time: '13:37:00', - datetime: new Date().toISOString(), - }, - uiSchemaBased: { - date: '2024-01', - time: '13:37:00', - datetime: '1999/12/11 10:05 am', - }, -}; -registerExamples([ - { - name: 'dates', - label: 'Dates', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/default.ts b/packages/examples/src/examples/default.ts deleted file mode 100644 index a9a53816fe..0000000000 --- a/packages/examples/src/examples/default.ts +++ /dev/null @@ -1,118 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - type: 'object', - properties: { - name: { - type: 'string', - default: 'foo', - }, - name_noDefault: { - type: 'string', - }, - description: { - type: 'string', - default: 'bar', - }, - done: { - type: 'boolean', - default: false, - }, - rating: { - type: 'integer', - default: 5, - }, - cost: { - type: 'number', - default: 5.5, - }, - dueDate: { - type: 'string', - format: 'date', - default: '2019-04-01', - }, - }, - required: ['name', 'name_noDefault'], -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/name', - }, - { - type: 'Control', - scope: '#/properties/name_noDefault', - }, - { - type: 'Control', - label: false, - scope: '#/properties/done', - }, - { - type: 'Control', - scope: '#/properties/description', - options: { - multi: true, - }, - }, - { - type: 'Control', - scope: '#/properties/rating', - }, - { - type: 'Control', - scope: '#/properties/cost', - }, - { - type: 'Control', - scope: '#/properties/dueDate', - }, - ], -}; - -export const data = { - name: 'Send email to Adrian', - name_noDefault: 'Send email to Adrian', - description: 'Confirm if you have passed the subject\nHereby ...', - done: true, - rating: 1, - cost: 3.14, - dueDate: '2019-05-01', -}; - -registerExamples([ - { - name: 'default', - label: 'Default', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/enum-multi-with-label-and-desc.ts b/packages/examples/src/examples/enum-multi-with-label-and-desc.ts deleted file mode 100644 index f874175458..0000000000 --- a/packages/examples/src/examples/enum-multi-with-label-and-desc.ts +++ /dev/null @@ -1,86 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2020 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - type: 'object', - properties: { - oneOfMultiEnum: { - type: 'array', - uniqueItems: true, - description: 'Description', - items: { - oneOf: [ - { const: 'foo', title: 'My Foo' }, - { const: 'bar', title: 'My Bar' }, - { const: 'foobar', title: 'My FooBar' }, - ], - }, - }, - multiEnum: { - type: 'array', - uniqueItems: true, - description: 'Description', - items: { - type: 'string', - enum: ['foo', 'bar', 'foobar'], - }, - }, - }, -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/oneOfMultiEnum', - label: 'Form Label', - options: { - showUnfocusedDescription: true, - }, - }, - { - type: 'Control', - scope: '#/properties/multiEnum', - label: 'Form Label', - options: { - showUnfocusedDescription: true, - }, - }, - ], -}; - -export const data = { oneOfMultiEnum: ['foo'], multiEnum: ['bar'] }; - -registerExamples([ - { - name: 'multi-enum-with-label-and-desc', - label: 'Enum - Multi selection with label and desc', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/enum-multi.ts b/packages/examples/src/examples/enum-multi.ts deleted file mode 100644 index 5a7b235b4e..0000000000 --- a/packages/examples/src/examples/enum-multi.ts +++ /dev/null @@ -1,76 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2020 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - type: 'object', - properties: { - oneOfMultiEnum: { - type: 'array', - uniqueItems: true, - items: { - oneOf: [ - { const: 'foo', title: 'My Foo' }, - { const: 'bar', title: 'My Bar' }, - { const: 'foobar', title: 'My FooBar' }, - ], - }, - }, - multiEnum: { - type: 'array', - uniqueItems: true, - items: { - type: 'string', - enum: ['foo', 'bar', 'foobar'], - }, - }, - }, -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/oneOfMultiEnum', - }, - { - type: 'Control', - scope: '#/properties/multiEnum', - }, - ], -}; - -export const data = { oneOfMultiEnum: ['foo'], multiEnum: ['bar'] }; - -registerExamples([ - { - name: 'multi-enum', - label: 'Enum - Multi selection', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/enum.ts b/packages/examples/src/examples/enum.ts deleted file mode 100644 index 564a14d11c..0000000000 --- a/packages/examples/src/examples/enum.ts +++ /dev/null @@ -1,161 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2020 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - type: 'object', - properties: { - plainEnum: { - type: 'string', - enum: ['foo', 'bar'], - }, - plainEnumSet: { - type: 'string', - enum: ['foo', 'bar'], - }, - enumWithError: { - type: 'string', - enum: ['foo', 'bar'], - }, - oneOfEnum: { - type: 'string', - oneOf: [ - { const: 'foo', title: 'Foo' }, - { const: 'bar', title: 'Bar' }, - { const: 'foobar', title: 'FooBar' }, - ], - }, - oneOfEnumSet: { - type: 'string', - oneOf: [ - { const: 'foo', title: 'Foo' }, - { const: 'bar', title: 'Bar' }, - { const: 'foobar', title: 'FooBar' }, - ], - }, - oneOfEnumWithError: { - type: 'string', - oneOf: [ - { const: 'foo', title: 'Foo' }, - { const: 'bar', title: 'Bar' }, - { const: 'foobar', title: 'FooBar' }, - ], - }, - constEnum: { - const: 'Const Value', - }, - }, -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Group', - label: 'Enums', - elements: [ - { - type: 'Control', - scope: '#/properties/constEnum', - }, - { - type: 'Control', - scope: '#/properties/plainEnum', - }, - { - type: 'Control', - scope: '#/properties/plainEnumSet', - }, - { - type: 'Control', - scope: '#/properties/plainEnum', - options: { - autocomplete: false, - }, - }, - { - type: 'Control', - scope: '#/properties/plainEnumSet', - options: { - autocomplete: false, - }, - }, - { - type: 'Control', - scope: '#/properties/enumWithError', - }, - ], - }, - { - type: 'Group', - label: 'One of Enums', - elements: [ - { - type: 'Control', - scope: '#/properties/oneOfEnum', - }, - { - type: 'Control', - scope: '#/properties/oneOfEnumSet', - }, - { - type: 'Control', - scope: '#/properties/oneOfEnum', - options: { - autocomplete: false, - }, - }, - { - type: 'Control', - scope: '#/properties/oneOfEnumSet', - options: { - autocomplete: false, - }, - }, - { - type: 'Control', - scope: '#/properties/oneOfEnumWithError', - }, - ], - }, - ], -}; - -export const data = { - plainEnumSet: 'foo', - enumWithError: 'bogus', - oneOfEnumSet: 'bar', - oneOfEnumWithError: 'bogus', -}; - -registerExamples([ - { - name: 'enum', - label: 'Enums', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/enumInArray.ts b/packages/examples/src/examples/enumInArray.ts deleted file mode 100644 index 5b4ca1f978..0000000000 --- a/packages/examples/src/examples/enumInArray.ts +++ /dev/null @@ -1,44 +0,0 @@ -import { registerExamples } from '../register'; - -export const schema = { - type: 'array', - items: { - type: 'object', - properties: { - plainEnum: { - type: 'string', - enum: ['foo', 'bar'], - }, - oneOfEnum: { - type: 'string', - oneOf: [ - { const: 'foo', title: 'Foo' }, - { const: 'bar', title: 'Bar' }, - { const: 'foobar', title: 'FooBar' }, - ], - }, - }, - }, -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#', - }, - ], -}; - -export const data: any[] = []; - -registerExamples([ - { - name: 'enumInArray', - label: 'Array containing enums', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/generate-dynamic.ts b/packages/examples/src/examples/generate-dynamic.ts deleted file mode 100644 index ada9b3f3c6..0000000000 --- a/packages/examples/src/examples/generate-dynamic.ts +++ /dev/null @@ -1,49 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { StateProps } from '../example'; -import { registerExamples } from '../register'; - -export const actions = [ - { - label: 'Change data', - apply: (props: StateProps) => { - return { - ...props, - data: { id: 'aaa' }, - }; - }, - }, -]; - -registerExamples([ - { - name: 'dynamic', - label: 'Generate both schemas - Dynamic data change', - schema: undefined, - uischema: undefined, - data: { name: 'bla' }, - actions, - }, -]); diff --git a/packages/examples/src/examples/generate.ts b/packages/examples/src/examples/generate.ts deleted file mode 100644 index db61cac72d..0000000000 --- a/packages/examples/src/examples/generate.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; -import { data as personData } from './person'; -import { JsonSchema, UISchemaElement } from '@jsonforms/core'; - -export const schema: JsonSchema = undefined; -export const uischema: UISchemaElement = undefined; -export const data = personData; - -registerExamples([ - { - name: 'generate', - label: 'Generate both Schemas', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/generateUI.ts b/packages/examples/src/examples/generateUI.ts deleted file mode 100644 index cd437aa9d7..0000000000 --- a/packages/examples/src/examples/generateUI.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; -import { data as personData, personCoreSchema } from './person'; -import { UISchemaElement } from '@jsonforms/core'; - -export const schema = personCoreSchema; -export const uischema: UISchemaElement = undefined; -export const data = personData; - -registerExamples([ - { - name: 'generate-ui', - label: 'Generate UI Schema', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/huge.ts b/packages/examples/src/examples/huge.ts deleted file mode 100644 index 0a9ff86ac3..0000000000 --- a/packages/examples/src/examples/huge.ts +++ /dev/null @@ -1,1412 +0,0 @@ -import { registerExamples } from '../register'; -const schema = { - $schema: 'http://json-schema.org/schema#', - - definitions: { - confidenceTypes: { - type: 'string', - enum: [ - 'http://gedcomx.org/High', - 'http://gedcomx.org/Medium', - 'http://gedcomx.org/Low', - ], - }, - genderTypes: { - type: 'string', - enum: [ - 'http://gedcomx.org/Male', - 'http://gedcomx.org/Female', - 'http://gedcomx.org/Unknown', - 'http://gedcomx.org/Intersex', - ], - }, - nameTypes: { - type: 'string', - enum: [ - 'http://gedcomx.org/BirthName', - 'http://gedcomx.org/MarriedName', - 'http://gedcomx.org/AlsoKnownAs', - 'http://gedcomx.org/Nickname', - 'http://gedcomx.org/AdoptiveName', - 'http://gedcomx.org/FormalName', - 'http://gedcomx.org/ReligiousName', - ], - }, - namePartTypes: { - enum: [ - 'http://gedcomx.org/Prefix', - 'http://gedcomx.org/Suffix', - 'http://gedcomx.org/Given', - 'http://gedcomx.org/Surname', - ], - }, - personFactTypes: { - type: 'string', - enum: [ - 'http://gedcomx.org/Adoption', - 'http://gedcomx.org/AdultChristening', - 'http://gedcomx.org/Amnesty', - 'http://gedcomx.org/Apprenticeship', - 'http://gedcomx.org/Arrest', - 'http://gedcomx.org/Baptism', - 'http://gedcomx.org/BarMitzvah', - 'http://gedcomx.org/BatMitzvah', - 'http://gedcomx.org/Birth', - 'http://gedcomx.org/Blessing', - 'http://gedcomx.org/Burial', - 'http://gedcomx.org/Caste', - 'http://gedcomx.org/Census', - 'http://gedcomx.org/Christening', - 'http://gedcomx.org/Circumcision', - 'http://gedcomx.org/Clan', - 'http://gedcomx.org/Confirmation', - 'http://gedcomx.org/Cremation', - 'http://gedcomx.org/Death', - 'http://gedcomx.org/Education', - 'http://gedcomx.org/Emigration', - 'http://gedcomx.org/Ethnicity', - 'http://gedcomx.org/Excommunication', - 'http://gedcomx.org/FirstCommunion', - 'http://gedcomx.org/Funeral', - 'http://gedcomx.org/GenderChange', - 'http://gedcomx.org/Heimat', - 'http://gedcomx.org/Immigration', - 'http://gedcomx.org/Imprisonment', - 'http://gedcomx.org/LandTransaction', - 'http://gedcomx.org/Language', - 'http://gedcomx.org/Living', - 'http://gedcomx.org/MaritalStatus', - 'http://gedcomx.org/Medical', - 'http://gedcomx.org/MilitaryAward', - 'http://gedcomx.org/MilitaryDischarge', - 'http://gedcomx.org/MilitaryDraftRegistration', - 'http://gedcomx.org/MilitaryInduction', - 'http://gedcomx.org/MilitaryService', - 'http://gedcomx.org/Mission', - 'http://gedcomx.org/MoveTo', - 'http://gedcomx.org/MoveFrom', - 'http://gedcomx.org/MultipleBirth', - 'http://gedcomx.org/NationalId', - 'http://gedcomx.org/Nationality', - 'http://gedcomx.org/Naturalization', - 'http://gedcomx.org/NumberOfChildren', - 'http://gedcomx.org/NumberOfMarriages', - 'http://gedcomx.org/Occupation', - 'http://gedcomx.org/Ordination', - 'http://gedcomx.org/Pardon', - 'http://gedcomx.org/PhysicalDescription', - 'http://gedcomx.org/Probate', - 'http://gedcomx.org/Property', - 'http://gedcomx.org/Religion', - 'http://gedcomx.org/Residence', - 'http://gedcomx.org/Retirement', - 'http://gedcomx.org/Stillbirth', - 'http://gedcomx.org/Will', - 'http://gedcomx.org/Visit', - 'http://gedcomx.org/Yahrzeit', - ], - }, - uri: { - type: 'string', - }, - localeTag: { - type: 'string', - // pattern: - // "^(((((?'language'[a-z]{2,3})(-(?'extlang'[a-z]{3})){0,3})|(?'language'[a-z]{4})|(?'language'[a-z]{5,8}))(-(?'script'[a-z]{4}))?(-(?'region'[a-z]{2}|[0-9]{3}))?(-(?'variant'[a-z0-9]{5,8}|[0-9][a-z0-9]{3}))*(-(?'extensions'[a-z0-9-[x]](-[a-z0-9]{2,8})+))*(-x(- (?'privateuse'[a-z0-9]{1,8}))+)?)|(x(- (?'privateuse'[a-z0-9]{1,8}))+)|(?'grandfathered'(?'irregular'en-GB-oed |i-ami |i-bnn |i-default |i-enochian |i-hak |i-klingon |i-lux |i-mingo |i-navajo |i-pwn |i-tao |i-tay |i-tsu |sgn-BE-FR |sgn-BE-NL |sgn-CH-DE)|(?'regular'art-lojban |cel-gaulish |no-bok |no-nyn |zh-guoyu |zh-hakka |zh-min |zh-min-nan |zh-xiang)))$" - }, - resourceReference: { - type: 'object', - properties: { - resource: { $ref: '#/definitions/uri' }, - }, - }, - identifier: { - type: 'object', - }, - attribution: { - title: 'Attribution', - properties: { - contributor: { - $ref: '#/definitions/resourceReference', - description: - 'Reference to the agent to whom the attributed data is attributed.', - }, - modified: { - type: 'number', - description: 'Timestamp of when the attributed data was contributed.', - }, - changeMessage: { - type: 'string', - description: - 'A statement of why the attributed data is being provided by the contributor.', - }, - creator: { - $ref: '#/definitions/resourceReference', - description: - 'Reference to the agent that created the attributed data. The creator MAY be different from the contributor if changes were made to the attributed data.', - }, - created: { - type: 'number', - description: 'Timestamp of when the attributed data was contributed.', - }, - }, - }, - note: { - title: 'Note', - properties: { - lang: { - $ref: '#/definitions/localeTag', - description: 'The locale identifier for the note.', - }, - subject: { - type: 'string', - description: 'A subject or title for the note.', - }, - text: { type: 'string', description: 'The text of the note.' }, - attribution: { - $ref: '#/definitions/attribution', - description: 'The attribution of this note.', - }, - }, - required: ['text'], - }, - textValue: { - type: 'object', - properties: { - lang: { - $ref: '#/definitions/localeTag', - description: 'The locale identifier for the value of the text.', - }, - value: { type: 'string', description: 'The text value.' }, - }, - required: ['value'], - }, - sourceCitation: { - type: 'object', - properties: { - lang: { - $ref: '#/definitions/localeTag', - description: 'The locale identifier for the bibliographic metadata.', - }, - value: { - type: 'string', - description: - 'The bibliographic metadata rendered as a full citation.', - }, - }, - required: ['value'], - }, - sourceReference: { - title: 'SourceReference', - properties: { - description: { - $ref: '#/definitions/uri', - description: 'Reference to a description of the target source.', - }, - descriptionId: { - type: 'string', - description: 'The id of the target source.', - }, - attribution: { - $ref: '#/definitions/attribution', - description: 'The attribution of this source reference.', - }, - qualifiers: { - items: { $ref: '#/definitions/sourceReferenceQualifier' }, - description: - 'Qualifiers for the reference, used to identify specific fragments of the source that are being referenced.', - }, - }, - required: ['description'], - }, - sourceReferenceQualifier: { - properties: { - name: { - anyOf: [ - { $ref: '#/definitions/sourceReferenceQualifierNames' }, - { $ref: '#/definitions/uri' }, - ], - }, - value: { type: 'string' }, - }, - required: ['name'], - }, - sourceReferenceQualifierNames: { - enum: [ - 'http://gedcomx.org/CharacterRegion', - 'http://gedcomx.org/RectangleRegion', - 'http://gedcomx.org/TimeRegion', - ], - }, - evidenceReference: { - title: 'EvidenceReference', - properties: { - resource: { $ref: '#/definitions/uri' }, //subject - attribution: { $ref: '#/definitions/attribution' }, - }, - required: ['resource'], - }, - onlineAccount: { - type: 'object', - properties: { - serviceHomepage: { $ref: '#/definitions/resourceReference' }, - accountName: { type: 'string' }, - }, - required: ['serviceHomepage', 'accountName'], - }, - address: { - type: 'object', - properties: { - value: { type: 'string' }, - city: { type: 'string' }, - country: { type: 'string' }, - postalCode: { type: 'string' }, - stateOrProvince: { type: 'string' }, - street: { type: 'string' }, - street2: { type: 'string' }, - street3: { type: 'string' }, - street4: { type: 'string' }, - street5: { type: 'string' }, - street6: { type: 'string' }, - }, - }, - conclusion: { - type: 'object', - title: 'Conclusion', - properties: { - id: { - type: 'string', - description: 'An identifier for the conclusion data.', - }, - lang: { - $ref: '#/definitions/localeTag', - description: 'The locale identifier for the conclusion.', - }, - sources: { - items: { $ref: '#/definitions/sourceReference' }, - description: - 'The list of references to the sources of related to this conclusion.', - }, - analysis: { - $ref: '#/definitions/resourceReference', - description: - 'Reference to a document containing analysis supporting this conclusion.', - }, - notes: { - items: { $ref: '#/definitions/note' }, - description: 'A list of notes about this conclusion.', - }, - confidence: { - anyOf: [ - { $ref: '#/definitions/uri' }, - { $ref: '#/definitions/confidenceTypes' }, - ], - description: 'Reference to a confidence level for this conclusion.', - }, - attribution: { - $ref: '#/definitions/attribution', - description: 'The attribution of this conclusion.', - }, - }, - }, - subject: { - title: 'Subject', - allOf: [ - { $ref: '#/definitions/conclusion' }, - { - properties: { - extracted: { - type: 'boolean', - description: - 'Whether this subject is to be constrained as an extracted conclusion.', - }, - evidence: { - items: { $ref: '#/definitions/evidenceReference' }, - description: - 'References to other subjects that support this subject.', - }, - media: { - items: { $ref: '#/definitions/sourceReference' }, - description: - 'References to multimedia resources for this subject, such as photos or videos, intended to provide additional context or illustration for the subject and not considered evidence supporting the identity of the subject or its supporting conclusions.', - }, - identifiers: { - $ref: '#/definitions/identifier', - description: 'A list of identifiers for the subject.', - }, - }, - }, - ], - }, - gender: { - allOf: [ - { $ref: '#/definitions/conclusion' }, - { - properties: { - type: { - anyOf: [ - { $ref: '#/definitions/uri' }, - { $ref: '#/definitions/genderTypes' }, - ], - description: 'Enumerated value identifying the gender.', - }, - }, - required: ['type'], - }, - ], - }, - date: { - type: 'object', - properties: { - original: { - type: 'string', - description: - 'The original value of the date as supplied by the contributor.', - }, - formal: { - type: 'string', - pattern: - '^(A?[\\+-]\\d{4}(-\\d{2})?(-\\d{2})?T?(\\d{2})?(:\\d{2})?(:\\d{2})?([\\+-]\\d{2}(:\\d{2})?|Z)?)|(P(\\d{0,4}Y)?(\\d{0,4}M)?(\\d{0,4}D)?(T(\\d{0,4}H)?(\\d{0,4}M)?(\\d{0,4}S)?)?)$', - description: - 'The standardized formal value of the date, formatted according to the GEDCOM X Date Format specification.', - }, - }, - }, - name: { - title: 'Name', - allOf: [ - { $ref: '#/definitions/conclusion' }, - { - properties: { - type: { - anyOf: [ - { $ref: '#/definitions/uri' }, - { $ref: '#/definitions/nameTypes' }, - ], - description: 'Enumerated value identifying the name type.', - }, - date: { - $ref: '#/definitions/date', - description: 'The date of applicability of the name.', - }, - nameForms: { - items: { - $ref: '#/definitions/nameForm', - }, - description: - "The name form(s) that best express this name, usually representations considered proper and well formed in the person's native, historical cultural context.", - }, - }, - required: ['nameForms'], - }, - ], - }, - namePart: { - title: 'NamePart', - description: - 'The NamePart data type is used to model a portion of a full name, including the terms that make up that portion. Some name parts may have qualifiers to provide additional semantic meaning to the name part (e.g., "given name" or "surname").', - properties: { - type: { - anyOf: [ - { $ref: '#/definitions/uri' }, - { $ref: '#/definitions/namePartTypes' }, - ], - description: - 'Enumerated value identifying the type of the name part.', - }, - value: { - type: 'string', - description: 'The term(s) from the name that make up this name part.', - }, - qualifiers: { - items: { $ref: '#/definitions/namePartQualifier' }, - description: - 'Qualifiers to add additional semantic meaning to the name part.', - }, - }, - required: ['value'], - }, - namePartQualifier: { - properties: { - name: { - anyOf: [ - { $ref: '#/definitions/namePartQualifierNames' }, - { $ref: '#/definitions/uri' }, - ], - }, - value: { type: 'string' }, - }, - required: ['name'], - }, - namePartQualifierNames: { - enum: [ - 'http://gedcomx.org/Title', //A designation for honorifics (e.g. Dr., Rev., His Majesty, Haji), ranks (e.g. Colonel, General, Knight, Esquire), positions (e.g. Count, Chief, Father, King) or other titles (e.g., PhD, MD). Name part qualifiers of type Title SHOULD NOT provide a value. - 'http://gedcomx.org/Primary', //A designation for the name of most prominent in importance among the names of that type (e.g., the primary given name). Name part qualifiers of type Primary SHOULD NOT provide a value. - 'http://gedcomx.org/Secondary', //A designation for a name that is not primary in its importance among the names of that type (e.g., a secondary given name). Name part qualifiers of type Secondary SHOULD NOT provide a value. - 'http://gedcomx.org/Middle', //A designation useful for cultures that designate a middle name that is distinct from a given name and a surname. Name part qualifiers of type Middle SHOULD NOT provide a value. - 'http://gedcomx.org/Familiar', //A designation for one's familiar name. Name part qualifiers of type Familiar SHOULD NOT provide a value. - 'http://gedcomx.org/Religious', //A designation for a name given for religious purposes. Name part qualifiers of type Religious SHOULD NOT provide a value. - 'http://gedcomx.org/Family', //A name that associates a person with a group, such as a clan, tribe, or patriarchal hierarchy. Name part qualifiers of type Family SHOULD NOT provide a value. - 'http://gedcomx.org/Maiden', //A designation given by women to their original surname after they adopt a new surname upon marriage. Name part qualifiers of type Maiden SHOULD NOT provide a value. - 'http://gedcomx.org/Patronymic', //A name derived from a father or paternal ancestor. Name part qualifiers of type Patronymic SHOULD NOT provide a value. - 'http://gedcomx.org/Matronymic', //A name derived from a mother or maternal ancestor. Name part qualifiers of type Matronymic SHOULD NOT provide a value. - 'http://gedcomx.org/Geographic', //A name derived from associated geography. Name part qualifiers of type Geographic SHOULD NOT provide a value. - 'http://gedcomx.org/Occupational', //A name derived from one's occupation. Name part qualifiers of type Occupational SHOULD NOT provide a value. - 'http://gedcomx.org/Characteristic', //A name derived from a characteristic. Name part qualifiers of type Characteristic SHOULD NOT provide a value. - 'http://gedcomx.org/Postnom', //A name mandated by law for populations from Congo Free State / Belgian Congo / Congo / Democratic Republic of Congo (formerly Zaire). Name part qualifiers of type Postnom SHOULD NOT provide a value. - 'http://gedcomx.org/Particle', //A grammatical designation for articles (a, the, dem, las, el, etc.), prepositions (of, from, aus, zu, op, etc.), initials, annotations (e.g. twin, wife of, infant, unknown), comparators (e.g. Junior, Senior, younger, little), ordinals (e.g. III, eighth), descendancy words (e.g. ben, ibn, bat, bin, bint, bar), and conjunctions (e.g. and, or, nee, ou, y, o, ne, &). Name part qualifiers of type Particle SHOULD NOT provide a value. - 'http://gedcomx.org/RootName', //The "root" of a name part as distinguished from prefixes or suffixes. For example, the root of the Polish name "Wilkówna" is "Wilk". A RootName qualifier MUST provide a value property. - ], - }, - nameForm: { - title: 'NameForm', - description: `The NameForm data type defines a representation of a name (a "name form") within a given cultural context, such as a given language and script. - As names are captured (both in records or in applications), the terms in the name are sometimes classified by type. For example, a certificate of death might prompt for "given name(s)" and "surname". The parts list can be used to represent the terms in the name that have been classified. - If both a full rendering of the name and a list of parts are provided, it NOT REQUIRED that every term in the fully rendered name appear in the list of parts. - Name parts in the parts list SHOULD be ordered in the natural order they would be used in the applicable cultural context. - If a full rendering of the name is not provided (i.e., the name has only been expressed in parts), a full rendering of the name MAY be derived (sans punctuation) by concatenating, in order, each name part value in the list of parts, separating each part with the name part separator appropriate for the applicable cultural context.`, - properties: { - lang: { - $ref: '#/definitions/localeTag', - description: 'The locale identifier for the name form.', - }, - fullText: { - type: 'string', - description: - 'A full rendering of the name (or as much of the name as is known).', - }, - parts: { - items: { - $ref: '#/definitions/namePart', - }, - description: 'Any identified name parts from the name.', - }, - }, - }, - fact: { - title: 'PersonFact', - allOf: [ - { $ref: '#/definitions/conclusion' }, - { - properties: { - type: { - anyOf: [ - { $ref: '#/definitions/uri' }, - { $ref: '#/definitions/personFactTypes' }, - ], - description: 'Enumerated value identifying the type of the fact.', - }, - date: { - $ref: '#/definitions/date', - description: 'The date of applicability of the fact.', - }, - place: { - $ref: '#/definitions/placeReference', - description: 'A reference to the place applicable to this fact.', - }, - value: { type: 'string', description: 'The value of the fact.' }, - qualifiers: { - items: { $ref: '#/definitions/factQualifier' }, - description: - 'Qualifiers to add additional details about the fact.', - }, - }, - required: ['type'], - }, - ], - }, - factQualifier: { - properties: { - name: { - anyOf: [ - { $ref: '#/definitions/factQualifierNames' }, - { $ref: '#/definitions/uri' }, - ], - }, - value: { type: 'string' }, - }, - required: ['name'], - }, - factQualifierNames: { - enum: [ - 'http://gedcomx.org/Age', - 'http://gedcomx.org/Cause', - 'http://gedcomx.org/Religion', - 'http://gedcomx.org/Transport', - 'http://gedcomx.org/NonConsensual', - ], - }, - eventRole: { - allOf: [ - { $ref: '#/definitions/conclusion' }, - { - properties: { - person: { - $ref: '#/definitions/resourceReference', - description: 'Reference to the event participant.', - }, - type: { - anyOf: [ - { $ref: '#/definitions/uri' }, - { $ref: '#/definitions/eventRoleTypes' }, - ], - description: - "Enumerated value identifying the participant's role.", - }, - details: { - type: 'string', - description: - 'Details about the role of participant in the event.', - }, - }, - required: ['person'], - }, - ], - }, - eventRoleTypes: { - enum: [ - 'http://gedcomx.org/Principal', - 'http://gedcomx.org/Participant', - 'http://gedcomx.org/Official', - 'http://gedcomx.org/Witness', - ], - }, - placeReference: { - type: 'object', - properties: { - original: { - type: 'string', - description: - 'The original place name text as supplied by the contributor.', - }, - description: { - $ref: '#/definitions/uri', - description: 'A reference to a description of this place.', - }, - }, - }, - coverage: { - properties: { - spatial: { - $ref: '#/definitions/placeReference', - description: 'The spatial (i.e., geographic) coverage.', - }, - temporal: { - $ref: '#/definitions/date', - description: 'The temporal coverage.', - }, - }, - }, - groupRole: { - allOf: [ - { $ref: '#/definitions/conclusion' }, - { - properties: { - person: { - $ref: '#/definitions/resourceReference', - description: 'Reference to the group participant.', - }, - type: { - $ref: '#/definitions/uri', - description: - "Enumerated value identifying the participant's role.", - }, - date: { - $ref: '#/definitions/date', - description: 'The date of applicability of the role.', - }, - details: { - type: 'string', - description: - 'Details about the role of he participant in the group.', - }, - }, - required: ['person'], - }, - ], - }, - person: { - title: 'Person', - allOf: [ - { $ref: '#/definitions/subject' }, - { - properties: { - private: { - type: 'boolean', - description: - 'Whether this instance of Person has been designated for limited distribution or display.', - }, - gender: { - $ref: '#/definitions/gender', - description: 'The sex of the person as assigned at birth.', - }, - names: { - items: { $ref: '#/definitions/name' }, - description: 'The names of the person.', - }, - facts: { - items: { $ref: '#/definitions/fact' }, - description: 'The facts of the person.', - }, - }, - }, - ], - }, - relationship: { - allOf: [ - { $ref: '#/definitions/subject' }, - { - properties: { - type: { - anyOf: [ - { $ref: '#/definitions/relationshipType' }, - { $ref: '#/definitions/uri' }, - ], - description: - 'Enumerated value identifying the type of the relationship.', - }, - person1: { - $ref: '#/definitions/resourceReference', - description: 'Reference to the first person in the relationship.', - }, - person2: { - $ref: '#/definitions/resourceReference', - description: - 'Reference to the second person in the relationship.', - }, - facts: { - items: { $ref: '#/definitions/fact' }, - description: 'The facts about the relationship.', - }, - }, - required: ['person1', 'person2'], - }, - ], - }, - relationshipType: { - enum: [ - 'http://gedcomx.org/Couple', // A relationship of a pair of persons. - 'http://gedcomx.org/ParentChild', // A relationship from a parent to a child. - 'http://gedcomx.org/EnslavedBy', // A relationship from an enslaved person to the enslaver or slaveholder of the person. - ], - }, - sourceDescription: { - title: 'SourceDescription', - properties: { - id: { - type: 'string', - description: - 'An identifier for the data structure holding the source description data.', - }, - resourceType: { - anyOf: [ - { $ref: '#/definitions/resourceTypes' }, - { $ref: '#/definitions/uri' }, - ], - description: - 'Enumerated value identifying the type of resource being described.', - }, - citations: { - items: { $ref: '#/definitions/sourceCitation' }, - description: 'The citation(s) for this source.', - }, - mediaType: { - type: 'string', - description: - 'A hint about the media type of the resource being described.', - }, - about: { - $ref: '#/definitions/uri', - description: - 'A uniform resource identifier (URI) for the resource being described.', - }, - mediator: { - $ref: '#/definitions/resourceReference', - description: - 'A reference to the entity that mediates access to the described source.', - }, - publisher: { - $ref: '#/definitions/resourceReference', - description: - 'A reference to the entity responsible for making the described source available.', - }, - sources: { - items: { $ref: '#/definitions/sourceReference' }, - description: - 'A list of references to any sources from which this source is derived.', - }, - analysis: { - $ref: '#/definitions/resourceReference', - description: - 'A reference to a document containing analysis about this source.', - }, - componentOf: { - $ref: '#/definitions/sourceReference', - description: - 'A reference to the source that contains this source, i.e. its parent context. Used when the description of a source is not complete without the description of its parent (or containing) source.', - }, - titles: { - items: { $ref: '#/definitions/textValue' }, - description: 'The display name(s) for this source.', - }, - notes: { - items: { $ref: '#/definitions/note' }, - description: 'A list of notes about a source.', - }, - attribution: { - $ref: '#/definitions/attribution', - description: 'The attribution of this source description.', - }, - rights: { - items: { $ref: '#/definitions/resourceReference' }, - description: 'The rights for this resource.', - }, - coverage: { - $ref: '#/definitions/coverage', - description: 'The coverage of the resource.', - }, - descriptions: { - items: { $ref: '#/definitions/textValue' }, - description: 'Human-readable descriptions of this source.', - }, - identifiers: { - items: { $ref: '#/definitions/identifier' }, - description: - 'A list of identifiers for the resource being described.', - }, - created: { - type: 'number', - description: - 'Timestamp of when the resource being described was created.', - }, - modified: { - type: 'number', - description: - 'Timestamp of when the resource being described was modified.', - }, - repository: { - $ref: '#/definitions/resourceReference', - description: - 'A reference to the repository that contains the described resource.', - }, - }, - required: ['citations'], - }, - resourceTypes: { - enum: [ - 'http://gedcomx.org/Collection', //A collection of genealogical resources. A collection may contain physical artifacts (such as a collection of books in a library), records (such as the 1940 U.S. Census), or digital artifacts (such as an online genealogical application). - 'http://gedcomx.org/PhysicalArtifact', //A physical artifact, such as a book. - 'http://gedcomx.org/DigitalArtifact', //A digital artifact, such as a digital image of a birth certificate or other record. - 'http://gedcomx.org/Record', //A historical record, such as a census record or a vital record. - ], - }, - agent: { - title: 'Agent', - properties: { - id: { type: 'string' }, - identifiers: { - type: 'array', - items: { $ref: '#/definitions/identifier' }, - }, - names: { - type: 'array', - items: { $ref: '#/definitions/textValue' }, - }, - homepage: { $ref: '#/definitions/resourceReference' }, - openid: { $ref: '#/definitions/resourceReference' }, - accounts: { - type: 'array', - items: { $ref: '#/definitions/onlineAccount' }, - }, - emails: { - type: 'array', - items: { $ref: '#/definitions/resourceReference' }, - }, - phones: { - type: 'array', - items: { $ref: '#/definitions/resourceReference' }, - }, - addresses: { - type: 'array', - items: { $ref: '#/definitions/address' }, - }, - person: { - $ref: '#/definitions/resourceReference', - }, - }, - }, - event: { - allOf: [ - { $ref: '#/definitions/subject' }, - { - properties: { - type: { - anyOf: [ - { $ref: '#/definitions/eventTypes' }, - { $ref: '#/definitions/uri' }, - ], - }, - date: { $ref: '#/definitions/date' }, - place: { $ref: '#/definitions/placeReference' }, - roles: { - type: 'array', - items: { $ref: '#/definitions/eventRole' }, - }, - }, - }, - ], - }, - eventTypes: { - enum: [ - 'http://gedcomx.org/Adoption', //An adoption event. - 'http://gedcomx.org/AdultChristening', //An adult christening event. - 'http://gedcomx.org/Annulment', //An annulment event of a marriage. - 'http://gedcomx.org/Baptism', //A baptism event. - 'http://gedcomx.org/BarMitzvah', //A bar mitzvah event. - 'http://gedcomx.org/BatMitzvah', //A bat mitzvah event. - 'http://gedcomx.org/Birth', //A birth event. - 'http://gedcomx.org/Blessing', //A an official blessing event, such as at the hands of a clergy member or at another religious rite. - 'http://gedcomx.org/Burial', //A burial event. - 'http://gedcomx.org/Census', //A census event. - 'http://gedcomx.org/Christening', //A christening event at birth. Note: use AdultChristening for a christening event as an adult. - 'http://gedcomx.org/Circumcision', //A circumcision event. - 'http://gedcomx.org/Confirmation', //A confirmation event (or other rite of initiation) in a church or religion. - 'http://gedcomx.org/Cremation', //A cremation event after death. - 'http://gedcomx.org/Death', //A death event. - 'http://gedcomx.org/Divorce', //A divorce event. - 'http://gedcomx.org/DivorceFiling', //A divorce filing event. - 'http://gedcomx.org/Education', //A education or an educational achievement event (e.g. diploma, graduation, scholarship, etc.). - 'http://gedcomx.org/Engagement', //An engagement to be married event. - 'http://gedcomx.org/Emigration', //An emigration event. - 'http://gedcomx.org/Excommunication', //An excommunication event from a church. - 'http://gedcomx.org/FirstCommunion', //A first communion event. - 'http://gedcomx.org/Funeral', //A funeral event. - 'http://gedcomx.org/Immigration', //An immigration event. - 'http://gedcomx.org/LandTransaction', //A land transaction event. - 'http://gedcomx.org/Marriage', //A marriage event. - 'http://gedcomx.org/MilitaryAward', //A military award event. - 'http://gedcomx.org/MilitaryDischarge', //A military discharge event. - 'http://gedcomx.org/Mission', //A mission event. - 'http://gedcomx.org/MoveFrom', //An event of a move (i.e. change of residence) from a location. - 'http://gedcomx.org/MoveTo', //An event of a move (i.e. change of residence) to a location. - 'http://gedcomx.org/Naturalization', //A naturalization event (i.e. acquisition of citizenship and nationality). - 'http://gedcomx.org/Ordination', //An ordination event. - 'http://gedcomx.org/Retirement', //A retirement event. - ], - }, - document: { - title: 'Document', - allOf: [ - { $ref: '#/definitions/conclusion' }, - { - properties: { - type: { - anyOf: [ - { $ref: '#/definitions/documentTypes' }, - { $ref: '#/definitions/uri' }, - ], - }, - extracted: { type: 'boolean' }, - textType: { type: 'string' }, - text: { type: 'string' }, - attribution: { $ref: '#/definitions/attribution' }, - }, - required: ['text'], - }, - ], - }, - documentTypes: { - enum: [ - 'http://gedcomx.org/Abstract', //The document is an abstract of a record or document. - 'http://gedcomx.org/Transcription', //The document is a transcription of a record or document. - 'http://gedcomx.org/Translation', //The document is a translation of a record or document. - 'http://gedcomx.org/Analysis', //The document is an analysis done by a researcher; a genealogical proof statement is an example of one kind of analysis document. - ], - }, - placeDescription: { - title: 'PlaceDescription', - allOf: [ - { $ref: '#/definitions/subject' }, - { - properties: { - names: { - items: { $ref: '#/definitions/textValue' }, - }, - type: { $ref: '#/definitions/uri' }, - place: { $ref: '#/definitions/resourceReference' }, - jurisdiction: { - $ref: '#/definitions/resourceReference', - }, - latitude: { type: 'number' }, - longitude: { type: 'number' }, - temporalDescription: { $ref: '#/definitions/date' }, - spatialDescription: { $ref: '#/definitions/resourceReference' }, - }, - required: ['names'], - }, - ], - }, - group: { - allOf: [ - { $ref: '#/definitions/subject' }, - { - properties: { - names: { - type: 'array', - items: { $ref: '#/definitions/textValue' }, - }, - date: { $ref: '#/definitions/date' }, - place: { $ref: '#/definitions/resourceReference' }, - roles: { - type: 'array', - items: { $ref: '#/definitions/groupRole' }, - }, - }, - required: ['names'], - }, - ], - }, - }, - - type: 'object', - properties: { - persons: { - type: 'array', - items: { $ref: '#/definitions/person' }, - }, - relationships: { - type: 'array', - items: { $ref: '#/definitions/relationship' }, - }, - sourceDescriptions: { - type: 'array', - items: { $ref: '#/definitions/sourceDescription' }, - }, - agents: { - type: 'array', - items: { $ref: '#/definitions/agent' }, - }, - events: { - type: 'array', - items: { $ref: '#/definitions/event' }, - }, - documents: { - type: 'array', - items: { $ref: '#/definitions/document' }, - }, - places: { - type: 'array', - items: { $ref: '#/definitions/placeDescription' }, - }, - groups: { - type: 'array', - items: { $ref: '#/definitions/group' }, - }, - description: { $ref: '#/definitions/uri' }, - id: { type: 'string' }, - lang: { $ref: '#/definitions/localeTag' }, - attribution: { $ref: '#/definitions/attribution' }, - }, -}; - -const data: any = { - attribution: { - contributor: { - resource: '#A-1', - }, - modified: 1398405600000, - }, - persons: [ - { - names: [ - { - nameForms: [ - { - fullText: 'Samuel Ham', - }, - ], - }, - ], - gender: { - type: 'http://gedcomx.org/Male', - }, - facts: [ - { - type: 'http://gedcomx.org/Residence', - date: { - original: '3 November 1828', - formal: '+1828-11-03', - }, - place: { - original: 'parish of Honiton, Devon, England', - }, - }, - ], - extracted: true, - sources: [ - { - description: '#S-2', - }, - ], - id: 'P-1', - }, - { - names: [ - { - nameForms: [ - { - fullText: 'Elizabeth Spiller', - }, - ], - }, - ], - gender: { - type: 'http://gedcomx.org/Female', - }, - facts: [ - { - type: 'http://gedcomx.org/Residence', - date: { - original: '3 November 1828', - formal: '+1828-11-03', - }, - place: { - original: 'parish of Wilton, Somerset, England', - }, - }, - ], - extracted: true, - sources: [ - { - description: '#S-2', - }, - ], - id: 'P-2', - }, - { - names: [ - { - nameForms: [ - { - fullText: 'Jno. Pain', - }, - ], - }, - ], - extracted: true, - sources: [ - { - description: '#S-2', - }, - ], - id: 'P-3', - }, - { - names: [ - { - nameForms: [ - { - fullText: 'R.G. Halls', - }, - ], - }, - ], - extracted: true, - sources: [ - { - description: '#S-2', - }, - ], - id: 'P-4', - }, - { - names: [ - { - nameForms: [ - { - fullText: 'Peggy Hammet', - }, - ], - }, - ], - extracted: true, - sources: [ - { - description: '#S-2', - }, - ], - id: 'P-5', - }, - { - names: [ - { - nameForms: [ - { - fullText: 'David Smith Stone', - }, - ], - }, - ], - extracted: true, - sources: [ - { - description: '#S-2', - }, - ], - id: 'P-6', - }, - { - evidence: [ - { - resource: '#P-1', - }, - ], - analysis: { - resource: '#D-2', - }, - id: 'C-1', - }, - ], - relationships: [ - { - type: 'http://gedcomx.org/Couple', - extracted: true, - facts: [ - { - type: 'http://gedcomx.org/Marriage', - date: { - original: '3 November 1828', - formal: '+1828-11-03', - }, - place: { - original: 'Wilton St George, Wilton, Somerset, England', - }, - }, - ], - person1: { - resource: '#P-1', - }, - person2: { - resource: '#P-2', - }, - }, - ], - sourceDescriptions: [ - { - description: [ - { - value: - 'Marriage entry for Samuel Ham and Elizabeth in a copy of the registers of the baptisms, marriages, and burials at the church of St. George in the parish of Wilton : adjoining Taunton, in the county of Somerset from A.D. 1558 to A.D. 1837.', - }, - ], - resourceType: 'http://gedcomx.org/PhysicalArtifact', - citations: [ - { - value: - 'Joseph Houghton Spencer, transcriber, Church of England, Parish Church of Wilton (Somerset). A copy of the registers of the baptisms, marriages, and burials at the church of St. George in the parish of Wilton : adjoining Taunton, in the county of Somerset from A.D. 1558 to A.D. 1837; Marriage entry for Samuel Ham and Elizabeth Spiller (3 November 1828), (Taunton: Barnicott, 1890), p. 224, No. 86.', - }, - ], - titles: [ - { - value: - 'Marriage entry for Samuel Ham and Elizabeth Spiller, Parish Register, Wilton, Somerset, England', - }, - ], - repository: { - resource: '#A-2', - }, - id: 'S-1', - }, - { - description: [ - { - value: - 'Transcription of marriage entry for Samuel Ham and Elizabeth in a copy of the registers of the baptisms, marriages, and burials at the church of St. George in the parish of Wilton : adjoining Taunton, in the county of Somerset from A.D. 1558 to A.D. 1837.', - }, - ], - sources: [ - { - description: '#S-1', - }, - ], - resourceType: 'http://gedcomx.org/DigitalArtifact', - citations: [ - { - value: - 'Joseph Houghton Spencer, transcriber, Church of England, Parish Church of Wilton (Somerset). A copy of the registers of the baptisms, marriages, and burials at the church of St. George in the parish of Wilton : adjoining Taunton, in the county of Somerset from A.D. 1558 to A.D. 1837; Marriage entry for Samuel Ham and Elizabeth Spiller (3 November 1828), (Taunton: Barnicott, 1890), p. 224, No. 86.', - }, - ], - about: '#D-1', - titles: [ - { - value: - 'Transcription of marriage entry for Samuel Ham and Elizabeth Spiller, Parish Register, Wilton, Somerset, England', - }, - ], - id: 'S-2', - }, - ], - agents: [ - { - names: [ - { - value: 'Jane Doe', - }, - ], - emails: [ - { - resource: 'mailto:example@example.org', - }, - ], - id: 'A-1', - }, - { - names: [ - { - value: 'Family History Library', - }, - ], - addresses: [ - { - city: 'Salt Lake City', - stateOrProvince: 'Utah', - }, - ], - id: 'A-2', - }, - ], - events: [ - { - type: 'http://gedcomx.org/Marriage', - date: { - original: '3 November 1828', - formal: '+1828-11-03', - }, - place: { - original: 'Wilton St George, Wilton, Somerset, England', - }, - roles: [ - { - type: 'http://gedcomx.org/Principal', - person: { - resource: '#P-1', - }, - }, - { - type: 'http://gedcomx.org/Principal', - person: { - resource: '#P-2', - }, - }, - { - type: 'http://gedcomx.org/Witness', - person: { - resource: '#P-3', - }, - }, - { - type: 'http://gedcomx.org/Witness', - person: { - resource: '#P-4', - }, - }, - { - type: 'http://gedcomx.org/Witness', - person: { - resource: '#P-5', - }, - }, - { - type: 'http://gedcomx.org/Official', - person: { - resource: '#P-6', - }, - }, - ], - extracted: true, - id: 'E-1', - }, - ], - documents: [ - { - type: 'http://gedcomx.org/Transcription', - text: 'Samuel Ham of the parish of Honiton and Elizabeth Spiller\nwere married this 3rd day of November 1828 by David Smith\nStone, Pl Curate,\nIn the Presence of\nJno Pain.\nR.G. Halls. Peggy Hammet.\nNo. 86.', - sources: [ - { - description: '#S-1', - }, - ], - lang: 'en', - id: 'D-1', - }, - { - text: '...Jane Doe`s analysis document...', - id: 'D-2', - }, - ], -}; - -export const uischema: any = { - type: 'Categorization', - elements: [ - { - type: 'Category', - label: 'Persons', - elements: [{ type: 'ListWithDetail', scope: '#/properties/persons' }], - }, - { - type: 'Category', - label: 'Relationships', - elements: [ - { type: 'ListWithDetail', scope: '#/properties/relationships' }, - ], - }, - { - type: 'Category', - label: 'SourceDescriptions', - elements: [ - { type: 'ListWithDetail', scope: '#/properties/sourceDescriptions' }, - ], - }, - { - type: 'Category', - label: 'Agents', - elements: [{ type: 'ListWithDetail', scope: '#/properties/agents' }], - }, - { - type: 'Category', - label: 'Events', - elements: [{ type: 'ListWithDetail', scope: '#/properties/events' }], - }, - { - type: 'Category', - label: 'Documents', - elements: [{ type: 'ListWithDetail', scope: '#/properties/documents' }], - }, - { - type: 'Category', - label: 'Places', - elements: [{ type: 'ListWithDetail', scope: '#/properties/places' }], - }, - { - type: 'Category', - label: 'Generic', - elements: [ - { type: 'Control', scope: '#/properties/description' }, - { type: 'Control', scope: '#/properties/lang' }, - { type: 'Control', scope: '#/properties/attribution' }, - { type: 'Control', scope: '#/properties/id' }, - ], - }, - ], -}; - -registerExamples([ - { - name: 'huge', - label: 'Huge Test', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/i18n.ts b/packages/examples/src/examples/i18n.ts deleted file mode 100644 index 43f7ccf474..0000000000 --- a/packages/examples/src/examples/i18n.ts +++ /dev/null @@ -1,118 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; -import { personCoreSchema } from './person'; -import { - JsonFormsCore, - updateErrors, - AnyAction, - Dispatch, - Translator, -} from '@jsonforms/core'; -import get from 'lodash/get'; -import localize from 'ajv-i18n/localize'; - -export const onChange = - (dispatch: Dispatch) => - (extensionState: any) => - ({ errors }: Pick) => { - if (!extensionState) { - return; - } - const localiseFunc = - localize[extensionState.locale.split('-')[0] as keyof typeof localize]; - localiseFunc(errors); - dispatch(updateErrors(errors)); - }; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Group', - i18n: 'basicInfoGroup', - elements: [ - { - type: 'Control', - scope: '#/properties/name', - }, - { - type: 'Control', - scope: '#/properties/birthDate', - }, - ], - }, - { - type: 'Label', - text: 'additionalInformationLabel', - }, - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/nationality', - }, - { - type: 'Control', - scope: '#/properties/vegetarian', - }, - ], - }, - ], -}; - -export const data = { - vegetarian: false, - birthDate: '1985-06-02', - personalData: { - age: 34, - }, - postalCode: '12345', -}; - -export const translations = { - basicInfoGroup: { - label: 'Basic Information', - }, - additionalInformationLabel: 'Additional Information', -}; -export const translate: Translator = (key: string, defaultMessage: string) => { - return get(translations, key) ?? defaultMessage; -}; - -registerExamples([ - { - name: 'i18n', - label: 'Person (i18n)', - data, - schema: personCoreSchema, - uischema, - i18n: { - translate: translate, - locale: 'en', - }, - }, -]); diff --git a/packages/examples/src/examples/if_then_else.ts b/packages/examples/src/examples/if_then_else.ts deleted file mode 100644 index da9c525a96..0000000000 --- a/packages/examples/src/examples/if_then_else.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; -import { UISchemaElement } from '@jsonforms/core'; - -export const schema = { - type: 'object', - properties: { - b: { type: 'boolean' }, - c: { type: 'string', minLength: 1 }, - }, - if: { properties: { b: { enum: [false] } } }, - then: { required: ['c'] }, -}; - -export const uischema: UISchemaElement = undefined; - -export const data = {}; - -registerExamples([ - { - name: 'ifthenelse', - label: 'If Then Else', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/json-editor.ts b/packages/examples/src/examples/json-editor.ts deleted file mode 100644 index 6366e5ae76..0000000000 --- a/packages/examples/src/examples/json-editor.ts +++ /dev/null @@ -1,50 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - type: ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'], - additionalProperties: true, - items: { - type: ['array', 'boolean', 'integer', 'null', 'number', 'object', 'string'], - }, -}; - -export const uischema = { - type: 'Control', - scope: '#/', -}; - -const data = undefined as any; - -registerExamples([ - { - name: 'json-editor', - label: 'JSON Editor', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/jsonschema.ts b/packages/examples/src/examples/jsonschema.ts deleted file mode 100644 index 79c37c6d2f..0000000000 --- a/packages/examples/src/examples/jsonschema.ts +++ /dev/null @@ -1,592 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - type JsonFormsUISchemaRegistryEntry, - type JsonSchema, - NOT_APPLICABLE, - type UISchemaElement, -} from '@jsonforms/core'; -import { registerExamples } from '../register'; -import { StateProps } from '../example'; - -export const schema = { - $schema: 'http://json-schema.org/draft-07/schema#', - $id: 'http://json-schema.org/draft-07/schema#', - title: 'Core schema meta-schema', - definitions: { - schemaArray: { - type: 'array', - minItems: 1, - items: { $ref: '#' }, - }, - nonNegativeInteger: { - type: 'integer', - minimum: 0, - }, - nonNegativeIntegerDefault0: { - allOf: [{ $ref: '#/definitions/nonNegativeInteger' }, { default: 0 }], - }, - simpleTypes: { - type: 'string', - enum: [ - 'array', - 'boolean', - 'integer', - 'null', - 'number', - 'object', - 'string', - ], - }, - stringArray: { - type: 'array', - items: { type: 'string' }, - uniqueItems: true, - default: [] as any, - }, - }, - type: ['object', 'boolean'], - properties: { - $id: { - type: 'string', - format: 'uri-reference', - }, - $schema: { - type: 'string', - format: 'uri', - }, - $ref: { - type: 'string', - format: 'uri-reference', - }, - $comment: { - type: 'string', - }, - title: { - type: 'string', - }, - description: { - type: 'string', - }, - default: true, - readOnly: { - type: 'boolean', - default: false, - }, - writeOnly: { - type: 'boolean', - default: false, - }, - examples: { - type: 'array', - items: true, - }, - multipleOf: { - type: 'number', - exclusiveMinimum: 0, - }, - maximum: { - type: 'number', - }, - exclusiveMaximum: { - type: 'number', - }, - minimum: { - type: 'number', - }, - exclusiveMinimum: { - type: 'number', - }, - maxLength: { $ref: '#/definitions/nonNegativeInteger' }, - minLength: { $ref: '#/definitions/nonNegativeIntegerDefault0' }, - pattern: { - type: 'string', - format: 'regex', - }, - additionalItems: { $ref: '#' }, - items: { - anyOf: [{ $ref: '#' }, { $ref: '#/definitions/schemaArray' }], - default: true, - }, - maxItems: { $ref: '#/definitions/nonNegativeInteger' }, - minItems: { $ref: '#/definitions/nonNegativeIntegerDefault0' }, - uniqueItems: { - type: 'boolean', - default: false, - }, - contains: { $ref: '#' }, - maxProperties: { $ref: '#/definitions/nonNegativeInteger' }, - minProperties: { $ref: '#/definitions/nonNegativeIntegerDefault0' }, - required: { $ref: '#/definitions/stringArray' }, - additionalProperties: { $ref: '#' }, - definitions: { - type: 'object', - additionalProperties: { $ref: '#' }, - default: {}, - }, - properties: { - type: 'object', - additionalProperties: { $ref: '#' }, - default: {}, - }, - patternProperties: { - type: 'object', - additionalProperties: { $ref: '#' }, - propertyNames: { format: 'regex' }, - default: {}, - }, - dependencies: { - type: 'object', - additionalProperties: { - anyOf: [{ $ref: '#' }, { $ref: '#/definitions/stringArray' }], - }, - }, - propertyNames: { $ref: '#' }, - const: true, - enum: { - type: 'array', - items: true, - minItems: 1, - uniqueItems: true, - }, - type: { - anyOf: [ - { $ref: '#/definitions/simpleTypes' }, - { - type: 'array', - items: { $ref: '#/definitions/simpleTypes' }, - minItems: 1, - uniqueItems: true, - }, - ], - }, - format: { type: 'string' }, - contentMediaType: { type: 'string' }, - contentEncoding: { type: 'string' }, - if: { $ref: '#' }, - then: { $ref: '#' }, - else: { $ref: '#' }, - allOf: { $ref: '#/definitions/schemaArray' }, - anyOf: { $ref: '#/definitions/schemaArray' }, - oneOf: { $ref: '#/definitions/schemaArray' }, - not: { $ref: '#' }, - }, - default: true, -}; - -export const uischema: UISchemaElement = undefined as any as UISchemaElement; - -export const data = { - type: 'object', - properties: { - name: { - type: 'string', - minLength: 3, - description: 'Please enter your name', - }, - vegetarian: { - type: 'boolean', - }, - birthDate: { - type: 'string', - format: 'date', - }, - nationality: { - type: 'string', - enum: ['DE', 'IT', 'JP', 'US', 'RU', 'Other'], - }, - personalData: { - type: 'object', - properties: { - age: { - type: 'integer', - description: 'Please enter your age.', - }, - height: { - type: 'number', - }, - drivingSkill: { - type: 'number', - maximum: 10, - minimum: 1, - default: 7, - }, - }, - required: ['age', 'height'], - }, - occupation: { - type: 'string', - }, - postalCode: { - type: 'string', - maxLength: 5, - }, - }, - required: ['occupation', 'nationality'], -}; - -const shouldContainTypeCondition = (type: string[]) => { - return { - scope: '#/properties/type', - schema: { - anyOf: [ - { - type: 'string', - enum: type, - }, - { - type: 'array', - items: { - type: 'string', - }, - contains: { - type: 'string', - enum: type, - }, - }, - ], - }, - }; -}; - -const typeIsSpecifiedCondition = { - scope: '#/properties/type', - schema: { - oneOf: [ - { - type: 'string', - enum: [ - 'string', - 'number', - 'integer', - 'array', - 'object', - 'boolean', - 'null', - ], - }, - { - type: 'array', - items: { - type: 'string', - enum: [ - 'string', - 'number', - 'integer', - 'array', - 'object', - 'boolean', - 'null', - ], - }, - minItems: 1, - uniqueItems: true, - }, - ], - }, -}; - -const properties = { - type: 'Control', - scope: '#/properties/properties', -}; - -const required = { - type: 'Control', - scope: '#/properties/required', -}; - -const constraintsLayout = { - type: 'Categorization', - elements: [ - { - type: 'Category', - label: 'Number', - rule: { - effect: 'SHOW', - condition: shouldContainTypeCondition(['number', 'integer']), - }, - elements: [ - { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/multipleOf', - }, - { - type: 'Control', - scope: '#/properties/maximum', - }, - { - type: 'Control', - scope: '#/properties/exclusiveMaximum', - }, - { - type: 'Control', - scope: '#/properties/minimum', - }, - { - type: 'Control', - scope: '#/properties/exclusiveMinimum', - }, - ], - }, - ], - }, - { - type: 'Category', - label: 'String', - rule: { - effect: 'SHOW', - condition: shouldContainTypeCondition(['string']), - }, - elements: [ - { - type: 'Control', - scope: '#/properties/maxLength', - }, - { - type: 'Control', - scope: '#/properties/minLength', - }, - { - type: 'Control', - scope: '#/properties/pattern', - }, - ], - }, - { - type: 'Category', - label: 'Array', - rule: { - effect: 'SHOW', - condition: shouldContainTypeCondition(['array']), - }, - elements: [ - { - type: 'Control', - scope: '#/properties/minItems', - }, - { - type: 'Control', - scope: '#/properties/maxItems', - }, - { - type: 'Control', - scope: '#/properties/uniqueItems', - }, - ], - }, - { - type: 'Category', - label: 'Object', - rule: { - effect: 'SHOW', - condition: shouldContainTypeCondition(['object']), - }, - elements: [ - { - type: 'Control', - scope: '#/properties/minProperties', - }, - { - type: 'Control', - scope: '#/properties/maxProperties', - }, - ], - }, - ], -}; - -const controlLabel = ( - controlSchemaPath: string, - controlLabel: string, - controlSchemaType: string | undefined = undefined -) => { - return { - tester: (jsonSchema: JsonSchema, schemaPath: string, _path: string) => { - if ( - controlSchemaPath === schemaPath && - (controlSchemaType === undefined || - controlSchemaType === jsonSchema.type) - ) { - return 2; - } - return NOT_APPLICABLE; - }, - uischema: { - type: 'Control', - scope: '#', - label: controlLabel, - }, - }; -}; - -export const uischemas = [ - controlLabel('#/properties/minItems', 'Min Items', 'number'), - controlLabel('#/properties/maxItems', 'Max Items'), - { - tester: (jsonSchema: JsonSchema, schemaPath: string, path: string) => { - if ( - path === 'type' && - schemaPath === '#/properties/type' && - jsonSchema.type === 'array' - ) { - return 2; - } - return NOT_APPLICABLE; - }, - uischema: { - type: 'Control', - scope: '#', - }, - }, - { - tester: (jsonSchema: JsonSchema, _schemaPath: string, _path: string) => { - return 'http://json-schema.org/draft-07/schema#' === - (jsonSchema as any).$id && jsonSchema.type === 'object' - ? 2 - : NOT_APPLICABLE; - }, - uischema: { - type: 'Categorization', - elements: [ - { - type: 'Category', - label: 'Basic', - elements: [ - { - type: 'VerticalLayout', - elements: [ - { type: 'Control', scope: '#/properties/$id' }, - { type: 'Control', scope: '#/properties/$schema' }, - { type: 'Control', scope: '#/properties/title' }, - { type: 'Control', scope: '#/properties/description' }, - ], - }, - ], - }, - { - type: 'Category', - label: 'Structure', - elements: [ - { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/type', - options: { - 'label-0': 'Single Type', - 'label-1': 'Multiple Types', - }, - }, - { - type: 'Categorization', - rule: { - effect: 'SHOW', - condition: shouldContainTypeCondition(['object']), - }, - elements: [ - { - type: 'Category', - label: 'Properties', - elements: [properties], - }, - { - type: 'Category', - label: 'Required', - elements: [required], - }, - ], - }, - ], - }, - ], - }, - { - type: 'Category', - label: 'Constraints', - rule: { - effect: 'SHOW', - condition: typeIsSpecifiedCondition, - }, - elements: [constraintsLayout], - }, - ], - options: { - variant: 'stepper', - showNavButtons: true, - }, - }, - }, - { - tester: (jsonSchema: JsonSchema, _schemaPath: string, _path: string) => { - return 'http://json-schema.org/draft-07/schema#' === - (jsonSchema as any).$id && jsonSchema.type === 'boolean' - ? 2 - : NOT_APPLICABLE; - }, - uischema: { - type: 'VerticalLayout', - elements: [{ type: 'Control', scope: '#/' }], - }, - }, -]; - -const actions = [ - { - label: 'Register UISchema', - apply: (props: StateProps) => { - return { - ...props, - uischemas: uischemas, - }; - }, - }, - { - label: 'Unregister UISchema', - apply: (props: StateProps) => { - const uischemas: JsonFormsUISchemaRegistryEntry[] = - undefined as any as JsonFormsUISchemaRegistryEntry[]; - return { - ...props, - uischemas: uischemas, - }; - }, - }, -]; - -registerExamples([ - { - name: 'jsonschema', - label: 'JsonSchema', - data, - schema: schema as any as JsonSchema, - uischema, - actions, - }, -]); diff --git a/packages/examples/src/examples/layout.ts b/packages/examples/src/examples/layout.ts deleted file mode 100644 index 4f717cff28..0000000000 --- a/packages/examples/src/examples/layout.ts +++ /dev/null @@ -1,148 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; -import { data as personData, schema as personSchema } from './person'; - -export const schema = personSchema; - -export const uischemaVertical = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - label: 'Name', - scope: '#/properties/name', - }, - { - type: 'Control', - label: 'Birth Date', - scope: '#/properties/birthDate', - }, - ], -}; -export const uischemaHorizontal = { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - label: 'Name', - scope: '#/properties/name', - }, - { - type: 'Control', - label: 'Birth Date', - scope: '#/properties/birthDate', - }, - ], -}; -export const uischemaGroup = { - type: 'Group', - label: 'My Group', - elements: [ - { - type: 'Control', - label: 'Name', - scope: '#/properties/name', - }, - { - type: 'Control', - label: 'Birth Date', - scope: '#/properties/birthDate', - }, - ], -}; -export const uischemaComplex = { - type: 'Group', - label: 'My Group', - elements: [ - { - type: 'HorizontalLayout', - elements: [ - { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - label: 'Name', - scope: '#/properties/name', - }, - { - type: 'Control', - label: 'Birth Date', - scope: '#/properties/birthDate', - }, - ], - }, - { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - label: 'Name', - scope: '#/properties/name', - }, - { - type: 'Control', - label: 'Birth Date', - scope: '#/properties/birthDate', - }, - ], - }, - ], - }, - ], -}; -export const data = personData; - -registerExamples([ - { - name: 'layout-vertical', - label: 'Layout Vertical', - data, - schema, - uischema: uischemaVertical, - }, - { - name: 'layout-horizontal', - label: 'Layout Horizontal', - data, - schema, - uischema: uischemaHorizontal, - }, - { - name: 'layout-group', - label: 'Layout Group', - data, - schema, - uischema: uischemaGroup, - }, - { - name: 'layout-complex', - label: 'Layout Complex', - data, - schema, - uischema: uischemaComplex, - }, -]); diff --git a/packages/examples/src/examples/list-with-detail-primitives.ts b/packages/examples/src/examples/list-with-detail-primitives.ts deleted file mode 100644 index cad936d53b..0000000000 --- a/packages/examples/src/examples/list-with-detail-primitives.ts +++ /dev/null @@ -1,83 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2021 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const data = { - 'an-array-of-strings': ['foo', 'bar', 'foobar'], -}; -export const schema = { - type: 'object', - properties: { - 'an-array-of-strings': { - type: 'array', - items: { - type: 'string', - }, - }, - }, -}; -export const uischema = { - type: 'ListWithDetail', - scope: '#/properties/an-array-of-strings', -}; - -registerExamples([ - { - name: 'list-with-detail-primitive-string', - label: 'List With Detail primitive (string)', - data, - schema, - uischema, - }, -]); - -export const data_number = { - 'an-array-of-numbers': [1, 2, 3], -}; -export const schema_number = { - type: 'object', - properties: { - 'an-array-of-numbers': { - type: 'array', - items: { - type: 'number', - }, - }, - }, -}; -export const uischema_number = { - type: 'ListWithDetail', - scope: '#/properties/an-array-of-numbers', -}; - -registerExamples([ - { - name: 'list-with-detail-primitive-number', - label: 'List With Detail primitive (number)', - data: data_number, - schema: schema_number, - uischema: uischema_number, - }, -]); diff --git a/packages/examples/src/examples/list-with-detail-registered.ts b/packages/examples/src/examples/list-with-detail-registered.ts deleted file mode 100644 index 8cc6928ea8..0000000000 --- a/packages/examples/src/examples/list-with-detail-registered.ts +++ /dev/null @@ -1,105 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const data = { - warehouseitems: [ - { - name: 'Fantasy Book', - buyer: { - email: 'buyerA@info.org', - age: 18, - }, - status: 'warehouse', - }, - { - name: 'Boardgame', - buyer: { - email: 'buyerB@info.org', - age: 45, - }, - status: 'shipping', - }, - { - name: 'Energy Drink', - buyer: { - email: 'buyerC@info.org', - age: 90, - }, - status: 'delivered', - }, - ], -}; - -export const schema = { - definitions: { - warehouseitem: { - type: 'object', - properties: { - name: { type: 'string' }, - buyer: { - type: 'object', - properties: { - email: { type: 'string', format: 'email' }, - age: { type: 'number' }, - }, - }, - status: { - type: 'string', - enum: ['warehouse', 'shipping', 'delivered'], - }, - }, - required: ['name'], - }, - }, - type: 'object', - properties: { - warehouseitems: { - type: 'array', - items: { - $ref: '#/definitions/warehouseitem', - }, - }, - }, -}; - -export const uischema = { - type: 'ListWithDetail', - scope: '#/properties/warehouseitems', - options: { - labelRef: '#/items/properties/name', - // detail uischema is registered in example itself - }, -}; - -registerExamples([ - { - name: 'list-with-detail-registered', - label: 'List With Detail (Registered Detail UISchema)', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/list-with-detail.ts b/packages/examples/src/examples/list-with-detail.ts deleted file mode 100644 index a4c9415bbe..0000000000 --- a/packages/examples/src/examples/list-with-detail.ts +++ /dev/null @@ -1,305 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const data = { - orders: [ - { - customer: { - id: '471201', - name: 'Sirius Cybernetics Corporation', - department: 'Complaints Division', - }, - title: '42 killer robots', - ordered: true, - processId: '1890004498', - assignee: 'Philip J. Fry', - status: 'ordered', - startDate: '2018-06-01', - endDate: '2018-08-01', - }, - { - customer: { - id: '471202', - name: 'Very Big Corporation of America', - }, - title: '1000 gallons of MomCorp Oil', - processId: '1890004499', - assignee: 'Jen Barber', - startDate: '2018-07-01', - status: 'planned', - }, - ], -}; - -export const schema = { - definitions: { - order: { - type: 'object', - properties: { - customer: { - type: 'object', - properties: { - id: { type: 'string' }, - name: { type: 'string', format: 'email' }, - department: { type: 'string' }, - }, - }, - title: { - type: 'string', - minLength: 5, - title: 'Official Title', - }, - ordered: { type: 'boolean' }, - processId: { - type: 'number', - minimum: 0, - }, - assignee: { type: 'string' }, - startDate: { - type: 'string', - format: 'date', - }, - endDate: { - type: 'string', - format: 'date', - }, - status: { - type: 'string', - enum: ['unordered', 'planned', 'ordered'], - }, - }, - required: ['title'], - }, - }, - type: 'object', - properties: { - orders: { - type: 'array', - items: { - $ref: '#/definitions/order', - }, - }, - }, -}; - -export const uischema = { - type: 'ListWithDetail', - scope: '#/properties/orders', - options: { - labelRef: '#/items/properties/customer/properties/name', - detail: { - type: 'VerticalLayout', - elements: [ - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/title', - }, - { - type: 'Control', - scope: '#/properties/processId', - }, - ], - }, - { - type: 'Group', - label: 'Customer', - elements: [ - { - type: 'Control', - label: 'ID', - scope: '#/properties/customer/properties/id', - }, - { - type: 'Control', - label: 'Name', - scope: '#/properties/customer/properties/name', - }, - { - type: 'Control', - label: 'Department', - scope: '#/properties/customer/properties/department', - }, - ], - }, - { - type: 'VerticalLayout', - elements: [ - { - type: 'VerticalLayout', - elements: [ - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/ordered', - options: { - toggle: true, - }, - }, - { - type: 'Control', - scope: '#/properties/assignee', - }, - ], - }, - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/startDate', - }, - { - type: 'Control', - scope: '#/properties/endDate', - }, - ], - }, - { - type: 'Control', - scope: '#/properties/status', - }, - ], - }, - ], - }, - ], - }, - }, -}; - -export const uischemaNoLabelRef = { - type: 'ListWithDetail', - scope: '#/properties/orders', - options: { - detail: { - type: 'VerticalLayout', - elements: [ - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/title', - }, - { - type: 'Control', - scope: '#/properties/processId', - }, - ], - }, - { - type: 'Group', - label: 'Customer', - elements: [ - { - type: 'Control', - label: 'ID', - scope: '#/properties/customer/properties/id', - }, - { - type: 'Control', - label: 'Name', - scope: '#/properties/customer/properties/name', - }, - { - type: 'Control', - label: 'Department', - scope: '#/properties/customer/properties/department', - }, - ], - }, - { - type: 'VerticalLayout', - elements: [ - { - type: 'VerticalLayout', - elements: [ - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/ordered', - options: { - toggle: true, - }, - }, - { - type: 'Control', - scope: '#/properties/assignee', - }, - ], - }, - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/startDate', - }, - { - type: 'Control', - scope: '#/properties/endDate', - }, - ], - }, - { - type: 'Control', - scope: '#/properties/status', - }, - ], - }, - ], - }, - ], - }, - }, -}; - -registerExamples([ - { - name: 'list-with-detail', - label: 'List With Detail', - data, - schema, - uischema, - }, -]); - -registerExamples([ - { - name: 'list-with-detail-no-labelref', - label: 'List With Detail (No Label Ref)', - data, - schema, - uischema: uischemaNoLabelRef, - }, -]); diff --git a/packages/examples/src/examples/login.ts b/packages/examples/src/examples/login.ts deleted file mode 100644 index c9abf451f2..0000000000 --- a/packages/examples/src/examples/login.ts +++ /dev/null @@ -1,78 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - type: 'object', - properties: { - username: { - type: 'string', - description: 'Login Name', - }, - password: { - type: 'string', - format: 'password', - description: 'Login password', - }, - }, - required: ['username', 'password'], -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Label', - text: 'Login Information', - }, - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/username', - }, - { - type: 'Control', - scope: '#/properties/password', - }, - ], - }, - ], -}; - -const data = { - username: 'john.doe@email.com', -}; - -registerExamples([ - { - name: 'login', - label: 'Login Form', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/mixed-object.ts b/packages/examples/src/examples/mixed-object.ts deleted file mode 100644 index 8e41e79712..0000000000 --- a/packages/examples/src/examples/mixed-object.ts +++ /dev/null @@ -1,85 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - $schema: 'http://json-schema.org/draft-07/schema#', - title: 'Mixed Types Example', - type: 'object', - properties: { - mixedSimple: { - type: ['string', 'boolean', 'integer'], - description: 'This property can be a string, boolean, or integer.', - }, - nullableString: { - type: ['string', 'null'], - }, - mixed: { - type: [ - 'array', - 'boolean', - 'integer', - 'null', - 'number', - 'object', - 'string', - ], - }, - }, - required: ['mixedSimple'], -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/mixedSimple', - }, - { - type: 'Control', - scope: '#/properties/nullableString', - }, - { - type: 'Control', - scope: '#/properties/mixed', - }, - ], -}; - -const data = { - mixedSimple: 'String', - nullableString: null as any, -}; - -registerExamples([ - { - name: 'mixed-object', - label: 'Mixed Object', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/mixed.ts b/packages/examples/src/examples/mixed.ts deleted file mode 100644 index 1de6590a15..0000000000 --- a/packages/examples/src/examples/mixed.ts +++ /dev/null @@ -1,47 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - $schema: 'http://json-schema.org/draft-07/schema#', - type: ['string', 'boolean', 'integer', 'null'], -}; - -export const uischema = { - type: 'Control', - scope: '#/', -}; - -const data = undefined as any; - -registerExamples([ - { - name: 'mixed', - label: 'Mixed', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/nestedArrays.ts b/packages/examples/src/examples/nestedArrays.ts deleted file mode 100644 index aa4296948c..0000000000 --- a/packages/examples/src/examples/nestedArrays.ts +++ /dev/null @@ -1,136 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; -import { - ControlElement, - JsonFormsUISchemaRegistryEntry, - JsonSchema, - NOT_APPLICABLE, -} from '@jsonforms/core'; -import { StateProps } from '..'; - -const schema = { - definitions: { - choicesContainer: { - type: 'object', - properties: { - name: { type: 'string' }, - choices: { - type: 'array', - items: { - type: 'string', - }, - }, - }, - }, - }, - type: 'object', - properties: { - exampleArray: { - type: 'array', - items: { - $ref: '#/definitions/choicesContainer', - }, - }, - }, -}; - -export const uischema = { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - label: { - text: 'Example Array', - show: true, - }, - scope: '#/properties/exampleArray', - }, - ], -}; - -const data = { - exampleArray: [ - { - choices: ['This', 'is', 'an', 'example'], - name: 'Hi there', - }, - ], -}; - -const control1: ControlElement = { - type: 'Control', - scope: '#/properties/name', -}; -// register inner layout -const control2: ControlElement = { - type: 'Control', - scope: '#/properties/choices', -}; - -const uischemas = [ - { - tester: (_jsonSchema: JsonSchema, schemaPath: string) => { - return schemaPath === '#/properties/exampleArray' ? 2 : NOT_APPLICABLE; - }, - uischema: { - type: 'VerticalLayout', - elements: [control1, control2], - }, - }, -]; - -const actions = [ - { - label: 'Register NestedArray UISchema', - apply: (props: StateProps) => { - return { - ...props, - uischemas: uischemas, - }; - }, - }, - { - label: 'Unregister NestedArray UISchema', - apply: (props: StateProps) => { - const uischemas: JsonFormsUISchemaRegistryEntry[] = undefined; - return { - ...props, - uischemas: uischemas, - }; - }, - }, -]; - -registerExamples([ - { - name: 'nestedArray', - label: 'Nested Array', - data, - schema, - uischema, - actions, - }, -]); diff --git a/packages/examples/src/examples/nestedCategorization.ts b/packages/examples/src/examples/nestedCategorization.ts deleted file mode 100644 index 03c7e5e534..0000000000 --- a/packages/examples/src/examples/nestedCategorization.ts +++ /dev/null @@ -1,175 +0,0 @@ -/* - The MIT License - - Copyright (c) 2023 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the 'Software'), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - type: 'object', - properties: { - cat1: { - type: 'object', - properties: { - subcat11: { - type: 'string', - }, - }, - }, - cat2: { - type: 'object', - properties: { - subcat21: { - type: 'string', - }, - subcat22: { - type: 'string', - }, - }, - }, - cat3: { - type: 'object', - properties: { - subcat31: { - type: 'string', - }, - subcat32: { - type: 'string', - }, - subcat33: { - type: 'string', - }, - }, - }, - }, -}; - -export const uischema = { - type: 'Categorization', - elements: [ - { - type: 'Category', - label: 'Cat1', - elements: [ - { - type: 'Categorization', - elements: [ - { - type: 'Category', - label: 'SubCat1-1', - elements: [ - { - type: 'Control', - scope: '#/properties/cat1/properties/subcat11', - }, - ], - }, - ], - }, - ], - }, - { - type: 'Category', - label: 'Cat2', - elements: [ - { - type: 'Categorization', - elements: [ - { - type: 'Category', - label: 'SubCat2-1', - elements: [ - { - type: 'Control', - scope: '#/properties/cat2/properties/subcat21', - }, - ], - }, - { - type: 'Category', - label: 'SubCat2-2', - elements: [ - { - type: 'Control', - scope: '#/properties/cat2/properties/subcat22', - }, - ], - }, - ], - }, - ], - }, - { - type: 'Category', - label: 'Cat3', - elements: [ - { - type: 'Categorization', - elements: [ - { - type: 'Category', - label: 'SubCat3-1', - elements: [ - { - type: 'Control', - scope: '#/properties/cat3/properties/subcat31', - }, - ], - }, - { - type: 'Category', - label: 'SubCat3-2', - elements: [ - { - type: 'Control', - scope: '#/properties/cat3/properties/subcat32', - }, - ], - }, - { - type: 'Category', - label: 'SubCat3-3', - elements: [ - { - type: 'Control', - scope: '#/properties/cat3/properties/subcat33', - }, - ], - }, - ], - }, - ], - }, - ], -}; - -export const data = {}; - -registerExamples([ - { - name: 'nestedCategorization', - label: 'Nested Categorization', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/numbers.ts b/packages/examples/src/examples/numbers.ts deleted file mode 100644 index b23a91b3b5..0000000000 --- a/packages/examples/src/examples/numbers.ts +++ /dev/null @@ -1,89 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - type: 'object', - properties: { - price: { - type: 'number', - maximum: 100, - minimum: 1, - default: 50, - }, - age: { - type: 'integer', - }, - height: { - type: 'number', - }, - }, -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/price', - label: { - text: 'Price', - }, - }, - { - type: 'Control', - scope: '#/properties/age', - }, - { - type: 'Control', - scope: '#/properties/height', - }, - { - type: 'Control', - scope: '#/properties/price', - label: { - text: 'Price with Slider', - }, - options: { slider: true }, - }, - ], - }, - ], -}; - -export const data = {}; - -registerExamples([ - { - name: 'numbers', - label: 'Numbers', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/object.ts b/packages/examples/src/examples/object.ts deleted file mode 100644 index f87e7fb92c..0000000000 --- a/packages/examples/src/examples/object.ts +++ /dev/null @@ -1,116 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - $schema: 'http://json-schema.org/draft-07/schema#', - - type: 'object', - - properties: { - address: { - type: 'object', - properties: { - street_address: { type: 'string' }, - city: { type: 'string' }, - state: { type: 'string' }, - }, - required: ['street_address', 'city', 'state'], - }, - user: { - type: 'object', - properties: { - name: { type: 'string' }, - mail: { type: 'string' }, - }, - required: ['name', 'mail'], - }, - }, -}; - -export const uischemaRoot = { - type: 'Control', - scope: '#', -}; - -export const uischemaNonRoot = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/address', - }, - { - type: 'Control', - scope: '#/properties/user', - rule: { - effect: 'SHOW', - condition: { - type: 'LEAF', - scope: '#/properties/address/properties/state', - expectedValue: 'DC', - }, - }, - options: { - detail: { - type: 'Group', - label: 'User Data', - elements: [ - { type: 'Control', scope: '#/properties/name' }, - { - type: 'Control', - scope: '#/properties/mail', - }, - ], - }, - }, - }, - ], -}; - -const data = { - address: { - street_address: '1600 Pennsylvania Avenue NW', - city: 'Washington', - state: 'DC', - }, -}; - -registerExamples([ - { - name: 'rootObject', - label: 'Object - Root Scope', - data, - schema, - uischema: uischemaRoot, - }, - { - name: 'object', - label: 'Object', - data, - schema, - uischema: uischemaNonRoot, - }, -]); diff --git a/packages/examples/src/examples/onChange.ts b/packages/examples/src/examples/onChange.ts deleted file mode 100644 index 16ebac93b1..0000000000 --- a/packages/examples/src/examples/onChange.ts +++ /dev/null @@ -1,81 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; -import { - UISchemaElement, - updateErrors, - JsonFormsCore, - AnyAction, - Dispatch, -} from '@jsonforms/core'; - -const touchedProperties: any = { - name: false, - description: false, -}; - -export const onChange = - (dispatch: Dispatch) => - (_: any) => - ({ data, errors }: Pick) => { - Object.keys(data).forEach((key) => (touchedProperties[key] = true)); - - const newErrors = errors.filter((error) => { - return touchedProperties[(error as any).dataPath ?? error.instancePath]; - }); - - if (newErrors.length < errors.length) { - return dispatch(updateErrors(newErrors)); - } - }; - -export const schema = { - type: 'object', - properties: { - name: { - type: 'string', - minLength: 1, - }, - description: { - type: 'string', - minLength: 1, - }, - }, - required: ['name', 'description'], -}; - -export const uischema: UISchemaElement = undefined; - -export const data = {}; - -registerExamples([ - { - name: 'onChange', - label: 'On Change Listener', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/oneOf-recursive.ts b/packages/examples/src/examples/oneOf-recursive.ts deleted file mode 100644 index 27fbca2bf7..0000000000 --- a/packages/examples/src/examples/oneOf-recursive.ts +++ /dev/null @@ -1,81 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - $schema: 'http://json-schema.org/draft-07/schema#', - definitions: { - fileOrFolder: { - title: 'fileOrFolder', - oneOf: [{ $ref: '#/definitions/file' }, { $ref: '#/definitions/folder' }], - }, - file: { - title: 'File', - type: 'object', - properties: { - name: { type: 'string' }, - }, - }, - folder: { - type: 'object', - title: 'Folder', - properties: { - name: { type: 'string' }, - children: { - type: 'array', - items: { - $ref: '#/definitions/fileOrFolder', - }, - }, - }, - }, - }, - type: 'object', - properties: { - root: { - type: 'array', - items: { - $ref: '#/definitions/folder', - }, - }, - }, -}; - -export const uischema = { - type: 'Control', - scope: '#', -}; - -const data = {}; - -registerExamples([ - { - name: 'oneOf-recursive', - label: 'oneOf recursive', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/oneOf.ts b/packages/examples/src/examples/oneOf.ts deleted file mode 100644 index 174ea834cc..0000000000 --- a/packages/examples/src/examples/oneOf.ts +++ /dev/null @@ -1,348 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - $schema: 'http://json-schema.org/draft-07/schema#', - - definitions: { - address: { - type: 'object', - properties: { - street_address: { type: 'string' }, - city: { type: 'string' }, - state: { type: 'string' }, - }, - required: ['street_address', 'city', 'state'], - additionalProperties: false, - }, - user: { - type: 'object', - properties: { - name: { type: 'string' }, - mail: { type: 'string' }, - }, - required: ['name', 'mail'], - additionalProperties: false, - }, - }, - - type: 'object', - - properties: { - name: { type: 'string' }, - addressOrUser: { - oneOf: [ - { $ref: '#/definitions/address' }, - { $ref: '#/definitions/user' }, - ], - }, - }, - required: ['name'], -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/name', - }, - { - type: 'Control', - scope: '#/properties/addressOrUser', - }, - ], -}; - -const data = { - name: 'test', - addressOrUser: { - name: 'User', - mail: 'mail@example.com', - }, -}; - -const schema_1265_array = { - type: 'object', - properties: { - coloursOrNumbers: { - oneOf: [ - { - $ref: '#/definitions/colours', - }, - { - $ref: '#/definitions/numbers', - }, - { - $ref: '#/definitions/shapes', - }, - ], - }, - }, - definitions: { - colours: { - title: 'Colours', - type: 'array', - minItems: 1, - items: { - title: 'Type', - type: 'string', - enum: ['Red', 'Green', 'Blue'], - }, - }, - numbers: { - title: 'Numbers', - type: 'array', - minItems: 1, - items: { - title: 'Type', - type: 'string', - enum: ['One', 'Two', 'Three'], - }, - }, - shapes: { - title: 'Shapes', - type: 'array', - minItems: 1, - items: { - title: 'Type', - type: 'string', - enum: ['Circle', 'Triangle', 'Square'], - }, - }, - }, -}; - -const schema_1265_object = { - type: 'object', - properties: { - coloursOrNumbers: { - oneOf: [ - { - $ref: '#/definitions/colours', - }, - { - $ref: '#/definitions/numbers', - }, - { - $ref: '#/definitions/shapes', - }, - ], - }, - }, - additionalProperties: false, - definitions: { - colours: { - title: 'Colours', - type: 'object', - properties: { - colour: { - title: 'Type', - type: 'string', - enum: ['Red', 'Green', 'Blue'], - }, - }, - additionalProperties: false, - }, - numbers: { - title: 'Numbers', - type: 'object', - properties: { - number: { - title: 'Type', - type: 'string', - enum: ['One', 'Two', 'Three'], - }, - }, - additionalProperties: false, - }, - shapes: { - title: 'Shapes', - type: 'object', - properties: { - shape: { - title: 'Type', - type: 'string', - enum: ['Circle', 'Triangle', 'Square'], - }, - }, - additionalProperties: false, - }, - }, -}; - -const schema_1265_simple = { - type: 'object', - properties: { - coloursOrNumbers: { - oneOf: [ - { - $ref: '#/definitions/colours', - }, - { - $ref: '#/definitions/numbers', - }, - { - $ref: '#/definitions/shapes', - }, - ], - }, - }, - definitions: { - colours: { - title: 'Colours', - type: 'string', - enum: ['Red', 'Green', 'Blue'], - }, - numbers: { - title: 'Numbers', - type: 'string', - enum: ['One', 'Two', 'Three'], - }, - shapes: { - title: 'Shapes', - type: 'string', - enum: ['Circle', 'Triangle', 'Square'], - }, - }, -}; - -const schema_1273 = { - type: 'object', - properties: { - quantity: { - oneOf: [ - { - $ref: '#/definitions/unrangedQuantity', - }, - { - $ref: '#/definitions/rangedQuantity', - }, - ], - }, - }, - definitions: { - unrangedQuantity: { - title: 'Value', - type: 'object', - properties: { - value: { - type: 'number', - }, - unit: { - type: 'string', - }, - }, - required: ['value', 'unit'], - }, - rangedQuantity: { - title: 'Range', - type: 'object', - properties: { - valueLow: { - type: 'number', - }, - valueHigh: { - type: 'number', - maximum: 10, - }, - unit: { - type: 'string', - }, - }, - required: ['valueLow', 'valueHigh', 'unit'], - }, - }, -}; - -const schema_1273_simple = { - type: 'object', - properties: { - quantity: { - oneOf: [ - { - type: 'string', - }, - { - type: 'number', - }, - ], - }, - }, -}; - -const data_1273 = { - quantity: { - valueLow: 1, - valueHigh: 100, - unit: 'kg', - }, -}; - -registerExamples([ - { - name: 'oneOf', - label: 'oneOf', - data, - schema, - uischema, - }, - { - name: 'oneOf_1265_array', - label: 'oneOf - Validation for Arrays (Issue 1265)', - data: { coloursOrNumbers: ['Foo'] }, - schema: schema_1265_array, - uischema: undefined, - }, - { - name: 'oneOf_1265_object', - label: 'oneOf - Validation for Objects (Issue 1265)', - data: { coloursOrNumbers: { colour: 'Foo' } }, - schema: schema_1265_object, - uischema: undefined, - }, - { - name: 'oneOf_1265_simple', - label: 'oneOf - Validation for Primitives (Issue 1265)', - data: { coloursOrNumbers: 'Foo' }, - schema: schema_1265_simple, - uischema: undefined, - }, - { - name: 'oneOf_1273', - label: 'oneOf - Preselection for Objects (Issue 1273)', - data: data_1273, - schema: schema_1273, - uischema: undefined, - }, - { - name: 'oneOf_1273_simple', - label: 'oneOf - Preselection for Primitives (Issue 1273 )', - data: { quantity: 5 }, - schema: schema_1273_simple, - uischema: undefined, - }, -]); diff --git a/packages/examples/src/examples/oneOfArray.ts b/packages/examples/src/examples/oneOfArray.ts deleted file mode 100644 index ec6d8f7837..0000000000 --- a/packages/examples/src/examples/oneOfArray.ts +++ /dev/null @@ -1,99 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - $schema: 'http://json-schema.org/draft-07/schema#', - - definitions: { - address: { - type: 'object', - properties: { - street_address: { type: 'string' }, - city: { type: 'string' }, - state: { type: 'string' }, - }, - required: ['street_address', 'city', 'state'], - }, - user: { - type: 'object', - properties: { - name: { type: 'string' }, - mail: { type: 'string' }, - }, - required: ['name', 'mail'], - }, - }, - - type: 'object', - - properties: { - name: { type: 'string' }, - addressOrUsers: { - type: 'array', - items: { - oneOf: [ - { $ref: '#/definitions/address' }, - { $ref: '#/definitions/user' }, - ], - }, - }, - }, -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/addressOrUsers', - }, - ], -}; - -const data = { - name: 'test', - addressOrUsers: [ - { - street_address: '1600 Pennsylvania Avenue NW', - city: 'Washington', - state: 'DC', - }, - { - name: 'User', - mail: 'user@user.user', - }, - ], -}; - -registerExamples([ - { - name: 'oneOfArray', - label: 'oneOf - Inside array items', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/person.ts b/packages/examples/src/examples/person.ts deleted file mode 100644 index 866d026c93..0000000000 --- a/packages/examples/src/examples/person.ts +++ /dev/null @@ -1,165 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const personCoreSchema = { - type: 'object', - properties: { - name: { - type: 'string', - minLength: 3, - description: 'Please enter your name', - }, - vegetarian: { - type: 'boolean', - }, - birthDate: { - type: 'string', - format: 'date', - description: 'Please enter your birth date.', - }, - nationality: { - type: 'string', - enum: ['DE', 'IT', 'JP', 'US', 'RU', 'Other'], - }, - }, -}; - -export const schema = { - type: 'object', - properties: { - ...personCoreSchema.properties, - personalData: { - type: 'object', - properties: { - age: { - type: 'integer', - description: 'Please enter your age.', - }, - height: { - type: 'number', - }, - drivingSkill: { - type: 'number', - maximum: 10, - minimum: 1, - default: 7, - }, - }, - required: ['age', 'height'], - }, - vegetarian: { - type: 'boolean', - }, - birthDate: { - type: 'string', - format: 'date', - }, - occupation: { - type: 'string', - }, - postalCode: { - type: 'string', - maxLength: 5, - }, - }, - required: ['occupation', 'nationality'], -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/name', - }, - { - type: 'Control', - scope: '#/properties/personalData/properties/age', - }, - { - type: 'Control', - scope: '#/properties/birthDate', - }, - ], - }, - { - type: 'Label', - text: 'Additional Information', - }, - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/personalData/properties/height', - }, - { - type: 'Control', - scope: '#/properties/nationality', - }, - { - type: 'Control', - scope: '#/properties/occupation', - options: { - suggestion: [ - 'Accountant', - 'Engineer', - 'Freelancer', - 'Journalism', - 'Physician', - 'Student', - 'Teacher', - 'Other', - ], - }, - }, - ], - }, - ], -}; - -export const data = { - name: 'John Doe', - vegetarian: false, - birthDate: '1985-06-02', - personalData: { - age: 34, - }, - postalCode: '12345', -}; - -registerExamples([ - { - name: 'person', - label: 'Person', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/radioGroup.ts b/packages/examples/src/examples/radioGroup.ts deleted file mode 100644 index 1c777cb3da..0000000000 --- a/packages/examples/src/examples/radioGroup.ts +++ /dev/null @@ -1,87 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const data = {}; - -export const schema = { - type: 'object', - properties: { - exampleRadioEnum: { - type: 'string', - enum: ['One', 'Two', 'Three'], - }, - exampleRadioOneOfEnum: { - type: 'string', - oneOf: [ - { const: 'foo', title: 'Foo' }, - { const: 'bar', title: 'Bar' }, - { const: 'foobar', title: 'FooBar' }, - ], - }, - }, -}; -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Group', - label: 'Simple enum', - elements: [ - { - type: 'Control', - scope: '#/properties/exampleRadioEnum', - options: { - format: 'radio', - orientation: 'vertical', - }, - }, - ], - }, - { - type: 'Group', - label: 'One of Enum', - elements: [ - { - type: 'Control', - scope: '#/properties/exampleRadioOneOfEnum', - options: { - format: 'radio', - }, - }, - ], - }, - ], -}; - -registerExamples([ - { - name: 'radio-group', - label: 'Radio Group', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/readonly.ts b/packages/examples/src/examples/readonly.ts deleted file mode 100644 index 10efc015b8..0000000000 --- a/packages/examples/src/examples/readonly.ts +++ /dev/null @@ -1,81 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - type: 'object', - properties: { - readonly: { - type: 'string', - readOnly: true, - }, - readonlyByUISchema: { - type: 'string', - }, - notReadonly: { - type: 'string', - }, - }, -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/readonly', - label: 'A readonly field', - }, - { - type: 'Control', - scope: '#/properties/readonlyByUISchema', - label: 'A readonly field by ui schema', - options: { - readonly: true, - }, - }, - { - type: 'Control', - scope: '#/properties/notReadonly', - label: 'A normal field', - }, - ], -}; - -export const data = { - readonly: 'readonly by schema', - readonlyByUISchema: 'readonly by ui schema', - notReadonly: 'normal field', -}; - -registerExamples([ - { - name: 'Readonly Fields', - label: 'Readonly examples', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/rule.ts b/packages/examples/src/examples/rule.ts deleted file mode 100644 index 1407278f12..0000000000 --- a/packages/examples/src/examples/rule.ts +++ /dev/null @@ -1,145 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { ValidateFunctionContext } from '@jsonforms/core'; -import { registerExamples } from '../register'; - -export const schema = { - type: 'object', - properties: { - name: { - type: 'string', - }, - dead: { - type: 'boolean', - }, - kindOfDead: { - type: 'string', - enum: ['Zombie', 'Vampire', 'Ghoul'], - }, - vegetables: { - type: 'boolean', - }, - kindOfVegetables: { - type: 'string', - enum: ['All', 'Some', 'Only potatoes'], - }, - vitaminDeficiency: { - type: 'string', - enum: ['None', 'Vitamin A', 'Vitamin B', 'Vitamin C'], - }, - }, -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - label: 'Name', - scope: '#/properties/name', - }, - { - type: 'Group', - elements: [ - { - type: 'Control', - label: 'Is Dead?', - scope: '#/properties/dead', - }, - { - type: 'Control', - label: 'Kind of dead', - scope: '#/properties/kindOfDead', - rule: { - effect: 'ENABLE', - condition: { - scope: '#/properties/dead', - schema: { - const: true, - }, - }, - }, - }, - ], - }, - { - type: 'Group', - elements: [ - { - type: 'Control', - label: 'Eats vegetables?', - scope: '#/properties/vegetables', - }, - { - type: 'Control', - label: 'Kind of vegetables', - scope: '#/properties/kindOfVegetables', - rule: { - effect: 'HIDE', - condition: { - scope: '#/properties/vegetables', - schema: { - const: false, - }, - }, - }, - }, - { - type: 'Control', - label: 'Vitamin deficiency?', - scope: '#/properties/vitaminDeficiency', - rule: { - effect: 'SHOW', - condition: { - scope: '#', - validate: (context: ValidateFunctionContext) => { - return ( - !(context.data as any).dead && - (context.data as any).kindOfVegetables !== 'All' - ); - }, - }, - }, - }, - ], - }, - ], -}; - -export const data = { - name: 'John Doe', - dead: false, - vegetables: false, -}; - -registerExamples([ - { - name: 'rule', - label: 'Rule', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/ruleInheritance.ts b/packages/examples/src/examples/ruleInheritance.ts deleted file mode 100644 index ec137bb8e6..0000000000 --- a/packages/examples/src/examples/ruleInheritance.ts +++ /dev/null @@ -1,130 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { StateProps } from '../example'; -import { registerExamples } from '../register'; - -export const schema = { - type: 'object', - properties: { - toggleTopLayout: { - type: 'boolean', - }, - topString: { - type: 'string', - }, - middleNumber: { - type: 'number', - }, - toggleBottomLayout: { - type: 'boolean', - }, - bottomBoolean: { - type: 'boolean', - }, - }, -}; -export const uischema = { - type: 'VerticalLayout', - rule: { - effect: 'ENABLE', - condition: { - scope: '#/properties/toggleTopLayout', - schema: { const: true }, - }, - }, - elements: [ - { - type: 'Control', - scope: '#/properties/topString', - }, - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/middleNumber', - }, - { - type: 'Group', - label: 'group', - rule: { - effect: 'SHOW', - condition: { - scope: '#/properties/toggleBottomLayout', - schema: { const: true }, - }, - }, - elements: [ - { - type: 'Control', - scope: '#/properties/bottomBoolean', - }, - ], - }, - ], - }, - ], -} as any; - -export const data = { - toggleTopLayout: true, - toggleBottomLayout: true, - toggleControl: true, -}; - -const actions = [ - { - label: 'Enable/Disable top layout', - apply: (props: StateProps) => { - return { - ...props, - data: { ...props.data, toggleTopLayout: !props.data.toggleTopLayout }, - }; - }, - }, - { - label: 'Show/Hide bottom layout', - apply: (props: StateProps) => { - return { - ...props, - data: { - ...props.data, - toggleBottomLayout: !props.data.toggleBottomLayout, - }, - }; - }, - }, -]; - -registerExamples([ - { - name: 'rule-enable', - label: 'Rule Inheritance', - data, - schema, - uischema, - actions, - }, -]); diff --git a/packages/examples/src/examples/scope.ts b/packages/examples/src/examples/scope.ts deleted file mode 100644 index 345c55e75b..0000000000 --- a/packages/examples/src/examples/scope.ts +++ /dev/null @@ -1,113 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const orderSchema = { - type: 'object', - properties: { - orderId: { - type: 'string', - }, - purchaseDate: { - type: 'string', - format: 'date', - }, - price: { - type: 'number', - }, - shippingAddress: { - $ref: '#/definitions/shippingAddress', - }, - }, - definitions: { - shippingAddress: { - type: 'object', - properties: { - aptNo: { - type: 'integer', - }, - streetNumber: { - type: 'integer', - }, - }, - }, - }, -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/orderId', - }, - { - type: 'Control', - scope: '#/properties/purchaseDate', - }, - { - type: 'Control', - scope: '#/properties/price', - }, - ], - }, - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/shippingAddress/properties/aptNo', - }, - { - type: 'Control', - scope: '#/properties/shippingAddress/properties/streetNumber', - }, - ], - }, - ], -}; - -export const data = { - orderId: '123456', - purchaseDate: '1985-06-02', - price: 16, - shippingAddress: { - aptNo: 3, - streetNumber: 12, - }, -}; - -registerExamples([ - { - name: 'scope', - label: 'Scope', - data, - schema: orderSchema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/string.ts b/packages/examples/src/examples/string.ts deleted file mode 100644 index a024525f94..0000000000 --- a/packages/examples/src/examples/string.ts +++ /dev/null @@ -1,48 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - type: 'string', - title: 'String', - description: 'The form output will be a string', -}; - -export const uischema = { - type: 'Control', - scope: '#/', -}; - -export const data = 'This is a test string'; - -registerExamples([ - { - name: 'string', - label: 'String', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/stringArray.ts b/packages/examples/src/examples/stringArray.ts deleted file mode 100644 index 940a46b9ad..0000000000 --- a/packages/examples/src/examples/stringArray.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - type: 'object', - properties: { - comments: { - description: 'Description for array of String Type', - type: 'array', - items: { - type: 'string', - maxLength: 5, - }, - }, - }, -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/comments', - }, - ], -}; - -export const data = { - comments: ['one string', 'two strings'], -}; - -registerExamples([ - { - name: 'stringArray', - label: 'Array of Strings', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/examples/text.ts b/packages/examples/src/examples/text.ts deleted file mode 100644 index 8c4ee7f6aa..0000000000 --- a/packages/examples/src/examples/text.ts +++ /dev/null @@ -1,97 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { registerExamples } from '../register'; - -export const schema = { - type: 'object', - properties: { - zipCode: { - type: 'string', - maxLength: 5, - }, - zipCodeWithoutTrim: { - type: 'string', - maxLength: 5, - }, - zipCodeWithoutRestrict: { - type: 'string', - maxLength: 5, - }, - }, -}; - -export const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/zipCode', - label: 'ZIP Code (with trim and restrict options)', - options: { - trim: true, - restrict: true, - }, - }, - { - type: 'Control', - scope: '#/properties/zipCodeWithoutTrim', - label: 'ZIP Code (without trimming)', - options: { - trim: false, - restrict: true, - }, - }, - { - type: 'Control', - scope: '#/properties/zipCodeWithoutRestrict', - label: 'ZIP Code (without restricting)', - options: { - trim: true, - restrict: false, - }, - }, - ], - }, - ], -}; - -export const data = { - zipCode: '12345', - zipCodeWithoutTrim: '12345678', - zipCodeWithoutRestrict: '12345678', -}; - -registerExamples([ - { - name: 'text', - label: 'Text Control Options', - data, - schema, - uischema, - }, -]); diff --git a/packages/examples/src/index.ts b/packages/examples/src/index.ts deleted file mode 100644 index cb8684ed4a..0000000000 --- a/packages/examples/src/index.ts +++ /dev/null @@ -1,148 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2021 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import * as allOf from './examples/allOf'; -import * as anyOf from './examples/anyOf'; -import * as oneOf from './examples/oneOf'; -import * as oneOfArray from './examples/oneOfArray'; -import * as anyOfOneOfAllOfResolve from './examples/anyOf-oneOf-allOf-resolve'; -import * as array from './examples/arrays'; -import * as arrayI18n from './examples/arraysI18n'; -import * as nestedArray from './examples/nestedArrays'; -import * as nestedCategorization from './examples/nestedCategorization'; -import * as arrayWithDetail from './examples/arrays-with-detail'; -import * as arrayWithDetailAndRule from './examples/arrays-with-detail-and-rule'; -import * as arrayWithCustomChildLabel from './examples/arrays-with-custom-element-label'; -import * as arrayWithSorting from './examples/arrays-with-sorting'; -import * as arrayWithTranslatedCustomChildLabel from './examples/arrays-with-translated-custom-element-label'; -import * as arrayWithDefaults from './examples/arrays-with-defaults'; -import * as stringArray from './examples/stringArray'; -import * as categorization from './examples/categorization'; -import * as stepper from './examples/categorization-stepper'; -import * as steppershownav from './examples/categorization-stepper-nav-buttons'; -import * as controlOptions from './examples/control-options'; -import * as dates from './examples/dates'; -import * as generateDynamic from './examples/generate-dynamic'; -import * as generateSchema from './examples/generate'; -import * as generateUISchema from './examples/generateUI'; -import * as layout from './examples/layout'; -import * as person from './examples/person'; -import * as issue_1884 from './examples/1884'; -import * as rule from './examples/rule'; -import * as ruleInheritance from './examples/ruleInheritance'; -import * as config from './examples/config'; -import * as text from './examples/text'; -import * as numbers from './examples/numbers'; -import * as scope from './examples/scope'; -import * as listWithDetail from './examples/list-with-detail'; -import * as listWithDetailRegistered from './examples/list-with-detail-registered'; -import * as object from './examples/object'; -import * as i18n from './examples/i18n'; -import * as issue_1948 from './examples/1948'; -import * as oneOfRecursive from './examples/oneOf-recursive'; -import * as huge from './examples/huge'; -import * as defaultExample from './examples/default'; -import * as onChange from './examples/onChange'; -import * as enumExample from './examples/enum'; -import * as radioGroupExample from './examples/radioGroup'; -import * as multiEnum from './examples/enum-multi'; -import * as enumInArray from './examples/enumInArray'; -import * as readonly from './examples/readonly'; -import * as listWithDetailPrimitives from './examples/list-with-detail-primitives'; -import * as conditionalSchemaComposition from './examples/conditional-schema-compositions'; -import * as additionalErrors from './examples/additional-errors'; -import * as multiEnumWithLabelAndDesc from './examples/enum-multi-with-label-and-desc'; -import * as additionalProperties from './examples/additional-properties'; -import * as login from './examples/login'; -import * as mixed from './examples/mixed'; -import * as mixedObject from './examples/mixed-object'; -import * as string from './examples/string'; -export * from './register'; -export * from './example'; - -import * as ifThenElse from './examples/if_then_else'; -import * as jsonschema from './examples/jsonschema'; -import * as jsoneditor from './examples/json-editor'; - -export { - issue_1948, - defaultExample, - allOf, - anyOf, - oneOf, - oneOfArray, - anyOfOneOfAllOfResolve, - stringArray, - array, - arrayI18n, - nestedArray, - nestedCategorization, - arrayWithDetail, - arrayWithDetailAndRule, - arrayWithCustomChildLabel, - arrayWithSorting, - arrayWithTranslatedCustomChildLabel, - categorization, - stepper, - steppershownav, - controlOptions, - generateSchema, - generateUISchema, - layout, - person, - rule, - ruleInheritance, - dates, - generateDynamic, - config, - text, - numbers, - scope, - listWithDetail, - listWithDetailRegistered, - object, - i18n, - oneOfRecursive, - huge, - ifThenElse, - jsoneditor, - jsonschema, - onChange, - enumExample, - radioGroupExample, - multiEnum, - multiEnumWithLabelAndDesc, - enumInArray, - readonly, - listWithDetailPrimitives, - conditionalSchemaComposition, - additionalErrors, - additionalProperties, - login, - mixed, - mixedObject, - issue_1884, - arrayWithDefaults, - string, -}; diff --git a/packages/examples/src/register.ts b/packages/examples/src/register.ts deleted file mode 100644 index 147c521bd1..0000000000 --- a/packages/examples/src/register.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { ExampleDescription } from './example'; - -const knownExamples: { [key: string]: ExampleDescription } = {}; - -export const registerExamples = (examples: ExampleDescription[]): void => { - examples.forEach((example) => (knownExamples[example.name] = example)); -}; - -export const getExamples: () => ExampleDescription[] = () => { - const examples = Object.keys(knownExamples).map((key) => knownExamples[key]); - examples.sort((a, b) => a.label.localeCompare(b.label)); - return examples; -}; diff --git a/packages/examples/tsconfig.json b/packages/examples/tsconfig.json deleted file mode 100644 index 427bc4b996..0000000000 --- a/packages/examples/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "../../tsconfig.base", - "compilerOptions": { - "outDir": "lib", - "sourceMap": true - }, - "exclude": ["node_modules"], - "files": ["./src/index.ts"] -} diff --git a/packages/material-renderers/.eslintrc.js b/packages/material-renderers/.eslintrc.js deleted file mode 100644 index 1bfc4966b9..0000000000 --- a/packages/material-renderers/.eslintrc.js +++ /dev/null @@ -1,40 +0,0 @@ -/* eslint-env node */ -/** @type {import('eslint').Linter.Config} */ -module.exports = { - root: true, - parser: '@typescript-eslint/parser', - parserOptions: { - ecmaFeatures: { - jsx: true, - }, - }, - // There is no file include in ESLint. Thus, ignore all and include files via negative ignore (!) - ignorePatterns: ['/*', '!/src', '!/test', '!/example', '/example/dist'], - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:import/recommended', - 'plugin:import/typescript', - 'plugin:react/recommended', - 'plugin:prettier/recommended', - ], - rules: { - '@typescript-eslint/no-explicit-any': 'off', - 'import/no-named-as-default': 'off', - // Base rule must be disabled to avoid incorrect errors - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': [ - 'warn', // or "error" - { - argsIgnorePattern: '^_', - varsIgnorePattern: '^_', - caughtErrorsIgnorePattern: '^_', - }, - ], - }, - settings: { - react: { - version: 'detect', - }, - }, -}; diff --git a/packages/material-renderers/.prettierrc.js b/packages/material-renderers/.prettierrc.js deleted file mode 100644 index 2c26853c4a..0000000000 --- a/packages/material-renderers/.prettierrc.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - $schema: 'http://json.schemastore.org/prettierrc', - singleQuote: true, - jsxSingleQuote: true, - endOfLine: 'auto', -}; diff --git a/packages/material-renderers/LICENSE b/packages/material-renderers/LICENSE deleted file mode 100644 index 064ca1d9d2..0000000000 --- a/packages/material-renderers/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License - -Copyright (c) 2019 EclipseSource Munich -https://github.com/eclipsesource/jsonforms - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/packages/material-renderers/README.md b/packages/material-renderers/README.md deleted file mode 100644 index 4f0d0d45b6..0000000000 --- a/packages/material-renderers/README.md +++ /dev/null @@ -1,121 +0,0 @@ -# JSON Forms - More Forms. Less Code - -_Complex forms in the blink of an eye_ - -JSON Forms eliminates the tedious task of writing fully-featured forms by hand by leveraging the capabilities of JSON, JSON Schema and Javascript. - -## Material Renderers Package - -This is the JSON Forms Material Renderers Package. This package only contains renderers and must be combined with [JSON Forms React](https://github.com/eclipsesource/jsonforms/blob/master/packages/react). - -See the official [documentation](https://jsonforms.io/docs/integrations/react/) and the JSON Forms React [seed repository](https://github.com/eclipsesource/jsonforms-react-seed) for examples on how to integrate JSON Forms with your application. - -You can combine [JSON Forms React](https://github.com/eclipsesource/jsonforms/blob/master/packages/react) with other renderers too, for example with the [Vanilla Renderers](https://github.com/eclipsesource/jsonforms/tree/master/packages/vanilla). - -Check for all published JSONForms packages. - -### Quick start - -Install JSON Forms Core, React and React Material Renderers - -```bash -npm i --save @jsonforms/core @jsonforms/react @jsonforms/material-renderers -``` - -Use the `JsonForms` component for each form you want to render and hand over the renderer set. - -```ts -import React, { useState } from 'react'; -import { - materialRenderers, - materialCells, -} from '@jsonforms/material-renderers'; -import { JsonForms } from '@jsonforms/react'; - -const schema = { - type: 'object', - properties: { - name: { - type: 'string', - minLength: 1, - }, - done: { - type: 'boolean', - }, - due_date: { - type: 'string', - format: 'date', - }, - recurrence: { - type: 'string', - enum: ['Never', 'Daily', 'Weekly', 'Monthly'], - }, - }, - required: ['name', 'due_date'], -}; - -const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - label: false, - scope: '#/properties/done', - }, - { - type: 'Control', - scope: '#/properties/name', - }, - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/due_date', - }, - { - type: 'Control', - scope: '#/properties/recurrence', - }, - ], - }, - ], -}; - -const initialData = {}; - -function App() { - const [data, setData] = useState(initialData); - return ( - setData(data)} - /> - ); -} -``` - -## License - -The JSON Forms project is licensed under the MIT License. See the [LICENSE file](https://github.com/eclipsesource/jsonforms/blob/master/LICENSE) for more information. - -## Roadmap - -Our current roadmap is available [here](https://github.com/eclipsesource/jsonforms/blob/master/ROADMAP.md). - -## Feedback, Help and Support - -JSON Forms is developed by [EclipseSource](https://eclipsesource.com). - -If you encounter any problems feel free to [open an issue](https://github.com/eclipsesource/jsonforms/issues/new/choose) on the repo. -For questions and discussions please use the [JSON Forms board](https://jsonforms.discourse.group). -You can also reach us via [email](mailto:jsonforms@eclipsesource.com?subject=JSON%20Forms). -In addition, EclipseSource also offers [professional support](https://jsonforms.io/support) for JSON Forms. - -## Migration - -See our [migration guide](https://github.com/eclipsesource/jsonforms/blob/master/MIGRATION.md) when updating JSON Forms. diff --git a/packages/material-renderers/example/index.bundled.html b/packages/material-renderers/example/index.bundled.html deleted file mode 100644 index 456e2fd45d..0000000000 --- a/packages/material-renderers/example/index.bundled.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - JSON Forms React Material RendererSet - - - - - -
- - - diff --git a/packages/material-renderers/example/index.html b/packages/material-renderers/example/index.html deleted file mode 100644 index f1b289b56b..0000000000 --- a/packages/material-renderers/example/index.html +++ /dev/null @@ -1,14 +0,0 @@ - - - - - JSON Forms React Material RendererSet - - - - - -
- - - diff --git a/packages/material-renderers/example/index.tsx b/packages/material-renderers/example/index.tsx deleted file mode 100644 index e283e0b05f..0000000000 --- a/packages/material-renderers/example/index.tsx +++ /dev/null @@ -1,99 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -import React from 'react'; -import { - Divider, - FormControl, - InputLabel, - MenuItem, - Select, - SelectChangeEvent, - Stack, - TextFieldProps, - ThemeProvider, - createTheme, -} from '@mui/material'; -import { renderExample } from '../../examples-react/src/index'; -import { materialRenderers, materialCells } from '../src'; - -const MuiWrapper = ({ children }: React.PropsWithChildren) => { - const [variant, setVariant] = - React.useState('standard'); - - const handleVariantChange = (event: SelectChangeEvent) => { - setVariant(event.target.value as TextFieldProps['variant']); - }; - - const theme = React.useMemo(() => { - return createTheme({ - components: { - MuiTextField: { - defaultProps: { - variant, - }, - }, - MuiSelect: { - defaultProps: { - variant, - }, - }, - // avoid jammed look of input fields when variant is not 'standard' - ...(variant !== 'standard' - ? { - MuiFormControl: { - styleOverrides: { - root: { - marginTop: '8px', - }, - }, - }, - } - : {}), - }, - }); - }, [variant]); - - const label = 'TextField variant'; - - return ( - - - - {label} - - - - {children} - - - ); -}; - -renderExample(materialRenderers, materialCells, MuiWrapper); diff --git a/packages/material-renderers/package.json b/packages/material-renderers/package.json deleted file mode 100644 index 0d7f3347cb..0000000000 --- a/packages/material-renderers/package.json +++ /dev/null @@ -1,145 +0,0 @@ -{ - "name": "@jsonforms/material-renderers", - "version": "3.6.0", - "description": "Material Renderer Set for JSON Forms", - "repository": "https://github.com/eclipsesource/jsonforms", - "bugs": "https://github.com/eclipsesource/jsonforms/issues", - "homepage": "http://jsonforms.io/", - "license": "MIT", - "directories": { - "example": "example", - "src": "src", - "webpack": "webpack" - }, - "files": [ - "lib", - "src" - ], - "keywords": [ - "material", - "renderer", - "form", - "forms", - "json", - "jsonforms", - "frontend", - "generator", - "input", - "renderengine", - "jsonschema", - "schema", - "uischema", - "layout", - "customization" - ], - "main": "lib/jsonforms-react-material.cjs.js", - "module": "lib/jsonforms-react-material.esm.js", - "typings": "lib/index.d.ts", - "scripts": { - "build": "rollup -c rollup.config.js", - "build:examples-app": "rollup -c rollup.example.config.js", - "dev": "webpack-dev-server --config webpack/webpack.dev.js --env=dev", - "clean": "rimraf lib coverage dist .nyc_output example/dist 2> /dev/null", - "lint": "eslint .", - "lint:fix": "eslint --fix .", - "test": "jest --no-cache", - "test-cov": "jest --no-cache --coverage", - "report": "nyc report --reporter=html", - "doc": "typedoc --name 'JSON Forms React Material Renderers' --excludeExternals --out docs src", - "tsc": "tsc --build tsconfig.json" - }, - "jest": { - "moduleFileExtensions": [ - "ts", - "tsx", - "js" - ], - "transform": { - "^.+\\.(ts|tsx)$": "ts-jest" - }, - "testEnvironment": "jsdom", - "testMatch": [ - "**/test/**/*.test.tsx", - "**/test/**.test.ts" - ], - "testPathIgnorePatterns": [ - "/node_modules/", - "/dist/" - ], - "globals": { - "ts-jest": { - "tsconfig": "tsconfig.test.json" - } - } - }, - "nyc": { - "reporter": [ - "lcov", - "text-summary" - ] - }, - "dependencies": { - "@date-io/dayjs": "^3.0.0", - "dayjs": "1.10.7", - "lodash": "^4.17.21" - }, - "peerDependencies": { - "@emotion/react": "^11.4.1", - "@emotion/styled": "^11.3.0", - "@jsonforms/core": "3.6.0", - "@jsonforms/react": "3.6.0", - "@mui/icons-material": "^5.11.16 || ^6.0.0", - "@mui/material": "^5.13.0 || ^6.0.0", - "@mui/x-date-pickers": "^6.0.0 || ^7.0.0", - "react": "^16.12.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "devDependencies": { - "@emotion/react": "^11.5.0", - "@emotion/styled": "^11.3.0", - "@jsonforms/core": "workspace:*", - "@jsonforms/react": "workspace:*", - "@mui/icons-material": "^5.11.16", - "@mui/material": "~5.13.0", - "@mui/x-date-pickers": "^7.7.1", - "@rollup/plugin-commonjs": "^23.0.3", - "@rollup/plugin-json": "^5.0.2", - "@rollup/plugin-node-resolve": "^15.0.1", - "@rollup/plugin-replace": "^5.0.1", - "@types/enzyme": "^3.10.3", - "@types/react": "^17.0.24", - "@types/react-dom": "^17.0.9", - "@typescript-eslint/eslint-plugin": "^5.54.1", - "@typescript-eslint/parser": "^5.54.1", - "@wojtekmaj/enzyme-adapter-react-17": "^0.6.7", - "copy-webpack-plugin": "^5.0.5", - "enzyme": "^3.11.0", - "eslint": "^8.56.0", - "eslint-config-prettier": "^8.7.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-react": "^7.32.2", - "jest": "^27.5.1", - "jsdom": "^22.0.0", - "jsdom-global": "^3.0.2", - "nyc": "^15.1.0", - "prettier": "^2.8.4", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "rimraf": "^3.0.2", - "rollup": "^2.78.0", - "rollup-plugin-cleanup": "^3.2.1", - "rollup-plugin-copy": "^3.4.0", - "rollup-plugin-import-css": "^3.3.1", - "rollup-plugin-typescript2": "^0.34.1", - "rollup-plugin-visualizer": "^5.4.1", - "source-map-loader": "^0.2.4", - "ts-jest": "^27.1.4", - "ts-loader": "^9.5.1", - "tslib": "^2.5.0", - "typedoc": "~0.25.3", - "typescript": "~5.5.0", - "webpack": "^5.78.0", - "webpack-cli": "^5.1.4", - "webpack-dev-server": "^4.15.1" - } -} diff --git a/packages/material-renderers/rollup.config.js b/packages/material-renderers/rollup.config.js deleted file mode 100644 index 5a782851d1..0000000000 --- a/packages/material-renderers/rollup.config.js +++ /dev/null @@ -1,51 +0,0 @@ -import typescript from 'rollup-plugin-typescript2'; -import cleanup from 'rollup-plugin-cleanup'; -import { visualizer } from 'rollup-plugin-visualizer'; - -const packageJson = require('./package.json'); - -const baseConfig = { - input: 'src/index.ts', - external: [ - ...Object.keys(packageJson.dependencies), - ...Object.keys(packageJson.peerDependencies), - 'react', - /^lodash\/.*/, - /^@material-ui\/.*/, - /^dayjs\/.*/, - ], -}; - -export default [ - { - ...baseConfig, - output: { - file: packageJson.module, - format: 'esm', - sourcemap: true, - }, - plugins: [ - typescript(), - cleanup({ extensions: ['js', 'ts', 'jsx', 'tsx'] }), - visualizer({ open: false }), - ], - }, - { - ...baseConfig, - output: { - file: packageJson.main, - format: 'cjs', - sourcemap: true, - }, - plugins: [ - typescript({ - tsconfigOverride: { - compilerOptions: { - target: 'ES5', - }, - }, - }), - cleanup({ extensions: ['js', 'ts', 'jsx', 'tsx'] }), - ], - }, -]; diff --git a/packages/material-renderers/rollup.example.config.js b/packages/material-renderers/rollup.example.config.js deleted file mode 100644 index c2e0752017..0000000000 --- a/packages/material-renderers/rollup.example.config.js +++ /dev/null @@ -1,92 +0,0 @@ -import commonjs from '@rollup/plugin-commonjs'; -import json from '@rollup/plugin-json'; -import nodeResolve from '@rollup/plugin-node-resolve'; -import replace from '@rollup/plugin-replace'; -import copy from 'rollup-plugin-copy'; -import css from 'rollup-plugin-import-css'; -import typescript from 'rollup-plugin-typescript2'; - -// This little plugin mitigates Rollup's lack of support for pre-built CommonJS dependencies with -// default exports. -// For mor details see here: https://github.com/eclipsesource/jsonforms/pull/2139 -function cjsCompatPlugin() { - return { - name: 'cjs-compat-plugin', - transform(code, id) { - // ignore all packages which are not @mui/utils - if ( - !/@mui\/utils.*.js$/.test(id) || - id.includes('@mui/utils/node_modules') - ) { - return code; - } - - // try to extract the commonjs namespace variable - const moduleName = code.match( - /(?[a-zA-Z0-9_$]*).default = _default;/ - )?.groups?.module; - - if (!moduleName || !code.includes(`return ${moduleName};`)) { - return code; - } - - // return default export instead of namespace - return code.replace( - `return ${moduleName}`, - `return ${moduleName}.default` - ); - }, - }; -} - -/** - * @type {import('rollup').RollupOptions} - */ -const config = { - input: 'example/index.tsx', - output: { - file: 'example/dist/bundle.js', - format: 'iife', - sourcemap: true, - }, - plugins: [ - replace({ - 'process.env.NODE_ENV': JSON.stringify('production'), - preventAssignment: true, // recommended to be set by library to be forward compatible - }), - nodeResolve({ browser: true }), - // Transform mixed because some JsonForms modules use import and require - commonjs({ transformMixedEsModules: true }), - css({ - output: 'bundle.css', - }), - json(), - typescript({ - tsconfigOverride: { - compilerOptions: { - // Do not emit typescript declarations for our bundled example app - declaration: false, - // With importing the examples-react's index directly from source instead of properly building the examples-react package, - // the React types can not be found during the build - noImplicitAny: false, - }, - }, - }), - cjsCompatPlugin(), - copy({ - targets: [ - { - src: 'example/index.bundled.html', - dest: 'example/dist', - rename: () => 'index.html', - }, - { - src: '../examples-react/src/logo.svg', - dest: 'example/dist/assets', - }, - ], - }), - ], -}; - -export default config; diff --git a/packages/material-renderers/src/additional/ListWithDetailMasterItem.tsx b/packages/material-renderers/src/additional/ListWithDetailMasterItem.tsx deleted file mode 100644 index 4814925ca8..0000000000 --- a/packages/material-renderers/src/additional/ListWithDetailMasterItem.tsx +++ /dev/null @@ -1,77 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import type { StatePropsOfMasterItem } from '@jsonforms/core'; -import { withJsonFormsMasterListItemProps } from '@jsonforms/react'; -import { - Avatar, - IconButton, - ListItemButton, - ListItemAvatar, - ListItemSecondaryAction, - ListItemText, - Tooltip, -} from '@mui/material'; -import DeleteIcon from '@mui/icons-material/Delete'; -import React from 'react'; - -export const ListWithDetailMasterItem = ({ - index, - childLabel, - selected, - enabled, - handleSelect, - removeItem, - path, - translations, - disableRemove, -}: StatePropsOfMasterItem) => { - return ( - - - {index + 1} - - - {enabled && !disableRemove && ( - - - - - - - - )} - - ); -}; - -export default withJsonFormsMasterListItemProps(ListWithDetailMasterItem); diff --git a/packages/material-renderers/src/additional/MaterialLabelRenderer.tsx b/packages/material-renderers/src/additional/MaterialLabelRenderer.tsx deleted file mode 100644 index 1ff1c50850..0000000000 --- a/packages/material-renderers/src/additional/MaterialLabelRenderer.tsx +++ /dev/null @@ -1,49 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { LabelProps, RankedTester, rankWith, uiTypeIs } from '@jsonforms/core'; -import { withJsonFormsLabelProps } from '@jsonforms/react'; -import { Typography } from '@mui/material'; - -/** - * Default tester for a label. - * @type {RankedTester} - */ -export const materialLabelRendererTester: RankedTester = rankWith( - 1, - uiTypeIs('Label') -); - -/** - * Default renderer for a label. - */ -export const MaterialLabelRenderer = ({ text, visible }: LabelProps) => { - if (!visible) { - return null; - } - return {text}; -}; - -export default withJsonFormsLabelProps(MaterialLabelRenderer); diff --git a/packages/material-renderers/src/additional/MaterialListWithDetailRenderer.tsx b/packages/material-renderers/src/additional/MaterialListWithDetailRenderer.tsx deleted file mode 100644 index 22cbc22298..0000000000 --- a/packages/material-renderers/src/additional/MaterialListWithDetailRenderer.tsx +++ /dev/null @@ -1,188 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - and, - ArrayLayoutProps, - ArrayTranslations, - composePaths, - computeLabel, - createDefaultValue, - findUISchema, - isObjectArray, - RankedTester, - rankWith, - uiTypeIs, -} from '@jsonforms/core'; -import { - JsonFormsDispatch, - withArrayTranslationProps, - withJsonFormsArrayLayoutProps, - withTranslateProps, -} from '@jsonforms/react'; -import { Grid, List, Typography } from '@mui/material'; -import map from 'lodash/map'; -import range from 'lodash/range'; -import React, { useCallback, useMemo, useState } from 'react'; -import { ArrayLayoutToolbar } from '../layouts/ArrayToolbar'; -import ListWithDetailMasterItem from './ListWithDetailMasterItem'; -import merge from 'lodash/merge'; - -export const MaterialListWithDetailRenderer = ({ - uischemas, - schema, - uischema, - path, - enabled, - errors, - visible, - label, - required, - removeItems, - addItem, - data, - renderers, - cells, - config, - rootSchema, - description, - disableAdd, - disableRemove, - translations, -}: ArrayLayoutProps & { translations: ArrayTranslations }) => { - const [selectedIndex, setSelectedIndex] = useState(undefined); - const handleRemoveItem = useCallback( - (p: string, value: any) => () => { - removeItems(p, [value])(); - if (selectedIndex === value) { - setSelectedIndex(undefined); - } else if (selectedIndex > value) { - setSelectedIndex(selectedIndex - 1); - } - }, - [removeItems, setSelectedIndex] - ); - const handleListItemClick = useCallback( - (index: number) => () => setSelectedIndex(index), - [setSelectedIndex] - ); - const handleCreateDefaultValue = useCallback( - () => createDefaultValue(schema, rootSchema), - [createDefaultValue] - ); - const foundUISchema = useMemo( - () => - findUISchema( - uischemas, - schema, - uischema.scope, - path, - undefined, - uischema, - rootSchema - ), - [uischemas, schema, uischema.scope, path, uischema, rootSchema] - ); - - const appliedUiSchemaOptions = merge({}, config, uischema.options); - const doDisableAdd = disableAdd || appliedUiSchemaOptions.disableAdd; - const doDisableRemove = disableRemove || appliedUiSchemaOptions.disableRemove; - - React.useEffect(() => { - setSelectedIndex(undefined); - }, [schema]); - - if (!visible) { - return null; - } - - return ( - <> - - - - - {data > 0 ? ( - map(range(data), (index) => ( - - )) - ) : ( -

{translations.noDataMessage}

- )} -
-
- - {selectedIndex !== undefined ? ( - - ) : ( - {translations.noSelection} - )} - -
- - ); -}; - -export const materialListWithDetailTester: RankedTester = rankWith( - 4, - and(uiTypeIs('ListWithDetail'), isObjectArray) -); - -export default withJsonFormsArrayLayoutProps( - withTranslateProps(withArrayTranslationProps(MaterialListWithDetailRenderer)) -); diff --git a/packages/material-renderers/src/additional/index.ts b/packages/material-renderers/src/additional/index.ts deleted file mode 100644 index 4583f9ffc5..0000000000 --- a/packages/material-renderers/src/additional/index.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import MaterialLabelRenderer, { - materialLabelRendererTester, -} from './MaterialLabelRenderer'; - -import MaterialListWithDetailRenderer, { - materialListWithDetailTester, -} from './MaterialListWithDetailRenderer'; - -export { - MaterialLabelRenderer, - materialLabelRendererTester, - MaterialListWithDetailRenderer, - materialListWithDetailTester, -}; - -export * from './ListWithDetailMasterItem'; diff --git a/packages/material-renderers/src/additional/unwrapped.ts b/packages/material-renderers/src/additional/unwrapped.ts deleted file mode 100644 index e100a3d658..0000000000 --- a/packages/material-renderers/src/additional/unwrapped.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { MaterialLabelRenderer } from './MaterialLabelRenderer'; - -import { MaterialListWithDetailRenderer } from './MaterialListWithDetailRenderer'; - -export const UnwrappedAdditional = { - MaterialLabelRenderer, - MaterialListWithDetailRenderer, -}; diff --git a/packages/material-renderers/src/cells/CustomizableCells.ts b/packages/material-renderers/src/cells/CustomizableCells.ts deleted file mode 100644 index ba846207e0..0000000000 --- a/packages/material-renderers/src/cells/CustomizableCells.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -export { MaterialBooleanCell } from './MaterialBooleanCell'; -export { MaterialDateCell } from './MaterialDateCell'; -export { MaterialEnumCell } from './MaterialEnumCell'; -export { MaterialIntegerCell } from './MaterialIntegerCell'; -export { MaterialNumberCell } from './MaterialNumberCell'; -export { MaterialNumberFormatCell } from './MaterialNumberFormatCell'; -export { MaterialOneOfEnumCell } from './MaterialOneOfEnumCell'; -export { MaterialTextCell } from './MaterialTextCell'; -export { MaterialTimeCell } from './MaterialTimeCell'; diff --git a/packages/material-renderers/src/cells/MaterialBooleanCell.tsx b/packages/material-renderers/src/cells/MaterialBooleanCell.tsx deleted file mode 100644 index b2e4264b25..0000000000 --- a/packages/material-renderers/src/cells/MaterialBooleanCell.tsx +++ /dev/null @@ -1,45 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - CellProps, - isBooleanControl, - RankedTester, - rankWith, - WithClassname, -} from '@jsonforms/core'; -import { withJsonFormsCellProps } from '@jsonforms/react'; -import { MuiCheckbox } from '../mui-controls/MuiCheckbox'; - -export const MaterialBooleanCell = (props: CellProps & WithClassname) => { - return ; -}; - -export const materialBooleanCellTester: RankedTester = rankWith( - 2, - isBooleanControl -); - -export default withJsonFormsCellProps(MaterialBooleanCell); diff --git a/packages/material-renderers/src/cells/MaterialBooleanToggleCell.tsx b/packages/material-renderers/src/cells/MaterialBooleanToggleCell.tsx deleted file mode 100644 index 99665c6e84..0000000000 --- a/packages/material-renderers/src/cells/MaterialBooleanToggleCell.tsx +++ /dev/null @@ -1,47 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2021 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - and, - CellProps, - isBooleanControl, - optionIs, - RankedTester, - rankWith, - WithClassname, -} from '@jsonforms/core'; -import { withJsonFormsCellProps } from '@jsonforms/react'; -import { MuiToggle } from '../mui-controls/MuiToggle'; - -export const MaterialBooleanToggleCell = (props: CellProps & WithClassname) => { - return ; -}; - -export const materialBooleanToggleCellTester: RankedTester = rankWith( - 3, - and(isBooleanControl, optionIs('toggle', true)) -); - -export default withJsonFormsCellProps(MaterialBooleanToggleCell); diff --git a/packages/material-renderers/src/cells/MaterialDateCell.tsx b/packages/material-renderers/src/cells/MaterialDateCell.tsx deleted file mode 100644 index e31cfe4d3d..0000000000 --- a/packages/material-renderers/src/cells/MaterialDateCell.tsx +++ /dev/null @@ -1,73 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - CellProps, - isDateControl, - RankedTester, - rankWith, - WithClassname, -} from '@jsonforms/core'; -import { withJsonFormsCellProps } from '@jsonforms/react'; -import merge from 'lodash/merge'; -import { useInputComponent, WithInputProps } from '../util'; - -export const MaterialDateCell = ( - props: CellProps & WithClassname & WithInputProps -) => { - const { - data, - className, - id, - enabled, - uischema, - path, - handleChange, - config, - label, - } = props; - - const InputComponent = useInputComponent(); - const appliedUiSchemaOptions = merge({}, config, uischema.options); - - return ( - ) => - handleChange(path, ev.target.value) - } - className={className} - id={id} - label={label} - disabled={!enabled} - autoFocus={appliedUiSchemaOptions.focus} - fullWidth={true} - /> - ); -}; -export const materialDateCellTester: RankedTester = rankWith(2, isDateControl); - -export default withJsonFormsCellProps(MaterialDateCell); diff --git a/packages/material-renderers/src/cells/MaterialEnumCell.tsx b/packages/material-renderers/src/cells/MaterialEnumCell.tsx deleted file mode 100644 index ec4d027e7a..0000000000 --- a/packages/material-renderers/src/cells/MaterialEnumCell.tsx +++ /dev/null @@ -1,54 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - EnumCellProps, - isEnumControl, - RankedTester, - rankWith, - WithClassname, -} from '@jsonforms/core'; -import { - TranslateProps, - withJsonFormsEnumCellProps, - withTranslateProps, -} from '@jsonforms/react'; -import { MuiSelect } from '../mui-controls/MuiSelect'; - -export const MaterialEnumCell = ( - props: EnumCellProps & WithClassname & TranslateProps -) => ; - -/** - * Default tester for enum controls. - * @type {RankedTester} - */ -export const materialEnumCellTester: RankedTester = rankWith(2, isEnumControl); - -// HOC order can be reversed with https://github.com/eclipsesource/jsonforms/issues/1987 -export default withJsonFormsEnumCellProps( - withTranslateProps(React.memo(MaterialEnumCell)), - false -); diff --git a/packages/material-renderers/src/cells/MaterialIntegerCell.tsx b/packages/material-renderers/src/cells/MaterialIntegerCell.tsx deleted file mode 100644 index 9dcafe809f..0000000000 --- a/packages/material-renderers/src/cells/MaterialIntegerCell.tsx +++ /dev/null @@ -1,44 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - CellProps, - isIntegerControl, - RankedTester, - rankWith, - WithClassname, -} from '@jsonforms/core'; -import { withJsonFormsCellProps } from '@jsonforms/react'; -import { MuiInputInteger } from '../mui-controls/MuiInputInteger'; - -export const MaterialIntegerCell = (props: CellProps & WithClassname) => ( - -); -export const materialIntegerCellTester: RankedTester = rankWith( - 2, - isIntegerControl -); - -export default withJsonFormsCellProps(MaterialIntegerCell); diff --git a/packages/material-renderers/src/cells/MaterialNumberCell.tsx b/packages/material-renderers/src/cells/MaterialNumberCell.tsx deleted file mode 100644 index fee375a2b5..0000000000 --- a/packages/material-renderers/src/cells/MaterialNumberCell.tsx +++ /dev/null @@ -1,47 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - CellProps, - isNumberControl, - RankedTester, - rankWith, - WithClassname, -} from '@jsonforms/core'; -import { withJsonFormsCellProps } from '@jsonforms/react'; -import { MuiInputNumber } from '../mui-controls/MuiInputNumber'; - -export const MaterialNumberCell = (props: CellProps & WithClassname) => ( - -); -/** - * Default tester for number controls. - * @type {RankedTester} - */ -export const materialNumberCellTester: RankedTester = rankWith( - 2, - isNumberControl -); -export default withJsonFormsCellProps(MaterialNumberCell); diff --git a/packages/material-renderers/src/cells/MaterialNumberFormatCell.tsx b/packages/material-renderers/src/cells/MaterialNumberFormatCell.tsx deleted file mode 100644 index d5b3b89f82..0000000000 --- a/packages/material-renderers/src/cells/MaterialNumberFormatCell.tsx +++ /dev/null @@ -1,49 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - CellProps, - Formatted, - isNumberFormatControl, - RankedTester, - rankWith, - WithClassname, -} from '@jsonforms/core'; -import { withJsonFormsCellProps } from '@jsonforms/react'; -import { MuiInputNumberFormat } from '../mui-controls/MuiInputNumberFormat'; - -export const MaterialNumberFormatCell = ( - props: CellProps & WithClassname & Formatted -) => ; -/** - * Default tester for text-based/string controls. - * @type {RankedTester} - */ -export const materialNumberFormatCellTester: RankedTester = rankWith( - 4, - isNumberFormatControl -); - -export default withJsonFormsCellProps(MaterialNumberFormatCell); diff --git a/packages/material-renderers/src/cells/MaterialOneOfEnumCell.tsx b/packages/material-renderers/src/cells/MaterialOneOfEnumCell.tsx deleted file mode 100644 index cc475e73bf..0000000000 --- a/packages/material-renderers/src/cells/MaterialOneOfEnumCell.tsx +++ /dev/null @@ -1,56 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - EnumCellProps, - isOneOfEnumControl, - RankedTester, - rankWith, - WithClassname, -} from '@jsonforms/core'; -import { - TranslateProps, - withJsonFormsOneOfEnumCellProps, - withTranslateProps, -} from '@jsonforms/react'; -import { MuiSelect } from '../mui-controls/MuiSelect'; - -export const MaterialOneOfEnumCell = ( - props: EnumCellProps & WithClassname & TranslateProps -) => ; - -/** - * Default tester for oneOf enum controls. - * @type {RankedTester} - */ -export const materialOneOfEnumCellTester: RankedTester = rankWith( - 2, - isOneOfEnumControl -); - -export default withJsonFormsOneOfEnumCellProps( - withTranslateProps(React.memo(MaterialOneOfEnumCell)), - false -); diff --git a/packages/material-renderers/src/cells/MaterialTextCell.tsx b/packages/material-renderers/src/cells/MaterialTextCell.tsx deleted file mode 100644 index 35100e0919..0000000000 --- a/packages/material-renderers/src/cells/MaterialTextCell.tsx +++ /dev/null @@ -1,49 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - CellProps, - isStringControl, - RankedTester, - rankWith, - WithClassname, -} from '@jsonforms/core'; -import { withJsonFormsCellProps } from '@jsonforms/react'; -import { MuiInputText } from '../mui-controls/MuiInputText'; - -export const MaterialTextCell = (props: CellProps & WithClassname) => ( - -); - -/** - * Default tester for text-based/string controls. - * @type {RankedTester} - */ -export const materialTextCellTester: RankedTester = rankWith( - 1, - isStringControl -); - -export default withJsonFormsCellProps(MaterialTextCell); diff --git a/packages/material-renderers/src/cells/MaterialTimeCell.tsx b/packages/material-renderers/src/cells/MaterialTimeCell.tsx deleted file mode 100644 index 2e820195e5..0000000000 --- a/packages/material-renderers/src/cells/MaterialTimeCell.tsx +++ /dev/null @@ -1,41 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - CellProps, - isTimeControl, - RankedTester, - rankWith, - WithClassname, -} from '@jsonforms/core'; -import { withJsonFormsCellProps } from '@jsonforms/react'; -import { MuiInputTime } from '../mui-controls/MuiInputTime'; - -export const MaterialTimeCell = (props: CellProps & WithClassname) => ( - -); -export const materialTimeCellTester: RankedTester = rankWith(2, isTimeControl); - -export default withJsonFormsCellProps(MaterialTimeCell); diff --git a/packages/material-renderers/src/cells/index.ts b/packages/material-renderers/src/cells/index.ts deleted file mode 100644 index 5018750ce6..0000000000 --- a/packages/material-renderers/src/cells/index.ts +++ /dev/null @@ -1,71 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import MaterialBooleanCell, { - materialBooleanCellTester, -} from './MaterialBooleanCell'; -import MaterialBooleanToggleCell, { - materialBooleanToggleCellTester, -} from './MaterialBooleanToggleCell'; -import MaterialDateCell, { materialDateCellTester } from './MaterialDateCell'; -import MaterialEnumCell, { materialEnumCellTester } from './MaterialEnumCell'; -import MaterialIntegerCell, { - materialIntegerCellTester, -} from './MaterialIntegerCell'; -import MaterialNumberCell, { - materialNumberCellTester, -} from './MaterialNumberCell'; -import MaterialNumberFormatCell, { - materialNumberFormatCellTester, -} from './MaterialNumberFormatCell'; -import MaterialOneOfEnumCell, { - materialOneOfEnumCellTester, -} from './MaterialOneOfEnumCell'; -import MaterialTextCell, { materialTextCellTester } from './MaterialTextCell'; -import MaterialTimeCell, { materialTimeCellTester } from './MaterialTimeCell'; - -export { - MaterialBooleanCell, - materialBooleanCellTester, - MaterialBooleanToggleCell, - materialBooleanToggleCellTester, - MaterialDateCell, - materialDateCellTester, - MaterialEnumCell, - materialEnumCellTester, - MaterialIntegerCell, - materialIntegerCellTester, - MaterialNumberCell, - materialNumberCellTester, - MaterialNumberFormatCell, - materialNumberFormatCellTester, - MaterialOneOfEnumCell, - materialOneOfEnumCellTester, - MaterialTextCell, - materialTextCellTester, - MaterialTimeCell, - materialTimeCellTester, -}; -import * as Customizable from './CustomizableCells'; -export { Customizable }; diff --git a/packages/material-renderers/src/complex/CombinatorProperties.tsx b/packages/material-renderers/src/complex/CombinatorProperties.tsx deleted file mode 100644 index 74ec5e5aca..0000000000 --- a/packages/material-renderers/src/complex/CombinatorProperties.tsx +++ /dev/null @@ -1,80 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - Generate, - JsonSchema, - UISchemaElement, - isLayout, -} from '@jsonforms/core'; -import { JsonFormsDispatch } from '@jsonforms/react'; -import omit from 'lodash/omit'; - -interface CombinatorPropertiesProps { - schema: JsonSchema; - combinatorKeyword: 'oneOf' | 'anyOf'; - path: string; - rootSchema: JsonSchema; -} - -export class CombinatorProperties extends React.Component< - CombinatorPropertiesProps, - // TODO fix @typescript-eslint/ban-types - // eslint-disable-next-line @typescript-eslint/ban-types - {} -> { - render() { - const { schema, combinatorKeyword, path, rootSchema } = this.props; - - const otherProps: JsonSchema = omit( - schema, - combinatorKeyword - ) as JsonSchema; - const foundUISchema: UISchemaElement = Generate.uiSchema( - otherProps, - 'VerticalLayout', - undefined, - rootSchema - ); - let isLayoutWithElements = false; - if (foundUISchema !== null && isLayout(foundUISchema)) { - isLayoutWithElements = foundUISchema.elements.length > 0; - } - - if (isLayoutWithElements) { - return ( - - ); - } - - return null; - } -} - -export default CombinatorProperties; diff --git a/packages/material-renderers/src/complex/DeleteDialog.tsx b/packages/material-renderers/src/complex/DeleteDialog.tsx deleted file mode 100644 index 23d16a3aed..0000000000 --- a/packages/material-renderers/src/complex/DeleteDialog.tsx +++ /dev/null @@ -1,84 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - Button, - Dialog, - DialogActions, - DialogContent, - DialogContentText, - DialogTitle, -} from '@mui/material'; - -export interface DeleteDialogProps { - open: boolean; - onClose(): void; - onConfirm(): void; - onCancel(): void; - title: string; - message: string; - acceptText: string; - declineText: string; -} - -export interface WithDeleteDialogSupport { - openDeleteDialog(path: string, data: number): void; -} - -export const DeleteDialog = React.memo(function DeleteDialog({ - open, - onClose, - onConfirm, - onCancel, - title, - message, - acceptText, - declineText, -}: DeleteDialogProps) { - return ( - - {title} - - - {message} - - - - - - - - ); -}); diff --git a/packages/material-renderers/src/complex/MaterialAllOfRenderer.tsx b/packages/material-renderers/src/complex/MaterialAllOfRenderer.tsx deleted file mode 100644 index 213fe41c09..0000000000 --- a/packages/material-renderers/src/complex/MaterialAllOfRenderer.tsx +++ /dev/null @@ -1,99 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; - -import { - createCombinatorRenderInfos, - findMatchingUISchema, - isAllOfControl, - JsonSchema, - RankedTester, - rankWith, - StatePropsOfCombinator, -} from '@jsonforms/core'; -import { JsonFormsDispatch, withJsonFormsAllOfProps } from '@jsonforms/react'; - -export const MaterialAllOfRenderer = ({ - schema, - rootSchema, - visible, - renderers, - cells, - path, - uischemas, - uischema, -}: StatePropsOfCombinator) => { - const delegateUISchema = findMatchingUISchema(uischemas)( - schema, - uischema.scope, - path - ); - - if (!visible) { - return null; - } - - if (delegateUISchema) { - return ( - - ); - } - const allOfRenderInfos = createCombinatorRenderInfos( - (schema as JsonSchema).allOf, - rootSchema, - 'allOf', - uischema, - path, - uischemas - ); - - return ( - <> - {allOfRenderInfos.map((allOfRenderInfo, allOfIndex) => ( - - ))} - - ); -}; - -export const materialAllOfControlTester: RankedTester = rankWith( - 3, - isAllOfControl -); - -export default withJsonFormsAllOfProps(MaterialAllOfRenderer); diff --git a/packages/material-renderers/src/complex/MaterialAnyOfRenderer.tsx b/packages/material-renderers/src/complex/MaterialAnyOfRenderer.tsx deleted file mode 100644 index 6475d91f16..0000000000 --- a/packages/material-renderers/src/complex/MaterialAnyOfRenderer.tsx +++ /dev/null @@ -1,153 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React, { useCallback, useState } from 'react'; - -import { - CombinatorRendererProps, - createCombinatorRenderInfos, - createDefaultValue, - isAnyOfControl, - JsonSchema, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { JsonFormsDispatch, withJsonFormsAnyOfProps } from '@jsonforms/react'; -import { Tab, Tabs } from '@mui/material'; -import CombinatorProperties from './CombinatorProperties'; -import isEmpty from 'lodash/isEmpty'; -import { TabSwitchConfirmDialog } from './TabSwitchConfirmDialog'; - -export const MaterialAnyOfRenderer = ({ - handleChange, - schema, - rootSchema, - indexOfFittingSchema, - visible, - path, - renderers, - cells, - uischema, - uischemas, - id, - data, -}: CombinatorRendererProps) => { - const [selectedAnyOf, setSelectedAnyOf] = useState(indexOfFittingSchema || 0); - const [confirmDialogOpen, setConfirmDialogOpen] = useState(false); - const [newSelectedIndex, setNewSelectedIndex] = useState(0); - - const handleClose = useCallback( - () => setConfirmDialogOpen(false), - [setConfirmDialogOpen] - ); - - const handleTabChange = useCallback( - (_event: any, newIndex: number) => { - if ( - isEmpty(data) || - typeof data === - typeof createDefaultValue( - anyOfRenderInfos[newIndex].schema, - rootSchema - ) - ) { - setSelectedAnyOf(newIndex); - } else { - setNewSelectedIndex(newIndex); - setConfirmDialogOpen(true); - } - }, - [setConfirmDialogOpen, setSelectedAnyOf, data] - ); - - const openNewTab = (newIndex: number) => { - handleChange( - path, - createDefaultValue(anyOfRenderInfos[newIndex].schema, rootSchema) - ); - setSelectedAnyOf(newIndex); - }; - - const confirm = useCallback(() => { - openNewTab(newSelectedIndex); - setConfirmDialogOpen(false); - }, [handleChange, createDefaultValue, newSelectedIndex]); - - const anyOf = 'anyOf'; - const anyOfRenderInfos = createCombinatorRenderInfos( - (schema as JsonSchema).anyOf, - rootSchema, - anyOf, - uischema, - path, - uischemas - ); - - if (!visible) { - return null; - } - - return ( - <> - - - {anyOfRenderInfos.map((anyOfRenderInfo) => ( - - ))} - - {anyOfRenderInfos.map( - (anyOfRenderInfo, anyOfIndex) => - selectedAnyOf === anyOfIndex && ( - - ) - )} - - - ); -}; - -export const materialAnyOfControlTester: RankedTester = rankWith( - 3, - isAnyOfControl -); - -export default withJsonFormsAnyOfProps(MaterialAnyOfRenderer); diff --git a/packages/material-renderers/src/complex/MaterialArrayControlRenderer.tsx b/packages/material-renderers/src/complex/MaterialArrayControlRenderer.tsx deleted file mode 100644 index 8906ccbbb1..0000000000 --- a/packages/material-renderers/src/complex/MaterialArrayControlRenderer.tsx +++ /dev/null @@ -1,99 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React, { useCallback, useState } from 'react'; -import { - ArrayLayoutProps, - ArrayTranslations, - RankedTester, - isObjectArrayControl, - isPrimitiveArrayControl, - or, - rankWith, -} from '@jsonforms/core'; -import { - withArrayTranslationProps, - withJsonFormsArrayLayoutProps, - withTranslateProps, -} from '@jsonforms/react'; -import { MaterialTableControl } from './MaterialTableControl'; -import { DeleteDialog } from './DeleteDialog'; - -export const MaterialArrayControlRenderer = ( - props: ArrayLayoutProps & { translations: ArrayTranslations } -) => { - const [open, setOpen] = useState(false); - const [path, setPath] = useState(undefined); - const [rowData, setRowData] = useState(undefined); - const { removeItems, visible, translations } = props; - - const openDeleteDialog = useCallback( - (p: string, rowIndex: number) => { - setOpen(true); - setPath(p); - setRowData(rowIndex); - }, - [setOpen, setPath, setRowData] - ); - const deleteCancel = useCallback(() => setOpen(false), [setOpen]); - const deleteConfirm = useCallback(() => { - const p = path.substring(0, path.lastIndexOf('.')); - removeItems(p, [rowData])(); - setOpen(false); - }, [setOpen, path, rowData]); - const deleteClose = useCallback(() => setOpen(false), [setOpen]); - - if (!visible) { - return null; - } - - return ( - <> - - - - ); -}; - -export const materialArrayControlTester: RankedTester = rankWith( - 3, - or(isObjectArrayControl, isPrimitiveArrayControl) -); - -export default withJsonFormsArrayLayoutProps( - withTranslateProps(withArrayTranslationProps(MaterialArrayControlRenderer)) -); diff --git a/packages/material-renderers/src/complex/MaterialEnumArrayRenderer.tsx b/packages/material-renderers/src/complex/MaterialEnumArrayRenderer.tsx deleted file mode 100644 index d82659febc..0000000000 --- a/packages/material-renderers/src/complex/MaterialEnumArrayRenderer.tsx +++ /dev/null @@ -1,152 +0,0 @@ -import { - and, - ControlProps, - DispatchPropsOfMultiEnumControl, - hasType, - isDescriptionHidden, - JsonSchema, - OwnPropsOfEnum, - Paths, - RankedTester, - rankWith, - resolveSchema, - schemaMatches, - schemaSubPathMatches, - showAsRequired, - uiTypeIs, -} from '@jsonforms/core'; - -import { withJsonFormsMultiEnumProps } from '@jsonforms/react'; -import { MuiCheckbox } from '../mui-controls'; -import { - FormControl, - FormControlLabel, - FormGroup, - FormHelperText, - FormLabel, -} from '@mui/material'; -import isEmpty from 'lodash/isEmpty'; -import React from 'react'; -import merge from 'lodash/merge'; -import { useFocus } from '../util'; - -export const MaterialEnumArrayRenderer = ({ - config, - id, - schema, - visible, - errors, - description, - label, - required, - path, - options, - data, - addItem, - removeItem, - handleChange: _handleChange, - ...otherProps -}: ControlProps & OwnPropsOfEnum & DispatchPropsOfMultiEnumControl) => { - const [focused, onFocus, onBlur] = useFocus(); - const isValid = errors.length === 0; - const appliedUiSchemaOptions = merge({}, config, otherProps.uischema.options); - const showDescription = !isDescriptionHidden( - visible, - description, - focused, - appliedUiSchemaOptions.showUnfocusedDescription - ); - - if (!visible) { - return null; - } - - return ( - - - {label} - - - {options.map((option: any, index: number) => { - const optionPath = Paths.compose(path, `${index}`); - const checkboxValue = data?.includes(option.value) - ? option.value - : undefined; - return ( - - newValue - ? addItem(path, option.value) - : removeItem(path, option.value) - } - data={checkboxValue} - errors={errors} - schema={schema} - visible={visible} - {...otherProps} - /> - } - label={option.label} - /> - ); - })} - - - {!isValid ? errors : showDescription ? description : null} - - - ); -}; - -const hasOneOfItems = (schema: JsonSchema): boolean => - schema.oneOf !== undefined && - schema.oneOf.length > 0 && - (schema.oneOf as JsonSchema[]).every((entry: JsonSchema) => { - return entry.const !== undefined; - }); - -const hasEnumItems = (schema: JsonSchema): boolean => - schema.type === 'string' && schema.enum !== undefined; - -export const materialEnumArrayRendererTester: RankedTester = rankWith( - 5, - and( - uiTypeIs('Control'), - and( - schemaMatches( - (schema) => - hasType(schema, 'array') && - !Array.isArray(schema.items) && - schema.uniqueItems === true - ), - schemaSubPathMatches('items', (schema, rootSchema) => { - const resolvedSchema = schema.$ref - ? resolveSchema(rootSchema, schema.$ref, rootSchema) - : schema; - return hasOneOfItems(resolvedSchema) || hasEnumItems(resolvedSchema); - }) - ) - ) -); - -export default withJsonFormsMultiEnumProps(MaterialEnumArrayRenderer); diff --git a/packages/material-renderers/src/complex/MaterialObjectRenderer.tsx b/packages/material-renderers/src/complex/MaterialObjectRenderer.tsx deleted file mode 100644 index aeb170e01d..0000000000 --- a/packages/material-renderers/src/complex/MaterialObjectRenderer.tsx +++ /dev/null @@ -1,91 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import isEmpty from 'lodash/isEmpty'; -import { - findUISchema, - Generate, - isObjectControl, - RankedTester, - rankWith, - StatePropsOfControlWithDetail, -} from '@jsonforms/core'; -import { JsonFormsDispatch, withJsonFormsDetailProps } from '@jsonforms/react'; -import React, { useMemo } from 'react'; - -export const MaterialObjectRenderer = ({ - renderers, - cells, - uischemas, - schema, - label, - path, - visible, - enabled, - uischema, - rootSchema, -}: StatePropsOfControlWithDetail) => { - const detailUiSchema = useMemo( - () => - findUISchema( - uischemas, - schema, - uischema.scope, - path, - () => - isEmpty(path) - ? Generate.uiSchema(schema, 'VerticalLayout', undefined, rootSchema) - : { - ...Generate.uiSchema(schema, 'Group', undefined, rootSchema), - label, - }, - uischema, - rootSchema - ), - [uischemas, schema, uischema.scope, path, label, uischema, rootSchema] - ); - - if (!visible) { - return null; - } - - return ( - - ); -}; - -export const materialObjectControlTester: RankedTester = rankWith( - 2, - isObjectControl -); - -export default withJsonFormsDetailProps(MaterialObjectRenderer); diff --git a/packages/material-renderers/src/complex/MaterialOneOfRenderer.tsx b/packages/material-renderers/src/complex/MaterialOneOfRenderer.tsx deleted file mode 100644 index ac6aad5230..0000000000 --- a/packages/material-renderers/src/complex/MaterialOneOfRenderer.tsx +++ /dev/null @@ -1,156 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React, { useCallback, useMemo, useState } from 'react'; -import isEmpty from 'lodash/isEmpty'; - -import { TabSwitchConfirmDialog } from './TabSwitchConfirmDialog'; - -import { - CombinatorRendererProps, - createCombinatorRenderInfos, - createDefaultValue, - isOneOfControl, - JsonSchema, - OwnPropsOfControl, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { Tab, Tabs } from '@mui/material'; -import { JsonFormsDispatch, withJsonFormsOneOfProps } from '@jsonforms/react'; -import CombinatorProperties from './CombinatorProperties'; - -export interface OwnOneOfProps extends OwnPropsOfControl { - indexOfFittingSchema?: number; -} - -export const MaterialOneOfRenderer = ({ - handleChange, - schema, - path, - renderers, - cells, - rootSchema, - id, - visible, - indexOfFittingSchema, - uischema, - uischemas, - data, -}: CombinatorRendererProps) => { - const [confirmDialogOpen, setConfirmDialogOpen] = useState(false); - const [selectedIndex, setSelectedIndex] = useState(indexOfFittingSchema || 0); - const [newSelectedIndex, setNewSelectedIndex] = useState(0); - const handleClose = useCallback( - () => setConfirmDialogOpen(false), - [setConfirmDialogOpen] - ); - const cancel = useCallback(() => { - setConfirmDialogOpen(false); - }, [setConfirmDialogOpen]); - const oneOfRenderInfos = useMemo( - () => - createCombinatorRenderInfos( - (schema as JsonSchema).oneOf, - rootSchema, - 'oneOf', - uischema, - path, - uischemas - ), - [schema, rootSchema, uischema, path, uischemas] - ); - - const openNewTab = (newIndex: number) => { - handleChange( - path, - createDefaultValue(oneOfRenderInfos[newIndex].schema, rootSchema) - ); - setSelectedIndex(newIndex); - }; - - const confirm = useCallback(() => { - openNewTab(newSelectedIndex); - setConfirmDialogOpen(false); - }, [handleChange, createDefaultValue, newSelectedIndex]); - - const handleTabChange = useCallback( - (_event: any, newOneOfIndex: number) => { - setNewSelectedIndex(newOneOfIndex); - if (isEmpty(data)) { - openNewTab(newOneOfIndex); - } else { - setConfirmDialogOpen(true); - } - }, - [setConfirmDialogOpen, setSelectedIndex, data] - ); - - if (!visible) { - return null; - } - - return ( - <> - - - {oneOfRenderInfos.map((oneOfRenderInfo) => ( - - ))} - - {oneOfRenderInfos.map( - (oneOfRenderInfo, oneOfIndex) => - selectedIndex === oneOfIndex && ( - - ) - )} - - - ); -}; - -export const materialOneOfControlTester: RankedTester = rankWith( - 3, - isOneOfControl -); - -export default withJsonFormsOneOfProps(MaterialOneOfRenderer); diff --git a/packages/material-renderers/src/complex/MaterialTableControl.tsx b/packages/material-renderers/src/complex/MaterialTableControl.tsx deleted file mode 100644 index bd14a95b94..0000000000 --- a/packages/material-renderers/src/complex/MaterialTableControl.tsx +++ /dev/null @@ -1,527 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import isEmpty from 'lodash/isEmpty'; -import union from 'lodash/union'; -import { - DispatchCell, - JsonFormsStateContext, - useJsonForms, -} from '@jsonforms/react'; -import startCase from 'lodash/startCase'; -import range from 'lodash/range'; -import React, { Fragment, useMemo } from 'react'; -import { - FormHelperText, - Grid, - IconButton, - Table, - TableBody, - TableCell, - TableHead, - TableRow, - Tooltip, - Typography, -} from '@mui/material'; -import { - ArrayLayoutProps, - ControlElement, - errorAt, - formatErrorMessage, - JsonSchema, - Paths, - Resolve, - JsonFormsRendererRegistryEntry, - JsonFormsCellRendererRegistryEntry, - encode, - ArrayTranslations, -} from '@jsonforms/core'; -import DeleteIcon from '@mui/icons-material/Delete'; -import ArrowDownward from '@mui/icons-material/ArrowDownward'; -import ArrowUpward from '@mui/icons-material/ArrowUpward'; - -import { WithDeleteDialogSupport } from './DeleteDialog'; -import NoBorderTableCell from './NoBorderTableCell'; -import TableToolbar from './TableToolbar'; -import { ErrorObject } from 'ajv'; -import merge from 'lodash/merge'; - -// we want a cell that doesn't automatically span -const styles = { - fixedCell: { - width: '150px', - height: '50px', - paddingLeft: 0, - paddingRight: 0, - textAlign: 'center', - }, - fixedCellSmall: { - width: '50px', - height: '50px', - paddingLeft: 0, - paddingRight: 0, - textAlign: 'center', - }, -}; - -const generateCells = ( - Cell: React.ComponentType, - schema: JsonSchema, - rowPath: string, - enabled: boolean, - cells?: JsonFormsCellRendererRegistryEntry[] -) => { - if (schema.type === 'object') { - return getValidColumnProps(schema).map((prop) => { - const cellPath = Paths.compose(rowPath, prop); - const props = { - propName: prop, - schema, - title: schema.properties?.[prop]?.title ?? startCase(prop), - rowPath, - cellPath, - enabled, - cells, - }; - return ; - }); - } else { - // primitives - const props = { - schema, - rowPath, - cellPath: rowPath, - enabled, - }; - return ; - } -}; - -const getValidColumnProps = (scopedSchema: JsonSchema) => { - if ( - scopedSchema.type === 'object' && - typeof scopedSchema.properties === 'object' - ) { - return Object.keys(scopedSchema.properties).filter( - (prop) => scopedSchema.properties[prop].type !== 'array' - ); - } - // primitives - return ['']; -}; - -export interface EmptyTableProps { - numColumns: number; - translations: ArrayTranslations; -} - -const EmptyTable = ({ numColumns, translations }: EmptyTableProps) => ( - - - {translations.noDataMessage} - - -); - -interface TableHeaderCellProps { - title: string; -} - -const TableHeaderCell = React.memo(function TableHeaderCell({ - title, -}: TableHeaderCellProps) { - return {title}; -}); - -interface NonEmptyCellProps extends OwnPropsOfNonEmptyCell { - rootSchema: JsonSchema; - errors: string; - path: string; - enabled: boolean; -} -interface OwnPropsOfNonEmptyCell { - rowPath: string; - propName?: string; - schema: JsonSchema; - enabled: boolean; - renderers?: JsonFormsRendererRegistryEntry[]; - cells?: JsonFormsCellRendererRegistryEntry[]; -} -const ctxToNonEmptyCellProps = ( - ctx: JsonFormsStateContext, - ownProps: OwnPropsOfNonEmptyCell -): NonEmptyCellProps => { - const path = - ownProps.rowPath + - (ownProps.schema.type === 'object' ? '.' + ownProps.propName : ''); - const errors = formatErrorMessage( - union( - errorAt( - path, - ownProps.schema - )(ctx.core).map((error: ErrorObject) => error.message) - ) - ); - return { - rowPath: ownProps.rowPath, - propName: ownProps.propName, - schema: ownProps.schema, - rootSchema: ctx.core.schema, - errors, - path, - enabled: ownProps.enabled, - cells: ownProps.cells || ctx.cells, - renderers: ownProps.renderers || ctx.renderers, - }; -}; - -const controlWithoutLabel = (scope: string): ControlElement => ({ - type: 'Control', - scope: scope, - label: false, -}); - -interface NonEmptyCellComponentProps { - path: string; - propName?: string; - schema: JsonSchema; - rootSchema: JsonSchema; - errors: string; - enabled: boolean; - renderers?: JsonFormsRendererRegistryEntry[]; - cells?: JsonFormsCellRendererRegistryEntry[]; - isValid: boolean; -} -const NonEmptyCellComponent = React.memo(function NonEmptyCellComponent({ - path, - propName, - schema, - rootSchema, - errors, - enabled, - renderers, - cells, - isValid, -}: NonEmptyCellComponentProps) { - return ( - - {schema.properties ? ( - - ) : ( - - )} - {!isValid && errors} - - ); -}); - -const NonEmptyCell = (ownProps: OwnPropsOfNonEmptyCell) => { - const ctx = useJsonForms(); - const emptyCellProps = ctxToNonEmptyCellProps(ctx, ownProps); - - const isValid = isEmpty(emptyCellProps.errors); - return ; -}; - -interface NonEmptyRowProps { - childPath: string; - schema: JsonSchema; - rowIndex: number; - moveUpCreator: (path: string, position: number) => () => void; - moveDownCreator: (path: string, position: number) => () => void; - enableUp: boolean; - enableDown: boolean; - showSortButtons: boolean; - enabled: boolean; - cells?: JsonFormsCellRendererRegistryEntry[]; - path: string; - translations: ArrayTranslations; - disableRemove?: boolean; -} - -const NonEmptyRowComponent = ({ - childPath, - schema, - rowIndex, - openDeleteDialog, - moveUpCreator, - moveDownCreator, - enableUp, - enableDown, - showSortButtons, - enabled, - cells, - path, - translations, - disableRemove, -}: NonEmptyRowProps & WithDeleteDialogSupport) => { - const moveUp = useMemo( - () => moveUpCreator(path, rowIndex), - [moveUpCreator, path, rowIndex] - ); - const moveDown = useMemo( - () => moveDownCreator(path, rowIndex), - [moveDownCreator, path, rowIndex] - ); - return ( - - {generateCells(NonEmptyCell, schema, childPath, enabled, cells)} - {enabled ? ( - - - {showSortButtons ? ( - - - - - - - - - - - - - - - - - ) : null} - {!disableRemove ? ( - - - openDeleteDialog(childPath, rowIndex)} - size='large' - > - - - - - ) : null} - - - ) : null} - - ); -}; -export const NonEmptyRow = React.memo(NonEmptyRowComponent); -interface TableRowsProp { - data: number; - path: string; - schema: JsonSchema; - uischema: ControlElement; - config?: any; - enabled: boolean; - cells?: JsonFormsCellRendererRegistryEntry[]; - moveUp?(path: string, toMove: number): () => void; - moveDown?(path: string, toMove: number): () => void; - translations: ArrayTranslations; - disableRemove?: boolean; -} -const TableRows = ({ - data, - path, - schema, - openDeleteDialog, - moveUp, - moveDown, - uischema, - config, - enabled, - cells, - translations, - disableRemove, -}: TableRowsProp & WithDeleteDialogSupport) => { - const isEmptyTable = data === 0; - - if (isEmptyTable) { - return ( - - ); - } - - const appliedUiSchemaOptions = merge({}, config, uischema.options); - - return ( - - {range(data).map((index: number) => { - const childPath = Paths.compose(path, `${index}`); - - return ( - - ); - })} - - ); -}; - -export class MaterialTableControl extends React.Component< - ArrayLayoutProps & - WithDeleteDialogSupport & { translations: ArrayTranslations }, - any -> { - addItem = (path: string, value: any) => this.props.addItem(path, value); - render() { - const { - label, - description, - path, - schema, - rootSchema, - uischema, - errors, - openDeleteDialog, - visible, - enabled, - cells, - translations, - disableAdd, - disableRemove, - config, - } = this.props; - - const appliedUiSchemaOptions = merge({}, config, uischema.options); - const doDisableAdd = disableAdd || appliedUiSchemaOptions.disableAdd; - const doDisableRemove = - disableRemove || appliedUiSchemaOptions.disableRemove; - - const controlElement = uischema as ControlElement; - const isObjectSchema = schema.type === 'object'; - const headerCells: any = isObjectSchema - ? generateCells(TableHeaderCell, schema, path, enabled, cells) - : undefined; - - if (!visible) { - return null; - } - - return ( - - - - {isObjectSchema && ( - - {headerCells} - {enabled ? : null} - - )} - - - - -
- ); - } -} diff --git a/packages/material-renderers/src/complex/NoBorderTableCell.tsx b/packages/material-renderers/src/complex/NoBorderTableCell.tsx deleted file mode 100644 index d8e1218457..0000000000 --- a/packages/material-renderers/src/complex/NoBorderTableCell.tsx +++ /dev/null @@ -1,37 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { styled } from '@mui/material/styles'; -import { TableCell } from '@mui/material'; -import React from 'react'; - -const StyledTableCell = styled(TableCell)({ - borderBottom: 'none', -}); - -const NoBorderTableCell = ({ children, ...otherProps }: any) => ( - {children} -); - -export default NoBorderTableCell; diff --git a/packages/material-renderers/src/complex/TabSwitchConfirmDialog.tsx b/packages/material-renderers/src/complex/TabSwitchConfirmDialog.tsx deleted file mode 100644 index eb8e699372..0000000000 --- a/packages/material-renderers/src/complex/TabSwitchConfirmDialog.tsx +++ /dev/null @@ -1,56 +0,0 @@ -import React from 'react'; - -import { - Button, - Dialog, - DialogActions, - DialogContent, - DialogContentText, - DialogTitle, -} from '@mui/material'; - -export interface TabSwitchConfirmDialogProps { - open: boolean; - handleClose: () => void; - confirm: () => void; - cancel: () => void; - id: string; -} - -export const TabSwitchConfirmDialog = ({ - open, - handleClose, - confirm, - cancel, - id, -}: TabSwitchConfirmDialogProps) => { - return ( - - {'Clear form?'} - - - Your data will be cleared if you navigate away from this tab. Do you - want to proceed? - - - - - - - - ); -}; diff --git a/packages/material-renderers/src/complex/TableToolbar.tsx b/packages/material-renderers/src/complex/TableToolbar.tsx deleted file mode 100644 index c23c009d5b..0000000000 --- a/packages/material-renderers/src/complex/TableToolbar.tsx +++ /dev/null @@ -1,126 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - ControlElement, - createDefaultValue, - JsonSchema, - ArrayTranslations, -} from '@jsonforms/core'; -import { - IconButton, - TableRow, - Tooltip, - Grid, - Typography, - FormHelperText, - Stack, -} from '@mui/material'; -import AddIcon from '@mui/icons-material/Add'; -import ValidationIcon from './ValidationIcon'; -import NoBorderTableCell from './NoBorderTableCell'; - -export interface MaterialTableToolbarProps { - numColumns: number; - errors: string; - label: string; - description: string; - path: string; - uischema: ControlElement; - schema: JsonSchema; - rootSchema: JsonSchema; - enabled: boolean; - translations: ArrayTranslations; - addItem(path: string, value: any): () => void; - disableAdd?: boolean; -} - -const fixedCellSmall = { - paddingLeft: 0, - paddingRight: 0, -}; - -const TableToolbar = React.memo(function TableToolbar({ - numColumns, - errors, - label, - description, - path, - addItem, - schema, - enabled, - translations, - rootSchema, - disableAdd, -}: MaterialTableToolbarProps) { - return ( - - - - - - {label} - - - {errors.length !== 0 && ( - - - - )} - - - {description && {description}} - - - {enabled && !disableAdd ? ( - - - - - - - - ) : null} - - ); -}); - -export default TableToolbar; diff --git a/packages/material-renderers/src/complex/ValidationIcon.tsx b/packages/material-renderers/src/complex/ValidationIcon.tsx deleted file mode 100644 index 21fb98166a..0000000000 --- a/packages/material-renderers/src/complex/ValidationIcon.tsx +++ /dev/null @@ -1,49 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; - -import ErrorOutlineIcon from '@mui/icons-material/ErrorOutline'; -import { Badge, Tooltip, styled } from '@mui/material'; - -const StyledBadge = styled(Badge)(({ theme }: any) => ({ - color: theme.palette.error.main, -})); - -export interface ValidationProps { - errorMessages: string; - id: string; -} - -const ValidationIcon: React.FC = ({ errorMessages, id }) => { - return ( - - - - - - ); -}; - -export default ValidationIcon; diff --git a/packages/material-renderers/src/complex/index.ts b/packages/material-renderers/src/complex/index.ts deleted file mode 100644 index 8331cb7812..0000000000 --- a/packages/material-renderers/src/complex/index.ts +++ /dev/null @@ -1,66 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import MaterialAllOfRenderer, { - materialAllOfControlTester, -} from './MaterialAllOfRenderer'; -import MaterialAnyOfRenderer, { - materialAnyOfControlTester, -} from './MaterialAnyOfRenderer'; -import MaterialArrayControlRenderer, { - materialArrayControlTester, -} from './MaterialArrayControlRenderer'; -import MaterialEnumArrayRenderer, { - materialEnumArrayRendererTester, -} from './MaterialEnumArrayRenderer'; -import MaterialObjectRenderer, { - materialObjectControlTester, -} from './MaterialObjectRenderer'; -import MaterialOneOfRenderer, { - materialOneOfControlTester, -} from './MaterialOneOfRenderer'; - -export { - materialAllOfControlTester, - MaterialAllOfRenderer, - materialAnyOfControlTester, - MaterialAnyOfRenderer, - materialArrayControlTester, - MaterialArrayControlRenderer, - materialEnumArrayRendererTester, - MaterialEnumArrayRenderer, - materialObjectControlTester, - MaterialObjectRenderer, - materialOneOfControlTester, - MaterialOneOfRenderer, -}; - -export * from './CombinatorProperties'; -export * from './DeleteDialog'; -export * from './MaterialTableControl'; -export * from './TableToolbar'; -export * from './ValidationIcon'; - -import NoBorderTableCell from './NoBorderTableCell'; -export { NoBorderTableCell }; diff --git a/packages/material-renderers/src/complex/unwrapped.ts b/packages/material-renderers/src/complex/unwrapped.ts deleted file mode 100644 index 63b5bb6d97..0000000000 --- a/packages/material-renderers/src/complex/unwrapped.ts +++ /dev/null @@ -1,39 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { MaterialAllOfRenderer } from './MaterialAllOfRenderer'; -import { MaterialAnyOfRenderer } from './MaterialAnyOfRenderer'; -import { MaterialArrayControlRenderer } from './MaterialArrayControlRenderer'; -import { MaterialEnumArrayRenderer } from './MaterialEnumArrayRenderer'; -import { MaterialObjectRenderer } from './MaterialObjectRenderer'; -import { MaterialOneOfRenderer } from './MaterialOneOfRenderer'; - -export const UnwrappedComplex = { - MaterialAllOfRenderer, - MaterialAnyOfRenderer, - MaterialArrayControlRenderer, - MaterialEnumArrayRenderer, - MaterialObjectRenderer, - MaterialOneOfRenderer, -}; diff --git a/packages/material-renderers/src/controls/MaterialAnyOfStringOrEnumControl.tsx b/packages/material-renderers/src/controls/MaterialAnyOfStringOrEnumControl.tsx deleted file mode 100644 index 87939a32c0..0000000000 --- a/packages/material-renderers/src/controls/MaterialAnyOfStringOrEnumControl.tsx +++ /dev/null @@ -1,162 +0,0 @@ -/* - The MIT License - - Copyright (c) 2018-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - and, - ControlProps, - ControlState, - EnumCellProps, - JsonSchema, - RankedTester, - rankWith, - schemaMatches, - uiTypeIs, - WithClassname, -} from '@jsonforms/core'; -import { Control, withJsonFormsControlProps } from '@jsonforms/react'; -import { InputBaseComponentProps } from '@mui/material'; -import merge from 'lodash/merge'; -import React, { useMemo } from 'react'; -import { - useDebouncedChange, - useInputComponent, - WithInputProps, - useFocus, -} from '../util'; -import { MaterialInputControl } from './MaterialInputControl'; - -const findEnumSchema = (schemas: JsonSchema[]) => - schemas.find( - (s) => s.enum !== undefined && (s.type === 'string' || s.type === undefined) - ); -const findTextSchema = (schemas: JsonSchema[]) => - schemas.find((s) => s.type === 'string' && s.enum === undefined); - -const MuiAutocompleteInputText = ( - props: EnumCellProps & WithClassname & WithInputProps -) => { - const [focused, onFocus, onBlur] = useFocus(); - const { - data, - config, - className, - id, - enabled, - uischema, - isValid, - path, - handleChange, - schema, - label, - } = props; - const InputComponent = useInputComponent(); - const enumSchema = findEnumSchema(schema.anyOf); - const stringSchema = findTextSchema(schema.anyOf); - const maxLength = stringSchema.maxLength; - const appliedUiSchemaOptions = useMemo( - () => merge({}, config, uischema.options), - [config, uischema.options] - ); - const inputProps: InputBaseComponentProps = useMemo(() => { - let propMemo: InputBaseComponentProps = {}; - if (appliedUiSchemaOptions.restrict) { - propMemo = { maxLength: maxLength }; - } - if (appliedUiSchemaOptions.trim && maxLength !== undefined) { - propMemo.size = maxLength; - } - propMemo.list = props.id + 'datalist'; - return propMemo; - }, [appliedUiSchemaOptions, props.id]); - const [inputText, onChange] = useDebouncedChange( - handleChange, - '', - data, - path, - undefined, - undefined, - true, - focused - ); - - const dataList = ( - - {enumSchema.enum.map((optionValue) => ( - - ); - return ( - - ); -}; - -export class MaterialAnyOfStringOrEnumControl extends Control< - ControlProps, - ControlState -> { - render() { - return ( - - ); - } -} -const hasEnumAndText = (schemas: JsonSchema[]) => { - // idea: map to type,enum and check that all types are string and at least one item is of type enum, - const enumSchema = findEnumSchema(schemas); - const stringSchema = findTextSchema(schemas); - const remainingSchemas = schemas.filter( - (s) => s !== enumSchema || s !== stringSchema - ); - const wrongType = remainingSchemas.find((s) => s.type && s.type !== 'string'); - return enumSchema && stringSchema && !wrongType; -}; -const simpleAnyOf = and( - uiTypeIs('Control'), - schemaMatches( - (schema) => - Object.prototype.hasOwnProperty.call(schema, 'anyOf') && - hasEnumAndText(schema.anyOf) - ) -); -export const materialAnyOfStringOrEnumControlTester: RankedTester = rankWith( - 5, - simpleAnyOf -); -export default withJsonFormsControlProps(MaterialAnyOfStringOrEnumControl); diff --git a/packages/material-renderers/src/controls/MaterialBooleanControl.tsx b/packages/material-renderers/src/controls/MaterialBooleanControl.tsx deleted file mode 100644 index aefb040ec3..0000000000 --- a/packages/material-renderers/src/controls/MaterialBooleanControl.tsx +++ /dev/null @@ -1,147 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import isEmpty from 'lodash/isEmpty'; -import merge from 'lodash/merge'; -import React from 'react'; -import { - isBooleanControl, - RankedTester, - rankWith, - ControlProps, - isDescriptionHidden, -} from '@jsonforms/core'; -import { withJsonFormsControlProps } from '@jsonforms/react'; -import { FormControlLabel, FormHelperText, Tooltip } from '@mui/material'; -import { MuiCheckbox } from '../mui-controls/MuiCheckbox'; - -export const MaterialBooleanControl = ({ - data, - visible, - label, - id, - enabled, - uischema, - schema, - rootSchema, - handleChange, - errors, - path, - config, - description, -}: ControlProps) => { - const isValid = errors.length === 0; - const appliedUiSchemaOptions = merge({}, config, uischema.options); - - const showDescription = !isDescriptionHidden( - visible, - description, - // Checkboxes do not receive focus until they are used, so - // we cannot rely on focus as criteria for showing descriptions. - // So we pass "false" to treat it as unfocused. - false, - appliedUiSchemaOptions.showUnfocusedDescription - ); - - const showTooltip = - !showDescription && - !isDescriptionHidden( - visible, - description, - // Tooltips have their own focus handlers, so we do not need to rely - // on focus state here. So we pass 'true' to treat it as focused. - true, - // We also pass true here for showUnfocusedDescription since it should - // render regardless of that setting. - true - ); - - const firstFormHelperText = showDescription - ? description - : !isValid - ? errors - : null; - const secondFormHelperText = showDescription && !isValid ? errors : null; - - const descriptionIds = []; - const tooltipId = `${id}-tip`; - const helpId1 = `${id}-help1`; - const helpId2 = `${id}-help2`; - if (showTooltip) { - descriptionIds.push(tooltipId); - } - if (firstFormHelperText) { - descriptionIds.push(helpId1); - } - if (secondFormHelperText) { - descriptionIds.push(helpId2); - } - const ariaDescribedBy = descriptionIds.join(' '); - - if (!visible) { - return null; - } - - return ( - <> - - - } - /> - - - {firstFormHelperText} - - - {secondFormHelperText} - - - ); -}; - -export const materialBooleanControlTester: RankedTester = rankWith( - 2, - isBooleanControl -); -export default withJsonFormsControlProps(MaterialBooleanControl); diff --git a/packages/material-renderers/src/controls/MaterialBooleanToggleControl.tsx b/packages/material-renderers/src/controls/MaterialBooleanToggleControl.tsx deleted file mode 100644 index f1df0e9dbc..0000000000 --- a/packages/material-renderers/src/controls/MaterialBooleanToggleControl.tsx +++ /dev/null @@ -1,150 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2021 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import isEmpty from 'lodash/isEmpty'; -import merge from 'lodash/merge'; -import React from 'react'; -import { - isBooleanControl, - RankedTester, - rankWith, - ControlProps, - optionIs, - and, - isDescriptionHidden, -} from '@jsonforms/core'; -import { withJsonFormsControlProps } from '@jsonforms/react'; -import { FormControlLabel, FormHelperText, Tooltip } from '@mui/material'; -import { MuiToggle } from '../mui-controls/MuiToggle'; - -export const MaterialBooleanToggleControl = ({ - data, - visible, - label, - id, - enabled, - uischema, - schema, - rootSchema, - handleChange, - errors, - path, - config, - description, -}: ControlProps) => { - const isValid = errors.length === 0; - const appliedUiSchemaOptions = merge({}, config, uischema.options); - - const showDescription = !isDescriptionHidden( - visible, - description, - // Checkboxes do not receive focus until they are used, so - // we cannot rely on focus as criteria for showing descriptions. - // So we pass "false" to treat it as unfocused. - false, - appliedUiSchemaOptions.showUnfocusedDescription - ); - - const showTooltip = - !showDescription && - !isDescriptionHidden( - visible, - description, - // Tooltips have their own focus handlers, so we do not need to rely - // on focus state here. So we pass 'true' to treat it as focused. - true, - // We also pass true here for showUnfocusedDescription since it should - // render regardless of that setting. - true - ); - - const firstFormHelperText = showDescription - ? description - : !isValid - ? errors - : null; - const secondFormHelperText = showDescription && !isValid ? errors : null; - - const descriptionIds = []; - const tooltipId = `${id}-tip`; - const helpId1 = `${id}-help1`; - const helpId2 = `${id}-help2`; - if (showTooltip) { - descriptionIds.push(tooltipId); - } - if (firstFormHelperText) { - descriptionIds.push(helpId1); - } - if (secondFormHelperText) { - descriptionIds.push(helpId2); - } - const ariaDescribedBy = descriptionIds.join(' '); - - if (!visible) { - return null; - } - - return ( - <> - - - } - /> - - - {firstFormHelperText} - - - {secondFormHelperText} - - - ); -}; - -export const materialBooleanToggleControlTester: RankedTester = rankWith( - 3, - and(isBooleanControl, optionIs('toggle', true)) -); - -export default withJsonFormsControlProps(MaterialBooleanToggleControl); diff --git a/packages/material-renderers/src/controls/MaterialDateControl.tsx b/packages/material-renderers/src/controls/MaterialDateControl.tsx deleted file mode 100644 index 488f97aa53..0000000000 --- a/packages/material-renderers/src/controls/MaterialDateControl.tsx +++ /dev/null @@ -1,157 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import merge from 'lodash/merge'; -import React, { useCallback, useMemo, useState } from 'react'; -import { - ControlProps, - defaultDateFormat, - isDateControl, - isDescriptionHidden, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { withJsonFormsControlProps } from '@jsonforms/react'; -import { FormHelperText } from '@mui/material'; -import { DatePicker, LocalizationProvider } from '@mui/x-date-pickers'; -import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; -import { - createOnBlurHandler, - createOnChangeHandler, - getData, - useFocus, -} from '../util'; - -export const MaterialDateControl = (props: ControlProps) => { - const [focused, onFocus, onBlur] = useFocus(); - const { - description, - id, - errors, - label, - uischema, - visible, - enabled, - required, - path, - handleChange, - data, - config, - } = props; - const isValid = errors.length === 0; - const appliedUiSchemaOptions = merge({}, config, uischema.options); - const showDescription = !isDescriptionHidden( - visible, - description, - focused, - appliedUiSchemaOptions.showUnfocusedDescription - ); - - const [key, setKey] = useState(0); - const [open, setOpen] = useState(false); - - const format = appliedUiSchemaOptions.dateFormat ?? 'YYYY-MM-DD'; - const saveFormat = appliedUiSchemaOptions.dateSaveFormat ?? defaultDateFormat; - - const views = appliedUiSchemaOptions.views ?? ['year', 'day']; - - const firstFormHelperText = showDescription - ? description - : !isValid - ? errors - : null; - const secondFormHelperText = showDescription && !isValid ? errors : null; - - const updateChild = useCallback(() => setKey((key) => key + 1), []); - - const onChange = useMemo( - () => createOnChangeHandler(path, handleChange, saveFormat), - [path, handleChange, saveFormat] - ); - - const onBlurHandler = useMemo( - () => - createOnBlurHandler( - path, - handleChange, - format, - saveFormat, - updateChild, - onBlur - ), - [path, handleChange, format, saveFormat, updateChild] - ); - const value = getData(data, saveFormat); - - if (!visible) { - return null; - } - - return ( - - setOpen(true)} - onClose={() => setOpen(false)} - key={key} - label={label} - value={value} - onAccept={onChange} - format={format} - views={views} - disabled={!enabled} - slotProps={{ - actionBar: ({ wrapperVariant }) => ({ - actions: - wrapperVariant === 'desktop' ? [] : ['clear', 'cancel', 'accept'], - }), - textField: { - id: id + '-input', - required: required && !appliedUiSchemaOptions.hideRequiredAsterisk, - autoFocus: appliedUiSchemaOptions.focus, - error: !isValid, - fullWidth: !appliedUiSchemaOptions.trim, - inputProps: { - type: 'text', - }, - InputLabelProps: data ? { shrink: true } : undefined, - onFocus: onFocus, - onBlur: onBlurHandler, - }, - }} - /> - - {firstFormHelperText} - - {secondFormHelperText} - - ); -}; - -export const materialDateControlTester: RankedTester = rankWith( - 4, - isDateControl -); - -export default withJsonFormsControlProps(MaterialDateControl); diff --git a/packages/material-renderers/src/controls/MaterialDateTimeControl.tsx b/packages/material-renderers/src/controls/MaterialDateTimeControl.tsx deleted file mode 100644 index 9860d1c368..0000000000 --- a/packages/material-renderers/src/controls/MaterialDateTimeControl.tsx +++ /dev/null @@ -1,164 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React, { useCallback, useMemo, useState } from 'react'; -import merge from 'lodash/merge'; -import { - ControlProps, - defaultDateTimeFormat, - isDateTimeControl, - isDescriptionHidden, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { withJsonFormsControlProps } from '@jsonforms/react'; -import { FormHelperText } from '@mui/material'; -import { DateTimePicker, LocalizationProvider } from '@mui/x-date-pickers'; -import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; -import { - createOnBlurHandler, - createOnChangeHandler, - getData, - useFocus, -} from '../util'; - -export const MaterialDateTimeControl = (props: ControlProps) => { - const [focused, onFocus, onBlur] = useFocus(); - const { - id, - description, - errors, - label, - uischema, - visible, - enabled, - required, - path, - handleChange, - data, - config, - } = props; - const appliedUiSchemaOptions = merge({}, config, uischema.options); - const isValid = errors.length === 0; - - const showDescription = !isDescriptionHidden( - visible, - description, - focused, - appliedUiSchemaOptions.showUnfocusedDescription - ); - - const format = appliedUiSchemaOptions.dateTimeFormat ?? 'YYYY-MM-DD HH:mm'; - const saveFormat = - appliedUiSchemaOptions.dateTimeSaveFormat ?? defaultDateTimeFormat; - - const [key, setKey] = useState(0); - const [open, setOpen] = useState(false); - - const views = appliedUiSchemaOptions.views ?? [ - 'year', - 'day', - 'hours', - 'minutes', - ]; - - const firstFormHelperText = showDescription - ? description - : !isValid - ? errors - : null; - const secondFormHelperText = showDescription && !isValid ? errors : null; - - const updateChild = useCallback(() => setKey((key) => key + 1), []); - - const onChange = useMemo( - () => createOnChangeHandler(path, handleChange, saveFormat), - [path, handleChange, saveFormat] - ); - - const onBlurHandler = useMemo( - () => - createOnBlurHandler( - path, - handleChange, - format, - saveFormat, - updateChild, - onBlur - ), - [path, handleChange, format, saveFormat, updateChild] - ); - const value = getData(data, saveFormat); - - if (!visible) { - return null; - } - return ( - - setOpen(true)} - onClose={() => setOpen(false)} - key={key} - label={label} - value={value} - onAccept={onChange} - format={format} - ampm={!!appliedUiSchemaOptions.ampm} - views={views} - disabled={!enabled} - slotProps={{ - actionBar: ({ wrapperVariant }) => ({ - actions: - wrapperVariant === 'desktop' ? [] : ['clear', 'cancel', 'accept'], - }), - textField: { - id: id + '-input', - required: required && !appliedUiSchemaOptions.hideRequiredAsterisk, - autoFocus: appliedUiSchemaOptions.focus, - error: !isValid, - fullWidth: !appliedUiSchemaOptions.trim, - inputProps: { - type: 'text', - }, - InputLabelProps: data ? { shrink: true } : undefined, - onFocus: onFocus, - onBlur: onBlurHandler, - }, - }} - /> - - {firstFormHelperText} - - {secondFormHelperText} - - ); -}; - -export const materialDateTimeControlTester: RankedTester = rankWith( - 2, - isDateTimeControl -); - -export default withJsonFormsControlProps(MaterialDateTimeControl); diff --git a/packages/material-renderers/src/controls/MaterialEnumControl.tsx b/packages/material-renderers/src/controls/MaterialEnumControl.tsx deleted file mode 100644 index 660e685d12..0000000000 --- a/packages/material-renderers/src/controls/MaterialEnumControl.tsx +++ /dev/null @@ -1,68 +0,0 @@ -/* - The MIT License - - Copyright (c) 2018-2020 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - ControlProps, - isEnumControl, - OwnPropsOfEnum, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { - TranslateProps, - withJsonFormsEnumProps, - withTranslateProps, -} from '@jsonforms/react'; -import { MuiSelect } from '../mui-controls/MuiSelect'; -import merge from 'lodash/merge'; -import { MaterialInputControl } from './MaterialInputControl'; -import { - MuiAutocomplete, - WithOptionLabel, -} from '../mui-controls/MuiAutocomplete'; - -export const MaterialEnumControl = ( - props: ControlProps & OwnPropsOfEnum & WithOptionLabel & TranslateProps -) => { - const { config, uischema, errors } = props; - const appliedUiSchemaOptions = merge({}, config, uischema.options); - const isValid = errors.length === 0; - return appliedUiSchemaOptions.autocomplete === false ? ( - - ) : ( - - ); -}; - -export const materialEnumControlTester: RankedTester = rankWith( - 2, - isEnumControl -); - -// HOC order can be reversed with https://github.com/eclipsesource/jsonforms/issues/1987 -export default withJsonFormsEnumProps( - withTranslateProps(React.memo(MaterialEnumControl)), - false -); diff --git a/packages/material-renderers/src/controls/MaterialInputControl.tsx b/packages/material-renderers/src/controls/MaterialInputControl.tsx deleted file mode 100644 index 22cb577f7c..0000000000 --- a/packages/material-renderers/src/controls/MaterialInputControl.tsx +++ /dev/null @@ -1,106 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2021 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - showAsRequired, - ControlProps, - isDescriptionHidden, -} from '@jsonforms/core'; - -import { InputLabel, FormControl, FormHelperText } from '@mui/material'; -import merge from 'lodash/merge'; -import { useFocus, useInputVariant } from '../util'; - -export interface WithInput { - input: any; -} - -export const MaterialInputControl = (props: ControlProps & WithInput) => { - const [focused, onFocus, onBlur] = useFocus(); - const { - id, - description, - errors, - label, - uischema, - visible, - required, - config, - input, - } = props; - const variant = useInputVariant(); - const isValid = errors.length === 0; - const appliedUiSchemaOptions = merge({}, config, uischema.options); - - const showDescription = !isDescriptionHidden( - visible, - description, - focused, - appliedUiSchemaOptions.showUnfocusedDescription - ); - - const firstFormHelperText = showDescription - ? description - : !isValid - ? errors - : null; - const secondFormHelperText = showDescription && !isValid ? errors : null; - const InnerComponent = input; - - if (!visible) { - return null; - } - - return ( - - - {label} - - - - {firstFormHelperText} - - {secondFormHelperText} - - ); -}; diff --git a/packages/material-renderers/src/controls/MaterialIntegerControl.tsx b/packages/material-renderers/src/controls/MaterialIntegerControl.tsx deleted file mode 100644 index 5c6b88249d..0000000000 --- a/packages/material-renderers/src/controls/MaterialIntegerControl.tsx +++ /dev/null @@ -1,43 +0,0 @@ -/* - The MIT License - - Copyright (c) 2018-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - ControlProps, - isIntegerControl, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { MuiInputInteger } from '../mui-controls/MuiInputInteger'; -import { MaterialInputControl } from './MaterialInputControl'; -import { withJsonFormsControlProps } from '@jsonforms/react'; - -export const MaterialIntegerControl = (props: ControlProps) => ( - -); -export const materialIntegerControlTester: RankedTester = rankWith( - 2, - isIntegerControl -); -export default withJsonFormsControlProps(MaterialIntegerControl); diff --git a/packages/material-renderers/src/controls/MaterialNativeControl.tsx b/packages/material-renderers/src/controls/MaterialNativeControl.tsx deleted file mode 100644 index 6c650f1f50..0000000000 --- a/packages/material-renderers/src/controls/MaterialNativeControl.tsx +++ /dev/null @@ -1,108 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - ControlProps, - showAsRequired, - isDateControl, - isDescriptionHidden, - isTimeControl, - or, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { TextField } from '@mui/material'; -import { withJsonFormsControlProps } from '@jsonforms/react'; -import merge from 'lodash/merge'; -import { useDebouncedChange, useFocus } from '../util'; - -export const MaterialNativeControl = (props: ControlProps) => { - const [focused, onFocus, onBlur] = useFocus(); - const { - id, - errors, - label, - schema, - description, - enabled, - visible, - required, - path, - handleChange, - data, - config, - } = props; - const isValid = errors.length === 0; - const appliedUiSchemaOptions = merge({}, config, props.uischema.options); - const [inputValue, onChange] = useDebouncedChange( - handleChange, - '', - data, - path, - undefined, - undefined, - true, - focused - ); - const fieldType = appliedUiSchemaOptions.format ?? schema.format; - const showDescription = !isDescriptionHidden( - visible, - description, - focused, - appliedUiSchemaOptions.showUnfocusedDescription - ); - - if (!visible) { - return null; - } - - return ( - - ); -}; - -export const materialNativeControlTester: RankedTester = rankWith( - 2, - or(isDateControl, isTimeControl) -); - -export default withJsonFormsControlProps(MaterialNativeControl); diff --git a/packages/material-renderers/src/controls/MaterialNumberControl.tsx b/packages/material-renderers/src/controls/MaterialNumberControl.tsx deleted file mode 100644 index c79a04817f..0000000000 --- a/packages/material-renderers/src/controls/MaterialNumberControl.tsx +++ /dev/null @@ -1,45 +0,0 @@ -/* - The MIT License - - Copyright (c) 2018-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - ControlProps, - isNumberControl, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { MuiInputNumber } from '../mui-controls/MuiInputNumber'; -import { MaterialInputControl } from './MaterialInputControl'; -import { withJsonFormsControlProps } from '@jsonforms/react'; - -export const MaterialNumberControl = (props: ControlProps) => ( - -); - -export const materialNumberControlTester: RankedTester = rankWith( - 2, - isNumberControl -); - -export default withJsonFormsControlProps(MaterialNumberControl); diff --git a/packages/material-renderers/src/controls/MaterialOneOfEnumControl.tsx b/packages/material-renderers/src/controls/MaterialOneOfEnumControl.tsx deleted file mode 100644 index d7140f0220..0000000000 --- a/packages/material-renderers/src/controls/MaterialOneOfEnumControl.tsx +++ /dev/null @@ -1,69 +0,0 @@ -/* - The MIT License - - Copyright (c) 2018-2020 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - ControlProps, - isOneOfEnumControl, - OwnPropsOfEnum, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { - TranslateProps, - withJsonFormsOneOfEnumProps, - withTranslateProps, -} from '@jsonforms/react'; -import { - MuiAutocomplete, - WithOptionLabel, -} from '../mui-controls/MuiAutocomplete'; -import { MuiSelect } from '../mui-controls/MuiSelect'; -import { MaterialInputControl } from '../controls/MaterialInputControl'; -import merge from 'lodash/merge'; - -export const MaterialOneOfEnumControl = ( - props: ControlProps & OwnPropsOfEnum & WithOptionLabel & TranslateProps -) => { - const { config, uischema, errors } = props; - const appliedUiSchemaOptions = merge({}, config, uischema.options); - const isValid = errors.length === 0; - - return appliedUiSchemaOptions.autocomplete === false ? ( - - ) : ( - - ); -}; - -export const materialOneOfEnumControlTester: RankedTester = rankWith( - 5, - isOneOfEnumControl -); - -// HOC order can be reversed with https://github.com/eclipsesource/jsonforms/issues/1987 -export default withJsonFormsOneOfEnumProps( - withTranslateProps(React.memo(MaterialOneOfEnumControl)), - false -); diff --git a/packages/material-renderers/src/controls/MaterialOneOfRadioGroupControl.tsx b/packages/material-renderers/src/controls/MaterialOneOfRadioGroupControl.tsx deleted file mode 100644 index f6b194de87..0000000000 --- a/packages/material-renderers/src/controls/MaterialOneOfRadioGroupControl.tsx +++ /dev/null @@ -1,49 +0,0 @@ -/* - The MIT License - - Copyright (c) 2018-2020 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - and, - ControlProps, - isOneOfEnumControl, - optionIs, - OwnPropsOfEnum, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { withJsonFormsOneOfEnumProps } from '@jsonforms/react'; -import { MaterialRadioGroup } from './MaterialRadioGroup'; - -export const MaterialOneOfRadioGroupControl = ( - props: ControlProps & OwnPropsOfEnum -) => { - return ; -}; - -export const materialOneOfRadioGroupControlTester: RankedTester = rankWith( - 20, - and(isOneOfEnumControl, optionIs('format', 'radio')) -); - -export default withJsonFormsOneOfEnumProps(MaterialOneOfRadioGroupControl); diff --git a/packages/material-renderers/src/controls/MaterialRadioGroup.tsx b/packages/material-renderers/src/controls/MaterialRadioGroup.tsx deleted file mode 100644 index 04ecd6af51..0000000000 --- a/packages/material-renderers/src/controls/MaterialRadioGroup.tsx +++ /dev/null @@ -1,110 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import merge from 'lodash/merge'; -import React from 'react'; -import { - ControlProps, - showAsRequired, - isDescriptionHidden, - OwnPropsOfEnum, -} from '@jsonforms/core'; -import { - FormControl, - FormControlLabel, - FormHelperText, - FormLabel, - Radio, - RadioGroup, -} from '@mui/material'; -import { useFocus } from '../util'; - -export const MaterialRadioGroup = (props: ControlProps & OwnPropsOfEnum) => { - const [focused, onFocus, onBlur] = useFocus(); - const { - config, - label, - required, - description, - errors, - data, - visible, - options, - handleChange, - path, - enabled, - } = props; - const isValid = errors.length === 0; - const appliedUiSchemaOptions = merge({}, config, props.uischema.options); - const showDescription = !isDescriptionHidden( - visible, - description, - focused, - appliedUiSchemaOptions.showUnfocusedDescription - ); - - if (!visible) { - return null; - } - - return ( - - - {label} - - - - {options.map((option) => ( - handleChange(path, option.value)} - /> - } - label={option.label} - disabled={!enabled} - /> - ))} - - - {!isValid ? errors : showDescription ? description : null} - - - ); -}; diff --git a/packages/material-renderers/src/controls/MaterialRadioGroupControl.tsx b/packages/material-renderers/src/controls/MaterialRadioGroupControl.tsx deleted file mode 100644 index aa4acde6a5..0000000000 --- a/packages/material-renderers/src/controls/MaterialRadioGroupControl.tsx +++ /dev/null @@ -1,47 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - and, - ControlProps, - isEnumControl, - optionIs, - OwnPropsOfEnum, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { withJsonFormsEnumProps } from '@jsonforms/react'; -import { MaterialRadioGroup } from './MaterialRadioGroup'; -export const MaterialRadioGroupControl = ( - props: ControlProps & OwnPropsOfEnum -) => { - return ; -}; - -export const materialRadioGroupControlTester: RankedTester = rankWith( - 20, - and(isEnumControl, optionIs('format', 'radio')) -); -export default withJsonFormsEnumProps(MaterialRadioGroupControl); diff --git a/packages/material-renderers/src/controls/MaterialSliderControl.tsx b/packages/material-renderers/src/controls/MaterialSliderControl.tsx deleted file mode 100644 index 69785d2c37..0000000000 --- a/packages/material-renderers/src/controls/MaterialSliderControl.tsx +++ /dev/null @@ -1,145 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React, { useCallback } from 'react'; -import { - ControlProps, - showAsRequired, - isDescriptionHidden, - isRangeControl, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { withJsonFormsControlProps } from '@jsonforms/react'; - -import { - FormControl, - FormHelperText, - FormLabel, - Slider, - Typography, -} from '@mui/material'; -import merge from 'lodash/merge'; -import { useFocus } from '../util'; - -export const MaterialSliderControl = (props: ControlProps) => { - const [focused, onFocus, onBlur] = useFocus(); - const { - id, - data, - description, - enabled, - errors, - label, - schema, - handleChange, - visible, - path, - required, - config, - } = props; - const isValid = errors.length === 0; - const appliedUiSchemaOptions = merge({}, config, props.uischema.options); - const labelStyle: { [x: string]: any } = { - whiteSpace: 'nowrap', - overflow: 'hidden', - textOverflow: 'ellipsis', - width: '100%', - }; - const rangeContainerStyle: { [x: string]: any } = { - display: 'flex', - }; - const rangeItemStyle: { [x: string]: any } = { - flexGrow: '1', - }; - const sliderStyle: { [x: string]: any } = { - marginTop: '7px', - }; - - const showDescription = !isDescriptionHidden( - visible, - description, - focused, - appliedUiSchemaOptions.showUnfocusedDescription - ); - - const onChange = useCallback( - (_ev: any, value: any) => handleChange(path, Number(value)), - [path, handleChange] - ); - - if (!visible) { - return null; - } - - return ( - - - - {label} - - -
- - {schema.minimum} - - - {schema.maximum} - -
- - - {!isValid ? errors : showDescription ? description : null} - -
- ); -}; -export const materialSliderControlTester: RankedTester = rankWith( - 4, - isRangeControl -); - -export default withJsonFormsControlProps(MaterialSliderControl); diff --git a/packages/material-renderers/src/controls/MaterialTextControl.tsx b/packages/material-renderers/src/controls/MaterialTextControl.tsx deleted file mode 100644 index 9c159733eb..0000000000 --- a/packages/material-renderers/src/controls/MaterialTextControl.tsx +++ /dev/null @@ -1,44 +0,0 @@ -/* - The MIT License - - Copyright (c) 2018-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - ControlProps, - isStringControl, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { withJsonFormsControlProps } from '@jsonforms/react'; -import { MuiInputText } from '../mui-controls/MuiInputText'; -import { MaterialInputControl } from './MaterialInputControl'; - -export const MaterialTextControl = (props: ControlProps) => ( - -); - -export const materialTextControlTester: RankedTester = rankWith( - 1, - isStringControl -); -export default withJsonFormsControlProps(MaterialTextControl); diff --git a/packages/material-renderers/src/controls/MaterialTimeControl.tsx b/packages/material-renderers/src/controls/MaterialTimeControl.tsx deleted file mode 100644 index 9ef8af3d66..0000000000 --- a/packages/material-renderers/src/controls/MaterialTimeControl.tsx +++ /dev/null @@ -1,158 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React, { useCallback, useMemo, useState } from 'react'; -import merge from 'lodash/merge'; -import { - ControlProps, - isTimeControl, - isDescriptionHidden, - RankedTester, - rankWith, - defaultTimeFormat, -} from '@jsonforms/core'; -import { withJsonFormsControlProps } from '@jsonforms/react'; -import { FormHelperText } from '@mui/material'; -import { TimePicker, LocalizationProvider } from '@mui/x-date-pickers'; -import { AdapterDayjs } from '@mui/x-date-pickers/AdapterDayjs'; -import { - createOnBlurHandler, - createOnChangeHandler, - getData, - useFocus, -} from '../util'; - -export const MaterialTimeControl = (props: ControlProps) => { - const [focused, onFocus, onBlur] = useFocus(); - const { - id, - description, - errors, - label, - uischema, - visible, - enabled, - required, - path, - handleChange, - data, - config, - } = props; - const appliedUiSchemaOptions = merge({}, config, uischema.options); - const isValid = errors.length === 0; - - const [key, setKey] = useState(0); - const [open, setOpen] = useState(false); - - const showDescription = !isDescriptionHidden( - visible, - description, - focused, - appliedUiSchemaOptions.showUnfocusedDescription - ); - - const format = appliedUiSchemaOptions.timeFormat ?? 'HH:mm'; - const saveFormat = appliedUiSchemaOptions.timeSaveFormat ?? defaultTimeFormat; - - const views = appliedUiSchemaOptions.views ?? ['hours', 'minutes']; - - const firstFormHelperText = showDescription - ? description - : !isValid - ? errors - : null; - const secondFormHelperText = showDescription && !isValid ? errors : null; - - const updateChild = useCallback(() => setKey((key) => key + 1), []); - - const onChange = useMemo( - () => createOnChangeHandler(path, handleChange, saveFormat), - [path, handleChange, saveFormat] - ); - - const onBlurHandler = useMemo( - () => - createOnBlurHandler( - path, - handleChange, - format, - saveFormat, - updateChild, - onBlur - ), - [path, handleChange, format, saveFormat, updateChild] - ); - const value = getData(data, saveFormat); - - if (!visible) { - return null; - } - return ( - - setOpen(true)} - onClose={() => setOpen(false)} - key={key} - label={label} - value={value} - onAccept={onChange} - format={format} - ampm={!!appliedUiSchemaOptions.ampm} - views={views} - disabled={!enabled} - slotProps={{ - actionBar: ({ wrapperVariant }) => ({ - actions: - wrapperVariant === 'desktop' ? [] : ['clear', 'cancel', 'accept'], - }), - textField: { - id: id + '-input', - required: required && !appliedUiSchemaOptions.hideRequiredAsterisk, - autoFocus: appliedUiSchemaOptions.focus, - error: !isValid, - fullWidth: !appliedUiSchemaOptions.trim, - inputProps: { - type: 'text', - }, - InputLabelProps: data ? { shrink: true } : undefined, - onFocus: onFocus, - onBlur: onBlurHandler, - }, - }} - /> - - {firstFormHelperText} - - {secondFormHelperText} - - ); -}; - -export const materialTimeControlTester: RankedTester = rankWith( - 4, - isTimeControl -); - -export default withJsonFormsControlProps(MaterialTimeControl); diff --git a/packages/material-renderers/src/controls/index.ts b/packages/material-renderers/src/controls/index.ts deleted file mode 100644 index 7bc6820f35..0000000000 --- a/packages/material-renderers/src/controls/index.ts +++ /dev/null @@ -1,104 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import MaterialAnyOfStringOrEnumControl, { - materialAnyOfStringOrEnumControlTester, -} from './MaterialAnyOfStringOrEnumControl'; -import MaterialBooleanControl, { - materialBooleanControlTester, -} from './MaterialBooleanControl'; -import MaterialBooleanToggleControl, { - materialBooleanToggleControlTester, -} from './MaterialBooleanToggleControl'; -import MaterialDateControl, { - materialDateControlTester, -} from './MaterialDateControl'; -import MaterialDateTimeControl, { - materialDateTimeControlTester, -} from './MaterialDateTimeControl'; -import MaterialEnumControl, { - materialEnumControlTester, -} from './MaterialEnumControl'; -import MaterialIntegerControl, { - materialIntegerControlTester, -} from './MaterialIntegerControl'; -import MaterialNativeControl, { - materialNativeControlTester, -} from './MaterialNativeControl'; -import MaterialNumberControl, { - materialNumberControlTester, -} from './MaterialNumberControl'; -import MaterialOneOfEnumControl, { - materialOneOfEnumControlTester, -} from './MaterialOneOfEnumControl'; -import MaterialOneOfRadioGroupControl, { - materialOneOfRadioGroupControlTester, -} from './MaterialOneOfRadioGroupControl'; -import MaterialRadioGroupControl, { - materialRadioGroupControlTester, -} from './MaterialRadioGroupControl'; -import MaterialSliderControl, { - materialSliderControlTester, -} from './MaterialSliderControl'; -import MaterialTextControl, { - materialTextControlTester, -} from './MaterialTextControl'; -import MaterialTimeControl, { - materialTimeControlTester, -} from './MaterialTimeControl'; - -export { - MaterialAnyOfStringOrEnumControl, - materialAnyOfStringOrEnumControlTester, - MaterialBooleanControl, - materialBooleanControlTester, - MaterialBooleanToggleControl, - materialBooleanToggleControlTester, - MaterialDateControl, - materialDateControlTester, - MaterialDateTimeControl, - materialDateTimeControlTester, - MaterialEnumControl, - materialEnumControlTester, - MaterialIntegerControl, - materialIntegerControlTester, - MaterialNativeControl, - materialNativeControlTester, - MaterialNumberControl, - materialNumberControlTester, - MaterialOneOfEnumControl, - materialOneOfEnumControlTester, - MaterialOneOfRadioGroupControl, - materialOneOfRadioGroupControlTester, - MaterialRadioGroupControl, - materialRadioGroupControlTester, - MaterialSliderControl, - materialSliderControlTester, - MaterialTextControl, - materialTextControlTester, - MaterialTimeControl, - materialTimeControlTester, -}; - -export * from './MaterialInputControl'; diff --git a/packages/material-renderers/src/controls/unwrapped.ts b/packages/material-renderers/src/controls/unwrapped.ts deleted file mode 100644 index 506f59d28f..0000000000 --- a/packages/material-renderers/src/controls/unwrapped.ts +++ /dev/null @@ -1,57 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { MaterialAnyOfStringOrEnumControl } from './MaterialAnyOfStringOrEnumControl'; -import { MaterialBooleanControl } from './MaterialBooleanControl'; -import { MaterialBooleanToggleControl } from './MaterialBooleanToggleControl'; -import { MaterialDateControl } from './MaterialDateControl'; -import { MaterialDateTimeControl } from './MaterialDateTimeControl'; -import { MaterialEnumControl } from './MaterialEnumControl'; -import { MaterialIntegerControl } from './MaterialIntegerControl'; -import { MaterialNativeControl } from './MaterialNativeControl'; -import { MaterialNumberControl } from './MaterialNumberControl'; -import { MaterialOneOfEnumControl } from './MaterialOneOfEnumControl'; -import { MaterialOneOfRadioGroupControl } from './MaterialOneOfRadioGroupControl'; -import { MaterialRadioGroupControl } from './MaterialRadioGroupControl'; -import { MaterialSliderControl } from './MaterialSliderControl'; -import { MaterialTextControl } from './MaterialTextControl'; -import { MaterialTimeControl } from './MaterialTimeControl'; - -export const UnwrappedControls = { - MaterialAnyOfStringOrEnumControl, - MaterialBooleanControl, - MaterialBooleanToggleControl, - MaterialDateControl, - MaterialDateTimeControl, - MaterialEnumControl, - MaterialIntegerControl, - MaterialNativeControl, - MaterialNumberControl, - MaterialOneOfEnumControl, - MaterialOneOfRadioGroupControl, - MaterialSliderControl, - MaterialRadioGroupControl, - MaterialTextControl, - MaterialTimeControl, -}; diff --git a/packages/material-renderers/src/index.ts b/packages/material-renderers/src/index.ts deleted file mode 100644 index cf456e9063..0000000000 --- a/packages/material-renderers/src/index.ts +++ /dev/null @@ -1,218 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - JsonFormsCellRendererRegistryEntry, - JsonFormsRendererRegistryEntry, -} from '@jsonforms/core'; -import { - materialAllOfControlTester, - MaterialAllOfRenderer, - materialAnyOfControlTester, - MaterialAnyOfRenderer, - MaterialArrayControlRenderer, - materialArrayControlTester, - materialObjectControlTester, - MaterialObjectRenderer, - materialOneOfControlTester, - MaterialOneOfRenderer, - MaterialEnumArrayRenderer, - materialEnumArrayRendererTester, -} from './complex'; -import { - MaterialLabelRenderer, - materialLabelRendererTester, - MaterialListWithDetailRenderer, - materialListWithDetailTester, -} from './additional'; -import { - MaterialAnyOfStringOrEnumControl, - materialAnyOfStringOrEnumControlTester, - MaterialBooleanControl, - materialBooleanControlTester, - MaterialBooleanToggleControl, - materialBooleanToggleControlTester, - MaterialDateControl, - materialDateControlTester, - MaterialDateTimeControl, - materialDateTimeControlTester, - MaterialTimeControl, - materialTimeControlTester, - MaterialEnumControl, - materialEnumControlTester, - MaterialIntegerControl, - materialIntegerControlTester, - MaterialNativeControl, - materialNativeControlTester, - MaterialNumberControl, - materialNumberControlTester, - MaterialOneOfEnumControl, - materialOneOfEnumControlTester, - MaterialRadioGroupControl, - materialRadioGroupControlTester, - MaterialSliderControl, - materialSliderControlTester, - MaterialTextControl, - materialTextControlTester, - MaterialOneOfRadioGroupControl, - materialOneOfRadioGroupControlTester, -} from './controls'; -import { - MaterialArrayLayout, - materialArrayLayoutTester, - MaterialCategorizationLayout, - materialCategorizationTester, - MaterialGroupLayout, - materialGroupTester, - MaterialHorizontalLayout, - materialHorizontalLayoutTester, - MaterialVerticalLayout, - materialVerticalLayoutTester, -} from './layouts'; -import { - MaterialBooleanCell, - materialBooleanCellTester, - MaterialBooleanToggleCell, - materialBooleanToggleCellTester, - MaterialDateCell, - materialDateCellTester, - MaterialEnumCell, - materialEnumCellTester, - MaterialIntegerCell, - materialIntegerCellTester, - MaterialNumberCell, - materialNumberCellTester, - MaterialNumberFormatCell, - materialNumberFormatCellTester, - MaterialOneOfEnumCell, - materialOneOfEnumCellTester, - MaterialTextCell, - materialTextCellTester, - MaterialTimeCell, - materialTimeCellTester, -} from './cells'; -import MaterialCategorizationStepperLayout, { - materialCategorizationStepperTester, -} from './layouts/MaterialCategorizationStepperLayout'; - -export * from './additional'; -export * from './cells'; -export * from './complex'; -export * from './controls'; -export * from './layouts'; -export * from './mui-controls'; -export * from './util'; - -export const materialRenderers: JsonFormsRendererRegistryEntry[] = [ - // controls - { - tester: materialArrayControlTester, - renderer: MaterialArrayControlRenderer, - }, - { tester: materialBooleanControlTester, renderer: MaterialBooleanControl }, - { - tester: materialBooleanToggleControlTester, - renderer: MaterialBooleanToggleControl, - }, - { tester: materialNativeControlTester, renderer: MaterialNativeControl }, - { tester: materialEnumControlTester, renderer: MaterialEnumControl }, - { tester: materialIntegerControlTester, renderer: MaterialIntegerControl }, - { tester: materialNumberControlTester, renderer: MaterialNumberControl }, - { tester: materialTextControlTester, renderer: MaterialTextControl }, - { tester: materialDateTimeControlTester, renderer: MaterialDateTimeControl }, - { tester: materialDateControlTester, renderer: MaterialDateControl }, - { tester: materialTimeControlTester, renderer: MaterialTimeControl }, - { tester: materialSliderControlTester, renderer: MaterialSliderControl }, - { tester: materialObjectControlTester, renderer: MaterialObjectRenderer }, - { tester: materialAllOfControlTester, renderer: MaterialAllOfRenderer }, - { tester: materialAnyOfControlTester, renderer: MaterialAnyOfRenderer }, - { tester: materialOneOfControlTester, renderer: MaterialOneOfRenderer }, - { - tester: materialRadioGroupControlTester, - renderer: MaterialRadioGroupControl, - }, - { - tester: materialOneOfRadioGroupControlTester, - renderer: MaterialOneOfRadioGroupControl, - }, - { - tester: materialOneOfEnumControlTester, - renderer: MaterialOneOfEnumControl, - }, - // layouts - { tester: materialGroupTester, renderer: MaterialGroupLayout }, - { - tester: materialHorizontalLayoutTester, - renderer: MaterialHorizontalLayout, - }, - { tester: materialVerticalLayoutTester, renderer: MaterialVerticalLayout }, - { - tester: materialCategorizationTester, - renderer: MaterialCategorizationLayout, - }, - { - tester: materialCategorizationStepperTester, - renderer: MaterialCategorizationStepperLayout, - }, - { tester: materialArrayLayoutTester, renderer: MaterialArrayLayout }, - // additional - { tester: materialLabelRendererTester, renderer: MaterialLabelRenderer }, - { - tester: materialListWithDetailTester, - renderer: MaterialListWithDetailRenderer, - }, - { - tester: materialAnyOfStringOrEnumControlTester, - renderer: MaterialAnyOfStringOrEnumControl, - }, - { - tester: materialEnumArrayRendererTester, - renderer: MaterialEnumArrayRenderer, - }, -]; - -export const materialCells: JsonFormsCellRendererRegistryEntry[] = [ - { tester: materialBooleanCellTester, cell: MaterialBooleanCell }, - { tester: materialBooleanToggleCellTester, cell: MaterialBooleanToggleCell }, - { tester: materialDateCellTester, cell: MaterialDateCell }, - { tester: materialEnumCellTester, cell: MaterialEnumCell }, - { tester: materialIntegerCellTester, cell: MaterialIntegerCell }, - { tester: materialNumberCellTester, cell: MaterialNumberCell }, - { tester: materialNumberFormatCellTester, cell: MaterialNumberFormatCell }, - { tester: materialOneOfEnumCellTester, cell: MaterialOneOfEnumCell }, - { tester: materialTextCellTester, cell: MaterialTextCell }, - { tester: materialTimeCellTester, cell: MaterialTimeCell }, -]; - -import { UnwrappedAdditional } from './additional/unwrapped'; -import { UnwrappedComplex } from './complex/unwrapped'; -import { UnwrappedControls } from './controls/unwrapped'; -import { UnwrappedLayouts } from './layouts/unwrapped'; - -export const Unwrapped = { - ...UnwrappedAdditional, - ...UnwrappedComplex, - ...UnwrappedControls, - ...UnwrappedLayouts, -}; diff --git a/packages/material-renderers/src/layouts/ArrayToolbar.tsx b/packages/material-renderers/src/layouts/ArrayToolbar.tsx deleted file mode 100644 index 35f43879a9..0000000000 --- a/packages/material-renderers/src/layouts/ArrayToolbar.tsx +++ /dev/null @@ -1,88 +0,0 @@ -import { - FormHelperText, - Grid, - IconButton, - Stack, - Toolbar, - Tooltip, - Typography, -} from '@mui/material'; -import AddIcon from '@mui/icons-material/Add'; -import React from 'react'; -import ValidationIcon from '../complex/ValidationIcon'; -import { ArrayTranslations } from '@jsonforms/core'; -export interface ArrayLayoutToolbarProps { - label: string; - description: string; - errors: string; - path: string; - enabled: boolean; - addItem(path: string, data: any): () => void; - createDefault(): any; - translations: ArrayTranslations; - disableAdd?: boolean; -} -export const ArrayLayoutToolbar = React.memo(function ArrayLayoutToolbar({ - label, - description, - errors, - addItem, - path, - enabled, - createDefault, - translations, - disableAdd, -}: ArrayLayoutToolbarProps) { - return ( - - - - - - - {label} - - - {errors.length !== 0 && ( - - - - )} - - - - {enabled && !disableAdd && ( - - - - - - - - - - - - )} - - {description && {description}} - - - ); -}); diff --git a/packages/material-renderers/src/layouts/ExpandPanelRenderer.tsx b/packages/material-renderers/src/layouts/ExpandPanelRenderer.tsx deleted file mode 100644 index fc02b28e6b..0000000000 --- a/packages/material-renderers/src/layouts/ExpandPanelRenderer.tsx +++ /dev/null @@ -1,399 +0,0 @@ -import merge from 'lodash/merge'; -import React, { - ComponentType, - Dispatch, - Fragment, - ReducerAction, - useMemo, - useState, - useEffect, - useCallback, -} from 'react'; -import { - JsonFormsDispatch, - JsonFormsStateContext, - withJsonFormsContext, -} from '@jsonforms/react'; -import { - composePaths, - ControlElement, - findUISchema, - JsonFormsRendererRegistryEntry, - JsonSchema, - moveDown, - moveUp, - update, - JsonFormsCellRendererRegistryEntry, - JsonFormsUISchemaRegistryEntry, - createId, - removeId, - ArrayTranslations, - computeChildLabel, - UpdateArrayContext, -} from '@jsonforms/core'; -import { - Accordion, - AccordionSummary, - AccordionDetails, - Avatar, - Grid, - IconButton, - Tooltip, -} from '@mui/material'; -import ExpandMoreIcon from '@mui/icons-material/ExpandMore'; -import ArrowUpward from '@mui/icons-material/ArrowUpward'; -import ArrowDownward from '@mui/icons-material/ArrowDownward'; -import DeleteIcon from '@mui/icons-material/Delete'; - -const iconStyle: any = { float: 'right' }; - -interface OwnPropsOfExpandPanel { - enabled: boolean; - index: number; - path: string; - uischema: ControlElement; - schema: JsonSchema; - expanded: boolean; - renderers?: JsonFormsRendererRegistryEntry[]; - cells?: JsonFormsCellRendererRegistryEntry[]; - uischemas?: JsonFormsUISchemaRegistryEntry[]; - rootSchema: JsonSchema; - enableMoveUp: boolean; - enableMoveDown: boolean; - config: any; - childLabelProp?: string; - handleExpansion(panel: string): (event: any, expanded: boolean) => void; - translations: ArrayTranslations; - disableRemove?: boolean; -} - -interface StatePropsOfExpandPanel extends OwnPropsOfExpandPanel { - childLabel: string; - childPath: string; - enableMoveUp: boolean; - enableMoveDown: boolean; -} - -/** - * Dispatch props of a table control - */ -export interface DispatchPropsOfExpandPanel { - removeItems(path: string, toDelete: number[]): (event: any) => void; - moveUp(path: string, toMove: number): (event: any) => void; - moveDown(path: string, toMove: number): (event: any) => void; -} - -export interface ExpandPanelProps - extends StatePropsOfExpandPanel, - DispatchPropsOfExpandPanel {} - -const ExpandPanelRendererComponent = (props: ExpandPanelProps) => { - const [labelHtmlId] = useState(createId('expand-panel')); - - useEffect(() => { - return () => { - removeId(labelHtmlId); - }; - }, [labelHtmlId]); - - const { - enabled, - childLabel, - childPath, - index, - expanded, - moveDown, - moveUp, - enableMoveDown, - enableMoveUp, - handleExpansion, - removeItems, - path, - rootSchema, - schema, - uischema, - uischemas, - renderers, - cells, - config, - translations, - disableRemove, - } = props; - - const foundUISchema = useMemo( - () => - findUISchema( - uischemas, - schema, - uischema.scope, - path, - undefined, - uischema, - rootSchema - ), - [uischemas, schema, uischema.scope, path, uischema, rootSchema] - ); - - const appliedUiSchemaOptions = merge({}, config, uischema.options); - const showSortButtons = - appliedUiSchemaOptions.showSortButtons || - appliedUiSchemaOptions.showArrayLayoutSortButtons; - - return ( - - }> - - - - - {index + 1} - - - {childLabel} - - - - - - - - {showSortButtons && enabled ? ( - - - - - - - - - - - - - - - - - ) : ( - '' - )} - {enabled && !disableRemove && ( - - - - - - - - )} - - - - - - - - - - - ); -}; - -export const ExpandPanelRenderer = React.memo(ExpandPanelRendererComponent); - -/** - * Maps state to dispatch properties of an expand pandel control. - * - * @param dispatch the store's dispatch method - * @returns {DispatchPropsOfArrayControl} dispatch props of an expand panel control - */ -export const ctxDispatchToExpandPanelProps: ( - dispatch: Dispatch> -) => DispatchPropsOfExpandPanel = (dispatch) => ({ - removeItems: useCallback( - (path: string, toDelete: number[]) => - (event: any): void => { - event.stopPropagation(); - dispatch( - update( - path, - (array) => { - toDelete - .sort() - .reverse() - .forEach((s) => array.splice(s, 1)); - return array; - }, - { type: 'REMOVE', indices: toDelete } as UpdateArrayContext - ) - ); - }, - [dispatch] - ), - moveUp: useCallback( - (path: string, toMove: number) => - (event: any): void => { - event.stopPropagation(); - dispatch( - update( - path, - (array) => { - moveUp(array, toMove); - return array; - }, - { - type: 'MOVE', - moves: [{ from: toMove, to: toMove - 1 }], - } as UpdateArrayContext - ) - ); - }, - [dispatch] - ), - moveDown: useCallback( - (path: string, toMove: number) => - (event: any): void => { - event.stopPropagation(); - dispatch( - update( - path, - (array) => { - moveDown(array, toMove); - return array; - }, - { - type: 'MOVE', - moves: [{ from: toMove, to: toMove + 1 }], - } as UpdateArrayContext - ) - ); - }, - [dispatch] - ), -}); - -/** - * Map state to control props. - * @param state the JSON Forms state - * @param ownProps any own props - * @returns {StatePropsOfControl} state props for a control - */ -export const withContextToExpandPanelProps = ( - Component: ComponentType -): ComponentType<{ - ctx: JsonFormsStateContext; - props: OwnPropsOfExpandPanel; -}> => { - return function WithContextToExpandPanelProps({ - ctx, - props, - }: { - ctx: JsonFormsStateContext; - props: ExpandPanelProps; - }) { - const dispatchProps = ctxDispatchToExpandPanelProps(ctx.dispatch); - const { - // eslint is unable to detect that these props are "checked" via Typescript already - // eslint-disable-next-line react/prop-types - childLabelProp, - // eslint-disable-next-line react/prop-types - schema, - // eslint-disable-next-line react/prop-types - uischema, - // eslint-disable-next-line react/prop-types - rootSchema, - // eslint-disable-next-line react/prop-types - path, - // eslint-disable-next-line react/prop-types - index, - // eslint-disable-next-line react/prop-types - uischemas, - } = props; - const childPath = composePaths(path, `${index}`); - - const childLabel = useMemo(() => { - return computeChildLabel( - ctx.core.data, - childPath, - childLabelProp, - schema, - rootSchema, - ctx.i18n.translate, - uischema - ); - }, [ - ctx.core.data, - childPath, - childLabelProp, - schema, - rootSchema, - ctx.i18n.translate, - uischema, - ]); - - return ( - - ); - }; -}; - -export const withJsonFormsExpandPanelProps = ( - Component: ComponentType -): ComponentType => - withJsonFormsContext(withContextToExpandPanelProps(Component)); - -export default withJsonFormsExpandPanelProps(ExpandPanelRenderer); diff --git a/packages/material-renderers/src/layouts/MaterialArrayLayout.tsx b/packages/material-renderers/src/layouts/MaterialArrayLayout.tsx deleted file mode 100644 index 6846fd421e..0000000000 --- a/packages/material-renderers/src/layouts/MaterialArrayLayout.tsx +++ /dev/null @@ -1,131 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import range from 'lodash/range'; -import React, { useState, useCallback } from 'react'; -import { - ArrayLayoutProps, - ArrayTranslations, - composePaths, - computeLabel, - createDefaultValue, -} from '@jsonforms/core'; -import map from 'lodash/map'; -import { ArrayLayoutToolbar } from './ArrayToolbar'; -import ExpandPanelRenderer from './ExpandPanelRenderer'; -import merge from 'lodash/merge'; - -const MaterialArrayLayoutComponent = ( - props: ArrayLayoutProps & { translations: ArrayTranslations } -) => { - const [expanded, setExpanded] = useState(false); - const innerCreateDefaultValue = useCallback( - () => createDefaultValue(props.schema, props.rootSchema), - [props.schema] - ); - const handleChange = useCallback( - (panel: string) => (_event: any, expandedPanel: boolean) => { - setExpanded(expandedPanel ? panel : false); - }, - [] - ); - const isExpanded = (index: number) => - expanded === composePaths(props.path, `${index}`); - - const { - enabled, - data, - path, - schema, - uischema, - errors, - addItem, - renderers, - cells, - label, - required, - rootSchema, - config, - uischemas, - description, - disableAdd, - disableRemove, - translations, - } = props; - const appliedUiSchemaOptions = merge({}, config, props.uischema.options); - const doDisableAdd = disableAdd || appliedUiSchemaOptions.disableAdd; - const doDisableRemove = disableRemove || appliedUiSchemaOptions.disableRemove; - - return ( -
- -
- {data > 0 ? ( - map(range(data), (index) => { - return ( - - ); - }) - ) : ( -

{translations.noDataMessage}

- )} -
-
- ); -}; - -export const MaterialArrayLayout = React.memo(MaterialArrayLayoutComponent); diff --git a/packages/material-renderers/src/layouts/MaterialArrayLayoutRenderer.tsx b/packages/material-renderers/src/layouts/MaterialArrayLayoutRenderer.tsx deleted file mode 100644 index 2fd1001e29..0000000000 --- a/packages/material-renderers/src/layouts/MaterialArrayLayoutRenderer.tsx +++ /dev/null @@ -1,71 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React, { useCallback } from 'react'; - -import { - ArrayLayoutProps, - ArrayTranslations, - isObjectArrayWithNesting, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { MaterialArrayLayout } from './MaterialArrayLayout'; -import { - withArrayTranslationProps, - withJsonFormsArrayLayoutProps, - withTranslateProps, -} from '@jsonforms/react'; - -export const MaterialArrayLayoutRenderer = ({ - visible, - addItem, - translations, - ...props -}: ArrayLayoutProps & { translations: ArrayTranslations }) => { - const addItemCb = useCallback( - (p: string, value: any) => addItem(p, value), - [addItem] - ); - if (!visible) { - return null; - } - - return ( - - ); -}; - -export const materialArrayLayoutTester: RankedTester = rankWith( - 4, - isObjectArrayWithNesting -); -export default withJsonFormsArrayLayoutProps( - withTranslateProps(withArrayTranslationProps(MaterialArrayLayoutRenderer)) -); diff --git a/packages/material-renderers/src/layouts/MaterialCategorizationLayout.tsx b/packages/material-renderers/src/layouts/MaterialCategorizationLayout.tsx deleted file mode 100644 index 13ff5a61a0..0000000000 --- a/packages/material-renderers/src/layouts/MaterialCategorizationLayout.tsx +++ /dev/null @@ -1,173 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React, { useState, useMemo } from 'react'; -import { AppBar, Tab, Tabs } from '@mui/material'; -import { - and, - Categorization, - Category, - deriveLabelForUISchemaElement, - isVisible, - RankedTester, - rankWith, - StatePropsOfLayout, - Tester, - UISchemaElement, - uiTypeIs, -} from '@jsonforms/core'; -import { - TranslateProps, - withJsonFormsLayoutProps, - withTranslateProps, -} from '@jsonforms/react'; -import { - AjvProps, - MaterialLayoutRenderer, - MaterialLayoutRendererProps, - withAjvProps, -} from '../util/layout'; - -export const isSingleLevelCategorization: Tester = and( - uiTypeIs('Categorization'), - (uischema: UISchemaElement): boolean => { - const categorization = uischema as Categorization; - - return ( - categorization.elements && - categorization.elements.reduce( - (acc, e) => acc && e.type === 'Category', - true - ) - ); - } -); - -export const materialCategorizationTester: RankedTester = rankWith( - 1, - isSingleLevelCategorization -); -export interface CategorizationState { - activeCategory: number; -} - -export interface MaterialCategorizationLayoutRendererProps - extends StatePropsOfLayout, - AjvProps, - TranslateProps { - selected?: number; - ownState?: boolean; - data?: any; - onChange?(selected: number, prevSelected: number): void; -} - -export const MaterialCategorizationLayoutRenderer = ( - props: MaterialCategorizationLayoutRendererProps -) => { - const { - data, - path, - renderers, - cells, - schema, - uischema, - visible, - enabled, - selected, - onChange, - ajv, - t, - } = props; - const categorization = uischema as Categorization; - const [previousCategorization, setPreviousCategorization] = - useState(uischema as Categorization); - const [activeCategory, setActiveCategory] = useState(selected ?? 0); - const categories = useMemo( - () => - categorization.elements.filter((category: Category) => - isVisible(category, data, undefined, ajv) - ), - [categorization, data, ajv] - ); - - if (categorization !== previousCategorization) { - setActiveCategory(0); - setPreviousCategorization(categorization); - } - - const safeCategory = - activeCategory >= categorization.elements.length ? 0 : activeCategory; - - const childProps: MaterialLayoutRendererProps = { - elements: categories[safeCategory] ? categories[safeCategory].elements : [], - schema, - path, - direction: 'column', - enabled, - visible, - renderers, - cells, - }; - const onTabChange = (_event: any, value: any) => { - if (onChange) { - onChange(value, safeCategory); - } - setActiveCategory(value); - }; - - const tabLabels = useMemo(() => { - return categories.map((e: Category) => deriveLabelForUISchemaElement(e, t)); - }, [categories, t]); - - if (!visible) { - return null; - } - - return ( - <> - - - {categories.map((_, idx: number) => ( - - ))} - - -
- -
- - ); -}; - -export default withAjvProps( - withTranslateProps( - withJsonFormsLayoutProps(MaterialCategorizationLayoutRenderer) - ) -); diff --git a/packages/material-renderers/src/layouts/MaterialCategorizationStepperLayout.tsx b/packages/material-renderers/src/layouts/MaterialCategorizationStepperLayout.tsx deleted file mode 100644 index a863aaea86..0000000000 --- a/packages/material-renderers/src/layouts/MaterialCategorizationStepperLayout.tsx +++ /dev/null @@ -1,177 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React, { useState, useMemo } from 'react'; -import merge from 'lodash/merge'; -import { Button, Step, StepButton, Stepper } from '@mui/material'; -import { - and, - Categorization, - categorizationHasCategory, - Category, - deriveLabelForUISchemaElement, - isVisible, - optionIs, - RankedTester, - rankWith, - StatePropsOfLayout, - uiTypeIs, -} from '@jsonforms/core'; -import { - TranslateProps, - withJsonFormsLayoutProps, - withTranslateProps, -} from '@jsonforms/react'; -import { - AjvProps, - MaterialLayoutRenderer, - MaterialLayoutRendererProps, - withAjvProps, -} from '../util/layout'; - -export const materialCategorizationStepperTester: RankedTester = rankWith( - 2, - and( - uiTypeIs('Categorization'), - categorizationHasCategory, - optionIs('variant', 'stepper') - ) -); - -export interface CategorizationStepperState { - activeCategory: number; -} - -export interface MaterialCategorizationStepperLayoutRendererProps - extends StatePropsOfLayout, - AjvProps, - TranslateProps { - data: any; -} - -export const MaterialCategorizationStepperLayoutRenderer = ( - props: MaterialCategorizationStepperLayoutRendererProps -) => { - const [activeCategory, setActiveCategory] = useState(0); - - const handleStep = (step: number) => { - setActiveCategory(step); - }; - - const { - data, - path, - renderers, - schema, - uischema, - visible, - cells, - config, - ajv, - t, - } = props; - const categorization = uischema as Categorization; - const appliedUiSchemaOptions = merge({}, config, uischema.options); - const buttonWrapperStyle = { - textAlign: 'right' as const, - width: '100%', - margin: '1em auto', - }; - const buttonNextStyle = { - float: 'right' as const, - }; - const buttonStyle = { - marginRight: '1em', - }; - const categories = useMemo( - () => - categorization.elements.filter((category: Category) => - isVisible(category, data, undefined, ajv) - ), - [categorization, data, ajv] - ); - const childProps: MaterialLayoutRendererProps = { - elements: categories[activeCategory].elements, - schema, - path, - direction: 'column', - visible, - renderers, - cells, - }; - const tabLabels = useMemo(() => { - return categories.map((e: Category) => deriveLabelForUISchemaElement(e, t)); - }, [categories, t]); - - if (!visible) { - return null; - } - - return ( - <> - - {categories.map((_: Category, idx: number) => ( - - handleStep(idx)}> - {tabLabels[idx]} - - - ))} - -
- -
- {appliedUiSchemaOptions.showNavButtons ? ( -
- - -
- ) : ( - <> - )} - - ); -}; - -export default withAjvProps( - withTranslateProps( - withJsonFormsLayoutProps(MaterialCategorizationStepperLayoutRenderer) - ) -); diff --git a/packages/material-renderers/src/layouts/MaterialGroupLayout.tsx b/packages/material-renderers/src/layouts/MaterialGroupLayout.tsx deleted file mode 100644 index b9835e6577..0000000000 --- a/packages/material-renderers/src/layouts/MaterialGroupLayout.tsx +++ /dev/null @@ -1,107 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import isEmpty from 'lodash/isEmpty'; -import React from 'react'; -import { Card, CardContent, CardHeader } from '@mui/material'; -import { - GroupLayout, - LayoutProps, - RankedTester, - rankWith, - uiTypeIs, - withIncreasedRank, -} from '@jsonforms/core'; -import { - MaterialLabelableLayoutRendererProps, - MaterialLayoutRenderer, -} from '../util/layout'; -import { withJsonFormsLayoutProps } from '@jsonforms/react'; - -export const groupTester: RankedTester = rankWith(1, uiTypeIs('Group')); -const style: { [x: string]: any } = { marginBottom: '10px' }; - -const GroupComponent = React.memo(function GroupComponent({ - visible, - enabled, - uischema, - label, - ...props -}: MaterialLabelableLayoutRendererProps) { - const groupLayout = uischema as GroupLayout; - - if (!visible) { - return null; - } - - return ( - - {!isEmpty(label) && } - - - - - ); -}); - -export const MaterializedGroupLayoutRenderer = ({ - uischema, - schema, - path, - visible, - enabled, - renderers, - cells, - direction, - label, -}: LayoutProps) => { - const groupLayout = uischema as GroupLayout; - - return ( - - ); -}; - -export default withJsonFormsLayoutProps(MaterializedGroupLayoutRenderer); - -export const materialGroupTester: RankedTester = withIncreasedRank( - 1, - groupTester -); diff --git a/packages/material-renderers/src/layouts/MaterialHorizontalLayout.tsx b/packages/material-renderers/src/layouts/MaterialHorizontalLayout.tsx deleted file mode 100644 index 0e73552673..0000000000 --- a/packages/material-renderers/src/layouts/MaterialHorizontalLayout.tsx +++ /dev/null @@ -1,76 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - HorizontalLayout, - LayoutProps, - RankedTester, - rankWith, - uiTypeIs, -} from '@jsonforms/core'; -import { withJsonFormsLayoutProps } from '@jsonforms/react'; -import { - MaterialLayoutRenderer, - MaterialLayoutRendererProps, -} from '../util/layout'; - -/** - * Default tester for a horizontal layout. - * @type {RankedTester} - */ -export const materialHorizontalLayoutTester: RankedTester = rankWith( - 2, - uiTypeIs('HorizontalLayout') -); - -export const MaterialHorizontalLayoutRenderer = ({ - uischema, - renderers, - cells, - schema, - path, - enabled, - visible, -}: LayoutProps) => { - const layout = uischema as HorizontalLayout; - const childProps: MaterialLayoutRendererProps = { - elements: layout.elements, - schema, - path, - enabled, - direction: 'row', - visible, - }; - - return ( - - ); -}; - -export default withJsonFormsLayoutProps(MaterialHorizontalLayoutRenderer); diff --git a/packages/material-renderers/src/layouts/MaterialVerticalLayout.tsx b/packages/material-renderers/src/layouts/MaterialVerticalLayout.tsx deleted file mode 100644 index 1d1c442e62..0000000000 --- a/packages/material-renderers/src/layouts/MaterialVerticalLayout.tsx +++ /dev/null @@ -1,76 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - LayoutProps, - RankedTester, - rankWith, - uiTypeIs, - VerticalLayout, -} from '@jsonforms/core'; -import { - MaterialLayoutRenderer, - MaterialLayoutRendererProps, -} from '../util/layout'; -import { withJsonFormsLayoutProps } from '@jsonforms/react'; - -/** - * Default tester for a vertical layout. - * @type {RankedTester} - */ -export const materialVerticalLayoutTester: RankedTester = rankWith( - 1, - uiTypeIs('VerticalLayout') -); - -export const MaterialVerticalLayoutRenderer = ({ - uischema, - schema, - path, - enabled, - visible, - renderers, - cells, -}: LayoutProps) => { - const verticalLayout = uischema as VerticalLayout; - const childProps: MaterialLayoutRendererProps = { - elements: verticalLayout.elements, - schema, - path, - enabled, - direction: 'column', - visible, - }; - - return ( - - ); -}; - -export default withJsonFormsLayoutProps(MaterialVerticalLayoutRenderer); diff --git a/packages/material-renderers/src/layouts/index.ts b/packages/material-renderers/src/layouts/index.ts deleted file mode 100644 index 98788c02f1..0000000000 --- a/packages/material-renderers/src/layouts/index.ts +++ /dev/null @@ -1,63 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import ExpandPanelRenderer, { - ctxDispatchToExpandPanelProps, - withContextToExpandPanelProps, - withJsonFormsExpandPanelProps, -} from './ExpandPanelRenderer'; -import MaterialGroupLayout, { - materialGroupTester, -} from './MaterialGroupLayout'; -import MaterialHorizontalLayout, { - materialHorizontalLayoutTester, -} from './MaterialHorizontalLayout'; -import MaterialVerticalLayout, { - materialVerticalLayoutTester, -} from './MaterialVerticalLayout'; -import MaterialCategorizationLayout, { - materialCategorizationTester, -} from './MaterialCategorizationLayout'; -import MaterialArrayLayout, { - materialArrayLayoutTester, -} from './MaterialArrayLayoutRenderer'; - -export { - ExpandPanelRenderer, - ctxDispatchToExpandPanelProps, - withContextToExpandPanelProps, - withJsonFormsExpandPanelProps, - MaterialArrayLayout, - materialArrayLayoutTester, - MaterialCategorizationLayout, - materialCategorizationTester, - MaterialGroupLayout, - materialGroupTester, - MaterialHorizontalLayout, - materialHorizontalLayoutTester, - MaterialVerticalLayout, - materialVerticalLayoutTester, -}; - -export * from './ArrayToolbar'; diff --git a/packages/material-renderers/src/layouts/unwrapped.ts b/packages/material-renderers/src/layouts/unwrapped.ts deleted file mode 100644 index 6b4c58cec0..0000000000 --- a/packages/material-renderers/src/layouts/unwrapped.ts +++ /dev/null @@ -1,41 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { ExpandPanelRenderer as ExpandPanelRendererUnwrapped } from './ExpandPanelRenderer'; -import { MaterializedGroupLayoutRenderer } from './MaterialGroupLayout'; -import { MaterialHorizontalLayoutRenderer } from './MaterialHorizontalLayout'; -import { MaterialVerticalLayoutRenderer } from './MaterialVerticalLayout'; -import { MaterialCategorizationLayoutRenderer } from './MaterialCategorizationLayout'; -import { MaterialArrayLayoutRenderer } from './MaterialArrayLayoutRenderer'; - -export const UnwrappedLayouts = { - ExpandPanelRenderer: ExpandPanelRendererUnwrapped, - MaterialArrayLayout: MaterialArrayLayoutRenderer, - MaterialCategorizationLayout: MaterialCategorizationLayoutRenderer, - MaterialGroupLayout: MaterializedGroupLayoutRenderer, - MaterialHorizontalLayout: MaterialHorizontalLayoutRenderer, - MaterialVerticalLayout: MaterialVerticalLayoutRenderer, -}; - -export * from './ArrayToolbar'; diff --git a/packages/material-renderers/src/mui-controls/MuiAutocomplete.tsx b/packages/material-renderers/src/mui-controls/MuiAutocomplete.tsx deleted file mode 100644 index 89541945ad..0000000000 --- a/packages/material-renderers/src/mui-controls/MuiAutocomplete.tsx +++ /dev/null @@ -1,156 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2020 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React, { ReactNode } from 'react'; -import { - ControlProps, - EnumCellProps, - EnumOption, - isDescriptionHidden, - WithClassname, -} from '@jsonforms/core'; - -import { - Autocomplete, - AutocompleteRenderOptionState, - FilterOptionsState, - FormHelperText, - TextField, -} from '@mui/material'; -import merge from 'lodash/merge'; -import { useFocus } from '../util/focus'; - -export interface WithOptionLabel { - getOptionLabel?(option: EnumOption): string; - renderOption?( - props: React.HTMLAttributes, - option: EnumOption, - state: AutocompleteRenderOptionState - ): ReactNode; - filterOptions?( - options: EnumOption[], - state: FilterOptionsState - ): EnumOption[]; -} - -export const MuiAutocomplete = ( - props: ControlProps & EnumCellProps & WithClassname & WithOptionLabel -) => { - const { - description, - errors, - visible, - required, - label, - data, - className, - id, - enabled, - uischema, - path, - handleChange, - options, - config, - getOptionLabel, - renderOption, - filterOptions, - isValid, - } = props; - const appliedUiSchemaOptions = merge({}, config, uischema.options); - const [inputValue, setInputValue] = React.useState(data ?? ''); - const [focused, onFocus, onBlur] = useFocus(); - - const findOption = options.find((o) => o.value === data) ?? null; - - const showDescription = !isDescriptionHidden( - visible, - description, - focused, - appliedUiSchemaOptions.showUnfocusedDescription - ); - - const firstFormHelperText = showDescription - ? description - : !isValid - ? errors - : null; - const secondFormHelperText = showDescription && !isValid ? errors : null; - - if (!visible) { - return null; - } - - return ( - <> - { - handleChange(path, newValue?.value); - }} - inputValue={inputValue} - onInputChange={(_event, newInputValue) => { - setInputValue(newInputValue); - }} - autoHighlight - autoComplete - fullWidth - options={options} - getOptionLabel={getOptionLabel || ((option) => option?.label)} - freeSolo={false} - renderInput={(params) => { - return ( - - ); - }} - renderOption={renderOption} - filterOptions={filterOptions} - /> - - {firstFormHelperText} - - {secondFormHelperText} - - ); -}; diff --git a/packages/material-renderers/src/mui-controls/MuiCheckbox.tsx b/packages/material-renderers/src/mui-controls/MuiCheckbox.tsx deleted file mode 100644 index 529790b31e..0000000000 --- a/packages/material-renderers/src/mui-controls/MuiCheckbox.tsx +++ /dev/null @@ -1,65 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { CellProps, WithClassname } from '@jsonforms/core'; -import { Checkbox, InputProps } from '@mui/material'; -import merge from 'lodash/merge'; - -interface MuiCheckboxInputProps { - inputProps?: InputProps['inputProps']; -} - -export const MuiCheckbox = React.memo(function MuiCheckbox( - props: CellProps & WithClassname & MuiCheckboxInputProps -) { - const { - data, - className, - id, - enabled, - uischema, - path, - handleChange, - config, - inputProps, - } = props; - const appliedUiSchemaOptions = merge({}, config, uischema.options); - const inputPropsMerged = merge({}, inputProps, { - autoFocus: !!appliedUiSchemaOptions.focus, - }); - // !! causes undefined value to be converted to false, otherwise has no effect - const checked = !!data; - - return ( - handleChange(path, isChecked)} - className={className} - id={id} - disabled={!enabled} - inputProps={inputPropsMerged} - /> - ); -}); diff --git a/packages/material-renderers/src/mui-controls/MuiInputInteger.tsx b/packages/material-renderers/src/mui-controls/MuiInputInteger.tsx deleted file mode 100644 index 8d69b1e635..0000000000 --- a/packages/material-renderers/src/mui-controls/MuiInputInteger.tsx +++ /dev/null @@ -1,88 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { CellProps, WithClassname } from '@jsonforms/core'; -import merge from 'lodash/merge'; -import { - useDebouncedChange, - useInputComponent, - WithInputProps, - useFocus, -} from '../util'; - -const toNumber = (value: string) => - value === '' ? undefined : parseInt(value, 10); -const eventToValue = (ev: any) => toNumber(ev.target.value); - -export const MuiInputInteger = React.memo(function MuiInputInteger( - props: CellProps & WithClassname & WithInputProps -) { - const [focused, onFocus, onBlur] = useFocus(); - const { - data, - className, - id, - enabled, - uischema, - isValid, - path, - handleChange, - config, - label, - } = props; - const InputComponent = useInputComponent(); - const inputProps = { step: '1' }; - - const appliedUiSchemaOptions = merge({}, config, uischema.options); - - const [inputValue, onChange] = useDebouncedChange( - handleChange, - '', - data, - path, - eventToValue, - undefined, - true, - focused - ); - - return ( - - ); -}); diff --git a/packages/material-renderers/src/mui-controls/MuiInputNumber.tsx b/packages/material-renderers/src/mui-controls/MuiInputNumber.tsx deleted file mode 100644 index f31e90f968..0000000000 --- a/packages/material-renderers/src/mui-controls/MuiInputNumber.tsx +++ /dev/null @@ -1,86 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { CellProps, WithClassname } from '@jsonforms/core'; -import merge from 'lodash/merge'; -import { - useDebouncedChange, - useInputComponent, - WithInputProps, - useFocus, -} from '../util'; - -const toNumber = (value: string) => - value === '' ? undefined : parseFloat(value); -const eventToValue = (ev: any) => toNumber(ev.target.value); -export const MuiInputNumber = React.memo(function MuiInputNumber( - props: CellProps & WithClassname & WithInputProps -) { - const [focused, onFocus, onBlur] = useFocus(); - const { - data, - className, - id, - enabled, - uischema, - isValid, - path, - handleChange, - config, - label, - } = props; - const InputComponent = useInputComponent(); - const inputProps = { step: '0.1' }; - - const appliedUiSchemaOptions = merge({}, config, uischema.options); - const [inputValue, onChange] = useDebouncedChange( - handleChange, - '', - data, - path, - eventToValue, - undefined, - true, - focused - ); - - return ( - - ); -}); diff --git a/packages/material-renderers/src/mui-controls/MuiInputNumberFormat.tsx b/packages/material-renderers/src/mui-controls/MuiInputNumberFormat.tsx deleted file mode 100644 index e7ee020999..0000000000 --- a/packages/material-renderers/src/mui-controls/MuiInputNumberFormat.tsx +++ /dev/null @@ -1,95 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React, { useCallback } from 'react'; -import { CellProps, Formatted, WithClassname } from '@jsonforms/core'; -import merge from 'lodash/merge'; -import { - useDebouncedChange, - useInputComponent, - WithInputProps, - useFocus, -} from '../util'; - -export const MuiInputNumberFormat = React.memo(function MuiInputNumberFormat( - props: CellProps & WithClassname & Formatted & WithInputProps -) { - const [focused, onFocus, onBlur] = useFocus(); - const { - className, - id, - enabled, - uischema, - isValid, - path, - handleChange, - schema, - config, - label, - } = props; - const InputComponent = useInputComponent(); - const maxLength = schema.maxLength; - const appliedUiSchemaOptions = merge({}, config, uischema.options); - let inputProps; - if (appliedUiSchemaOptions.restrict) { - inputProps = { maxLength: maxLength }; - } else { - inputProps = {}; - } - const formattedNumber = props.toFormatted(props.data); - - const validStringNumber = useCallback( - (ev: any) => props.fromFormatted(ev.currentTarget.value), - [props.fromFormatted] - ); - const [inputValue, onChange] = useDebouncedChange( - handleChange, - '', - formattedNumber, - path, - validStringNumber, - undefined, - true, - focused - ); - - return ( - - ); -}); diff --git a/packages/material-renderers/src/mui-controls/MuiInputText.tsx b/packages/material-renderers/src/mui-controls/MuiInputText.tsx deleted file mode 100644 index 7a8e96ce2b..0000000000 --- a/packages/material-renderers/src/mui-controls/MuiInputText.tsx +++ /dev/null @@ -1,152 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React, { useState } from 'react'; -import { CellProps, WithClassname } from '@jsonforms/core'; -import { - IconButton, - InputAdornment, - InputBaseComponentProps, - InputProps, - useTheme, -} from '@mui/material'; -import merge from 'lodash/merge'; -import Close from '@mui/icons-material/Close'; -import { - JsonFormsTheme, - WithInputProps, - useDebouncedChange, - useInputComponent, - useFocus, -} from '../util'; - -interface MuiTextInputProps { - muiInputProps?: InputProps['inputProps']; - inputComponent?: InputProps['inputComponent']; -} - -const eventToValue = (ev: any) => - ev.target.value === '' ? undefined : ev.target.value; - -export const MuiInputText = React.memo(function MuiInputText( - props: CellProps & WithClassname & MuiTextInputProps & WithInputProps -) { - const [focused, onFocus, onBlur] = useFocus(); - const [showAdornment, setShowAdornment] = useState(false); - const { - data, - config, - className, - id, - enabled, - uischema, - isValid, - path, - handleChange, - schema, - muiInputProps, - label, - inputComponent, - } = props; - const InputComponent = useInputComponent(); - const maxLength = schema.maxLength; - const appliedUiSchemaOptions = merge({}, config, uischema.options); - let inputProps: InputBaseComponentProps; - if (appliedUiSchemaOptions.restrict) { - inputProps = { maxLength: maxLength }; - } else { - inputProps = {}; - } - - inputProps = merge(inputProps, muiInputProps); - - if (appliedUiSchemaOptions.trim && maxLength !== undefined) { - inputProps.size = maxLength; - } - - const [inputText, onChange, onClear] = useDebouncedChange( - handleChange, - '', - data, - path, - eventToValue, - undefined, - true, - focused - ); - const onPointerEnter = () => setShowAdornment(true); - const onPointerLeave = () => setShowAdornment(false); - - const theme: JsonFormsTheme = useTheme(); - - const closeStyle = { - background: - theme.jsonforms?.input?.delete?.background || - theme.palette.background.default, - borderRadius: '50%', - }; - - return ( - - - - - - } - inputComponent={inputComponent} - /> - ); -}); diff --git a/packages/material-renderers/src/mui-controls/MuiInputTime.tsx b/packages/material-renderers/src/mui-controls/MuiInputTime.tsx deleted file mode 100644 index 0a7c1da8eb..0000000000 --- a/packages/material-renderers/src/mui-controls/MuiInputTime.tsx +++ /dev/null @@ -1,68 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { CellProps, WithClassname } from '@jsonforms/core'; -import merge from 'lodash/merge'; -import { WithInputProps, useDebouncedChange, useInputComponent } from '../util'; - -export const MuiInputTime = React.memo(function MuiInputTime( - props: CellProps & WithClassname & WithInputProps -) { - const { - data, - className, - id, - enabled, - uischema, - isValid, - path, - handleChange, - config, - label, - } = props; - const InputComponent = useInputComponent(); - const appliedUiSchemaOptions = merge({}, config, uischema.options); - const [inputValue, onChange] = useDebouncedChange( - handleChange, - '', - data, - path - ); - - return ( - - ); -}); diff --git a/packages/material-renderers/src/mui-controls/MuiSelect.tsx b/packages/material-renderers/src/mui-controls/MuiSelect.tsx deleted file mode 100644 index 3427e30be4..0000000000 --- a/packages/material-renderers/src/mui-controls/MuiSelect.tsx +++ /dev/null @@ -1,88 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React, { useMemo } from 'react'; -import { EnumCellProps, WithClassname } from '@jsonforms/core'; - -import { MenuItem, Select } from '@mui/material'; -import merge from 'lodash/merge'; -import { TranslateProps } from '@jsonforms/react'; -import { i18nDefaults, WithInputProps, WithSelectProps } from '../util'; - -export const MuiSelect = React.memo(function MuiSelect( - props: EnumCellProps & - WithClassname & - TranslateProps & - WithInputProps & - WithSelectProps -) { - const { - data, - className, - id, - enabled, - schema, - uischema, - isValid, - path, - handleChange, - options, - config, - label, - t, - multiple, - } = props; - const appliedUiSchemaOptions = merge({}, config, uischema.options); - const noneOptionLabel = useMemo( - () => t('enum.none', i18nDefaults['enum.none'], { schema, uischema, path }), - [t, schema, uischema, path] - ); - - return ( - - ); -}); diff --git a/packages/material-renderers/src/mui-controls/MuiToggle.tsx b/packages/material-renderers/src/mui-controls/MuiToggle.tsx deleted file mode 100644 index ce2e808d5d..0000000000 --- a/packages/material-renderers/src/mui-controls/MuiToggle.tsx +++ /dev/null @@ -1,64 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2021 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { CellProps, WithClassname } from '@jsonforms/core'; -import { Switch, InputProps } from '@mui/material'; -import merge from 'lodash/merge'; - -interface MuiToggleInputProps { - inputProps?: InputProps['inputProps']; -} - -export const MuiToggle = React.memo(function MuiToggle( - props: CellProps & WithClassname & MuiToggleInputProps -) { - const { - data, - className, - id, - enabled, - uischema, - path, - handleChange, - config, - inputProps, - } = props; - const appliedUiSchemaOptions = merge({}, config, uischema.options); - const inputPropsMerged = merge({}, inputProps, { - autoFocus: !!appliedUiSchemaOptions.focus, - }); - const checked = !!data; - - return ( - handleChange(path, isChecked)} - className={className} - id={id} - disabled={!enabled} - inputProps={inputPropsMerged} - /> - ); -}); diff --git a/packages/material-renderers/src/mui-controls/index.ts b/packages/material-renderers/src/mui-controls/index.ts deleted file mode 100644 index 822f092af9..0000000000 --- a/packages/material-renderers/src/mui-controls/index.ts +++ /dev/null @@ -1,33 +0,0 @@ -/* - The MIT License - - Copyright (c) 2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -export * from './MuiAutocomplete'; -export * from './MuiCheckbox'; -export * from './MuiInputInteger'; -export * from './MuiInputNumber'; -export * from './MuiInputNumberFormat'; -export * from './MuiInputText'; -export * from './MuiInputTime'; -export * from './MuiSelect'; -export * from './MuiToggle'; diff --git a/packages/material-renderers/src/util/datejs.tsx b/packages/material-renderers/src/util/datejs.tsx deleted file mode 100644 index e9e7d56871..0000000000 --- a/packages/material-renderers/src/util/datejs.tsx +++ /dev/null @@ -1,73 +0,0 @@ -import dayjs from 'dayjs'; -import customParsing from 'dayjs/plugin/customParseFormat'; - -// required for the custom save formats in the date, time and date-time pickers -dayjs.extend(customParsing); - -export const createOnChangeHandler = - ( - path: string, - handleChange: (path: string, value: any) => void, - saveFormat: string - ) => - (value: dayjs.Dayjs) => { - if (!value) { - handleChange(path, undefined); - } else if (value.toString() !== 'Invalid Date') { - const formatedDate = formatDate(value, saveFormat); - handleChange(path, formatedDate); - } - }; - -export const createOnBlurHandler = - ( - path: string, - handleChange: (path: string, value: any) => void, - format: string, - saveFormat: string, - rerenderChild: () => void, - onBlur: () => void - ) => - (e: React.FocusEvent) => { - const date = dayjs(e.target.value, format); - const formatedDate = formatDate(date, saveFormat); - if (formatedDate.toString() === 'Invalid Date') { - handleChange(path, undefined); - rerenderChild(); - } else { - handleChange(path, formatedDate); - } - onBlur(); - }; - -export const formatDate = (date: dayjs.Dayjs, saveFormat: string) => { - let formatedDate = date.format(saveFormat); - // Workaround to address a bug in Dayjs, neglecting leading 0 (https://github.com/iamkun/dayjs/issues/1849) - const indexOfYear = saveFormat.indexOf('YYYY'); - if (date.year() < 1000 && indexOfYear !== -1) { - const stringUpToYear = formatedDate.slice(0, indexOfYear); - const stringFromYear = formatedDate.slice(indexOfYear); - if (date.year() >= 100) { - formatedDate = [stringUpToYear, 0, stringFromYear].join(''); - } else if (date.year() >= 10) { - formatedDate = [stringUpToYear, 0, 0, stringFromYear].join(''); - } else if (date.year() >= 1) { - formatedDate = [stringUpToYear, 0, 0, 0, stringFromYear].join(''); - } - } - return formatedDate; -}; - -export const getData = ( - data: any, - saveFormat: string | undefined -): dayjs.Dayjs | null => { - if (!data) { - return null; - } - const dayjsData = dayjs(data, saveFormat); - if (dayjsData.toString() === 'Invalid Date') { - return null; - } - return dayjsData; -}; diff --git a/packages/material-renderers/src/util/debounce.ts b/packages/material-renderers/src/util/debounce.ts deleted file mode 100644 index 2df8a13cc2..0000000000 --- a/packages/material-renderers/src/util/debounce.ts +++ /dev/null @@ -1,65 +0,0 @@ -/* - The MIT License - - Copyright (c) 2021 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import debounce from 'lodash/debounce'; -import { useState, useCallback, useEffect } from 'react'; - -const eventToValue = (ev: any) => ev.target.value; -export const useDebouncedChange = ( - handleChange: (path: string, value: any) => void, - defaultValue: any, - data: any, - path: string, - eventToValueFunction: (ev: any) => any = eventToValue, - timeout = 300, - flushOnBlur = false, - focused = false -): [any, React.ChangeEventHandler, () => void] => { - const [input, setInput] = useState(data ?? defaultValue); - useEffect(() => { - setInput(data ?? defaultValue); - }, [data]); - const debouncedUpdate = useCallback( - debounce((newValue: string) => handleChange(path, newValue), timeout), - [handleChange, path, timeout] - ); - useEffect(() => { - if (!focused && flushOnBlur) { - debouncedUpdate.flush(); - } - }, [focused, flushOnBlur, debouncedUpdate]); - const onChange = useCallback( - (ev: any) => { - const newValue = eventToValueFunction(ev); - setInput(newValue ?? defaultValue); - debouncedUpdate(newValue); - }, - [debouncedUpdate, eventToValueFunction] - ); - const onClear = useCallback(() => { - setInput(defaultValue); - handleChange(path, undefined); - }, [defaultValue, handleChange, path]); - return [input, onChange, onClear]; -}; diff --git a/packages/material-renderers/src/util/focus.ts b/packages/material-renderers/src/util/focus.ts deleted file mode 100644 index f961bf79f8..0000000000 --- a/packages/material-renderers/src/util/focus.ts +++ /dev/null @@ -1,32 +0,0 @@ -/* - The MIT License - - Copyright (c) 2021 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { useState, useCallback } from 'react'; - -export const useFocus = (): [boolean, () => void, () => void] => { - const [focused, setFocused] = useState(false); - const onFocus = useCallback(() => setFocused(true), []); - const onBlur = useCallback(() => setFocused(false), []); - return [focused, onFocus, onBlur]; -}; diff --git a/packages/material-renderers/src/util/i18nDefaults.ts b/packages/material-renderers/src/util/i18nDefaults.ts deleted file mode 100644 index 508ce9cefa..0000000000 --- a/packages/material-renderers/src/util/i18nDefaults.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const i18nDefaults = { - 'enum.none': 'None', -}; diff --git a/packages/material-renderers/src/util/index.ts b/packages/material-renderers/src/util/index.ts deleted file mode 100644 index 8ac005b542..0000000000 --- a/packages/material-renderers/src/util/index.ts +++ /dev/null @@ -1,30 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -export * from './datejs'; -export * from './layout'; -export * from './theme'; -export * from './debounce'; -export * from './focus'; -export * from './i18nDefaults'; diff --git a/packages/material-renderers/src/util/layout.tsx b/packages/material-renderers/src/util/layout.tsx deleted file mode 100644 index 3d51af9118..0000000000 --- a/packages/material-renderers/src/util/layout.tsx +++ /dev/null @@ -1,119 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import isEmpty from 'lodash/isEmpty'; -import React, { ComponentType } from 'react'; -import type Ajv from 'ajv'; -import type { UISchemaElement } from '@jsonforms/core'; -import { - getAjv, - JsonFormsCellRendererRegistryEntry, - JsonFormsRendererRegistryEntry, - JsonSchema, - OwnPropsOfRenderer, -} from '@jsonforms/core'; -import { JsonFormsDispatch, useJsonForms } from '@jsonforms/react'; -import { Grid } from '@mui/material'; - -export const renderLayoutElements = ( - elements: UISchemaElement[], - schema: JsonSchema, - path: string, - enabled: boolean, - renderers?: JsonFormsRendererRegistryEntry[], - cells?: JsonFormsCellRendererRegistryEntry[] -) => { - return elements.map((child, index) => ( - - - - )); -}; - -export interface MaterialLayoutRendererProps extends OwnPropsOfRenderer { - elements: UISchemaElement[]; - direction: 'row' | 'column'; -} -const MaterialLayoutRendererComponent = ({ - visible, - elements, - schema, - path, - enabled, - direction, - renderers, - cells, -}: MaterialLayoutRendererProps) => { - if (isEmpty(elements) || !visible) { - return null; - } else { - return ( - - {renderLayoutElements( - elements, - schema, - path, - enabled, - renderers, - cells - )} - - ); - } -}; -export const MaterialLayoutRenderer = React.memo( - MaterialLayoutRendererComponent -); - -export interface AjvProps { - ajv: Ajv; -} - -// TODO fix @typescript-eslint/ban-types -// eslint-disable-next-line @typescript-eslint/ban-types -export const withAjvProps =

( - Component: ComponentType -) => - function WithAjvProps(props: P) { - const ctx = useJsonForms(); - const ajv = getAjv({ jsonforms: { ...ctx } }); - - return ; - }; - -export interface MaterialLabelableLayoutRendererProps - extends MaterialLayoutRendererProps { - label?: string; -} diff --git a/packages/material-renderers/src/util/theme.ts b/packages/material-renderers/src/util/theme.ts deleted file mode 100644 index 40d47b9b56..0000000000 --- a/packages/material-renderers/src/util/theme.ts +++ /dev/null @@ -1,74 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - Theme, - FilledInput, - Input, - OutlinedInput, - TextFieldProps, - useThemeProps, - InputBaseProps, -} from '@mui/material'; - -export interface JsonFormsTheme extends Theme { - jsonforms?: { - input?: { - delete?: { - background?: string; - }; - }; - }; -} - -export interface WithInputProps { - label?: string; -} - -export interface WithSelectProps { - multiple?: boolean; -} - -const variantToInput = { - standard: Input, - filled: FilledInput, - outlined: OutlinedInput, -}; - -export const defaultInputVariant: TextFieldProps['variant'] = 'outlined'; - -export function useInputVariant(): TextFieldProps['variant'] { - const { variant = defaultInputVariant } = useThemeProps({ - props: {} as TextFieldProps, - name: 'MuiTextField', - }); - return variant; -} - -export function useInputComponent(): React.JSXElementConstructor< - InputBaseProps & WithInputProps -> { - const variant = useInputVariant(); - return variantToInput[variant] ?? variantToInput[defaultInputVariant]; -} diff --git a/packages/material-renderers/test/datejs.test.ts b/packages/material-renderers/test/datejs.test.ts deleted file mode 100644 index 24c8ea3d53..0000000000 --- a/packages/material-renderers/test/datejs.test.ts +++ /dev/null @@ -1,52 +0,0 @@ -/* - The MIT License - - Copyright (c) 2024-2024 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import dayjs from 'dayjs'; -import { formatDate } from '../src/util/datejs'; - -describe('Date Util tester', () => { - test('format default', () => { - const date = dayjs('2024-01-01'); - const actual = formatDate(date, 'YYYY-MM-DD'); - expect(actual).toBe('2024-01-01'); - }); - - test('format year < 1000', () => { - const date = dayjs('999-01-01'); - const actual = formatDate(date, 'YYYY-MM-DD'); - expect(actual).toBe('0999-01-01'); - }); - - test('format 100 < year < 1000', () => { - const date = dayjs(new Date('0099-01-01')); - const actual = formatDate(date, 'YYYY-MM-DD'); - expect(actual).toBe('0099-01-01'); - }); - - test('format 10 < year < 100', () => { - const date = dayjs(new Date('0019-01-01')); - const actual = formatDate(date, 'YYYY-MM-DD'); - expect(actual).toBe('0019-01-01'); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialAllOfRenderer.test.tsx b/packages/material-renderers/test/renderers/MaterialAllOfRenderer.test.tsx deleted file mode 100644 index 023bff41a5..0000000000 --- a/packages/material-renderers/test/renderers/MaterialAllOfRenderer.test.tsx +++ /dev/null @@ -1,115 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; - -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { ControlElement } from '@jsonforms/core'; -import { MaterialAllOfRenderer, materialRenderers } from '../../src'; -import { JsonForms, JsonFormsStateProvider } from '@jsonforms/react'; -import { initCore } from './util'; - -Enzyme.configure({ adapter: new Adapter() }); - -describe('Material allOf renderer', () => { - let wrapper: ReactWrapper; - - afterEach(() => wrapper.unmount()); - - it('should render', () => { - const schema = { - type: 'object', - properties: { - value: { - allOf: [ - { - title: 'String', - type: 'string', - }, - { - title: 'Number', - type: 'number', - }, - ], - }, - }, - }; - const uischema: ControlElement = { - type: 'Control', - label: 'Value', - scope: '#/properties/value', - }; - wrapper = mount( - - ); - expect(wrapper.find(MaterialAllOfRenderer).length).toBeTruthy(); - const inputs = wrapper.find('input'); - expect(inputs.length).toBe(2); - }); - - it('should be hideable', () => { - const schema = { - type: 'object', - properties: { - value: { - allOf: [ - { - title: 'String', - type: 'string', - }, - { - title: 'Number', - type: 'number', - }, - ], - }, - }, - }; - const uischema: ControlElement = { - type: 'Control', - label: 'Value', - scope: '#/properties/value', - }; - const core = initCore(schema, uischema); - wrapper = mount( - - - - ); - const inputs = wrapper.find('input'); - expect(inputs.length).toBe(0); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialAnyOfRenderer.test.tsx b/packages/material-renderers/test/renderers/MaterialAnyOfRenderer.test.tsx deleted file mode 100644 index e4ee868a4f..0000000000 --- a/packages/material-renderers/test/renderers/MaterialAnyOfRenderer.test.tsx +++ /dev/null @@ -1,312 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; - -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { ControlElement } from '@jsonforms/core'; -import { - MaterialAnyOfRenderer, - materialCells, - materialRenderers, -} from '../../src'; -import { JsonForms, JsonFormsStateProvider } from '@jsonforms/react'; -import { initCore, TestEmitter } from './util'; - -Enzyme.configure({ adapter: new Adapter() }); - -const waitForAsync = () => new Promise((resolve) => setTimeout(resolve, 0)); - -const clickAddButton = (wrapper: ReactWrapper, times: number) => { - const buttons = wrapper.find('button'); - const addButton = buttons.at(2); - for (let i = 0; i < times; i++) { - addButton.simulate('click'); - } - wrapper.update(); -}; - -const selectanyOfTab = (wrapper: ReactWrapper, at: number) => { - const buttons = wrapper.find('button'); - buttons.at(at).simulate('click'); - wrapper.update(); -}; - -describe('Material anyOf renderer', () => { - let wrapper: ReactWrapper; - - afterEach(() => wrapper.unmount()); - - it('should add an item at correct path', (done) => { - const schema = { - type: 'object', - properties: { - value: { - anyOf: [ - { - title: 'String', - type: 'string', - }, - { - title: 'Number', - type: 'number', - }, - ], - }, - }, - }; - const uischema: ControlElement = { - type: 'Control', - label: 'Value', - scope: '#/properties/value', - }; - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - { - onChangeData.data = data; - }} - /> - ); - expect(wrapper.find(MaterialAnyOfRenderer).length).toBeTruthy(); - const input = wrapper.find('input').first(); - input.simulate('change', { target: { value: 'test' } }); - wrapper.update(); - setTimeout(() => { - expect(onChangeData.data).toEqual({ - value: 'test', - }); - done(); - }, 1000); - }); - - it('should add a "mything"', async () => { - const schema = { - type: 'object', - properties: { - myThingsAndOrYourThings: { - anyOf: [ - { - $ref: '#/definitions/myThings', - }, - { - $ref: '#/definitions/yourThings', - }, - ], - }, - }, - definitions: { - myThings: { - title: 'MyThing', - type: 'array', - items: { - type: 'object', - properties: { - name: { - type: 'string', - }, - }, - }, - }, - yourThings: { - title: 'YourThings', - type: 'array', - items: { - type: 'object', - properties: { - age: { - type: 'number', - }, - }, - }, - }, - }, - }; - const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/myThingsAndOrYourThings', - }; - const core = initCore(schema, uischema); - wrapper = mount( - - - - ); - - await waitForAsync(); - - wrapper.update(); - - selectanyOfTab(wrapper, 1); - const nrOfRowsBeforeAdd = wrapper.find('tr'); - clickAddButton(wrapper, 2); - const nrOfRowsAfterAdd = wrapper.find('tr'); - - // 2 header row + 1 no data row - expect(nrOfRowsBeforeAdd.length).toBe(3); - // 2 header row + 2 data rows (one is replacing the 'No data' one) - expect(nrOfRowsAfterAdd.length).toBe(4); - }); - - it('should switch to "yourThing" edit, then switch back, then edit', async () => { - const schema = { - type: 'object', - properties: { - myThingsAndOrYourThings: { - anyOf: [ - { - $ref: '#/definitions/myThings', - }, - { - $ref: '#/definitions/yourThings', - }, - ], - }, - }, - definitions: { - myThings: { - title: 'MyThing', - type: 'array', - items: { - type: 'object', - properties: { - name: { - type: 'string', - }, - }, - }, - }, - yourThings: { - title: 'YourThings', - type: 'array', - items: { - type: 'object', - properties: { - age: { - type: 'number', - }, - }, - }, - }, - }, - }; - const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/myThingsAndOrYourThings', - }; - const onChangeData: any = { - data: undefined, - }; - const core = initCore(schema, uischema); - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - - await waitForAsync(); - - wrapper.update(); - - selectanyOfTab(wrapper, 1); - clickAddButton(wrapper, 1); - wrapper - .find('input') - .first() - .simulate('change', { target: { value: 5 } }); - wrapper.update(); - selectanyOfTab(wrapper, 0); - - const input = wrapper.find('input').first(); - input.simulate('change', { target: { value: 'test' } }); - wrapper.update(); - - let done: (value: undefined) => void; - const donePromise = new Promise((resolve) => { - done = resolve; - }); - setTimeout(() => { - expect(onChangeData.data).toEqual({ - myThingsAndOrYourThings: [{ age: 5, name: 'test' }], - }); - done(undefined); - }, 1000); - return donePromise; - }); - - it('should be hideable', () => { - const schema = { - type: 'object', - properties: { - value: { - anyOf: [ - { - title: 'String', - type: 'string', - }, - { - title: 'Number', - type: 'number', - }, - ], - }, - }, - }; - const uischema: ControlElement = { - type: 'Control', - label: 'Value', - scope: '#/properties/value', - }; - const core = initCore(schema, uischema); - wrapper = mount( - - - - ); - const inputs = wrapper.find('input'); - expect(inputs.length).toBe(0); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialAnyOfStringOrEnumControl.test.tsx b/packages/material-renderers/test/renderers/MaterialAnyOfStringOrEnumControl.test.tsx deleted file mode 100644 index d182dde19c..0000000000 --- a/packages/material-renderers/test/renderers/MaterialAnyOfStringOrEnumControl.test.tsx +++ /dev/null @@ -1,140 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; - -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { ControlElement, JsonSchema } from '@jsonforms/core'; -import { - MaterialAnyOfStringOrEnumControl, - materialAnyOfStringOrEnumControlTester, - materialRenderers, -} from '../../src'; -import { JsonForms } from '@jsonforms/react'; - -Enzyme.configure({ adapter: new Adapter() }); - -const schema: JsonSchema = { - anyOf: [{ type: 'string' }, { enum: ['foo', 'bar'] }], -}; - -const uischema: ControlElement = { - type: 'Control', - scope: '#', -}; - -describe('Material simple any of control tester', () => { - it('should only be applicable for simple any of cases', () => { - expect( - materialAnyOfStringOrEnumControlTester({ type: 'Foo' }, schema, undefined) - ).toBe(-1); - expect( - materialAnyOfStringOrEnumControlTester(uischema, schema, undefined) - ).toBe(5); - - const nestedSchema: JsonSchema = { - properties: { - foo: { anyOf: [{ type: 'string' }, { enum: ['foo', 'bar'] }] }, - }, - }; - const nestedUischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - }; - expect( - materialAnyOfStringOrEnumControlTester( - nestedUischema, - nestedSchema, - undefined - ) - ).toBe(5); - const schemaNoEnum: JsonSchema = { - anyOf: [{ type: 'string' }], - }; - const schemaConflictTypes: JsonSchema = { - anyOf: [{ type: 'string' }, { type: 'integer', enum: [1, 2] }], - }; - const schemaAdditionalProps: JsonSchema = { - anyOf: [{ type: 'string' }, { enum: ['foo', 'bar'] }, { maxLength: 5 }], - }; - const schemaNoString: JsonSchema = { - anyOf: [{ type: 'integer' }, { enum: [1, 2] }], - }; - expect( - materialAnyOfStringOrEnumControlTester(uischema, schemaNoEnum, undefined) - ).toBe(-1); - expect( - materialAnyOfStringOrEnumControlTester( - uischema, - schemaConflictTypes, - undefined - ) - ).toBe(-1); - expect( - materialAnyOfStringOrEnumControlTester( - uischema, - schemaAdditionalProps, - undefined - ) - ).toBe(5); - expect( - materialAnyOfStringOrEnumControlTester( - uischema, - schemaNoString, - undefined - ) - ).toBe(-1); - }); -}); - -describe('Material any of string or enum control', () => { - let wrapper: ReactWrapper; - - afterEach(() => { - wrapper.unmount(); - }); - - it('render', () => { - wrapper = mount( - - ); - expect(wrapper.find(MaterialAnyOfStringOrEnumControl).length).toBeTruthy(); - const inputs = wrapper.find('input'); - expect(inputs).toHaveLength(1); - - const datalist = wrapper.find('datalist'); - expect(datalist).toHaveLength(1); - expect(datalist.children()).toHaveLength(2); - - const validation = wrapper.find('p').first(); - expect(validation.props().className).toContain('MuiFormHelperText-root'); - expect(validation.children()).toHaveLength(0); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialArrayControl.test.tsx b/packages/material-renderers/test/renderers/MaterialArrayControl.test.tsx deleted file mode 100644 index 6a2b17bf26..0000000000 --- a/packages/material-renderers/test/renderers/MaterialArrayControl.test.tsx +++ /dev/null @@ -1,913 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - ArrayTranslationEnum, - ControlElement, - DispatchCellProps, - JsonSchema, -} from '@jsonforms/core'; -import * as React from 'react'; - -import MaterialArrayControlRenderer from '../../src/complex/MaterialArrayControlRenderer'; -import { materialCells, materialRenderers } from '../../src'; -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonFormsStateProvider, StatelessRenderer } from '@jsonforms/react'; -import { initCore, TestEmitter } from './util'; -import { checkTooltip, checkTooltipTranslation } from './tooltipChecker'; - -Enzyme.configure({ adapter: new Adapter() }); - -const fixture: { - data: any; - schema: JsonSchema; - uischema: ControlElement; -} = { - data: [ - { - message: 'El Barto was here', - done: true, - }, - { - message: 'Yolo', - }, - ], - schema: { - type: 'array', - items: { - type: 'object', - properties: { - message: { - type: 'string', - maxLength: 3, - }, - done: { - type: 'boolean', - }, - }, - }, - }, - uischema: { - type: 'Control', - scope: '#', - }, -}; - -const fixture2: { - data: any; - schema: JsonSchema; - uischema: ControlElement; -} = { - data: { test: ['foo', 'baz', 'bar'] }, - schema: { - type: 'object', - properties: { - test: { - type: 'array', - items: { type: 'string' }, - }, - }, - }, - uischema: { - type: 'Control', - scope: '#/properties/test', - options: { - showSortButtons: true, - }, - }, -}; - -describe('Material array control', () => { - let wrapper: ReactWrapper; - - afterEach(() => wrapper.unmount()); - - it('should render', () => { - const core = initCore(fixture.schema, fixture.uischema, fixture.data); - wrapper = mount( - - - - ); - - const rows = wrapper.find('tr'); - // 2 header rows + 2 data entries - expect(rows.length).toBe(4); - }); - - it('should render empty', () => { - const core = initCore(fixture.schema, fixture.uischema); - wrapper = mount( - - - - ); - - const rows = wrapper.find('tr'); - // two header rows + no data row - expect(rows.length).toBe(3); - const headerColumns = rows.at(1).children(); - // 3 columns: message & done properties + column for delete button - expect(headerColumns).toHaveLength(3); - }); - - it('should render even without properties', () => { - // re-init - const data: any = { test: [] }; - const schema: JsonSchema = { - type: 'object', - properties: { - test: { - type: 'array', - items: { type: 'object' }, - }, - }, - }; - const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/test', - }; - const core = initCore(schema, uischema, data); - - wrapper = mount( - - - - ); - - const rows = wrapper.find('tr'); - // two header rows + no data row - expect(rows.length).toBe(3); - const headerColumns = rows.at(1).children(); - // 2 columns: content + buttons - expect(headerColumns).toHaveLength(2); - }); - - it('should use title as a header if it exists', () => { - // re-init - const data: any = { test: [] }; - const schema: JsonSchema = { - type: 'object', - properties: { - test: { - type: 'array', - items: { - type: 'object', - properties: { - test1: { - type: 'string', - title: 'first test', - }, - test_2: { - type: 'string', - }, - }, - }, - }, - }, - }; - const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/test', - }; - const core = initCore(schema, uischema, data); - - wrapper = mount( - - - - ); - - // column headings are in the second row of the table, wrapped in - const headers = wrapper.find('tr').at(1).find('th'); - - // the first property has a title, so we expect it to be rendered as the first column heading - expect(headers.at(0).text()).toEqual('first test'); - - // the second property has no title, so we expect to see the property name in start case - expect(headers.at(1).text()).toEqual('Test 2'); - }); - - it('should render empty primitives', () => { - // re-init - const data: any = { test: [] }; - const schema: JsonSchema = { - type: 'object', - properties: { - test: { - type: 'array', - items: { type: 'string' }, - }, - }, - }; - const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/test', - }; - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const rows = wrapper.find('tr'); - // header + no data row - expect(rows).toHaveLength(2); - const emptyDataCol = rows.at(1).find('td'); - expect(emptyDataCol).toHaveLength(1); - // selection column + 1 data column - expect(emptyDataCol.first().props().colSpan).toBe(2); - }); - - it('should render primitives', () => { - // re-init - const data = { test: ['foo', 'bar'] }; - const schema = { - type: 'object', - properties: { - test: { - type: 'array', - items: { type: 'string' }, - }, - }, - }; - const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/test', - }; - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const rows = wrapper.find('tr'); - // header + 2 data entries - expect(rows).toHaveLength(3); - }); - - it('should render description', () => { - const descriptionSchema = { - ...fixture.schema, - description: 'This is an array description', - }; - - const core = initCore(descriptionSchema, fixture.uischema, fixture.data); - wrapper = mount( - - - - ); - expect( - wrapper.text().includes('This is an array description') - ).toBeTruthy(); - expect(wrapper.find('thead .MuiFormHelperText-root').exists()).toBeTruthy(); - }); - - it('should not render description container if there is none', () => { - const descriptionSchema = { - ...fixture.schema, - }; - // make sure there is no description - delete descriptionSchema.description; - - const core = initCore(descriptionSchema, fixture.uischema, fixture.data); - wrapper = mount( - - - - ); - expect(wrapper.find('thead .MuiFormHelperText-root').exists()).toBeFalsy(); - }); - - it('should delete an item', () => { - const core = initCore(fixture.schema, fixture.uischema, fixture.data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - - const buttons = wrapper.find('button'); - // 7 buttons - // add row - // clear string - // delete row - // clear string - // delete row - // two dialog buttons (no + yes) - const nrOfRowsBeforeDelete = wrapper.find('tr').length; - - const deleteButton = buttons.at(2); - deleteButton.simulate('click'); - - const confirmButton = buttons.at(6); - confirmButton.simulate('click'); - - const nrOfRowsAfterDelete = wrapper.find('tr').length; - - expect(nrOfRowsBeforeDelete).toBe(4); - expect(nrOfRowsAfterDelete).toBe(3); - expect(onChangeData.data.length).toBe(1); - }); - - const CellRenderer1: StatelessRenderer = () => ( -

- ); - const CellRenderer2: StatelessRenderer = () => ( -
- ); - - it('should use cells from store', () => { - const core = initCore(fixture.schema, fixture.uischema, fixture.data); - const cells = [ - { - tester: () => 50, - cell: CellRenderer1, - }, - { - tester: () => 51, - cell: CellRenderer2, - }, - ]; - - wrapper = mount( - - - - ); - - const rows = wrapper.find({ className: 'cell test 2' }); - // 2 header rows + 2 data entries - expect(rows.length).toBe(4); - }); - - it('should use cells from own props', () => { - const core = initCore(fixture.schema, fixture.uischema, fixture.data); - const cell = { - tester: () => 50, - cell: CellRenderer1, - }; - - wrapper = mount( - - 60, cell: CellRenderer2 }]} - /> - - ); - - const rows = wrapper.find({ className: 'cell test 2' }); - // 2 header rows + 2 data entries - expect(rows.length).toBe(4); - }); - - it('should support adding rows that contain enums', () => { - const schema = { - type: 'object', - properties: { - things: { - type: 'array', - items: { - type: 'object', - properties: { - somethingElse: { - type: 'string', - }, - thing: { - type: 'string', - enum: ['thing'], - }, - }, - }, - }, - }, - }; - const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/things', - }; - const core = initCore(schema, uischema, {}); - const onChangeData: any = { - data: undefined, - }; - - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - - const buttons = wrapper.find('button'); - // 3 buttons - // add row - // two dialog buttons (no + yes) - const nrOfRowsBeforeAdd = wrapper.find('tr').length; - - const addButton = buttons.at(0); - addButton.simulate('click'); - addButton.simulate('click'); - wrapper.update(); - const nrOfRowsAfterAdd = wrapper.find('tr').length; - - // 2 header rows + 'no data' row - expect(nrOfRowsBeforeAdd).toBe(3); - expect(nrOfRowsAfterAdd).toBe(4); - expect(onChangeData.data).toEqual({ things: [{}, {}] }); - }); - - it('should be hideable', () => { - const schema = { - type: 'object', - properties: { - things: { - type: 'array', - items: { - type: 'object', - properties: { - somethingElse: { - type: 'string', - }, - thing: { - type: 'string', - enum: ['thing'], - }, - }, - }, - }, - }, - }; - const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/things', - }; - const core = initCore(schema, uischema, {}); - wrapper = mount( - - - - ); - - const nrOfButtons = wrapper.find('button').length; - expect(nrOfButtons).toBe(0); - - const nrOfRows = wrapper.find('tr').length; - expect(nrOfRows).toBe(0); - }); - it('should render sort buttons if showSortButtons is true', () => { - const data = { test: ['foo'] }; - const core = initCore(fixture2.schema, fixture2.uischema, data); - wrapper = mount( - - - - ); - // up button - expect( - wrapper.find('button').find({ 'aria-label': 'Move item up' }).length - ).toBe(1); - // down button - expect( - wrapper.find('button').find({ 'aria-label': 'Move item down' }).length - ).toBe(1); - }); - it('should be able to move item down if down button is clicked', () => { - const core = initCore(fixture2.schema, fixture2.uischema, fixture2.data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - // first row is header in table - const downButton = wrapper - .find('tr') - .at(1) - .find('button') - .find({ 'aria-label': 'Move item down' }); - downButton.simulate('click'); - expect(onChangeData.data).toEqual({ - test: ['baz', 'foo', 'bar'], - }); - }); - it('should be able to move item up if up button is clicked', () => { - const core = initCore(fixture2.schema, fixture2.uischema, fixture2.data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - // first row is header in table - const upButton = wrapper - .find('tr') - .at(3) - .find('button') - .find({ 'aria-label': 'Move item up' }); - upButton.simulate('click'); - expect(onChangeData.data).toEqual({ - test: ['foo', 'bar', 'baz'], - }); - }); - it('should have up button disabled for first element', () => { - const core = initCore(fixture2.schema, fixture2.uischema, fixture2.data); - wrapper = mount( - - - - ); - // first row is header in table - const upButton = wrapper - .find('tr') - .at(1) - .find('button') - .find({ 'aria-label': 'Move item up' }); - expect(upButton.is('[disabled]')).toBe(true); - }); - - it('should have fields enabled', () => { - const core = initCore(fixture2.schema, fixture2.uischema, fixture2.data); - wrapper = mount( - - - - ); - // first row is header in table - const input = wrapper.find('tr').at(1).find('input').first(); - expect(input.props().disabled).toBe(false); - }); - - it('should have fields disabled', () => { - const core = initCore(fixture2.schema, fixture2.uischema, fixture2.data); - wrapper = mount( - - - - ); - // first row is header in table - const input = wrapper.find('tr').at(1).find('input').first(); - expect(input.props().disabled).toBe(true); - }); - - it('add and delete buttons should exist if enabled', () => { - const core = initCore(fixture2.schema, fixture2.uischema, fixture2.data); - wrapper = mount( - - - - ); - - const deleteButton = wrapper.find({ 'aria-label': 'Delete button' }); - expect(deleteButton.exists()).toBeTruthy(); - const addButton = wrapper.find({ 'aria-label': 'Add to Test button' }); - expect(addButton.exists()).toBeTruthy(); - }); - - it('add and delete buttons should be removed if disabled', () => { - const core = initCore(fixture2.schema, fixture2.uischema, fixture2.data); - wrapper = mount( - - - - ); - - const deleteButton = wrapper.find({ 'aria-label': 'Delete button' }); - expect(deleteButton.exists()).toBeFalsy(); - const addButton = wrapper.find({ 'aria-label': 'Add to Test button' }); - expect(addButton.exists()).toBeFalsy(); - }); - - it('add button should be removed if indicated via ui schema', () => { - const core = initCore(fixture2.schema, fixture2.uischema, fixture2.data); - const uischema = { ...fixture2.uischema }; - uischema.options = { ...uischema.options, disableAdd: true }; - wrapper = mount( - - - - ); - - const button = wrapper.find({ 'aria-label': 'Add to Test button' }); - expect(button.exists()).toBeFalsy(); - }); - - it('delete button should be removed if indicated via ui schema', () => { - const core = initCore(fixture2.schema, fixture2.uischema, fixture2.data); - const uischema = { ...fixture2.uischema }; - uischema.options = { ...uischema.options, disableRemove: true }; - wrapper = mount( - - - - ); - - const button = wrapper.find({ 'aria-label': 'Delete button' }); - expect(button.exists()).toBeFalsy(); - }); - - it('add and delete buttons should be removed if indicated via config', () => { - const core = initCore(fixture2.schema, fixture2.uischema, fixture2.data); - wrapper = mount( - - - - ); - - const deleteButton = wrapper.find({ 'aria-label': 'Delete button' }); - expect(deleteButton.exists()).toBeFalsy(); - const addButton = wrapper.find({ 'aria-label': 'Add to Test button' }); - expect(addButton.exists()).toBeFalsy(); - }); - - it('should have down button disabled for last element', () => { - const core = initCore(fixture2.schema, fixture2.uischema, fixture2.data); - wrapper = mount( - - - - ); - // first row is header in table - // first buttton is up arrow, second button is down arrow - const downButton = wrapper - .find('tr') - .at(3) - .find('button') - .find({ 'aria-label': 'Move item down' }); - expect(downButton.is('[disabled]')).toBe(true); - }); - - it('should have a tooltip for add button', () => { - wrapper = checkTooltip( - fixture.schema, - fixture.uischema, - wrapper, - (wrapper) => wrapper.find('tr').at(0), - ArrayTranslationEnum.addTooltip, - { - id: 'tooltip-add', - }, - fixture.data - ); - }); - it('should have a translatable tooltip for add button', () => { - wrapper = checkTooltipTranslation( - fixture.schema, - fixture.uischema, - wrapper, - (wrapper) => wrapper.find('tr').at(0), - { - id: 'tooltip-add', - }, - fixture.data - ); - }); - - it('should have a tooltip for delete button', () => { - wrapper = checkTooltip( - fixture2.schema, - fixture2.uischema, - wrapper, - (wrapper) => wrapper.find('tr').at(1), - ArrayTranslationEnum.removeTooltip, - { - id: 'tooltip-remove', - }, - fixture2.data - ); - }); - it('should have a translatable tooltip for delete button', () => { - wrapper = checkTooltipTranslation( - fixture2.schema, - fixture2.uischema, - wrapper, - (wrapper) => wrapper.find('tr').at(1), - { - id: 'tooltip-remove', - }, - fixture2.data - ); - }); - - it('should have a tooltip for up button', () => { - wrapper = checkTooltip( - fixture2.schema, - fixture2.uischema, - wrapper, - (wrapper) => wrapper.find('tr').at(1), - ArrayTranslationEnum.up, - { - id: 'tooltip-up', - }, - fixture2.data - ); - }); - it('should have a translatable tooltip for up button', () => { - wrapper = checkTooltipTranslation( - fixture2.schema, - fixture2.uischema, - wrapper, - (wrapper) => wrapper.find('tr').at(1), - { - id: 'tooltip-up', - }, - fixture2.data - ); - }); - - it('should have a tooltip for down button', () => { - wrapper = checkTooltip( - fixture2.schema, - fixture2.uischema, - wrapper, - (wrapper) => wrapper.find('tr').at(1), - ArrayTranslationEnum.down, - { - id: 'tooltip-down', - }, - fixture2.data - ); - }); - it('should have a translatable tooltip for down button', () => { - wrapper = checkTooltipTranslation( - fixture2.schema, - fixture2.uischema, - wrapper, - (wrapper) => wrapper.find('tr').at(1), - { - id: 'tooltip-down', - }, - fixture2.data - ); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialArrayLayout.test.tsx b/packages/material-renderers/test/renderers/MaterialArrayLayout.test.tsx deleted file mode 100644 index bfda804f84..0000000000 --- a/packages/material-renderers/test/renderers/MaterialArrayLayout.test.tsx +++ /dev/null @@ -1,1263 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - ArrayTranslationEnum, - ControlElement, - i18nJsonSchema, - JsonSchema7, - Translator, -} from '@jsonforms/core'; -import * as React from 'react'; - -import { ArrayLayoutToolbar, materialRenderers } from '../../src'; -import { - MaterialArrayLayout, - materialArrayLayoutTester, -} from '../../src/layouts'; -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonForms, JsonFormsStateProvider } from '@jsonforms/react'; -import { Accordion } from '@mui/material'; -import { createTesterContext, testTranslator, initCore } from './util'; -import { checkTooltip, checkTooltipTranslation } from './tooltipChecker'; -import { cloneDeep } from 'lodash'; - -Enzyme.configure({ adapter: new Adapter() }); - -const data = [ - { - message: 'El Barto was here', - message2: 'El Barto was here 2', - done: true, - }, - { - message: 'Yolo', - message2: 'Yolo 2', - }, -]; - -const emptyData: any[] = []; - -const enumOrOneOfData = [ - { - message: 'El Barto was here', - messageType: 'MSG_TYPE_1', - }, - { - message: 'El Barto was not here', - messageType: 'MSG_TYPE_2', - }, - { - message: 'Yolo', - }, -]; - -const schema: JsonSchema7 = { - type: 'array', - items: { - type: 'object', - properties: { - message: { - type: 'string', - maxLength: 3, - }, - done: { - type: 'boolean', - }, - }, - }, -}; - -const enumSchema: JsonSchema7 = { - type: 'array', - items: { - type: 'object', - properties: { - messageType: { - type: 'string', - enum: ['MSG_TYPE_1', 'MSG_TYPE_2'], - }, - }, - }, -}; - -const oneOfSchema = { - type: 'array', - items: { - type: 'object', - properties: { - messageType: { - type: 'string', - oneOf: [ - { - const: 'MSG_TYPE_1', - }, - { - const: 'MSG_TYPE_2', - title: 'Second message type', - }, - ], - }, - }, - }, -}; - -const deepEnumOrOneOfData = { - article: { - title: 'title', - comments: [ - { - author: { - name: 'John', - type: 'WRITER', - role: 'ROLE_1', - }, - }, - { - author: { - name: 'John', - type: 'AUTHOR', - role: 'ROLE_2', - }, - }, - ], - }, -}; - -const deepEnumOrOneOfSchema: JsonSchema7 = { - type: 'object', - properties: { - article: { - type: 'object', - properties: { - title: { - type: 'string', - }, - comments: { - type: 'array', - items: { - type: 'object', - properties: { - author: { - type: 'object', - properties: { - name: { - type: 'string', - }, - type: { - type: 'string', - enum: ['AUTHOR', 'WRITER'], - }, - role: { - type: 'string', - oneOf: [ - { - const: 'ROLE_1', - }, - { - const: 'ROLE_2', - title: 'Second role', - }, - ], - }, - }, - }, - }, - }, - }, - }, - }, - }, -}; - -const deepUiSchemaWithEnumChildLabelProp: ControlElement = { - type: 'Control', - scope: '#/properties/article/properties/comments', - options: { - elementLabelProp: 'author.type', - detail: { - type: 'HorizontalLayout', - elements: [ - { type: 'Control', scope: '#/properties/author/properties/name' }, - { type: 'Control', scope: '#/properties/author/properties/type' }, - { type: 'Control', scope: '#/properties/author/properties/role' }, - ], - }, - }, -}; - -const deepUiSchemaWithOneOfChildLabelProp: ControlElement = { - type: 'Control', - scope: '#/properties/article/properties/comments', - options: { - elementLabelProp: 'author.role', - detail: { - type: 'HorizontalLayout', - elements: [ - { type: 'Control', scope: '#/properties/author/properties/name' }, - { type: 'Control', scope: '#/properties/author/properties/type' }, - { type: 'Control', scope: '#/properties/author/properties/role' }, - ], - }, - }, -}; - -const nestedSchema: JsonSchema7 = { - type: 'array', - items: { - ...schema, - }, -}; - -const nestedSchemaWithRef = { - definitions: { - arrayItems: { - ...schema, - }, - }, - type: 'array', - items: { - $ref: '#/definitions/arrayItems', - }, -}; - -const uischema: ControlElement = { - type: 'Control', - scope: '#', -}; - -const nestedSchema2 = { - type: 'array', - items: { - type: 'object', - properties: { - objectarrayofstrings: { - type: 'object', - properties: { - choices: { - type: 'array', - items: { - type: 'string', - }, - }, - }, - }, - }, - }, -}; - -const nestedSchema2WithRef = { - definitions: { - arrayItems: { - ...nestedSchema2, - }, - }, - type: 'array', - items: { - $ref: '#/definitions/arrayItems', - }, -}; - -const uischemaWithSortOption: ControlElement = { - type: 'Control', - scope: '#', - options: { - showSortButtons: true, - }, -}; - -const uischemaWithChildLabelProp: ControlElement = { - type: 'Control', - scope: '#', - options: { - elementLabelProp: 'message2', - }, -}; - -const uiSchemaWithEnumOrOneOfChildLabelProp: ControlElement = { - type: 'Control', - scope: '#', - options: { - elementLabelProp: 'messageType', - detail: { - type: 'HorizontalLayout', - elements: [ - { type: 'Control', scope: '#/properties/message' }, - { type: 'Control', scope: '#/properties/messageType' }, - ], - }, - }, -}; - -const uischemaOptions: { - generate: ControlElement; - default: ControlElement; - inline: ControlElement; -} = { - default: { - type: 'Control', - scope: '#', - options: { - detail: 'DEFAULT', - }, - }, - generate: { - type: 'Control', - scope: '#', - options: { - detail: 'GENERATE', - }, - }, - inline: { - type: 'Control', - scope: '#', - options: { - detail: { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/message', - }, - ], - }, - }, - }, -}; - -describe('Material array layout tester', () => { - it('should only be applicable for intermediate array or when containing proper options', () => { - expect(materialArrayLayoutTester(uischema, schema, undefined)).toBe(-1); - expect(materialArrayLayoutTester(uischema, nestedSchema, undefined)).toBe( - 4 - ); - expect(materialArrayLayoutTester(uischema, nestedSchema2, undefined)).toBe( - 4 - ); - expect( - materialArrayLayoutTester( - uischema, - nestedSchemaWithRef, - createTesterContext(nestedSchemaWithRef) - ) - ).toBe(4); - expect( - materialArrayLayoutTester( - uischema, - nestedSchemaWithRef, - createTesterContext(nestedSchemaWithRef) - ) - ).toBe(4); - expect( - materialArrayLayoutTester( - uischema, - nestedSchema2WithRef, - createTesterContext(nestedSchema2WithRef) - ) - ).toBe(4); - - expect( - materialArrayLayoutTester(uischemaOptions.default, schema, undefined) - ).toBe(-1); - expect( - materialArrayLayoutTester(uischemaOptions.generate, schema, undefined) - ).toBe(4); - expect( - materialArrayLayoutTester(uischemaOptions.inline, schema, undefined) - ).toBe(4); - }); -}); - -describe('Material array layout', () => { - let wrapper: ReactWrapper; - - afterEach(() => wrapper.unmount()); - - it('should render two by two children', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const controls = wrapper.find('input'); - // 2 data entries with each having 2 controls - expect(controls).toHaveLength(4); - }); - - it('should generate uischema when options.detail=GENERATE', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const controls = wrapper.find('input'); - // 2 data entries with each having 2 controls - expect(controls).toHaveLength(4); - }); - - it('should use inline options.detail uischema', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const controls = wrapper.find('input'); - // 2 data entries with each having 1 control - expect(controls).toHaveLength(2); - }); - - it('should be hideable', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const controls = wrapper.find('input'); - // no controls should be rendered - expect(controls).toHaveLength(0); - }); - - it('should have renderers prop via ownProps', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const materialArrayLayout = wrapper.find(MaterialArrayLayout); - expect(materialArrayLayout.props().renderers).toHaveLength(0); - }); - - it('ui schema label for array', () => { - const uischemaWithLabel = { - ...uischema, - label: 'My awesome label', - }; - wrapper = mount( - - ); - - expect(wrapper.find(MaterialArrayLayout).length).toBeTruthy(); - - const listLabel = wrapper.find('h6').at(0); - expect(listLabel.text()).toBe('My awesome label'); - }); - - it('schema title for array', () => { - const titleSchema = { - ...schema, - title: 'My awesome title', - }; - - wrapper = arrayLayoutWrapper( - wrapper, - data, - titleSchema, - uischema, - undefined - ); - - const listTitle = wrapper.find('h6').at(0); - expect(listTitle.text()).toBe('My awesome title'); - }); - - it('should render sort buttons if showSortButtons is true', () => { - wrapper = mount( - - ); - - expect(wrapper.find(MaterialArrayLayout).length).toBeTruthy(); - - // up button - expect( - wrapper - .find('Memo(ExpandPanelRendererComponent)') - .at(0) - .find('button') - .find({ 'aria-label': 'Move item up' }).length - ).toBe(1); - // down button - expect( - wrapper - .find('Memo(ExpandPanelRendererComponent)') - .at(0) - .find('button') - .find({ 'aria-label': 'Move item down' }).length - ).toBe(1); - }); - it('should render sort buttons if showSortButtons is true in config', () => { - wrapper = mount( - - ); - - expect(wrapper.find(MaterialArrayLayout).length).toBeTruthy(); - - // up button - expect( - wrapper - .find('Memo(ExpandPanelRendererComponent)') - .at(0) - .find('button') - .find({ 'aria-label': 'Move item up' }).length - ).toBe(1); - // down button - expect( - wrapper - .find('Memo(ExpandPanelRendererComponent)') - .at(0) - .find('button') - .find({ 'aria-label': 'Move item down' }).length - ).toBe(1); - }); - it('should move item up if up button is presses', (done) => { - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - { - onChangeData.data = data; - }} - /> - ); - - expect(wrapper.find(MaterialArrayLayout).length).toBeTruthy(); - - // getting up button of second item in expension panel; - const upButton = wrapper - .find('Memo(ExpandPanelRendererComponent)') - .at(1) - .find('button') - .find({ 'aria-label': 'Move item up' }); - upButton.simulate('click'); - // events are debounced for some time, so let's wait - setTimeout(() => { - expect(onChangeData.data).toEqual([ - { - message: 'Yolo', - message2: 'Yolo 2', - }, - { - message: 'El Barto was here', - message2: 'El Barto was here 2', - done: true, - }, - ]); - done(); - }, 50); - }); - it('should move item down if down button is pressed', (done) => { - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - { - onChangeData.data = data; - }} - /> - ); - - expect(wrapper.find(MaterialArrayLayout).length).toBeTruthy(); - - // getting up button of second item in expension panel; - const upButton = wrapper - .find('Memo(ExpandPanelRendererComponent)') - .at(0) - .find('button') - .find({ 'aria-label': 'Move item down' }); - upButton.simulate('click'); - // events are debounced for some time, so let's wait - setTimeout(() => { - expect(onChangeData.data).toEqual([ - { - message: 'Yolo', - message2: 'Yolo 2', - }, - { - message: 'El Barto was here', - message2: 'El Barto was here 2', - done: true, - }, - ]); - done(); - }, 50); - }); - it('should have up button disabled for first element', () => { - wrapper = mount( - - ); - - expect(wrapper.find(MaterialArrayLayout).length).toBeTruthy(); - - // getting up button of second item in expension panel; - const upButton = wrapper - .find('Memo(ExpandPanelRendererComponent)') - .at(0) - .find('button') - .find({ 'aria-label': 'Move item up' }); - expect(upButton.is('[disabled]')).toBe(true); - }); - it('should have down button disabled for last element', () => { - wrapper = mount( - - ); - - expect(wrapper.find(MaterialArrayLayout).length).toBeTruthy(); - - // getting up button of second item in expension panel; - const downButton = wrapper - .find('Memo(ExpandPanelRendererComponent)') - .at(1) - .find('button') - .find({ 'aria-label': 'Move item down' }); - expect(downButton.is('[disabled]')).toBe(true); - }); - - it('add and delete buttons should exist if enabled', () => { - wrapper = mount( - - ); - - const deleteButton = wrapper.find({ 'aria-label': 'Delete button' }); - expect(deleteButton.exists()).toBeTruthy(); - const addButton = wrapper.find({ 'aria-label': 'Add button' }); - expect(addButton.exists()).toBeTruthy(); - }); - - it('add and delete buttons should be removed if disabled', () => { - const readOnlySchema = { ...schema }; - readOnlySchema.readOnly = true; - wrapper = mount( - - ); - - const deleteButton = wrapper.find({ 'aria-label': 'Delete button' }); - expect(deleteButton.exists()).toBeFalsy(); - const addButton = wrapper.find({ 'aria-label': 'Add button' }); - expect(addButton.exists()).toBeFalsy(); - }); - - it('add button should be removed if indicated via ui schema', () => { - const disableUischema = { ...uischema }; - disableUischema.options = { ...uischema.options, disableAdd: true }; - wrapper = mount( - - ); - - const button = wrapper.find({ 'aria-label': 'Add button' }); - expect(button.exists()).toBeFalsy(); - }); - - it('delete button should be removed if indicated via ui schema', () => { - const disableUischema = { ...uischema }; - disableUischema.options = { ...uischema.options, disableRemove: true }; - wrapper = mount( - - ); - - const button = wrapper.find({ 'aria-label': 'Delete button' }); - expect(button.exists()).toBeFalsy(); - }); - - it('add and delete buttons should be removed if indicated via config', () => { - wrapper = mount( - - ); - - const deleteButton = wrapper.find({ 'aria-label': 'Delete button' }); - expect(deleteButton.exists()).toBeFalsy(); - const addButton = wrapper.find({ 'aria-label': 'Add button' }); - expect(addButton.exists()).toBeFalsy(); - }); - - const getChildLabel = (wrapper: ReactWrapper, index: number) => - wrapper - .find(`#${wrapper.find(Accordion).at(index).props()['aria-labelledby']}`) - .text(); - - it('should render first simple property as child label', () => { - wrapper = arrayLayoutWrapper( - wrapper, - data, - schema, - uischemaWithSortOption, - undefined - ); - - expect(getChildLabel(wrapper, 0)).toBe('El Barto was here'); - expect(getChildLabel(wrapper, 1)).toBe('Yolo'); - }); - - it('should render configured child label property as child label', () => { - wrapper = mount( - - ); - - expect(wrapper.find(MaterialArrayLayout).length).toBeTruthy(); - - expect(getChildLabel(wrapper, 0)).toBe('El Barto was here 2'); - expect(getChildLabel(wrapper, 1)).toBe('Yolo 2'); - }); - - it('should render description', () => { - const descriptionSchema = { - ...nestedSchema, - description: 'This is an array description', - }; - - wrapper = mount( - - ); - expect( - wrapper.text().includes('This is an array description') - ).toBeTruthy(); - expect( - wrapper.find('.MuiToolbar-root .MuiFormHelperText-root').exists() - ).toBeTruthy(); - }); - - it('should not render description container if there is none', () => { - const descriptionSchema = { - ...nestedSchema, - }; - // make sure there is no description - delete descriptionSchema.description; - - wrapper = mount( - - ); - expect( - wrapper.find('.MuiToolbar-root .MuiFormHelperText-root').exists() - ).toBeFalsy(); - }); - - it('should have a translation for no data', () => { - const translate = () => 'Translated'; - const core = initCore(schema, uischema, emptyData); - wrapper = mount( - - - - ); - const noDataLabel = wrapper.find('div>div>p').text(); - expect(noDataLabel.includes('Translated')).toBeTruthy(); - }); - - it('should have a tooltip for add button', () => { - wrapper = checkTooltip( - nestedSchema, - uischemaWithSortOption, - wrapper, - (wrapper) => wrapper.find(ArrayLayoutToolbar), - ArrayTranslationEnum.addTooltip, - { - id: 'tooltip-add', - }, - data - ); - }); - it('should have a translatable tooltip for add button', () => { - wrapper = checkTooltipTranslation( - nestedSchema, - uischemaWithSortOption, - wrapper, - (wrapper) => wrapper.find(ArrayLayoutToolbar), - { - id: 'tooltip-add', - }, - data - ); - }); - - it('should have a tooltip for delete button', () => { - wrapper = checkTooltip( - nestedSchema, - uischemaWithSortOption, - wrapper, - (wrapper) => wrapper.find('Memo(ExpandPanelRendererComponent)').at(0), - ArrayTranslationEnum.removeTooltip, - { - id: 'tooltip-remove', - }, - data - ); - }); - it('should have a translatable tooltip for delete button', () => { - wrapper = checkTooltipTranslation( - nestedSchema, - uischemaWithSortOption, - wrapper, - (wrapper) => wrapper.find('Memo(ExpandPanelRendererComponent)').at(0), - { - id: 'tooltip-remove', - }, - data - ); - }); - - it('should have a tooltip for up button', () => { - wrapper = checkTooltip( - nestedSchema, - uischemaWithSortOption, - wrapper, - (wrapper) => wrapper.find('Memo(ExpandPanelRendererComponent)').at(0), - ArrayTranslationEnum.up, - { - id: 'tooltip-up', - }, - data - ); - }); - it('should have a translatable tooltip for up button', () => { - wrapper = checkTooltipTranslation( - nestedSchema, - uischemaWithSortOption, - wrapper, - (wrapper) => wrapper.find('Memo(ExpandPanelRendererComponent)').at(0), - { - id: 'tooltip-up', - }, - data - ); - }); - - it('should have a tooltip for down button', () => { - wrapper = checkTooltip( - nestedSchema, - uischemaWithSortOption, - wrapper, - (wrapper) => wrapper.find('Memo(ExpandPanelRendererComponent)').at(0), - ArrayTranslationEnum.down, - { - id: 'tooltip-down', - }, - data - ); - }); - it('should have a translatable tooltip for down button', () => { - wrapper = checkTooltipTranslation( - nestedSchema, - uischemaWithSortOption, - wrapper, - (wrapper) => wrapper.find('Memo(ExpandPanelRendererComponent)').at(0), - { - id: 'tooltip-down', - }, - data - ); - }); - - it('should render first simple enum property as-is if no translator', () => { - const lightUiSchema = { ...uiSchemaWithEnumOrOneOfChildLabelProp }; - delete lightUiSchema.options.elementLabelProp; - - wrapper = arrayLayoutWrapper( - wrapper, - enumOrOneOfData, - enumSchema, - lightUiSchema, - undefined - ); - - expect(getChildLabel(wrapper, 0)).toBe('MSG_TYPE_1'); - }); - - it('should render first simple enum property as translated child label', () => { - const lightUiSchema = cloneDeep(uiSchemaWithEnumOrOneOfChildLabelProp); - delete lightUiSchema.options.elementLabelProp; - - wrapper = arrayLayoutWrapper( - wrapper, - enumOrOneOfData, - enumSchema, - lightUiSchema, - testTranslator - ); - - expect(getChildLabel(wrapper, 0)).toBe('translator.messageType.MSG_TYPE_1'); - }); - - it('should render configured enum child label property as-is if no translator', () => { - wrapper = arrayLayoutWrapper( - wrapper, - enumOrOneOfData, - enumSchema, - uiSchemaWithEnumOrOneOfChildLabelProp, - undefined - ); - - expect(getChildLabel(wrapper, 0)).toBe('MSG_TYPE_1'); - }); - - it('should render configured enum child label property as translated label', () => { - wrapper = arrayLayoutWrapper( - wrapper, - enumOrOneOfData, - enumSchema, - uiSchemaWithEnumOrOneOfChildLabelProp, - testTranslator - ); - - expect(getChildLabel(wrapper, 0)).toBe('translator.messageType.MSG_TYPE_1'); - }); - - it('should render first simple oneOf property as-is if no translator', () => { - const lightUiSchema = cloneDeep(uiSchemaWithEnumOrOneOfChildLabelProp); - delete lightUiSchema.options.elementLabelProp; - - wrapper = arrayLayoutWrapper( - wrapper, - enumOrOneOfData, - oneOfSchema, - lightUiSchema, - undefined - ); - - expect(getChildLabel(wrapper, 0)).toBe('MSG_TYPE_1'); - expect(getChildLabel(wrapper, 1)).toBe('Second message type'); - }); - - it('should render first simple oneOf property as translated child label', () => { - const lightUiSchema = cloneDeep(uiSchemaWithEnumOrOneOfChildLabelProp); - delete lightUiSchema.options.elementLabelProp; - - wrapper = arrayLayoutWrapper( - wrapper, - enumOrOneOfData, - oneOfSchema, - lightUiSchema, - testTranslator - ); - - expect(getChildLabel(wrapper, 0)).toBe('translator.messageType.MSG_TYPE_1'); - }); - - it('should render configured oneOf child label property as-is if no translator', () => { - wrapper = arrayLayoutWrapper( - wrapper, - enumOrOneOfData, - oneOfSchema, - uiSchemaWithEnumOrOneOfChildLabelProp, - undefined - ); - - expect(getChildLabel(wrapper, 0)).toBe('MSG_TYPE_1'); - expect(getChildLabel(wrapper, 1)).toBe('Second message type'); - }); - - it('should render configured oneOf child label property as translated label', () => { - wrapper = arrayLayoutWrapper( - wrapper, - enumOrOneOfData, - oneOfSchema, - uiSchemaWithEnumOrOneOfChildLabelProp, - testTranslator - ); - - expect(getChildLabel(wrapper, 0)).toBe('translator.messageType.MSG_TYPE_1'); - expect(getChildLabel(wrapper, 1)).toBe( - 'translator.messageType.Second message type' - ); - }); - - it('should render configured deep enum child label property as-is if no translator', () => { - wrapper = arrayLayoutWrapper( - wrapper, - deepEnumOrOneOfData, - deepEnumOrOneOfSchema, - deepUiSchemaWithEnumChildLabelProp, - undefined - ); - - expect(getChildLabel(wrapper, 0)).toBe('WRITER'); - expect(getChildLabel(wrapper, 1)).toBe('AUTHOR'); - }); - - it('should render configured deep enum child label property as translated label', () => { - wrapper = arrayLayoutWrapper( - wrapper, - deepEnumOrOneOfData, - deepEnumOrOneOfSchema, - deepUiSchemaWithEnumChildLabelProp, - testTranslator - ); - - expect(getChildLabel(wrapper, 0)).toBe( - 'translator.article.comments.author.type.WRITER' - ); - expect(getChildLabel(wrapper, 1)).toBe( - 'translator.article.comments.author.type.AUTHOR' - ); - }); - - it('should render configured deep oneOf child label property as-is if no translator', () => { - wrapper = arrayLayoutWrapper( - wrapper, - deepEnumOrOneOfData, - deepEnumOrOneOfSchema, - deepUiSchemaWithOneOfChildLabelProp, - undefined - ); - - expect(getChildLabel(wrapper, 0)).toBe('ROLE_1'); - expect(getChildLabel(wrapper, 1)).toBe('Second role'); - }); - - it('should render configured deep oneOf child label property as translated label', () => { - wrapper = arrayLayoutWrapper( - wrapper, - deepEnumOrOneOfData, - deepEnumOrOneOfSchema, - deepUiSchemaWithOneOfChildLabelProp, - testTranslator - ); - - expect(getChildLabel(wrapper, 0)).toBe( - 'translator.article.comments.author.role.ROLE_1' - ); - expect(getChildLabel(wrapper, 1)).toBe( - 'translator.article.comments.author.role.Second role' - ); - }); - - it('should render configured enum child label property with schema i18n as translated label', () => { - const i18nSchema = cloneDeep(enumSchema); - const properties = (i18nSchema.items as JsonSchema7).properties; - const childSchema = properties.messageType as i18nJsonSchema; - childSchema.i18n = 'myI18n'; - - wrapper = arrayLayoutWrapper( - wrapper, - enumOrOneOfData, - i18nSchema, - uiSchemaWithEnumOrOneOfChildLabelProp, - testTranslator - ); - - expect(getChildLabel(wrapper, 0)).toBe('translator.myI18n.MSG_TYPE_1'); - }); - - it('should render configured oneOf child label property with schema i18n as translated label', () => { - const i18nSchema = cloneDeep(oneOfSchema); - const properties = (i18nSchema.items as JsonSchema7).properties; - const oneOfArray = properties.messageType.oneOf; - for (const oneOfValue of oneOfArray) { - (oneOfValue as i18nJsonSchema).i18n = 'myI18n_' + oneOfValue.const; - } - - wrapper = arrayLayoutWrapper( - wrapper, - enumOrOneOfData, - i18nSchema, - uiSchemaWithEnumOrOneOfChildLabelProp, - testTranslator - ); - - expect(getChildLabel(wrapper, 0)).toBe('translator.myI18n_MSG_TYPE_1'); - expect(getChildLabel(wrapper, 1)).toBe('translator.myI18n_MSG_TYPE_2'); - }); - - it('should render configured enum child label property with UiSchema i18n as translated label', () => { - const i18nUiSchema = cloneDeep(uiSchemaWithEnumOrOneOfChildLabelProp); - const elements = i18nUiSchema.options.detail.elements as ControlElement[]; - const control = elements.find( - (e) => e.scope === '#/properties/messageType' - ); - control.i18n = 'myI18n'; - - wrapper = arrayLayoutWrapper( - wrapper, - enumOrOneOfData, - enumSchema, - i18nUiSchema, - testTranslator - ); - - expect(getChildLabel(wrapper, 0)).toBe('translator.myI18n.MSG_TYPE_1'); - }); - - it('should render configured deep enum child label property with UiSchema i18n as translated label', () => { - const i18nUiSchema = cloneDeep(deepUiSchemaWithEnumChildLabelProp); - const elements = i18nUiSchema.options.detail.elements as ControlElement[]; - const control = elements.find( - (e) => e.scope === '#/properties/author/properties/type' - ); - control.i18n = 'myI18n'; - - wrapper = arrayLayoutWrapper( - wrapper, - deepEnumOrOneOfData, - deepEnumOrOneOfSchema, - i18nUiSchema, - testTranslator - ); - - expect(getChildLabel(wrapper, 0)).toBe('translator.myI18n.WRITER'); - expect(getChildLabel(wrapper, 1)).toBe('translator.myI18n.AUTHOR'); - }); -}); - -function arrayLayoutWrapper( - wrapper: ReactWrapper, - data: any, - schema: JsonSchema7, - uiSchema: ControlElement, - translator: Translator -) { - const core = initCore(schema, uiSchema, data); - - wrapper = mount( - - - - ); - - expect(wrapper.find(MaterialArrayLayout).length).toBeTruthy(); - return wrapper; -} diff --git a/packages/material-renderers/test/renderers/MaterialBooleanCell.test.tsx b/packages/material-renderers/test/renderers/MaterialBooleanCell.test.tsx deleted file mode 100644 index 4da535359b..0000000000 --- a/packages/material-renderers/test/renderers/MaterialBooleanCell.test.tsx +++ /dev/null @@ -1,409 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import * as React from 'react'; -import { ControlElement, NOT_APPLICABLE } from '@jsonforms/core'; -import BooleanCell, { - materialBooleanCellTester, -} from '../../src/cells/MaterialBooleanCell'; -import * as ReactDOM from 'react-dom'; -import { materialRenderers } from '../../src'; - -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonFormsStateProvider } from '@jsonforms/react'; -import { initCore, TestEmitter } from './util'; - -Enzyme.configure({ adapter: new Adapter() }); - -const data = { foo: true }; -const schema = { - type: 'boolean', -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', -}; - -describe('Material boolean cell tester', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - }; - - it('should fail', () => { - expect(materialBooleanCellTester(undefined, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect(materialBooleanCellTester(null, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect( - materialBooleanCellTester({ type: 'Foo' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - expect( - materialBooleanCellTester({ type: 'Control' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - expect( - materialBooleanCellTester( - control, - { - type: 'object', - properties: { foo: { type: 'string' } }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - expect( - materialBooleanCellTester( - control, - { - type: 'object', - properties: { - foo: { - type: 'string', - }, - bar: { - type: 'boolean', - }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should succeed', () => { - expect( - materialBooleanCellTester( - control, - { - type: 'object', - properties: { - foo: { - type: 'boolean', - }, - }, - }, - undefined - ) - ).toBe(2); - }); -}); - -describe('Material boolean cell', () => { - let wrapper: ReactWrapper; - - afterEach(() => wrapper.unmount()); - - /** Use this container to render components */ - const container = document.createElement('div'); - - afterEach(() => { - ReactDOM.unmountComponentAtNode(container); - }); - - // seems to be broken in material-ui - it('should autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - focus: true, - }, - }; - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeTruthy(); - }); - - it('should not autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - focus: false, - }, - }; - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBe(false); - }); - - it('should not autofocus by default', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - }; - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeFalsy(); - }); - - it('should render', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const input = wrapper.find('input').first(); - expect(input.props().type).toBe('checkbox'); - expect(input.props().checked).toBeTruthy(); - }); - - it('should update via input event', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - - const input = wrapper.find('input'); - input.simulate('change', { target: { value: false } }); - expect(onChangeData.data.foo).toBeFalsy(); - }); - - it('should update via action', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - core.data = { ...core.data, foo: false }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().checked).toBeFalsy(); - expect(onChangeData.data.foo).toBeFalsy(); - }); - - it('should update with undefined value', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - core.data = { ...core.data, foo: undefined }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().checked).toBeFalsy(); - }); - - it('should update with null value', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - core.data = { ...core.data, foo: null }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().checked).toBeFalsy(); - }); - - it('should not update with wrong ref', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - core.data = { ...core.data, bar: 11 }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - const input = wrapper.find('input').first(); - expect(input.props().checked).toBeTruthy(); - }); - - it('should not update with null ref', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - core.data = { ...core.data, null: false }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - const input = wrapper.find('input').first(); - expect(input.props().checked).toBeTruthy(); - }); - - it('should not update with an undefined ref', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - core.data = { ...core.data, undefined: false }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().checked).toBeTruthy(); - }); - - it('can be disabled', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeTruthy(); - }); - - it('should be enabled by default', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeFalsy(); - }); - - it('id should be present in output', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input'); - expect(input.props().id).toBe('myid'); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialBooleanToggleCell.test.tsx b/packages/material-renderers/test/renderers/MaterialBooleanToggleCell.test.tsx deleted file mode 100644 index 6090b0a958..0000000000 --- a/packages/material-renderers/test/renderers/MaterialBooleanToggleCell.test.tsx +++ /dev/null @@ -1,474 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2021 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import * as React from 'react'; -import { - ControlElement, - NOT_APPLICABLE, - UISchemaElement, -} from '@jsonforms/core'; -import BooleanToggleCell, { - materialBooleanToggleCellTester, -} from '../../src/cells/MaterialBooleanToggleCell'; -import * as ReactDOM from 'react-dom'; -import { materialRenderers } from '../../src'; - -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonFormsStateProvider } from '@jsonforms/react'; -import { initCore, TestEmitter } from './util'; -import { Switch } from '@mui/material'; - -Enzyme.configure({ adapter: new Adapter() }); - -const data = { foo: true }; -const schema = { - type: 'boolean', -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - toggle: true, - }, -}; - -describe('Material boolean toggle cell tester', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - toggle: true, - }, - }; - - it('should fail', () => { - expect( - materialBooleanToggleCellTester(undefined, undefined, undefined) - ).toBe(NOT_APPLICABLE); - expect(materialBooleanToggleCellTester(null, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect( - materialBooleanToggleCellTester({ type: 'Foo' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - expect( - materialBooleanToggleCellTester({ type: 'Control' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - expect( - materialBooleanToggleCellTester( - control, - { - type: 'object', - properties: { foo: { type: 'string' } }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - expect( - materialBooleanToggleCellTester( - control, - { - type: 'object', - properties: { - foo: { - type: 'string', - }, - bar: { - type: 'boolean', - }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - - // Not applicable for boolean cell if toggle option is false - expect( - materialBooleanToggleCellTester( - { - type: 'Control', - scope: '#/properties/foo', - options: { - toggle: false, - }, - } as UISchemaElement, - { - type: 'object', - properties: { - foo: { - type: 'boolean', - }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - - // Not applicable for boolean cell if toggle option is not given - expect( - materialBooleanToggleCellTester( - { - type: 'Control', - scope: '#/properties/foo', - } as UISchemaElement, - { - type: 'object', - properties: { - foo: { - type: 'boolean', - }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should succeed', () => { - expect( - materialBooleanToggleCellTester( - control, - { - type: 'object', - properties: { - foo: { - type: 'boolean', - }, - }, - }, - undefined - ) - ).toBe(3); - }); -}); - -describe('Material boolean toggle cell', () => { - let wrapper: ReactWrapper; - - afterEach(() => wrapper.unmount()); - - /** Use this container to render components */ - const container = document.createElement('div'); - - afterEach(() => { - ReactDOM.unmountComponentAtNode(container); - }); - - // seems to be broken in material-ui - it('should autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - focus: true, - toggle: true, - }, - }; - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeTruthy(); - }); - - it('should not autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - focus: false, - toggle: true, - }, - }; - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBe(false); - }); - - it('should not autofocus by default', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - toggle: true, - }, - }; - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeFalsy(); - }); - - it('should render', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - // Make sure a toggle is rendered by checking for the thumb element - expect(wrapper.find(Switch)).toHaveLength(1); - - const input = wrapper.find('input').first(); - expect(input.props().type).toBe('checkbox'); - expect(input.props().checked).toBeTruthy(); - }); - - it('should update via input event', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - - const input = wrapper.find('input'); - input.simulate('change', { target: { value: false } }); - expect(onChangeData.data.foo).toBeFalsy(); - }); - - it('should update via action', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - core.data = { ...core.data, foo: false }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().checked).toBeFalsy(); - expect(onChangeData.data.foo).toBeFalsy(); - }); - - it('should update with undefined value', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - core.data = { ...core.data, foo: undefined }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().checked).toBeFalsy(); - }); - - it('should update with null value', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - core.data = { ...core.data, foo: null }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().checked).toBeFalsy(); - }); - - it('should not update with wrong ref', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - core.data = { ...core.data, bar: 11 }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - const input = wrapper.find('input').first(); - expect(input.props().checked).toBeTruthy(); - }); - - it('should not update with null ref', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - core.data = { ...core.data, null: false }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - const input = wrapper.find('input').first(); - expect(input.props().checked).toBeTruthy(); - }); - - it('should not update with an undefined ref', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - core.data = { ...core.data, undefined: false }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().checked).toBeTruthy(); - }); - - it('can be disabled', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeTruthy(); - }); - - it('should be enabled by default', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeFalsy(); - }); - - it('id should be present in output', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input'); - expect(input.props().id).toBe('myid'); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialBooleanToggleControl.test.tsx b/packages/material-renderers/test/renderers/MaterialBooleanToggleControl.test.tsx deleted file mode 100644 index 5606441504..0000000000 --- a/packages/material-renderers/test/renderers/MaterialBooleanToggleControl.test.tsx +++ /dev/null @@ -1,511 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2021 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import * as React from 'react'; -import { - ControlElement, - NOT_APPLICABLE, - UISchemaElement, -} from '@jsonforms/core'; -import BooleanToggleControl, { - materialBooleanToggleControlTester, -} from '../../src/controls/MaterialBooleanToggleControl'; -import * as ReactDOM from 'react-dom'; -import { materialRenderers } from '../../src'; - -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonFormsStateProvider } from '@jsonforms/react'; -import { initCore, TestEmitter } from './util'; -import { Switch } from '@mui/material'; - -Enzyme.configure({ adapter: new Adapter() }); - -const data = { foo: true }; -const schema = { - type: 'object', - properties: { - foo: { - type: 'boolean', - description: 'My description', - }, - }, -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - toggle: true, - }, -}; - -describe('Material boolean toggle control tester', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - toggle: true, - }, - }; - - it('should fail', () => { - expect( - materialBooleanToggleControlTester(undefined, undefined, undefined) - ).toBe(NOT_APPLICABLE); - expect(materialBooleanToggleControlTester(null, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect( - materialBooleanToggleControlTester({ type: 'Foo' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - expect( - materialBooleanToggleControlTester( - { type: 'Control' }, - undefined, - undefined - ) - ).toBe(NOT_APPLICABLE); - expect( - materialBooleanToggleControlTester( - control, - { - type: 'object', - properties: { foo: { type: 'string' } }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - expect( - materialBooleanToggleControlTester( - control, - { - type: 'object', - properties: { - foo: { - type: 'string', - }, - bar: { - type: 'boolean', - }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - - // Not applicable for boolean control if toggle option is false - expect( - materialBooleanToggleControlTester( - { - type: 'Control', - scope: '#/properties/foo', - options: { - toggle: false, - }, - } as UISchemaElement, - { - type: 'object', - properties: { - foo: { - type: 'boolean', - }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - - // Not applicable for boolean control if toggle option is not given - expect( - materialBooleanToggleControlTester( - { - type: 'Control', - scope: '#/properties/foo', - } as UISchemaElement, - { - type: 'object', - properties: { - foo: { - type: 'boolean', - }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should succeed', () => { - expect( - materialBooleanToggleControlTester( - control, - { - type: 'object', - properties: { - foo: { - type: 'boolean', - }, - }, - }, - undefined - ) - ).toBe(3); - }); -}); - -describe('Material boolean toggle control', () => { - let wrapper: ReactWrapper; - - afterEach(() => wrapper.unmount()); - - /** Use this container to render components */ - const container = document.createElement('div'); - - afterEach(() => { - ReactDOM.unmountComponentAtNode(container); - }); - - // seems to be broken in material-ui - it('should autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - focus: true, - toggle: true, - }, - }; - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeTruthy(); - }); - - it('should not autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - focus: false, - toggle: true, - }, - }; - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBe(false); - }); - - it('should not autofocus by default', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - toggle: true, - }, - }; - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeFalsy(); - }); - - it('should render', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - // Make sure a toggle is rendered by checking for the thumb element - expect(wrapper.find(Switch)).toHaveLength(1); - - const input = wrapper.find('input').first(); - expect(input.props().type).toBe('checkbox'); - expect(input.props().checked).toBeTruthy(); - }); - - it('should update via input event', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - - const input = wrapper.find('input'); - input.simulate('change', { target: { value: false } }); - expect(onChangeData.data.foo).toBeFalsy(); - }); - - it('should update via action', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - core.data = { ...core.data, foo: false }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().checked).toBeFalsy(); - expect(onChangeData.data.foo).toBeFalsy(); - }); - - it('should update with undefined value', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - core.data = { ...core.data, foo: undefined }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().checked).toBeFalsy(); - }); - - it('should update with null value', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - core.data = { ...core.data, foo: null }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().checked).toBeFalsy(); - }); - - it('should not update with wrong ref', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - core.data = { ...core.data, bar: 11 }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - const input = wrapper.find('input').first(); - expect(input.props().checked).toBeTruthy(); - }); - - it('should not update with null ref', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - core.data = { ...core.data, null: false }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - const input = wrapper.find('input').first(); - expect(input.props().checked).toBeTruthy(); - }); - - it('should not update with an undefined ref', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - core.data = { ...core.data, undefined: false }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().checked).toBeTruthy(); - }); - - it('can be disabled', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeTruthy(); - }); - - it('should be enabled by default', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeFalsy(); - }); - - it('id should be present in output', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input'); - expect(input.props().id).toBe('myid-input'); - }); - - it('unfocused description displays and is referenced by aria-describedby', () => { - const core = initCore(schema, uischema, data); - const config = { showUnfocusedDescription: true }; - wrapper = mount( - - - - ); - const input = wrapper.find('input'); - expect(input.props()['aria-describedby']).toBe('myid-help1'); - const description = wrapper.find('#myid-help1').first(); - expect(description.text()).toBe('My description'); - }); - - it('tooltip description is referenced by aria-describedby', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input'); - expect(input.props()['aria-describedby']).toBe('myid-tip'); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialCategorizationLayout.test.tsx b/packages/material-renderers/test/renderers/MaterialCategorizationLayout.test.tsx deleted file mode 100644 index 08b15a84aa..0000000000 --- a/packages/material-renderers/test/renderers/MaterialCategorizationLayout.test.tsx +++ /dev/null @@ -1,489 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - Categorization, - ControlElement, - createAjv, - defaultJsonFormsI18nState, - Layout, - layoutDefaultProps, - RuleEffect, - SchemaBasedCondition, -} from '@jsonforms/core'; -import { JsonFormsStateProvider } from '@jsonforms/react'; -import Enzyme, { mount } from 'enzyme'; - -import MaterialCategorizationLayoutRenderer, { - materialCategorizationTester, -} from '../../src/layouts/MaterialCategorizationLayout'; -import { MaterialLayoutRenderer, materialRenderers } from '../../src'; -import { Tab, Tabs } from '@mui/material'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { initCore } from './util'; - -Enzyme.configure({ adapter: new Adapter() }); - -const fixture = { - data: {}, - schema: { - type: 'object', - properties: { - name: { - type: 'string', - }, - }, - }, - uischema: { - type: 'Categorization', - elements: [ - { - type: 'Category', - label: 'B', - }, - ], - }, -}; - -const testDefaultProps = { - ...layoutDefaultProps, - data: fixture.data, - ajv: createAjv(), - t: defaultJsonFormsI18nState.translate, - locale: defaultJsonFormsI18nState.locale, -}; - -describe('Material categorization layout tester', () => { - it('should not fail when given undefined data', () => { - expect(materialCategorizationTester(undefined, undefined, undefined)).toBe( - -1 - ); - expect(materialCategorizationTester(null, undefined, undefined)).toBe(-1); - expect( - materialCategorizationTester({ type: 'Foo' }, undefined, undefined) - ).toBe(-1); - expect( - materialCategorizationTester( - { type: 'Categorization' }, - undefined, - undefined - ) - ).toBe(-1); - }); - - it('should not fail with null elements and no schema', () => { - const uischema: Layout = { - type: 'Categorization', - elements: null, - }; - expect(materialCategorizationTester(uischema, undefined, undefined)).toBe( - -1 - ); - }); - - it('should succeed with empty elements and no schema', () => { - const uischema: Layout = { - type: 'Categorization', - elements: [], - }; - expect(materialCategorizationTester(uischema, undefined, undefined)).toBe( - 1 - ); - }); - - it('should not fail tester with single unknown element and no schema', () => { - const uischema: Layout = { - type: 'Categorization', - elements: [ - { - type: 'Foo', - }, - ], - }; - expect(materialCategorizationTester(uischema, undefined, undefined)).toBe( - -1 - ); - }); - - it('should succeed with a single category and no schema', () => { - const categorization = { - type: 'Categorization', - elements: [ - { - type: 'Category', - }, - ], - }; - expect( - materialCategorizationTester(categorization, undefined, undefined) - ).toBe(1); - }); - - it('should not apply to a nested categorization with single category and no schema', () => { - const nestedCategorization: Layout = { - type: 'Categorization', - elements: [ - { - type: 'Category', - }, - ], - }; - const categorization: Layout = { - type: 'Categorization', - elements: [nestedCategorization], - }; - expect( - materialCategorizationTester(categorization, undefined, undefined) - ).toBe(-1); - }); - - it('should not apply to nested categorizations without categories and no schema', () => { - const categorization: any = { - type: 'Categorization', - elements: [ - { - type: 'Categorization', - }, - ], - }; - expect( - materialCategorizationTester(categorization, undefined, undefined) - ).toBe(-1); - }); - - it('should not apply to a nested categorization with null elements and no schema', () => { - const categorization: any = { - type: 'Categorization', - elements: [ - { - type: 'Categorization', - label: 'Test', - elements: null, - }, - ], - }; - - expect( - materialCategorizationTester(categorization, undefined, undefined) - ).toBe(-1); - }); - - it('should not apply to a nested categorizations with empty elements and no schema', () => { - const categorization: any = { - type: 'Categorization', - elements: [ - { - type: 'Categorization', - elements: [], - }, - ], - }; - expect( - materialCategorizationTester(categorization, undefined, undefined) - ).toBe(-1); - }); -}); - -describe('Material categorization layout', () => { - it('should render', () => { - const nameControl = { - type: 'Control', - scope: '#/properties/name', - }; - const uischema: Categorization = { - type: 'Categorization', - label: 'Root', - elements: [ - { - type: 'Categorization', - label: 'Bar', - elements: [ - { - type: 'Category', - label: 'A', - elements: [nameControl], - }, - ], - }, - { - type: 'Category', - label: 'B', - elements: [nameControl], - }, - ], - }; - - const core = initCore(fixture.schema, fixture.uischema, fixture.data); - const wrapper = mount( - - - - ); - const steps = wrapper.find(Tab); - expect(steps.length).toBe(2); - wrapper.unmount(); - }); - - it('should render on click', () => { - const data = { name: 'Foo' }; - const nameControl: ControlElement = { - type: 'Control', - scope: '#/properties/name', - }; - const innerCategorization: Categorization = { - type: 'Categorization', - label: 'Bar', - elements: [ - { - type: 'Category', - label: 'A', - elements: [nameControl], - }, - ], - }; - const uischema: Categorization = { - type: 'Categorization', - label: 'Root', - elements: [ - innerCategorization, - { - type: 'Category', - label: 'B', - elements: [nameControl, nameControl], - }, - { - type: 'Category', - label: 'C', - elements: undefined, - }, - { - type: 'Category', - label: 'D', - elements: null, - }, - ], - }; - const core = initCore(fixture.schema, fixture.uischema, data); - - const wrapper = mount( - - - - ); - - const beforeClick = wrapper.find(Tabs).props().value; - wrapper.find('button[role="tab"]').at(1).simulate('click'); - const afterClick = wrapper.find(Tabs).props().value; - - expect(beforeClick).toBe(0); - expect(afterClick).toBe(1); - wrapper.unmount(); - }); - - it('can be hidden via ownProp', () => { - const core = initCore(fixture.schema, fixture.uischema, fixture.data); - - const wrapper = mount( - - - - ); - - expect(wrapper.find(Tab).exists()).toBeFalsy(); - wrapper.unmount(); - }); - - it('is shown by default', () => { - const core = initCore(fixture.schema, fixture.uischema, fixture.data); - const wrapper = mount( - - - - ); - - expect(wrapper.find(Tab).exists()).toBeTruthy(); - wrapper.unmount(); - }); - - it('allows categories to be hidden', () => { - const condition: SchemaBasedCondition = { - scope: '#/properties/name', - schema: { minLength: 3 }, - }; - - const uischema: Categorization = { - type: 'Categorization', - label: '', - elements: [ - { - type: 'Category', - label: 'A', - elements: [], - }, - { - type: 'Category', - label: 'B', - elements: [], - rule: { - effect: RuleEffect.HIDE, - condition, - }, - }, - ], - }; - const core = initCore(fixture.schema, fixture.uischema, fixture.data); - const wrapper = mount( - - - - ); - - expect(wrapper.find(Tab).length).toBe(1); - wrapper.unmount(); - }); - - it('should have renderers prop via ownProps', () => { - const core = initCore(fixture.schema, fixture.uischema, fixture.data); - const renderers: any[] = []; - const wrapper = mount( - - - - ); - - const materialArrayLayout = wrapper.find(MaterialLayoutRenderer); - expect(materialArrayLayout.props().renderers).toHaveLength(0); - }); - - it('display correct content when hiding a tab', () => { - const data = { name: 'fo' }; - const condition: SchemaBasedCondition = { - scope: '#/properties/name', - schema: { maxLength: 3 }, - }; - const nameControl: ControlElement = { - type: 'Control', - scope: '#/properties/name', - }; - const uischema: Categorization = { - type: 'Categorization', - label: '', - options: { - showNavButtons: true, - }, - elements: [ - { - type: 'Category', - label: 'A', - elements: undefined, - }, - { - type: 'Category', - label: 'B', - elements: undefined, - rule: { - effect: RuleEffect.SHOW, - condition: condition, - }, - }, - { - type: 'Category', - label: 'C', - elements: [nameControl], - rule: { - effect: RuleEffect.HIDE, - condition: condition, - }, - }, - ], - }; - - const core = initCore(fixture.schema, uischema, data); - - const wrapper = mount( - - - - ); - - wrapper.find('button[role="tab"]').at(1).simulate('click'); - - let isCategoryCshown = wrapper.find('input[type="text"]').length > 0; - expect(isCategoryCshown).toBe(false); - - core.data = { ...core.data, name: 'Barr' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - - isCategoryCshown = wrapper.find('input[type="text"]').length > 0; - expect(isCategoryCshown).toBe(true); - - wrapper.unmount(); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialCategorizationStepperLayout.test.tsx b/packages/material-renderers/test/renderers/MaterialCategorizationStepperLayout.test.tsx deleted file mode 100644 index 682834e49c..0000000000 --- a/packages/material-renderers/test/renderers/MaterialCategorizationStepperLayout.test.tsx +++ /dev/null @@ -1,678 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - Categorization, - ControlElement, - createAjv, - defaultJsonFormsI18nState, - Layout, - layoutDefaultProps, - RuleEffect, - SchemaBasedCondition, -} from '@jsonforms/core'; -import { JsonFormsStateProvider } from '@jsonforms/react'; -import Enzyme, { mount } from 'enzyme'; - -import MaterialCategorizationStepperLayoutRenderer, { - materialCategorizationStepperTester, -} from '../../src/layouts/MaterialCategorizationStepperLayout'; -import { MaterialLayoutRenderer, materialRenderers } from '../../src'; -import { Button, Step, Stepper } from '@mui/material'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { initCore } from './util'; - -Enzyme.configure({ adapter: new Adapter() }); - -const fixture = { - data: {}, - schema: { - type: 'object', - properties: { - name: { - type: 'string', - }, - }, - }, - uischema: { - type: 'Categorization', - elements: [ - { - type: 'Category', - label: 'B', - }, - ], - }, -}; - -const testDefaultProps = { - ...layoutDefaultProps, - data: fixture.data, - ajv: createAjv(), - t: defaultJsonFormsI18nState.translate, - locale: defaultJsonFormsI18nState.locale, -}; - -describe('Material categorization stepper layout tester', () => { - it('should not fail when given undefined data', () => { - expect( - materialCategorizationStepperTester(undefined, undefined, undefined) - ).toBe(-1); - expect( - materialCategorizationStepperTester(null, undefined, undefined) - ).toBe(-1); - expect( - materialCategorizationStepperTester({ type: 'Foo' }, undefined, undefined) - ).toBe(-1); - expect( - materialCategorizationStepperTester( - { type: 'Categorization' }, - undefined, - undefined - ) - ).toBe(-1); - }); - - it('should not fail with null elements and no schema', () => { - const uischema: Layout = { - type: 'Categorization', - elements: null, - }; - expect( - materialCategorizationStepperTester(uischema, undefined, undefined) - ).toBe(-1); - }); - - it('should not fail with empty elements and no schema', () => { - const uischema: Layout = { - type: 'Categorization', - elements: [], - }; - expect( - materialCategorizationStepperTester(uischema, undefined, undefined) - ).toBe(-1); - }); - - it('should not fail tester with single unknown element and no schema', () => { - const uischema: Layout = { - type: 'Categorization', - elements: [ - { - type: 'Foo', - }, - ], - }; - expect( - materialCategorizationStepperTester(uischema, undefined, undefined) - ).toBe(-1); - }); - - it('should not apply to a single category and no schema', () => { - const categorization = { - type: 'Categorization', - elements: [ - { - type: 'Category', - }, - ], - }; - expect( - materialCategorizationStepperTester(categorization, undefined, undefined) - ).toBe(-1); - }); - - it('should not apply to a nested categorization with single category and no schema', () => { - const nestedCategorization: Layout = { - type: 'Categorization', - elements: [ - { - type: 'Category', - }, - ], - }; - const categorization: Layout = { - type: 'Categorization', - elements: [nestedCategorization], - }; - expect( - materialCategorizationStepperTester(categorization, undefined, undefined) - ).toBe(-1); - }); - - it('should not apply to nested categorizations without categories and no schema', () => { - const categorization: any = { - type: 'Categorization', - elements: [ - { - type: 'Categorization', - }, - ], - }; - expect( - materialCategorizationStepperTester(categorization, undefined, undefined) - ).toBe(-1); - }); - - it('should not apply to a nested categorization with null elements and no schema', () => { - const categorization: any = { - type: 'Categorization', - elements: [ - { - type: 'Categorization', - label: 'Test', - elements: null, - }, - ], - }; - - expect( - materialCategorizationStepperTester(categorization, undefined, undefined) - ).toBe(-1); - }); - - it('should not apply to a nested categorizations with empty elements and no schema', () => { - const categorization: any = { - type: 'Categorization', - elements: [ - { - type: 'Categorization', - elements: [], - }, - ], - }; - expect( - materialCategorizationStepperTester(categorization, undefined, undefined) - ).toBe(-1); - }); -}); - -describe('Material categorization stepper layout', () => { - it('should render', () => { - const nameControl = { - type: 'Control', - scope: '#/properties/name', - }; - const uischema: Categorization = { - type: 'Categorization', - label: 'Root', - elements: [ - { - type: 'Categorization', - label: 'Bar', - elements: [ - { - type: 'Category', - label: 'A', - elements: [nameControl], - }, - ], - }, - { - type: 'Category', - label: 'B', - elements: [nameControl], - }, - ], - }; - - const core = initCore(fixture.schema, fixture.uischema, fixture.data); - const wrapper = mount( - - - - ); - const steps = wrapper.find(Step); - expect(steps.length).toBe(2); - wrapper.unmount(); - }); - - it('should render on click', () => { - const data = { name: 'Foo' }; - const nameControl: ControlElement = { - type: 'Control', - scope: '#/properties/name', - }; - const innerCategorization: Categorization = { - type: 'Categorization', - label: 'Bar', - elements: [ - { - type: 'Category', - label: 'A', - elements: [nameControl], - }, - ], - }; - const uischema: Categorization = { - type: 'Categorization', - label: 'Root', - elements: [ - innerCategorization, - { - type: 'Category', - label: 'B', - elements: [nameControl, nameControl], - }, - { - type: 'Category', - label: 'C', - elements: undefined, - }, - { - type: 'Category', - label: 'D', - elements: null, - }, - ], - }; - const core = initCore(fixture.schema, fixture.uischema, data); - - const wrapper = mount( - - - - ); - const beforeClick = wrapper.find(Stepper).props().activeStep; - wrapper.find('button').at(1).simulate('click'); - const afterClick = wrapper.find(Stepper).props().activeStep; - - expect(beforeClick).toBe(0); - expect(afterClick).toBe(1); - wrapper.unmount(); - }); - - it('can be hidden via ownProp', () => { - const core = initCore(fixture.schema, fixture.uischema, fixture.data); - - const wrapper = mount( - - - - ); - - expect(wrapper.find(Stepper).exists()).toBeFalsy(); - wrapper.unmount(); - }); - - it('is shown by default', () => { - const core = initCore(fixture.schema, fixture.uischema, fixture.data); - const wrapper = mount( - - - - ); - - expect(wrapper.find(Stepper).exists()).toBeTruthy(); - wrapper.unmount(); - }); - - it('allows categories to be hidden', () => { - const condition: SchemaBasedCondition = { - scope: '#/properties/name', - schema: { minLength: 3 }, - }; - - const uischema: Categorization = { - type: 'Categorization', - label: '', - elements: [ - { - type: 'Category', - label: 'A', - elements: [], - }, - { - type: 'Category', - label: 'B', - elements: [], - rule: { - effect: RuleEffect.HIDE, - condition, - }, - }, - ], - }; - const core = initCore(fixture.schema, fixture.uischema, fixture.data); - const wrapper = mount( - - - - ); - - expect(wrapper.find(Step).length).toBe(1); - wrapper.unmount(); - }); - - it('should have renderers prop via ownProps', () => { - const core = initCore(fixture.schema, fixture.uischema, fixture.data); - const renderers: any[] = []; - const wrapper = mount( - - - - ); - - const materialArrayLayout = wrapper.find(MaterialLayoutRenderer); - expect(materialArrayLayout.props().renderers).toHaveLength(0); - }); - - it('should render nav buttons if showNavButtons is set', () => { - const nameControl: ControlElement = { - type: 'Control', - scope: '#/properties/name', - }; - const uischema: Categorization = { - type: 'Categorization', - label: 'Root', - options: { - showNavButtons: true, - }, - elements: [ - { - type: 'Category', - label: 'B', - elements: [nameControl, nameControl], - }, - { - type: 'Category', - label: 'C', - elements: undefined, - }, - ], - }; - const core = initCore(fixture.schema, uischema, fixture.data); - - const wrapper = mount( - - - - ); - const isPrevButtonEnabledBeforeClick = !wrapper.find(Button).at(1).props() - .disabled; - const isNextButtonEnabledBeforeClick = !wrapper.find(Button).at(0).props() - .disabled; - wrapper.find('button').at(1).simulate('click'); - const isPrevButtonEnabledAfterClick = !wrapper.find(Button).at(1).props() - .disabled; - const isNextButtonEnabledAfterClick = !wrapper.find(Button).at(0).props() - .disabled; - - expect(isPrevButtonEnabledBeforeClick).toBeFalsy(); - expect(isNextButtonEnabledBeforeClick).toBeTruthy(); - expect(isPrevButtonEnabledAfterClick).toBeTruthy(); - expect(isNextButtonEnabledAfterClick).toBeFalsy(); - wrapper.unmount(); - }); - - it('should render new category on button click', () => { - const nameControl: ControlElement = { - type: 'Control', - scope: '#/properties/name', - }; - const innerCategorization: Categorization = { - type: 'Categorization', - label: 'Bar', - elements: [ - { - type: 'Category', - label: 'A', - elements: [nameControl], - }, - ], - }; - const uischema: Categorization = { - type: 'Categorization', - label: 'Root', - options: { - showNavButtons: true, - }, - elements: [ - innerCategorization, - { - type: 'Category', - label: 'B', - elements: [nameControl, nameControl], - }, - { - type: 'Category', - label: 'C', - elements: undefined, - }, - { - type: 'Category', - label: 'D', - elements: null, - }, - ], - }; - const core = initCore(fixture.schema, uischema, fixture.data); - - const wrapper = mount( - - - - ); - const activeStepBeforeClick = wrapper.find(Stepper).props().activeStep; - wrapper.find('button').at(4).simulate('click'); - const activeStepAfterClick = wrapper.find(Stepper).props().activeStep; - - expect(activeStepBeforeClick).toBe(0); - expect(activeStepAfterClick).toBe(1); - wrapper.unmount(); - }); - - it('nav button behavior after hiding a step', () => { - const data = { name: 'fo' }; - const condition: SchemaBasedCondition = { - scope: '#/properties/name', - schema: { maxLength: 3 }, - }; - - const nameControl: ControlElement = { - type: 'Control', - scope: '#/properties/name', - }; - - const uischema: Categorization = { - type: 'Categorization', - label: 'Root', - options: { - showNavButtons: true, - }, - elements: [ - { - type: 'Category', - label: 'B', - elements: [nameControl], - }, - { - type: 'Category', - label: 'C', - elements: undefined, - rule: { - effect: RuleEffect.SHOW, - condition, - }, - }, - ], - }; - - const core = initCore(fixture.schema, uischema, data); - - const wrapper = mount( - - - - ); - - const isNextButtonDisabledBeforeTextInput = wrapper - .find(Button) - .at(0) - .props().disabled; - - expect(isNextButtonDisabledBeforeTextInput).toBe(false); - - core.data = { ...core.data, name: 'Barr' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - - const isNextButtonDisabledAfterTextInput = wrapper - .find(Button) - .at(0) - .props().disabled; - - expect(isNextButtonDisabledAfterTextInput).toBe(true); - - wrapper.unmount(); - }); - - it('display correct content when hiding a step', () => { - const data = { name: 'fo' }; - const condition: SchemaBasedCondition = { - scope: '#/properties/name', - schema: { maxLength: 3 }, - }; - const nameControl: ControlElement = { - type: 'Control', - scope: '#/properties/name', - }; - const uischema: Categorization = { - type: 'Categorization', - label: '', - options: { - showNavButtons: true, - }, - elements: [ - { - type: 'Category', - label: 'A', - elements: undefined, - }, - { - type: 'Category', - label: 'B', - elements: undefined, - rule: { - effect: RuleEffect.SHOW, - condition: condition, - }, - }, - { - type: 'Category', - label: 'C', - elements: [nameControl], - rule: { - effect: RuleEffect.HIDE, - condition: condition, - }, - }, - ], - }; - - const core = initCore(fixture.schema, uischema, data); - - const wrapper = mount( - - - - ); - - wrapper.find('button').at(1).simulate('click'); - - let isCategoryCshown = wrapper.find('input[type="text"]').length > 0; - expect(isCategoryCshown).toBe(false); - - core.data = { ...core.data, name: 'Barr' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - - isCategoryCshown = wrapper.find('input[type="text"]').length > 0; - expect(isCategoryCshown).toBe(true); - - wrapper.unmount(); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialDateCell.test.tsx b/packages/material-renderers/test/renderers/MaterialDateCell.test.tsx deleted file mode 100644 index ed9ec7bf44..0000000000 --- a/packages/material-renderers/test/renderers/MaterialDateCell.test.tsx +++ /dev/null @@ -1,338 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import * as React from 'react'; -import { ControlElement, NOT_APPLICABLE } from '@jsonforms/core'; -import { JsonFormsStateProvider } from '@jsonforms/react'; -import MaterialDateCell, { - materialDateCellTester, -} from '../../src/cells/MaterialDateCell'; -import { materialRenderers } from '../../src'; - -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { initCore, TestEmitter } from './util'; - -Enzyme.configure({ adapter: new Adapter() }); - -const data = { foo: '1980-06-04' }; -const schema = { - type: 'string', - format: 'date', -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', -}; - -describe('Material date cell', () => { - it('should fail', () => { - expect(materialDateCellTester(undefined, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect(materialDateCellTester(null, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect(materialDateCellTester({ type: 'Foo' }, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect( - materialDateCellTester({ type: 'Control' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - - expect( - materialDateCellTester( - uischema, - { - type: 'object', - properties: { - foo: { type: 'string' }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - expect( - materialDateCellTester( - uischema, - { - type: 'object', - properties: { - foo: { type: 'string' }, - bar: { - type: 'string', - format: 'date', - }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should succeed', () => { - expect( - materialDateCellTester( - uischema, - { - type: 'object', - properties: { - foo: { - type: 'string', - format: 'date', - }, - }, - }, - undefined - ) - ).toBe(2); - }); -}); - -describe('Material date cell', () => { - let wrapper: ReactWrapper; - - afterEach(() => wrapper.unmount()); - - it('should autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - focus: true, - }, - }; - const core = initCore(schema, control, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeTruthy(); - }); - - it('should not autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - focus: false, - }, - }; - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeFalsy(); - }); - - it('should not autofocus by default', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - }; - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeFalsy(); - }); - - it('should render', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const input = wrapper.find('input').first(); - expect(input.props().type).toBe('date'); - expect(input.props().value).toBe('1980-06-04'); - }); - - it('should update via event', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - const input = wrapper.find('input').first(); - input.simulate('change', { target: { value: '1961-04-12' } }); - expect(onChangeData.data.foo).toBe('1961-04-12'); - }); - - it('should update via action', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, foo: '1961-04-12' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('1961-04-12'); - }); - - it('should update with null value', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, foo: null }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input'); - expect(input.props().value).toBe(''); - }); - - it('should update with undefined value', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, foo: undefined }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(''); - }); - - it('should not update with wrong ref', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, bar: 'Bar' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('1980-06-04'); - }); - - it('should not update with null ref', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, null: '1961-04-12' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('1980-06-04'); - }); - - it('should update with undefined ref', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, undefined: '1961-04-12' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('1980-06-04'); - }); - - it('can be disabled', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeTruthy(); - }); - - it('should be enabled by default', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeFalsy(); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialDateControl.test.tsx b/packages/material-renderers/test/renderers/MaterialDateControl.test.tsx deleted file mode 100644 index a7fd65984c..0000000000 --- a/packages/material-renderers/test/renderers/MaterialDateControl.test.tsx +++ /dev/null @@ -1,426 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { ControlElement, NOT_APPLICABLE } from '@jsonforms/core'; -import MaterialDateControl, { - materialDateControlTester, -} from '../../src/controls/MaterialDateControl'; -import * as React from 'react'; -import { materialRenderers } from '../../src'; - -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonFormsStateProvider } from '@jsonforms/react'; -import { initCore, TestEmitter } from './util'; - -Enzyme.configure({ adapter: new Adapter() }); - -const data = { foo: '1980-06-04' }; -const schema = { - type: 'object', - properties: { - foo: { - type: 'string', - format: 'date', - }, - }, -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', -}; - -describe('Material date control tester', () => { - test('should fail', () => { - expect(materialDateControlTester(undefined, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect(materialDateControlTester(null, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect( - materialDateControlTester({ type: 'Foo' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - expect( - materialDateControlTester({ type: 'Control' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - expect( - materialDateControlTester( - uischema, - { - type: 'object', - properties: { - foo: { type: 'string' }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - expect( - materialDateControlTester( - uischema, - { - type: 'object', - properties: { - foo: { type: 'string' }, - bar: { - type: 'string', - format: 'date', - }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should succeed', () => { - expect( - materialDateControlTester( - uischema, - { - type: 'object', - properties: { - foo: { - type: 'string', - format: 'date', - }, - }, - }, - undefined - ) - ).toBe(4); - expect( - materialDateControlTester( - { ...uischema, options: { format: 'date' } }, - { - type: 'object', - properties: { - foo: { - type: 'string', - }, - }, - }, - undefined - ) - ).toBe(4); - }); -}); - -describe('Material date control', () => { - let wrapper: ReactWrapper; - - afterEach(() => wrapper.unmount()); - - it('should autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - focus: true, - }, - }; - const core = initCore(schema, control, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBe(true); - }); - - it('should not autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - focus: false, - }, - }; - const core = initCore(schema, control, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeFalsy(); - }); - - it('should not autofocus by default', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - }; - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeFalsy(); - }); - - it('should render', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const input = wrapper.find('input').first(); - expect(input.props().type).toBe('text'); - expect(input.props().value).toBe('1980-06-04'); - }); - - it('should update via event', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - const input = wrapper.find('input').first(); - (input.getDOMNode() as HTMLInputElement).value = '1961-04-12'; - input.simulate('blur', input); - expect(onChangeData.data.foo).toBe('1961-04-12'); - }); - - it('should update via action', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, foo: '1961-04-12' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('1961-04-12'); - }); - - it('should update with null value', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, foo: null }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(''); - }); - - it('should update with undefined value', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, foo: undefined }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(''); - }); - - it('should not update with wrong ref', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, bar: 'Bar' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input'); - expect(input.props().value).toBe('1980-06-04'); - }); - - it('should not update with null ref', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, null: '1961-04-12' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('1980-06-04'); - }); - - it('should not update with undefined ref', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, undefined: '1961-04-12' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('1980-06-04'); - }); - - it('can be disabled', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeTruthy(); - }); - - it('should be enabled by default', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeFalsy(); - }); - - it('should render input id', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - // there is only input id at the moment - expect(input.props().id).toBe('#/properties/foo-input'); - }); - - it('should be hideable', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const inputs = wrapper.find('input'); - expect(inputs.length).toBe(0); - }); - - it('should support format customizations', () => { - const core = initCore(schema, uischema, { foo: '06---1980' }); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('1980/06'); - - (input.getDOMNode() as HTMLInputElement).value = '1961/04'; - input.simulate('blur', input); - expect(onChangeData.data.foo).toBe('04---1961'); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialDateTimeControl.test.tsx b/packages/material-renderers/test/renderers/MaterialDateTimeControl.test.tsx deleted file mode 100644 index f6e3298d23..0000000000 --- a/packages/material-renderers/test/renderers/MaterialDateTimeControl.test.tsx +++ /dev/null @@ -1,441 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - ControlElement, - defaultDateTimeFormat, - NOT_APPLICABLE, -} from '@jsonforms/core'; -import MaterialDateTimeControl, { - materialDateTimeControlTester, -} from '../../src/controls/MaterialDateTimeControl'; -import dayjs from 'dayjs'; -import { materialRenderers } from '../../src'; - -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonFormsStateProvider } from '@jsonforms/react'; -import { initCore, TestEmitter } from './util'; - -Enzyme.configure({ adapter: new Adapter() }); - -const data = { foo: dayjs('1980-04-04 13:37').format(defaultDateTimeFormat) }; -const schema = { - type: 'object', - properties: { - foo: { - type: 'string', - format: 'date-time', - }, - }, -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', -}; - -describe('Material date time control tester', () => { - it('should fail', () => { - expect(materialDateTimeControlTester(undefined, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect(materialDateTimeControlTester(null, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect( - materialDateTimeControlTester({ type: 'Foo' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - expect( - materialDateTimeControlTester({ type: 'Control' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - expect( - materialDateTimeControlTester( - uischema, - { - type: 'object', - properties: { - foo: { type: 'string' }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - expect( - materialDateTimeControlTester( - uischema, - { - type: 'object', - properties: { - foo: { type: 'string' }, - bar: { - type: 'string', - format: 'date-time', - }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should succeed', () => { - expect( - materialDateTimeControlTester( - uischema, - { - type: 'object', - properties: { - foo: { - type: 'string', - format: 'date-time', - }, - }, - }, - undefined - ) - ).toBe(2); - expect( - materialDateTimeControlTester( - { ...uischema, options: { format: 'date-time' } }, - { - type: 'object', - properties: { - foo: { - type: 'string', - }, - }, - }, - undefined - ) - ).toBe(2); - }); -}); - -describe('Material date time control', () => { - let wrapper: ReactWrapper; - - afterEach(() => { - wrapper.unmount(); - }); - - it('should autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - focus: true, - }, - }; - const core = initCore(schema, control, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeTruthy(); - }); - - it('should not autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - focus: false, - }, - }; - const core = initCore(schema, control, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeFalsy(); - }); - - it('should not autofocus by default', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - }; - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeFalsy(); - }); - - it('should render', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const input = wrapper.find('input').first(); - expect(input.props().type).toBe('text'); - expect(input.props().value).toBe('1980-04-04 13:37'); - }); - - it('should update via event', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - const input = wrapper.find('input').first(); - (input.getDOMNode() as HTMLInputElement).value = '1961-12-12 20:15'; - input.simulate('blur', input); - expect(onChangeData.data.foo).toBe( - dayjs('1961-12-12 20:15').format(defaultDateTimeFormat) - ); - }); - - it('should update via action', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { - ...core.data, - foo: dayjs('1961-12-04 20:15').format(defaultDateTimeFormat), - }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('1961-12-04 20:15'); - }); - - it('should update with null value', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, foo: null }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(''); - }); - - it('should not update with undefined value', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, foo: undefined }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(''); - }); - - it('should not update with wrong ref', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, bar: 'Bar' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('1980-04-04 13:37'); - }); - - it('should not update with null ref', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, null: '12.04.1961 20:15' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('1980-04-04 13:37'); - }); - - it('should not update with undefined ref', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, undefined: '12.04.1961 20:15' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('1980-04-04 13:37'); - }); - - it('can be disabled', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeTruthy(); - }); - - it('should be enabled by default', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeFalsy(); - }); - - it('should render input id', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - // there is only input id at the dayjs - expect(input.props().id).toBe('#/properties/foo-input'); - }); - - it('should be hideable', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const inputs = wrapper.find('input'); - expect(inputs.length).toBe(0); - }); - - it('should support format customizations', () => { - const core = initCore(schema, uischema, { - foo: dayjs('1980-04-23 13:37').format('YYYY/MM/DD h:mm a'), - }); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('23-04-80 01:37:pm'); - - (input.getDOMNode() as HTMLInputElement).value = '10-12-05 11:22:am'; - input.simulate('blur', input); - expect(onChangeData.data.foo).toBe('2005/12/10 11:22 am'); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialEnumArrayRenderer.test.tsx b/packages/material-renderers/test/renderers/MaterialEnumArrayRenderer.test.tsx deleted file mode 100644 index 320804c5b3..0000000000 --- a/packages/material-renderers/test/renderers/MaterialEnumArrayRenderer.test.tsx +++ /dev/null @@ -1,273 +0,0 @@ -import { ControlElement, NOT_APPLICABLE } from '@jsonforms/core'; -import { JsonForms } from '@jsonforms/react'; -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import React from 'react'; -import { - materialEnumArrayRendererTester, - MaterialEnumArrayRenderer, -} from '../../src'; -import { FormHelperText, FormLabel } from '@mui/material'; - -const MaterialEnumArrayRendererRegistration = { - tester: materialEnumArrayRendererTester, - renderer: MaterialEnumArrayRenderer, -}; -const data = ['bar']; -const oneOfSchema = { - type: 'array', - items: { - oneOf: [ - { - const: 'foo', - title: 'My Title', - }, - { - const: 'bar', - }, - ], - }, - uniqueItems: true, -}; - -const enumSchema = { - type: 'array', - items: { - type: 'string', - enum: ['a', 'b', 'c'], - }, - uniqueItems: true, -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#', - label: 'Label', - options: { - showUnfocusedDescription: true, - }, -}; - -Enzyme.configure({ adapter: new Adapter() }); - -describe('EnumArrayControl tester', () => { - test('should fail', () => { - expect( - materialEnumArrayRendererTester( - uischema, - { - type: 'array', - items: {}, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - expect( - materialEnumArrayRendererTester( - uischema, - { - type: 'array', - items: { - anyOf: [], - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should succeed for schema with enum items', () => { - expect( - materialEnumArrayRendererTester(uischema, enumSchema, undefined) - ).toBe(5); - }); -}); - -describe('EnumArrayControl', () => { - let wrapper: ReactWrapper; - - afterEach(() => { - wrapper.unmount(); - }); - - test('oneOf items - renders', () => { - wrapper = mount( - - ); - const inputs = wrapper.find('input'); - expect(inputs).toHaveLength(2); - }); - - test('oneOf items - renders with data', () => { - wrapper = mount( - - ); - const inputs = wrapper.find('input'); - expect(inputs.first().props().checked).toBeFalsy(); - expect(inputs.last().props().checked).toBeTruthy(); - }); - - test('oneOf items - renders labels for options', () => { - wrapper = mount( - - ); - const labels = wrapper.find('label'); - expect(labels.first().text()).toBe('My Title'); - expect(labels.last().text()).toBe('bar'); - }); - - test('oneOf items - updates data', (done) => { - let myData: any = undefined; - wrapper = mount( - { - myData = data; - }} - /> - ); - const input = wrapper.find('input').first(); - input.simulate('change', { target: { checked: true } }); - // events are debounced for some time, so let's wait - setTimeout(() => { - expect(myData).toStrictEqual(['foo']); - done(); - }, 50); - }); - - test('enum items - renders', () => { - wrapper = mount( - - ); - const inputs = wrapper.find('input'); - expect(inputs).toHaveLength(3); - }); - - test('enum items - renders with data', () => { - wrapper = mount( - - ); - const inputs = wrapper.find('input'); - expect(inputs.at(0).props().checked).toBeFalsy(); - expect(inputs.at(1).props().checked).toBeTruthy(); - expect(inputs.at(2).props().checked).toBeFalsy(); - }); - - test('enum items - renders labels for options', () => { - wrapper = mount( - - ); - const labels = wrapper.find('label'); - expect(labels.at(0).text()).toBe('a'); - expect(labels.at(1).text()).toBe('b'); - expect(labels.at(2).text()).toBe('c'); - }); - - test('enum items - updates data', (done) => { - let myData: any = undefined; - wrapper = mount( - { - myData = data; - }} - /> - ); - const input = wrapper.find('input').first(); - input.simulate('change', { target: { checked: true } }); - // events are debounced for some time, so let's wait - setTimeout(() => { - expect(myData).toStrictEqual(['a']); - done(); - }, 50); - }); - - test('oneOf items - renders label for the form group', () => { - wrapper = mount( - - ); - expect(wrapper.find(FormLabel).text()).toBe('Label'); - }); - - test('enum items - renders label for the form group', () => { - wrapper = mount( - - ); - expect(wrapper.find(FormLabel).text()).toBe('Label'); - }); - - test('oneOf items - renders description for the form group', () => { - wrapper = mount( - - ); - expect(wrapper.find(FormHelperText).text()).toBe('Description'); - }); - - test('enum items - renders description for the form group', () => { - wrapper = mount( - - ); - expect(wrapper.find(FormHelperText).text()).toBe('Description'); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialEnumCell.test.tsx b/packages/material-renderers/test/renderers/MaterialEnumCell.test.tsx deleted file mode 100644 index 9211850a89..0000000000 --- a/packages/material-renderers/test/renderers/MaterialEnumCell.test.tsx +++ /dev/null @@ -1,90 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import * as React from 'react'; -import { ControlElement } from '@jsonforms/core'; -import MaterialEnumCell, { - materialEnumCellTester, -} from '../../src/cells/MaterialEnumCell'; -import { materialRenderers } from '../../src'; - -import Enzyme, { mount } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonFormsStateProvider } from '@jsonforms/react'; -import { initCore } from './util'; - -Enzyme.configure({ adapter: new Adapter() }); - -const data = { nationality: 'JP' }; -const schema = { - type: 'string', - enum: ['DE', 'IT', 'JP', 'US', 'RU', 'Other'], -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/nationality', -}; - -describe('Material enum cell tester', () => { - it('should succeed with matching prop type', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/nationality', - }; - expect( - materialEnumCellTester( - control, - { - type: 'object', - properties: { - nationality: { - type: 'string', - enum: ['DE', 'IT', 'JP', 'US', 'RU', 'Other'], - }, - }, - }, - undefined - ) - ).toBe(2); - }); -}); - -describe('Material enum cell', () => { - it('should select an item from dropdown list', () => { - const core = initCore(schema, uischema, data); - const wrapper = mount( - - - - ); - const input = wrapper.find('input'); - expect(input.props().value).toBe('JP'); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialEnumControl.test.tsx b/packages/material-renderers/test/renderers/MaterialEnumControl.test.tsx deleted file mode 100644 index 2345d2a32f..0000000000 --- a/packages/material-renderers/test/renderers/MaterialEnumControl.test.tsx +++ /dev/null @@ -1,81 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import * as React from 'react'; -import { ControlElement } from '@jsonforms/core'; -import { materialRenderers, MuiSelect, MaterialEnumControl } from '../../src'; - -import Enzyme, { mount } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonFormsStateProvider } from '@jsonforms/react'; -import { initCore } from './util'; - -Enzyme.configure({ adapter: new Adapter() }); - -const data = { nationality: 'JP' }; -const schema = { - type: 'string', - enum: ['DE', 'IT', 'JP', 'US', 'RU', 'Other'], -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/nationality', - options: { - autocomplete: false, - }, -}; - -describe('Material enum control', () => { - it('enum options should change when translation changes', () => { - const core = initCore(schema, uischema, data); - const translate = () => 'Translated'; - const changedTranslate = () => 'OtherTranslation'; - const wrapper = mount( - - - - ); - - expect(wrapper.find(MuiSelect).props().options[0].label).toBe('Translated'); - - wrapper.setProps({ - initState: { - renderers: materialRenderers, - core, - i18n: { translate: changedTranslate }, - }, - }); - wrapper.update(); - - expect(wrapper.find(MuiSelect).props().options[0].label).toBe( - 'OtherTranslation' - ); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialGroupLayout.test.tsx b/packages/material-renderers/test/renderers/MaterialGroupLayout.test.tsx deleted file mode 100644 index 7c5a3566cf..0000000000 --- a/packages/material-renderers/test/renderers/MaterialGroupLayout.test.tsx +++ /dev/null @@ -1,96 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import * as React from 'react'; -import Enzyme, { mount } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import MaterialGroupLayout from '../../src/layouts/MaterialGroupLayout'; -import { MaterialLayoutRenderer } from '../../src/util/layout'; - -Enzyme.configure({ adapter: new Adapter() }); - -const schema = { - type: 'object', - properties: { - name: { - type: 'string', - minLength: 3, - description: 'Please enter your name', - }, - birthDate: { - type: 'string', - format: 'date', - description: 'Please enter your birth date.', - }, - }, -}; - -const uischema = { - type: 'Group', - label: 'My Group', - elements: [ - { - type: 'Control', - label: 'Name', - scope: '#/properties/name', - }, - { - type: 'Control', - label: 'Birth Date', - scope: '#/properties/birthDate', - }, - ], -}; - -describe('Material group layout', () => { - it('should render a GroupComponent with direction column when given no direction LayoutProp', () => { - const wrapper = mount( - - ); - expect(wrapper.find(MaterialLayoutRenderer).props().direction).toBe( - 'column' - ); - }); - - it('should render a GroupComponent with direction row when this is provided as a direction prop', () => { - const wrapper = mount( - - ); - expect(wrapper.find(MaterialLayoutRenderer).props().direction).toBe('row'); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialInputControl.test.tsx b/packages/material-renderers/test/renderers/MaterialInputControl.test.tsx deleted file mode 100644 index 3906f0882f..0000000000 --- a/packages/material-renderers/test/renderers/MaterialInputControl.test.tsx +++ /dev/null @@ -1,400 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import { materialRenderers } from '../../src'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import * as React from 'react'; -import { - ControlElement, - ControlProps, - ControlState, - HorizontalLayout, - isControl, - JsonSchema, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { - Control, - JsonFormsStateProvider, - withJsonFormsControlProps, -} from '@jsonforms/react'; -import { MaterialInputControl } from '../../src/controls/MaterialInputControl'; -import MaterialHorizontalLayoutRenderer from '../../src/layouts/MaterialHorizontalLayout'; -import { MuiInputText } from '../../src/mui-controls'; -import { initCore } from './util'; - -Enzyme.configure({ adapter: new Adapter() }); - -const data = { foo: 'bar' }; -const schema = { - type: 'object', - properties: { - foo: { - type: 'string', - }, - }, -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', -}; -class TestControlInner extends Control { - render() { - return ; - } -} -export const testControlTester: RankedTester = rankWith(1, isControl); -const TestControl = withJsonFormsControlProps(TestControlInner); - -describe('Material input control', () => { - let wrapper: ReactWrapper; - - afterEach(() => { - wrapper.unmount(); - }); - - it('render', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const control = wrapper.find('div').first(); - expect(control.children()).toHaveLength(4); - - const label = wrapper.find('label'); - expect(label.text()).toBe('Foo'); - - const inputs = wrapper.find('input'); - expect(inputs).toHaveLength(1); - - const validation = wrapper.find('p').first(); - expect(validation.props().className).toContain('MuiFormHelperText-root'); - expect(validation.children()).toHaveLength(0); - }); - - it('should render without label', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - label: false, - }; - const core = initCore(schema, uischema); - wrapper = mount( - - - - ); - - const div = wrapper.find('div').first(); - expect(div.children()).toHaveLength(4); - - const label = wrapper.find('label'); - expect(label.text()).toBe(''); - - const inputs = wrapper.find('input'); - expect(inputs).toHaveLength(1); - - const validation = wrapper.find('p').first(); - expect(validation.props().className).toContain('MuiFormHelperText-root'); - expect(validation.children()).toHaveLength(0); - }); - - it('can be hidden', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const inputs = wrapper.find('input'); - expect(inputs.length).toBe(0); - }); - - it('should be shown by default', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const control = wrapper.find('div').first(); - expect(control.props().hidden).toBeFalsy(); - }); - - it('should display a single error', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - core.data = { ...core.data, foo: 2 }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const validation = wrapper.find('p').first(); - expect(validation.text()).toBe('must be string'); - }); - - it('should display multiple errors', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, foo: 3 }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const validation = wrapper.find('p').first(); - expect(validation.text()).toBe('must be string'); - }); - - it('should not show any errors', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const validation = wrapper.find('p').first(); - expect(validation.text()).toBe(''); - }); - - it('should handle validation updates', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, foo: 3 }; - core.data = { ...core.data, foo: 'bar' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const validation = wrapper.find('p').first(); - expect(validation.text()).toBe(''); - }); - - it('should handle validation with nested schemas', () => { - const jsonSchema = { - type: 'object', - properties: { - name: { - type: 'string', - }, - personalData: { - type: 'object', - properties: { - middleName: { - type: 'string', - }, - lastName: { - type: 'string', - }, - }, - required: ['middleName', 'lastName'], - }, - }, - required: ['name'], - }; - const firstControlElement: ControlElement = { - type: 'Control', - scope: '#/properties/name', - }; - const secondControlElement: ControlElement = { - type: 'Control', - scope: '#/properties/personalData/properties/middleName', - }; - const thirdControlElement: ControlElement = { - type: 'Control', - scope: '#/properties/personalData/properties/lastName', - }; - const layout: HorizontalLayout = { - type: 'HorizontalLayout', - elements: [ - firstControlElement, - secondControlElement, - thirdControlElement, - ], - }; - const newData = { - name: 'John Doe', - personalData: {}, - }; - const core = initCore(jsonSchema, layout, newData); - wrapper = mount( - - - - ); - const validation = wrapper.find('p'); - expect(validation).toHaveLength(6); - expect(validation.at(0).text()).toBe(''); - expect(validation.at(2).text()).toBe('is a required property'); - expect(validation.at(4).text()).toBe('is a required property'); - }); - - it('should display a marker for a required prop', () => { - const jsonSchema: JsonSchema = { - type: 'object', - properties: { - dateCell: { - type: 'string', - format: 'date', - }, - }, - required: ['dateCell'], - }; - const control: ControlElement = { - type: 'Control', - scope: '#/properties/dateCell', - }; - - const core = initCore(jsonSchema, control, {}); - wrapper = mount( - - - - ); - const label = wrapper.find('label').first(); - expect(label.text()).toBe('Date Cell *'); - }); - - it('should not display a marker for a non-required prop', () => { - const jsonSchema: JsonSchema = { - type: 'object', - properties: { - dateCell: { - type: 'string', - format: 'date', - }, - }, - }; - const control: ControlElement = { - type: 'Control', - scope: '#/properties/dateCell', - }; - - const core = initCore(jsonSchema, control, {}); - wrapper = mount( - - - - ); - const label = wrapper.find('label').first(); - expect(label.text()).toBe('Date Cell'); - }); - - it('should display a password cell if the password option is set', () => { - const jsonSchema = { - type: 'object', - properties: { - password: { type: 'string' }, - }, - }; - const control: ControlElement = { - type: 'Control', - scope: '#/properties/password', - options: { format: 'password' }, - }; - const core = initCore(jsonSchema, control, {}); - wrapper = mount( - - - - ); - const input = wrapper.find('input'); - expect(input.props().type).toBe('password'); - }); - - it('should render own id and create/use input id', () => { - const jsonSchema = { - type: 'object', - properties: { - name: { type: 'string' }, - }, - }; - const control: ControlElement = { - type: 'Control', - scope: '#/properties/name', - }; - const core = initCore(jsonSchema, control, {}); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().id).toBe('#/properties/name-input'); - - const label = wrapper.find('label').first(); - expect(label.props().htmlFor).toBe('#/properties/name-input'); - - const rootDiv = wrapper.find('div').first(); - expect(rootDiv.props().id).toBe('#/properties/name'); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialIntegerCell.test.tsx b/packages/material-renderers/test/renderers/MaterialIntegerCell.test.tsx deleted file mode 100644 index 4ea7c9dfd7..0000000000 --- a/packages/material-renderers/test/renderers/MaterialIntegerCell.test.tsx +++ /dev/null @@ -1,368 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import * as React from 'react'; -import { ControlElement, NOT_APPLICABLE } from '@jsonforms/core'; -import IntegerCell, { - materialIntegerCellTester, -} from '../../src/cells/MaterialIntegerCell'; -import { materialRenderers } from '../../src'; - -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonFormsStateProvider } from '@jsonforms/react'; -import { initCore, TestEmitter } from './util'; - -Enzyme.configure({ adapter: new Adapter() }); - -const data = { foo: 42 }; -const schema = { - type: 'integer', - minimum: 5, -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', -}; - -describe('Material integer cells tester', () => { - const controlElement: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - }; - - it('should fail', () => { - expect(materialIntegerCellTester(undefined, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect(materialIntegerCellTester(null, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect( - materialIntegerCellTester({ type: 'Foo' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - expect( - materialIntegerCellTester({ type: 'Control' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - expect( - materialIntegerCellTester( - controlElement, - { - type: 'object', - properties: { foo: { type: 'string' } }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - expect( - materialIntegerCellTester( - controlElement, - { - type: 'object', - properties: { foo: { type: 'string' }, bar: { type: 'integer' } }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should succeed', () => { - expect( - materialIntegerCellTester( - controlElement, - { - type: 'object', - properties: { foo: { type: 'integer' } }, - }, - undefined - ) - ).toBe(2); - }); -}); - -describe('Material integer cells', () => { - let wrapper: ReactWrapper; - - afterEach(() => wrapper.unmount()); - - it('should autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - focus: true, - }, - }; - const core = initCore(schema, control, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeTruthy(); - }); - - it('should not autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - focus: false, - }, - }; - const core = initCore(schema, control, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input'); - expect(input.props().autoFocus).toBeFalsy(); - }); - - it('should not autofocus by default', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - }; - const core = initCore(schema, control, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeFalsy(); - }); - - it('should render', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const input = wrapper.find('input').first(); - expect(input.props().type).toBe('number'); - expect(input.props().step).toBe('1'); - expect(input.props().value).toBe(42); - }); - - it('should render 0', () => { - const core = initCore(schema, uischema, { foo: 0 }); - wrapper = mount( - - - - ); - - const input = wrapper.find('input').first(); - expect(input.props().type).toBe('number'); - expect(input.props().step).toBe('1'); - expect(input.props().value).toBe(0); - }); - - it('should update via input event', (done) => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - - const input = wrapper.find('input'); - input.simulate('change', { target: { value: 13 } }); - setTimeout(() => { - expect(onChangeData.data.foo).toBe(13); - done(); - }, 1000); - }); - - it('should update via action', (done) => { - const core = initCore(schema, uischema, { foo: 13 }); - wrapper = mount( - - - - ); - core.data = { ...core.data, foo: 42 }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(42); - done(); - }, 1000); - }); - - it('should not update with undefined value', (done) => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, foo: undefined }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input'); - expect(input.props().value).toBe(''); - done(); - }, 1000); - }); - - it('should not update with null value', (done) => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, foo: null }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(''); - done(); - }, 1000); - }); - - it('should not update with wrong ref', (done) => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, bar: 11 }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input'); - expect(input.props().value).toBe(42); - done(); - }, 1000); - }); - - it('should not update with null ref', (done) => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, null: 13 }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input'); - expect(input.props().value).toBe(42); - done(); - }, 1000); - }); - - it('should not update with undefined ref', (done) => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, undefined: 13 }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input'); - expect(input.props().value).toBe(42); - done(); - }, 1000); - }); - - it('can be disabled', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeTruthy(); - }); - - it('should be enabled by default', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeFalsy(); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialLabelRenderer.test.tsx b/packages/material-renderers/test/renderers/MaterialLabelRenderer.test.tsx deleted file mode 100644 index 7de8894a14..0000000000 --- a/packages/material-renderers/test/renderers/MaterialLabelRenderer.test.tsx +++ /dev/null @@ -1,116 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import * as React from 'react'; -import { LabelElement, NOT_APPLICABLE } from '@jsonforms/core'; -import '../../src/cells'; -import MaterialLabelRenderer, { - materialLabelRendererTester, -} from '../../src/additional/MaterialLabelRenderer'; -import { materialRenderers } from '../../src'; -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonForms, JsonFormsStateProvider } from '@jsonforms/react'; -import { initCore } from './util'; - -Enzyme.configure({ adapter: new Adapter() }); - -const data = {}; -const schema = { - type: 'object', - properties: {}, -}; -const uischema: LabelElement = { - type: 'Label', - text: 'Foo', -}; - -describe('Material Label Renderer tester', () => { - it('should fail', () => { - expect(materialLabelRendererTester(undefined, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect(materialLabelRendererTester(null, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect( - materialLabelRendererTester({ type: 'Foo' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - expect( - materialLabelRendererTester({ type: 'Label' }, undefined, undefined) - ).toBe(1); - }); -}); - -describe('Material Label Renderer', () => { - let wrapper: ReactWrapper; - - afterEach(() => wrapper.unmount()); - - it('render', () => { - wrapper = mount( - - ); - expect(wrapper.find(MaterialLabelRenderer).length).toBeTruthy(); - - const label = wrapper.find('h6').first(); - expect(label.text()).toBe('Foo'); - }); - - it('can be hidden', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const labels = wrapper.find('h6'); - expect(labels.length).toBe(0); - }); - - it('should be shown by default', () => { - wrapper = mount( - - ); - expect(wrapper.find(MaterialLabelRenderer).length).toBeTruthy(); - const label = wrapper.find('h6').first(); - expect(label.props().hidden).toBeFalsy(); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialLayouts.test.tsx b/packages/material-renderers/test/renderers/MaterialLayouts.test.tsx deleted file mode 100644 index 9eeb6fd7ad..0000000000 --- a/packages/material-renderers/test/renderers/MaterialLayouts.test.tsx +++ /dev/null @@ -1,523 +0,0 @@ -/* - The MIT License - - Copyright (c) 2018-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import Enzyme, { mount } from 'enzyme'; -import { materialRenderers } from '../../src'; -import { - ControlElement, - Layout, - RuleEffect, - UISchemaElement, -} from '@jsonforms/core'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonForms } from '@jsonforms/react'; - -Enzyme.configure({ adapter: new Adapter() }); - -const schema = { - type: 'object', - properties: { - toggleTopLayout: { - type: 'boolean', - }, - topString: { - type: 'string', - }, - toggleMiddleLayout: { - type: 'boolean', - }, - middleNumber: { - type: 'number', - }, - toggleBottomLayout: { - type: 'boolean', - }, - bottomBoolean: { - type: 'boolean', - }, - }, -}; -const baseUischema = () => ({ - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/topString', - }, - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/middleNumber', - }, - { - type: 'Group', - label: 'group', - elements: [ - { - type: 'Control', - scope: '#/properties/bottomBoolean', - }, - ], - }, - ], - }, - ], -}); - -const rule = (effect: RuleEffect, propertyName: string) => ({ - effect: effect, - condition: { - scope: '#/properties/' + propertyName, - schema: { const: true }, - }, -}); - -const topRule = (rule: any, uischema: UISchemaElement) => { - uischema.rule = rule; - return uischema; -}; -const topShowRule = (uischema: Layout) => - topRule(rule(RuleEffect.SHOW, 'toggleTopLayout'), uischema); -const topEnableRule = (uischema: Layout) => - topRule(rule(RuleEffect.ENABLE, 'toggleTopLayout'), uischema); - -const middleRule = (rule: any, uischema: Layout) => { - uischema.elements[1].rule = rule; - return uischema; -}; -const middleShowRule = (uischema: Layout) => - middleRule(rule(RuleEffect.SHOW, 'toggleMiddleLayout'), uischema); -const middleEnableRule = (uischema: Layout) => - middleRule(rule(RuleEffect.ENABLE, 'toggleMiddleLayout'), uischema); - -const bottomRule = (rule: any, uischema: Layout) => { - (uischema.elements[1] as Layout).elements[1].rule = rule; - return uischema; -}; -const bottomShowRule = (uischema: Layout) => - bottomRule(rule(RuleEffect.SHOW, 'toggleBottomLayout'), uischema); -const bottomEnableRule = (uischema: Layout) => - bottomRule(rule(RuleEffect.ENABLE, 'toggleBottomLayout'), uischema); - -const controlRule = (rule: any, uischema: Layout) => { - const group = (uischema.elements[1] as Layout).elements[1]; - (group as Layout).elements[0].rule = rule; - return uischema; -}; -const controlEnableRule = (uischema: Layout) => - controlRule(rule(RuleEffect.ENABLE, 'toggleControl'), uischema); - -describe('Layout Tests', () => { - let wrapper: Enzyme.ReactWrapper; - - const createWrapper = (data: any, uischema: UISchemaElement) => { - wrapper = mount( - - ); - }; - - afterEach(() => { - wrapper.unmount(); - }); - - const controlIsShown = (control: string) => { - switch (control) { - case 'top': - return wrapper.find('input[type="text"]').length > 0; - case 'middle': - return wrapper.find('input[type="number"]').length > 0; - case 'bottom': - return wrapper.find('input[type="checkbox"]').length > 0; - default: - fail('Should not happen, something is massively broken'); - } - }; - - const controlIsEnabled = (control: string) => { - let foundControl; - switch (control) { - case 'top': - foundControl = wrapper.find('input[type="text"]'); - break; - case 'middle': - foundControl = wrapper.find('input[type="number"]'); - break; - case 'bottom': - foundControl = wrapper.find('input[type="checkbox"]'); - break; - default: - fail('Should not happen, something is massively broken'); - } - if (foundControl.length === 0) { - fail('Control was expected to be rendered but could not be found'); - } - return ( - foundControl.first().props().disabled === undefined || - !foundControl.first().props().disabled - ); - }; - - describe('Sanity Checks', () => { - it('should render all inputs without rules', () => { - // data doesn't matter - const data = { - toggleTopLayout: true, - toggleMiddleLayout: true, - toggleBottomLayout: true, - }; - createWrapper(data, baseUischema()); - expect(controlIsShown('top')).toBe(true); - expect(controlIsShown('middle')).toBe(true); - expect(controlIsShown('bottom')).toBe(true); - }); - - it('should render all inputs with all rules set to show', () => { - const data = { - toggleTopLayout: true, - toggleMiddleLayout: true, - toggleBottomLayout: true, - }; - const uischema = topShowRule( - middleShowRule(bottomShowRule(baseUischema())) - ); - createWrapper(data, uischema); - expect(controlIsShown('top')).toBe(true); - expect(controlIsShown('middle')).toBe(true); - expect(controlIsShown('bottom')).toBe(true); - }); - - it('should enable all inputs with all rules set to enabled', () => { - const data = { - toggleTopLayout: true, - toggleMiddleLayout: true, - toggleBottomLayout: true, - }; - const uischema = topEnableRule( - middleEnableRule(bottomEnableRule(baseUischema())) - ); - createWrapper(data, uischema); - expect(controlIsEnabled('top')).toBe(true); - expect(controlIsEnabled('middle')).toBe(true); - expect(controlIsEnabled('bottom')).toBe(true); - }); - }); - - describe('Single Rule', () => { - it('hiding top should hide everything', () => { - const data = { - toggleTopLayout: false, - toggleMiddleLayout: true, - toggleBottomLayout: true, - }; - const uischema = topShowRule(baseUischema()); - createWrapper(data, uischema); - expect(controlIsShown('top')).toBe(false); - expect(controlIsShown('middle')).toBe(false); - expect(controlIsShown('bottom')).toBe(false); - }); - - it('hiding middle should leave top', () => { - const data = { - toggleTopLayout: true, - toggleMiddleLayout: false, - toggleBottomLayout: true, - }; - const uischema = middleShowRule(baseUischema()); - createWrapper(data, uischema); - expect(controlIsShown('top')).toBe(true); - expect(controlIsShown('middle')).toBe(false); - expect(controlIsShown('bottom')).toBe(false); - }); - - it('hiding bottom should leave top and middle', () => { - const data = { - toggleTopLayout: true, - toggleMiddleLayout: true, - toggleBottomLayout: false, - }; - const uischema = bottomShowRule(baseUischema()); - createWrapper(data, uischema); - expect(controlIsShown('top')).toBe(true); - expect(controlIsShown('middle')).toBe(true); - expect(controlIsShown('bottom')).toBe(false); - }); - - it('disabling top should disable everything', () => { - const data = { - toggleTopLayout: false, - toggleMiddleLayout: true, - toggleBottomLayout: true, - }; - const uischema = topEnableRule(baseUischema()); - createWrapper(data, uischema); - expect(controlIsEnabled('top')).toBe(false); - expect(controlIsEnabled('middle')).toBe(false); - expect(controlIsEnabled('bottom')).toBe(false); - }); - - it('disabling middle should leave top', () => { - const data = { - toggleTopLayout: true, - toggleMiddleLayout: false, - toggleBottomLayout: true, - }; - const uischema = middleEnableRule(baseUischema()); - createWrapper(data, uischema); - expect(controlIsEnabled('top')).toBe(true); - expect(controlIsEnabled('middle')).toBe(false); - expect(controlIsEnabled('bottom')).toBe(false); - }); - - it('disabling bottom should leave top and middle', () => { - const data = { - toggleTopLayout: true, - toggleMiddleLayout: true, - toggleBottomLayout: false, - }; - const uischema = bottomEnableRule(baseUischema()); - createWrapper(data, uischema); - expect(controlIsEnabled('top')).toBe(true); - expect(controlIsEnabled('middle')).toBe(true); - expect(controlIsEnabled('bottom')).toBe(false); - }); - - it('disabling control should disable control', () => { - const data = { - toggleTopLayout: true, - toggleMiddleLayout: true, - toggleBottomLayout: true, - toggleControl: false, - }; - const uischema = controlEnableRule(baseUischema()); - createWrapper(data, uischema); - expect(controlIsEnabled('top')).toBe(true); - expect(controlIsEnabled('middle')).toBe(true); - expect(controlIsEnabled('bottom')).toBe(false); - }); - }); - - describe('Rule Combinations', () => { - it('disabling middle should disable bottom, even if it has a show rule', () => { - const data = { - toggleTopLayout: true, - toggleMiddleLayout: false, - toggleBottomLayout: true, - }; - const uischema = middleEnableRule(bottomShowRule(baseUischema())); - createWrapper(data, uischema); - expect(controlIsEnabled('top')).toBe(true); - expect(controlIsEnabled('middle')).toBe(false); - expect(controlIsEnabled('bottom')).toBe(false); - }); - - it('disabling layout and enabling control should enable control', () => { - const data = { - toggleTopLayout: true, - toggleMiddleLayout: true, - toggleBottomLayout: false, - toggleControl: true, - }; - const uischema = bottomEnableRule(controlEnableRule(baseUischema())); - createWrapper(data, uischema); - expect(controlIsEnabled('top')).toBe(true); - expect(controlIsEnabled('middle')).toBe(true); - expect(controlIsEnabled('bottom')).toBe(true); - }); - }); -}); - -describe('Special Layout Tests', () => { - describe('Categorization Tests', () => { - const schema = { - type: 'object', - properties: { - name: { - type: 'string', - }, - age: { - type: 'integer', - }, - topCheck: { - type: 'boolean', - }, - bottomCheck: { - type: 'boolean', - }, - }, - }; - - const uischema = { - type: 'Categorization', - elements: [ - { - type: 'Category', - label: 'Private', - elements: [ - { - type: 'Control', - scope: '#/properties/name', - rule: { - effect: RuleEffect.ENABLE, - condition: { - scope: '#/properties/bottomCheck', - schema: { - const: true, - }, - }, - }, - }, - { - type: 'Control', - scope: '#/properties/age', - }, - ], - rule: { - effect: RuleEffect.ENABLE, - condition: { - scope: '#/properties/topCheck', - schema: { - const: true, - }, - }, - }, - }, - ], - }; - - it('enabling top rule and disabling bottom rule should disable control', () => { - const data = { - topCheck: true, - bottomCheck: false, - }; - const wrapper = mount( - - ); - expect(wrapper.find('input[type="text"]').first().props().disabled).toBe( - true - ); - }); - - it('disabling top rule and enabling bottom rule should enable control', () => { - const data = { - topCheck: false, - bottomCheck: true, - }; - const wrapper = mount( - - ); - expect(wrapper.find('input[type="text"]').first().props().disabled).toBe( - false - ); - }); - }); - - describe('Object Renderer Tests', () => { - const schema = { - type: 'object', - properties: { - name: { - type: 'string', - }, - age: { - type: 'integer', - }, - check: { - type: 'boolean', - }, - }, - }; - - const uischema: ControlElement = { - type: 'Control', - scope: '#', - rule: { - effect: RuleEffect.ENABLE, - condition: { - scope: '#/properties/check', - schema: { - const: true, - }, - } as any, - }, - }; - - it('enabling object control should enable child controls', () => { - const data = { - check: true, - }; - const wrapper = mount( - - ); - expect(wrapper.find('input[type="text"]').first().props().disabled).toBe( - false - ); - expect( - wrapper.find('input[type="number"]').first().props().disabled - ).toBe(false); - }); - - it('disabling object control should disable child controls', () => { - const data = { - check: false, - }; - const wrapper = mount( - - ); - expect(wrapper.find('input[type="text"]').first().props().disabled).toBe( - true - ); - expect( - wrapper.find('input[type="number"]').first().props().disabled - ).toBe(true); - }); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialListWithDetailRenderer.test.tsx b/packages/material-renderers/test/renderers/MaterialListWithDetailRenderer.test.tsx deleted file mode 100644 index dca96becb5..0000000000 --- a/packages/material-renderers/test/renderers/MaterialListWithDetailRenderer.test.tsx +++ /dev/null @@ -1,629 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { - ArrayTranslationEnum, - ControlElement, - JsonSchema7, - Scoped, - UISchemaElement, -} from '@jsonforms/core'; -import * as React from 'react'; - -import { ArrayLayoutToolbar, materialRenderers } from '../../src'; -import MaterialListWithDetailRenderer, { - materialListWithDetailTester, -} from '../../src/additional/MaterialListWithDetailRenderer'; -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonFormsStateProvider } from '@jsonforms/react'; -import { ListItemButton, Typography } from '@mui/material'; -import { initCore, testTranslator } from './util'; -import { checkTooltip, checkTooltipTranslation } from './tooltipChecker'; - -Enzyme.configure({ adapter: new Adapter() }); - -const data = [ - { - message: 'El Barto was here', - done: true, - }, - { - message: 'Yolo', - }, -]; - -const emptyData: any[] = []; - -const enumOrOneOfData = [ - { - message: 'El Barto was here', - messageType: 'MSG_TYPE_1', - }, - { - message: 'El Barto was not here', - messageType: 'MSG_TYPE_2', - }, - { - message: 'Yolo', - }, -]; - -const schema: JsonSchema7 = { - type: 'array', - items: { - type: 'object', - properties: { - message: { - type: 'string', - maxLength: 3, - title: 'Schema Title', - }, - done: { - type: 'boolean', - }, - }, - }, -}; - -const uischema: ControlElement = { - type: 'Control', - scope: '#', -}; - -const uischemaListWithDetail: UISchemaElement & Scoped = { - type: 'ListWithDetail', - scope: '#', -}; - -const enumSchema: JsonSchema7 = { - type: 'array', - items: { - type: 'object', - properties: { - messageType: { - type: 'string', - enum: ['MSG_TYPE_1', 'MSG_TYPE_2'], - }, - }, - }, -}; - -const nestedSchema: JsonSchema7 = { - type: 'array', - items: { - ...schema, - }, -}; - -const nestedSchema2 = { - type: 'array', - items: { - type: 'object', - properties: { - objectarrayofstrings: { - type: 'object', - properties: { - choices: { - type: 'array', - items: { - type: 'string', - }, - }, - }, - }, - }, - }, -}; - -describe('Material list with detail tester', () => { - it('should only be applicable for intermediate array or when containing proper options', () => { - const correctUISchema = { - type: 'ListWithDetail', - scope: '#', - }; - const wrongSchema = { - type: 'array', - items: { - type: 'string', - }, - }; - expect(materialListWithDetailTester(uischema, schema, undefined)).toBe(-1); - expect( - materialListWithDetailTester(correctUISchema, wrongSchema, undefined) - ).toBe(-1); - expect( - materialListWithDetailTester(correctUISchema, schema, undefined) - ).toBe(4); - expect( - materialListWithDetailTester(correctUISchema, nestedSchema, undefined) - ).toBe(-1); - expect( - materialListWithDetailTester(correctUISchema, nestedSchema2, undefined) - ).toBe(4); - }); -}); -describe('Material list with detail renderer', () => { - let wrapper: ReactWrapper; - - afterEach(() => wrapper.unmount()); - - it('should render two list entries', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const listItemButtons = wrapper.find('div[role="button"]'); - expect(listItemButtons).toHaveLength(2); - }); - it('should render empty entries', () => { - const core = initCore(schema, uischema, []); - wrapper = mount( - - - - ); - - const lis = wrapper.find('li'); - expect(lis).toHaveLength(0); - - const emptyWrapper = wrapper.find('ul').find('p'); - expect(emptyWrapper.text()).toBe('No data'); - }); - - it('should be hideable', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const controls = wrapper.find('ul'); - expect(controls).toHaveLength(0); - }); - - it('select renders corresponding data in detail', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const liSecond = wrapper.find('div[role="button"]').at(1); - liSecond.simulate('click'); - - const controls = wrapper.find('input'); - expect(controls).toHaveLength(2); - - const controlFirst = wrapper.find('input').at(0); - expect(controlFirst.props().value).toBe('Yolo'); - }); - - it('ui schema label for list', () => { - const uischemaWithLabel = { - ...uischema, - label: 'My awesome label', - }; - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const listLabel = wrapper.find('h6').at(0); - expect(listLabel.text()).toBe('My awesome label'); - }); - - it('schema title for list', () => { - const titleSchema = { - ...schema, - title: 'My awesome title', - }; - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const listTitle = wrapper.find('h6').at(0); - expect(listTitle.text()).toBe('My awesome title'); - }); - - it('choose appropriate labels in nested schema', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const liSecond = wrapper.find('div[role="button"]').at(1); - liSecond.simulate('click'); - - const labels = wrapper.find('label'); - expect(labels).toHaveLength(2); - - const label = labels.at(0); - expect(label.text()).toBe('Schema Title'); - }); - - it('should render description', () => { - const descriptionSchema = { - ...schema, - description: 'This is an array description', - }; - - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - expect( - wrapper.text().includes('This is an array description') - ).toBeTruthy(); - expect( - wrapper.find('.MuiToolbar-root .MuiFormHelperText-root').exists() - ).toBeTruthy(); - }); - - it('should not render description container if there is none', () => { - const descriptionSchema = { - ...schema, - }; - // make sure there is no description - delete descriptionSchema.description; - - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - expect( - wrapper.find('.MuiToolbar-root .MuiFormHelperText-root').exists() - ).toBeFalsy(); - }); - - it('add data to the array', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const addButton = wrapper.find('button').at(0); - addButton.simulate('click'); - - wrapper.update(); - - const listItemButtons = wrapper.find('div[role="button"]'); - expect(listItemButtons).toHaveLength(3); - }); - - it('remove data from the array', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - expect(wrapper.find(ListItemButton)).toHaveLength(2); - - const removeButton = wrapper.find('button').at(1); - removeButton.simulate('click'); - wrapper.update(); - - const listItemButtons = wrapper.find(ListItemButton); - expect(listItemButtons).toHaveLength(1); - }); - - it('should render first simple property', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - expect(wrapper.find(ListItemButton)).toHaveLength(2); - - expect(wrapper.find(ListItemButton).find(Typography).at(0).text()).toBe( - 'El Barto was here' - ); - expect(wrapper.find(ListItemButton).find(Typography).at(1).text()).toBe( - 'Yolo' - ); - }); - - it('should render first simple enum property as translated child label', () => { - const core = initCore(enumSchema, uischema, enumOrOneOfData); - wrapper = mount( - - - - ); - - expect(wrapper.find(ListItemButton)).toHaveLength(3); - - expect(wrapper.find(ListItemButton).find(Typography).at(0).text()).toBe( - 'MSG_TYPE_1' - ); - expect(wrapper.find(ListItemButton).find(Typography).at(1).text()).toBe( - 'MSG_TYPE_2' - ); - expect(wrapper.find(ListItemButton).find(Typography).at(2).text()).toBe(''); - }); - - it('should have no data message when no translator set', () => { - const core = initCore(schema, uischema, emptyData); - wrapper = mount( - - - - ); - - const noDataLabel = wrapper.find('ul>p').text(); - expect(noDataLabel).toBe('No data'); - }); - - it('should have a translation for no data', () => { - const core = initCore(schema, uischema, emptyData); - wrapper = mount( - - - - ); - - const noDataLabel = wrapper.find('ul>p').text(); - expect(noDataLabel).toBe('translator.root.noDataMessage'); - }); - - it('add and delete buttons should exist if enabled', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - console.log(wrapper.debug()); - - const deleteButton = wrapper.find({ 'aria-label': 'Delete button' }); - expect(deleteButton.exists()).toBeTruthy(); - const addButton = wrapper.find({ 'aria-label': 'Add' }); - expect(addButton.exists()).toBeTruthy(); - }); - - it('add and delete buttons should be removed if disabled', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const deleteButton = wrapper.find({ 'aria-label': 'Delete button' }); - expect(deleteButton.exists()).toBeFalsy(); - const addButton = wrapper.find({ 'aria-label': 'Add' }); - expect(addButton.exists()).toBeFalsy(); - }); - - it('add button should be removed if indicated via ui schema', () => { - const disableUischema = { ...uischema }; - disableUischema.options = { - ...disableUischema.options, - disableAdd: true, - }; - const core = initCore(schema, disableUischema, data); - wrapper = mount( - - - - ); - - const button = wrapper.find({ 'aria-label': 'Add' }); - expect(button.exists()).toBeFalsy(); - }); - - it('delete button should be removed if indicated via ui schema', () => { - const disableUischema = { ...uischema }; - disableUischema.options = { - ...disableUischema.options, - disableRemove: true, - }; - const core = initCore(schema, disableUischema, data); - wrapper = mount( - - - - ); - - const button = wrapper.find({ 'aria-label': 'Delete button' }); - expect(button.exists()).toBeFalsy(); - }); - - it('add and delete buttons should be removed if indicated via config', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const deleteButton = wrapper.find({ 'aria-label': 'Delete button' }); - expect(deleteButton.exists()).toBeFalsy(); - const addButton = wrapper.find({ 'aria-label': 'Add' }); - expect(addButton.exists()).toBeFalsy(); - }); - - it('should have a tooltip for add button', () => { - wrapper = checkTooltip( - schema, - uischemaListWithDetail, - wrapper, - (wrapper) => wrapper.find(ArrayLayoutToolbar), - ArrayTranslationEnum.addTooltip, - { - id: 'tooltip-add', - }, - data - ); - }); - it('should have a translatable tooltip for add button', () => { - wrapper = checkTooltipTranslation( - schema, - uischemaListWithDetail, - wrapper, - (wrapper) => wrapper.find(ArrayLayoutToolbar), - { - id: 'tooltip-add', - }, - data - ); - }); - - it('should have a tooltip for delete button', () => { - wrapper = checkTooltip( - schema, - uischemaListWithDetail, - wrapper, - (wrapper) => wrapper.find('Memo(ListWithDetailMasterItem)').at(0), - ArrayTranslationEnum.removeTooltip, - { - id: 'tooltip-remove', - }, - data - ); - }); - - it('should have a translatable tooltip for delete button', () => { - wrapper = checkTooltipTranslation( - schema, - uischemaListWithDetail, - wrapper, - (wrapper) => wrapper.find('Memo(ListWithDetailMasterItem)').at(0), - { - id: 'tooltip-remove', - }, - data - ); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialNativeControl.test.tsx b/packages/material-renderers/test/renderers/MaterialNativeControl.test.tsx deleted file mode 100644 index a306659747..0000000000 --- a/packages/material-renderers/test/renderers/MaterialNativeControl.test.tsx +++ /dev/null @@ -1,83 +0,0 @@ -/* - The MIT License - - Copyright (c) 2018-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import { MaterialNativeControl } from '../../src/controls/MaterialNativeControl'; -import TextField, { TextFieldProps } from '@mui/material/TextField'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { ControlElement, ControlProps } from '@jsonforms/core'; - -Enzyme.configure({ adapter: new Adapter() }); - -const schema = { - type: 'object', - properties: { - foo: { - type: 'string', - format: 'time', - }, - }, -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', -}; - -const createMaterialNativeControl = (props: ControlProps) => { - return ; -}; - -const defaultControlProps = (): ControlProps => { - return { - // eslint-disable-next-line @typescript-eslint/no-empty-function - handleChange: () => {}, - enabled: false, - visible: true, - path: 'path', - rootSchema: schema, - schema: schema.properties.foo, - uischema: uischema, - label: 'Foo', - id: 'foo-id', - errors: '', - data: '', - }; -}; - -describe('Material native control', () => { - let wrapper: ReactWrapper; - - afterEach(() => { - wrapper.unmount(); - }); - - it('is disabled', () => { - const props = defaultControlProps(); - wrapper = mount(createMaterialNativeControl(props)); - expect( - (wrapper.find(TextField).props() as TextFieldProps).disabled - ).toEqual(true); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialNumberCell.test.tsx b/packages/material-renderers/test/renderers/MaterialNumberCell.test.tsx deleted file mode 100644 index aa02d0f65b..0000000000 --- a/packages/material-renderers/test/renderers/MaterialNumberCell.test.tsx +++ /dev/null @@ -1,413 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import * as React from 'react'; -import { ControlElement, JsonSchema, NOT_APPLICABLE } from '@jsonforms/core'; -import NumberCell, { - materialNumberCellTester, -} from '../../src/cells/MaterialNumberCell'; -import { materialRenderers } from '../../src'; -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonFormsStateProvider } from '@jsonforms/react'; -import { initCore, TestEmitter } from './util'; - -Enzyme.configure({ adapter: new Adapter() }); - -const data = { foo: 3.14 }; -const schema = { - type: 'number', - minimum: 5, -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', -}; - -describe('Material number cells tester', () => { - it('should fail', () => { - expect(materialNumberCellTester(undefined, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect(materialNumberCellTester(null, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect( - materialNumberCellTester({ type: 'Foo' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - expect( - materialNumberCellTester({ type: 'Control' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - }); - - it('should succeed with wrong schema type', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - }; - expect( - materialNumberCellTester( - control, - { - type: 'object', - properties: { - foo: { - type: 'string', - }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should fail if only sibling has correct type', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - }; - expect( - materialNumberCellTester( - control, - { - type: 'object', - properties: { - foo: { - type: 'string', - }, - bar: { - type: 'number', - }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should succeed with matching prop type', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - }; - expect( - materialNumberCellTester( - control, - { - type: 'object', - properties: { - foo: { - type: 'number', - }, - }, - }, - undefined - ) - ).toBe(2); - }); -}); - -describe('Material number cells', () => { - let wrapper: ReactWrapper; - - afterEach(() => wrapper.unmount()); - - it('should autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - focus: true, - }, - }; - const core = initCore(schema, control, data); - wrapper = mount( - - - - ); - const inputs = wrapper.find('input'); - expect(inputs.first().props().autoFocus).toBeTruthy(); - }); - - it('should not autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - focus: false, - }, - }; - const core = initCore(schema, control, data); - wrapper = mount( - - - - ); - const inputs = wrapper.find('input'); - expect(inputs.first().props().autoFocus).toBeFalsy(); - }); - - it('should not autofocus by default', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - }; - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const inputs = wrapper.find('input'); - expect(inputs.first().props().autoFocus).toBeFalsy(); - }); - - it('should render', () => { - const jsonSchema: JsonSchema = { - type: 'object', - properties: { - foo: { - type: 'number', - }, - }, - }; - const core = initCore(schema, uischema, { foo: 3.14 }); - wrapper = mount( - - - - ); - - const input = wrapper.find('input').first(); - expect(input.props().type).toBe('number'); - expect(input.props().step).toBe('0.1'); - expect(input.props().value).toBe(3.14); - }); - - it('should render 0', () => { - const jsonSchema: JsonSchema = { - type: 'object', - properties: { - foo: { - type: 'number', - }, - }, - }; - const core = initCore(schema, uischema, { foo: 0 }); - wrapper = mount( - - - - ); - - const input = wrapper.find('input').first(); - expect(input.props().type).toBe('number'); - expect(input.props().step).toBe('0.1'); - expect(input.props().value).toBe(0); - }); - - it('should update via input event', (done) => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - const input = wrapper.find('input'); - input.simulate('change', { target: { value: 2.72 } }); - setTimeout(() => { - expect(onChangeData.data.foo).toBe(2.72); - done(); - }, 1000); - }); - - it('should update via action', (done) => { - const core = initCore(schema, uischema, { foo: 2.72 }); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(2.72); - - core.data = { ...core.data, foo: 3.14 }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - - setTimeout(() => { - expect(wrapper.find('input').first().props().value).toBe(3.14); - done(); - }, 1000); - }); - - it('should update with undefined value', (done) => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, foo: undefined }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(''); - done(); - }, 1000); - }); - - it('should not update with null value', (done) => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, foo: null }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(''); - done(); - }, 1000); - }); - - it('should not update with wrong ref', (done) => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, bar: 11 }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(3.14); - done(); - }, 1000); - }); - - it('should not update with null ref', (done) => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, null: 2.72 }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(3.14); - done(); - }, 1000); - }); - - it('should not update with undefined ref', (done) => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, undefined: 13 }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(3.14); - done(); - }, 1000); - }); - - it('can be disabled', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeTruthy(); - }); - - it('should be enabled by default', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeFalsy(); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialObjectControl.test.tsx b/packages/material-renderers/test/renderers/MaterialObjectControl.test.tsx deleted file mode 100644 index 462a0a7079..0000000000 --- a/packages/material-renderers/test/renderers/MaterialObjectControl.test.tsx +++ /dev/null @@ -1,203 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { ControlElement, NOT_APPLICABLE } from '@jsonforms/core'; -import * as React from 'react'; -import { materialRenderers } from '../../src'; -import MaterialObjectRenderer, { - materialObjectControlTester, -} from '../../src/complex/MaterialObjectRenderer'; -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonFormsStateProvider } from '@jsonforms/react'; -import { initCore } from './util'; - -Enzyme.configure({ adapter: new Adapter() }); - -const data = { foo: { foo_1: 'foo' }, bar: { bar_1: 'bar' } }; -const schema = { - type: 'object', - properties: { - foo: { - type: 'object', - properties: { - foo_1: { type: 'string' }, - }, - }, - bar: { - type: 'object', - properties: { - bar_1: { type: 'string' }, - }, - }, - }, -}; -const uischema1: ControlElement = { - type: 'Control', - scope: '#', -}; -const uischema2: ControlElement = { - type: 'Control', - scope: '#/properties/foo', -}; - -describe('Material object renderer tester', () => { - test('should fail', () => { - expect(materialObjectControlTester(undefined, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect(materialObjectControlTester(null, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect( - materialObjectControlTester({ type: 'Foo' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - expect( - materialObjectControlTester({ type: 'Control' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - expect( - materialObjectControlTester( - uischema2, - { - type: 'object', - properties: { - foo: { type: 'string' }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - expect( - materialObjectControlTester( - uischema2, - { - type: 'object', - properties: { - foo: { type: 'string' }, - bar: schema.properties.bar, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should succeed', () => { - expect( - materialObjectControlTester( - uischema2, - { - type: 'object', - properties: { - foo: schema.properties.foo, - }, - }, - undefined - ) - ).toBe(2); - }); -}); - -describe('Material object control', () => { - let wrapper: ReactWrapper; - - afterEach(() => wrapper.unmount()); - - it('should render all children', () => { - const core = initCore(schema, uischema1, data); - wrapper = mount( - - - - ); - - const inputs = wrapper.find('input'); - expect(inputs.length).toBe(2); - expect(inputs.at(0).props().type).toBe('text'); - expect(inputs.at(0).props().value).toBe('foo'); - expect(inputs.at(1).props().type).toBe('text'); - expect(inputs.at(1).props().value).toBe('bar'); - }); - - it('should render only itself', () => { - const core = initCore(schema, uischema1, data); - wrapper = mount( - - - - ); - - const inputs = wrapper.find('input'); - expect(inputs.length).toBe(1); - expect(inputs.at(0).props().type).toBe('text'); - expect(inputs.at(0).props().value).toBe('foo'); - }); - - it('should be enabled by default', () => { - const core = initCore(schema, uischema2, data); - wrapper = mount( - - - - ); - const inputs = wrapper.find('input'); - expect(inputs.first().props().disabled).toBeFalsy(); - }); - - it('can be invisible', () => { - const core = initCore(schema, uischema2, data); - wrapper = mount( - - - - ); - const inputs = wrapper.find('input'); - expect(inputs.length).toBe(0); - }); - - it('should be visible by default', () => { - const core = initCore(schema, uischema2, data); - wrapper = mount( - - - - ); - const inputs = wrapper.find('input'); - expect(inputs.first().props().hidden).toBeFalsy(); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialOneOfEnumCell.test.tsx b/packages/material-renderers/test/renderers/MaterialOneOfEnumCell.test.tsx deleted file mode 100644 index d625045bee..0000000000 --- a/packages/material-renderers/test/renderers/MaterialOneOfEnumCell.test.tsx +++ /dev/null @@ -1,96 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import * as React from 'react'; -import { ControlElement } from '@jsonforms/core'; -import MaterialOneOfEnumCell, { - materialOneOfEnumCellTester, -} from '../../src/cells/MaterialOneOfEnumCell'; -import { materialRenderers } from '../../src'; - -import Enzyme, { mount } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonFormsStateProvider } from '@jsonforms/react'; -import { initCore } from './util'; - -Enzyme.configure({ adapter: new Adapter() }); - -const data = { country: 'AU' }; -const schema = { - type: 'string', - oneOf: [ - { - const: 'AU', - title: 'Australia', - }, - { - const: 'NZ', - title: 'New Zealand', - }, - ], -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/country', -}; - -describe('Material one of enum cell tester', () => { - it('should succeed with matching prop type', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/country', - }; - expect( - materialOneOfEnumCellTester( - control, - { - type: 'object', - properties: { - country: schema, - }, - }, - undefined - ) - ).toBe(2); - }); -}); - -describe('Material enum cell', () => { - it('should select an item from dropdown list', () => { - const core = initCore(schema, uischema, data); - const wrapper = mount( - - - - ); - const input = wrapper.find('input'); - expect(input.props().value).toBe('AU'); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialOneOfRadioGroupControl.test.tsx b/packages/material-renderers/test/renderers/MaterialOneOfRadioGroupControl.test.tsx deleted file mode 100644 index 61045a3b45..0000000000 --- a/packages/material-renderers/test/renderers/MaterialOneOfRadioGroupControl.test.tsx +++ /dev/null @@ -1,106 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import * as React from 'react'; -import { ControlElement, NOT_APPLICABLE } from '@jsonforms/core'; -import MaterialOneOfRadioGroupControl, { - materialOneOfRadioGroupControlTester, -} from '../../src/controls/MaterialOneOfRadioGroupControl'; -import { materialRenderers } from '../../src'; -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonFormsStateProvider } from '@jsonforms/react'; -import { initCore } from './util'; -Enzyme.configure({ adapter: new Adapter() }); - -const oneOfSchema = { - type: 'object', - properties: { - foo: { - type: 'string', - oneOf: [ - { const: 'A', title: 'Option A' }, - { const: 'B' }, - { const: 'C', title: 'Option C' }, - ], - }, - }, -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - format: 'radio', - }, -}; - -describe('Material oneof radio group tester', () => { - it('should return valid rank for oneof enums with radio format', () => { - const rank = materialOneOfRadioGroupControlTester( - uischema, - oneOfSchema, - undefined - ); - expect(rank).not.toBe(NOT_APPLICABLE); - }); - - it('should return NOT_APPLICABLE for enums without radio format', () => { - const uiSchemaNoRadio = { - type: 'Control', - scope: '#/properties/foo', - }; - const rank = materialOneOfRadioGroupControlTester( - uiSchemaNoRadio, - oneOfSchema, - undefined - ); - expect(rank).toBe(NOT_APPLICABLE); - }); -}); - -describe('Material oneof radio group control', () => { - let wrapper: ReactWrapper; - - afterEach(() => wrapper.unmount()); - - it('should render oneOf schemas ', () => { - const core = initCore(oneOfSchema, uischema, { foo: 'B' }); - - wrapper = mount( - - - - ); - const inputs = wrapper.find('input[type="radio"]'); - expect(inputs.length).toBe(3); - const currentlyChecked = inputs.find('[checked=true]'); - expect(currentlyChecked.length).toBe(1); - expect(currentlyChecked.first().props().value).toBe('B'); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialOneOfRenderer.test.tsx b/packages/material-renderers/test/renderers/MaterialOneOfRenderer.test.tsx deleted file mode 100644 index 765967e93d..0000000000 --- a/packages/material-renderers/test/renderers/MaterialOneOfRenderer.test.tsx +++ /dev/null @@ -1,602 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import Dialog from '@mui/material/Dialog'; - -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { ControlElement } from '@jsonforms/core'; -import { MaterialOneOfRenderer, materialRenderers } from '../../src'; -import { - JsonForms, - JsonFormsDispatch, - JsonFormsStateProvider, -} from '@jsonforms/react'; -import { Tab } from '@mui/material'; -import { initCore, TestEmitter } from './util'; - -Enzyme.configure({ adapter: new Adapter() }); - -const waitForAsync = () => new Promise((resolve) => setTimeout(resolve, 0)); - -const clickAddButton = (wrapper: ReactWrapper, times: number) => { - // click add button - const buttons = wrapper.find('button'); - const addButton = buttons.at(2); - for (let i = 0; i < times; i++) { - addButton.simulate('click'); - } - wrapper.update(); -}; - -const selectOneOfTab = ( - wrapper: ReactWrapper, - at: number, - expectConfim: boolean -) => { - // select oneOf - const buttons = wrapper.find('button'); - buttons.at(at).simulate('click'); - wrapper.update(); - - if (expectConfim) { - // confirm dialog - const confirmButton = wrapper.find(Dialog).last().find('button').at(1); - confirmButton.simulate('click'); - wrapper.update(); - } else { - expect(wrapper.find(Dialog).last().find('button').at(1).exists()).toBe( - false - ); - } -}; - -describe('Material oneOf renderer', () => { - let wrapper: ReactWrapper; - - afterEach(() => wrapper.unmount()); - - it('should render and select first tab by default', () => { - const schema = { - type: 'object', - properties: { - value: { - oneOf: [ - { - title: 'String', - type: 'string', - }, - { - title: 'Number', - type: 'number', - }, - ], - }, - }, - }; - const uischema: ControlElement = { - type: 'Control', - label: 'Value', - scope: '#/properties/value', - }; - const core = initCore(schema, uischema, { data: undefined }); - wrapper = mount( - - - - ); - - const firstTab = wrapper.find(Tab).first(); - expect(firstTab.html()).toContain('Mui-selected'); - }); - - it('should render and select second tab due to datatype', () => { - const schema = { - type: 'object', - properties: { - value: { - oneOf: [ - { - title: 'String', - type: 'string', - }, - { - title: 'Number', - type: 'number', - }, - ], - }, - }, - }; - const uischema: ControlElement = { - type: 'Control', - label: 'Value', - scope: '#/properties/value', - }; - const data = { - value: 5, - }; - wrapper = mount( - - ); - expect(wrapper.find(MaterialOneOfRenderer).length).toBeTruthy(); - - const secondTab = wrapper.find(Tab).at(1); - expect(secondTab.html()).toContain('Mui-selected'); - }); - - it('should render and select second tab due to schema with additionalProperties', () => { - const schema = { - type: 'object', - properties: { - value: { - oneOf: [ - { - title: 'String', - type: 'object', - properties: { - foo: { type: 'string' }, - }, - additionalProperties: false, - }, - { - title: 'Number', - type: 'object', - properties: { - bar: { type: 'string' }, - }, - additionalProperties: false, - }, - ], - }, - }, - }; - const uischema: ControlElement = { - type: 'Control', - label: 'Value', - scope: '#/properties/value', - }; - const data = { - value: { bar: 'bar' }, - }; - wrapper = mount( - - ); - expect(wrapper.find(MaterialOneOfRenderer).length).toBeTruthy(); - - const secondTab = wrapper.find(Tab).at(1); - expect(secondTab.html()).toContain('Mui-selected'); - }); - - it('should render and select second tab due to schema with required', () => { - const schema = { - type: 'object', - properties: { - value: { - oneOf: [ - { - title: 'String', - type: 'object', - properties: { - foo: { type: 'string' }, - }, - required: ['foo'], - }, - { - title: 'Number', - type: 'object', - properties: { - bar: { type: 'string' }, - }, - required: ['bar'], - }, - ], - }, - }, - }; - const uischema: ControlElement = { - type: 'Control', - label: 'Value', - scope: '#/properties/value', - }; - const data = { - value: { bar: 'bar' }, - }; - wrapper = mount( - - ); - expect(wrapper.find(MaterialOneOfRenderer).length).toBeTruthy(); - - const secondTab = wrapper.find(Tab).at(1); - expect(secondTab.html()).toContain('Mui-selected'); - }); - - it('should add an item at correct path', (done) => { - const schema = { - type: 'object', - properties: { - value: { - oneOf: [ - { - title: 'String', - type: 'string', - }, - { - title: 'Number', - type: 'number', - }, - ], - }, - }, - }; - const uischema: ControlElement = { - type: 'Control', - label: 'Value', - scope: '#/properties/value', - }; - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - { - onChangeData.data = data; - }} - /> - ); - expect(wrapper.find(MaterialOneOfRenderer).length).toBeTruthy(); - - const input = wrapper.find('input').first(); - input.simulate('change', { target: { value: 'test' } }); - wrapper.update(); - setTimeout(() => { - expect(onChangeData.data).toEqual({ - value: 'test', - }); - done(); - }, 1000); - }); - - it('should add an item within an array', async () => { - const schema = { - type: 'object', - properties: { - thingOrThings: { - oneOf: [ - { - $ref: '#/definitions/thing', - }, - { - $ref: '#/definitions/thingArray', - }, - ], - }, - }, - definitions: { - thing: { - title: 'Thing', - type: 'string', - }, - thingArray: { - title: 'Things', - type: 'array', - items: { - $ref: '#/definitions/thing', - }, - }, - }, - }; - const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/thingOrThings', - }; - - const core = initCore(schema, uischema, { data: {} }); - - wrapper = mount( - - - - ); - - await waitForAsync(); - - wrapper.update(); - - selectOneOfTab(wrapper, 1, false); - const nrOfRowsBeforeAdd = wrapper.find('tr'); - clickAddButton(wrapper, 2); - const nrOfRowsAfterAdd = wrapper.find('tr'); - - // 1 header row + no data row - expect(nrOfRowsBeforeAdd.length).toBe(2); - // 1 header row + 2 data rows (one is replacing the 'No data' one) - expect(nrOfRowsAfterAdd.length).toBe(3); - }); - - it('should add an object within an array', async () => { - const schema = { - type: 'object', - properties: { - thingOrThings: { - oneOf: [ - { - title: 'Thing', - type: 'object', - properties: { - thing: { - $ref: '#/definitions/thing', - }, - }, - }, - { - $ref: '#/definitions/thingArray', - }, - ], - }, - }, - definitions: { - thing: { - title: 'Thing', - type: 'string', - }, - thingArray: { - title: 'Things', - type: 'array', - items: { - $ref: '#/definitions/thing', - }, - }, - }, - }; - const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/thingOrThings', - }; - - const core = initCore(schema, uischema, {}); - const onChangeData: any = { - data: undefined, - }; - - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - - await waitForAsync(); - - wrapper.update(); - - selectOneOfTab(wrapper, 1, false); - const nrOfRowsBeforeAdd = wrapper.find('tr'); - clickAddButton(wrapper, 2); - const nrOfRowsAfterAdd = wrapper.find('tr'); - - // 1 header row + no data row - expect(nrOfRowsBeforeAdd.length).toBe(2); - // 1 header row + 2 data rows (one is replacing the 'No data' one) - expect(nrOfRowsAfterAdd.length).toBe(3); - expect(onChangeData.data).toEqual({ - thingOrThings: ['', ''], - }); - }); - - it('should switch to array based oneOf subschema, then switch back, then edit', async () => { - const schema = { - type: 'object', - properties: { - thingOrThings: { - oneOf: [ - { - title: 'Thing', - type: 'object', - properties: { - thing: { - $ref: '#/definitions/thing', - }, - }, - }, - { - $ref: '#/definitions/thingArray', - }, - ], - }, - }, - definitions: { - thing: { - title: 'Thing', - type: 'string', - }, - thingArray: { - title: 'Things', - type: 'array', - items: { - $ref: '#/definitions/thing', - }, - }, - }, - }; - const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/thingOrThings', - }; - - const core = initCore(schema, uischema, {}); - const onChangeData: any = { - data: undefined, - }; - - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - - await waitForAsync(); - - wrapper.update(); - - selectOneOfTab(wrapper, 1, false); - clickAddButton(wrapper, 2); - selectOneOfTab(wrapper, 0, true); - - const input = wrapper.find('input').first(); - input.simulate('change', { target: { value: 'test' } }); - wrapper.update(); - - let done: (value: undefined) => void; - const donePromise = new Promise((resolve) => { - done = resolve; - }); - setTimeout(() => { - expect(onChangeData.data).toEqual({ - thingOrThings: { thing: 'test' }, - }); - done(undefined); - }, 1000); - return donePromise; - }); - - it('should show confirm dialog when data is not an empty object', async () => { - const schema = { - type: 'object', - properties: { - value: { - oneOf: [ - { - title: 'String', - type: 'string', - }, - { - title: 'Number', - type: 'number', - }, - ], - }, - }, - }; - - const uischema: ControlElement = { - type: 'Control', - label: 'Value', - scope: '#/properties/value', - }; - - const data = { - value: 'Foo Bar', - }; - wrapper = mount( - - ); - expect(wrapper.find(MaterialOneOfRenderer).length).toBeTruthy(); - - await waitForAsync(); - wrapper.update(); - selectOneOfTab(wrapper, 1, true); - }); - - it('should be hideable', () => { - const schema = { - type: 'object', - properties: { - value: { - oneOf: [ - { - title: 'String', - type: 'string', - }, - { - title: 'Number', - type: 'number', - }, - ], - }, - }, - }; - const uischema: ControlElement = { - type: 'Control', - label: 'Value', - scope: '#/properties/value', - }; - const core = initCore(schema, uischema, { data: undefined }); - wrapper = mount( - - - - ); - const inputs = wrapper.find('input'); - expect(inputs.length).toBe(0); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialRadioGroupControl.test.tsx b/packages/material-renderers/test/renderers/MaterialRadioGroupControl.test.tsx deleted file mode 100644 index edeead66f4..0000000000 --- a/packages/material-renderers/test/renderers/MaterialRadioGroupControl.test.tsx +++ /dev/null @@ -1,133 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import * as React from 'react'; -import { ControlElement, NOT_APPLICABLE } from '@jsonforms/core'; -import MaterialRadioGroupControl, { - materialRadioGroupControlTester, -} from '../../src/controls/MaterialRadioGroupControl'; -import { materialRenderers } from '../../src'; -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonFormsStateProvider } from '@jsonforms/react'; -import { initCore } from './util'; -Enzyme.configure({ adapter: new Adapter() }); - -const data = { foo: 'D' }; -const schema = { - type: 'object', - properties: { - foo: { - type: 'string', - enum: ['A', 'B', 'C', 'D'], - }, - }, -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - format: 'radio', - }, -}; - -describe('Material radio group tester', () => { - it('should return valid rank for enums with radio format', () => { - const rank = materialRadioGroupControlTester(uischema, schema, undefined); - expect(rank).not.toBe(NOT_APPLICABLE); - }); - - it('should return NOT_APPLICABLE for enums without radio format', () => { - const uiSchemaNoRadio = { - type: 'Control', - scope: '#/properties/foo', - }; - const rank = materialRadioGroupControlTester( - uiSchemaNoRadio, - schema, - undefined - ); - expect(rank).toBe(NOT_APPLICABLE); - }); -}); - -describe('Material radio group control', () => { - let wrapper: ReactWrapper; - - afterEach(() => wrapper.unmount()); - - it('should have option selected', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const radioButtons = wrapper.find('input[type="radio"]'); - const currentlyChecked = wrapper.find('input[type="radio"][checked=true]'); - expect(radioButtons.length).toBe(4); - expect(currentlyChecked.first().props().value).toBe('D'); - }); - - it('should have only update selected option ', () => { - const core = initCore(schema, uischema, data); - - core.data = { ...core.data, foo: 'A' }; - core.data = { ...core.data, foo: 'B' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - - wrapper = mount( - - - - ); - const currentlyChecked = wrapper.find('input[type="radio"][checked=true]'); - expect(currentlyChecked.length).toBe(1); - expect(currentlyChecked.first().props().value).toBe('B'); - }); - - it('should be hideable ', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const radioButtons = wrapper.find('input[type="radio"]'); - expect(radioButtons.length).toBe(0); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialSliderControl.test.tsx b/packages/material-renderers/test/renderers/MaterialSliderControl.test.tsx deleted file mode 100644 index 8f6f1f5b71..0000000000 --- a/packages/material-renderers/test/renderers/MaterialSliderControl.test.tsx +++ /dev/null @@ -1,460 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import * as React from 'react'; -import { ControlElement, JsonSchema, NOT_APPLICABLE } from '@jsonforms/core'; -import SliderControl, { - materialSliderControlTester, -} from '../../src/controls/MaterialSliderControl'; -import { materialRenderers } from '../../src'; -import { Slider } from '@mui/material'; - -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonForms, JsonFormsStateProvider } from '@jsonforms/react'; -import { initCore } from './util'; - -Enzyme.configure({ adapter: new Adapter() }); - -const data: any = { foo: 5 }; -const schema = { - type: 'object', - properties: { - foo: { - type: 'number', - maximum: 10, - minimum: 2, - default: 6, - }, - }, -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - slider: true, - }, -}; - -describe('Material slider tester', () => { - it('should fail', () => { - expect(materialSliderControlTester(undefined, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect(materialSliderControlTester(null, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect( - materialSliderControlTester({ type: 'Foo' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - expect( - materialSliderControlTester({ type: 'Control' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - }); - - it('should fail with wrong schema type', () => { - expect( - materialSliderControlTester( - uischema, - { - type: 'object', - properties: { - foo: { type: 'string' }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should fail if only sibling has correct prop type', () => { - expect( - materialSliderControlTester( - uischema, - { - type: 'object', - properties: { - foo: { type: 'string' }, - bar: { type: 'number' }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should fail if maximum and minimum are missing', () => { - expect( - materialSliderControlTester( - uischema, - { - type: 'object', - properties: { - foo: { type: 'number' }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should fail if maximum is missing', () => { - expect( - materialSliderControlTester( - uischema, - { - type: 'object', - properties: { - foo: { - type: 'number', - minimum: 2, - }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should fail if minimum is missing', () => { - expect( - materialSliderControlTester( - uischema, - { - type: 'object', - properties: { - foo: { - type: 'number', - maximum: 10, - }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should fail is default is missing', () => { - expect( - materialSliderControlTester( - uischema, - { - type: 'object', - properties: { - foo: { - type: 'number', - maximum: 10, - minimum: 2, - }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should succeed with number type', () => { - expect( - materialSliderControlTester( - uischema, - { - type: 'object', - properties: { - foo: { - type: 'number', - maximum: 10, - minimum: 2, - default: 6, - }, - }, - }, - undefined - ) - ).toBe(4); - }); - - it('should succeed with integer type', () => { - expect( - materialSliderControlTester( - uischema, - { - type: 'object', - properties: { - foo: { - type: 'integer', - maximum: 10, - minimum: 2, - default: 6, - }, - }, - }, - undefined - ) - ).toBe(4); - }); -}); - -describe('Material slider control', () => { - let wrapper: ReactWrapper; - - afterEach(() => wrapper.unmount()); - - it('should render', () => { - const jsonSchema: JsonSchema = { - type: 'object', - properties: { - foo: { - type: 'number', - maximum: 10, - minimum: 2, - default: 6, - }, - }, - }; - const core = initCore(jsonSchema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find(Slider).first(); - expect(input.props().value).toBe(5); - }); - - it('should update via action', () => { - let data = { - foo: 3, - }; - wrapper = mount( - - ); - expect(wrapper.find(SliderControl).length).toBeTruthy(); - let slider = wrapper.find(Slider).first(); - expect(slider.props().value).toBe(3); - data = { ...data, foo: 4 }; - wrapper.setProps({ data: data }); - wrapper.update(); - slider = wrapper.find(Slider).first(); - expect(slider.props().value).toBe(4); - }); - - it('should honor multipleOf', () => { - const schemaWithMultipleOf = { - type: 'object', - properties: { - foo: { - type: 'number', - maximum: 10, - minimum: 2, - default: 6, - multipleOf: 2, - }, - }, - }; - const data = { - foo: 6, - }; - wrapper = mount( - - ); - expect(wrapper.find(SliderControl).length).toBeTruthy(); - const input = wrapper.find(Slider).first(); - expect(input.props().step).toBe(2); - }); - - it('should not update with undefined value', () => { - wrapper = mount( - - ); - expect(wrapper.find(SliderControl).length).toBeTruthy(); - const newData = { ...data, foo: undefined }; - wrapper.setProps({ data: newData }); - wrapper.update(); - const input = wrapper.find(Slider); - expect(input.props().value).toBe(schema.properties.foo.default); - }); - - it('should not update with null value', () => { - wrapper = mount( - - ); - expect(wrapper.find(SliderControl).length).toBeTruthy(); - const newData = { ...data, foo: null }; - wrapper.setProps({ data: newData }); - wrapper.update(); - const slider = wrapper.find(Slider).first(); - expect(slider.props().value).toBe(schema.properties.foo.default); - }); - - it('should not update with wrong ref', () => { - wrapper = mount( - - ); - expect(wrapper.find(SliderControl).length).toBeTruthy(); - const newData = { ...data, bar: 11 }; - wrapper.setProps({ data: newData }); - wrapper.update(); - const input = wrapper.find(Slider).first(); - expect(input.props().value).toBe(5); - }); - - it('should not update with null ref', () => { - wrapper = mount( - - ); - expect(wrapper.find(SliderControl).length).toBeTruthy(); - const newData = { ...data, null: 3 }; - wrapper.setProps({ data: newData }); - wrapper.update(); - const input = wrapper.find(Slider).first(); - expect(input.props().value).toBe(5); - }); - - it('should not update with undefined ref', () => { - wrapper = mount( - - ); - expect(wrapper.find(SliderControl).length).toBeTruthy(); - const newData = { ...data, undefined: 13 }; - wrapper.setProps({ data: newData }); - wrapper.update(); - const input = wrapper.find(Slider).first(); - expect(input.props().value).toBe(5); - }); - - it('can be disabled', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find(Slider).first(); - expect(input.props().disabled).toBeTruthy(); - }); - - it('should be enabled by default', () => { - wrapper = mount( - - ); - expect(wrapper.find(SliderControl).length).toBeTruthy(); - const input = wrapper.find(Slider).first(); - expect(input.props().disabled).toBeFalsy(); - }); - - it('should render id and input id', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const divs = wrapper.find('div'); - // id - expect(divs.find((d: any) => d.id === '#/properties/foo')).toBeDefined(); - // input id - expect( - divs.find((d: any) => d.id === '#/properties/foo-input') - ).toBeDefined(); - }); - - it('should be hideable', () => { - const jsonSchema: JsonSchema = { - type: 'object', - properties: { - foo: { - type: 'number', - maximum: 10, - minimum: 2, - default: 6, - }, - }, - }; - const core = initCore(schema, uischema, { foo: 5 }); - wrapper = mount( - - - - ); - - const inputs = wrapper.find(Slider); - expect(inputs.length).toBe(0); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialTableControl.test.tsx b/packages/material-renderers/test/renderers/MaterialTableControl.test.tsx deleted file mode 100644 index 8e5d01a958..0000000000 --- a/packages/material-renderers/test/renderers/MaterialTableControl.test.tsx +++ /dev/null @@ -1,228 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { JsonSchema7 } from '@jsonforms/core'; -import * as React from 'react'; - -import { materialCells, materialRenderers } from '../../src'; -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonForms } from '@jsonforms/react'; -import { FormHelperText } from '@mui/material'; - -Enzyme.configure({ adapter: new Adapter() }); - -const dataWithEmptyMessage = { - nested: [ - { - message: '', - }, - ], -}; - -const dataWithNullMessage = { - nested: [ - { - message: null as string | null, - }, - ], -}; - -const dataWithUndefinedMessage = { - nested: [ - { - message: undefined as string | undefined, - }, - ], -}; - -const schemaWithMinLength: JsonSchema7 = { - type: 'object', - properties: { - nested: { - type: 'array', - items: { - type: 'object', - properties: { - message: { type: 'string', minLength: 3 }, - done: { type: 'boolean' }, - }, - }, - }, - }, -}; - -const schemaWithRequired: JsonSchema7 = { - type: 'object', - properties: { - nested: { - type: 'array', - items: { - type: 'object', - properties: { - message: { type: 'string' }, - done: { type: 'boolean' }, - }, - required: ['message'], - }, - }, - }, -}; - -const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/nested', - }, - ], -}; - -describe('Material table control', () => { - let wrapper: ReactWrapper; - - const validSchemaDataPairs = [ - { - schema: schemaWithRequired, - data: dataWithEmptyMessage, - }, - { - schema: schemaWithMinLength, - data: dataWithUndefinedMessage, - }, - ]; - - const invalidSchemaDataPairs = [ - { - schema: schemaWithRequired, - data: dataWithNullMessage, - message: 'must be string', - }, - { - schema: schemaWithRequired, - data: dataWithUndefinedMessage, - message: "must have required property 'message'", - }, - { - schema: schemaWithMinLength, - data: dataWithEmptyMessage, - message: 'must NOT have fewer than 3 characters', - }, - ]; - - afterEach(() => wrapper.unmount()); - - it.each(invalidSchemaDataPairs)( - 'should show error message for invalid property with validation mode ValidateAndShow', - ({ schema, data, message }) => { - wrapper = mount( - - ); - const messageFormHelperText = wrapper.find(FormHelperText).at(0); - expect(messageFormHelperText.text()).toBe(message); - expect(messageFormHelperText.props().error).toBe(true); - - const doneFormHelperText = wrapper.find(FormHelperText).at(1); - expect(doneFormHelperText.text()).toBe(''); - expect(doneFormHelperText.props().error).toBe(false); - } - ); - - it.each(invalidSchemaDataPairs)( - 'should not show error message for invalid property with validation mode ValidateAndHide', - ({ schema, data }) => { - wrapper = mount( - - ); - const messageFormHelperText = wrapper.find(FormHelperText).at(0); - expect(messageFormHelperText.text()).toBe(''); - expect(messageFormHelperText.props().error).toBe(false); - - const doneFormHelperText = wrapper.find(FormHelperText).at(1); - expect(doneFormHelperText.text()).toBe(''); - expect(doneFormHelperText.props().error).toBe(false); - } - ); - - it.each(invalidSchemaDataPairs)( - 'should not show error message for invalid property with validation mode NoValidation', - ({ schema, data }) => { - wrapper = mount( - - ); - const messageFormHelperText = wrapper.find(FormHelperText).at(0); - expect(messageFormHelperText.text()).toBe(''); - expect(messageFormHelperText.props().error).toBe(false); - - const doneFormHelperText = wrapper.find(FormHelperText).at(1); - expect(doneFormHelperText.text()).toBe(''); - expect(doneFormHelperText.props().error).toBe(false); - } - ); - - it.each(validSchemaDataPairs)( - 'should not show error message for valid property', - ({ schema, data }) => { - wrapper = mount( - - ); - const messageFormHelperText = wrapper.find(FormHelperText).at(0); - expect(messageFormHelperText.text()).toBe(''); - expect(messageFormHelperText.props().error).toBe(false); - - const doneFormHelperText = wrapper.find(FormHelperText).at(1); - expect(doneFormHelperText.text()).toBe(''); - expect(doneFormHelperText.props().error).toBe(false); - } - ); -}); diff --git a/packages/material-renderers/test/renderers/MaterialTextCell.test.tsx b/packages/material-renderers/test/renderers/MaterialTextCell.test.tsx deleted file mode 100644 index 8368e5b60d..0000000000 --- a/packages/material-renderers/test/renderers/MaterialTextCell.test.tsx +++ /dev/null @@ -1,597 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import * as React from 'react'; -import { ControlElement, JsonSchema, NOT_APPLICABLE } from '@jsonforms/core'; -import TextCell, { - materialTextCellTester, -} from '../../src/cells/MaterialTextCell'; -import { materialRenderers } from '../../src'; - -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonFormsStateProvider } from '@jsonforms/react'; -import { initCore, TestEmitter } from './util'; - -Enzyme.configure({ adapter: new Adapter() }); - -const DEFAULT_MAX_LENGTH = 524288; -const DEFAULT_SIZE = 20; - -const data = { name: 'Foo' }; -const minLengthSchema = { - type: 'string', - minLength: 3, -}; -const maxLengthSchema = { - type: 'string', - maxLength: 5, -}; -const schema = { type: 'string' }; - -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/name', -}; - -describe('Material text cell tester', () => { - it('should fail', () => { - expect(materialTextCellTester(undefined, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect(materialTextCellTester(null, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect(materialTextCellTester({ type: 'Foo' }, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect( - materialTextCellTester({ type: 'Control' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - }); - it('should fail with wrong schema type', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - }; - expect( - materialTextCellTester( - control, - { - type: 'object', - properties: { - foo: { - type: 'number', - }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should fail if only sibling has correct type', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - }; - expect( - materialTextCellTester( - control, - { - type: 'object', - properties: { - foo: { - type: 'number', - }, - bar: { - type: 'string', - }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should succeed with matching prop type', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - }; - expect( - materialTextCellTester( - control, - { - type: 'object', - properties: { - foo: { - type: 'string', - }, - }, - }, - undefined - ) - ).toBe(1); - }); -}); - -describe('Material text cell', () => { - let wrapper: ReactWrapper; - - afterEach(() => wrapper.unmount()); - - it('should autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/name', - options: { focus: true }, - }; - const core = initCore(minLengthSchema, control, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeTruthy(); - }); - - it('should not autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/name', - options: { focus: false }, - }; - const core = initCore(schema, control, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeFalsy(); - }); - - it('should not autofocus by default', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/name', - }; - const core = initCore(minLengthSchema, control, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(document.activeElement).not.toBe(input); - }); - - it('should render', () => { - const jsonSchema: JsonSchema = { - type: 'object', - properties: { - name: { type: 'string' }, - }, - }; - const core = initCore(minLengthSchema, uischema, { name: 'Foo' }); - wrapper = mount( - - - - ); - - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('Foo'); - }); - - it('should update via input event', (done) => { - const core = initCore(minLengthSchema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - - const input = wrapper.find('input').first(); - input.simulate('change', { target: { value: 'Bar' } }); - setTimeout(() => { - expect(onChangeData.data.name).toBe('Bar'); - done(); - }, 1000); - }); - - it('should update via action', (done) => { - const core = initCore(minLengthSchema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, name: 'Bar' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('Bar'); - done(); - }, 1000); - }); - - it('should update with undefined value', (done) => { - const core = initCore(minLengthSchema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, name: undefined }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(''); - done(); - }, 1000); - }); - - it('should update with null value', (done) => { - const core = initCore(minLengthSchema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, name: null }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(''); - done(); - }, 1000); - }); - - it('should not update if wrong ref', (done) => { - const core = initCore(minLengthSchema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, firstname: 'Bar' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('Foo'); - done(); - }, 1000); - }); - - it('should not update if null ref', (done) => { - const core = initCore(minLengthSchema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, null: 'Bar' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('Foo'); - done(); - }, 1000); - }); - - it('should not update if undefined ref', (done) => { - const core = initCore(minLengthSchema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, undefined: 'Bar' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('Foo'); - done(); - }, 1000); - }); - - it('can be disabled', () => { - const core = initCore(minLengthSchema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeTruthy(); - }); - - it('should be enabled by default', () => { - const core = initCore(minLengthSchema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeFalsy(); - }); - - it('should use maxLength for size and maxlength attributes', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/name', - options: { - trim: true, - restrict: true, - }, - }; - const core = initCore(maxLengthSchema, control, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().maxLength).toBe(5); - expect(input.parent().props().width).not.toBe('100%'); - expect(input.props().size).toBe(5); - }); - - it('should use maxLength for size attribute', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/name', - options: { trim: true }, - }; - const core = initCore(maxLengthSchema, control, data); - wrapper = mount( - - - - ); - const input = wrapper - .find('input') - .first() - .getDOMNode() as HTMLInputElement; - expect(input.maxLength).toBe(DEFAULT_MAX_LENGTH); - expect( - getComputedStyle(input.parentElement, null).getPropertyValue('width') - ).not.toBe('100%'); - expect(input.size).toBe(5); - }); - - it('should use maxLength for maxlength attribute', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/name', - options: { restrict: true }, - }; - const core = initCore(maxLengthSchema, control, data); - wrapper = mount( - - - - ); - const input = wrapper - .find('input') - .first() - .getDOMNode() as HTMLInputElement; - expect(input.maxLength).toBe(5); - expect( - getComputedStyle(input.parentElement, null).getPropertyValue('width') - ).toBe('100%'); - expect(input.size).toBe(DEFAULT_SIZE); - }); - - it('should not use maxLength by default', () => { - const core = initCore(maxLengthSchema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper - .find('input') - .first() - .getDOMNode() as HTMLInputElement; - expect(input.maxLength).toBe(DEFAULT_MAX_LENGTH); - expect( - getComputedStyle(input.parentElement, null).getPropertyValue('width') - ).toBe('100%'); - expect(input.size).toBe(DEFAULT_SIZE); - }); - - it('should have default values for trim and restrict', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/name', - options: { - trim: true, - restrict: true, - }, - }; - const core = initCore(schema, control, data); - wrapper = mount( - - - - ); - const input = wrapper - .find('input') - .first() - .getDOMNode() as HTMLInputElement; - expect(input.maxLength).toBe(DEFAULT_MAX_LENGTH); - - expect(input.parentElement.classList.contains('MuiInputBase-fullWidth')) - .toBeTruthy; - expect(input.size).toBe(DEFAULT_SIZE); - }); - - it('should have a default value for trim', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/name', - options: { trim: true }, - }; - const core = initCore(schema, control, data); - wrapper = mount( - - - - ); - - const input = wrapper - .find('input') - .first() - .getDOMNode() as HTMLInputElement; - expect(input.maxLength).toBe(DEFAULT_MAX_LENGTH); - expect(input.parentElement.classList.contains('MuiInputBase-fullWidth')) - .toBeTruthy; - expect(input.size).toBe(DEFAULT_SIZE); - }); - - it('should have default values for restrict', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/name', - options: { restrict: true }, - }; - const core = initCore(schema, control, data); - wrapper = mount( - - - - ); - - const input = wrapper - .find('input') - .first() - .getDOMNode() as HTMLInputElement; - expect(input.maxLength).toBe(DEFAULT_MAX_LENGTH); - expect(input.parentElement.classList.contains('MuiInputBase-fullWidth')) - .toBeTruthy; - expect(input.size).toBe(DEFAULT_SIZE); - }); - - it('should have default values for attributes', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper - .find('input') - .first() - .getDOMNode() as HTMLInputElement; - expect(input.maxLength).toBe(DEFAULT_MAX_LENGTH); - expect(input.parentElement.classList.contains('MuiInputBase-fullWidth')) - .toBeTruthy; - expect(input.size).toBe(DEFAULT_SIZE); - }); - - it('should be disabled', () => { - const core = initCore(minLengthSchema, uischema, data); - wrapper = mount( - - - - ); - - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBe(true); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialTextControl.test.tsx b/packages/material-renderers/test/renderers/MaterialTextControl.test.tsx deleted file mode 100644 index 897536db47..0000000000 --- a/packages/material-renderers/test/renderers/MaterialTextControl.test.tsx +++ /dev/null @@ -1,121 +0,0 @@ -/* - The MIT License - - Copyright (c) 2018-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import { MaterialTextControl } from '../../src/controls/MaterialTextControl'; -import { MaterialInputControl } from '../../src/controls/MaterialInputControl'; -import { MuiInputText } from '../../src/mui-controls/MuiInputText'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { ControlElement, ControlProps } from '@jsonforms/core'; -import { InputAdornment, OutlinedInput } from '@mui/material'; - -Enzyme.configure({ adapter: new Adapter() }); - -const schema = { - type: 'object', - properties: { - foo: { - type: 'string', - }, - }, -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', -}; - -const createMaterialTextControl = (props: ControlProps) => { - return ; -}; - -const defaultControlProps = (): ControlProps => { - return { - // eslint-disable-next-line @typescript-eslint/no-empty-function - handleChange: () => {}, - enabled: true, - visible: true, - path: 'path', - rootSchema: schema, - schema: schema.properties.foo, - uischema: uischema, - label: 'Foo', - id: 'foo-id', - errors: '', - data: '', - }; -}; - -describe('Material text control', () => { - let wrapper: ReactWrapper; - - afterEach(() => { - wrapper.unmount(); - }); - - it('render', () => { - const props = defaultControlProps(); - wrapper = mount(createMaterialTextControl(props)); - expect(wrapper.find(MaterialInputControl).props()).toEqual({ - ...props, - input: MuiInputText, - }); - - expect(wrapper.find('input').props().id).toEqual(`${props.id}-input`); - }); - - it('allows adding of mui input props', () => { - const props = { - ...defaultControlProps(), - muiInputProps: { spellCheck: false }, - }; - wrapper = mount(createMaterialTextControl(props)); - expect(wrapper.find('input').props().spellCheck).toEqual(false); - }); - - it('shows clear button when data exists', () => { - const props = defaultControlProps(); - wrapper = mount(createMaterialTextControl(props)); - // call onPointerEnter prop manually as the tests seem to ignore 'pointerenter' events, 'mouseover' events work however. - wrapper.find(OutlinedInput).props().onPointerEnter?.call(this); - wrapper.update(); - expect(wrapper.find(InputAdornment).props().style).not.toHaveProperty( - 'display', - 'none' - ); - }); - - it('hides clear button when data is undefined', () => { - const props = defaultControlProps(); - delete props.data; - wrapper = mount(createMaterialTextControl(props)); - // call onPointerEnter prop manually as the tests seem to ignore 'pointerenter' events, 'mouseover' events work however. - wrapper.find(OutlinedInput).props().onPointerEnter?.call(this); - wrapper.update(); - expect(wrapper.find(InputAdornment).props().style).toHaveProperty( - 'display', - 'none' - ); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialTimeCell.test.tsx b/packages/material-renderers/test/renderers/MaterialTimeCell.test.tsx deleted file mode 100644 index 74c4a68528..0000000000 --- a/packages/material-renderers/test/renderers/MaterialTimeCell.test.tsx +++ /dev/null @@ -1,366 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import * as React from 'react'; -import { ControlElement, NOT_APPLICABLE } from '@jsonforms/core'; -import TimeCell, { - materialTimeCellTester, -} from '../../src/cells/MaterialTimeCell'; -import { materialRenderers } from '../../src'; - -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonFormsStateProvider } from '@jsonforms/react'; -import { initCore, TestEmitter } from './util'; - -Enzyme.configure({ adapter: new Adapter() }); - -const data = { foo: '13:37' }; - -const schema = { - type: 'string', - format: 'time', -}; - -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', -}; - -describe('Material time cell tester', () => { - it('should fail', () => { - expect(materialTimeCellTester(undefined, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect(materialTimeCellTester(null, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect(materialTimeCellTester({ type: 'Foo' }, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect( - materialTimeCellTester({ type: 'Control' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - }); - - it('should fail with wrong prop type', () => { - expect( - materialTimeCellTester( - uischema, - { - type: 'object', - properties: { - foo: { type: 'string' }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should fail if only sibling prop has correct type', () => { - expect( - materialTimeCellTester( - uischema, - { - type: 'object', - properties: { - foo: { type: 'string' }, - bar: { - type: 'string', - format: 'time', - }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should succeed with correct prop type', () => { - expect( - materialTimeCellTester( - uischema, - { - type: 'object', - properties: { - foo: { - type: 'string', - format: 'time', - }, - }, - }, - undefined - ) - ).toBe(2); - }); -}); - -describe('Material time cell', () => { - let wrapper: ReactWrapper; - - afterEach(() => wrapper.unmount()); - - it('should autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - focus: true, - }, - }; - const core = initCore(schema, control, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeTruthy(); - }); - - it('should not autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - focus: false, - }, - }; - const core = initCore(schema, control, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeFalsy(); - }); - - it('should not autofocus by default', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - }; - const core = initCore(schema, control, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeFalsy(); - }); - - it('should render', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const input = wrapper.find('input').first(); - expect(input.props().type).toBe('time'); - expect(input.props().value).toBe('13:37'); - }); - - it('should update via event', (done) => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - const input = wrapper.find('input').first(); - input.simulate('change', { target: { value: '20:15' } }); - setTimeout(() => { - expect(onChangeData.data.foo).toBe('20:15'); - done(); - }, 1000); - }); - - it('should update via action', (done) => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, foo: '20:15' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('20:15'); - done(); - }, 1000); - }); - - it('should update with null value', (done) => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, foo: null }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(''); - done(); - }, 1000); - }); - - it('update with undefined value', (done) => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, foo: undefined }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(''); - done(); - }, 1000); - }); - - it('should update with wrong ref', (done) => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, bar: 'Bar' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('13:37'); - done(); - }, 1000); - }); - - it('should update with null ref', (done) => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, null: '20:15' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('13:37'); - done(); - }, 1000); - }); - - it('should update with undefined ref', (done) => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, undefined: '20:15' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - setTimeout(() => { - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('13:37'); - done(); - }, 1000); - }); - - it('can be disabled', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeTruthy(); - }); - - it('should be enabled by default', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeFalsy(); - }); -}); diff --git a/packages/material-renderers/test/renderers/MaterialTimeControl.test.tsx b/packages/material-renderers/test/renderers/MaterialTimeControl.test.tsx deleted file mode 100644 index 05c86cd08f..0000000000 --- a/packages/material-renderers/test/renderers/MaterialTimeControl.test.tsx +++ /dev/null @@ -1,426 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { ControlElement, NOT_APPLICABLE } from '@jsonforms/core'; -import MaterialTimeControl, { - materialTimeControlTester, -} from '../../src/controls/MaterialTimeControl'; -import * as React from 'react'; -import { materialRenderers } from '../../src'; - -import Enzyme, { mount, ReactWrapper } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { JsonFormsStateProvider } from '@jsonforms/react'; -import { initCore, TestEmitter } from './util'; - -Enzyme.configure({ adapter: new Adapter() }); - -const data = { foo: '13:37:05' }; -const schema = { - type: 'object', - properties: { - foo: { - type: 'string', - format: 'time', - }, - }, -}; -const uischema: ControlElement = { - type: 'Control', - scope: '#/properties/foo', -}; - -describe('Material time control tester', () => { - test('should fail', () => { - expect(materialTimeControlTester(undefined, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect(materialTimeControlTester(null, undefined, undefined)).toBe( - NOT_APPLICABLE - ); - expect( - materialTimeControlTester({ type: 'Foo' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - expect( - materialTimeControlTester({ type: 'Control' }, undefined, undefined) - ).toBe(NOT_APPLICABLE); - expect( - materialTimeControlTester( - uischema, - { - type: 'object', - properties: { - foo: { type: 'string' }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - expect( - materialTimeControlTester( - uischema, - { - type: 'object', - properties: { - foo: { type: 'string' }, - bar: { - type: 'string', - format: 'time', - }, - }, - }, - undefined - ) - ).toBe(NOT_APPLICABLE); - }); - - it('should succeed', () => { - expect( - materialTimeControlTester( - uischema, - { - type: 'object', - properties: { - foo: { - type: 'string', - format: 'time', - }, - }, - }, - undefined - ) - ).toBe(4); - expect( - materialTimeControlTester( - { ...uischema, options: { format: 'time' } }, - { - type: 'object', - properties: { - foo: { - type: 'string', - }, - }, - }, - undefined - ) - ).toBe(4); - }); -}); - -describe('Material time control', () => { - let wrapper: ReactWrapper; - - afterEach(() => wrapper.unmount()); - - it('should autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - focus: true, - }, - }; - const core = initCore(schema, control, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBe(true); - }); - - it('should not autofocus via option', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - options: { - focus: false, - }, - }; - const core = initCore(schema, control, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeFalsy(); - }); - - it('should not autofocus by default', () => { - const control: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - }; - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().autoFocus).toBeFalsy(); - }); - - it('should render', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - - const input = wrapper.find('input').first(); - expect(input.props().type).toBe('text'); - expect(input.props().value).toBe('13:37'); - }); - - it('should update via event', () => { - const core = initCore(schema, uischema, data); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - const input = wrapper.find('input').first(); - (input.getDOMNode() as HTMLInputElement).value = '08:40'; - input.simulate('blur', input); - expect(onChangeData.data.foo).toBe('08:40:00'); - }); - - it('should update via action', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, foo: '08:40:00' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('08:40'); - }); - - it('should update with null value', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, foo: null }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(''); - }); - - it('should update with undefined value', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, foo: undefined }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe(''); - }); - - it('should not update with wrong ref', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, bar: '08:40' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input'); - expect(input.props().value).toBe('13:37'); - }); - - it('should not update with null ref', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, null: '08:40' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('13:37'); - }); - - it('should not update with undefined ref', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - core.data = { ...core.data, undefined: '08:40' }; - wrapper.setProps({ initState: { renderers: materialRenderers, core } }); - wrapper.update(); - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('13:37'); - }); - - it('can be disabled', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeTruthy(); - }); - - it('should be enabled by default', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - expect(input.props().disabled).toBeFalsy(); - }); - - it('should render input id', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const input = wrapper.find('input').first(); - // there is only input id at the moment - expect(input.props().id).toBe('#/properties/foo-input'); - }); - - it('should be hideable', () => { - const core = initCore(schema, uischema, data); - wrapper = mount( - - - - ); - const inputs = wrapper.find('input'); - expect(inputs.length).toBe(0); - }); - - it('should support format customizations', () => { - const core = initCore(schema, uischema, { foo: '1//2 pm' }); - const onChangeData: any = { - data: undefined, - }; - wrapper = mount( - - { - onChangeData.data = data; - }} - /> - - - ); - - const input = wrapper.find('input').first(); - expect(input.props().value).toBe('02-13'); - - (input.getDOMNode() as HTMLInputElement).value = '12-01'; - input.simulate('blur', input); - expect(onChangeData.data.foo).toBe('1//12 am'); - }); -}); diff --git a/packages/material-renderers/test/renderers/tooltipChecker.tsx b/packages/material-renderers/test/renderers/tooltipChecker.tsx deleted file mode 100644 index 19c660cc35..0000000000 --- a/packages/material-renderers/test/renderers/tooltipChecker.tsx +++ /dev/null @@ -1,70 +0,0 @@ -import { EnzymePropSelector, mount, ReactWrapper } from 'enzyme'; -import { - arrayDefaultTranslations, - ArrayTranslationEnum, - JsonSchema, - UISchemaElement, -} from '@jsonforms/core'; -import { JsonForms } from '@jsonforms/react'; -import { materialRenderers } from '../../src'; -import { Tooltip } from '@mui/material'; -import * as React from 'react'; - -export const checkTooltip = ( - schema: JsonSchema, - uiSchema: UISchemaElement, - wrapper: ReactWrapper, - findTooltipWrapper: ( - wrapper: ReactWrapper - ) => ReactWrapper, - tooltipEnum: ArrayTranslationEnum, - tooltipFilter: EnzymePropSelector | string, - data?: any -): ReactWrapper => { - wrapper = mount( - - ); - - expect( - findTooltipWrapper(wrapper).find(Tooltip).filter(tooltipFilter).props()[ - 'title' - ] - ).toBe( - arrayDefaultTranslations.find((ar) => ar.key == tooltipEnum).default() - ); - return wrapper; -}; - -export const checkTooltipTranslation = ( - schema: JsonSchema, - uiSchema: UISchemaElement, - wrapper: ReactWrapper, - findTooltipWrapper: ( - wrapper: ReactWrapper - ) => ReactWrapper, - tooltipFilter: EnzymePropSelector | string, - data?: any -): ReactWrapper => { - const translate = () => 'Translated'; - wrapper = mount( - - ); - - expect( - findTooltipWrapper(wrapper).find(Tooltip).filter(tooltipFilter).props()[ - 'title' - ] - ).toBe('Translated'); - return wrapper; -}; diff --git a/packages/material-renderers/test/renderers/util.ts b/packages/material-renderers/test/renderers/util.ts deleted file mode 100644 index 9b2092d79f..0000000000 --- a/packages/material-renderers/test/renderers/util.ts +++ /dev/null @@ -1,61 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -import { - createAjv, - JsonFormsCore, - JsonSchema, - TesterContext, - Translator, - UISchemaElement, -} from '@jsonforms/core'; -import { JsonFormsReactProps, useJsonForms } from '@jsonforms/react'; -import React from 'react'; - -export const initCore = ( - schema: JsonSchema, - uischema: UISchemaElement, - data?: any -): JsonFormsCore => { - return { schema, uischema, data, ajv: createAjv() }; -}; - -export const TestEmitter: React.FC = ({ onChange }) => { - const ctx = useJsonForms(); - const { data, errors } = ctx.core; - React.useEffect(() => { - onChange({ data, errors }); - }, [data, errors]); - return null; -}; - -export const createTesterContext = ( - rootSchema: JsonSchema, - config?: any -): TesterContext => { - return { rootSchema, config }; -}; - -export const testTranslator: Translator = (key: string) => 'translator.' + key; diff --git a/packages/material-renderers/tsconfig.json b/packages/material-renderers/tsconfig.json deleted file mode 100644 index 427bc4b996..0000000000 --- a/packages/material-renderers/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "../../tsconfig.base", - "compilerOptions": { - "outDir": "lib", - "sourceMap": true - }, - "exclude": ["node_modules"], - "files": ["./src/index.ts"] -} diff --git a/packages/material-renderers/tsconfig.test.json b/packages/material-renderers/tsconfig.test.json deleted file mode 100644 index e5f8f6e651..0000000000 --- a/packages/material-renderers/tsconfig.test.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "./tsconfig", - "compilerOptions": { - "module": "CommonJS", - "target": "ES5" - } -} diff --git a/packages/material-renderers/webpack/webpack.dev.js b/packages/material-renderers/webpack/webpack.dev.js deleted file mode 100644 index 6087b35b51..0000000000 --- a/packages/material-renderers/webpack/webpack.dev.js +++ /dev/null @@ -1,9 +0,0 @@ -const merge = require('webpack-merge').merge; -const baseConfig = require('../../../webpack/webpack.dev.base.js'); -var copyWebpackPlugin = require('copy-webpack-plugin'); - -module.exports = merge(baseConfig, { - plugins: [ - new copyWebpackPlugin([{ from: '../examples-react/src/logo.svg' }]), - ], -}); diff --git a/packages/react/.eslintrc.js b/packages/react/.eslintrc.js deleted file mode 100644 index 64c535c642..0000000000 --- a/packages/react/.eslintrc.js +++ /dev/null @@ -1,39 +0,0 @@ -/* eslint-env node */ -/** @type {import('eslint').Linter.Config} */ -module.exports = { - root: true, - parser: '@typescript-eslint/parser', - parserOptions: { - ecmaFeatures: { - jsx: true, - }, - }, - // There is no file include in ESLint. Thus, ignore all and include files via negative ignore (!) - ignorePatterns: ['/*', '!/src', '!/test'], - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:import/recommended', - 'plugin:import/typescript', - 'plugin:react/recommended', - 'plugin:prettier/recommended', - ], - rules: { - '@typescript-eslint/no-explicit-any': 'off', - // Base rule must be disabled to avoid incorrect errors - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': [ - 'warn', // or "error" - { - argsIgnorePattern: '^_', - varsIgnorePattern: '^_', - caughtErrorsIgnorePattern: '^_', - }, - ], - }, - settings: { - react: { - version: 'detect', - }, - }, -}; diff --git a/packages/react/.prettierrc.js b/packages/react/.prettierrc.js deleted file mode 100644 index 2c26853c4a..0000000000 --- a/packages/react/.prettierrc.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - $schema: 'http://json.schemastore.org/prettierrc', - singleQuote: true, - jsxSingleQuote: true, - endOfLine: 'auto', -}; diff --git a/packages/react/LICENSE b/packages/react/LICENSE deleted file mode 100644 index 064ca1d9d2..0000000000 --- a/packages/react/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License - -Copyright (c) 2019 EclipseSource Munich -https://github.com/eclipsesource/jsonforms - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/packages/react/README.md b/packages/react/README.md deleted file mode 100644 index c1c49f4484..0000000000 --- a/packages/react/README.md +++ /dev/null @@ -1,134 +0,0 @@ -# JSON Forms - More Forms. Less Code - -_Complex forms in the blink of an eye_ - -JSON Forms eliminates the tedious task of writing fully-featured forms by hand by leveraging the capabilities of JSON, JSON Schema and Javascript. - -## React Package - -This is the JSON Forms React package which provides the necessary bindings for React. It uses [JSON Forms Core](https://github.com/eclipsesource/jsonforms/blob/master/packages/core). - -You can combine the react package with any react-based renderer set you want, for example the [Material Renderers](https://github.com/eclipsesource/jsonforms/tree/master/packages/material-renderers) or the [Vanilla Renderers](https://github.com/eclipsesource/jsonforms/tree/master/packages/vanilla-renderers). - -See the official [documentation](https://jsonforms.io/) and the JSON Forms React [seed repository](https://github.com/eclipsesource/jsonforms-react-seed) for examples on how to integrate JSON Forms with your application. - -Check for all published JSON Forms packages. - -### Usage - -Use the `JsonForms` component to render a form for your data. - -Mandatory props: - -- `data: any` - the data to show -- `renderers: JsonFormsRendererRegistryEntry[]` - the React renderer set to use - -Optional props: - -- `schema: JsonSchema` - the data schema for the given data. Will be generated when not given. -- `uischema: UISchemaElement` - the UI schema for the given data schema. Will be generated when not given. -- `cells: JsonFormsCellRendererRegistryEntry[]` - the React cell renderer set to use -- `config: any` - form-wide options. May contain default ui schema options. -- `readonly: boolean` - whether all controls shall be readonly. -- `uischemas: JsonFormsUiSchemaEntry[]` - registry for dynamic ui schema dispatching -- `validationMode: 'ValidateAndShow' | 'ValidateAndHide' | 'NoValidation'` - the validation mode for the form -- `ajv: AJV` - custom Ajv instance for the form -- `middleware: Middleware` - can be used to hook into the form-wide data management. -- `i18n: JsonFormsI18nState` - can be used to internationalize the rendered form. -- `onChange` - callback which is called initially and on each data change, containing the updated data and the validation result. - -Example: - -```ts -import React, { useState } from 'react'; -import { - materialRenderers, - materialCells, -} from '@jsonforms/material-renderers'; -import { JsonForms } from '@jsonforms/react'; - -const schema = { - type: 'object', - properties: { - name: { - type: 'string', - minLength: 1, - }, - done: { - type: 'boolean', - }, - due_date: { - type: 'string', - format: 'date', - }, - recurrence: { - type: 'string', - enum: ['Never', 'Daily', 'Weekly', 'Monthly'], - }, - }, - required: ['name', 'due_date'], -}; -const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - label: false, - scope: '#/properties/done', - }, - { - type: 'Control', - scope: '#/properties/name', - }, - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/due_date', - }, - { - type: 'Control', - scope: '#/properties/recurrence', - }, - ], - }, - ], -}; -const initialData = {}; -function App() { - const [data, setData] = useState(initialData); - return ( - setData(data)} - /> - ); -} -export default App; -``` - -## License - -The JSON Forms project is licensed under the MIT License. See the [LICENSE file](https://github.com/eclipsesource/jsonforms/blob/master/LICENSE) for more information. - -## Roadmap - -Our current roadmap is available [here](https://github.com/eclipsesource/jsonforms/blob/master/ROADMAP.md). - -## Feedback, Help and Support - -JSON Forms is developed by [EclipseSource](https://eclipsesource.com). - -If you encounter any problems feel free to [open an issue](https://github.com/eclipsesource/jsonforms/issues/new/choose) on the repo. -For questions and discussions please use the [JSON Forms board](https://jsonforms.discourse.group). -You can also reach us via [email](mailto:jsonforms@eclipsesource.com?subject=JSON%20Forms). -In addition, EclipseSource also offers [professional support](https://jsonforms.io/support) for JSON Forms. - -## Migration - -See our [migration guide](https://github.com/eclipsesource/jsonforms/blob/master/MIGRATION.md) when updating JSON Forms. diff --git a/packages/react/__mocks__/react.js b/packages/react/__mocks__/react.js deleted file mode 100644 index 899f4b70d7..0000000000 --- a/packages/react/__mocks__/react.js +++ /dev/null @@ -1,2 +0,0 @@ -const React = require('react'); -module.exports = Object.assign({}, React, { useEffect: React.useLayoutEffect }); diff --git a/packages/react/package.json b/packages/react/package.json deleted file mode 100644 index bc1a54c412..0000000000 --- a/packages/react/package.json +++ /dev/null @@ -1,132 +0,0 @@ -{ - "name": "@jsonforms/react", - "version": "3.6.0", - "description": "React module of JSON Forms", - "repository": "https://github.com/eclipsesource/jsonforms", - "bugs": "https://github.com/eclipsesource/jsonforms/issues", - "homepage": "http://jsonforms.io/", - "license": "MIT", - "publishConfig": { - "access": "public" - }, - "directories": { - "src": "src", - "test": "test" - }, - "files": [ - "lib", - "src" - ], - "keywords": [ - "react", - "form", - "forms", - "json", - "jsonforms", - "frontend", - "generator", - "input", - "renderengine", - "jsonschema", - "schema", - "uischema", - "layout", - "customization" - ], - "main": "lib/jsonforms-react.cjs.js", - "module": "lib/jsonforms-react.esm.js", - "typings": "./lib/index.d.ts", - "scripts": { - "build": "rollup -c rollup.config.js", - "clean": "rimraf lib coverage dist .nyc_output 2> /dev/null", - "lint": "eslint .", - "lint:fix": "eslint --fix .", - "report": "nyc report --reporter=html", - "test": "jest --no-cache", - "test-cov": "jest --no-cache --coverage", - "doc": "typedoc --name 'JSON Forms React Core' --out docs src" - }, - "ava": { - "verbose": true, - "require": [ - "babel-register" - ], - "babel": "inherit" - }, - "jest": { - "moduleFileExtensions": [ - "ts", - "tsx", - "js" - ], - "transform": { - "^.+\\.(ts|tsx)$": "ts-jest" - }, - "testEnvironment": "jsdom", - "testMatch": [ - "**/test/**/*.test.tsx" - ], - "testPathIgnorePatterns": [ - "/node_modules/", - "/dist/" - ], - "globals": { - "ts-jest": { - "tsconfig": "tsconfig.test.json" - } - } - }, - "nyc": { - "reporter": [ - "lcov", - "text-summary" - ] - }, - "dependencies": { - "lodash": "^4.17.21" - }, - "peerDependencies": { - "@jsonforms/core": "3.6.0", - "react": "^16.12.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "optionalPeerDependencies": { - "react-redux": "^7.1.3" - }, - "devDependencies": { - "@jsonforms/core": "workspace:*", - "@rollup/plugin-alias": "^3.1.8", - "@types/enzyme": "^3.10.3", - "@types/object-hash": "^1.3.0", - "@types/react": "^17.0.24", - "@types/react-redux": "^7.1.5", - "@typescript-eslint/eslint-plugin": "^5.54.1", - "@typescript-eslint/parser": "^5.54.1", - "@wojtekmaj/enzyme-adapter-react-17": "^0.6.7", - "cross-env": "^7.0.2", - "enzyme": "^3.11.0", - "eslint": "^8.56.0", - "eslint-config-prettier": "^8.7.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-react": "^7.32.2", - "jest": "^27.5.1", - "jsdom": "^22.0.0", - "jsdom-global": "^3.0.2", - "nyc": "^15.1.0", - "prettier": "^2.8.4", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "react-redux": "^7.1.3", - "redux": "^4.0.4", - "redux-mock-store": "1.5.3", - "rimraf": "^3.0.2", - "rollup": "^2.78.0", - "rollup-plugin-cleanup": "^3.2.1", - "rollup-plugin-typescript2": "^0.34.1", - "rollup-plugin-visualizer": "^5.4.1", - "ts-jest": "^27.1.4", - "tslib": "^2.5.0", - "typedoc": "~0.25.3", - "typescript": "~5.5.0" - } -} diff --git a/packages/react/rollup.config.js b/packages/react/rollup.config.js deleted file mode 100644 index 55428a545d..0000000000 --- a/packages/react/rollup.config.js +++ /dev/null @@ -1,103 +0,0 @@ -import typescript from 'rollup-plugin-typescript2'; -import cleanup from 'rollup-plugin-cleanup'; -import { visualizer } from 'rollup-plugin-visualizer'; -import alias from '@rollup/plugin-alias'; - -const packageJson = require('./package.json'); - -const baseConfig = { - input: 'src/index.ts', - external: [ - ...Object.keys(packageJson.dependencies), - ...Object.keys(packageJson.peerDependencies), - /^lodash\/.*/, - ], -}; - -const baseReduxConfig = { - input: 'src/redux/index.ts', - external: [ - ...Object.keys(packageJson.dependencies), - ...Object.keys(packageJson.peerDependencies), - ...Object.keys(packageJson.optionalPeerDependencies), - /^lodash\/.*/, - '@jsonforms/react', - 'redux', - ], -}; - -export default [ - { - ...baseConfig, - output: { - file: packageJson.module, - format: 'esm', - sourcemap: true, - }, - plugins: [ - typescript(), - cleanup({ extensions: ['js', 'ts', 'jsx', 'tsx'] }), - visualizer({ open: false }), - ], - }, - { - ...baseConfig, - output: { - file: packageJson.main, - format: 'cjs', - sourcemap: true, - }, - plugins: [ - typescript({ - tsconfigOverride: { - compilerOptions: { - target: 'ES5', - }, - }, - }), - cleanup({ extensions: ['js', 'ts', 'jsx', 'tsx'] }), - ], - }, - // Redux compatibility - { - ...baseReduxConfig, - output: { - file: 'lib/redux/index.js', - format: 'esm', - sourcemap: true, - }, - plugins: [ - alias({ - entries: [{ find: '..', replacement: '@jsonforms/react' }], - }), - typescript({ - tsconfig: './tsconfig.redux.json', - useTsconfigDeclarationDir: true, - }), - cleanup({ extensions: ['js', 'ts', 'jsx', 'tsx'] }), - ], - }, - { - ...baseReduxConfig, - output: { - file: 'lib/redux/index.cjs.js', - format: 'cjs', - sourcemap: true, - }, - plugins: [ - alias({ - entries: [{ find: '..', replacement: '@jsonforms/react' }], - }), - typescript({ - tsconfig: './tsconfig.redux.json', - useTsconfigDeclarationDir: true, - tsconfigOverride: { - compilerOptions: { - target: 'ES5', - }, - }, - }), - cleanup({ extensions: ['js', 'ts', 'jsx', 'tsx'] }), - ], - }, -]; diff --git a/packages/react/src/Control.ts b/packages/react/src/Control.ts deleted file mode 100644 index 1d033b51c4..0000000000 --- a/packages/react/src/Control.ts +++ /dev/null @@ -1,73 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { RendererComponent } from './Renderer'; -import type { ControlProps, ControlState } from '@jsonforms/core'; - -/** - * A controlled component convenience wrapper that additionally manages a focused state. - * - * @template P control specific properties - * @template S the state managed by the control - */ -export class Control< - P extends ControlProps, - S extends ControlState -> extends RendererComponent { - constructor(props: P) { - super(props); - this.state = { - value: props.data ? props.data : '', - isFocused: false, - } as S; - } - - /** - * Propagates a value change. - * - * @param value the updated value - */ - handleChange = (value: any) => { - this.setState({ value }); - this.updateData(value); - }; - - /** - * Set the focused state to true. - */ - onFocus = () => { - this.setState({ isFocused: true }); - }; - - /** - * Set the focused state to false. - */ - onBlur = () => { - this.setState({ isFocused: false }); - }; - - private updateData = (value: any) => { - this.props.handleChange(this.props.path, value); - }; -} diff --git a/packages/react/src/DispatchCell.tsx b/packages/react/src/DispatchCell.tsx deleted file mode 100644 index 782fd8bc62..0000000000 --- a/packages/react/src/DispatchCell.tsx +++ /dev/null @@ -1,77 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import maxBy from 'lodash/maxBy'; -import React, { useMemo } from 'react'; -import { UnknownRenderer } from './UnknownRenderer'; -import type { DispatchCellProps } from '@jsonforms/core'; -import { withJsonFormsDispatchCellProps } from './JsonFormsContext'; - -/** - * Dispatch renderer component for cells. - */ -export const Dispatch = ({ - uischema, - schema, - rootSchema, - path, - cells, - id, - enabled, - renderers, - config, -}: DispatchCellProps) => { - const testerContext = useMemo( - () => ({ - rootSchema: rootSchema, - config: config, - }), - [rootSchema, config] - ); - const cell = useMemo( - () => maxBy(cells, (r) => r.tester(uischema, schema, testerContext)), - [cells, uischema, schema, testerContext] - ); - if ( - cell === undefined || - cell.tester(uischema, schema, testerContext) === -1 - ) { - return ; - } else { - const Cell = cell.cell; - return ( - - ); - } -}; - -export const DispatchCell = withJsonFormsDispatchCellProps(Dispatch); diff --git a/packages/react/src/JsonForms.tsx b/packages/react/src/JsonForms.tsx deleted file mode 100644 index 38ed5514d5..0000000000 --- a/packages/react/src/JsonForms.tsx +++ /dev/null @@ -1,257 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import maxBy from 'lodash/maxBy'; -import React, { ComponentType, useMemo } from 'react'; -import type Ajv from 'ajv'; -import type { ErrorObject } from 'ajv'; -import { UnknownRenderer } from './UnknownRenderer'; -import { - createId, - Generate, - isControl, - JsonFormsCellRendererRegistryEntry, - JsonFormsCore, - JsonFormsI18nState, - JsonFormsProps, - JsonFormsRendererRegistryEntry, - JsonFormsUISchemaRegistryEntry, - JsonSchema, - Middleware, - OwnPropsOfJsonFormsRenderer, - removeId, - UISchemaElement, - ValidationMode, -} from '@jsonforms/core'; -import { - JsonFormsStateProvider, - withJsonFormsRendererProps, -} from './JsonFormsContext'; - -interface JsonFormsRendererState { - id: string; -} - -export interface JsonFormsReactProps { - onChange?(state: Pick): void; - middleware?: Middleware; -} - -export class JsonFormsDispatchRenderer extends React.Component< - JsonFormsProps, - JsonFormsRendererState -> { - constructor(props: JsonFormsProps) { - super(props); - this.state = { - id: isControl(props.uischema) - ? createId(props.uischema.scope) - : undefined, - }; - } - - componentWillUnmount() { - if (isControl(this.props.uischema)) { - removeId(this.state.id); - } - } - - componentDidUpdate(prevProps: JsonFormsProps) { - if (prevProps.schema !== this.props.schema) { - removeId(this.state.id); - this.setState({ - id: isControl(this.props.uischema) - ? createId(this.props.uischema.scope) - : undefined, - }); - } - } - - render() { - const { - schema, - rootSchema, - uischema, - path, - enabled, - renderers, - cells, - config, - } = this.props as JsonFormsProps; - - return ( - - ); - } -} - -const TestAndRender = React.memo(function TestAndRender(props: { - uischema: UISchemaElement; - schema: JsonSchema; - rootSchema: JsonSchema; - path: string; - enabled: boolean; - renderers: JsonFormsRendererRegistryEntry[]; - cells: JsonFormsCellRendererRegistryEntry[]; - id: string; - config: any; -}) { - const testerContext = useMemo( - () => ({ - rootSchema: props.rootSchema, - config: props.config, - }), - [props.rootSchema, props.config] - ); - const renderer = useMemo( - () => - maxBy(props.renderers, (r) => - r.tester(props.uischema, props.schema, testerContext) - ), - [props.renderers, props.uischema, props.schema, testerContext] - ); - if ( - renderer === undefined || - renderer.tester(props.uischema, props.schema, testerContext) === -1 - ) { - return ; - } else { - const Render = renderer.renderer; - return ( - - ); - } -}); - -/** - * @deprecated Since Version 3.0 this optimization renderer is no longer necessary. - * Use `JsonFormsDispatch` instead. - * We still export it for backward compatibility - */ -export class ResolvedJsonFormsDispatchRenderer extends JsonFormsDispatchRenderer { - constructor(props: JsonFormsProps) { - super(props); - } -} - -export const JsonFormsDispatch: ComponentType = - withJsonFormsRendererProps(JsonFormsDispatchRenderer); - -/** - * @deprecated Since Version 3.0 this optimization component is no longer necessary. - * Use `JsonFormsDispatch` instead. - * We still export it for backward compatibility - */ -export const ResolvedJsonFormsDispatch: ComponentType = - withJsonFormsRendererProps(ResolvedJsonFormsDispatchRenderer); - -export interface JsonFormsInitStateProps { - data: any; - schema?: JsonSchema; - uischema?: UISchemaElement; - renderers: JsonFormsRendererRegistryEntry[]; - cells?: JsonFormsCellRendererRegistryEntry[]; - ajv?: Ajv; - config?: any; - uischemas?: JsonFormsUISchemaRegistryEntry[]; - readonly?: boolean; - validationMode?: ValidationMode; - i18n?: JsonFormsI18nState; - additionalErrors?: ErrorObject[]; -} - -export const JsonForms = ( - props: JsonFormsInitStateProps & JsonFormsReactProps -) => { - const { - ajv, - data, - schema, - uischema, - renderers, - cells, - onChange, - config, - uischemas, - readonly, - validationMode, - i18n, - additionalErrors, - middleware, - } = props; - const schemaToUse = useMemo( - () => (schema !== undefined ? schema : Generate.jsonSchema(data)), - [schema, data] - ); - const uischemaToUse = useMemo( - () => - typeof uischema === 'object' - ? uischema - : Generate.uiSchema(schemaToUse, undefined, undefined, schemaToUse), - [uischema, schemaToUse] - ); - - return ( - - - - ); -}; diff --git a/packages/react/src/JsonFormsContext.tsx b/packages/react/src/JsonFormsContext.tsx deleted file mode 100644 index b10323b65f..0000000000 --- a/packages/react/src/JsonFormsContext.tsx +++ /dev/null @@ -1,911 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -import { - Actions, - ArrayControlProps, - ArrayLayoutProps, - CellProps, - CombinatorRendererProps, - ControlProps, - defaultMapStateToEnumCellProps, - DispatchCellProps, - DispatchPropsOfControl, - EnumCellProps, - JsonFormsCore, - JsonFormsProps, - JsonFormsSubStates, - LayoutProps, - OwnPropsOfCell, - OwnPropsOfControl, - OwnPropsOfEnum, - OwnPropsOfEnumCell, - OwnPropsOfJsonFormsRenderer, - OwnPropsOfLayout, - OwnPropsOfMasterListItem, - StatePropsOfControlWithDetail, - StatePropsOfMasterItem, - configReducer, - coreReducer, - mapStateToAllOfProps, - mapStateToAnyOfProps, - mapStateToArrayControlProps, - mapStateToArrayLayoutProps, - mapStateToCellProps, - mapStateToControlProps, - mapStateToControlWithDetailProps, - mapStateToDispatchCellProps, - mapStateToEnumControlProps, - mapStateToJsonFormsRendererProps, - mapStateToLayoutProps, - mapStateToMasterListItemProps, - mapStateToOneOfProps, - mapStateToOneOfEnumControlProps, - mapStateToOneOfEnumCellProps, - mapDispatchToMultiEnumProps, - mapStateToMultiEnumControlProps, - DispatchPropsOfMultiEnumControl, - mapDispatchToControlProps, - mapDispatchToArrayControlProps, - i18nReducer, - Translator, - defaultJsonFormsI18nState, - OwnPropsOfLabel, - LabelProps, - mapStateToLabelProps, - CoreActions, - Middleware, - defaultMiddleware, - arrayDefaultTranslations, - getArrayTranslations, - ArrayTranslations, -} from '@jsonforms/core'; -import debounce from 'lodash/debounce'; -import React, { - ComponentType, - Dispatch, - ReducerAction, - useCallback, - useContext, - useEffect, - useMemo, - useReducer, - useRef, - useState, -} from 'react'; - -const initialCoreState: JsonFormsCore = { - data: {}, - schema: {}, - uischema: undefined, - errors: [], - additionalErrors: [], - validator: undefined, - ajv: undefined, -}; - -export interface JsonFormsStateContext extends JsonFormsSubStates { - dispatch?: Dispatch>; -} - -export const JsonFormsContext = React.createContext({ - core: initialCoreState, - renderers: [], -}); - -/** - * Hook similar to `useEffect` with the difference that the effect - * is only executed from the second call onwards. - */ -const useEffectAfterFirstRender = ( - effect: () => void, - dependencies: Array -) => { - const firstExecution = useRef(true); - useEffect(() => { - if (firstExecution.current) { - firstExecution.current = false; - return; - } - effect(); - }, dependencies); -}; - -export const JsonFormsStateProvider = ({ - children, - initState, - onChange, - middleware, -}: any) => { - const { data, schema, uischema, ajv, validationMode, additionalErrors } = - initState.core; - - const middlewareRef = useRef(middleware ?? defaultMiddleware); - middlewareRef.current = middleware ?? defaultMiddleware; - - const [core, setCore] = useState(() => - middlewareRef.current( - initState.core, - Actions.init(data, schema, uischema, { - ajv, - validationMode, - additionalErrors, - }), - coreReducer - ) - ); - - useEffect( - () => - setCore((currentCore) => - middlewareRef.current( - currentCore, - Actions.updateCore(data, schema, uischema, { - ajv, - validationMode, - additionalErrors, - }), - coreReducer - ) - ), - [data, schema, uischema, ajv, validationMode, additionalErrors] - ); - - const [config, configDispatch] = useReducer(configReducer, undefined, () => - configReducer(undefined, Actions.setConfig(initState.config)) - ); - useEffectAfterFirstRender(() => { - configDispatch(Actions.setConfig(initState.config)); - }, [initState.config]); - - const [i18n, i18nDispatch] = useReducer(i18nReducer, undefined, () => - i18nReducer( - initState.i18n, - Actions.updateI18n( - initState.i18n?.locale, - initState.i18n?.translate, - initState.i18n?.translateError - ) - ) - ); - useEffect(() => { - i18nDispatch( - Actions.updateI18n( - initState.i18n?.locale, - initState.i18n?.translate, - initState.i18n?.translateError - ) - ); - }, [ - initState.i18n?.locale, - initState.i18n?.translate, - initState.i18n?.translateError, - ]); - - const dispatch = useCallback((action: CoreActions) => { - setCore((currentCore) => - middlewareRef.current(currentCore, action, coreReducer) - ); - }, []); - - const contextValue = useMemo( - () => ({ - core, - renderers: initState.renderers, - cells: initState.cells, - config: config, - uischemas: initState.uischemas, - readonly: initState.readonly, - i18n: i18n, - dispatch: dispatch, - }), - [ - core, - initState.renderers, - initState.cells, - config, - initState.uischemas, - initState.readonly, - i18n, - ] - ); - - const onChangeRef = useRef(onChange); - useEffect(() => { - onChangeRef.current = onChange; - }, [onChange]); - - /** - * A common pattern for users of JSON Forms is to feed back the data which is emitted by - * JSON Forms to JSON Forms ('controlled style'). - * - * Every time this happens, we dispatch the 'updateCore' action which will be a no-op when - * the data handed over is the one which was just recently emitted. This allows us to skip - * rerendering for all normal cases of use. - * - * However there can be extreme use cases, for example when using Chrome Auto-fill for forms, - * which can cause JSON Forms to emit multiple change events before the parent component is - * rerendered. Therefore not the very recent data, but the previous data is fed back to - * JSON Forms first. JSON Forms recognizes that this is not the very recent data and will - * validate, rerender and emit a change event again. This can then lead to data loss or even - * an endless rerender loop, depending on the emitted events chain. - * - * To handle these edge cases in which many change events are sent in an extremely short amount - * of time we debounce them over a short amount of time. 10ms was chosen as this worked well - * even on low-end mobile device settings in the Chrome simulator. - */ - const debouncedEmit = useCallback( - debounce((...args: any[]) => onChangeRef.current?.(...args), 10), - [] - ); - useEffect(() => { - debouncedEmit({ data: core.data, errors: core.errors }); - }, [core.data, core.errors]); - - return ( - - {children} - - ); -}; - -export const useJsonForms = (): JsonFormsStateContext => - useContext(JsonFormsContext); - -export interface JsonFormsReduxContextProps extends JsonFormsSubStates { - children: any; - dispatch: Dispatch>; -} - -export const ctxToArrayLayoutProps = ( - ctx: JsonFormsStateContext, - props: OwnPropsOfControl -) => mapStateToArrayLayoutProps({ jsonforms: { ...ctx } }, props); - -export const ctxToArrayControlProps = ( - ctx: JsonFormsStateContext, - props: OwnPropsOfControl -) => mapStateToArrayControlProps({ jsonforms: { ...ctx } }, props); - -export const ctxToLayoutProps = ( - ctx: JsonFormsStateContext, - props: OwnPropsOfLayout -): LayoutProps => mapStateToLayoutProps({ jsonforms: { ...ctx } }, props); - -export const ctxToControlProps = ( - ctx: JsonFormsStateContext, - props: OwnPropsOfControl -) => mapStateToControlProps({ jsonforms: { ...ctx } }, props); - -export const ctxToEnumControlProps = ( - ctx: JsonFormsStateContext, - props: OwnPropsOfEnum -) => { - const enumProps = mapStateToEnumControlProps( - { jsonforms: { ...ctx } }, - props - ); - /** - * Make sure, that options are memoized as otherwise the component will rerender for every change, - * as the options array is recreated every time. - */ - const options = useMemo( - () => enumProps.options, - [props.options, enumProps.schema, ctx.i18n?.translate] - ); - return { ...enumProps, options }; -}; - -export const ctxToOneOfEnumControlProps = ( - ctx: JsonFormsStateContext, - props: OwnPropsOfControl & OwnPropsOfEnum -) => { - const enumProps = mapStateToOneOfEnumControlProps( - { jsonforms: { ...ctx } }, - props - ); - /** - * Make sure, that options are memoized as otherwise the component will rerender for every change, - * as the options array is recreated every time. - */ - const options = useMemo( - () => enumProps.options, - [props.options, enumProps.schema, ctx.i18n?.translate] - ); - return { ...enumProps, options }; -}; - -export const ctxToMultiEnumControlProps = ( - ctx: JsonFormsStateContext, - props: OwnPropsOfControl -) => { - const enumProps = mapStateToMultiEnumControlProps( - { jsonforms: { ...ctx } }, - props - ); - /** - * Make sure, that options are memoized as otherwise the component will rerender for every change, - * as the options array is recreated every time. - */ - const options = useMemo( - () => enumProps.options, - [enumProps.schema, ctx.i18n?.translate] - ); - return { ...enumProps, options }; -}; - -export const ctxToControlWithDetailProps = ( - ctx: JsonFormsStateContext, - props: OwnPropsOfControl -): StatePropsOfControlWithDetail => - mapStateToControlWithDetailProps({ jsonforms: { ...ctx } }, props); - -export const ctxToAllOfProps = ( - ctx: JsonFormsStateContext, - ownProps: OwnPropsOfControl -) => { - const props = mapStateToAllOfProps({ jsonforms: { ...ctx } }, ownProps); - return { - ...props, - }; -}; - -export const ctxDispatchToControlProps = ( - dispatch: Dispatch> -): DispatchPropsOfControl => - useMemo(() => mapDispatchToControlProps(dispatch as any), [dispatch]); - -// context mappers - -export const ctxToAnyOfProps = ( - ctx: JsonFormsStateContext, - ownProps: OwnPropsOfControl -): CombinatorRendererProps => { - const props = mapStateToAnyOfProps({ jsonforms: { ...ctx } }, ownProps); - const dispatchProps = ctxDispatchToControlProps(ctx.dispatch); - return { - ...props, - ...dispatchProps, - }; -}; - -export const ctxToOneOfProps = ( - ctx: JsonFormsStateContext, - ownProps: OwnPropsOfControl -): CombinatorRendererProps => { - const props = mapStateToOneOfProps({ jsonforms: { ...ctx } }, ownProps); - const dispatchProps = ctxDispatchToControlProps(ctx.dispatch); - return { - ...props, - ...dispatchProps, - }; -}; - -export const ctxToJsonFormsRendererProps = ( - ctx: JsonFormsStateContext, - ownProps: OwnPropsOfJsonFormsRenderer -) => mapStateToJsonFormsRendererProps({ jsonforms: { ...ctx } }, ownProps); - -export const ctxDispatchToArrayControlProps = ( - dispatch: Dispatch> -) => ({ - ...ctxDispatchToControlProps(dispatch), - ...useMemo(() => mapDispatchToArrayControlProps(dispatch as any), [dispatch]), -}); - -export const ctxToMasterListItemProps = ( - ctx: JsonFormsStateContext, - ownProps: OwnPropsOfMasterListItem -) => mapStateToMasterListItemProps({ jsonforms: { ...ctx } }, ownProps); - -export const ctxToCellProps = ( - ctx: JsonFormsStateContext, - ownProps: OwnPropsOfCell -) => { - return mapStateToCellProps({ jsonforms: { ...ctx } }, ownProps); -}; - -export const ctxToEnumCellProps = ( - ctx: JsonFormsStateContext, - ownProps: EnumCellProps -) => { - const cellProps = defaultMapStateToEnumCellProps( - { jsonforms: { ...ctx } }, - ownProps - ); - /** - * Make sure, that options are memoized as otherwise the cell will rerender for every change, - * as the options array is recreated every time. - */ - const options = useMemo( - () => cellProps.options, - [ownProps.options, cellProps.schema, ctx.i18n?.translate] - ); - return { ...cellProps, options }; -}; - -export const ctxToOneOfEnumCellProps = ( - ctx: JsonFormsStateContext, - props: OwnPropsOfEnumCell -) => { - const enumCellProps = mapStateToOneOfEnumCellProps( - { jsonforms: { ...ctx } }, - props - ); - /** - * Make sure, that options are memoized as otherwise the cell will rerender for every change, - * as the options array is recreated every time. - */ - const options = useMemo( - () => enumCellProps.options, - [props.options, enumCellProps.schema, ctx.i18n?.translate] - ); - return { ...enumCellProps, options }; -}; - -export const ctxToDispatchCellProps = ( - ctx: JsonFormsStateContext, - ownProps: OwnPropsOfCell -) => { - return mapStateToDispatchCellProps({ jsonforms: { ...ctx } }, ownProps); -}; - -export const ctxDispatchToMultiEnumProps = ( - dispatch: Dispatch> -) => ({ - ...ctxDispatchToControlProps(dispatch), - ...useMemo(() => mapDispatchToMultiEnumProps(dispatch as any), [dispatch]), -}); - -export const ctxToLabelProps = ( - ctx: JsonFormsStateContext, - ownProps: OwnPropsOfLabel -) => { - return mapStateToLabelProps({ jsonforms: { ...ctx } }, ownProps); -}; - -// -- - -// HOCs utils - -interface WithContext { - ctx: JsonFormsStateContext; -} - -export const withJsonFormsContext = ( - Component: ComponentType -): ComponentType => - function WithJsonFormsContext(props: any) { - const ctx = useJsonForms(); - return ; - }; - -export const withContextToJsonFormsRendererProps = ( - Component: ComponentType -): ComponentType => - function WithContextToJsonFormsRendererProps({ - ctx, - props, - }: JsonFormsStateContext & JsonFormsProps) { - const contextProps = ctxToJsonFormsRendererProps(ctx, props); - return ; - }; - -const withContextToControlProps = ( - Component: ComponentType -): ComponentType => - function WithContextToControlProps({ - ctx, - props, - }: JsonFormsStateContext & ControlProps) { - const controlProps = ctxToControlProps(ctx, props); - const dispatchProps = ctxDispatchToControlProps(ctx.dispatch); - return ; - }; - -const withContextToLayoutProps = ( - Component: ComponentType -): ComponentType => - function WithContextToLayoutProps({ - ctx, - props, - }: JsonFormsStateContext & LayoutProps) { - const layoutProps = ctxToLayoutProps(ctx, props); - return ; - }; - -const withContextToOneOfProps = ( - Component: ComponentType -): ComponentType => - function WithContextToOneOfProps({ - ctx, - props, - }: JsonFormsStateContext & CombinatorRendererProps) { - const oneOfProps = ctxToOneOfProps(ctx, props); - const dispatchProps = ctxDispatchToControlProps(ctx.dispatch); - return ; - }; - -const withContextToAnyOfProps = ( - Component: ComponentType -): ComponentType => - function WithContextToAnyOfProps({ - ctx, - props, - }: JsonFormsStateContext & CombinatorRendererProps) { - const oneOfProps = ctxToAnyOfProps(ctx, props); - const dispatchProps = ctxDispatchToControlProps(ctx.dispatch); - return ; - }; - -const withContextToAllOfProps = ( - Component: ComponentType -): ComponentType => - function WithContextToAllOfProps({ - ctx, - props, - }: JsonFormsStateContext & CombinatorRendererProps) { - const allOfProps = ctxToAllOfProps(ctx, props); - const dispatchProps = ctxDispatchToControlProps(ctx.dispatch); - return ; - }; - -const withContextToDetailProps = ( - Component: ComponentType -): ComponentType => - function WithContextToDetailProps({ - ctx, - props, - }: JsonFormsStateContext & StatePropsOfControlWithDetail) { - const detailProps = ctxToControlWithDetailProps(ctx, props); - return ; - }; - -const withContextToArrayLayoutProps = ( - Component: ComponentType -): ComponentType => - function WithContextToArrayLayoutProps({ - ctx, - props, - }: JsonFormsStateContext & ArrayLayoutProps) { - const arrayLayoutProps = ctxToArrayLayoutProps(ctx, props); - const dispatchProps = ctxDispatchToArrayControlProps(ctx.dispatch); - return ; - }; - -const withContextToArrayControlProps = ( - Component: ComponentType -): ComponentType => - function WithContextToArrayControlProps({ - ctx, - props, - }: JsonFormsStateContext & ArrayControlProps) { - const stateProps = ctxToArrayControlProps(ctx, props); - const dispatchProps = ctxDispatchToArrayControlProps(ctx.dispatch); - - return ; - }; - -const withContextToMasterListItemProps = ( - Component: ComponentType -): ComponentType => - function WithContextToMasterListItemProps({ - ctx, - props, - }: JsonFormsStateContext & StatePropsOfMasterItem) { - const stateProps = ctxToMasterListItemProps(ctx, props); - return ; - }; - -const withContextToCellProps = ( - Component: ComponentType -): ComponentType => - function WithContextToCellProps({ - ctx, - props, - }: JsonFormsStateContext & CellProps) { - const cellProps = ctxToCellProps(ctx, props); - const dispatchProps = ctxDispatchToControlProps(ctx.dispatch); - - return ; - }; - -const withContextToDispatchCellProps = ( - Component: ComponentType -): ComponentType => - function WithContextToDispatchCellProps({ - ctx, - props, - }: JsonFormsStateContext & CellProps) { - const cellProps = ctxToDispatchCellProps(ctx, props); - const dispatchProps = ctxDispatchToControlProps(ctx.dispatch); - - return ; - }; - -const withContextToEnumCellProps = ( - Component: ComponentType -): ComponentType => - function WithContextToEnumCellProps({ - ctx, - props, - }: JsonFormsStateContext & EnumCellProps) { - const cellProps = ctxToEnumCellProps(ctx, props); - const dispatchProps = ctxDispatchToControlProps(ctx.dispatch); - return ; - }; - -const withContextToEnumProps = ( - Component: ComponentType -): ComponentType => - function WithContextToEnumProps({ - ctx, - props, - }: JsonFormsStateContext & ControlProps & OwnPropsOfEnum) { - const stateProps = ctxToEnumControlProps(ctx, props); - const dispatchProps = ctxDispatchToControlProps(ctx.dispatch); - - return ; - }; - -const withContextToOneOfEnumCellProps = ( - Component: ComponentType -): ComponentType => - function WithContextToOneOfEnumCellProps({ - ctx, - props, - }: JsonFormsStateContext & EnumCellProps) { - const cellProps = ctxToOneOfEnumCellProps(ctx, props); - const dispatchProps = ctxDispatchToControlProps(ctx.dispatch); - return ; - }; - -const withContextToOneOfEnumProps = ( - Component: ComponentType -): ComponentType => - function WithContextToOneOfEnumProps({ - ctx, - props, - }: JsonFormsStateContext & ControlProps & OwnPropsOfEnum) { - const stateProps = ctxToOneOfEnumControlProps(ctx, props); - const dispatchProps = ctxDispatchToControlProps(ctx.dispatch); - return ; - }; - -const withContextToMultiEnumProps = ( - Component: ComponentType -): ComponentType => - function WithContextToMultiEnumProps({ - ctx, - props, - }: JsonFormsStateContext & ControlProps & OwnPropsOfEnum) { - const stateProps = ctxToMultiEnumControlProps(ctx, props); - const dispatchProps = ctxDispatchToMultiEnumProps(ctx.dispatch); - return ; - }; - -const withContextToLabelProps = ( - Component: ComponentType -): ComponentType => - function WithContextToLabelProps({ - ctx, - props, - }: JsonFormsStateContext & LabelProps & OwnPropsOfLabel) { - const stateProps = ctxToLabelProps(ctx, props); - return ; - }; - -// -- - -// top level HOCs -- - -export const withJsonFormsRendererProps = ( - Component: ComponentType, - memoize = true -): ComponentType => - withJsonFormsContext( - withContextToJsonFormsRendererProps( - memoize ? React.memo(Component) : Component - ) - ); - -export const withJsonFormsControlProps = ( - Component: ComponentType, - memoize = true -): ComponentType => - withJsonFormsContext( - withContextToControlProps(memoize ? React.memo(Component) : Component) - ); - -export const withJsonFormsLayoutProps = ( - Component: ComponentType, - memoize = true -): ComponentType => - withJsonFormsContext( - withContextToLayoutProps(memoize ? React.memo(Component) : Component) - ); - -export const withJsonFormsOneOfProps = ( - Component: ComponentType, - memoize = true -): ComponentType => - withJsonFormsContext( - withContextToOneOfProps(memoize ? React.memo(Component) : Component) - ); - -export const withJsonFormsAnyOfProps = ( - Component: ComponentType, - memoize = true -): ComponentType => - withJsonFormsContext( - withContextToAnyOfProps(memoize ? React.memo(Component) : Component) - ); - -export const withJsonFormsAllOfProps = ( - Component: ComponentType, - memoize = true -): ComponentType => - withJsonFormsContext( - withContextToAllOfProps(memoize ? React.memo(Component) : Component) - ); - -export const withJsonFormsDetailProps = ( - Component: ComponentType, - memoize = true -): ComponentType => - withJsonFormsContext( - withContextToDetailProps(memoize ? React.memo(Component) : Component) - ); - -export const withJsonFormsArrayLayoutProps = ( - Component: ComponentType, - memoize = true -): ComponentType => - withJsonFormsContext( - withContextToArrayLayoutProps(memoize ? React.memo(Component) : Component) - ); - -export const withJsonFormsArrayControlProps = ( - Component: ComponentType, - memoize = true -): ComponentType => - withJsonFormsContext( - withContextToArrayControlProps(memoize ? React.memo(Component) : Component) - ); - -export const withJsonFormsMasterListItemProps = ( - Component: ComponentType, - memoize = true -): ComponentType => - withJsonFormsContext( - withContextToMasterListItemProps( - memoize ? React.memo(Component) : Component - ) - ); - -export const withJsonFormsCellProps = ( - Component: ComponentType, - memoize = true -): ComponentType => - withJsonFormsContext( - withContextToCellProps(memoize ? React.memo(Component) : Component) - ); - -export const withJsonFormsDispatchCellProps = ( - Component: ComponentType, - memoize = true -): ComponentType => - withJsonFormsContext( - withContextToDispatchCellProps(memoize ? React.memo(Component) : Component) - ); - -export const withJsonFormsEnumCellProps = ( - Component: ComponentType, - memoize = true -): ComponentType => - withJsonFormsContext( - withContextToEnumCellProps(memoize ? React.memo(Component) : Component) - ); - -export const withJsonFormsEnumProps = ( - Component: ComponentType, - memoize = true -): ComponentType => - withJsonFormsContext( - withContextToEnumProps(memoize ? React.memo(Component) : Component) - ); - -export const withJsonFormsOneOfEnumCellProps = ( - Component: ComponentType, - memoize = true -): ComponentType => - withJsonFormsContext( - withContextToOneOfEnumCellProps(memoize ? React.memo(Component) : Component) - ); - -export const withJsonFormsOneOfEnumProps = ( - Component: ComponentType, - memoize = true -): ComponentType => - withJsonFormsContext( - withContextToOneOfEnumProps(memoize ? React.memo(Component) : Component) - ); - -export const withJsonFormsMultiEnumProps = ( - Component: ComponentType< - ControlProps & OwnPropsOfEnum & DispatchPropsOfMultiEnumControl - >, - memoize = true -): ComponentType< - OwnPropsOfControl & OwnPropsOfEnum & DispatchPropsOfMultiEnumControl -> => - withJsonFormsContext( - withContextToMultiEnumProps(memoize ? React.memo(Component) : Component) - ); - -export const withJsonFormsLabelProps = ( - Component: ComponentType, - memoize = true -): ComponentType => - withJsonFormsContext( - withContextToLabelProps(memoize ? React.memo(Component) : Component) - ); - -// Util HOCs - -export interface TranslateProps { - t: Translator; - locale: string; -} - -// TODO fix @typescript-eslint/ban-types -// eslint-disable-next-line @typescript-eslint/ban-types -export const withTranslateProps =

( - Component: ComponentType -) => - function WithTranslateProps(props: P) { - const ctx = useJsonForms(); - const locale = ctx.i18n?.locale ?? defaultJsonFormsI18nState.locale; - const t = ctx.i18n?.translate ?? defaultJsonFormsI18nState.translate; - - return ; - }; - -export const withArrayTranslationProps =

( - Component: ComponentType

-) => - function withArrayTranslatationProps(props: P & TranslateProps) { - const translations = useMemo( - () => - getArrayTranslations( - props.t, - arrayDefaultTranslations, - props.i18nKeyPrefix, - props.label - ), - [props.t, props.i18nKeyPrefix, props.label] - ); - return ; - }; diff --git a/packages/react/src/Renderer.tsx b/packages/react/src/Renderer.tsx deleted file mode 100644 index b07cdca198..0000000000 --- a/packages/react/src/Renderer.tsx +++ /dev/null @@ -1,60 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import type { RendererProps } from '@jsonforms/core'; - -/** - * Convenience wrapper around React's Component for constraining props. - * - * @template P type of any renderer props - * @template S state of the Renderer - */ -export class RendererComponent< - P extends RendererProps, - // TODO fix @typescript-eslint/ban-types - // eslint-disable-next-line @typescript-eslint/ban-types - S = {} -> extends React.Component { - constructor(props: P) { - super(props); - } -} - -/** - * Stateless Renderer. - * - * @template P type of any renderer props - */ -export type StatelessRenderer

= - React.StatelessComponent

; - -/** - * Represents a Renderer, which might either be a component or a function. - */ -export type Renderer = - // TODO fix @typescript-eslint/ban-types - // eslint-disable-next-line @typescript-eslint/ban-types - | RendererComponent - | StatelessRenderer; diff --git a/packages/react/src/UnknownRenderer.tsx b/packages/react/src/UnknownRenderer.tsx deleted file mode 100644 index f1be994d1a..0000000000 --- a/packages/react/src/UnknownRenderer.tsx +++ /dev/null @@ -1,46 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React, { Component } from 'react'; - -/** - * Props of an {@link UnknownRenderer} - */ -export interface UnknownRendererProps { - /** - * The type for which no renderer has been found. - */ - type: 'renderer' | 'cell'; -} - -/** - * A renderer that will be used in case no other renderer is applicable. - */ -export class UnknownRenderer extends Component { - render() { - return ( -

No applicable {this.props.type} found.
- ); - } -} diff --git a/packages/react/src/index.ts b/packages/react/src/index.ts deleted file mode 100644 index 609772b641..0000000000 --- a/packages/react/src/index.ts +++ /dev/null @@ -1,31 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -export * from './Control'; -export * from './JsonForms'; -export * from './DispatchCell'; -export * from './Renderer'; -export * from './JsonFormsContext'; -export * from './UnknownRenderer'; diff --git a/packages/react/src/redux/JsonFormsReduxContext.tsx b/packages/react/src/redux/JsonFormsReduxContext.tsx deleted file mode 100644 index 8b4ccaf873..0000000000 --- a/packages/react/src/redux/JsonFormsReduxContext.tsx +++ /dev/null @@ -1,74 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -import { - cellReducer, - configReducer, - coreReducer, - i18nReducer, - JsonFormsState, - JsonFormsSubStates, - rendererReducer, - uischemaRegistryReducer, -} from '@jsonforms/core'; -import { connect } from 'react-redux'; -import { combineReducers, Reducer } from 'redux'; -import React from 'react'; -// This import will be aliased to '@jsonforms/react' via rollup -import { JsonFormsContext, JsonFormsReduxContextProps } from '..'; - -const JsonFormsReduxProvider = ({ - children, - dispatch, - ...other -}: JsonFormsReduxContextProps) => { - return ( - - {children} - - ); -}; - -export const JsonFormsReduxContext = connect((state: JsonFormsState) => ({ - ...state.jsonforms, -}))(JsonFormsReduxProvider); - -export const jsonformsReducer = ( - additionalReducers = {} -): Reducer => - combineReducers({ - core: coreReducer, - renderers: rendererReducer, - cells: cellReducer, - config: configReducer, - uischemas: uischemaRegistryReducer, - i18n: i18nReducer, - ...additionalReducers, - }); diff --git a/packages/react/src/redux/index.ts b/packages/react/src/redux/index.ts deleted file mode 100644 index e3f3a411b0..0000000000 --- a/packages/react/src/redux/index.ts +++ /dev/null @@ -1,26 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -export * from './JsonFormsReduxContext'; diff --git a/packages/react/test/JsonFormsContext.test.tsx b/packages/react/test/JsonFormsContext.test.tsx deleted file mode 100644 index c6ca58773d..0000000000 --- a/packages/react/test/JsonFormsContext.test.tsx +++ /dev/null @@ -1,370 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ - -import React from 'react'; -import Enzyme, { mount } from 'enzyme'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { - CellProps, - ControlProps, - JsonSchema, - NOT_APPLICABLE, - OwnPropsOfEnum, - rankWith, - StatePropsOfControlWithDetail, -} from '@jsonforms/core'; - -import { JsonForms } from '../src/JsonForms'; -import { - withJsonFormsDetailProps, - withJsonFormsEnumCellProps, - withJsonFormsEnumProps, -} from '../src/JsonFormsContext'; - -Enzyme.configure({ adapter: new Adapter() }); - -test('withJsonFormsEnumProps - constant: should supply control and enum props', () => { - const MockEnumControlUnwrapped = (_: ControlProps & OwnPropsOfEnum) => { - return <>; - }; - - const MockEnumControl = withJsonFormsEnumProps(MockEnumControlUnwrapped); - - const schema = { - type: 'object', - properties: { - name: { - const: 'Cambodia', - }, - }, - required: ['country'], - }; - - const renderers = [ - { - tester: rankWith(1, () => true), - renderer: MockEnumControl, - }, - ]; - - const uischema = { - type: 'Control', - scope: '#/properties/name', - }; - - const wrapper = mount( - - ); - const mockEnumControlUnwrappedProps = wrapper - .find(MockEnumControlUnwrapped) - .props(); - - expect(mockEnumControlUnwrappedProps.uischema).toEqual(uischema); - expect(mockEnumControlUnwrappedProps.schema).toEqual(schema.properties.name); - expect(mockEnumControlUnwrappedProps.path).toEqual('name'); - expect(mockEnumControlUnwrappedProps.id).toEqual('#/properties/name'); - expect(mockEnumControlUnwrappedProps.options).toEqual([ - { value: 'Cambodia', label: 'Cambodia' }, - ]); -}); - -test('withJsonFormsEnumProps - enum: should supply control and enum props', () => { - const MockEnumControlUnwrapped = (_: ControlProps & OwnPropsOfEnum) => { - return <>; - }; - - const MockEnumControl = withJsonFormsEnumProps(MockEnumControlUnwrapped); - - const schema = { - type: 'object', - properties: { - color: { - type: 'string', - enum: ['red', 'amber', 'green', null], - }, - }, - required: ['color'], - }; - - const renderers = [ - { - tester: rankWith(1, () => true), - renderer: MockEnumControl, - }, - ]; - - const uischema = { - type: 'Control', - scope: '#/properties/color', - }; - - const wrapper = mount( - - ); - const mockEnumControlUnwrappedProps = wrapper - .find(MockEnumControlUnwrapped) - .props(); - expect(mockEnumControlUnwrappedProps.uischema).toEqual(uischema); - expect(mockEnumControlUnwrappedProps.schema).toEqual(schema.properties.color); - expect(mockEnumControlUnwrappedProps.path).toEqual('color'); - expect(mockEnumControlUnwrappedProps.id).toEqual('#/properties/color'); - expect(mockEnumControlUnwrappedProps.options).toEqual([ - { value: 'red', label: 'red' }, - { value: 'amber', label: 'amber' }, - { value: 'green', label: 'green' }, - { value: null, label: 'null' }, - ]); -}); - -test('withJsonFormsEnumCellProps - constant: should supply control and enum props', () => { - const MockEnumCellUnwrapped = (_: CellProps & OwnPropsOfEnum) => { - return <>; - }; - - const MockEnumControl = withJsonFormsEnumCellProps(MockEnumCellUnwrapped); - - const schema = { - const: 'Cambodia', - }; - - const renderers = [ - { - tester: rankWith(1, () => true), - renderer: MockEnumControl, - }, - ]; - - const uischema = { - type: 'Control', - scope: '#/properties/name', - }; - - const wrapper = mount( - - ); - const mockEnumControlUnwrappedProps = wrapper - .find(MockEnumCellUnwrapped) - .props(); - - expect(mockEnumControlUnwrappedProps.uischema).toEqual(uischema); - expect(mockEnumControlUnwrappedProps.schema).toEqual(schema); - expect(mockEnumControlUnwrappedProps.options).toEqual([ - { label: 'Cambodia', value: 'Cambodia' }, - ]); -}); - -test('withJsonFormsEnumCellProps - enum: should supply control and enum props', () => { - const MockEnumCellUnwrapped = (_: CellProps & OwnPropsOfEnum) => { - return <>; - }; - - const MockEnumControl = withJsonFormsEnumCellProps(MockEnumCellUnwrapped); - - const schema = { - type: 'string', - enum: ['red', 'amber', 'green', null], - }; - - const renderers = [ - { - tester: rankWith(1, () => true), - renderer: MockEnumControl, - }, - ]; - - const uischema = { - type: 'Control', - scope: '#/properties/color', - }; - - const wrapper = mount( - - ); - const mockEnumControlUnwrappedProps = wrapper - .find(MockEnumCellUnwrapped) - .props(); - expect(mockEnumControlUnwrappedProps.uischema).toEqual(uischema); - expect(mockEnumControlUnwrappedProps.schema).toEqual(schema); - expect(mockEnumControlUnwrappedProps.options).toEqual([ - { value: 'red', label: 'red' }, - { value: 'amber', label: 'amber' }, - { value: 'green', label: 'green' }, - { value: null, label: 'null' }, - ]); -}); - -test('withJsonFormsDetailProps - should use uischemas props', () => { - const MockUISchemas = (_: StatePropsOfControlWithDetail) => { - return <>; - }; - - const MockBasicRenderer = withJsonFormsDetailProps(MockUISchemas); - - const schema = { - type: 'object', - properties: { - foo: { - type: 'string', - }, - bar: { - type: 'number', - }, - }, - }; - - const renderers = [ - { - tester: rankWith(1, () => true), - renderer: MockBasicRenderer, - }, - ]; - - const uischemas = [ - { - tester: (_jsonSchema: JsonSchema, schemaPath: string) => { - return schemaPath === '#/properties/color' ? 2 : NOT_APPLICABLE; - }, - uischema: { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/foo', - }, - { - type: 'Control', - scope: '#/properties/bar', - }, - ], - }, - }, - ]; - - const uischema = { - type: 'Control', - scope: '#', - }; - - const wrapper = mount( - - ); - const mockUISchemasProps = wrapper.find(MockUISchemas).props(); - expect(mockUISchemasProps.uischema).toEqual(uischema); - expect(mockUISchemasProps.schema).toEqual(schema); - expect(mockUISchemasProps.uischemas).toEqual(uischemas); -}); - -test('withJsonFormsDetailProps - should update uischemas after change', () => { - const MockUISchemas = (_: StatePropsOfControlWithDetail) => { - return <>; - }; - - const MockBasicRenderer = withJsonFormsDetailProps(MockUISchemas); - - const schema = { - type: 'object', - properties: { - foo: { - type: 'string', - }, - bar: { - type: 'number', - }, - }, - }; - - const renderers = [ - { - tester: rankWith(1, () => true), - renderer: MockBasicRenderer, - }, - ]; - - const newUischemas = [ - { - tester: (_jsonSchema: JsonSchema, schemaPath: string) => { - return schemaPath === '#/properties/color' ? 2 : NOT_APPLICABLE; - }, - uischema: { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/foo', - }, - { - type: 'Control', - scope: '#/properties/bar', - }, - ], - }, - }, - ]; - - const uischema = { - type: 'Control', - scope: '#', - }; - - const wrapper = mount( - - ); - - wrapper.setProps({ uischemas: newUischemas }); - wrapper.update(); - const mockUISchemasProps = wrapper.find(MockUISchemas).props(); - expect(mockUISchemasProps.uischemas).toEqual(newUischemas); -}); diff --git a/packages/react/test/renderers/JsonForms.test.tsx b/packages/react/test/renderers/JsonForms.test.tsx deleted file mode 100644 index d863fb6bb9..0000000000 --- a/packages/react/test/renderers/JsonForms.test.tsx +++ /dev/null @@ -1,1244 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { combineReducers, createStore } from 'redux'; -import { Provider } from 'react-redux'; -import type { - ControlElement, - ControlProps, - DispatchCellProps, - JsonFormsState, - JsonFormsStore, - JsonSchema, - Layout, - Middleware, - RendererProps, - UISchemaElement, -} from '@jsonforms/core'; -import { - createAjv, - jsonFormsReducerConfig, - NOT_APPLICABLE, - rankWith, - registerCell, - registerRenderer, - schemaMatches, - uiTypeIs, - unregisterRenderer, -} from '@jsonforms/core'; -import { isEqual } from 'lodash'; -import Enzyme, { mount, shallow } from 'enzyme'; -import type { StatelessRenderer } from '../../src/Renderer'; -import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; -import { - JsonForms, - JsonFormsDispatch, - JsonFormsDispatchRenderer, -} from '../../src/JsonForms'; -import { - JsonFormsStateProvider, - useJsonForms, - withJsonFormsControlProps, -} from '../../src/JsonFormsContext'; -import { JsonFormsReduxContext } from '../../src/redux'; -import { DispatchCell } from '../../src/DispatchCell'; - -Enzyme.configure({ adapter: new Adapter() }); - -/** - * Describes the initial state of the JSON Form's store. - */ -export interface JsonFormsInitialState { - /** - * Data instance to be rendered. - */ - data: any; - - /** - * JSON Schema describing the data to be rendered. - */ - schema?: JsonSchema; - - /** - * UI Schema describing the UI to be rendered. - */ - uischema?: UISchemaElement; - - /** - * Any additional state. - */ - [x: string]: any; -} - -export const initJsonFormsStore = ({ - data, - schema, - uischema, - ...props -}: JsonFormsInitialState): JsonFormsStore => { - const initState: JsonFormsState = { - jsonforms: { - core: { - data, - schema, - uischema, - }, - ...props, - }, - }; - const reducer = combineReducers({ - jsonforms: combineReducers(jsonFormsReducerConfig), - }); - return createStore(reducer, initState); -}; - -const CustomRenderer1: StatelessRenderer = () =>

test

; -const CustomRenderer2: StatelessRenderer = () =>

test

; -const CustomRenderer3: StatelessRenderer = () =>

test

; -const CellRenderer1: StatelessRenderer = () => ( -

test

-); -const CellRenderer2: StatelessRenderer = () => ( -

test

-); - -const fixture = { - data: { foo: 'John Doe' }, - uischema: { - type: 'Control', - scope: '#/properties/foo', - }, - schema: { - type: 'object', - properties: { - foo: { - type: 'string', - }, - stringArray: { - type: 'array', - items: { type: 'number' }, - }, - }, - }, -}; - -test('JsonForms renderer should report about missing renderer', () => { - const store = initJsonFormsStore({ - data: fixture.data, - uischema: fixture.uischema, - }); - - const wrapper = mount( - - - - - - ); - - expect(wrapper.text()).toContain('No applicable renderer found'); - wrapper.unmount(); -}); - -test('JsonForms renderer should pick most applicable renderer', () => { - const store = initJsonFormsStore({ - data: fixture.data, - uischema: fixture.uischema, - }); - store.dispatch(registerRenderer(() => 10, CustomRenderer1)); - store.dispatch(registerRenderer(() => 5, CustomRenderer2)); - const wrapper = mount( - - - - - - ); - - expect(wrapper.find('h1').text()).toBe('test'); - wrapper.unmount(); -}); - -test('JsonForms renderer should not consider any de-registered renderers', () => { - const tester1 = () => 9; - const tester2 = () => 8; - const tester3 = () => 10; - const store = initJsonFormsStore({ - data: fixture.data, - uischema: fixture.uischema, - }); - store.dispatch(registerRenderer(tester1, CustomRenderer1)); - store.dispatch(registerRenderer(tester2, CustomRenderer2)); - store.dispatch(registerRenderer(tester3, CustomRenderer3)); - store.dispatch(unregisterRenderer(tester3, CustomRenderer2)); - const wrapper = mount( - - - - - - ); - - expect(wrapper.find('h1')).toBeDefined(); - wrapper.unmount(); -}); - -test('deregister an unregistered renderer should be a no-op', () => { - const store = initJsonFormsStore(fixture); - store.dispatch(registerRenderer(() => 10, CustomRenderer1)); - store.dispatch(registerRenderer(() => 5, CustomRenderer2)); - const tester = () => 10; - const nrOfRenderers = store.getState().jsonforms.renderers.length; - store.dispatch(unregisterRenderer(tester, CustomRenderer3)); - expect(store.getState().jsonforms.renderers.length).toBe(nrOfRenderers); -}); - -test('ids should be unique within the same form', () => { - const FakeLayout = (props: RendererProps) => { - const layout = props.uischema as Layout; - const children = layout.elements.map((e, idx) => ( - - )); - return
{children}
; - }; - - const uischema2 = { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/foo', - }, - { - type: 'Control', - scope: '#/properties/foo', - }, - ], - }; - - const store = initJsonFormsStore({ - data: fixture.data, - schema: fixture.schema, - uischema: uischema2, - renderers: [ - { - tester: rankWith(10, uiTypeIs('HorizontalLayout')), - renderer: FakeLayout, - }, - ], - }); - - const ids: string[] = []; - const MyCustomRenderer: StatelessRenderer = (props: any) => { - ids.push(props.id); - return
Custom
; - }; - store.dispatch(registerRenderer(() => 10, MyCustomRenderer)); - - const wrapper = mount( - - - - - - ); - - expect(ids.indexOf('#/properties/foo') > -1).toBeTruthy(); - expect(ids.indexOf('#/properties/foo2') > -1).toBeTruthy(); - wrapper.unmount(); -}); - -test('render schema with $ref', () => { - const schemaWithRef = { - definitions: { - n: { - type: 'number', - }, - }, - type: 'object', - properties: { - foo: { - $ref: '#/definitions/n', - }, - }, - }; - - const tester = rankWith( - 1, - schemaMatches((schema) => schema.type === 'number') - ); - - const renderers = [ - { - tester: tester, - renderer: CustomRenderer2, - }, - ]; - - const wrapper = mount( - - ); - - expect(wrapper.find(CustomRenderer2).length).toBe(1); - wrapper.unmount(); -}); - -test('updates schema with ref', () => { - const schemaWithRef = { - definitions: { - n: { - type: 'number', - }, - }, - type: 'object', - properties: { - foo: { - $ref: '#/definitions/n', - }, - }, - }; - const resolvedSchema: any = { - definitions: { - n: { - type: 'number', - }, - }, - type: 'object', - properties: { - foo: { - type: 'number', - }, - }, - }; - - const tester1 = rankWith( - 1, - schemaMatches((schema) => schema.type === 'string') - ); - const tester2 = rankWith( - 1, - schemaMatches((schema) => schema.type === 'number') - ); - - const renderers = [ - { - tester: tester1, - renderer: CustomRenderer1, - }, - { - tester: tester2, - renderer: CustomRenderer2, - }, - ]; - - const wrapper = mount( - - ); - expect(wrapper.find(CustomRenderer1).length).toBe(1); - - wrapper.setProps({ schema: schemaWithRef }); - - wrapper.update(); - expect(wrapper.find(CustomRenderer2).length).toBe(1); - wrapper.unmount(); -}); - -test('JsonForms renderer should pick most applicable renderer via ownProps', () => { - const store = initJsonFormsStore({ - data: fixture.data, - uischema: fixture.uischema, - }); - store.dispatch(registerRenderer(() => 10, CustomRenderer1)); - store.dispatch(registerRenderer(() => 5, CustomRenderer2)); - - const wrapper = mount( - - - 3, renderer: CustomRenderer3 }, - { tester: () => 1, renderer: CustomRenderer2 }, - ]} - /> - - - ); - expect(wrapper.find('h3').text()).toBe('test'); - wrapper.unmount(); -}); - -test('JsonForms renderer should pick most applicable cell renderer via ownProps', () => { - const uiSchema = { - type: 'Control', - scope: '#/properties/stringArray', - }; - const data = { stringArray: ['lol', 'pop'] }; - const schema = { - type: 'object', - properties: { - stringArray: { - type: 'array', - items: { type: 'string' }, - }, - }, - }; - const store = initJsonFormsStore({ - data: data, - uischema: uiSchema, - schema: schema, - }); - store.dispatch(registerCell(() => 50, CellRenderer1)); - - const ArrayRenderer: StatelessRenderer = ( - props: RendererProps - ) => { - return ( - - ); - }; - - const wrapper = mount( - - - 100, renderer: ArrayRenderer }]} - cells={[{ tester: () => 1, cell: CellRenderer2 }]} - /> - - - ); - expect(wrapper.find({ className: 'cell test 2' })).toHaveLength(1); - wrapper.unmount(); -}); - -test('JsonForms renderer should not fail when there are no renderers in store, but there are in ownProps', () => { - const store = initJsonFormsStore({ - data: fixture.data, - uischema: fixture.uischema, - }); - - const wrapper = mount( - - - 3, renderer: CustomRenderer3 }]} - /> - - - ); - expect(wrapper.find('h3').text()).toBe('test'); - wrapper.unmount(); -}); - -test('JsonForms renderer should pick uiSchema from ownProps', () => { - const store = initJsonFormsStore({ - data: fixture.data, - uischema: fixture.uischema, - }); - store.dispatch( - registerRenderer( - rankWith(10, uiTypeIs('HorizontalLayout')), - CustomRenderer1 - ) - ); - store.dispatch(registerRenderer(() => 5, CustomRenderer2)); - - const myUiSchema = { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/foo', - }, - ], - }; - const wrapper = mount( - - - - - - ); - - expect(wrapper.find('h1').text()).toBe('test'); - wrapper.unmount(); -}); - -test('JsonForms renderer should pick schema from ownProps', () => { - const mySchema = { - type: 'object', - properties: { - foo: { - type: 'boolean', - }, - }, - }; - const store = initJsonFormsStore({ - data: fixture.data, - uischema: fixture.uischema, - schema: fixture.schema, - }); - - store.dispatch( - registerRenderer( - rankWith(10, (_, schema) => isEqual(schema, mySchema)), - CustomRenderer1 - ) - ); - store.dispatch(registerRenderer(() => 5, CustomRenderer2)); - - const wrapper = mount( - - - - - - ); - expect(wrapper.find('h1').text()).toBe('test'); - wrapper.unmount(); -}); - -test('JsonForms renderer should pick enabled prop from ownProps', () => { - const CustomRenderer4: StatelessRenderer = ( - props: RendererProps - ) => { - return

{`${props.enabled}`}

; - }; - - const store = initJsonFormsStore({ - data: fixture.data, - uischema: fixture.uischema, - schema: fixture.schema, - }); - - store.dispatch(registerRenderer(() => 5, CustomRenderer4)); - - const wrapper = mount( - - - - - - ); - expect(wrapper.find('h3').text()).toBe('false'); - wrapper.unmount(); -}); - -test('JsonForms should support two isolated components', () => { - const schema1 = { - type: 'object', - properties: { - foo: { - type: 'string', - minLength: 1, - }, - }, - }; - const schema2 = { - type: 'object', - properties: { - bar: { - type: 'number', - minimum: 1, - }, - }, - }; - const customRenderer1 = () => { - const ctx = useJsonForms(); - const errors = ctx.core.errors; - return

{errors ? errors.length : 0}

; - }; - const customRenderer2 = () => { - const ctx = useJsonForms(); - const errors = ctx.core.errors; - return

{errors ? errors.length : 0}

; - }; - const fooControl: ControlElement = { - type: 'Control', - scope: '#/properties/foo', - }; - const barControl: ControlElement = { - type: 'Control', - scope: '#/properties/bar', - }; - const wrapper = mount( -
- 3, renderer: customRenderer1 }]} - /> - 3, renderer: customRenderer2 }]} - /> -
- ); - - expect(wrapper.find('h2').text()).toBe('1'); - expect(wrapper.find('h1').text()).toBe('1'); - wrapper.unmount(); -}); - -test('JsonForms should create a JsonFormsStateProvider with initState props', () => { - const tester = (_uischema: UISchemaElement, s: JsonSchema) => - s.properties.foo.type === 'number' ? 1 : -1; - - const renderers = [ - { - tester: tester, - renderer: CustomRenderer2, - }, - ]; - - const ajv = createAjv(); - - const wrapper = mount( - - ); - - const jsonFormsStateProviderInitStateProp = wrapper - .find(JsonFormsStateProvider) - .props().initState; - expect(jsonFormsStateProviderInitStateProp.core.data).toBe(fixture.data); - expect(jsonFormsStateProviderInitStateProp.core.uischema).toBe( - fixture.uischema - ); - expect(jsonFormsStateProviderInitStateProp.core.schema).toBe(fixture.schema); - expect(jsonFormsStateProviderInitStateProp.core.ajv).toBe(ajv); - - expect(jsonFormsStateProviderInitStateProp.renderers).toBe(renderers); -}); - -test('JsonForms should honor config passed via initState props', () => { - const customRenderer = () => { - const ctx = useJsonForms(); - return

{ctx.config.myConfigProperty}

; - }; - const renderers = [{ tester: () => 30, renderer: customRenderer }]; - - const wrapper = mount( - - ); - - wrapper.update(); - expect(wrapper.find('h2').text()).toBe('true'); - wrapper.unmount(); -}); - -test('JsonForms should generate an ui schema when uischema is not given', () => { - const schema = { - type: 'object', - properties: { - foo: { - type: 'string', - }, - }, - }; - const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/foo', - }, - ], - }; - - const wrapper = shallow( - - ); - - const jsonFormsStateProviderInitStateProp = wrapper - .find(JsonFormsStateProvider) - .props().initState; - expect(jsonFormsStateProviderInitStateProp.core.uischema).toStrictEqual( - uischema - ); -}); - -test('JsonForms should generate an ui schema when uischema is not valid', () => { - const schema = { - type: 'object', - properties: { - foo: { - type: 'string', - }, - }, - }; - const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/foo', - }, - ], - }; - - const wrapper = shallow( - - ); - - const jsonFormsStateProviderInitStateProp = wrapper - .find(JsonFormsStateProvider) - .props().initState; - expect(jsonFormsStateProviderInitStateProp.core.uischema).toStrictEqual( - uischema - ); -}); - -test('JsonForms should generate a schema when schema is not given', () => { - const schema: JsonSchema = { - type: 'object', - properties: { - foo: { - type: 'string', - }, - }, - additionalProperties: true, - required: ['foo'], - }; - const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/foo', - }, - ], - }; - - const wrapper = shallow( - - ); - - const jsonFormsStateProviderInitStateProp = wrapper - .find(JsonFormsStateProvider) - .props().initState; - expect(jsonFormsStateProviderInitStateProp.core.schema).toStrictEqual(schema); - expect(jsonFormsStateProviderInitStateProp.core.uischema).toStrictEqual( - uischema - ); -}); - -test('JsonForms should use uischemas', () => { - const schema = { - type: 'object', - properties: { - foo: { - type: 'object', - properties: { - bar: { - type: 'string', - }, - baz: { - type: 'number', - }, - }, - }, - }, - }; - - const uischemas = [ - { - tester: (_jsonSchema: JsonSchema, schemaPath: string) => { - return schemaPath === '#/properties/foo' ? 2 : NOT_APPLICABLE; - }, - uischema: { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/bar', - }, - { - type: 'Control', - scope: '#/properties/baz', - }, - ], - }, - }, - ]; - - const wrapper = shallow( - - ); - - const jsonFormsStateProviderInitStateProp = wrapper - .find(JsonFormsStateProvider) - .props().initState; - expect(jsonFormsStateProviderInitStateProp.uischemas).toStrictEqual( - uischemas - ); -}); - -test('JsonForms should not crash with undefined uischemas', () => { - const schema = { - type: 'object', - properties: { - foo: { - type: 'string', - }, - }, - }; - - const wrapper = shallow( - - ); - - const jsonFormsStateProviderInitStateProp = wrapper - .find(JsonFormsStateProvider) - .props().initState; - expect(jsonFormsStateProviderInitStateProp.uischemas).toStrictEqual( - undefined - ); -}); - -test('JsonForms should call onChange handler with new data', (done) => { - const onChangeHandler = jest.fn(); - const TestInputRenderer = withJsonFormsControlProps((props) => ( - props.handleChange('foo', ev.target.value)} /> - )); - - const renderers = [ - { - tester: () => 10, - renderer: TestInputRenderer, - }, - ]; - const wrapper = mount( - - ); - - wrapper.find('input').simulate('change', { - target: { - value: 'Test Value', - }, - }); - - // events are debounced for some time, so let's wait - setTimeout(() => { - const calls = onChangeHandler.mock.calls; - const lastCallParameter = calls[calls.length - 1][0]; - expect(lastCallParameter.data).toEqual({ foo: 'Test Value' }); - expect(lastCallParameter.errors).toEqual([]); - done(); - }, 50); -}); - -test('JsonForms should call onChange handler with errors', (done) => { - const onChangeHandler = jest.fn(); - const TestInputRenderer = withJsonFormsControlProps((props) => ( - props.handleChange('foo', ev.target.value)} /> - )); - - const schema = { - type: 'object', - properties: { - foo: { - type: 'string', - minLength: 5, - }, - }, - required: ['foo'], - }; - - const renderers = [ - { - tester: () => 10, - renderer: TestInputRenderer, - }, - ]; - const wrapper = mount( - - ); - - wrapper.find('input').simulate('change', { - target: { - value: 'xyz', - }, - }); - - // events are debounced for some time, so let's wait - setTimeout(() => { - const calls = onChangeHandler.mock.calls; - const lastCallParameter = calls[calls.length - 1][0]; - expect(lastCallParameter.data).toEqual({ foo: 'xyz' }); - expect(lastCallParameter.errors.length).toEqual(1); - expect(lastCallParameter.errors[0].keyword).toEqual('minLength'); - done(); - }, 50); -}); - -test('JsonForms should update if data prop is updated', () => { - const onChangeHandler = jest.fn(); - const TestInputRenderer = withJsonFormsControlProps((props) => ( - props.handleChange('foo', ev.target.value)} /> - )); - - const schema = { - type: 'object', - properties: { - foo: { - type: 'string', - minLength: 5, - }, - }, - required: ['foo'], - }; - - const renderers = [ - { - tester: () => 10, - renderer: TestInputRenderer, - }, - ]; - const wrapper = mount( - - ); - - wrapper.setProps({ data: { foo: 'Another name' } }); - wrapper.update(); - expect(wrapper.props().data.foo).toBe('Another name'); -}); - -test('JsonForms should use additionalErrors if provided', () => { - const CustomRendererWithError: StatelessRenderer = ({ - errors, - }: ControlProps) => { - return
{errors}
; - }; - - const renderers = [ - { - tester: () => 1000, - renderer: withJsonFormsControlProps(CustomRendererWithError), - }, - ]; - const additionalErrors = [ - { - instancePath: '', - dataPath: '', - schemaPath: '#/required', - keyword: 'required', - params: { - missingProperty: 'foo', - }, - message: 'Lorem ipsum', - }, - ]; - const wrapper = mount( - - ); - expect(wrapper.find('h5').text()).toBe('Lorem ipsum'); - wrapper.unmount(); -}); - -test('JsonForms should use react to additionalErrors update', () => { - const CustomRendererWithError: StatelessRenderer = ({ - errors, - }: ControlProps) => { - return
{errors}
; - }; - - const renderers = [ - { - tester: () => 1000, - renderer: withJsonFormsControlProps(CustomRendererWithError), - }, - ]; - const additionalErrors = [ - { - instancePath: '', - dataPath: '', - schemaPath: '#/required', - keyword: 'required', - params: { - missingProperty: 'foo', - }, - message: 'Lorem ipsum', - }, - ]; - const wrapper = mount( - - ); - expect(wrapper.find('h5').text()).toBe('Lorem ipsum'); - - wrapper.setProps({ - additionalErrors: [ - { - instancePath: '', - dataPath: '', - schemaPath: '#/required', - keyword: 'required', - params: { - missingProperty: 'foo', - }, - message: 'Foobar', - }, - ], - }); - wrapper.update(); - expect(wrapper.find('h5').text()).toBe('Foobar'); - wrapper.unmount(); -}); - -test('JsonForms middleware should be called if provided', async () => { - // given - const onChangeHandler = jest.fn(); - const customMiddleware = jest.fn(); - const TestInputRenderer = withJsonFormsControlProps((props) => ( - props.handleChange('foo', ev.target.value)} - value={props.data} - /> - )); - const renderers = [ - { - tester: () => 10, - renderer: TestInputRenderer, - }, - ]; - const controlledMiddleware: Middleware = (state, action, reducer) => { - if (action.type === 'jsonforms/UPDATE') { - customMiddleware(); - return state; - } else { - return reducer(state, action); - } - }; - const wrapper = mount( - - ); - - // wait for 50 ms for the change handler invocation - await new Promise((resolve) => setTimeout(resolve, 50)); - - // initial rendering should call onChange 1 time - expect(onChangeHandler).toHaveBeenCalledTimes(1); - const calls = onChangeHandler.mock.calls; - const lastCallParameter = calls[calls.length - 1][0]; - expect(lastCallParameter.data).toEqual({ foo: 'John Doe' }); - expect(lastCallParameter.errors).toEqual([]); - - // adapt test input - wrapper.find('input').simulate('change', { - target: { - value: 'Test Value', - }, - }); - - expect(customMiddleware).toHaveBeenCalledTimes(1); - - // wait for 50 ms for the change handler invocation - await new Promise((resolve) => setTimeout(resolve, 50)); - // change handler should not have been called another time as we blocked the update in the middleware - expect(onChangeHandler).toHaveBeenCalledTimes(1); - // The rendered field should also not have been updated - expect(wrapper.find('input').getDOMNode().value).toBe( - 'John Doe' - ); - - wrapper.unmount(); -}); - -test('JsonForms middleware should update state if modified', async () => { - // given - const onChangeHandler = jest.fn(); - const customMiddleware = jest.fn(); - const TestInputRenderer = withJsonFormsControlProps((props) => ( - props.handleChange('foo', ev.target.value)} - value={props.data} - /> - )); - const renderers = [ - { - tester: () => 10, - renderer: TestInputRenderer, - }, - ]; - const controlledMiddleware: Middleware = (state, action, reducer) => { - if (action.type === 'jsonforms/UPDATE') { - customMiddleware(); - const newState = reducer(state, action); - return { ...newState, data: { foo: `${newState.data.foo} Test` } }; - } else { - return reducer(state, action); - } - }; - const wrapper = mount( - - ); - - // wait for 50 ms for the change handler invocation - await new Promise((resolve) => setTimeout(resolve, 50)); - - // initial rendering should call onChange 1 time - expect(onChangeHandler).toHaveBeenCalledTimes(1); - { - const calls = onChangeHandler.mock.calls; - const lastCallParameter = calls[calls.length - 1][0]; - expect(lastCallParameter.data).toEqual({ foo: 'John Doe' }); - expect(lastCallParameter.errors).toEqual([]); - } - - // adapt input - wrapper.find('input').simulate('change', { - target: { - value: 'Test Value', - }, - }); - - // then - expect(customMiddleware).toHaveBeenCalledTimes(1); - expect(wrapper.find('input').getDOMNode().value).toBe( - 'Test Value Test' - ); - - // wait for 50 ms for the change handler invocation - await new Promise((resolve) => setTimeout(resolve, 50)); - // onChangeHandler should have been called after the state update - expect(onChangeHandler).toHaveBeenCalledTimes(2); - { - const calls = onChangeHandler.mock.calls; - const lastCallParameter = calls[calls.length - 1][0]; - expect(lastCallParameter.data).toEqual({ foo: 'Test Value Test' }); - expect(lastCallParameter.errors).toEqual([]); - } - - wrapper.unmount(); -}); diff --git a/packages/react/tsconfig.json b/packages/react/tsconfig.json deleted file mode 100644 index 9af7ef8c91..0000000000 --- a/packages/react/tsconfig.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "../../tsconfig.base", - "compilerOptions": { - "outDir": "./lib", - "sourceMap": true - }, - "exclude": ["node_modules"], - "files": ["./src/index.ts"] -} diff --git a/packages/react/tsconfig.redux.json b/packages/react/tsconfig.redux.json deleted file mode 100644 index 16f89f7c05..0000000000 --- a/packages/react/tsconfig.redux.json +++ /dev/null @@ -1,9 +0,0 @@ -{ - "extends": "./tsconfig.json", - "compilerOptions": { - "outDir": "./lib/redux", - "declarationDir": "./lib", - "sourceMap": true - }, - "files": ["./src/redux/index.ts"] -} diff --git a/packages/react/tsconfig.test.json b/packages/react/tsconfig.test.json deleted file mode 100644 index e5f8f6e651..0000000000 --- a/packages/react/tsconfig.test.json +++ /dev/null @@ -1,7 +0,0 @@ -{ - "extends": "./tsconfig", - "compilerOptions": { - "module": "CommonJS", - "target": "ES5" - } -} diff --git a/packages/vanilla-renderers/.eslintrc.js b/packages/vanilla-renderers/.eslintrc.js deleted file mode 100644 index 4fe93df200..0000000000 --- a/packages/vanilla-renderers/.eslintrc.js +++ /dev/null @@ -1,42 +0,0 @@ -/* eslint-env node */ -/** @type {import('eslint').Linter.Config} */ -module.exports = { - root: true, - parser: '@typescript-eslint/parser', - parserOptions: { - ecmaFeatures: { - jsx: true, - }, - }, - // There is no file include in ESLint. Thus, ignore all and include files via negative ignore (!) - ignorePatterns: ['/*', '!/src', '!/test', '!/example', '/example/dist'], - extends: [ - 'eslint:recommended', - 'plugin:@typescript-eslint/recommended', - 'plugin:import/recommended', - 'plugin:import/typescript', - 'plugin:react/recommended', - 'plugin:prettier/recommended', - ], - rules: { - '@typescript-eslint/no-explicit-any': 'off', - 'import/no-named-as-default': 'off', - // Base rule must be disabled to avoid incorrect errors - 'no-unused-vars': 'off', - '@typescript-eslint/no-unused-vars': [ - 'warn', // or "error" - { - argsIgnorePattern: '^_', - varsIgnorePattern: '^_', - caughtErrorsIgnorePattern: '^_', - }, - ], - 'import/no-unresolved': [ - 'error', - { - // Ignore ava import because it is incorrectly reported as unresolved despite working as expected. - ignore: ['^ava$'], - }, - ], - }, -}; diff --git a/packages/vanilla-renderers/.nycrc b/packages/vanilla-renderers/.nycrc deleted file mode 100644 index e898fd003d..0000000000 --- a/packages/vanilla-renderers/.nycrc +++ /dev/null @@ -1,6 +0,0 @@ -{ - "extends": "@istanbuljs/nyc-config-typescript", - "lines": 80, - "all": true, - "check-coverage": true -} diff --git a/packages/vanilla-renderers/.prettierrc.js b/packages/vanilla-renderers/.prettierrc.js deleted file mode 100644 index 2c26853c4a..0000000000 --- a/packages/vanilla-renderers/.prettierrc.js +++ /dev/null @@ -1,6 +0,0 @@ -module.exports = { - $schema: 'http://json.schemastore.org/prettierrc', - singleQuote: true, - jsxSingleQuote: true, - endOfLine: 'auto', -}; diff --git a/packages/vanilla-renderers/LICENSE b/packages/vanilla-renderers/LICENSE deleted file mode 100644 index 064ca1d9d2..0000000000 --- a/packages/vanilla-renderers/LICENSE +++ /dev/null @@ -1,22 +0,0 @@ -The MIT License - -Copyright (c) 2019 EclipseSource Munich -https://github.com/eclipsesource/jsonforms - -Permission is hereby granted, free of charge, to any person obtaining a copy -of this software and associated documentation files (the "Software"), to deal -in the Software without restriction, including without limitation the rights -to use, copy, modify, merge, publish, distribute, sublicense, and/or sell -copies of the Software, and to permit persons to whom the Software is -furnished to do so, subject to the following conditions: - -The above copyright notice and this permission notice shall be included in -all copies or substantial portions of the Software. - -THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR -IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, -FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE -AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER -LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, -OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN -THE SOFTWARE. diff --git a/packages/vanilla-renderers/README.md b/packages/vanilla-renderers/README.md deleted file mode 100644 index cd54db10d1..0000000000 --- a/packages/vanilla-renderers/README.md +++ /dev/null @@ -1,117 +0,0 @@ -# JSON Forms - More Forms. Less Code - -_Complex forms in the blink of an eye_ - -JSON Forms eliminates the tedious task of writing fully-featured forms by hand by leveraging the capabilities of JSON, JSON Schema and Javascript. - -## Vanilla Renderers Package - -This is the JSONForms Vanilla Renderers Package. This package only contains renderers and must be combined with [JSON Forms React](https://github.com/eclipsesource/jsonforms/blob/master/packages/react). - -You can combine [JSON Forms React](https://github.com/eclipsesource/jsonforms/blob/master/packages/react) with other renderers too, for example with the [Material Renderers](https://github.com/eclipsesource/jsonforms/tree/master/packages/material). - -See the official [documentation](https://jsonforms.io/docs/integrations/react/) and the JSON Forms React [seed repository](https://github.com/eclipsesource/jsonforms-react-seed) for examples on how to integrate JSON Forms with your application. - -Check for all published JSONForms packages. - -If you want to customize styling, have a look at our [styles guide](https://github.com/eclipsesource/jsonforms/blob/master/packages/vanilla-renderers/Styles.md). - -### Quick start - -Install JSON Forms Core, React and React Vanilla Renderers - -```bash -npm i --save @jsonforms/core @jsonforms/react @jsonforms/vanilla-renderers -``` - -Use the `JsonForms` component for each form you want to render and hand over the renderer set. - -```js -import React, { useState } from 'react'; -import { JsonForms } from '@jsonforms/react'; -import { vanillaCells, vanillaRenderers } from '@jsonforms/vanilla-renderers'; - -const schema = { - type: 'object', - properties: { - name: { - type: 'string', - minLength: 1, - }, - done: { - type: 'boolean', - }, - due_date: { - type: 'string', - format: 'date', - }, - recurrence: { - type: 'string', - enum: ['Never', 'Daily', 'Weekly', 'Monthly'], - }, - }, - required: ['name', 'due_date'], -}; -const uischema = { - type: 'VerticalLayout', - elements: [ - { - type: 'Control', - label: false, - scope: '#/properties/done', - }, - { - type: 'Control', - scope: '#/properties/name', - }, - { - type: 'HorizontalLayout', - elements: [ - { - type: 'Control', - scope: '#/properties/due_date', - }, - { - type: 'Control', - scope: '#/properties/recurrence', - }, - ], - }, - ], -}; -const initialData = {}; -function App() { - const [data, setData] = useState(initialData); - return ( - setData(data)} - /> - ); -} -``` - -## License - -The JSON Forms project is licensed under the MIT License. See the [LICENSE file](https://github.com/eclipsesource/jsonforms/blob/master/LICENSE) for more information. - -## Roadmap - -Our current roadmap is available [here](https://github.com/eclipsesource/jsonforms/blob/master/ROADMAP.md). - -## Feedback, Help and Support - -JSON Forms is developed by [EclipseSource](https://eclipsesource.com). - -If you encounter any problems feel free to [open an issue](https://github.com/eclipsesource/jsonforms/issues/new/choose) on the repo. -For questions and discussions please use the [JSON Forms board](https://jsonforms.discourse.group). -You can also reach us via [email](mailto:jsonforms@eclipsesource.com?subject=JSON%20Forms). -In addition, EclipseSource also offers [professional support](https://jsonforms.io/support) for JSON Forms. - -## Migration - -See our [migration guide](https://github.com/eclipsesource/jsonforms/blob/master/MIGRATION.md) when updating JSON Forms. diff --git a/packages/vanilla-renderers/Styles.md b/packages/vanilla-renderers/Styles.md deleted file mode 100644 index bc91c462f7..0000000000 --- a/packages/vanilla-renderers/Styles.md +++ /dev/null @@ -1,150 +0,0 @@ -# Style handling in the Vanilla Renderer Set - -## List of all Style Ids and hardcoded classNames - -### ArrayRenderer - -#### Hardcoded ClassNames - -- control - -#### Ids - -- array.layout → id for the whole control -- array.button → id for the add button -- array.children → id for the area of the children - -### CategorizationRenderer - -#### Ids - -- categorization → id for the whole control -- categorization.master → id for the master part -- categorization.detail → id for the detail part -- category.subcategories → id for a new list in the master -- category.group → id for a categorization in the master list - -### LabelRenderer - -#### Ids - -- label-control → id for the label - -### TableArrayRenderer - -#### Ids - -- array.table → id for the whole control -- array.table.table → id for the table -- array.table.label → id for the label in the header -- array.table.button → id for the add button -- array.table.validation → id for the validation field -- array.table.validation.error → id for the validation error field -- array.validation.error → id for the validation column if activated - -### GroupRenderer - -#### Hardcoded ClassNames - -- group-layout-item → class for a child - -#### Ids - -- group.layout → id for the group -- group.label → id for the group label -- group.layout.item → id for each wrapper of the children of the group - -### HorizontalLayoutRenderer - -#### Hardcoded ClassNames - -- horizontal-layout-item → class for a child - -#### Ids - -- horizontal.layout → id for the horizontal layout -- horizontal.layout.item → id for each wrapper of the children of the horizontal layout - -### VerticalLayoutRenderer - -#### Hardcoded ClassNames - -- vertical-layout-item → class for a child - -#### Ids - -- vertical.layout → id for the vertical layout -- vertical.layout.item → id for each wrapper of the children of the vertical layout - -### Controls - -#### Hardcoded ClassNames - -- validate valid/invalid → id for the input of control indicating whether it is valid or not - -#### Ids - -- control → id for the whole control -- control.label → id for the label of control -- control.validation → id for the validation of control -- control.validation.error → id for the validation error of control -- input.description → id for the description of control - -## Example of styling id contributions - -By default, the `vanillaStyles` defined in [src/styles/styles.ts](./src/styles/styles.ts) are applied. -These can be overwritten via the `JsonFormsStyleContext`. -The following example will completely replace the default styles. - -```typescript -import { JsonFormsStyleContext } from '@jsonforms/vanilla-renderers'; - -const styleContextValue = { styles: [ - { - name: 'control.input', - classNames: ['custom-input'] - }, - { - name: 'array.button', - classNames: ['custom-array-button'] - } -]}; - - - - -``` - -You can also extend the existing default styles. -Thereby, the existing style classes as well as your custom ones will be applied. -This is the case because all style definitions for an ID are merged. - -```typescript -import { JsonFormsStyleContext, vanillaStyles } from '@jsonforms/vanilla-renderers'; - -const styleContextValue = { styles: [ - ...vanillaStyles, - { - name: 'control.input', - classNames: ['custom-input'] - }, - { - name: 'array.button', - classNames: ['custom-array-button'] - } -]}; - - - - -``` diff --git a/packages/vanilla-renderers/example/example.css b/packages/vanilla-renderers/example/example.css deleted file mode 100644 index d1e1949ca1..0000000000 --- a/packages/vanilla-renderers/example/example.css +++ /dev/null @@ -1,470 +0,0 @@ -:root { - --jsf-main-bg-color: white; - --jsf-modest-bg-color: #dddddd; - --jsf-border-color: lightgray; - --jsf-modest-bg-highlight-color: silver; - --jsf-validation-color: red; - --jsf-main-fg-color: black; - --jsf-description-color: #939393; - background-color: var(--jsf-main-bg-color); - color: var(--jsf-main-fg-color); -} - -body { - margin: 0; - padding: 1em; - width: 100vw; - height: 100vh; -} - -/* Common */ - -[hidden] { - display: none; -} - -/* Controls */ - -input { - height: 1.25em; -} - -.jsf-label { - margin: 0.5em 1em; - font-weight: bold; - border-bottom: 1px solid var(--jsf-border-color); -} - -.control { - display: flex; - flex: 1; - flex-direction: column; - margin: 0.25em 1em; -} - -.control.trim { - display: inline-flex; -} - -.control.trim > *:first-child { - margin-right: 0; -} - -.control > * { - margin-left: 0.25em; -} - -.control > *:first-child { - margin-left: 0; - margin-right: -0.25em; -} - -.control > label { - font-weight: bold; - color: var(--jsf-main-fg-color); -} - -.control > .validation:empty { - margin-left: 0; -} - -.control > .input-description, -.control > .validation { - font-size: 0.75rem; - text-align: left; - margin-top: 0.5em; - min-height: 1em; - font-family: 'Roboto', 'Helvetica', 'Arial', sans-serif; - line-height: 1em; -} - -.control > .validation { - color: var(--jsf-validation-color); -} - -.control > .input-description { - color: var(--jsf-description-color); -} - -.control > .input { - border-style: solid; - border-width: thin; - border-radius: 0.2em; - border-color: var(--jsf-border-color); - padding: 0.2em; - color: var(--jsf-main-fg-color); -} - -.control > input.input { - background-color: transparent; -} - -.control.validation_error > .input { - border-color: var(--jsf-validation-color); -} - -.control[hidden] { - display: none; -} - -/* Layouts */ - -.vertical-layout { - display: flex; - flex-direction: column; -} - -.vertical-layout[hidden] { - display: none; -} - -.vertical-layout > * { - flex: 1; -} - -.horizontal-layout { - display: flex; - flex-direction: row; - align-items: flex-start; -} - -.horizontal-layout[hidden] { - display: none; -} - -.horizontal-layout > * { - flex: 1; -} - -.group-layout { - display: flex; - flex-direction: column; - border-style: solid; - border-color: var(--jsf-border-color); - border-width: thin; - border-radius: 0.2em; -} - -.group-layout[hidden] { - display: none; -} - -.group-layout > legend { - padding: 0 0.5em; - font-weight: bold; - color: var(--jsf-main-fg-color); -} - -.categorization { - display: flex; - flex-direction: row; -} - -.categorization[hidden] { - display: none; -} - -.categorization > * { - border-style: solid; - border-width: thin; - border-color: var(--jsf-border-color); - border-radius: 0.2em; -} - -.categorization > *:first-child { - margin-right: 0.25em; -} - -.categorization > .categorization-master { - flex: 1; -} - -.categorization > .categorization-master ul { - list-style-type: none; - font-weight: normal; -} - -.categorization > .categorization-master ul > li > span { - cursor: pointer; - display: block; - color: var(--jsf-main-fg-color); -} - -.categorization > .categorization-master ul > li > span:hover { - font-weight: bold; -} - -.categorization > .categorization-master ul > li.category-group > ul { - padding-left: 0.5em; -} - -.categorization > .categorization-master ul > li.category-group > span { - cursor: default; -} - -.categorization > .categorization-master ul > li.category-group > span:hover { - font-weight: normal; -} - -.categorization > .categorization-master ul > li.selected > span { - font-weight: bold; -} - -.categorization > .categorization-detail { - flex: 3; -} - -.jsf-treeMasterDetail { - display: flex; - flex-direction: column; -} - -.jsf-treeMasterDetail > .jsf-treeMasterDetail-content { - display: flex; - flex-direction: row; -} - -.jsf-treeMasterDetail > .jsf-treeMasterDetail-content > * { - border-style: solid; - border-width: thin; - border-color: var(--jsf-border-color); - border-radius: 0.2em; -} - -.jsf-treeMasterDetail > .jsf-treeMasterDetail-content > *:first-child { - margin-right: 0.25em; -} - -.jsf-treeMasterDetail-master { - flex: 1; -} - -.jsf-treeMasterDetail-detail { - flex: 3; -} - -.jsf-treeMasterDetail-master ul { - list-style-type: none; - margin: 0; - padding: 0; - position: relative; - overflow: hidden; -} - -.jsf-treeMasterDetail-master li { - min-height: 1em; - position: relative; - padding-left: 1.5em; -} - -.jsf-treeMasterDetail-master li > div { - display: flex; - flex-direction: row; -} - -.jsf-treeMasterDetail-master li > div > .icon { - flex-basis: 1em; - min-height: 1em; - margin-right: 0.25em; - background-repeat: no-repeat; - background-position: center; -} - -.jsf-treeMasterDetail-master li > div > .icon.folder { - background-image: url('./icons/folder.png'); -} - -.jsf-treeMasterDetail-master li > div > .icon.page { - background-image: url('./icons/page.png'); -} - -.jsf-treeMasterDetail-master li > div > .icon.drive { - background-image: url('./icons/drive.png'); -} - -.jsf-treeMasterDetail-master li.selected > div > .label { - font-weight: bold; - background-color: lightgray; -} - -.jsf-treeMasterDetail-master li > div > .label { - display: flex; - flex: 1; - margin-right: 1em; - min-height: 1em; - color: var(--jsf-main-fg-color); -} - -/* TODO: Needed? */ - -.jsf-treeMasterDetail-master li > div > .label > span:first-child:empty { - background: #ffff00; - min-height: 1em; -} - -.jsf-treeMasterDetail-master li > div > .label:hover { - font-weight: bold; - cursor: pointer; - background-color: var(--jsf-modest-bg-color); -} - -.jsf-treeMasterDetail-master li > div > .label > .add, -.jsf-treeMasterDetail-master li > div > .label > .remove { - display: none; - cursor: pointer; - margin-left: 0.25em; - min-width: 1em; - font-weight: normal; -} - -.jsf-treeMasterDetail-master li > div > .label:hover > .add, -.jsf-treeMasterDetail-master li > div > .label:hover > .remove { - display: flex; - justify-content: center; -} - -.jsf-treeMasterDetail-master li > div > .label:hover > .add:hover, -.jsf-treeMasterDetail-master li > div > .label:hover > .remove:hover { - background-color: var(--jsf-modest-bg-highlight-color); -} - -.jsf-treeMasterDetail-master li::before, -.jsf-treeMasterDetail-master li::after, -.jsf-treeMasterDetail-master ul::after { - content: ''; - position: absolute; - left: 0.2em; -} - -.jsf-treeMasterDetail-master li::before { - border-top: 1px solid var(--jsf-border-color); - top: 0.5em; - width: 1em; -} - -.jsf-treeMasterDetail-master li::after { - border-left: 1px solid var(--jsf-border-color); - height: 100%; - top: -0.6em; -} - -.jsf-treeMasterDetail-master ul::after { - border-left: 1px solid var(--jsf-border-color); - height: 0.6em; - bottom: 0; -} - -.jsf-treeMasterDetail-master ul:last-child::after { - display: none; -} - -.jsf-treeMasterDetail-master > ul > li::after { - top: 0.5em; -} - -.jsf-treeMasterDetail-master > ul > li:last-child::after { - display: none; -} - -.jsf-treeMasterDetail-master > ul > li:only-child::before { - display: none; -} - -.jsf-treeMasterDetail-master > ul > li:only-child { - padding-left: 0.25em; -} - -jsonforms-tree > dialog > .content { - display: flex; - flex-direction: column; -} - -.array-layout { - display: flex; - flex: 1; - flex-direction: column; - border-style: solid; - border-color: var(--jsf-border-color); - border-width: thin; - border-radius: 0.2em; -} - -.array-layout[hidden] { - display: none; -} - -.array-layout > legend { - padding: 0 0.5em; - font-weight: bold; -} - -.array-layout > legend > label { - margin-right: 1em; - color: var(--jsf-main-fg-color); -} - -.array-layout > .children > * { - border-bottom: 1px solid var(--jsf-border-color); - display: block; -} - -.array-layout > .children > *:last-child { - border-bottom: none; -} - -.array-table-layout.control > header, -.array-control-layout.control > header { - display: flex; - margin: 0.25em; -} - -.array-table-layout header label, -.array-control-layout header label { - flex: 1; - font-weight: bold; -} - -.array-control-layout.control > .children .child-controls { - display: flex; - justify-content: flex-end; - margin: 0 1em 0.75em 0; -} - -.array-table-layout table { - flex: 1; - display: flex; - flex-direction: column; -} - -.array-table-layout table.control > * { - margin: 0; -} - -.array-table-layout tr { - display: flex; -} - -.array-table-layout table, -.array-table-layout th, -.array-table-layout td { - border: 1px solid var(--jsf-border-color); - border-collapse: collapse; -} - -.array-table-layout th { - padding: 5px; - flex: 1; -} - -.array-table-layout td { - display: flex; - flex: 1; -} - -.array-table-layout td > * { - flex: 1; -} -.array-control-layout .children > div { - border-top: 1px solid var(--jsf-border-color); - padding-top: 10px; -} diff --git a/packages/vanilla-renderers/example/example.dark.css b/packages/vanilla-renderers/example/example.dark.css deleted file mode 100644 index 2abe540074..0000000000 --- a/packages/vanilla-renderers/example/example.dark.css +++ /dev/null @@ -1,30 +0,0 @@ -body.dark { - --jsf-main-bg-color: #222227; - --jsf-modest-bg-color: #333333; - --jsf-border-color: #444444; - --jsf-modest-bg-highlight-color: #444444; - --jsf-validation-color: darkred; - --jsf-main-fg-color: #999999; - background-color: var(--jsf-main-bg-color); - color: var(--jsf-main-fg-color); -} -body.dark input { - background-color: var(--jsf-main-bg-color); - color: var(--jsf-main-fg-color); -} -body.dark input:focus { - background-color: var(--jsf-main-bg-color); -} -body.dark select { - background-color: var(--jsf-main-bg-color); - color: var(--jsf-main-fg-color); - border-color: var(--jsf-border-color); -} -body.dark textarea { - background-color: var(--jsf-main-bg-color); - color: var(--jsf-main-fg-color); -} -body.dark button { - background-color: var(--jsf-modest-bg-color); - color: var(--jsf-main-fg-color); -} diff --git a/packages/vanilla-renderers/example/index.bundled.html b/packages/vanilla-renderers/example/index.bundled.html deleted file mode 100644 index bff34751e2..0000000000 --- a/packages/vanilla-renderers/example/index.bundled.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - JSON Forms React Vanilla RendererSet - - - - - - - - -
-
- - - diff --git a/packages/vanilla-renderers/example/index.html b/packages/vanilla-renderers/example/index.html deleted file mode 100644 index fa43367b7b..0000000000 --- a/packages/vanilla-renderers/example/index.html +++ /dev/null @@ -1,25 +0,0 @@ - - - - - JSON Forms React Vanilla RendererSet - - - - - - - - -
-
- - - diff --git a/packages/vanilla-renderers/example/index.tsx b/packages/vanilla-renderers/example/index.tsx deleted file mode 100644 index beea4f77b6..0000000000 --- a/packages/vanilla-renderers/example/index.tsx +++ /dev/null @@ -1,30 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import { createThemeSelection } from './theme.switcher'; -import { vanillaCells, vanillaRenderers } from '../src'; -import { renderExample } from '../../examples-react/src/index'; - -renderExample(vanillaRenderers, vanillaCells); -createThemeSelection(); diff --git a/packages/vanilla-renderers/example/theme.switcher.ts b/packages/vanilla-renderers/example/theme.switcher.ts deleted file mode 100644 index 9c4e7864d5..0000000000 --- a/packages/vanilla-renderers/example/theme.switcher.ts +++ /dev/null @@ -1,55 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -const knownThemes: { [key: string]: string } = { - normal: 'Normal Label Top', - dark: 'Dark label Top', -}; -const changeTheme = (style: string) => { - document.body.className = style; -}; -export const createThemeSelection = () => { - const themeDiv = document.getElementById('theme'); - - const select = document.createElement('select'); - select.id = 'example_theme'; - Object.keys(knownThemes).forEach((key) => { - const style = knownThemes[key]; - const option = document.createElement('option'); - option.value = key; - option.label = style; - option.text = style; - select.appendChild(option); - }); - select.onchange = () => { - changeTheme(select.value); - }; - - const themeLabel = document.createElement('label'); - themeLabel.textContent = 'Theme:'; - themeLabel.htmlFor = 'example_theme'; - - themeDiv.appendChild(themeLabel); - themeDiv.appendChild(select); -}; diff --git a/packages/vanilla-renderers/package.json b/packages/vanilla-renderers/package.json deleted file mode 100644 index 7897766e11..0000000000 --- a/packages/vanilla-renderers/package.json +++ /dev/null @@ -1,127 +0,0 @@ -{ - "name": "@jsonforms/vanilla-renderers", - "version": "3.6.0", - "description": "Default Renderer Set for JSON Forms", - "repository": "https://github.com/eclipsesource/jsonforms", - "bugs": "https://github.com/eclipsesource/jsonforms/issues", - "homepage": "http://jsonforms.io/", - "license": "MIT", - "main": "lib/jsonforms-react-vanilla.cjs.js", - "module": "lib/jsonforms-react-vanilla.esm.js", - "typings": "lib/index.d.ts", - "scripts": { - "build": "rollup -c rollup.config.js", - "build:examples-app": "rollup -c rollup.example.config.js", - "dev": "webpack-dev-server --config webpack/webpack.dev.js --env=dev", - "clean": "rimraf lib coverage dist .nyc_output example/dist 2> /dev/null", - "lint": "eslint .", - "lint:fix": "eslint --fix .", - "report": "nyc report --reporter=html", - "test": "jest --no-cache", - "test-cov": "jest --no-cache --coverage", - "doc": "typedoc --name 'JSON Forms Vanilla Renderers' --excludeExternals --out docs src" - }, - "files": [ - "lib", - "src", - "example", - "Styles.md" - ], - "keywords": [ - "vanilla", - "form", - "forms", - "json", - "jsonforms", - "frontend", - "generator", - "input", - "renderengine", - "jsonschema", - "schema", - "uischema", - "layout", - "customization" - ], - "dependencies": { - "lodash": "^4.17.21" - }, - "peerDependencies": { - "@jsonforms/core": "3.6.0", - "@jsonforms/react": "3.6.0", - "react": "^16.12.0 || ^17.0.0 || ^18.0.0 || ^19.0.0" - }, - "devDependencies": { - "@istanbuljs/nyc-config-typescript": "^1.0.2", - "@jsonforms/core": "workspace:*", - "@jsonforms/react": "workspace:*", - "@rollup/plugin-commonjs": "^23.0.3", - "@rollup/plugin-json": "^5.0.2", - "@rollup/plugin-node-resolve": "^15.0.1", - "@rollup/plugin-replace": "^5.0.1", - "@types/enzyme": "^3.10.3", - "@types/react": "^17.0.24", - "@typescript-eslint/eslint-plugin": "^5.54.1", - "@typescript-eslint/parser": "^5.54.1", - "@wojtekmaj/enzyme-adapter-react-17": "^0.6.7", - "copy-webpack-plugin": "^5.0.5", - "enzyme": "^3.11.0", - "eslint": "^8.56.0", - "eslint-config-prettier": "^8.7.0", - "eslint-plugin-import": "^2.27.5", - "eslint-plugin-prettier": "^4.2.1", - "eslint-plugin-react": "^7.32.2", - "jest": "^27.5.1", - "jsdom": "^22.0.0", - "jsdom-global": "^3.0.2", - "nyc": "^15.1.0", - "prettier": "^2.8.4", - "react": "^17.0.2", - "react-dom": "^17.0.2", - "rimraf": "^3.0.2", - "rollup": "^2.78.0", - "rollup-plugin-cleanup": "^3.2.1", - "rollup-plugin-copy": "^3.4.0", - "rollup-plugin-import-css": "^3.3.1", - "rollup-plugin-typescript2": "^0.34.1", - "rollup-plugin-visualizer": "^5.4.1", - "source-map-loader": "^0.2.4", - "ts-jest": "^27.1.4", - "ts-loader": "^9.5.1", - "ts-node": "^10.4.0", - "tslib": "^2.5.0", - "typedoc": "~0.25.3", - "webpack": "^5.78.0", - "webpack-cli": "^5.1.4", - "webpack-dev-server": "^4.15.1" - }, - "jest": { - "moduleFileExtensions": [ - "ts", - "tsx", - "js" - ], - "transform": { - "^.+\\.(ts|tsx)$": "ts-jest" - }, - "testEnvironment": "jsdom", - "testMatch": [ - "**/test/**/*.test.tsx" - ], - "testPathIgnorePatterns": [ - "/node_modules/", - "/dist/" - ], - "globals": { - "ts-jest": { - "tsconfig": "tsconfig.test.json" - } - } - }, - "nyc": { - "reporter": [ - "lcov", - "text-summary" - ] - } -} diff --git a/packages/vanilla-renderers/rollup.config.js b/packages/vanilla-renderers/rollup.config.js deleted file mode 100644 index bb960efe44..0000000000 --- a/packages/vanilla-renderers/rollup.config.js +++ /dev/null @@ -1,51 +0,0 @@ -import typescript from 'rollup-plugin-typescript2'; -import cleanup from 'rollup-plugin-cleanup'; -import { visualizer } from 'rollup-plugin-visualizer'; - -const packageJson = require('./package.json'); - -const baseConfig = { - input: 'src/index.ts', - external: [ - ...Object.keys(packageJson.dependencies ?? {}), - ...Object.keys(packageJson.peerDependencies), - 'react', - /^lodash\/.*/, - /^@material-ui\/.*/, - /^dayjs\/.*/, - ], -}; - -export default [ - { - ...baseConfig, - output: { - file: packageJson.module, - format: 'esm', - sourcemap: true, - }, - plugins: [ - typescript(), - cleanup({ extensions: ['js', 'ts', 'jsx', 'tsx'] }), - visualizer({ open: false }), - ], - }, - { - ...baseConfig, - output: { - file: packageJson.main, - format: 'cjs', - sourcemap: true, - }, - plugins: [ - typescript({ - tsconfigOverride: { - compilerOptions: { - target: 'ES5', - }, - }, - }), - cleanup({ extensions: ['js', 'ts', 'jsx', 'tsx'] }), - ], - }, -]; diff --git a/packages/vanilla-renderers/rollup.example.config.js b/packages/vanilla-renderers/rollup.example.config.js deleted file mode 100644 index 1c9925dfbf..0000000000 --- a/packages/vanilla-renderers/rollup.example.config.js +++ /dev/null @@ -1,62 +0,0 @@ -import commonjs from '@rollup/plugin-commonjs'; -import json from '@rollup/plugin-json'; -import nodeResolve from '@rollup/plugin-node-resolve'; -import replace from '@rollup/plugin-replace'; -import copy from 'rollup-plugin-copy'; -import css from 'rollup-plugin-import-css'; -import typescript from 'rollup-plugin-typescript2'; - -/** - * @type {import('rollup').RollupOptions} - */ -const config = { - input: 'example/index.tsx', - output: { - file: 'example/dist/bundle.js', - format: 'iife', - sourcemap: true, - }, - plugins: [ - replace({ - 'process.env.NODE_ENV': JSON.stringify('production'), - preventAssignment: true, // recommended to be set by library to be forward compatible - }), - nodeResolve({ browser: true }), - // Transform mixed because some JsonForms modules use import and require - commonjs({ transformMixedEsModules: true }), - css({ - output: 'bundle.css', - }), - json(), - typescript({ - tsconfigOverride: { - compilerOptions: { - // Do not emit typescript declarations for our bundled example app - declaration: false, - // With importing the examples-react's index directly from source instead of properly building the examples-react package, - // the React types can not be found during the build - noImplicitAny: false, - }, - }, - }), - copy({ - targets: [ - { - src: 'example/example*.css', - dest: 'example/dist', - }, - { - src: 'example/index.bundled.html', - dest: 'example/dist', - rename: () => 'index.html', - }, - { - src: '../examples-react/src/logo.svg', - dest: 'example/dist/assets', - }, - ], - }), - ], -}; - -export default config; diff --git a/packages/vanilla-renderers/src/actions/index.ts b/packages/vanilla-renderers/src/actions/index.ts deleted file mode 100644 index a251b7864f..0000000000 --- a/packages/vanilla-renderers/src/actions/index.ts +++ /dev/null @@ -1,45 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -export const REGISTER_STYLE = 'REGISTER_STYLE'; -export const REGISTER_STYLES = 'REGISTER_STYLES'; -export const UNREGISTER_STYLE = 'UNREGISTER_STYLE'; - -export const registerStyle = (styleName: string, classNames: string[]) => ({ - type: REGISTER_STYLE, - name: styleName, - classNames, -}); - -export const unregisterStyle = (styleName: string) => ({ - type: UNREGISTER_STYLE, - name: styleName, -}); - -export const registerStyles = ( - styleDefs: { name: string; classNames: string[] }[] -) => ({ - type: REGISTER_STYLES, - styles: styleDefs, -}); diff --git a/packages/vanilla-renderers/src/cells/BooleanCell.tsx b/packages/vanilla-renderers/src/cells/BooleanCell.tsx deleted file mode 100644 index efb76ebe6d..0000000000 --- a/packages/vanilla-renderers/src/cells/BooleanCell.tsx +++ /dev/null @@ -1,61 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - CellProps, - isBooleanControl, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { withJsonFormsCellProps } from '@jsonforms/react'; -import type { StatelessComponent } from 'react'; -import type { VanillaRendererProps } from '../index'; -import { withVanillaBooleanCellProps } from '../util/index'; - -export const BooleanCell: StatelessComponent = ( - props: CellProps & VanillaRendererProps -) => { - const { data, className, id, enabled, uischema, path, handleChange } = props; - - return ( - handleChange(path, ev.target.checked)} - className={className} - id={id} - disabled={!enabled} - autoFocus={uischema.options && uischema.options.focus} - /> - ); -}; - -/** - * Default tester for boolean controls. - * @type {RankedTester} - */ -export const booleanCellTester: RankedTester = rankWith(2, isBooleanControl); - -export default withJsonFormsCellProps(withVanillaBooleanCellProps(BooleanCell)); diff --git a/packages/vanilla-renderers/src/cells/CustomizableCells.ts b/packages/vanilla-renderers/src/cells/CustomizableCells.ts deleted file mode 100644 index 7ef26e31f8..0000000000 --- a/packages/vanilla-renderers/src/cells/CustomizableCells.ts +++ /dev/null @@ -1,35 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -export { BooleanCell } from './BooleanCell'; -export { DateCell } from './DateCell'; -export { DateTimeCell } from './DateTimeCell'; -export { EnumCell } from './EnumCell'; -export { IntegerCell } from './IntegerCell'; -export { NumberCell } from './NumberCell'; -export { NumberFormatCell } from './NumberFormatCell'; -export { SliderCell } from './SliderCell'; -export { TextCell } from './TextCell'; -export { TextAreaCell } from './TextAreaCell'; -export { TimeCell } from './TimeCell'; diff --git a/packages/vanilla-renderers/src/cells/DateCell.tsx b/packages/vanilla-renderers/src/cells/DateCell.tsx deleted file mode 100644 index 48eddc4909..0000000000 --- a/packages/vanilla-renderers/src/cells/DateCell.tsx +++ /dev/null @@ -1,57 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - CellProps, - isDateControl, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { withJsonFormsCellProps } from '@jsonforms/react'; -import type { VanillaRendererProps } from '../index'; -import { withVanillaCellProps } from '../util/index'; - -export const DateCell = (props: CellProps & VanillaRendererProps) => { - const { data, className, id, enabled, uischema, path, handleChange } = props; - - return ( - handleChange(path, ev.target.value)} - className={className} - id={id} - disabled={!enabled} - autoFocus={uischema.options && uischema.options.focus} - /> - ); -}; -/** - * Default tester for date controls. - * @type {RankedTester} - */ -export const dateCellTester: RankedTester = rankWith(2, isDateControl); - -export default withJsonFormsCellProps(withVanillaCellProps(DateCell)); diff --git a/packages/vanilla-renderers/src/cells/DateTimeCell.tsx b/packages/vanilla-renderers/src/cells/DateTimeCell.tsx deleted file mode 100644 index a842c9bb93..0000000000 --- a/packages/vanilla-renderers/src/cells/DateTimeCell.tsx +++ /dev/null @@ -1,60 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - CellProps, - isDateTimeControl, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { withJsonFormsCellProps } from '@jsonforms/react'; -import type { VanillaRendererProps } from '../index'; -import { withVanillaCellProps } from '../util/index'; - -export const DateTimeCell = (props: CellProps & VanillaRendererProps) => { - const { data, className, id, enabled, uischema, path, handleChange } = props; - const toISOString = (inputDateTime: string) => { - return inputDateTime === '' ? '' : inputDateTime + ':00.000Z'; - }; - - return ( - handleChange(path, toISOString(ev.target.value))} - className={className} - id={id} - disabled={!enabled} - autoFocus={uischema.options && uischema.options.focus} - /> - ); -}; -/** - * Default tester for datetime controls. - * @type {RankedTester} - */ -export const dateTimeCellTester: RankedTester = rankWith(2, isDateTimeControl); - -export default withJsonFormsCellProps(withVanillaCellProps(DateTimeCell)); diff --git a/packages/vanilla-renderers/src/cells/EnumCell.tsx b/packages/vanilla-renderers/src/cells/EnumCell.tsx deleted file mode 100644 index b6d53c9c15..0000000000 --- a/packages/vanilla-renderers/src/cells/EnumCell.tsx +++ /dev/null @@ -1,97 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React, { useMemo } from 'react'; -import { - EnumCellProps, - isEnumControl, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { - TranslateProps, - withJsonFormsEnumCellProps, - withTranslateProps, -} from '@jsonforms/react'; -import { i18nDefaults, withVanillaEnumCellProps } from '../util'; -import type { VanillaRendererProps } from '../index'; - -export const EnumCell = ( - props: EnumCellProps & VanillaRendererProps & TranslateProps -) => { - const { - data, - className, - id, - enabled, - schema, - uischema, - path, - handleChange, - options, - t, - } = props; - const noneOptionLabel = useMemo( - () => t('enum.none', i18nDefaults['enum.none'], { schema, uischema, path }), - [t, schema, uischema, path] - ); - return ( - - ); -}; -/** - * Default tester for enum controls. - * @type {RankedTester} - */ -export const enumCellTester: RankedTester = rankWith(2, isEnumControl); - -export default withJsonFormsEnumCellProps( - withTranslateProps(withVanillaEnumCellProps(EnumCell)) -); diff --git a/packages/vanilla-renderers/src/cells/IntegerCell.tsx b/packages/vanilla-renderers/src/cells/IntegerCell.tsx deleted file mode 100644 index 4e56ca649d..0000000000 --- a/packages/vanilla-renderers/src/cells/IntegerCell.tsx +++ /dev/null @@ -1,61 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - CellProps, - isIntegerControl, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { withJsonFormsCellProps } from '@jsonforms/react'; -import type { VanillaRendererProps } from '../index'; -import { withVanillaCellProps } from '../util/index'; - -const toNumber = (value: string) => - value === '' ? undefined : parseInt(value, 10); - -export const IntegerCell = (props: CellProps & VanillaRendererProps) => { - const { data, className, id, enabled, uischema, path, handleChange } = props; - - return ( - handleChange(path, toNumber(ev.target.value))} - className={className} - id={id} - disabled={!enabled} - autoFocus={uischema.options && uischema.options.focus} - /> - ); -}; -/** - * Default tester for integer controls. - * @type {RankedTester} - */ -export const integerCellTester: RankedTester = rankWith(2, isIntegerControl); - -export default withJsonFormsCellProps(withVanillaCellProps(IntegerCell)); diff --git a/packages/vanilla-renderers/src/cells/NumberCell.tsx b/packages/vanilla-renderers/src/cells/NumberCell.tsx deleted file mode 100644 index c8c925b948..0000000000 --- a/packages/vanilla-renderers/src/cells/NumberCell.tsx +++ /dev/null @@ -1,61 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - CellProps, - isNumberControl, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { withJsonFormsCellProps } from '@jsonforms/react'; -import type { VanillaRendererProps } from '../index'; -import { withVanillaCellProps } from '../util/index'; - -const toNumber = (value: string) => (value === '' ? undefined : Number(value)); - -export const NumberCell = (props: CellProps & VanillaRendererProps) => { - const { data, className, id, enabled, uischema, path, handleChange } = props; - - return ( - handleChange(path, toNumber(ev.target.value))} - className={className} - id={id} - disabled={!enabled} - autoFocus={uischema.options && uischema.options.focus} - /> - ); -}; - -/** - * Default tester for number controls. - * @type {RankedTester} - */ -export const numberCellTester: RankedTester = rankWith(2, isNumberControl); - -export default withJsonFormsCellProps(withVanillaCellProps(NumberCell)); diff --git a/packages/vanilla-renderers/src/cells/NumberFormatCell.tsx b/packages/vanilla-renderers/src/cells/NumberFormatCell.tsx deleted file mode 100644 index 7a4f90eab2..0000000000 --- a/packages/vanilla-renderers/src/cells/NumberFormatCell.tsx +++ /dev/null @@ -1,76 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - CellProps, - Formatted, - isNumberFormatControl, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { withJsonFormsCellProps } from '@jsonforms/react'; -import type { VanillaRendererProps } from '../index'; -import { withVanillaCellProps } from '../util/index'; - -export const NumberFormatCell = ( - props: CellProps & VanillaRendererProps & Formatted -) => { - const { className, id, enabled, uischema, path, handleChange, schema } = - props; - const maxLength = schema.maxLength; - const formattedNumber: string = props.toFormatted(props.data); - - const onChange = (ev: any) => { - const validStringNumber = props.fromFormatted(ev.currentTarget.value); - handleChange(path, validStringNumber); - }; - - return ( - - ); -}; - -/** - * Default tester for text-based/string controls. - * @type {RankedTester} - */ -export const numberFormatCellTester: RankedTester = rankWith( - 4, - isNumberFormatControl -); - -export default withJsonFormsCellProps(withVanillaCellProps(NumberFormatCell)); diff --git a/packages/vanilla-renderers/src/cells/OneOfEnumCell.tsx b/packages/vanilla-renderers/src/cells/OneOfEnumCell.tsx deleted file mode 100644 index b69df96a45..0000000000 --- a/packages/vanilla-renderers/src/cells/OneOfEnumCell.tsx +++ /dev/null @@ -1,101 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React, { useMemo } from 'react'; -import { - EnumCellProps, - isOneOfEnumControl, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { - TranslateProps, - withJsonFormsOneOfEnumCellProps, - withTranslateProps, -} from '@jsonforms/react'; -import { i18nDefaults, withVanillaEnumCellProps } from '../util'; -import type { VanillaRendererProps } from '../index'; - -export const OneOfEnumCell = ( - props: EnumCellProps & VanillaRendererProps & TranslateProps -) => { - const { - data, - className, - id, - enabled, - schema, - uischema, - path, - handleChange, - options, - t, - } = props; - const noneOptionLabel = useMemo( - () => t('enum.none', i18nDefaults['enum.none'], { schema, uischema, path }), - [t, schema, uischema, path] - ); - const noneOption = ( - - ); - return ( - - ); -}; -/** - * Default tester for oneOf enum controls. - * @type {RankedTester} - */ -export const oneOfEnumCellTester: RankedTester = rankWith( - 2, - isOneOfEnumControl -); - -export default withJsonFormsOneOfEnumCellProps( - withTranslateProps(withVanillaEnumCellProps(OneOfEnumCell)) -); diff --git a/packages/vanilla-renderers/src/cells/SliderCell.tsx b/packages/vanilla-renderers/src/cells/SliderCell.tsx deleted file mode 100644 index 98ad26ad0b..0000000000 --- a/packages/vanilla-renderers/src/cells/SliderCell.tsx +++ /dev/null @@ -1,61 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - CellProps, - isRangeControl, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { withJsonFormsCellProps } from '@jsonforms/react'; -import type { VanillaRendererProps } from '../index'; -import { withVanillaCellProps } from '../util/index'; - -export const SliderCell = (props: CellProps & VanillaRendererProps) => { - const { data, className, id, enabled, uischema, schema, path, handleChange } = - props; - - return ( -
- handleChange(path, Number(ev.target.value))} - className={className} - id={id} - disabled={!enabled} - autoFocus={uischema.options && uischema.options.focus} - style={{ flex: '1' }} - /> - -
- ); -}; - -export const sliderCellTester: RankedTester = rankWith(4, isRangeControl); - -export default withJsonFormsCellProps(withVanillaCellProps(SliderCell)); diff --git a/packages/vanilla-renderers/src/cells/TextAreaCell.tsx b/packages/vanilla-renderers/src/cells/TextAreaCell.tsx deleted file mode 100644 index 79185b8565..0000000000 --- a/packages/vanilla-renderers/src/cells/TextAreaCell.tsx +++ /dev/null @@ -1,62 +0,0 @@ -/* - The MIT License - - Copyright (c) 2017-2019 EclipseSource Munich - https://github.com/eclipsesource/jsonforms - - Permission is hereby granted, free of charge, to any person obtaining a copy - of this software and associated documentation files (the "Software"), to deal - in the Software without restriction, including without limitation the rights - to use, copy, modify, merge, publish, distribute, sublicense, and/or sell - copies of the Software, and to permit persons to whom the Software is - furnished to do so, subject to the following conditions: - - The above copyright notice and this permission notice shall be included in - all copies or substantial portions of the Software. - - THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR - IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, - FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE - AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER - LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, - OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN - THE SOFTWARE. -*/ -import React from 'react'; -import { - CellProps, - isMultiLineControl, - RankedTester, - rankWith, -} from '@jsonforms/core'; -import { withJsonFormsCellProps } from '@jsonforms/react'; -import type { VanillaRendererProps } from '../index'; -import { withVanillaCellProps } from '../util/index'; -import merge from 'lodash/merge'; - -export const TextAreaCell = (props: CellProps & VanillaRendererProps) => { - const { data, className, id, enabled, config, uischema, path, handleChange } = - props; - const appliedUiSchemaOptions = merge({}, config, uischema.options); - return ( - +
+ UI Schema +
{{ JSON.stringify(uischema, null, 2) }}
+
-
-

Select Example:

- -
-
-
- - +
+
@@ -155,60 +146,68 @@ export default defineComponent({ grid-row-gap: 1rem; grid-template-areas: 'header header header header' - '. tools tools .' '. aside main .'; } -.container > header { - grid-area: header; +.container>header { + grid-area: header; background-color: #00021e; padding: 2rem; color: white; text-align: center; } -.container > aside { - grid-area: aside; + +.expand-toggle { + margin-top: 1rem; + padding: 0.5rem 1rem; + background-color: #4a5568; + color: white; + border: none; + border-radius: 4px; + cursor: pointer; + font-size: 0.9rem; } -.container > main { - grid-area: main; + +.expand-toggle:hover { + background-color: #2d3748; +} + +.container>aside { + grid-area: aside; } -.container > .tools { - grid-area: tools; - display: flex; - align-items: center; - justify-content: center; - gap: 1rem; +.container>main { + grid-area: main; } aside .data { background-color: white; padding: 2rem; } -aside summary, -aside h5 { + +aside summary { font-size: 0.83em; font-weight: bold; margin: 0 0 1em; + cursor: pointer; } -aside summary { - cursor: default; -} + aside details pre { background: #eee; border: 0; - min-height: 300px; + padding: 1rem; + min-height: 200px; max-height: 500px; overflow: scroll; + font-size: 0.85em; } main article { background-color: white; - padding: 1rem; + padding: 2rem; } - -``` - -In your vuetify creation specify the icons used - -Material Design Icons (mdi) - -```js -import { mdi, aliases as mdiAliases } from 'vuetify/iconsets/mdi'; -import { createVuetify } from 'vuetify'; - -import { mdiIconAliases } from '@jsonforms/vue-vuetify'; -import '@mdi/font/css/materialdesignicons.css'; - -createVuetify({ - icons: { - defaultSet: 'mdi', - sets: { - mdi, - }, - aliases: { ...mdiAliases, ...mdiIconAliases };, - }, - }); -``` - -Font Awesome (fa) - -```js -import { fa, aliases as faAliases } from 'vuetify/iconsets/fa'; -import { createVuetify } from 'vuetify'; - -import { faIconAliases } from '@jsonforms/vue-vuetify'; -import '@fortawesome/fontawesome-free/css/all.css'; - -createVuetify({ - icons: { - defaultSet: 'fa', - sets: { - fa, - }, - aliases: { ...faAliases, ...faIconAliases };, - }, - }); -``` - -If note done yet, please [install Vuetify for Vue](https://vuetifyjs.com/en/getting-started/installation/). - -For more information on how JSON Forms can be configured, please see the [README of `@jsonforms/vue`](https://github.com/eclipsesource/jsonforms/blob/master/packages/vue/README.md). - -## License - -The JSONForms project is licensed under the MIT License. See the [LICENSE file](https://github.com/eclipsesource/jsonforms/blob/master/LICENSE) for more information. diff --git a/packages/vue-vuetify/dev/App.vue b/packages/vue-vuetify/dev/App.vue deleted file mode 100644 index eab6fa09be..0000000000 --- a/packages/vue-vuetify/dev/App.vue +++ /dev/null @@ -1,52 +0,0 @@ - - - - - diff --git a/packages/vue-vuetify/dev/assets/JsonFormsLogo.vue b/packages/vue-vuetify/dev/assets/JsonFormsLogo.vue deleted file mode 100644 index fb6f408e11..0000000000 --- a/packages/vue-vuetify/dev/assets/JsonFormsLogo.vue +++ /dev/null @@ -1,61 +0,0 @@ - - - diff --git a/packages/vue-vuetify/dev/assets/VuetifyLogo.vue b/packages/vue-vuetify/dev/assets/VuetifyLogo.vue deleted file mode 100644 index cbb684eb25..0000000000 --- a/packages/vue-vuetify/dev/assets/VuetifyLogo.vue +++ /dev/null @@ -1,113 +0,0 @@ - - - - - diff --git a/packages/vue-vuetify/dev/assets/logo.png b/packages/vue-vuetify/dev/assets/logo.png deleted file mode 100644 index f3d2503fc2..0000000000 Binary files a/packages/vue-vuetify/dev/assets/logo.png and /dev/null differ diff --git a/packages/vue-vuetify/dev/assets/logo.svg b/packages/vue-vuetify/dev/assets/logo.svg deleted file mode 100644 index 145b6d1308..0000000000 --- a/packages/vue-vuetify/dev/assets/logo.svg +++ /dev/null @@ -1 +0,0 @@ -Artboard 46 diff --git a/packages/vue-vuetify/dev/components/ExampleAppBar.vue b/packages/vue-vuetify/dev/components/ExampleAppBar.vue deleted file mode 100644 index 8cf4612c24..0000000000 --- a/packages/vue-vuetify/dev/components/ExampleAppBar.vue +++ /dev/null @@ -1,64 +0,0 @@ - - - diff --git a/packages/vue-vuetify/dev/components/ExampleDrawer.vue b/packages/vue-vuetify/dev/components/ExampleDrawer.vue deleted file mode 100644 index 2228e67908..0000000000 --- a/packages/vue-vuetify/dev/components/ExampleDrawer.vue +++ /dev/null @@ -1,57 +0,0 @@ - - - diff --git a/packages/vue-vuetify/dev/components/ExampleForm.vue b/packages/vue-vuetify/dev/components/ExampleForm.vue deleted file mode 100644 index 25a2e4f6bc..0000000000 --- a/packages/vue-vuetify/dev/components/ExampleForm.vue +++ /dev/null @@ -1,137 +0,0 @@ - - - diff --git a/packages/vue-vuetify/dev/components/ExampleSettings.vue b/packages/vue-vuetify/dev/components/ExampleSettings.vue deleted file mode 100644 index 4534bf2a49..0000000000 --- a/packages/vue-vuetify/dev/components/ExampleSettings.vue +++ /dev/null @@ -1,415 +0,0 @@ - - - diff --git a/packages/vue-vuetify/dev/components/MonacoEditor.vue b/packages/vue-vuetify/dev/components/MonacoEditor.vue deleted file mode 100644 index e1b3db466f..0000000000 --- a/packages/vue-vuetify/dev/components/MonacoEditor.vue +++ /dev/null @@ -1,137 +0,0 @@ - - - diff --git a/packages/vue-vuetify/dev/components/ThemeChanger.vue b/packages/vue-vuetify/dev/components/ThemeChanger.vue deleted file mode 100644 index 9979c7c0bd..0000000000 --- a/packages/vue-vuetify/dev/components/ThemeChanger.vue +++ /dev/null @@ -1,96 +0,0 @@ - - - diff --git a/packages/vue-vuetify/dev/core/jsonSchemaValidation.ts b/packages/vue-vuetify/dev/core/jsonSchemaValidation.ts deleted file mode 100644 index 763b54a529..0000000000 --- a/packages/vue-vuetify/dev/core/jsonSchemaValidation.ts +++ /dev/null @@ -1,119 +0,0 @@ -import type { JsonSchema } from '@jsonforms/core'; -import monaco, { type MonacoApi } from './monaco'; - -import isEqual from 'lodash/isEqual'; -import { jsonSchemaDraft7, ruleSchema, uiSchema } from '../core/jsonschema'; - -/** - * Register a new schema for the Json language, if it isn't already registered. - * Schemas are identified by their uri and fileMatch rule, so that they don't - * leak into unrelated Json editors. - * @param editor - * The monaco editor - * @param schemas - * Schemas to register - */ -export const addSchema = ( - editor: MonacoApi, - schemas: { - uri: string; - fileMatch?: string[]; - schema?: JsonSchema; - }[], -): void => { - const registeredSchemas = - editor.languages.json.jsonDefaults.diagnosticsOptions.schemas; - if (registeredSchemas === undefined || registeredSchemas.length === 0) { - editor.languages.json.jsonDefaults.setDiagnosticsOptions({ - validate: true, - allowComments: false, - enableSchemaRequest: false, - schemaRequest: 'warning', - schemaValidation: 'error', - schemas: [...schemas], - }); - } else { - for (const schema of schemas) { - const fileMatch = schema.fileMatch; - - const existingSchemaIndex = registeredSchemas.findIndex( - (registeredSchema) => - isEqual(registeredSchema.fileMatch, fileMatch) && - isEqual(registeredSchema.uri, schema.uri), - ); - if (existingSchemaIndex !== -1) { - registeredSchemas[existingSchemaIndex] = { ...schema }; - } else { - registeredSchemas.push({ ...schema }); - } - } - - editor.languages.json.jsonDefaults.setDiagnosticsOptions({ - validate: true, - allowComments: false, - enableSchemaRequest: false, - schemaRequest: 'warning', - schemaValidation: 'error', - schemas: [...registeredSchemas], - }); - } -}; - -/** - * Configures the Monaco Editor to validate the input against JSON Schema Draft 7. - */ -export const configureJsonSchemaValidation = ( - editor: MonacoApi, - fileMatch: string[], -): void => { - /** Note that the Monaco Editor only supports JSON Schema Draft 7 itself, - * so if we also want to support a later standard we still have to formalize - * it in JSON Schema Draft 7*/ - addSchema(editor, [{ ...jsonSchemaDraft7, fileMatch }]); -}; - -/** - * Configures the Monaco Editor to validate the input against the UI Schema meta-schema. - */ -export const configureUISchemaValidation = ( - editor: MonacoApi, - fileMatch: string[], -): void => { - /** Note that the Monaco Editor only supports JSON Schema Draft 7 itself, - * so if we also want to support a later standard we still have to formalize - * it in JSON Schema Draft 7*/ - addSchema(editor, [ - { ...jsonSchemaDraft7 }, - { ...ruleSchema }, - { ...uiSchema, fileMatch }, - ]); -}; - -/** - * Configures the Monaco Editor to validate the input against JSON Schema model schema. - */ -export const configureDataValidation = ( - editor: MonacoApi, - uri: string, - fileMatch: string, - schema: JsonSchema, -): void => { - /** Note that the Monaco Editor only supports JSON Schema Draft 7 itself, - * so if we also want to support a later standard we still have to formalize - * it in JSON Schema Draft 7*/ - addSchema(editor, [{ schema, uri, fileMatch: [fileMatch] }]); -}; - -export const getMonacoModelForUri = ( - modelUri: monaco.Uri, - initialValue: string | undefined, -): monaco.editor.ITextModel => { - const value = initialValue ?? ''; - let model = monaco.editor.getModel(modelUri); - if (model) { - model.setValue(value); - } else { - model = monaco.editor.createModel(value, 'json', modelUri); - } - return model; -}; diff --git a/packages/vue-vuetify/dev/core/jsonschema/index.ts b/packages/vue-vuetify/dev/core/jsonschema/index.ts deleted file mode 100644 index 860caf4f26..0000000000 --- a/packages/vue-vuetify/dev/core/jsonschema/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { JsonSchema } from '@jsonforms/core'; -import rule from './specification/rule.json'; -import schema from './specification/schema.json'; -import uischema from './specification/uischema.json'; - -export const jsonSchemaDraft7 = { - uri: 'http://json-schema.org/draft-07/schema', - schema: schema as any as JsonSchema, -}; - -export const uiSchema = { - uri: 'http://jsonforms.io/uischema', - schema: uischema as JsonSchema, -}; -export const ruleSchema = { - uri: 'http://jsonforms.io/uischema/rule', - schema: rule as JsonSchema, -}; diff --git a/packages/vue-vuetify/dev/core/jsonschema/specification/rule.json b/packages/vue-vuetify/dev/core/jsonschema/specification/rule.json deleted file mode 100644 index 4a54a709c0..0000000000 --- a/packages/vue-vuetify/dev/core/jsonschema/specification/rule.json +++ /dev/null @@ -1,96 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "http://jsonforms.io/uischema/rule", - "title": "Rule UI schema meta-schema", - "type": ["object"], - "properties": { - "effect": { - "description": "The effect of the rule", - "type": "string", - "enum": ["HIDE", "SHOW", "ENABLE", "DISABLE"] - }, - "condition": { - "description": "The condition of the rule that must evaluate to true in order to trigger the effect.", - "oneOf": [ - { "$ref": "#/definitions/leafCondition" }, - { "$ref": "#/definitions/schemaBasedCondition" }, - { "$ref": "#/definitions/orCondition" }, - { "$ref": "#/definitions/andCondition" } - ] - } - }, - "required": ["effect", "condition"], - "definitions": { - "condition": { - "type": "object", - "properties": { "type": { "type": "string", "readOnly": true } } - }, - "scopable": { - "type": "object", - "properties": { - "scope": { "type": "string" } - }, - "required": ["scope"] - }, - "leafCondition": { - "allOf": [ - { "$ref": "#/definitions/scopable" }, - { - "properties": { - "type": { "const": "LEAF" }, - "expectedValue": {} - }, - "required": ["type", "expectedValue"] - } - ] - }, - "schemaBasedCondition": { - "allOf": [ - { "$ref": "#/definitions/scopable" }, - { "$ref": "#/definitions/condition" }, - { - "properties": { - "schema": { "$ref": "http://json-schema.org/draft-07/schema#" } - }, - "required": ["schema"] - } - ] - }, - "composableCondition": { - "allOf": [ - { "$ref": "#/definitions/condition" }, - { - "properties": { - "conditions": { - "type": "array", - "items": { "$ref": "#/definitions/condition" } - } - }, - "required": ["conditions"] - } - ] - }, - "orCondition": { - "allOf": [ - { "$ref": "#/definitions/composableCondition" }, - { - "properties": { - "type": { "const": "OR" } - }, - "required": ["type"] - } - ] - }, - "andCondition": { - "allOf": [ - { "$ref": "#/definitions/composableCondition" }, - { - "properties": { - "type": { "const": "AND" } - }, - "required": ["type"] - } - ] - } - } -} diff --git a/packages/vue-vuetify/dev/core/jsonschema/specification/schema.json b/packages/vue-vuetify/dev/core/jsonschema/specification/schema.json deleted file mode 100644 index 8875d422c2..0000000000 --- a/packages/vue-vuetify/dev/core/jsonschema/specification/schema.json +++ /dev/null @@ -1,166 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema#", - "$id": "http://json-schema.org/draft-07/schema#", - "title": "Core schema meta-schema", - "definitions": { - "schemaArray": { - "type": "array", - "minItems": 1, - "items": { "$ref": "#" } - }, - "nonNegativeInteger": { - "type": "integer", - "minimum": 0 - }, - "nonNegativeIntegerDefault0": { - "allOf": [ - { "$ref": "#/definitions/nonNegativeInteger" }, - { "default": 0 } - ] - }, - "simpleTypes": { - "enum": [ - "array", - "boolean", - "integer", - "null", - "number", - "object", - "string" - ] - }, - "stringArray": { - "type": "array", - "items": { "type": "string" }, - "uniqueItems": true, - "default": [] - } - }, - "type": ["object", "boolean"], - "properties": { - "$id": { - "type": "string", - "format": "uri-reference" - }, - "$schema": { - "type": "string", - "format": "uri" - }, - "$ref": { - "type": "string", - "format": "uri-reference" - }, - "$comment": { - "type": "string" - }, - "title": { - "type": "string" - }, - "description": { - "type": "string" - }, - "default": true, - "readOnly": { - "type": "boolean", - "default": false - }, - "writeOnly": { - "type": "boolean", - "default": false - }, - "examples": { - "type": "array", - "items": true - }, - "multipleOf": { - "type": "number", - "exclusiveMinimum": 0 - }, - "maximum": { - "type": "number" - }, - "exclusiveMaximum": { - "type": "number" - }, - "minimum": { - "type": "number" - }, - "exclusiveMinimum": { - "type": "number" - }, - "maxLength": { "$ref": "#/definitions/nonNegativeInteger" }, - "minLength": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, - "pattern": { - "type": "string", - "format": "regex" - }, - "additionalItems": { "$ref": "#" }, - "items": { - "anyOf": [{ "$ref": "#" }, { "$ref": "#/definitions/schemaArray" }], - "default": true - }, - "maxItems": { "$ref": "#/definitions/nonNegativeInteger" }, - "minItems": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, - "uniqueItems": { - "type": "boolean", - "default": false - }, - "contains": { "$ref": "#" }, - "maxProperties": { "$ref": "#/definitions/nonNegativeInteger" }, - "minProperties": { "$ref": "#/definitions/nonNegativeIntegerDefault0" }, - "required": { "$ref": "#/definitions/stringArray" }, - "additionalProperties": { "$ref": "#" }, - "definitions": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "properties": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "default": {} - }, - "patternProperties": { - "type": "object", - "additionalProperties": { "$ref": "#" }, - "propertyNames": { "format": "regex" }, - "default": {} - }, - "dependencies": { - "type": "object", - "additionalProperties": { - "anyOf": [{ "$ref": "#" }, { "$ref": "#/definitions/stringArray" }] - } - }, - "propertyNames": { "$ref": "#" }, - "const": true, - "enum": { - "type": "array", - "items": true, - "minItems": 1, - "uniqueItems": true - }, - "type": { - "anyOf": [ - { "$ref": "#/definitions/simpleTypes" }, - { - "type": "array", - "items": { "$ref": "#/definitions/simpleTypes" }, - "minItems": 1, - "uniqueItems": true - } - ] - }, - "format": { "type": "string" }, - "contentMediaType": { "type": "string" }, - "contentEncoding": { "type": "string" }, - "if": { "$ref": "#" }, - "then": { "$ref": "#" }, - "else": { "$ref": "#" }, - "allOf": { "$ref": "#/definitions/schemaArray" }, - "anyOf": { "$ref": "#/definitions/schemaArray" }, - "oneOf": { "$ref": "#/definitions/schemaArray" }, - "not": { "$ref": "#" } - }, - "default": true -} diff --git a/packages/vue-vuetify/dev/core/jsonschema/specification/uischema.json b/packages/vue-vuetify/dev/core/jsonschema/specification/uischema.json deleted file mode 100644 index 724ce6db07..0000000000 --- a/packages/vue-vuetify/dev/core/jsonschema/specification/uischema.json +++ /dev/null @@ -1,320 +0,0 @@ -{ - "$schema": "http://json-schema.org/draft-07/schema", - "$id": "http://jsonforms.io/uischema", - "title": "UI schema meta-schema", - "type": "object", - "anyOf": [ - { - "$ref": "#/definitions/control" - }, - { - "$ref": "#/definitions/label" - }, - { - "$ref": "#/definitions/horizontallayout" - }, - { - "$ref": "#/definitions/verticallayout" - }, - { - "$ref": "#/definitions/categorization" - }, - { - "$ref": "#/definitions/group" - } - ], - "definitions": { - "elements": { - "type": "array", - "$id": "#elements", - "items": { - "anyOf": [ - { - "$ref": "#/definitions/control" - }, - { - "$ref": "#/definitions/label" - }, - { - "$ref": "#/definitions/horizontallayout" - }, - { - "$ref": "#/definitions/verticallayout" - }, - { - "$ref": "#/definitions/categorization" - }, - { - "$ref": "#/definitions/category" - }, - { - "$ref": "#/definitions/group" - } - ] - } - }, - "control": { - "type": "object", - "$id": "#control", - "properties": { - "type": { - "type": "string", - "const": "Control", - "default": "Control" - }, - "label": { - "type": "string" - }, - "scope": { - "$ref": "#/definitions/scope" - }, - "options": { - "$ref": "#/definitions/options" - }, - "rule": { - "$ref": "#/definitions/rule" - } - }, - "required": ["type", "scope"], - "additionalProperties": false, - "errorMessage": { - "properties": { - "type": "type should be equal to one of the allowed values", - "scope": "Control scope should match pattern \"^#\\/properties\\/{1}\"", - "suggestion": "Control suggestion should be array", - "options": "Control options should be object", - "label": "Control label should be string, boolean or label object" - }, - "required": { - "scope": "Control should have an object property \"scope\"", - "type": "Control should have a string property \"type\"" - }, - "additionalProperties": "Control should not have properties other than type, label, scope, options, suggestion and rule" - } - }, - "label": { - "type": "object", - "$id": "#label", - "properties": { - "type": { - "type": "string", - "const": "Label", - "default": "Label" - }, - "text": { - "type": "string" - }, - "options": { - "$ref": "#/definitions/options" - }, - "rule": { - "$ref": "#/definitions/rule" - } - }, - "additionalProperties": false, - "errorMessage": { - "properties": { - "type": "type should be equal to one of the allowed values", - "options": "Control options should be object", - "text": "Label text should be string" - }, - "required": { - "type": "Label should have a string property \"type\"" - }, - "additionalProperties": "Label should not have properties other than type, text, options, and rule" - } - }, - "horizontallayout": { - "type": "object", - "$id": "#horizontallayout", - "properties": { - "type": { - "type": "string", - "const": "HorizontalLayout", - "default": "HorizontalLayout" - }, - "elements": { - "$ref": "#/definitions/elements" - }, - "options": { - "$ref": "#/definitions/options" - }, - "rule": { - "$ref": "#/definitions/rule" - } - }, - "required": ["type", "elements"], - "additionalProperties": false, - "errorMessage": { - "properties": { - "type": "type should be equal to one of the allowed values" - }, - "required": { - "elements": "Layout should have an array property \"elements\"", - "type": "Layout should have a string property \"type\"" - }, - "additionalProperties": "Layout should not have properties other than type, elements, options and rule" - } - }, - "verticallayout": { - "type": "object", - "$id": "#verticallayout", - "properties": { - "type": { - "type": "string", - "const": "VerticalLayout", - "default": "VerticalLayout" - }, - "elements": { - "$ref": "#/definitions/elements" - }, - "options": { - "$ref": "#/definitions/options" - }, - "rule": { - "$ref": "#/definitions/rule" - } - }, - "required": ["type", "elements"], - "additionalProperties": false, - "errorMessage": { - "properties": { - "type": "type should be equal to one of the allowed values" - }, - "required": { - "elements": "Layout should have an array property \"elements\"", - "type": "Layout should have a string property \"type\"" - }, - "additionalProperties": "Layout should not have properties other than type, elements, options and rule" - } - }, - "categorization": { - "type": "object", - "$id": "#categorization", - "properties": { - "type": { - "type": "string", - "const": "Categorization", - "default": "Categorization" - }, - "options": { - "$ref": "#/definitions/options" - }, - "elements": { - "type": "array", - "items": { - "$ref": "#/definitions/category" - } - } - }, - "required": ["type", "elements"], - "additionalProperties": false, - "errorMessage": { - "properties": { - "type": "type should be equal to one of the allowed values" - }, - "required": { - "elements": "Categorization should have an array property \"elements\"", - "type": "Categorization should have a string property \"type\"" - }, - "additionalProperties": "Categorization should not have properties other than type. elements, and options" - } - }, - "category": { - "type": "object", - "$id": "#category", - "properties": { - "label": { - "type": "string" - }, - "elements": { - "$ref": "#/definitions/elements" - }, - "type": { - "type": "string", - "const": "Category", - "default": "Category" - }, - "options": { - "$ref": "#/definitions/options" - }, - "rule": { - "$ref": "#/definitions/rule" - } - }, - "additionalProperties": false, - "errorMessage": { - "properties": { - "type": "type should be equal to one of the allowed values", - "label": "Category label should be string" - }, - "required": { - "type": "Category layout should have a string property \"type\"", - "elements": "Category layout should have an array property \"elements\"" - }, - "additionalProperties": "Category layout should not have properties other than type, elements, label, options and rule" - } - }, - "group": { - "type": "object", - "$id": "#group", - "properties": { - "type": { - "type": "string", - "const": "Group", - "default": "Group" - }, - "elements": { - "$ref": "#/definitions/elements" - }, - "label": { - "type": "string" - }, - "options": { - "$ref": "#/definitions/options" - }, - "rule": { - "$ref": "#/definitions/rule" - } - }, - "required": ["type", "elements", "label"], - "additionalProperties": false, - "errorMessage": { - "properties": { - "type": "type should be equal to one of the allowed values", - "label": "Group label should be string" - }, - "required": { - "type": "Group layout should have a string property \"type\"", - "elements": "Group layout should have an array property \"elements\"", - "label": "Group layout should have a string property \"label\"" - }, - "additionalProperties": "Group layout should not have properties other than type, elements, label, options and rule" - } - }, - "rule": { - "$ref": "http://jsonforms.io/uischema/rule" - }, - "scope": { - "type": "string", - "$id": "#scope", - "pattern": "^#$|^#\\/$|^#\\/properties\\/{1}" - }, - "options": { - "type": "object", - "$id": "#options", - "additionalProperties": true - } - }, - "errorMessage": { - "properties": { - "type": "Root type should be equal to one of the allowed values", - "label": "Root label should be string" - }, - "required": { - "elements": "Root should have an array property \"elements\"", - "type": "Root should have a string property \"type\"" - }, - "additionalProperties": "Root should not have properties other than type, elements, label, options and rule" - } -} diff --git a/packages/vue-vuetify/dev/core/monaco.ts b/packages/vue-vuetify/dev/core/monaco.ts deleted file mode 100644 index f6e156efc1..0000000000 --- a/packages/vue-vuetify/dev/core/monaco.ts +++ /dev/null @@ -1,16 +0,0 @@ -import * as monaco from 'monaco-editor'; - -import editorWorker from 'monaco-editor/esm/vs/editor/editor.worker?worker'; -import jsonWorker from 'monaco-editor/esm/vs/language/json/json.worker?worker'; - -self.MonacoEnvironment = { - getWorker(_, label) { - if (label === 'json') { - return new jsonWorker(); - } - return new editorWorker(); - }, -}; - -export default monaco; -export type MonacoApi = typeof monaco; diff --git a/packages/vue-vuetify/dev/env.d.ts b/packages/vue-vuetify/dev/env.d.ts deleted file mode 100644 index 11f02fe2a0..0000000000 --- a/packages/vue-vuetify/dev/env.d.ts +++ /dev/null @@ -1 +0,0 @@ -/// diff --git a/packages/vue-vuetify/dev/examples/index.ts b/packages/vue-vuetify/dev/examples/index.ts deleted file mode 100644 index c9736d7286..0000000000 --- a/packages/vue-vuetify/dev/examples/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { getExamples } from '../../../examples'; - -const examples = getExamples(); - -export default examples; diff --git a/packages/vue-vuetify/dev/icons/fa.ts b/packages/vue-vuetify/dev/icons/fa.ts deleted file mode 100644 index 55eba56571..0000000000 --- a/packages/vue-vuetify/dev/icons/fa.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { ExampleIconAliases } from './icons'; - -const aliases: ExampleIconAliases = { - dark: 'fas fa-moon', - light: 'fas fa-sun', - ltr: 'fas fa-align-left', - rtl: 'fas fa-align-right', - palette: 'fas fa-palette', - settings: 'fas fa-gear', - formatText: 'fas fa-text', - formOnly: 'fas fa-window-restore', - reload: 'fas fa-rotate-right', - save: 'fas fa-floppy-disk', -}; - -export { aliases }; diff --git a/packages/vue-vuetify/dev/icons/icons.ts b/packages/vue-vuetify/dev/icons/icons.ts deleted file mode 100644 index 5fac9b13a9..0000000000 --- a/packages/vue-vuetify/dev/icons/icons.ts +++ /dev/null @@ -1,14 +0,0 @@ -import type { IconValue } from '../../src/icons/icons'; - -export interface ExampleIconAliases { - dark: IconValue; - light: IconValue; - ltr: IconValue; - rtl: IconValue; - palette: IconValue; - settings: IconValue; - formatText: IconValue; - formOnly: IconValue; - reload: IconValue; - save: IconValue; -} diff --git a/packages/vue-vuetify/dev/icons/mdi.ts b/packages/vue-vuetify/dev/icons/mdi.ts deleted file mode 100644 index dd95b370bd..0000000000 --- a/packages/vue-vuetify/dev/icons/mdi.ts +++ /dev/null @@ -1,16 +0,0 @@ -import type { ExampleIconAliases } from './icons'; - -const aliases: ExampleIconAliases = { - dark: 'mdi-weather-night', - light: 'mdi-weather-sunny', - ltr: 'mdi-format-pilcrow-arrow-right', - rtl: 'mdi-format-pilcrow-arrow-left', - palette: 'mdi-palette', - settings: 'mdi-cog', - formatText: 'mdi-format-text', - formOnly: 'mdi-dock-window', - reload: 'mdi-reload', - save: 'mdi-content-save', -}; - -export { aliases }; diff --git a/packages/vue-vuetify/dev/main.ts b/packages/vue-vuetify/dev/main.ts deleted file mode 100644 index 454f3b9d56..0000000000 --- a/packages/vue-vuetify/dev/main.ts +++ /dev/null @@ -1,5 +0,0 @@ -import { createApp } from 'vue'; -import App from './App.vue'; -import buildVuetify from './plugins/vuetify'; - -createApp(App).use(buildVuetify()).mount('#app'); diff --git a/packages/vue-vuetify/dev/plugins/vuetify.ts b/packages/vue-vuetify/dev/plugins/vuetify.ts deleted file mode 100644 index 07c26095c3..0000000000 --- a/packages/vue-vuetify/dev/plugins/vuetify.ts +++ /dev/null @@ -1,278 +0,0 @@ -import { createVuetify, type Blueprint, type ThemeDefinition } from 'vuetify'; -import { md1, md2, md3 } from 'vuetify/blueprints'; - -import '@fortawesome/fontawesome-free/css/all.css'; -import '@mdi/font/css/materialdesignicons.css'; - -import { bg, de, en } from 'vuetify/locale'; -import 'vuetify/styles'; -// just make sure that the locales are loaded - -import dayjs from 'dayjs'; -import { watch } from 'vue'; -import { fa, aliases as faAliases } from 'vuetify/iconsets/fa'; -import { mdi, aliases as mdiAliases } from 'vuetify/iconsets/mdi'; -import { mdiIconAliases, faIconAliases } from '../../src/icons'; -import { aliases as appFaAliases } from '../icons/fa'; -import { aliases as appMdiAliases } from '../icons/mdi'; -import { useAppStore } from '../store'; - -export function getCustomThemes(blueprint: string) { - const getThemeColors = (blueprint: string) => { - switch (blueprint) { - case 'md1': - return (md1.theme as any).themes.light.colors; - case 'md2': - return (md2.theme as any).themes.light.colors; - default: - return (md3.theme as any).themes.light.colors; - } - }; - - const customThemes: (ThemeDefinition & { name: string })[] = [ - { - name: 'light', - dark: false, - colors: getThemeColors(blueprint), - }, - { - name: 'dark', - dark: true, - colors: { - primary: '#2196F3', - secondary: '#54B6B2', - error: '#CF6679', - info: '#2196F3', - success: '#4CAF50', - warning: '#FB8C00', - }, - }, - { - name: 'Basil', - dark: false, - colors: { - primary: '#356859', - secondary: '#FD5523', - accent: '#37966F', - info: '#356859', - }, - }, - { - name: 'Crane', - dark: false, - colors: { - primary: '#5D1049', - secondary: '#E30425', - accent: '#4E0D3A', - info: '#5D1049', - }, - }, - { - name: 'Fortnightly', - dark: false, - colors: { - primary: '#6B38FB', - secondary: '#6B38FB', - info: '#6B38FB', - }, - }, - { - name: 'Owl', - dark: false, - colors: { - primary: '#FFDE03', - secondary: '#0336FF', - accent: '#FF0266', - info: '#FFDE03', - }, - }, - { - name: 'Shrine', - dark: false, - colors: { - primary: '#FEDBD0', - secondary: '#FEEAE6', - accent: '#442C2E', - info: '#FEDBD0', - }, - }, - ]; - - return customThemes; -} - -function toIconSetAliases(iconset: string) { - // we can add vue-vuetify icons setoverrides here if needed or use the default provided base on the iconset - - if (iconset === 'fa') { - // override vuetify calendar to use fa-regular calendar instead of fa-solid - return { - ...{ ...faAliases, ...{ calendar: 'far fa-calendar' } }, - ...faIconAliases, - ...appFaAliases, - }; - } - - // default - return { ...mdiAliases, ...mdiIconAliases, ...appMdiAliases }; -} - -function toBlueprint(value: string): Blueprint { - if (value === 'md1') { - return md1; - } - if (value === 'md2') { - return md2; - } - if (value === 'md3') { - return md3; - } - // default - return md1; -} - -function createVuetifyInstance( - dark: boolean, - blueprint: string, - variant: string, - iconset: string, - locale: string, -) { - const defaults = variant - ? { - VField: { - variant: variant, - }, - VTextField: { - variant: variant, - }, - VCombobox: { - variant: variant, - }, - VSelect: { - variant: variant, - }, - VAutocomplete: { - variant: variant, - }, - VTextarea: { - variant: variant, - }, - VNumberInput: { - variant: variant, - }, - VDateInput: { - variant: variant, - }, - VCheckbox: { color: 'primary' }, - } - : { - VCheckbox: { color: 'primary' }, - }; - - dayjs.locale(locale); - - return createVuetify({ - blueprint: toBlueprint(blueprint), - locale: { - locale: locale, - fallback: 'en', - messages: { en, bg, de }, - }, - icons: { - defaultSet: iconset, // Set the default icon set - sets: { - mdi, - fa, - }, - aliases: toIconSetAliases(iconset), - }, - theme: { - defaultTheme: dark ? 'dark' : 'light', - themes: getCustomThemes(blueprint).reduce( - (acc: Record, current) => { - acc[current.name] = current; - return acc; - }, - {}, - ), - }, - defaults: defaults, - }); -} - -export function buildVuetify() { - const appStore = useAppStore(); - const vuetify = createVuetifyInstance( - appStore.dark, - appStore.blueprint, - appStore.variant, - appStore.iconset, - appStore.jsonforms.locale, - ); - - watch( - () => appStore.jsonforms.locale, - (locale: string) => { - vuetify.locale.current.value = locale; - dayjs.locale(locale); - }, - ); - - // Watch for changes in the variant and update Vuetify - watch( - () => appStore.variant, - (variant: string) => { - if (variant) { - vuetify.defaults.value = { - ...vuetify.defaults.value, - VField: { - ...vuetify.defaults.value?.VField, - variant: variant, - }, - VTextField: { - ...vuetify.defaults.value?.VTextField, - variant: variant, - }, - VCombobox: { - ...vuetify.defaults.value?.VCombobox, - variant: variant, - }, - VSelect: { - ...vuetify.defaults.value?.VSelect, - variant: variant, - }, - VAutocomplete: { - ...vuetify.defaults.value?.VAutocomplete, - variant: variant, - }, - VTextarea: { - ...vuetify.defaults.value?.VTextarea, - variant: variant, - }, - VNumberInput: { - ...vuetify.defaults.value?.VNumberInput, - variant: variant, - }, - VDateInput: { - ...vuetify.defaults.value?.VDateInput, - variant: variant, - }, - }; - } else { - delete vuetify.defaults.value?.VField?.variant; - delete vuetify.defaults.value?.VTextField?.variant; - delete vuetify.defaults.value?.VCombobox?.variant; - delete vuetify.defaults.value?.VSelect?.variant; - delete vuetify.defaults.value?.VAutocomplete?.variant; - delete vuetify.defaults.value?.VTextarea?.variant; - delete vuetify.defaults.value?.VNumberInput?.variant; - delete vuetify.defaults.value?.VDateInput?.variant; - } - }, - ); - - return vuetify; -} - -export default buildVuetify; diff --git a/packages/vue-vuetify/dev/store/index.ts b/packages/vue-vuetify/dev/store/index.ts deleted file mode 100644 index 7fe1cc737d..0000000000 --- a/packages/vue-vuetify/dev/store/index.ts +++ /dev/null @@ -1,183 +0,0 @@ -import type { ValidationMode } from '@jsonforms/core'; -import { reactive, ref, watch, type Ref, type UnwrapRef } from 'vue'; - -export const appstoreLayouts = ['', 'demo-and-data'] as const; -export type AppstoreLayouts = (typeof appstoreLayouts)[number]; - -const appstore = reactive({ - exampleName: useHistoryHash(''), - rtl: false, - layout: useLocalStorage('vuetify-example-layout', ''), - formOnly: useHistoryHashQuery('form-only', false as boolean), - activeTab: useHistoryHashQuery('active-tab', 0 as number), - dark: useLocalStorage('vuetify-example-dark', false), - theme: useLocalStorage('vuetify-example-theme', 'light'), - drawer: useHistoryHashQuery('drawer', true as boolean), - settings: false, - variant: useLocalStorage('vuetify-example-variant', ''), - iconset: useLocalStorage('vuetify-example-iconset', 'mdi'), - blueprint: useLocalStorage('vuetify-example-blueprint', 'md1'), - jsonforms: { - readonly: useHistoryHashQuery('read-only', false as boolean), - validationMode: 'ValidateAndShow' as ValidationMode, - config: { - restrict: true, - trim: false, - showUnfocusedDescription: false, - hideRequiredAsterisk: true, - collapseNewItems: false, - breakHorizontal: false, - initCollapsed: false, - hideAvatar: false, - hideArraySummaryValidation: false, - enableFilterErrorsBeforeTouch: false, - allowAdditionalPropertiesIfMissing: false, - }, - locale: useLocalStorage('vuetify-example-locale', 'en'), - }, -}); - -export const useAppStore = () => { - return appstore; -}; - -function useHistoryHash(initialValue: string) { - const data = ref(initialValue); - - // Function to update data based on URL hash - const updateDataFromHash = () => { - const hashAndQuery = window.location.hash.slice(1); // Remove the leading '#' - const [hash, _] = hashAndQuery.split('?'); // Split hash and query string - if (hash) { - try { - data.value = decodeURIComponent(hash); - } catch (error) { - console.error('Error parsing hash:', error); - } - } - }; - - // Initial update from URL hash - updateDataFromHash(); - - watch(data, (newValue) => { - const encodedData = encodeURIComponent(newValue); - - const currentHash = window.location.hash.slice(1); - const [, currentQueryString] = currentHash.split('?'); // Extract the query part after ? - - window.history.replaceState( - null, - '', - `#${encodedData}${currentQueryString ? '?' + currentQueryString : ''}`, // Keep the query parameters intact - ); - }); - - return data; -} - -function useHistoryHashQuery( - queryParam: string, - initialValue: T, -) { - const data: Ref> = ref(initialValue); - - // Function to update data based on URL hash - const updateDataFromHash = () => { - const hashAndQuery = window.location.hash.slice(1); // Remove the leading '#' - const [_, query] = hashAndQuery.split('?'); // Split hash and query string - - const searchParams = new URLSearchParams(query); - if (searchParams) { - try { - const value = searchParams.has(queryParam) - ? searchParams.get(queryParam) - : `${initialValue}`; - - // Convert the value based on the type of initialValue - if (typeof initialValue === 'boolean') { - // Handle boolean conversion - data.value = (value === 'true') as UnwrapRef; - } else if (typeof initialValue === 'number') { - data.value = (value ? parseFloat(value) : 0) as UnwrapRef; - } else if (typeof initialValue === 'string') { - // Handle string conversion - data.value = value as UnwrapRef; - } - } catch (error) { - console.error('Error parsing hash:', error); - } - } - }; - - // Initial update from URL hash - updateDataFromHash(); - - watch(data, (newValue) => { - const encodedData = encodeURIComponent(newValue); - - const hashAndQuery = window.location.hash.slice(1); // Remove the leading '#' - const [hash, query] = hashAndQuery.split('?'); // Split hash and query string - - const searchParams = new URLSearchParams(query); - - if (newValue === initialValue) { - // it is the default value so no need to preserve the query paramter - searchParams.delete(queryParam); - } else { - searchParams.set(queryParam, encodedData); - } - - window.history.replaceState( - null, - '', - `#${hash}${searchParams.size > 0 ? '?' + searchParams : ''}`, // Keep the query parameters intact - ); - }); - - return data; -} - -export function useLocalStorage( - key: string, - initialValue: string | boolean | number | Record, -) { - // Read from localStorage - const storedValueAsString = localStorage.getItem(key); - - let storedValue; - if (storedValueAsString) { - if (typeof initialValue === 'string') { - storedValue = storedValueAsString; - } else if (typeof initialValue === 'number') { - storedValue = parseFloat(storedValueAsString); - } else if (typeof initialValue === 'boolean') { - storedValue = storedValueAsString === 'true'; - } else { - storedValue = JSON.parse(storedValueAsString); - } - } - - const data = ref(storedValue ?? initialValue); - - // Watch for changes to data and update localStorage - watch( - data, - (newValue) => { - if (newValue === undefined || newValue === null) { - localStorage.removeItem(key); - } else if ( - typeof newValue === 'string' || - typeof newValue === 'boolean' || - typeof newValue === 'number' - ) { - localStorage.setItem(key, newValue + ''); - } else { - localStorage.setItem(key, JSON.stringify(newValue)); - } - }, - { deep: true }, - ); - - return data; -} diff --git a/packages/vue-vuetify/dev/validate/dynamicDefaults.ts b/packages/vue-vuetify/dev/validate/dynamicDefaults.ts deleted file mode 100644 index 5252f9027d..0000000000 --- a/packages/vue-vuetify/dev/validate/dynamicDefaults.ts +++ /dev/null @@ -1,149 +0,0 @@ -import dayjs, { type UnitType } from 'dayjs'; -import customParsingPlugin from 'dayjs/plugin/customParseFormat'; -import durationPlugin from 'dayjs/plugin/duration'; -import timezonePlugin from 'dayjs/plugin/timezone'; // dependent on utc plugin -import utcPlugin from 'dayjs/plugin/utc'; - -// required for the custom save formats in the date, time and date-time pickers -dayjs.extend(customParsingPlugin); -dayjs.extend(utcPlugin); -dayjs.extend(timezonePlugin); -dayjs.extend(durationPlugin); - -export const dynamic = (args: any) => { - let func: string | undefined = undefined; - if (args?.func && typeof args.func === 'string') { - func = args?.func; - } - - if (func) { - try { - const fn = new Function( - 'args', - `const func = ${func}; return func(args);`, - ); - return () => { - try { - return fn(args); - } catch (e) { - console.error(`Error at dynamicDefaults 'dynamic': ${e}`); - } - }; - } catch (e) { - console.error(`Error at dynamicDefaults 'dynamic': ${e}`); - } - } - - throw new Error(`missing argument 'func' for dynamicDefaults func 'dynamic'`); -}; - -export const searchParams = (args: any) => { - let paramName: string | undefined = undefined; - if (args?.param && typeof args.param === 'string') { - paramName = args?.param; - } - - const url: URL = new URL(window.location.href); - const params: URLSearchParams = url.searchParams; - - let result: string | undefined = undefined; - if (paramName) { - if (params.has(paramName)) { - result = params.get(paramName)!; - } else { - // try from the hash # - const hash = url.hash; - const index = hash.indexOf('?'); - if (index > 0 && index < hash.length - 1) { - const hashSearchParams = new URLSearchParams(hash.substring(index + 1)); - if (hashSearchParams.has(paramName)) { - result = hashSearchParams.get(paramName)!; - } - } - } - } - - return () => result; -}; - -export const datetimeOffset = (args: any) => { - const dateTime = nowOffset(args); - let result: string | undefined = undefined; - - if (dateTime.isValid()) { - const datetimeLocalFormat = 'YYYY-MM-DDTHH:mm:ss.SSS'; - - result = dateTime.local().format(datetimeLocalFormat); - } - - return () => result; -}; - -export const timeOffset = (args: any) => { - const dateTime = nowOffset(args); - let result: string | undefined = undefined; - - if (dateTime.isValid()) { - const datetimeLocalFormat = 'HH:mm:ss.SSS'; - - result = dateTime.local().format(datetimeLocalFormat); - } - - return () => result; -}; - -export const dateOffset = (args: any) => { - const date = nowOffset(args); - let result: string | undefined = undefined; - - if (date.isValid()) { - result = date.local().format('YYYY-MM-DD'); - } - - return () => result; -}; - -export const dateUnit = (args: any) => { - const date = nowOffset(args); - let result: number | undefined = undefined; - - if (date.isValid()) { - let unit: UnitType = 'millisecond'; - if (args?.unit && typeof args.unit === 'string') { - unit = args?.unit; - } - - result = date.local().get(unit); - } - - return () => result; -}; - -const nowOffset = (args: any) => { - let duration: string | undefined = undefined; - if (args?.duration && typeof args.duration === 'string') { - duration = args?.duration; - } - let date: string | Date | undefined = new Date(); - if (args?.date && typeof args.date === 'string') { - if (args.date !== 'now') { - // only assign if not the string now - date = args?.date; - } - } - let operation: 'add' | 'substract' = 'add'; - if (args?.op && args.op === 'substract') { - operation = 'substract'; - } - - let dateObj = dayjs(date); - - if (dateObj.isValid() && duration) { - const offset = dayjs.duration(duration); - - dateObj = - operation == 'add' ? dateObj.add(offset) : dateObj.subtract(offset); - } - - return dateObj; -}; diff --git a/packages/vue-vuetify/dev/validate/index.ts b/packages/vue-vuetify/dev/validate/index.ts deleted file mode 100644 index c454e69279..0000000000 --- a/packages/vue-vuetify/dev/validate/index.ts +++ /dev/null @@ -1,18 +0,0 @@ -import type { Options } from 'ajv'; -import { markRaw } from 'vue'; -import { createAjv as createDefaultAjv } from '../../src'; -import { ajvKeywords } from './keywords'; - -export const createAjv = () => { - const options: Options = { - useDefaults: true, - $data: true, - discriminator: true, - }; - - const ajv = createDefaultAjv(options); - ajvKeywords(ajv); - - // when ajv is used in component properties do not make it reactive - return markRaw(ajv); -}; diff --git a/packages/vue-vuetify/dev/validate/keywords.ts b/packages/vue-vuetify/dev/validate/keywords.ts deleted file mode 100644 index cd9eb2fcb5..0000000000 --- a/packages/vue-vuetify/dev/validate/keywords.ts +++ /dev/null @@ -1,30 +0,0 @@ -import type Ajv from 'ajv'; -import keywords from 'ajv-keywords'; -import dynamicDefaults from 'ajv-keywords/dist/definitions/dynamicDefaults'; -import tranform from './transform'; - -import { - dateOffset, - datetimeOffset, - dateUnit, - dynamic, - searchParams, - timeOffset, -} from './dynamicDefaults'; - -export const ajvKeywords = (ajv: Ajv) => { - keywords(ajv); - - // add custom transform to be able to use more transformation functions since the transform keyword is not extensible as the dynamicDefaults - ajv.removeKeyword('transform'); - ajv.addKeyword(tranform()); - - // register new dynamic defaults - (dynamicDefaults.DEFAULTS as any).dynamic = dynamic; - (dynamicDefaults.DEFAULTS as any).searchParams = searchParams; - (dynamicDefaults.DEFAULTS as any).datetime = datetimeOffset; - (dynamicDefaults.DEFAULTS as any).date = dateOffset; - (dynamicDefaults.DEFAULTS as any).time = timeOffset; - - (dynamicDefaults.DEFAULTS as any).dateUnit = dateUnit; -}; diff --git a/packages/vue-vuetify/dev/validate/transform.ts b/packages/vue-vuetify/dev/validate/transform.ts deleted file mode 100644 index d0c4bfb81c..0000000000 --- a/packages/vue-vuetify/dev/validate/transform.ts +++ /dev/null @@ -1,120 +0,0 @@ -import type { - AnySchemaObject, - Code, - CodeKeywordDefinition, - KeywordCxt, - Name, -} from 'ajv'; -import { _, getProperty, stringify } from 'ajv/dist/compile/codegen'; -import capitalizeFn from 'lodash/capitalize'; -import startCaseFn from 'lodash/startCase'; - -type TransformName = - | 'trimStart' - | 'trimEnd' - | 'trimLeft' - | 'trimRight' - | 'trim' - | 'toLowerCase' - | 'toUpperCase' - | 'toEnumCase' - | 'capitalize' - | 'startCase'; - -interface TransformConfig { - hash: Record; -} - -type Transform = (s: string, cfg?: TransformConfig) => string; - -const transform: { [key in TransformName]: Transform } = { - trimStart: (s) => s.trimStart(), - trimEnd: (s) => s.trimEnd(), - trimLeft: (s) => s.trimStart(), - trimRight: (s) => s.trimEnd(), - trim: (s) => s.trim(), - toLowerCase: (s) => s.toLowerCase(), - toUpperCase: (s) => s.toUpperCase(), - toEnumCase: (s, cfg) => cfg?.hash[configKey(s)] || s, - capitalize: (s) => capitalizeFn(s), - startCase: (s) => startCaseFn(s), -}; - -const getDef: (() => CodeKeywordDefinition) & { - transform: typeof transform; -} = Object.assign(_getDef, { transform }); - -function _getDef(): CodeKeywordDefinition { - return { - keyword: 'transform', - schemaType: 'array', - before: 'enum', - code(cxt: KeywordCxt) { - const { gen, data, schema, parentSchema, it } = cxt; - const { parentData, parentDataProperty } = it; - const tNames: string[] = schema; - if (!tNames.length) return; - let cfg: Name | undefined; - if (tNames.includes('toEnumCase')) { - const config = getEnumCaseCfg(parentSchema); - cfg = gen.scopeValue('obj', { ref: config, code: stringify(config) }); - } - gen.if( - _`typeof ${data} == "string" && ${parentData} !== undefined`, - () => { - gen.assign(data, transformExpr(tNames.slice())); - gen.assign(_`${parentData}[${parentDataProperty}]`, data); - }, - ); - - function transformExpr(ts: string[]): Code { - if (!ts.length) return data; - const t = ts.pop() as string; - if (!(t in transform)) - throw new Error(`transform: unknown transformation ${t}`); - const func = gen.scopeValue('func', { - ref: transform[t as TransformName], - code: _`require("ajv-keywords/dist/definitions/transform").transform${getProperty( - t, - )}`, - }); - const arg = transformExpr(ts); - return cfg && t === 'toEnumCase' - ? _`${func}(${arg}, ${cfg})` - : _`${func}(${arg})`; - } - }, - metaSchema: { - type: 'array', - items: { type: 'string', enum: Object.keys(transform) }, - }, - }; -} - -function getEnumCaseCfg(parentSchema: AnySchemaObject): TransformConfig { - // build hash table to enum values - const cfg: TransformConfig = { hash: {} }; - - // requires `enum` in the same schema as transform - if (!parentSchema.enum) - throw new Error('transform: "toEnumCase" requires "enum"'); - for (const v of parentSchema.enum) { - if (typeof v !== 'string') continue; - const k = configKey(v); - // requires all `enum` values have unique keys - if (cfg.hash[k]) { - throw new Error( - 'transform: "toEnumCase" requires all lowercased "enum" values to be unique', - ); - } - cfg.hash[k] = v; - } - - return cfg; -} - -function configKey(s: string): string { - return s.toLowerCase(); -} - -export default getDef; diff --git a/packages/vue-vuetify/dev/views/ExampleView.vue b/packages/vue-vuetify/dev/views/ExampleView.vue deleted file mode 100644 index e4274ab3d1..0000000000 --- a/packages/vue-vuetify/dev/views/ExampleView.vue +++ /dev/null @@ -1,528 +0,0 @@ - - - - diff --git a/packages/vue-vuetify/dev/views/HomeView.vue b/packages/vue-vuetify/dev/views/HomeView.vue deleted file mode 100644 index 487e0e244d..0000000000 --- a/packages/vue-vuetify/dev/views/HomeView.vue +++ /dev/null @@ -1,27 +0,0 @@ - - - diff --git a/packages/vue-vuetify/index.html b/packages/vue-vuetify/index.html deleted file mode 100644 index 05c4e10c56..0000000000 --- a/packages/vue-vuetify/index.html +++ /dev/null @@ -1,17 +0,0 @@ - - - - - - - - JSON Forms Vue 3 Vuetify - - -
- - - diff --git a/packages/vue-vuetify/package.json b/packages/vue-vuetify/package.json deleted file mode 100644 index 291ba8a93f..0000000000 --- a/packages/vue-vuetify/package.json +++ /dev/null @@ -1,120 +0,0 @@ -{ - "name": "@jsonforms/vue-vuetify", - "version": "3.6.0", - "description": "Vue Vuetify renderers for JSON Forms", - "repository": "https://github.com/eclipsesource/jsonforms", - "bugs": "https://github.com/eclipsesource/jsonforms/issues", - "homepage": "http://jsonforms.io/", - "license": "MIT", - "publishConfig": { - "access": "public" - }, - "keywords": [ - "vue", - "vuetify", - "form", - "forms", - "json", - "jsonforms", - "frontend", - "generator", - "input", - "renderengine", - "jsonschema", - "schema", - "uischema", - "layout", - "customization" - ], - "main": "lib/jsonforms-vue-vuetify.cjs.js", - "module": "lib/jsonforms-vue-vuetify.esm.js", - "jsdelivr": "lib/jsonforms-vue-vuetify.umd.js", - "unpkg": "lib/jsonforms-vue-vuetify.umd.js", - "styles": "lib/jsonforms-vue-vuetify.css", - "typings": "lib/index.d.ts", - "type": "module", - "files": [ - "lib", - "src" - ], - "exports": { - ".": { - "import": "./lib/jsonforms-vue-vuetify.esm.js", - "require": "./lib/jsonforms-vue-vuetify.cjs.js", - "types": "./lib/index.d.ts" - }, - "./lib/jsonforms-vue-vuetify.css": "./lib/jsonforms-vue-vuetify.css" - }, - "scripts": { - "dev": "vite --config vite.example.config.ts", - "build": "run-p type-check \"build-only {@}\" --", - "build:examples-app": "run-p type-check \"build-only --config vite.example.config.ts {@}\" --", - "clean": "rimraf lib example/dist", - "lint": "eslint .", - "lint:fix": "eslint --fix .", - "doc": "typedoc --tsconfig tsconfig.typedoc.json --name 'JSON Forms Vue Vuetify Renderers' --out docs --entryPoints 'src/**/*.ts' 'lib/index.d.ts'", - "test": "vitest --watch=false", - "build-only": "cross-env NODE_OPTIONS=\"--max-old-space-size=4096\" vite build", - "type-check": "vue-tsc --build --force" - }, - "peerDependencies": { - "@jsonforms/core": "3.6.0", - "@jsonforms/vue": "3.6.0", - "ajv": "^8.6.1", - "dayjs": "^1.10.6", - "lodash": "^4.17.21", - "maska": "^2.1.11", - "vue": "^3.4.21", - "vuetify": "^3.6.6" - }, - "devDependencies": { - "@fortawesome/fontawesome-free": "^6.5.2", - "@jsonforms/core": "workspace:*", - "@jsonforms/examples": "workspace:*", - "@jsonforms/vue": "workspace:*", - "@mdi/font": "^7.4.47", - "@rushstack/eslint-patch": "^1.8.0", - "@tsconfig/node20": "^20.1.4", - "@types/jsdom": "^21.1.6", - "@types/lodash": "^4.14.172", - "@types/node": "^22.13.8", - "@types/splitpanes": "^2.2.6", - "@vitejs/plugin-vue": "^5.0.4", - "@vitest/coverage-v8": "^1.6.0", - "@vue/eslint-config-prettier": "^9.0.0", - "@vue/eslint-config-typescript": "^13.0.0", - "@vue/test-utils": "^2.4.5", - "@vue/tsconfig": "^0.5.1", - "ajv": "^8.6.1", - "ajv-keywords": "^5.1.0", - "core-js": "^3.9.1", - "cross-env": "^7.0.2", - "dayjs": "^1.10.6", - "eslint": "^8.57.0", - "eslint-plugin-vue": "^9.23.0", - "eslint-plugin-vue-scoped-css": "^2.8.0", - "jsdom": "^24.0.0", - "json-refs": "3.0.15", - "lodash": "^4.17.21", - "maska": "^2.1.11", - "monaco-editor": "^0.49.0", - "npm-run-all2": "^6.1.2", - "prettier": "^3.2.5", - "resize-observer-polyfill": "^1.5.1", - "rimraf": "^4.4.1", - "rollup-plugin-postcss": "^4.0.2", - "splitpanes": "^3.1.5", - "typedoc": "~0.25.3", - "typescript": "~5.4.0", - "vite": "^5.2.8", - "vite-plugin-dts": "^3.9.1", - "vite-plugin-node-polyfills": "^0.21.0", - "vite-plugin-static-copy": "^1.0.5", - "vite-plugin-vuetify": "^2.0.3", - "vitest": "^1.4.0", - "vue": "^3.4.21", - "vue-eslint-parser": "^9.4.2", - "vue-tsc": "^2.0.11", - "vuetify": "^3.6.6" - } -} diff --git a/packages/vue-vuetify/src/additional/LabelRenderer.entry.ts b/packages/vue-vuetify/src/additional/LabelRenderer.entry.ts deleted file mode 100644 index aa50aa71d4..0000000000 --- a/packages/vue-vuetify/src/additional/LabelRenderer.entry.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { - rankWith, - uiTypeIs, - type JsonFormsRendererRegistryEntry, -} from '@jsonforms/core'; -import labelRenderer from './LabelRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: labelRenderer, - tester: rankWith(1, uiTypeIs('Label')), -}; diff --git a/packages/vue-vuetify/src/additional/LabelRenderer.vue b/packages/vue-vuetify/src/additional/LabelRenderer.vue deleted file mode 100644 index d29ad9019c..0000000000 --- a/packages/vue-vuetify/src/additional/LabelRenderer.vue +++ /dev/null @@ -1,36 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/additional/ListWithDetailRenderer.entry.ts b/packages/vue-vuetify/src/additional/ListWithDetailRenderer.entry.ts deleted file mode 100644 index 8d2fb61111..0000000000 --- a/packages/vue-vuetify/src/additional/ListWithDetailRenderer.entry.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { - and, - isObjectArray, - rankWith, - uiTypeIs, - type JsonFormsRendererRegistryEntry, -} from '@jsonforms/core'; -import controlRenderer from './ListWithDetailRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(4, and(uiTypeIs('ListWithDetail'), isObjectArray)), -}; diff --git a/packages/vue-vuetify/src/additional/ListWithDetailRenderer.vue b/packages/vue-vuetify/src/additional/ListWithDetailRenderer.vue deleted file mode 100644 index 1451da8bea..0000000000 --- a/packages/vue-vuetify/src/additional/ListWithDetailRenderer.vue +++ /dev/null @@ -1,313 +0,0 @@ - - - - - diff --git a/packages/vue-vuetify/src/additional/index.ts b/packages/vue-vuetify/src/additional/index.ts deleted file mode 100644 index 3e8ec07fa5..0000000000 --- a/packages/vue-vuetify/src/additional/index.ts +++ /dev/null @@ -1,12 +0,0 @@ -export { default as LabelRenderer } from './LabelRenderer.vue'; -export { default as ListWithDetailRenderer } from './ListWithDetailRenderer.vue'; - -import { entry as labelRendererEntry } from './LabelRenderer.entry'; -import { entry as listWithDetailRendererEntry } from './ListWithDetailRenderer.entry'; - -export const additionalRenderers = [ - labelRendererEntry, - listWithDetailRendererEntry, -]; - -export { labelRendererEntry, listWithDetailRendererEntry }; diff --git a/packages/vue-vuetify/src/array/index.ts b/packages/vue-vuetify/src/array/index.ts deleted file mode 100644 index 4266810727..0000000000 --- a/packages/vue-vuetify/src/array/index.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { - rankWith, - schemaTypeIs, - type JsonFormsRendererRegistryEntry, -} from '@jsonforms/core'; -import { ArrayLayoutRenderer } from '../layouts'; - -export const arrayListRendererEntry: JsonFormsRendererRegistryEntry = { - renderer: ArrayLayoutRenderer, - tester: rankWith(2, schemaTypeIs('array')), -}; - -export const arrayRenderers = [arrayListRendererEntry]; diff --git a/packages/vue-vuetify/src/complex/AllOfRenderer.entry.ts b/packages/vue-vuetify/src/complex/AllOfRenderer.entry.ts deleted file mode 100644 index d388c55684..0000000000 --- a/packages/vue-vuetify/src/complex/AllOfRenderer.entry.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { - isAllOfControl, - rankWith, - type JsonFormsRendererRegistryEntry, -} from '@jsonforms/core'; -import controlRenderer from './AllOfRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(3, isAllOfControl), -}; diff --git a/packages/vue-vuetify/src/complex/AllOfRenderer.vue b/packages/vue-vuetify/src/complex/AllOfRenderer.vue deleted file mode 100644 index 233d3e433e..0000000000 --- a/packages/vue-vuetify/src/complex/AllOfRenderer.vue +++ /dev/null @@ -1,91 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/complex/AnyOfRenderer.entry.ts b/packages/vue-vuetify/src/complex/AnyOfRenderer.entry.ts deleted file mode 100644 index 423684a390..0000000000 --- a/packages/vue-vuetify/src/complex/AnyOfRenderer.entry.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { - isAnyOfControl, - rankWith, - type JsonFormsRendererRegistryEntry, -} from '@jsonforms/core'; -import controlRenderer from './AnyOfRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(3, isAnyOfControl), -}; diff --git a/packages/vue-vuetify/src/complex/AnyOfRenderer.vue b/packages/vue-vuetify/src/complex/AnyOfRenderer.vue deleted file mode 100644 index 3ce0d5990d..0000000000 --- a/packages/vue-vuetify/src/complex/AnyOfRenderer.vue +++ /dev/null @@ -1,95 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/complex/ArrayControlRenderer.entry.ts b/packages/vue-vuetify/src/complex/ArrayControlRenderer.entry.ts deleted file mode 100644 index 42d6ac8227..0000000000 --- a/packages/vue-vuetify/src/complex/ArrayControlRenderer.entry.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { - isObjectArrayControl, - isPrimitiveArrayControl, - or, - rankWith, - type JsonFormsRendererRegistryEntry, -} from '@jsonforms/core'; -import controlRenderer from './ArrayControlRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(3, or(isObjectArrayControl, isPrimitiveArrayControl)), -}; diff --git a/packages/vue-vuetify/src/complex/ArrayControlRenderer.vue b/packages/vue-vuetify/src/complex/ArrayControlRenderer.vue deleted file mode 100644 index 303b4f9ef5..0000000000 --- a/packages/vue-vuetify/src/complex/ArrayControlRenderer.vue +++ /dev/null @@ -1,336 +0,0 @@ - - - - - diff --git a/packages/vue-vuetify/src/complex/EnumArrayRenderer.entry.ts b/packages/vue-vuetify/src/complex/EnumArrayRenderer.entry.ts deleted file mode 100644 index 721b040178..0000000000 --- a/packages/vue-vuetify/src/complex/EnumArrayRenderer.entry.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { - and, - hasType, - rankWith, - schemaMatches, - schemaSubPathMatches, - uiTypeIs, - type JsonFormsRendererRegistryEntry, - type JsonSchema, -} from '@jsonforms/core'; -import controlRenderer from './EnumArrayRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith( - 5, - and( - uiTypeIs('Control'), - and( - schemaMatches( - (schema) => - hasType(schema, 'array') && - !Array.isArray(schema.items) && - schema.uniqueItems === true, - ), - schemaSubPathMatches('items', (schema) => { - return hasOneOfItems(schema) || hasEnumItems(schema); - }), - ), - ), - ), -}; - -const hasOneOfItems = (schema: JsonSchema): boolean => - schema.oneOf !== undefined && - schema.oneOf.length > 0 && - (schema.oneOf as JsonSchema[]).every((entry: JsonSchema) => { - return entry.const !== undefined; - }); - -const hasEnumItems = (schema: JsonSchema): boolean => - schema.type === 'string' && schema.enum !== undefined; diff --git a/packages/vue-vuetify/src/complex/EnumArrayRenderer.vue b/packages/vue-vuetify/src/complex/EnumArrayRenderer.vue deleted file mode 100644 index 6edec0418c..0000000000 --- a/packages/vue-vuetify/src/complex/EnumArrayRenderer.vue +++ /dev/null @@ -1,106 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/complex/MixedRenderer.entry.ts b/packages/vue-vuetify/src/complex/MixedRenderer.entry.ts deleted file mode 100644 index b89639b1b8..0000000000 --- a/packages/vue-vuetify/src/complex/MixedRenderer.entry.ts +++ /dev/null @@ -1,85 +0,0 @@ -import { - isControl, - rankWith, - resolveSchema, - type JsonFormsRendererRegistryEntry, - type JsonSchema, - type Scopable, - type TesterContext, - type UISchemaElement, -} from '@jsonforms/core'; - -import isEmpty from 'lodash/isEmpty'; -import mixedRenderer from './MixedRenderer.vue'; - -export const isMixedSchema = ( - uischema: UISchemaElement & Scopable, - schema: JsonSchema, - context: TesterContext, -) => { - if (schema && typeof schema === 'boolean') { - // support a case like - // "examples": { - // "type": "array", - // "items": true - // } - // that is used in the jsonschema meta model where the items: true means any type which in effect means array of all allowed types. - // in the above scenario the schema will be the value true from the items - return true; - } - - if (!schema || typeof schema !== 'object') { - return false; - } - - if (Array.isArray(schema.type)) { - return true; - } - if (schema.type === 'object') { - const schemaPath = uischema.scope; - if (schemaPath && !isEmpty(schemaPath)) { - let currentDataSchema: JsonSchema | undefined = schema; - currentDataSchema = resolveSchema( - schema, - schemaPath, - context?.rootSchema, - ); - if (currentDataSchema === undefined) { - return false; - } - if (Array.isArray(currentDataSchema.type)) { - return true; - } - } - } - - return false; -}; - -export const isMixedControl = ( - uischema: UISchemaElement, - schema: JsonSchema, - context: TesterContext, -) => - isMixedSchema(uischema, schema, context) && - (isControl(uischema) || isDefaultGenUiSchema(uischema)); - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: mixedRenderer, - tester: rankWith(20, isMixedControl), -}; - -function isDefaultGenUiSchema(uischema: UISchemaElement): boolean { - const elements = (uischema as any)?.elements; - let result = false; - if ( - (uischema.type === 'VerticalLayout' || uischema.type === 'Group') && - Array.isArray(elements) - ) { - if (elements.length == 1) { - // if the uischema is the default then take control - result = elements[0].scope === '#' && elements[0].type === 'Control'; - } - } - return result; -} diff --git a/packages/vue-vuetify/src/complex/MixedRenderer.vue b/packages/vue-vuetify/src/complex/MixedRenderer.vue deleted file mode 100644 index ca750c831f..0000000000 --- a/packages/vue-vuetify/src/complex/MixedRenderer.vue +++ /dev/null @@ -1,517 +0,0 @@ - - - - diff --git a/packages/vue-vuetify/src/complex/ObjectRenderer.entry.ts b/packages/vue-vuetify/src/complex/ObjectRenderer.entry.ts deleted file mode 100644 index 0852ea8ef4..0000000000 --- a/packages/vue-vuetify/src/complex/ObjectRenderer.entry.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { - isObjectControl, - rankWith, - type JsonFormsRendererRegistryEntry, -} from '@jsonforms/core'; -import controlRenderer from './ObjectRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(2, isObjectControl), -}; diff --git a/packages/vue-vuetify/src/complex/ObjectRenderer.vue b/packages/vue-vuetify/src/complex/ObjectRenderer.vue deleted file mode 100644 index 81d0f7f4da..0000000000 --- a/packages/vue-vuetify/src/complex/ObjectRenderer.vue +++ /dev/null @@ -1,122 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/complex/OneOfRenderer.entry.ts b/packages/vue-vuetify/src/complex/OneOfRenderer.entry.ts deleted file mode 100644 index 5b2e8c1b96..0000000000 --- a/packages/vue-vuetify/src/complex/OneOfRenderer.entry.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { - isOneOfControl, - rankWith, - type JsonFormsRendererRegistryEntry, -} from '@jsonforms/core'; -import controlRenderer from './OneOfRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(3, isOneOfControl), -}; diff --git a/packages/vue-vuetify/src/complex/OneOfRenderer.vue b/packages/vue-vuetify/src/complex/OneOfRenderer.vue deleted file mode 100644 index fbee96f223..0000000000 --- a/packages/vue-vuetify/src/complex/OneOfRenderer.vue +++ /dev/null @@ -1,211 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/complex/OneOfTabRenderer.entry.ts b/packages/vue-vuetify/src/complex/OneOfTabRenderer.entry.ts deleted file mode 100644 index 3b7f93497f..0000000000 --- a/packages/vue-vuetify/src/complex/OneOfTabRenderer.entry.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { - and, - isOneOfControl, - optionIs, - rankWith, - type JsonFormsRendererRegistryEntry, -} from '@jsonforms/core'; -import controlRenderer from './OneOfTabRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(4, and(isOneOfControl, optionIs('variant', 'tab'))), -}; diff --git a/packages/vue-vuetify/src/complex/OneOfTabRenderer.vue b/packages/vue-vuetify/src/complex/OneOfTabRenderer.vue deleted file mode 100644 index 33fa515c9b..0000000000 --- a/packages/vue-vuetify/src/complex/OneOfTabRenderer.vue +++ /dev/null @@ -1,185 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/complex/components/AdditionalProperties.vue b/packages/vue-vuetify/src/complex/components/AdditionalProperties.vue deleted file mode 100644 index 5d93c80378..0000000000 --- a/packages/vue-vuetify/src/complex/components/AdditionalProperties.vue +++ /dev/null @@ -1,573 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/complex/components/CombinatorProperties.vue b/packages/vue-vuetify/src/complex/components/CombinatorProperties.vue deleted file mode 100644 index 32c92723cf..0000000000 --- a/packages/vue-vuetify/src/complex/components/CombinatorProperties.vue +++ /dev/null @@ -1,79 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/complex/components/index.ts b/packages/vue-vuetify/src/complex/components/index.ts deleted file mode 100644 index dc8fda682d..0000000000 --- a/packages/vue-vuetify/src/complex/components/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default as AdditionalProperties } from './AdditionalProperties.vue'; -export { default as CombinatorProperties } from './CombinatorProperties.vue'; diff --git a/packages/vue-vuetify/src/complex/index.ts b/packages/vue-vuetify/src/complex/index.ts deleted file mode 100644 index adeb842825..0000000000 --- a/packages/vue-vuetify/src/complex/index.ts +++ /dev/null @@ -1,39 +0,0 @@ -export { default as AllOfRenderer } from './AllOfRenderer.vue'; -export { default as AnyOfRenderer } from './AnyOfRenderer.vue'; -export { default as ArrayControlRenderer } from './ArrayControlRenderer.vue'; -export { default as EnumArrayRenderer } from './EnumArrayRenderer.vue'; -export { default as ObjectRenderer } from './ObjectRenderer.vue'; -export { default as OneOfRenderer } from './OneOfRenderer.vue'; -export { default as OneOfTabRenderer } from './OneOfTabRenderer.vue'; -export { default as MixedRenderer } from './MixedRenderer.vue'; - -import { entry as allOfRendererEntry } from './AllOfRenderer.entry'; -import { entry as anyOfRendererEntry } from './AnyOfRenderer.entry'; -import { entry as arrayControlRendererEntry } from './ArrayControlRenderer.entry'; -import { entry as enumArrayRendererEntry } from './EnumArrayRenderer.entry'; -import { entry as objectRendererEntry } from './ObjectRenderer.entry'; -import { entry as oneOfRendererEntry } from './OneOfRenderer.entry'; -import { entry as oneOfTabRendererEntry } from './OneOfTabRenderer.entry'; -import { entry as mixedRendererEntry } from './MixedRenderer.entry'; - -export const complexRenderers = [ - allOfRendererEntry, - anyOfRendererEntry, - arrayControlRendererEntry, - enumArrayRendererEntry, - objectRendererEntry, - oneOfRendererEntry, - oneOfTabRendererEntry, - mixedRendererEntry, -]; - -export { - allOfRendererEntry, - anyOfRendererEntry, - arrayControlRendererEntry, - enumArrayRendererEntry, - objectRendererEntry, - oneOfRendererEntry, - oneOfTabRendererEntry, - mixedRendererEntry, -}; diff --git a/packages/vue-vuetify/src/controls/AnyOfStringOrEnumControlRenderer.entry.ts b/packages/vue-vuetify/src/controls/AnyOfStringOrEnumControlRenderer.entry.ts deleted file mode 100644 index a5c15d3e02..0000000000 --- a/packages/vue-vuetify/src/controls/AnyOfStringOrEnumControlRenderer.entry.ts +++ /dev/null @@ -1,40 +0,0 @@ -import { - and, - rankWith, - schemaMatches, - uiTypeIs, - type JsonFormsRendererRegistryEntry, - type JsonSchema, -} from '@jsonforms/core'; -import controlRenderer from './AnyOfStringOrEnumControlRenderer.vue'; - -const findEnumSchema = (schemas: JsonSchema[]) => - schemas.find( - (s) => - s.enum !== undefined && (s.type === 'string' || s.type === undefined), - ); -const findTextSchema = (schemas: JsonSchema[]) => - schemas.find((s) => s.type === 'string' && s.enum === undefined); - -const hasEnumAndText = (schemas: JsonSchema[]): boolean => { - // idea: map to type,enum and check that all types are string and at least one item is of type enum, - const enumSchema = findEnumSchema(schemas); - const stringSchema = findTextSchema(schemas); - const remainingSchemas = schemas.filter( - (s) => s !== enumSchema || s !== stringSchema, - ); - const wrongType = remainingSchemas.find((s) => s.type && s.type !== 'string'); - return !!enumSchema && !!stringSchema && !wrongType; -}; - -const simpleAnyOf = and( - uiTypeIs('Control'), - schemaMatches( - (schema) => Array.isArray(schema.anyOf) && hasEnumAndText(schema.anyOf), - ), -); - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(5, simpleAnyOf), -}; diff --git a/packages/vue-vuetify/src/controls/AnyOfStringOrEnumControlRenderer.vue b/packages/vue-vuetify/src/controls/AnyOfStringOrEnumControlRenderer.vue deleted file mode 100644 index ef5a349e40..0000000000 --- a/packages/vue-vuetify/src/controls/AnyOfStringOrEnumControlRenderer.vue +++ /dev/null @@ -1,86 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/controls/BooleanControlRenderer.entry.ts b/packages/vue-vuetify/src/controls/BooleanControlRenderer.entry.ts deleted file mode 100644 index 3eabe34aae..0000000000 --- a/packages/vue-vuetify/src/controls/BooleanControlRenderer.entry.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { - type JsonFormsRendererRegistryEntry, - rankWith, - isBooleanControl, -} from '@jsonforms/core'; -import controlRenderer from './BooleanControlRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(1, isBooleanControl), -}; diff --git a/packages/vue-vuetify/src/controls/BooleanControlRenderer.vue b/packages/vue-vuetify/src/controls/BooleanControlRenderer.vue deleted file mode 100644 index 8dafe3874c..0000000000 --- a/packages/vue-vuetify/src/controls/BooleanControlRenderer.vue +++ /dev/null @@ -1,56 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/controls/BooleanToggleControlRenderer.entry.ts b/packages/vue-vuetify/src/controls/BooleanToggleControlRenderer.entry.ts deleted file mode 100644 index b9937ef326..0000000000 --- a/packages/vue-vuetify/src/controls/BooleanToggleControlRenderer.entry.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { - type JsonFormsRendererRegistryEntry, - rankWith, - and, - isBooleanControl, - optionIs, -} from '@jsonforms/core'; -import controlRenderer from './BooleanToggleControlRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(3, and(isBooleanControl, optionIs('toggle', true))), -}; diff --git a/packages/vue-vuetify/src/controls/BooleanToggleControlRenderer.vue b/packages/vue-vuetify/src/controls/BooleanToggleControlRenderer.vue deleted file mode 100644 index 307f36b8ef..0000000000 --- a/packages/vue-vuetify/src/controls/BooleanToggleControlRenderer.vue +++ /dev/null @@ -1,59 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/controls/ControlWrapper.vue b/packages/vue-vuetify/src/controls/ControlWrapper.vue deleted file mode 100644 index 8353bc7d3c..0000000000 --- a/packages/vue-vuetify/src/controls/ControlWrapper.vue +++ /dev/null @@ -1,29 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/controls/DateControlRenderer.entry.ts b/packages/vue-vuetify/src/controls/DateControlRenderer.entry.ts deleted file mode 100644 index 3783bb16aa..0000000000 --- a/packages/vue-vuetify/src/controls/DateControlRenderer.entry.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { - type JsonFormsRendererRegistryEntry, - rankWith, - isDateControl, -} from '@jsonforms/core'; -import controlRenderer from './DateControlRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(2, isDateControl), -}; diff --git a/packages/vue-vuetify/src/controls/DateControlRenderer.vue b/packages/vue-vuetify/src/controls/DateControlRenderer.vue deleted file mode 100644 index 188af7763a..0000000000 --- a/packages/vue-vuetify/src/controls/DateControlRenderer.vue +++ /dev/null @@ -1,455 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/controls/DateTimeControlRenderer.entry.ts b/packages/vue-vuetify/src/controls/DateTimeControlRenderer.entry.ts deleted file mode 100644 index 6e5a941735..0000000000 --- a/packages/vue-vuetify/src/controls/DateTimeControlRenderer.entry.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { - type JsonFormsRendererRegistryEntry, - rankWith, - isDateTimeControl, -} from '@jsonforms/core'; -import controlRenderer from './DateTimeControlRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(2, isDateTimeControl), -}; diff --git a/packages/vue-vuetify/src/controls/DateTimeControlRenderer.vue b/packages/vue-vuetify/src/controls/DateTimeControlRenderer.vue deleted file mode 100644 index 53eec9cf15..0000000000 --- a/packages/vue-vuetify/src/controls/DateTimeControlRenderer.vue +++ /dev/null @@ -1,604 +0,0 @@ - - - - - diff --git a/packages/vue-vuetify/src/controls/EnumControlRenderer.entry.ts b/packages/vue-vuetify/src/controls/EnumControlRenderer.entry.ts deleted file mode 100644 index e8a4f3a1de..0000000000 --- a/packages/vue-vuetify/src/controls/EnumControlRenderer.entry.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { - type JsonFormsRendererRegistryEntry, - rankWith, - isEnumControl, -} from '@jsonforms/core'; -import controlRenderer from './EnumControlRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(2, isEnumControl), -}; diff --git a/packages/vue-vuetify/src/controls/EnumControlRenderer.vue b/packages/vue-vuetify/src/controls/EnumControlRenderer.vue deleted file mode 100644 index 709e9b4feb..0000000000 --- a/packages/vue-vuetify/src/controls/EnumControlRenderer.vue +++ /dev/null @@ -1,67 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/controls/IntegerControlRenderer.entry.ts b/packages/vue-vuetify/src/controls/IntegerControlRenderer.entry.ts deleted file mode 100644 index e9c235335c..0000000000 --- a/packages/vue-vuetify/src/controls/IntegerControlRenderer.entry.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { - type JsonFormsRendererRegistryEntry, - rankWith, - isIntegerControl, -} from '@jsonforms/core'; -import controlRenderer from './IntegerControlRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(1, isIntegerControl), -}; diff --git a/packages/vue-vuetify/src/controls/IntegerControlRenderer.vue b/packages/vue-vuetify/src/controls/IntegerControlRenderer.vue deleted file mode 100644 index 8a13fc2bf7..0000000000 --- a/packages/vue-vuetify/src/controls/IntegerControlRenderer.vue +++ /dev/null @@ -1,72 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/controls/MultiStringControlRenderer.entry.ts b/packages/vue-vuetify/src/controls/MultiStringControlRenderer.entry.ts deleted file mode 100644 index e932518a84..0000000000 --- a/packages/vue-vuetify/src/controls/MultiStringControlRenderer.entry.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { - type JsonFormsRendererRegistryEntry, - rankWith, - and, - isStringControl, - isMultiLineControl, -} from '@jsonforms/core'; -import controlRenderer from './MultiStringControlRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(2, and(isStringControl, isMultiLineControl)), -}; diff --git a/packages/vue-vuetify/src/controls/MultiStringControlRenderer.vue b/packages/vue-vuetify/src/controls/MultiStringControlRenderer.vue deleted file mode 100644 index 4a01d84e78..0000000000 --- a/packages/vue-vuetify/src/controls/MultiStringControlRenderer.vue +++ /dev/null @@ -1,75 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/controls/NumberControlRenderer.entry.ts b/packages/vue-vuetify/src/controls/NumberControlRenderer.entry.ts deleted file mode 100644 index dde8beb848..0000000000 --- a/packages/vue-vuetify/src/controls/NumberControlRenderer.entry.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { - type JsonFormsRendererRegistryEntry, - rankWith, - isNumberControl, -} from '@jsonforms/core'; -import controlRenderer from './NumberControlRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(1, isNumberControl), -}; diff --git a/packages/vue-vuetify/src/controls/NumberControlRenderer.vue b/packages/vue-vuetify/src/controls/NumberControlRenderer.vue deleted file mode 100644 index 5ac0cd1efe..0000000000 --- a/packages/vue-vuetify/src/controls/NumberControlRenderer.vue +++ /dev/null @@ -1,73 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/controls/OneOfEnumControlRenderer.entry.ts b/packages/vue-vuetify/src/controls/OneOfEnumControlRenderer.entry.ts deleted file mode 100644 index 3044059b05..0000000000 --- a/packages/vue-vuetify/src/controls/OneOfEnumControlRenderer.entry.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { - type JsonFormsRendererRegistryEntry, - rankWith, - isOneOfEnumControl, -} from '@jsonforms/core'; -import controlRenderer from './OneOfEnumControlRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(5, isOneOfEnumControl), -}; diff --git a/packages/vue-vuetify/src/controls/OneOfEnumControlRenderer.vue b/packages/vue-vuetify/src/controls/OneOfEnumControlRenderer.vue deleted file mode 100644 index c5c48035b6..0000000000 --- a/packages/vue-vuetify/src/controls/OneOfEnumControlRenderer.vue +++ /dev/null @@ -1,66 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/controls/OneOfRadioGroupControlRenderer.entry.ts b/packages/vue-vuetify/src/controls/OneOfRadioGroupControlRenderer.entry.ts deleted file mode 100644 index 9a72956bc4..0000000000 --- a/packages/vue-vuetify/src/controls/OneOfRadioGroupControlRenderer.entry.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { - type JsonFormsRendererRegistryEntry, - rankWith, - and, - isOneOfEnumControl, - optionIs, -} from '@jsonforms/core'; -import controlRenderer from './OneOfRadioGroupControlRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(20, and(isOneOfEnumControl, optionIs('format', 'radio'))), -}; diff --git a/packages/vue-vuetify/src/controls/OneOfRadioGroupControlRenderer.vue b/packages/vue-vuetify/src/controls/OneOfRadioGroupControlRenderer.vue deleted file mode 100644 index 0f91f2a838..0000000000 --- a/packages/vue-vuetify/src/controls/OneOfRadioGroupControlRenderer.vue +++ /dev/null @@ -1,67 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/controls/PasswordControlRenderer.entry.ts b/packages/vue-vuetify/src/controls/PasswordControlRenderer.entry.ts deleted file mode 100644 index 5501318491..0000000000 --- a/packages/vue-vuetify/src/controls/PasswordControlRenderer.entry.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { - type JsonFormsRendererRegistryEntry, - rankWith, - and, - isStringControl, - formatIs, -} from '@jsonforms/core'; -import controlRenderer from './PasswordControlRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(2, and(isStringControl, formatIs('password'))), -}; diff --git a/packages/vue-vuetify/src/controls/PasswordControlRenderer.vue b/packages/vue-vuetify/src/controls/PasswordControlRenderer.vue deleted file mode 100644 index 3069d51e30..0000000000 --- a/packages/vue-vuetify/src/controls/PasswordControlRenderer.vue +++ /dev/null @@ -1,81 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/controls/RadioGroupControlRenderer.entry.ts b/packages/vue-vuetify/src/controls/RadioGroupControlRenderer.entry.ts deleted file mode 100644 index c29a1e381b..0000000000 --- a/packages/vue-vuetify/src/controls/RadioGroupControlRenderer.entry.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { - type JsonFormsRendererRegistryEntry, - rankWith, - and, - isEnumControl, - optionIs, -} from '@jsonforms/core'; -import controlRenderer from './RadioGroupControlRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(20, and(isEnumControl, optionIs('format', 'radio'))), -}; diff --git a/packages/vue-vuetify/src/controls/RadioGroupControlRenderer.vue b/packages/vue-vuetify/src/controls/RadioGroupControlRenderer.vue deleted file mode 100644 index 85147661cb..0000000000 --- a/packages/vue-vuetify/src/controls/RadioGroupControlRenderer.vue +++ /dev/null @@ -1,67 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/controls/SliderControlRenderer.entry.ts b/packages/vue-vuetify/src/controls/SliderControlRenderer.entry.ts deleted file mode 100644 index 7b03d03e75..0000000000 --- a/packages/vue-vuetify/src/controls/SliderControlRenderer.entry.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { - type JsonFormsRendererRegistryEntry, - rankWith, - isRangeControl, -} from '@jsonforms/core'; -import controlRenderer from './SliderControlRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(4, isRangeControl), -}; diff --git a/packages/vue-vuetify/src/controls/SliderControlRenderer.vue b/packages/vue-vuetify/src/controls/SliderControlRenderer.vue deleted file mode 100644 index 0d641cf37d..0000000000 --- a/packages/vue-vuetify/src/controls/SliderControlRenderer.vue +++ /dev/null @@ -1,61 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/controls/StringControlRenderer.entry.ts b/packages/vue-vuetify/src/controls/StringControlRenderer.entry.ts deleted file mode 100644 index 2c22b0861c..0000000000 --- a/packages/vue-vuetify/src/controls/StringControlRenderer.entry.ts +++ /dev/null @@ -1,10 +0,0 @@ -import { - isStringControl, - rankWith, - type JsonFormsRendererRegistryEntry, -} from '@jsonforms/core'; -import controlRenderer from './StringControlRenderer.vue'; -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(1, isStringControl), -}; diff --git a/packages/vue-vuetify/src/controls/StringControlRenderer.vue b/packages/vue-vuetify/src/controls/StringControlRenderer.vue deleted file mode 100644 index 0a3f94a83a..0000000000 --- a/packages/vue-vuetify/src/controls/StringControlRenderer.vue +++ /dev/null @@ -1,124 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/controls/StringMaskControlRenderer.entry.ts b/packages/vue-vuetify/src/controls/StringMaskControlRenderer.entry.ts deleted file mode 100644 index afb090f52f..0000000000 --- a/packages/vue-vuetify/src/controls/StringMaskControlRenderer.entry.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { - type JsonFormsRendererRegistryEntry, - rankWith, - and, - isStringControl, - hasOption, -} from '@jsonforms/core'; -import controlRenderer from './StringMaskControlRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(2, and(isStringControl, hasOption('mask'))), -}; diff --git a/packages/vue-vuetify/src/controls/StringMaskControlRenderer.vue b/packages/vue-vuetify/src/controls/StringMaskControlRenderer.vue deleted file mode 100644 index 7cd870fac5..0000000000 --- a/packages/vue-vuetify/src/controls/StringMaskControlRenderer.vue +++ /dev/null @@ -1,206 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/controls/TimeControlRenderer.entry.ts b/packages/vue-vuetify/src/controls/TimeControlRenderer.entry.ts deleted file mode 100644 index 5dde013e1c..0000000000 --- a/packages/vue-vuetify/src/controls/TimeControlRenderer.entry.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { - type JsonFormsRendererRegistryEntry, - rankWith, - isTimeControl, -} from '@jsonforms/core'; -import controlRenderer from './TimeControlRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(2, isTimeControl), -}; diff --git a/packages/vue-vuetify/src/controls/TimeControlRenderer.vue b/packages/vue-vuetify/src/controls/TimeControlRenderer.vue deleted file mode 100644 index 32117f6083..0000000000 --- a/packages/vue-vuetify/src/controls/TimeControlRenderer.vue +++ /dev/null @@ -1,376 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/controls/components/ValidationBadge.vue b/packages/vue-vuetify/src/controls/components/ValidationBadge.vue deleted file mode 100644 index aed51d31d3..0000000000 --- a/packages/vue-vuetify/src/controls/components/ValidationBadge.vue +++ /dev/null @@ -1,136 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/controls/components/ValidationIcon.vue b/packages/vue-vuetify/src/controls/components/ValidationIcon.vue deleted file mode 100644 index 3b9dfc5ef7..0000000000 --- a/packages/vue-vuetify/src/controls/components/ValidationIcon.vue +++ /dev/null @@ -1,36 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/controls/components/index.ts b/packages/vue-vuetify/src/controls/components/index.ts deleted file mode 100644 index 87028e7c11..0000000000 --- a/packages/vue-vuetify/src/controls/components/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export { default as ValidationBadge } from './ValidationBadge.vue'; -export { default as ValidationIcon } from './ValidationIcon.vue'; diff --git a/packages/vue-vuetify/src/controls/directives/DisabledIconFocus.ts b/packages/vue-vuetify/src/controls/directives/DisabledIconFocus.ts deleted file mode 100644 index 828358b87a..0000000000 --- a/packages/vue-vuetify/src/controls/directives/DisabledIconFocus.ts +++ /dev/null @@ -1,9 +0,0 @@ -export const DisabledIconFocus = { - updated(el: HTMLElement): void { - el.querySelectorAll('.v-field__clearable i').forEach((x) => - x.setAttribute('tabindex', '-1'), - ); - }, -}; - -export default DisabledIconFocus; diff --git a/packages/vue-vuetify/src/controls/directives/index.ts b/packages/vue-vuetify/src/controls/directives/index.ts deleted file mode 100644 index 9606c8e20e..0000000000 --- a/packages/vue-vuetify/src/controls/directives/index.ts +++ /dev/null @@ -1 +0,0 @@ -export { default as DisabledIconFocus } from './DisabledIconFocus'; diff --git a/packages/vue-vuetify/src/controls/index.ts b/packages/vue-vuetify/src/controls/index.ts deleted file mode 100644 index 4f8c768178..0000000000 --- a/packages/vue-vuetify/src/controls/index.ts +++ /dev/null @@ -1,79 +0,0 @@ -export * from './components'; -export * from './directives'; - -export { default as AnyOfStringOrEnumControlRenderer } from './AnyOfStringOrEnumControlRenderer.vue'; -export { default as BooleanControlRenderer } from './BooleanControlRenderer.vue'; -export { default as BooleanToggleControlRenderer } from './BooleanToggleControlRenderer.vue'; -export { default as ControlWrapper } from './ControlWrapper.vue'; -export { default as DateControlRenderer } from './DateControlRenderer.vue'; -export { default as DateTimeControlRenderer } from './DateTimeControlRenderer.vue'; -export { default as EnumControlRenderer } from './EnumControlRenderer.vue'; -export { default as IntegerControlRenderer } from './IntegerControlRenderer.vue'; -export { default as MultiStringControlRenderer } from './MultiStringControlRenderer.vue'; -export { default as NumberControlRenderer } from './NumberControlRenderer.vue'; -export { default as OneOfEnumControlRenderer } from './OneOfEnumControlRenderer.vue'; -export { default as OneOfRadioGroupControlRenderer } from './OneOfRadioGroupControlRenderer.vue'; -export { default as PasswordControlRenderer } from './PasswordControlRenderer.vue'; -export { default as RadioGroupControlRenderer } from './RadioGroupControlRenderer.vue'; -export { default as SliderControlRenderer } from './SliderControlRenderer.vue'; -export { default as StringControlRenderer } from './StringControlRenderer.vue'; -export { default as StringMaskControlRenderer } from './StringMaskControlRenderer.vue'; -export { default as TimeControlRenderer } from './TimeControlRenderer.vue'; - -import { entry as anyOfStringOrEnumControlRendererEntry } from './AnyOfStringOrEnumControlRenderer.entry'; -import { entry as booleanControlRendererEntry } from './BooleanControlRenderer.entry'; -import { entry as booleanToggleControlRendererEntry } from './BooleanToggleControlRenderer.entry'; -import { entry as dateControlRendererEntry } from './DateControlRenderer.entry'; -import { entry as dateTimeControlRendererEntry } from './DateTimeControlRenderer.entry'; -import { entry as enumControlRendererEntry } from './EnumControlRenderer.entry'; -import { entry as integerControlRendererEntry } from './IntegerControlRenderer.entry'; -import { entry as multiStringControlRendererEntry } from './MultiStringControlRenderer.entry'; -import { entry as numberControlRendererEntry } from './NumberControlRenderer.entry'; -import { entry as oneOfEnumControlRendererEntry } from './OneOfEnumControlRenderer.entry'; -import { entry as oneOfRadioGroupControlRendererEntry } from './OneOfRadioGroupControlRenderer.entry'; -import { entry as passwordControlRendererEntry } from './PasswordControlRenderer.entry'; -import { entry as radioGroupControlRendererEntry } from './RadioGroupControlRenderer.entry'; -import { entry as sliderControlRendererEntry } from './SliderControlRenderer.entry'; -import { entry as stringControlRendererEntry } from './StringControlRenderer.entry'; -import { entry as stringMaskControlRendererEntry } from './StringMaskControlRenderer.entry'; -import { entry as timeControlRendererEntry } from './TimeControlRenderer.entry'; - -export const controlRenderers = [ - anyOfStringOrEnumControlRendererEntry, - booleanControlRendererEntry, - booleanToggleControlRendererEntry, - dateControlRendererEntry, - dateTimeControlRendererEntry, - enumControlRendererEntry, - integerControlRendererEntry, - multiStringControlRendererEntry, - numberControlRendererEntry, - oneOfEnumControlRendererEntry, - oneOfRadioGroupControlRendererEntry, - passwordControlRendererEntry, - radioGroupControlRendererEntry, - sliderControlRendererEntry, - stringControlRendererEntry, - stringMaskControlRendererEntry, - timeControlRendererEntry, -]; - -export { - anyOfStringOrEnumControlRendererEntry, - booleanControlRendererEntry, - booleanToggleControlRendererEntry, - dateControlRendererEntry, - dateTimeControlRendererEntry, - enumControlRendererEntry, - integerControlRendererEntry, - multiStringControlRendererEntry, - numberControlRendererEntry, - oneOfEnumControlRendererEntry, - oneOfRadioGroupControlRendererEntry, - passwordControlRendererEntry, - radioGroupControlRendererEntry, - sliderControlRendererEntry, - stringControlRendererEntry, - stringMaskControlRendererEntry, - timeControlRendererEntry, -}; diff --git a/packages/vue-vuetify/src/extended/AutocompleteEnumControlRenderer.entry.ts b/packages/vue-vuetify/src/extended/AutocompleteEnumControlRenderer.entry.ts deleted file mode 100644 index 9bab08d9d9..0000000000 --- a/packages/vue-vuetify/src/extended/AutocompleteEnumControlRenderer.entry.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { - isEnumControl, - rankWith, - type JsonFormsRendererRegistryEntry, -} from '@jsonforms/core'; -import controlRenderer from './AutocompleteEnumControlRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(10, isEnumControl), -}; diff --git a/packages/vue-vuetify/src/extended/AutocompleteEnumControlRenderer.vue b/packages/vue-vuetify/src/extended/AutocompleteEnumControlRenderer.vue deleted file mode 100644 index 9608262d73..0000000000 --- a/packages/vue-vuetify/src/extended/AutocompleteEnumControlRenderer.vue +++ /dev/null @@ -1,94 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/extended/AutocompleteOneOfEnumControlRenderer.entry.ts b/packages/vue-vuetify/src/extended/AutocompleteOneOfEnumControlRenderer.entry.ts deleted file mode 100644 index e6622f1b4e..0000000000 --- a/packages/vue-vuetify/src/extended/AutocompleteOneOfEnumControlRenderer.entry.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { - isOneOfEnumControl, - rankWith, - type JsonFormsRendererRegistryEntry, -} from '@jsonforms/core'; -import controlRenderer from './AutocompleteOneOfEnumControlRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(10, isOneOfEnumControl), -}; diff --git a/packages/vue-vuetify/src/extended/AutocompleteOneOfEnumControlRenderer.vue b/packages/vue-vuetify/src/extended/AutocompleteOneOfEnumControlRenderer.vue deleted file mode 100644 index 03e9ed970a..0000000000 --- a/packages/vue-vuetify/src/extended/AutocompleteOneOfEnumControlRenderer.vue +++ /dev/null @@ -1,94 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/extended/index.ts b/packages/vue-vuetify/src/extended/index.ts deleted file mode 100644 index c1bbd859b6..0000000000 --- a/packages/vue-vuetify/src/extended/index.ts +++ /dev/null @@ -1,15 +0,0 @@ -export { default as AutocompleteEnumControlRenderer } from './AutocompleteEnumControlRenderer.vue'; -export { default as AutocompleteOneOfEnumControlRenderer } from './AutocompleteOneOfEnumControlRenderer.vue'; - -import { entry as autocompleteEnumControlRendererEntry } from './AutocompleteEnumControlRenderer.entry'; -import { entry as autocompleteOneOfEnumControlRendererEntry } from './AutocompleteOneOfEnumControlRenderer.entry'; - -export const extendedRenderers = [ - autocompleteEnumControlRendererEntry, - autocompleteOneOfEnumControlRendererEntry, -]; - -export { - autocompleteEnumControlRendererEntry, - autocompleteOneOfEnumControlRendererEntry, -}; diff --git a/packages/vue-vuetify/src/i18n/additionalPropertiesTranslations.ts b/packages/vue-vuetify/src/i18n/additionalPropertiesTranslations.ts deleted file mode 100644 index 632415d9b7..0000000000 --- a/packages/vue-vuetify/src/i18n/additionalPropertiesTranslations.ts +++ /dev/null @@ -1,60 +0,0 @@ -import type { ComputedRef } from 'vue'; - -export interface AdditionalPropertiesDefaultTranslation { - key: AdditionalPropertiesTranslationEnum; - default: (variable?: string | null) => string; -} - -export enum AdditionalPropertiesTranslationEnum { - addTooltip = 'addTooltip', - addAriaLabel = 'addAriaLabel', - removeTooltip = 'removeTooltip', - removeAriaLabel = 'removeAriaLabel', - propertyNameLabel = 'propertyNameLabel', - propertyNameInvalid = 'propertyNameInvalid', - propertyAlreadyDefined = 'propertyAlreadyDefined', -} - -export type AdditionalPropertiesTranslations = { - [key in AdditionalPropertiesTranslationEnum]?: - | string - | ComputedRef; -}; - -export const additionalPropertiesDefaultTranslations: AdditionalPropertiesDefaultTranslation[] = - [ - { - key: AdditionalPropertiesTranslationEnum.addTooltip, - default: (input) => (input ? `Add to ${input}` : 'Add'), - }, - { - key: AdditionalPropertiesTranslationEnum.addAriaLabel, - default: (input) => (input ? `Add to ${input} button` : 'Add button'), - }, - { - key: AdditionalPropertiesTranslationEnum.removeTooltip, - default: () => 'Delete', - }, - { - key: AdditionalPropertiesTranslationEnum.removeAriaLabel, - default: () => 'Delete button', - }, - { - key: AdditionalPropertiesTranslationEnum.propertyNameLabel, - default: () => 'Property Name', - }, - { - key: AdditionalPropertiesTranslationEnum.propertyNameInvalid, - default: (input) => - input - ? `Property name '${input}' is invalid` - : 'Property name is invalid', - }, - { - key: AdditionalPropertiesTranslationEnum.propertyAlreadyDefined, - default: (input) => - input - ? `Property '${input}' already defined` - : 'Property already defined', - }, - ]; diff --git a/packages/vue-vuetify/src/i18n/i18nUtil.ts b/packages/vue-vuetify/src/i18n/i18nUtil.ts deleted file mode 100644 index 560c5c2255..0000000000 --- a/packages/vue-vuetify/src/i18n/i18nUtil.ts +++ /dev/null @@ -1,43 +0,0 @@ -import { computed, type Ref } from 'vue'; -import { - AdditionalPropertiesTranslationEnum, - type AdditionalPropertiesDefaultTranslation, - type AdditionalPropertiesTranslations, -} from './additionalPropertiesTranslations'; -import { addI18nKeyToPrefix, type Translator } from '@jsonforms/core'; - -export const getAdditionalPropertiesTranslations = ( - t: Translator, - defaultTranslations: AdditionalPropertiesDefaultTranslation[], - i18nKeyPrefix: string, - label: string, - propertyName: Ref, -): AdditionalPropertiesTranslations => { - const translations: AdditionalPropertiesTranslations = {}; - defaultTranslations.forEach((controlElement) => { - const key = addI18nKeyToPrefix(i18nKeyPrefix, controlElement.key); - - if ( - controlElement.key == - AdditionalPropertiesTranslationEnum.propertyAlreadyDefined - ) { - translations[controlElement.key] = computed(() => - t(key, controlElement.default(propertyName.value), propertyName.value), - ); - } else if ( - controlElement.key == - AdditionalPropertiesTranslationEnum.propertyNameInvalid - ) { - translations[controlElement.key] = computed(() => - t(key, controlElement.default(propertyName.value), propertyName.value), - ); - } else { - translations[controlElement.key] = t( - key, - controlElement.default(label), - label, - ); - } - }); - return translations; -}; diff --git a/packages/vue-vuetify/src/i18n/index.ts b/packages/vue-vuetify/src/i18n/index.ts deleted file mode 100644 index 42bda164bc..0000000000 --- a/packages/vue-vuetify/src/i18n/index.ts +++ /dev/null @@ -1,2 +0,0 @@ -export * from './additionalPropertiesTranslations'; -export * from './i18nUtil'; diff --git a/packages/vue-vuetify/src/icons/fa.ts b/packages/vue-vuetify/src/icons/fa.ts deleted file mode 100644 index 4b914a7287..0000000000 --- a/packages/vue-vuetify/src/icons/fa.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { IconAliases } from './icons'; - -const aliases: IconAliases = { - itemAdd: 'fas fa-plus', - itemMoveUp: 'fas fa-arrow-up', - itemMoveDown: 'fas fa-arrow-down', - itemDelete: 'fas fa-trash', - calendarClock: 'fas fa-calendar', - clock: 'far fa-clock', - passwordHide: 'far fa-eye-slash', - passwordShow: 'far fa-eye', - validationError: 'fas fa-circle-exclamation', -}; - -export { aliases }; diff --git a/packages/vue-vuetify/src/icons/icons.ts b/packages/vue-vuetify/src/icons/icons.ts deleted file mode 100644 index 12985eef09..0000000000 --- a/packages/vue-vuetify/src/icons/icons.ts +++ /dev/null @@ -1,21 +0,0 @@ -import type { ComponentPublicInstance, FunctionalComponent } from 'vue'; - -export type JSXComponent = - | { new (): ComponentPublicInstance } - | FunctionalComponent; -export type IconValue = - | string - | (string | [path: string, opacity: number])[] - | JSXComponent; - -export interface IconAliases { - itemAdd: IconValue; - itemMoveUp: IconValue; - itemMoveDown: IconValue; - itemDelete: IconValue; - calendarClock: IconValue; - clock: IconValue; - passwordHide: IconValue; - passwordShow: IconValue; - validationError: IconValue; -} diff --git a/packages/vue-vuetify/src/icons/index.ts b/packages/vue-vuetify/src/icons/index.ts deleted file mode 100644 index 997e6af9f2..0000000000 --- a/packages/vue-vuetify/src/icons/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export { aliases as faIconAliases } from './fa'; -export * from './icons'; -export { aliases as mdiIconAliases } from './mdi'; diff --git a/packages/vue-vuetify/src/icons/mdi.ts b/packages/vue-vuetify/src/icons/mdi.ts deleted file mode 100644 index d63940b2b4..0000000000 --- a/packages/vue-vuetify/src/icons/mdi.ts +++ /dev/null @@ -1,15 +0,0 @@ -import type { IconAliases } from './icons'; - -const aliases: IconAliases = { - itemAdd: 'mdi-plus', - itemMoveUp: 'mdi-arrow-up', - itemMoveDown: 'mdi-arrow-down', - itemDelete: 'mdi-delete', - calendarClock: 'mdi-calendar-clock', - clock: 'mdi-clock-outline', - passwordHide: 'mdi-eye-off', - passwordShow: 'mdi-eye', - validationError: 'mdi-alert-circle-outline', -}; - -export { aliases }; diff --git a/packages/vue-vuetify/src/index.ts b/packages/vue-vuetify/src/index.ts deleted file mode 100644 index 563e22c45b..0000000000 --- a/packages/vue-vuetify/src/index.ts +++ /dev/null @@ -1,11 +0,0 @@ -export * from './additional'; -export * from './array'; -export * from './complex'; -export * from './controls'; -export * from './extended'; -export * from './i18n'; -export * from './icons'; -export * from './layouts'; -export * from './renderers'; -export * from './styles'; -export * from './util'; diff --git a/packages/vue-vuetify/src/layouts/ArrayLayoutRenderer.entry.ts b/packages/vue-vuetify/src/layouts/ArrayLayoutRenderer.entry.ts deleted file mode 100644 index 6e7c4d01ae..0000000000 --- a/packages/vue-vuetify/src/layouts/ArrayLayoutRenderer.entry.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { - isObjectArrayWithNesting, - rankWith, - type JsonFormsRendererRegistryEntry, -} from '@jsonforms/core'; -import controlRenderer from './ArrayLayoutRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: controlRenderer, - tester: rankWith(4, isObjectArrayWithNesting), -}; diff --git a/packages/vue-vuetify/src/layouts/ArrayLayoutRenderer.vue b/packages/vue-vuetify/src/layouts/ArrayLayoutRenderer.vue deleted file mode 100644 index b0263a00c3..0000000000 --- a/packages/vue-vuetify/src/layouts/ArrayLayoutRenderer.vue +++ /dev/null @@ -1,439 +0,0 @@ - - - - - diff --git a/packages/vue-vuetify/src/layouts/CategorizationRenderer.entry.ts b/packages/vue-vuetify/src/layouts/CategorizationRenderer.entry.ts deleted file mode 100644 index 58a776195b..0000000000 --- a/packages/vue-vuetify/src/layouts/CategorizationRenderer.entry.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { - and, - categorizationHasCategory, - isCategorization, - rankWith, - type JsonFormsRendererRegistryEntry, -} from '@jsonforms/core'; -import layoutRenderer from './CategorizationRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: layoutRenderer, - tester: rankWith(2, and(isCategorization, categorizationHasCategory)), -}; diff --git a/packages/vue-vuetify/src/layouts/CategorizationRenderer.vue b/packages/vue-vuetify/src/layouts/CategorizationRenderer.vue deleted file mode 100644 index 809b7cf601..0000000000 --- a/packages/vue-vuetify/src/layouts/CategorizationRenderer.vue +++ /dev/null @@ -1,136 +0,0 @@ - - - - - diff --git a/packages/vue-vuetify/src/layouts/CategorizationStepperRenderer.entry.ts b/packages/vue-vuetify/src/layouts/CategorizationStepperRenderer.entry.ts deleted file mode 100644 index 8181e1093c..0000000000 --- a/packages/vue-vuetify/src/layouts/CategorizationStepperRenderer.entry.ts +++ /dev/null @@ -1,21 +0,0 @@ -import { - and, - categorizationHasCategory, - isCategorization, - optionIs, - rankWith, - type JsonFormsRendererRegistryEntry, -} from '@jsonforms/core'; -import layoutRenderer from './CategorizationStepperRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: layoutRenderer, - tester: rankWith( - 3, - and( - isCategorization, - categorizationHasCategory, - optionIs('variant', 'stepper'), - ), - ), -}; diff --git a/packages/vue-vuetify/src/layouts/CategorizationStepperRenderer.vue b/packages/vue-vuetify/src/layouts/CategorizationStepperRenderer.vue deleted file mode 100644 index a3f62d3a1d..0000000000 --- a/packages/vue-vuetify/src/layouts/CategorizationStepperRenderer.vue +++ /dev/null @@ -1,144 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/layouts/GroupRenderer.entry.ts b/packages/vue-vuetify/src/layouts/GroupRenderer.entry.ts deleted file mode 100644 index 0c7de54111..0000000000 --- a/packages/vue-vuetify/src/layouts/GroupRenderer.entry.ts +++ /dev/null @@ -1,13 +0,0 @@ -import { - type JsonFormsRendererRegistryEntry, - rankWith, - and, - isLayout, - uiTypeIs, -} from '@jsonforms/core'; -import layoutRenderer from './GroupRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: layoutRenderer, - tester: rankWith(2, and(isLayout, uiTypeIs('Group'))), -}; diff --git a/packages/vue-vuetify/src/layouts/GroupRenderer.vue b/packages/vue-vuetify/src/layouts/GroupRenderer.vue deleted file mode 100644 index c65bd1b145..0000000000 --- a/packages/vue-vuetify/src/layouts/GroupRenderer.vue +++ /dev/null @@ -1,96 +0,0 @@ - - - - - - diff --git a/packages/vue-vuetify/src/layouts/HorizontalLayoutRenderer.entry.ts b/packages/vue-vuetify/src/layouts/HorizontalLayoutRenderer.entry.ts deleted file mode 100644 index 4e99194947..0000000000 --- a/packages/vue-vuetify/src/layouts/HorizontalLayoutRenderer.entry.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { - rankWith, - uiTypeIs, - type JsonFormsRendererRegistryEntry, -} from '@jsonforms/core'; -import layoutRenderer from './HorizontalLayoutRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: layoutRenderer, - tester: rankWith(2, uiTypeIs('HorizontalLayout')), -}; diff --git a/packages/vue-vuetify/src/layouts/HorizontalLayoutRenderer.vue b/packages/vue-vuetify/src/layouts/HorizontalLayoutRenderer.vue deleted file mode 100644 index 666cfa72c1..0000000000 --- a/packages/vue-vuetify/src/layouts/HorizontalLayoutRenderer.vue +++ /dev/null @@ -1,111 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/layouts/VerticalLayoutRenderer.entry.ts b/packages/vue-vuetify/src/layouts/VerticalLayoutRenderer.entry.ts deleted file mode 100644 index a32a980dbd..0000000000 --- a/packages/vue-vuetify/src/layouts/VerticalLayoutRenderer.entry.ts +++ /dev/null @@ -1,11 +0,0 @@ -import { - rankWith, - uiTypeIs, - type JsonFormsRendererRegistryEntry, -} from '@jsonforms/core'; -import layoutRenderer from './VerticalLayoutRenderer.vue'; - -export const entry: JsonFormsRendererRegistryEntry = { - renderer: layoutRenderer, - tester: rankWith(2, uiTypeIs('VerticalLayout')), -}; diff --git a/packages/vue-vuetify/src/layouts/VerticalLayoutRenderer.vue b/packages/vue-vuetify/src/layouts/VerticalLayoutRenderer.vue deleted file mode 100644 index c8059fccbc..0000000000 --- a/packages/vue-vuetify/src/layouts/VerticalLayoutRenderer.vue +++ /dev/null @@ -1,60 +0,0 @@ - - - diff --git a/packages/vue-vuetify/src/layouts/index.ts b/packages/vue-vuetify/src/layouts/index.ts deleted file mode 100644 index 7ae0fed229..0000000000 --- a/packages/vue-vuetify/src/layouts/index.ts +++ /dev/null @@ -1,46 +0,0 @@ -import { - isLayout, - rankWith, - type JsonFormsRendererRegistryEntry, -} from '@jsonforms/core'; - -import { entry as arrayLayoutRendererEntry } from './ArrayLayoutRenderer.entry'; -import { entry as categorizationRendererEntry } from './CategorizationRenderer.entry'; -import { entry as categorizationStepperRendererEntry } from './CategorizationStepperRenderer.entry'; -import { entry as groupRendererEntry } from './GroupRenderer.entry'; -import { entry as horizontalLayoutRendererEntry } from './HorizontalLayoutRenderer.entry'; -import { entry as verticalLayoutRendererEntry } from './VerticalLayoutRenderer.entry'; - -import { default as VerticalLayoutRenderer } from './VerticalLayoutRenderer.vue'; -export { default as ArrayLayoutRenderer } from './ArrayLayoutRenderer.vue'; -export { default as CategorizationRenderer } from './CategorizationRenderer.vue'; -export { default as CategorizationStepperRenderer } from './CategorizationStepperRenderer.vue'; -export { default as GroupRenderer } from './GroupRenderer.vue'; -export { default as HorizontalLayoutRenderer } from './HorizontalLayoutRenderer.vue'; -export { default as VerticalLayoutRenderer } from './VerticalLayoutRenderer.vue'; - -// default layout renderer is the VerticalLayoutRenderer -const layoutRendererEntry: JsonFormsRendererRegistryEntry = { - renderer: VerticalLayoutRenderer, - tester: rankWith(1, isLayout), -}; - -export const layoutRenderers = [ - layoutRendererEntry, - arrayLayoutRendererEntry, - categorizationRendererEntry, - categorizationStepperRendererEntry, - groupRendererEntry, - horizontalLayoutRendererEntry, - verticalLayoutRendererEntry, -]; - -export { - layoutRendererEntry, - arrayLayoutRendererEntry, - categorizationRendererEntry, - categorizationStepperRendererEntry, - groupRendererEntry, - horizontalLayoutRendererEntry, - verticalLayoutRendererEntry, -}; diff --git a/packages/vue-vuetify/src/renderers.ts b/packages/vue-vuetify/src/renderers.ts deleted file mode 100644 index 8e711241c1..0000000000 --- a/packages/vue-vuetify/src/renderers.ts +++ /dev/null @@ -1,19 +0,0 @@ -import { additionalRenderers } from './additional'; -import { arrayRenderers } from './array'; -import { complexRenderers } from './complex'; -import { controlRenderers } from './controls'; -import { extendedRenderers } from './extended'; -import { layoutRenderers } from './layouts'; - -export const vuetifyRenderers = [ - ...additionalRenderers, - ...arrayRenderers, - ...complexRenderers, - ...controlRenderers, - ...layoutRenderers, -]; - -export const extendedVuetifyRenderers = [ - ...extendedRenderers, - ...vuetifyRenderers, -]; diff --git a/packages/vue-vuetify/src/styles/defaultStyles.ts b/packages/vue-vuetify/src/styles/defaultStyles.ts deleted file mode 100644 index b77192a3cf..0000000000 --- a/packages/vue-vuetify/src/styles/defaultStyles.ts +++ /dev/null @@ -1,58 +0,0 @@ -import type { Styles } from './styles'; - -export const defaultStyles: Styles = { - control: { - root: 'control', - input: 'input', - }, - verticalLayout: { - root: 'vertical-layout', - item: 'vertical-layout-item', - }, - horizontalLayout: { - root: 'horizontal-layout', - item: 'horizontal-layout-item', - }, - group: { - root: 'group', - label: 'group-label', - item: 'group-item', - bare: 'group-bare', - alignLeft: 'group-align-left', - }, - arrayList: { - root: 'array-list', - toolbar: 'array-list-toolbar', - title: 'array-list-title', - validationIcon: 'array-list-validation', - addButton: 'array-list-add', - label: 'array-list-label', - noData: 'array-list-no-data', - item: 'array-list-item', - itemHeader: 'array-list-item-header', - itemLabel: 'array-list-item-label', - itemContent: 'array-list-item-content', - itemMoveUp: 'array-list-item-move-up', - itemMoveDown: 'array-list-item-move-down', - itemDelete: 'array-list-item-delete', - }, - listWithDetail: { - root: 'list-with-detail', - toolbar: 'list-with-detail-toolbar', - addButton: 'list-with-detail-add', - label: 'list-with-detail-label', - noData: 'list-with-detail-no-data', - item: 'list-with-detail-item', - itemLabel: 'list-with-detail-item-label', - itemContent: 'list-with-detail-item-content', - itemMoveUp: 'list-with-detail-item-move-up', - itemMoveDown: 'list-with-detail-item-move-down', - itemDelete: 'list-with-detail-item-delete', - }, - label: { - root: 'label-element', - }, - categorization: { - root: 'categorization', - }, -}; diff --git a/packages/vue-vuetify/src/styles/index.ts b/packages/vue-vuetify/src/styles/index.ts deleted file mode 100644 index c423222370..0000000000 --- a/packages/vue-vuetify/src/styles/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export * from './defaultStyles'; -export * from './styles'; -export * from './util'; diff --git a/packages/vue-vuetify/src/styles/styles.ts b/packages/vue-vuetify/src/styles/styles.ts deleted file mode 100644 index 6cb9b0239f..0000000000 --- a/packages/vue-vuetify/src/styles/styles.ts +++ /dev/null @@ -1,91 +0,0 @@ -import type { UISchemaElement } from '@jsonforms/core'; -import merge from 'lodash/merge'; -import { inject } from 'vue'; -import { defaultStyles } from './defaultStyles'; - -const createEmptyStyles = (): Styles => ({ - control: {}, - verticalLayout: {}, - horizontalLayout: {}, - group: {}, - arrayList: {}, - listWithDetail: {}, - label: {}, - categorization: {}, -}); - -export interface Styles { - control: { - root?: string; - input?: string; - }; - verticalLayout: { - root?: string; - item?: string; - }; - horizontalLayout: { - root?: string; - item?: string; - }; - group: { - root?: string; - label?: string; - item?: string; - bare?: string; - alignLeft?: string; - }; - arrayList: { - root?: string; - toolbar?: string; - title?: string; - validationIcon?: string; - container?: string; - addButton?: string; - label?: string; - noData?: string; - item?: string; - itemContainer?: string; - itemHeader?: string; - itemLabel?: string; - itemContent?: string; - itemMoveUp?: string; - itemMoveDown?: string; - itemDelete?: string; - }; - listWithDetail: { - root?: string; - toolbar?: string; - addButton?: string; - label?: string; - noData?: string; - item?: string; - itemLabel?: string; - itemContent?: string; - itemMoveUp?: string; - itemMoveDown?: string; - itemDelete?: string; - }; - label: { - root?: string; - }; - categorization: { - root?: string; - }; -} - -export const useStyles = (element?: UISchemaElement): Styles => { - const userStyles = inject('styles', defaultStyles); - if (!element?.options?.styles) { - return userStyles; - } - const styles = createEmptyStyles(); - if (userStyles) { - merge(styles, userStyles); - } else { - merge(styles, defaultStyles); - } - if (element?.options?.styles) { - merge(styles, element.options.styles); - } - return styles; -}; diff --git a/packages/vue-vuetify/src/styles/util.ts b/packages/vue-vuetify/src/styles/util.ts deleted file mode 100644 index b7c0aaee11..0000000000 --- a/packages/vue-vuetify/src/styles/util.ts +++ /dev/null @@ -1,36 +0,0 @@ -import cloneDeep from 'lodash/cloneDeep'; -import mergeWith from 'lodash/mergeWith'; -import type { Styles } from './styles'; - -export const classes = ( - strings: TemplateStringsArray, - ...variables: any[] -): string => { - return strings - .reduce((acc, curr, index) => { - return `${acc}${curr}${variables[index] || ''}`; - }, '') - .trim(); -}; - -/** - * Helper function to merge two styles definitions. The contained classes will be combined, not overwritten. - * - * Example usage: - * ```ts - * const myStyles = mergeStyles(defaultStyles, { control: { root: 'mycontrol' } }); - * ``` - */ -export const mergeStyles = ( - stylesA: Partial, - stylesB: Partial, -): Partial => { - const styles = cloneDeep(stylesA); - mergeWith(styles, stylesB, (aValue, bValue) => { - if (typeof aValue === 'string' && typeof bValue === 'string') { - return `${aValue} ${bValue}`; - } - return undefined; - }); - return styles; -}; diff --git a/packages/vue-vuetify/src/util/composition.ts b/packages/vue-vuetify/src/util/composition.ts deleted file mode 100644 index cd3b095bc9..0000000000 --- a/packages/vue-vuetify/src/util/composition.ts +++ /dev/null @@ -1,496 +0,0 @@ -import { aliases as faIcons } from '@/icons/fa'; -import type { IconAliases } from '@/icons/icons'; -import { aliases as mdiIcons } from '@/icons/mdi'; -import { - Resolve, - arrayDefaultTranslations, - combinatorDefaultTranslations, - composePaths, - computeLabel, - defaultJsonFormsI18nState, - getArrayTranslations, - getCombinatorTranslations, - getFirstPrimitiveProp, - isDescriptionHidden, - type ControlElement, - type DispatchPropsOfControl, - type DispatchPropsOfMultiEnumControl, - type JsonFormsSubStates, - type JsonSchema, - type UISchemaElement, -} from '@jsonforms/core'; -import type Ajv from 'ajv'; -import type { ErrorObject } from 'ajv'; -import cloneDeep from 'lodash/cloneDeep'; -import debounce from 'lodash/debounce'; -import get from 'lodash/get'; -import isPlainObject from 'lodash/isPlainObject'; -import merge from 'lodash/merge'; -import { - computed, - inject, - provide, - ref, - type ComputedRef, - type InjectionKey, -} from 'vue'; -import type { IconOptions } from 'vuetify'; -import { useStyles } from '../styles'; -import { IsDynamicPropertyContext } from './inject'; - -export const IconSymbol: InjectionKey> = - Symbol.for('vuetify:icons'); - -export const useControlAppliedOptions = < - T extends { config: any; uischema: UISchemaElement }, - I extends { - control: ComputedRef; - }, ->( - input: I, -) => { - return computed(() => - merge( - {}, - cloneDeep(input.control.value.config), - cloneDeep(input.control.value.uischema.options), - ), - ); -}; - -export const useLayoutAppliedOptions = < - T extends { config: any; uischema: UISchemaElement }, - I extends { - layout: ComputedRef; - }, ->( - input: I, -) => { - return computed(() => - merge( - {}, - cloneDeep(input.layout.value.config), - cloneDeep(input.layout.value.uischema.options), - ), - ); -}; - -export const useComputedLabel = < - T extends { label: string; required: boolean }, - I extends { control: ComputedRef }, ->( - input: I, - appliedOptions: ReturnType, -) => { - return computed((): string => { - return computeLabel( - input.control.value.label, - input.control.value.required, - !!appliedOptions.value?.hideRequiredAsterisk, - ); - }); -}; - -/** - * Adds styles, appliedOptions and vuetifyProps - */ -export const useVuetifyLabel = < - T extends { - uischema: UISchemaElement; - config: any; - }, - I extends { - label: ComputedRef; - }, ->( - input: I, -) => { - const styles = useStyles(input.label.value.uischema); - const appliedOptions = computed(() => - merge( - {}, - cloneDeep(input.label.value.config), - cloneDeep(input.label.value.uischema.options), - ), - ); - const vuetifyProps = (path: string) => { - const props = get(appliedOptions.value?.vuetify, path); - - return props && isPlainObject(props) ? props : {}; - }; - return { - ...input, - appliedOptions, - vuetifyProps, - styles, - }; -}; - -/** - * Adds styles, isFocused, appliedOptions and onChange - */ -export const useVuetifyControl = < - T extends { - uischema: ControlElement; - path: string; - config: any; - label: string; - description: string; - required: boolean; - errors: string; - id: string; - visible: boolean; - }, - I extends { - control: ComputedRef; - } & (DispatchPropsOfControl | DispatchPropsOfMultiEnumControl), ->( - input: I, - adaptValue: (target: any) => any = (v) => v, - debounceWait?: number, -) => { - const touched = ref(false); - - const changeEmitter = - typeof debounceWait === 'number' && - (input as DispatchPropsOfControl).handleChange - ? debounce((input as DispatchPropsOfControl).handleChange, debounceWait) - : (input as DispatchPropsOfControl).handleChange; - - const onChange = (value: any) => { - if (changeEmitter) { - changeEmitter(input.control.value.path, adaptValue(value)); - } - }; - - const appliedOptions = useControlAppliedOptions(input); - const isFocused = ref(false); - - const handleFocus = () => { - isFocused.value = true; - }; - - const handleBlur = () => { - touched.value = true; - isFocused.value = false; - }; - - const filteredErrors = computed(() => { - return touched.value || !appliedOptions.value.enableFilterErrorsBeforeTouch - ? input.control.value.errors - : ''; - }); - - const persistentHint = (): boolean => { - return !isDescriptionHidden( - input.control.value.visible, - input.control.value.description, - isFocused.value, - !!appliedOptions.value?.showUnfocusedDescription, - ); - }; - - const computedLabel = useComputedLabel(input, appliedOptions); - - const controlWrapper = computed(() => { - const { id, description, errors, label, visible, required } = - input.control.value; - return { id, description, errors, label, visible, required }; - }); - - const styles = useStyles(input.control.value.uischema); - - const vuetifyProps = (path: string) => { - const props = get(appliedOptions.value?.vuetify, path); - - return props && isPlainObject(props) ? props : {}; - }; - - const overwrittenControl = computed(() => { - return { - ...input.control.value, - errors: filteredErrors.value, - }; - }); - - const rawErrors = computed(() => input.control.value.errors); - - return { - ...input, - control: overwrittenControl, - styles, - isFocused, - appliedOptions, - controlWrapper, - onChange, - vuetifyProps, - persistentHint, - computedLabel, - touched, - handleBlur, - handleFocus, - rawErrors, - }; -}; - -export const useCombinatorTranslations = < - T extends { - i18nKeyPrefix: string; - label: string; - }, - I extends { - control: ComputedRef; - }, ->( - input: I, -) => { - const jsonforms = inject('jsonforms'); - const translations = getCombinatorTranslations( - jsonforms?.i18n?.translate ?? defaultJsonFormsI18nState.translate, - combinatorDefaultTranslations, - input.control.value.i18nKeyPrefix, - input.control.value.label, - ); - - const overwrittenControl = computed(() => { - return { - ...input.control.value, - translations, - }; - }); - - return { - ...input, - control: overwrittenControl, - }; -}; - -export const useJsonForms = () => { - const jsonforms = inject('jsonforms'); - - if (!jsonforms) { - throw new Error( - "'jsonforms couldn't be injected. Are you within JSON Forms?", - ); - } - - return jsonforms; -}; - -export const useTranslator = () => { - const jsonforms = useJsonForms(); - - if (!jsonforms.i18n || !jsonforms.i18n.translate) { - throw new Error( - "'jsonforms i18n couldn't be injected. Are you within JSON Forms?", - ); - } - - const translate = computed(() => { - // eslint-disable-next-line @typescript-eslint/no-non-null-assertion - return jsonforms.i18n!.translate!; - }); - - return translate; -}; - -/** - * Adds styles and appliedOptions - */ -export const useVuetifyLayout = < - T extends { config: any; uischema: UISchemaElement }, - I extends { layout: ComputedRef }, ->( - input: I, -) => { - const appliedOptions = useLayoutAppliedOptions(input); - - const vuetifyProps = (path: string) => { - const props = get(appliedOptions.value?.vuetify, path); - - return props && isPlainObject(props) ? props : {}; - }; - - return { - ...input, - styles: useStyles(input.layout.value.uischema), - appliedOptions, - vuetifyProps, - }; -}; - -/** - * Adds styles, appliedOptions and childUiSchema - */ -export const useVuetifyArrayControl = < - T extends { - label: string; - required: boolean; - config: any; - uischema: UISchemaElement; - schema: JsonSchema; - data: any; - childErrors: ErrorObject[]; - i18nKeyPrefix: string; - }, - I extends { - control: ComputedRef; - }, ->( - input: I, -) => { - const appliedOptions = useControlAppliedOptions(input); - - const computedLabel = useComputedLabel(input, appliedOptions); - - const vuetifyProps = (path: string) => { - const props = get(appliedOptions.value?.vuetify, path); - - return props && isPlainObject(props) ? props : {}; - }; - - const childLabelForIndex = (index: number | null) => { - if (index === null) { - return ''; - } - const childLabelProp = - input.control.value.uischema.options?.childLabelProp ?? - getFirstPrimitiveProp(input.control.value.schema); - if (!childLabelProp) { - return `${index}`; - } - const labelValue = Resolve.data( - input.control.value.data, - composePaths(`${index}`, childLabelProp), - ); - if ( - labelValue === undefined || - labelValue === null || - Number.isNaN(labelValue) - ) { - return ''; - } - return `${labelValue}`; - }; - const filteredChildErrors = computed(() => { - // supress childErrors unless touch filtering is disabled - // otherwise all child errors will show, irrespective of their control touch state - const filtered: ErrorObject[] = appliedOptions.value - ?.enableFilterErrorsBeforeTouch - ? [] - : input.control.value.childErrors; - return filtered; - }); - - const jsonforms = inject('jsonforms'); - const translations = getArrayTranslations( - jsonforms?.i18n?.translate ?? defaultJsonFormsI18nState.translate, - arrayDefaultTranslations, - input.control.value.i18nKeyPrefix, - input.control.value.label, - ); - - const overwrittenControl = computed(() => { - return { - ...input.control.value, - childErrors: filteredChildErrors.value, - translations, - }; - }); - - return { - ...input, - control: overwrittenControl, - styles: useStyles(input.control.value.uischema), - appliedOptions, - childLabelForIndex, - computedLabel, - vuetifyProps, - rawChildErrors: input.control.value.childErrors, - }; -}; - -/** - * Adds styles and appliedOptions - */ -export const useVuetifyBasicControl = < - T extends { config: any; uischema: UISchemaElement }, - I extends { - control: ComputedRef; - }, ->( - input: I, -) => { - const appliedOptions = useControlAppliedOptions(input); - - const vuetifyProps = (path: string) => { - const props = get(appliedOptions.value?.vuetify, path); - - return props && isPlainObject(props) ? props : {}; - }; - - return { - ...input, - styles: useStyles(input.control.value.uischema), - appliedOptions, - vuetifyProps, - }; -}; - -/** - * Extracts Ajv from JSON Forms - */ -export const useAjv = () => { - const jsonforms = useJsonForms(); - - // should always exist - return jsonforms.core?.ajv as Ajv; -}; - -export interface NestedInfo { - level: number; - parentElement?: 'array' | 'object'; -} - -export const useNested = (element: false | 'array' | 'object'): NestedInfo => { - const nestedInfo = inject('jsonforms.nestedInfo', { level: 0 }); - if (element) { - provide('jsonforms.nestedInfo', { - level: nestedInfo.level + 1, - parentElement: element, - }); - } - return nestedInfo; -}; - -export const useIcons = () => { - const iconSet = computed(() => { - const icons = inject(IconSymbol); - if (!icons) throw new Error('Missing Vuetify Icons provide!'); - - let result = mdiIcons; // default - const overrides = icons.aliases; - - if (icons.defaultSet === 'fa') { - result = faIcons; - } - - return overrides ? { ...result, ...overrides } : result; - }); - - return { - current: iconSet, - }; -}; - -export const determineClearValue = (defaultValue: any) => { - const jsonforms = useJsonForms(); - - const useDefaultValue = inject( - IsDynamicPropertyContext, - jsonforms.core?.schema.type !== 'object', - ); - - // undefined will clear the property from the object - return useDefaultValue ? defaultValue : undefined; -}; diff --git a/packages/vue-vuetify/src/util/datejs.ts b/packages/vue-vuetify/src/util/datejs.ts deleted file mode 100644 index 667e213de7..0000000000 --- a/packages/vue-vuetify/src/util/datejs.ts +++ /dev/null @@ -1,455 +0,0 @@ -import dayjs from 'dayjs'; -import customParseFormat from 'dayjs/plugin/customParseFormat'; -import localeData from 'dayjs/plugin/localeData'; -import localizedFormat from 'dayjs/plugin/localizedFormat'; -import timezone from 'dayjs/plugin/timezone'; // dependent on utc plugin -import utc from 'dayjs/plugin/utc'; - -import type { MaskTokens, MaskType } from 'maska'; - -// required for the custom save formats in the date, time and date-time pickers -dayjs.extend(customParseFormat); -dayjs.extend(utc); -dayjs.extend(timezone); -dayjs.extend(localeData); -dayjs.extend(localizedFormat); - -export const expandLocaleFormat = (format: string): string => { - return format.replace(/\b(LT|LTS|L{1,4})\b/g, function (match, p1) { - // Replace each captured value with a specific value - switch (p1) { - case 'LT': - case 'LTS': - case 'L': - case 'LL': - case 'LLL': - case 'LLLL': - return dayjs.localeData().longDateFormat(p1); - default: - return match; // Return the match unchanged if not in the set - } - }); -}; - -export const parseDateTime = ( - data: string | number | dayjs.Dayjs | Date | null | undefined, - format: string | string[] | undefined, -): dayjs.Dayjs | null => { - if (!data) { - return null; - } - const dayjsData = dayjs(data, format); - if (!dayjsData.isValid()) { - return null; - } - return dayjsData; -}; - -// defintions from - https://day.js.org/docs/en/parse/string-format#list-of-all-available-parsing-tokens -const dayjsTokens = [ - 'YYYY', // Four-digit year - example: 2001 - 'YY', //Two-digit year - example: 01 - 'M', // Month, beginning at 1 - example: 1-12 - 'MM', // Month, 2-digits - example: 01-12 - 'MMM', // The abbreviated month name - example: Jan-Dec - 'MMMM', // The full month name - example: January-December - 'D', // Day of month - example: 1-31 - 'DD', // Day of month, 2-digits - example: 01-31 - 'H', // Hours - example: 0-23 - 'HH', // Hours, 2-digits - example: 00-23 - 'h', // Hours, 12-hour clock - example: 1-12 - 'hh', // Hours, 12-hour clock, 2-digits - example: 01-12 - 'm', // Minutes - example: 0-59 - 'mm', // Minutes, 2-digits - example: 00-59 - 's', // Seconds - example: 0-59 - 'ss', // Seconds, 2-digits - example: 00-59 - 'S', // Hundreds of milliseconds, 1-digit - example: 0-9 - 'SS', // Tens of milliseconds, 2-digits - example: 00-99 - 'SSS', // Milliseconds, 3-digits - example: 000-999 - 'Z', // Offset from UTC - example: -05:00 - 'ZZ', // Compact offset from UTC, 2-digits - example: -0500 - 'A', // Post or ante meridiem, upper-case - example: AM PM - 'a', // Post or ante meridiem, lower-case - example: am pm, - 'X', // Unix timestamp - example 1410715640.579, - 'x', // Unix ms timestamp - example 1410715640579 -].sort((a, b) => b.length - a.length); - -export const convertDayjsToMaskaFormat = ( - dayjsFormat: string, -): { mask: MaskType; tokens: MaskTokens } => { - function* nextKey(preservedKeys: string): Generator { - let currentCharCode = 'A'.charCodeAt(0); - - while (currentCharCode <= 65535) { - // Unicode character range - const currentChar = String.fromCharCode(currentCharCode); - if (!preservedKeys.includes(currentChar)) { - yield currentChar; - } - currentCharCode++; - } - } - - function RegExpLiteral(str: string) { - return str.replace(/[.*+?^${}()|[\]\\]/g, '\\$&'); - } - - class Tokens { - private tokens: MaskTokens; - private charGenerator; - - constructor(preservedKeys: string) { - this.tokens = {}; - this.charGenerator = nextKey(preservedKeys); - } - - public getTokens(): MaskTokens { - return this.tokens; - } - - public getTokenKey(token: MaskTokens[keyof MaskTokens]): string { - const entry = Object.entries(this.tokens).find( - (entry) => - entry[1].pattern.toString() === token.pattern.toString() && - entry[1].optional === token.optional, - ); - if (entry) { - return entry[0]; - } - - throw new Error( - 'Key for pattern ' + token.pattern.toString() + ' not found.', - ); - } - - public registerToken(token: MaskTokens[keyof MaskTokens]): string { - const entry = Object.entries(this.tokens).find( - (entry) => - entry[1].pattern.toString() === token.pattern.toString() && - entry[1].optional === token.optional, - ); - if (entry) { - return entry[0]; - } - - const key = this.charGenerator.next().value; - - this.tokens[key] = token; - return key; - } - } - - const parts = dayjsFormat - .split(new RegExp(`(${dayjsTokens.join('|')})`)) - .filter(Boolean); - - const reservedChars = parts - .filter((part) => !dayjsTokens.includes(part)) - .join(''); - const tokens = new Tokens(reservedChars); - - // need to prebuild all keys to tokens that are going to be used in tokenFunction - tokens.registerToken({ pattern: /[0-9]/ }); - tokens.registerToken({ pattern: /1/ }); - tokens.registerToken({ pattern: /[0-2]/ }); - tokens.registerToken({ pattern: /[0-2]/, optional: true }); - tokens.registerToken({ pattern: /[0-1]/ }); - tokens.registerToken({ pattern: /[1-9]/ }); - - let escapedMonths = dayjs.monthsShort().map((month) => RegExpLiteral(month)); - let regexPattern = `\\b(${escapedMonths.join('|')})\\b`; - tokens.registerToken({ pattern: new RegExp(regexPattern, 'i') }); - - escapedMonths = dayjs.months().map((month) => RegExpLiteral(month)); - regexPattern = `\\b(${escapedMonths.join('|')})\\b`; - - tokens.registerToken({ pattern: new RegExp(regexPattern, 'i') }); - tokens.registerToken({ pattern: /[1-3]/ }); - tokens.registerToken({ pattern: /[0-1]/, optional: true }); - tokens.registerToken({ pattern: /[0-9]/, optional: true }); - tokens.registerToken({ pattern: /[0-3]/ }); - tokens.registerToken({ pattern: /[0-3]/, optional: true }); - tokens.registerToken({ pattern: /[0-5]/ }); - tokens.registerToken({ pattern: /[ap]/ }); - tokens.registerToken({ pattern: /m/ }); - tokens.registerToken({ pattern: /[AP]/ }); - tokens.registerToken({ pattern: /M/ }); - tokens.registerToken({ pattern: /[+-]/ }); - tokens.registerToken({ pattern: /[0-4]/ }); - tokens.registerToken({ pattern: /:/ }); - tokens.registerToken({ pattern: /[.]/ }); - tokens.registerToken({ pattern: /[.]/, optional: true }); - - const tokenFunction = (value: string): string => { - let index = 0; - - const result: (string | MaskTokens[keyof MaskTokens])[] = []; - for (const part of parts) { - if (!part || part === '') { - continue; - } - if (index > value.length) { - break; - } - - if (part === 'YYYY') { - result.push({ pattern: /[0-9]/ }); - result.push({ pattern: /[0-9]/ }); - result.push({ pattern: /[0-9]/ }); - result.push({ pattern: /[0-9]/ }); - index += 4; - } else if (part === 'YY' || part == 'SS') { - result.push({ pattern: /[0-9]/ }); - result.push({ pattern: /[0-9]/ }); - index += 2; - } else if (part === 'M') { - result.push({ pattern: /1/ }); - if (value.charAt(index) === '1') { - if (/[0-2]/.test(value.charAt(index + 1))) { - result.push({ pattern: /[0-2]/ }); - index += 1; - } else if (value.charAt(index + 1) === '') { - result.push({ pattern: /[0-2]/, optional: true }); - } - } - index += 1; - } else if (part === 'MM' || part == 'hh') { - result.push({ pattern: /[0-1]/ }); - result.push( - value.charAt(index) === '0' - ? { pattern: /[1-9]/ } - : { pattern: /[0-2]/ }, - ); - index += 2; - } else if (part === 'MMM') { - const escapedMonths = dayjs - .monthsShort() - .map((month) => RegExpLiteral(month)); - const regexPattern = `\\b(${escapedMonths.join('|')})\\b`; - - result.push({ pattern: new RegExp(regexPattern, 'i') }); - let monthSpecified = false; - - for (const month of dayjs.monthsShort()) { - if ( - index < value.length && - value.substring(index).startsWith(month) - ) { - index += month.length; - monthSpecified = true; - break; - } - } - if (!monthSpecified) { - // can't continue until the months is not matched - break; - } - } else if (part === 'MMMM') { - const escapedMonths = dayjs - .months() - .map((month) => RegExpLiteral(month)); - const regexPattern = `\\b(${escapedMonths.join('|')})\\b`; - - result.push({ pattern: new RegExp(regexPattern, 'i') }); - let monthSpecified = false; - - for (const month of dayjs.months()) { - if ( - index < value.length && - value.substring(index).startsWith(month) - ) { - index += month.length; - monthSpecified = true; - break; - } - } - if (!monthSpecified) { - // can't continue until the months is not matched - break; - } - } else if (part === 'D') { - result.push({ pattern: /[1-9]/ }); - if (/[1-3]/.test(value.charAt(index))) { - if (value.charAt(index) === '3') { - if (/[0-1]/.test(value.charAt(index + 1))) { - result.push({ pattern: /[0-1]/ }); - index += 1; - } else if (value.charAt(index + 1) === '') { - result.push({ pattern: /[0-1]/, optional: true }); - } - } else { - if (/\d/.test(value.charAt(index + 1))) { - result.push({ pattern: /[0-9]/ }); - index += 1; - } else if (value.charAt(index + 1) === '') { - result.push({ pattern: /[0-9]/, optional: true }); - } - } - } - index += 1; - } else if (part === 'DD') { - result.push({ pattern: /[0-3]/ }); - if (value.charAt(index) === '3') { - result.push({ pattern: /[0-1]/ }); - } else if (value.charAt(index) === '0') { - result.push({ pattern: /[1-9]/ }); - } else { - result.push({ pattern: /[0-9]/ }); - } - index += 2; - } else if (part == 'H') { - result.push({ pattern: /[0-9]/ }); - if (value.charAt(index) === '2') { - if (/[0-3]/.test(value.charAt(index + 1))) { - result.push({ pattern: /[0-3]/ }); - index += 1; - } else if (value.charAt(index + 1) === '') { - result.push({ pattern: /[0-3]/, optional: true }); - } - } else if (value.charAt(index) === '1') { - if (/\d/.test(value.charAt(index + 1))) { - result.push({ pattern: /[0-9]/ }); - index += 1; - } else if (value.charAt(index + 1) === '') { - result.push({ pattern: /[0-9]/, optional: true }); - } - } - index += 1; - } else if (part == 'HH') { - result.push({ pattern: /[0-2]/ }); - if (/[0-1]/.test(value.charAt(index))) { - result.push({ pattern: /[0-9]/ }); - } else if (value.charAt(index) === '2') { - result.push({ pattern: /[0-3]/ }); - } - index += 2; - } else if (part == 'h') { - result.push({ pattern: /[1-9]/ }); - if (value.charAt(index) === '1') { - if (/[0-2]/.test(value.charAt(index + 1))) { - result.push({ pattern: /[0-2]/ }); - index += 1; - } else if (value.charAt(index + 1) === '') { - result.push({ pattern: /[0-2]/, optional: true }); - } - } - index += 1; - } else if (part == 'm' || part == 's') { - result.push({ pattern: /[0-9]/ }); - if (/[1-5]/.test(value.charAt(index))) { - if (/\d/.test(value.charAt(index + 1))) { - result.push({ pattern: /[0-9]/ }); - index += 1; - } else if (value.charAt(index + 1) === '') { - result.push({ pattern: /[0-9]/, optional: true }); - } - } - index += 1; - } else if (part == 'mm' || part == 'ss') { - result.push({ pattern: /[0-5]/ }); - result.push({ pattern: /[0-9]/ }); - index += 2; - } else if (part == 'a') { - result.push({ pattern: /[ap]/ }); - result.push({ pattern: /m/ }); - index += 2; - } else if (part == 'A') { - result.push({ pattern: /[AP]/ }); - result.push({ pattern: /M/ }); - index += 2; - } else if (part == 'Z' || part == 'ZZ') { - //GMT-12 to GMT+14 - result.push({ pattern: /[+-]/ }); - result.push({ pattern: /[0-1]/ }); - - if (value.charAt(index + 1) === '0') { - result.push({ pattern: /[0-9]/ }); - } else if (value.charAt(index + 1) === '1') { - result.push( - value.charAt(index) === '+' - ? { pattern: /[0-4]/ } - : { pattern: /[0-2]/ }, - ); - } - if (part === 'Z') { - result.push({ pattern: /:/ }); - index += 1; - } - result.push({ pattern: /[0-5]/ }); - result.push({ pattern: /[0-9]/ }); - index += 5; - } else if (part == 'S') { - result.push({ pattern: /[0-9]/ }); - index += 1; - } else if (part == 'SSS') { - result.push({ pattern: /[0-9]/ }); - result.push({ pattern: /[0-9]/ }); - result.push({ pattern: /[0-9]/ }); - index += 3; - } else if (part == 'X') { - // number of digits 13 - const times = 13; - for (let i = 0; i < times; i++) { - result.push({ pattern: /[0-9]/ }); - } - index += times; - } else if (part == 'x') { - // number of digits 10 for seconds - const times = 10; - for (let i = 0; i < times; i++) { - result.push({ pattern: /[0-9]/ }); - } - - if (value.charAt(index + times) === '.') { - result.push({ pattern: /[.]/ }); - index += 1; - - // check for optional 3 digits after . - for (let i = 0; i < 3; i++) { - if (/\d/.test(value.charAt(index + times + 1 + i))) { - result.push({ pattern: /[0-9]/ }); - index += 1; - } else if (value.charAt(index + times + 1 + i) === '') { - result.push({ pattern: /[0-9]/, optional: true }); - break; - } - } - } else if (value.charAt(index + times) === '') { - result.push({ pattern: /[.]/, optional: true }); - } - - index += times; - } else { - result.push(part); - index += part.length; - } - } - - const mask = result - .map((part) => - typeof part === 'string' ? part : tokens.getTokenKey(part), - ) - .join(''); - - return mask; - }; - - const cache: { value: string | undefined; mask: string | undefined } = { - value: undefined, - mask: undefined, - }; - - // memorize the last value to token since maska can call this function multiple times with the same value - const memorizedTokenFunction = (value: string): string => { - if (cache.value === value && cache.mask !== undefined) { - return cache.mask; - } - const mask = tokenFunction(value); - cache.value = value; - cache.mask = mask; - - return mask; - }; - - return { mask: memorizedTokenFunction, tokens: tokens.getTokens() }; -}; diff --git a/packages/vue-vuetify/src/util/index.ts b/packages/vue-vuetify/src/util/index.ts deleted file mode 100644 index e3c6d25f7b..0000000000 --- a/packages/vue-vuetify/src/util/index.ts +++ /dev/null @@ -1,5 +0,0 @@ -export * from './composition'; -export * from './datejs'; -export * from './inject'; -export * from './options'; -export * from './validator'; diff --git a/packages/vue-vuetify/src/util/inject.ts b/packages/vue-vuetify/src/util/inject.ts deleted file mode 100644 index ec04df9b0a..0000000000 --- a/packages/vue-vuetify/src/util/inject.ts +++ /dev/null @@ -1,5 +0,0 @@ -import type { InjectionKey } from 'vue'; - -export const IsDynamicPropertyContext: InjectionKey = Symbol.for( - 'jsonforms-vue-vuetify:IsDynamicPropertyContext', -); diff --git a/packages/vue-vuetify/src/util/options.ts b/packages/vue-vuetify/src/util/options.ts deleted file mode 100644 index 0c490ea992..0000000000 --- a/packages/vue-vuetify/src/util/options.ts +++ /dev/null @@ -1,6 +0,0 @@ -export interface Options { - showUnfocusedDescription?: boolean; - hideRequiredAsterisk?: boolean; - focus?: boolean; - step?: number; -} diff --git a/packages/vue-vuetify/src/util/validator.ts b/packages/vue-vuetify/src/util/validator.ts deleted file mode 100644 index bc4a2f76bb..0000000000 --- a/packages/vue-vuetify/src/util/validator.ts +++ /dev/null @@ -1,9 +0,0 @@ -import { createAjv as createAjvCore } from '@jsonforms/core'; -import type Ajv from 'ajv'; -import { type Options } from 'ajv'; - -export const createAjv = (options?: Options): Ajv => { - const ajv = createAjvCore(options); - ajv.addFormat('password', () => true); - return ajv; -}; diff --git a/packages/vue-vuetify/tests/index.ts b/packages/vue-vuetify/tests/index.ts deleted file mode 100644 index 3201cd7460..0000000000 --- a/packages/vue-vuetify/tests/index.ts +++ /dev/null @@ -1,3 +0,0 @@ -export const wait = (timeout?: number) => { - return new Promise((resolve) => setTimeout(resolve, timeout)); -}; diff --git a/packages/vue-vuetify/tests/unit/additional/LabelRenderer.spec.ts b/packages/vue-vuetify/tests/unit/additional/LabelRenderer.spec.ts deleted file mode 100644 index c7220b47cd..0000000000 --- a/packages/vue-vuetify/tests/unit/additional/LabelRenderer.spec.ts +++ /dev/null @@ -1,42 +0,0 @@ -import { describe, it, expect, beforeEach } from 'vitest'; -import { clearAllIds } from '@jsonforms/core'; -import LabelRenderer from '../../../src/additional/LabelRenderer.vue'; -import { entry as labelRendererEntry } from '../../../src/additional/LabelRenderer.entry'; -import { mountJsonForms } from '../util'; - -describe('LabelRenderer.vue', () => { - const renderers = [labelRendererEntry]; - - const data = ''; - const schema = { - type: 'string', - }; - const uischema = { - type: 'Label', - text: 'My Label', - }; - - let wrapper: ReturnType; - - beforeEach(() => { - // clear all ids to guarantee that the snapshots will always be generated with the same ids - clearAllIds(); - wrapper = mountJsonForms(data, schema, renderers, uischema); - }); - - it('check if child LabelRenderer exists', () => { - expect(wrapper.getComponent(LabelRenderer)); - }); - - it('renders a label', () => { - expect(wrapper.find('label').exists()).toBe(true); - }); - - it('renders label text', () => { - expect(wrapper.find('label').text()).toEqual('My Label'); - }); - - it('should render component and match snapshot', () => { - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/packages/vue-vuetify/tests/unit/additional/ListWithDetailRenderer.spec.ts b/packages/vue-vuetify/tests/unit/additional/ListWithDetailRenderer.spec.ts deleted file mode 100644 index 190b5ff49b..0000000000 --- a/packages/vue-vuetify/tests/unit/additional/ListWithDetailRenderer.spec.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { describe, it, expect, beforeEach } from 'vitest'; -import { clearAllIds, type Translator } from '@jsonforms/core'; -import ListWithDetailRenderer from '../../../src/additional/ListWithDetailRenderer.vue'; -import { entry as listWithDetailRendererEntry } from '../../../src/additional/ListWithDetailRenderer.entry'; -import { mountJsonForms } from '../util'; - -describe('ListWithDetailRenderer.vue', () => { - const renderers = [listWithDetailRendererEntry]; - - const data: unknown[] = []; - const schema = { - type: 'array', - items: { - type: 'object', - properties: { - name: { type: 'string' }, - done: { type: 'boolean' }, - person: { type: 'object', properties: { name: { type: 'string' } } }, - }, - }, - }; - const uischema = { - type: 'ListWithDetail', - scope: '#', - }; - - let wrapper: ReturnType; - - beforeEach(() => { - // clear all ids to guarantee that the snapshots will always be generated with the same ids - clearAllIds(); - wrapper = mountJsonForms(data, schema, renderers, uischema, undefined, { - translate: ((id, defaultMessage) => { - if (id.endsWith('addAriaLabel')) { - return 'MyAdd'; - } - return defaultMessage; - }) as Translator, - }); - }); - - it('check if child ListWithDetail exists', () => { - expect(wrapper.getComponent(ListWithDetailRenderer)); - }); - - it('renders an add button', () => { - expect(wrapper.find('.list-with-detail-add').exists()).toBeTruthy(); - }); - - it('respects translations', () => { - expect(wrapper.find('[aria-label="MyAdd"]').exists()).toBeTruthy(); - }); - - it('should render component and match snapshot', () => { - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/packages/vue-vuetify/tests/unit/additional/__snapshots__/LabelRenderer.spec.ts.snap b/packages/vue-vuetify/tests/unit/additional/__snapshots__/LabelRenderer.spec.ts.snap deleted file mode 100644 index e61af42f39..0000000000 --- a/packages/vue-vuetify/tests/unit/additional/__snapshots__/LabelRenderer.spec.ts.snap +++ /dev/null @@ -1,9 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`LabelRenderer.vue > should render component and match snapshot 1`] = ` -"
-
-
" -`; diff --git a/packages/vue-vuetify/tests/unit/additional/__snapshots__/ListWithDetailRenderer.spec.ts.snap b/packages/vue-vuetify/tests/unit/additional/__snapshots__/ListWithDetailRenderer.spec.ts.snap deleted file mode 100644 index 1cefd12606..0000000000 --- a/packages/vue-vuetify/tests/unit/additional/__snapshots__/ListWithDetailRenderer.spec.ts.snap +++ /dev/null @@ -1,41 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`ListWithDetailRenderer.vue > should render component and match snapshot 1`] = ` -"
-
-
-
-
-
- -
- - -
-
- -
-
-
- - - - -
- - - -
-
-
-
-
No data
-
-
-
-
" -`; diff --git a/packages/vue-vuetify/tests/unit/complex/ArrayControlRenderer.spec.ts b/packages/vue-vuetify/tests/unit/complex/ArrayControlRenderer.spec.ts deleted file mode 100644 index 0422ca64fd..0000000000 --- a/packages/vue-vuetify/tests/unit/complex/ArrayControlRenderer.spec.ts +++ /dev/null @@ -1,56 +0,0 @@ -import { describe, it, expect, beforeEach } from 'vitest'; -import { clearAllIds, type Translator } from '@jsonforms/core'; -import ArrayControlRenderer from '../../../src/complex/ArrayControlRenderer.vue'; -import { entry as arrayControlRendererEntry } from '../../../src/complex/ArrayControlRenderer.entry'; -import { mountJsonForms } from '../util'; - -describe('ArrayControlRenderer.vue', () => { - const renderers = [arrayControlRendererEntry]; - - const data: unknown[] = []; - const schema = { - type: 'array', - items: { - type: 'object', - properties: { - name: { type: 'string' }, - done: { type: 'boolean' }, - }, - }, - }; - const uischema = { - type: 'Control', - scope: '#', - }; - - let wrapper: ReturnType; - - beforeEach(() => { - // clear all ids to guarantee that the snapshots will always be generated with the same ids - clearAllIds(); - wrapper = mountJsonForms(data, schema, renderers, uischema, undefined, { - translate: ((id, defaultMessage) => { - if (id.endsWith('addAriaLabel')) { - return 'MyAdd'; - } - return defaultMessage; - }) as Translator, - }); - }); - - it('check if child ArrayControl exists', () => { - expect(wrapper.getComponent(ArrayControlRenderer)); - }); - - it('renders an add button', () => { - expect(wrapper.find('.array-list-add').exists()).toBeTruthy(); - }); - - it('respects translations', () => { - expect(wrapper.find('[aria-label="MyAdd"]').exists()).toBeTruthy(); - }); - - it('should render component and match snapshot', () => { - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/packages/vue-vuetify/tests/unit/complex/OneOfRenderer.spec.ts b/packages/vue-vuetify/tests/unit/complex/OneOfRenderer.spec.ts deleted file mode 100644 index 30027fdb25..0000000000 --- a/packages/vue-vuetify/tests/unit/complex/OneOfRenderer.spec.ts +++ /dev/null @@ -1,80 +0,0 @@ -import { describe, it, expect, beforeEach } from 'vitest'; -import { clearAllIds, type Translator } from '@jsonforms/core'; -import OneOfControlRenderer from '../../../src/complex/OneOfRenderer.vue'; -import { entry as oneOfControlRendererEntry } from '../../../src/complex/OneOfRenderer.entry'; -import { mountJsonForms } from '../util'; - -describe('OneOfRenderer.vue', () => { - const renderers = [oneOfControlRendererEntry]; - - const data: unknown[] = [[{ name: 'foo', done: false }]]; - const schema = { - oneOf: [ - { - type: 'array', - items: { - type: 'object', - properties: { - name: { type: 'string' }, - done: { type: 'boolean' }, - }, - }, - }, - { - type: 'object', - properties: { - name: { type: 'string' }, - done: { type: 'boolean' }, - }, - }, - ], - }; - const uischema = { - type: 'Control', - scope: '#', - }; - - let wrapper: ReturnType; - - beforeEach(() => { - // clear all ids to guarantee that the snapshots will always be generated with the same ids - clearAllIds(); - wrapper = mountJsonForms(data, schema, renderers, uischema, undefined, { - translate: ((id, defaultMessage) => { - if (id.endsWith('clearDialogAccept')) { - return 'Do the clear!'; - } - return defaultMessage; - }) as Translator, - }); - }); - - it('check if child OneOfControl exists', () => { - expect(wrapper.getComponent(OneOfControlRenderer)); - }); - - it('respects translations', async () => { - // trigger the selection change - wrapper.getComponent(OneOfControlRenderer).vm.handleSelectChange(0); - // wait until the dialog is rendered - await wrapper.vm.$nextTick(); - // dialog is rendered in document outside of the wrapper - expect(document.querySelector('[role="dialog"]')).not.toBeNull(); - - // search for text in children of the add buton - let found = false; - document - .querySelector('[data-testid="clear-dialog-accept"]') - ?.querySelectorAll('*') - .forEach((el) => { - if (el.textContent?.includes('Do the clear!')) { - found = true; - } - }); - expect(found).toBeTruthy(); - }); - - it('should render component and match snapshot', () => { - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/packages/vue-vuetify/tests/unit/complex/__snapshots__/ArrayControlRenderer.spec.ts.snap b/packages/vue-vuetify/tests/unit/complex/__snapshots__/ArrayControlRenderer.spec.ts.snap deleted file mode 100644 index 60f86cf524..0000000000 --- a/packages/vue-vuetify/tests/unit/complex/__snapshots__/ArrayControlRenderer.spec.ts.snap +++ /dev/null @@ -1,78 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`ArrayControlRenderer.vue > should render component and match snapshot 1`] = ` -"
-
-
- -
- -
- - -
-
- -
- - -
-
- -
-
-
- - - - -
- - - -
-
-
-
-
-
- -
- - - - - - - - - -
NameDone
-
- -
-
-
-
No data
-
- - -
-
-
" -`; diff --git a/packages/vue-vuetify/tests/unit/complex/__snapshots__/OneOfRenderer.spec.ts.snap b/packages/vue-vuetify/tests/unit/complex/__snapshots__/OneOfRenderer.spec.ts.snap deleted file mode 100644 index 88e49d65d6..0000000000 --- a/packages/vue-vuetify/tests/unit/complex/__snapshots__/OneOfRenderer.spec.ts.snap +++ /dev/null @@ -1,67 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`OneOfRenderer.vue > should render component and match snapshot 1`] = ` -"
-
-
- -
- -
- -
- -
- -
must be object
-
- -
-
-
No applicable renderer found.
- - -
-
-
" -`; diff --git a/packages/vue-vuetify/tests/unit/controls/BooleanControlRenderer.spec.ts b/packages/vue-vuetify/tests/unit/controls/BooleanControlRenderer.spec.ts deleted file mode 100644 index 1c1c592a0a..0000000000 --- a/packages/vue-vuetify/tests/unit/controls/BooleanControlRenderer.spec.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { describe, it, expect, beforeEach } from 'vitest'; -import { clearAllIds } from '@jsonforms/core'; -import BooleanControlRenderer from '../../../src/controls/BooleanControlRenderer.vue'; -import { entry as booleanControlRendererEntry } from '../../../src/controls/BooleanControlRenderer.entry'; -import { mountJsonForms } from '../util'; - -describe('BooleanControlRenderer.vue', () => { - const renderers = [booleanControlRendererEntry]; - - const data = true; - const schema = { - type: 'boolean', - title: 'My Boolean', - }; - const uischema = { - type: 'Control', - scope: '#', - options: { - placeholder: 'boolean placeholder', - }, - }; - let wrapper: ReturnType; - - beforeEach(() => { - // clear all ids to guarantee that the snapshots will always be generated with the same ids - clearAllIds(); - wrapper = mountJsonForms(data, schema, renderers, uischema); - }); - - it('check if child BooleanControlRenderer exists', () => { - expect(wrapper.getComponent(BooleanControlRenderer)); - }); - - it('renders a checkbox', () => { - expect(wrapper.find('input[type="checkbox"]').exists()).toBe(true); - }); - - it('renders title as label', () => { - expect(wrapper.find('label').text()).toEqual('My Boolean'); - }); - - it('emits a data change', async () => { - const input = wrapper.find('input[type="checkbox"]'); - await input.trigger('click'); - expect(wrapper.vm.$data.event.data).toEqual(false); - }); - - it('should have a placeholder', async () => { - const input = wrapper.find('input[type="checkbox"]'); - const placeholder = input.attributes('placeholder'); - expect(placeholder).toEqual('boolean placeholder'); - }); - - it('should render component and match snapshot', () => { - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/packages/vue-vuetify/tests/unit/controls/DateControlRenderer.spec.ts b/packages/vue-vuetify/tests/unit/controls/DateControlRenderer.spec.ts deleted file mode 100644 index 4365a8486d..0000000000 --- a/packages/vue-vuetify/tests/unit/controls/DateControlRenderer.spec.ts +++ /dev/null @@ -1,67 +0,0 @@ -import { describe, it, expect, beforeEach } from 'vitest'; -import { clearAllIds } from '@jsonforms/core'; -import DateControlRenderer from '../../../src/controls/DateControlRenderer.vue'; -import { entry as dateControlRendererEntry } from '../../../src/controls/DateControlRenderer.entry'; -import { mountJsonForms } from '../util'; - -describe('DateControlRenderer.vue', () => { - const renderers = [dateControlRendererEntry]; - - const data = '2021-03-09'; - const schema = { - type: 'string', - title: 'My Date', - format: 'date', - }; - const uischema = { - type: 'Control', - scope: '#', - options: { - placeholder: 'date placeholder', - dateFormat: 'MM/DD/YYYY', - dateSaveFormat: 'YYYY-MM-DD', - }, - }; - - let wrapper: ReturnType; - - beforeEach(() => { - // clear all ids to guarantee that the snapshots will always be generated with the same ids - clearAllIds(); - wrapper = mountJsonForms(data, schema, renderers, uischema); - }); - - it('check if child DateControlRenderer exists', () => { - expect(wrapper.getComponent(DateControlRenderer)); - }); - - it('renders a date input', () => { - expect(wrapper.find('input[type="text"]').exists()).toBe(true); - }); - - it('renders title as label', () => { - expect(wrapper.find('label').text()).toEqual('My Date'); - }); - - it('emits a data change', async () => { - const input = wrapper.find('input[type="text"]'); - await input.setValue('03/10/2021'); - expect(wrapper.vm.$data.event.data).toEqual('2021-03-10'); - }); - - it('should have a placeholder', async () => { - const input = wrapper.find('input[type="text"]'); - const placeholder = input.attributes('placeholder'); - expect(placeholder).toEqual('date placeholder'); - }); - - it('should render component and match snapshot', () => { - expect(wrapper.html()).toMatchSnapshot(); - }); - - it('should render component and match snapshot when clicked', async () => { - const input = wrapper.find('input[type="text"]'); - await input.trigger('click'); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/packages/vue-vuetify/tests/unit/controls/DateTimeControlRenderer.spec.ts b/packages/vue-vuetify/tests/unit/controls/DateTimeControlRenderer.spec.ts deleted file mode 100644 index 08f994643d..0000000000 --- a/packages/vue-vuetify/tests/unit/controls/DateTimeControlRenderer.spec.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { describe, it, expect, beforeEach } from 'vitest'; -import { clearAllIds } from '@jsonforms/core'; -import DateTimeControlRenderer from '../../../src/controls/DateTimeControlRenderer.vue'; -import { entry as dateTimeControlRendererEntry } from '../../../src/controls/DateTimeControlRenderer.entry'; -import { mountJsonForms } from '../util'; - -describe('DateTimeControlRenderer.vue', () => { - const renderers = [dateTimeControlRendererEntry]; - - const data = '2021-03-09T21:54:00.000Z'; - const schema = { - type: 'string', - title: 'My Date Time', - format: 'date-time', - }; - const uischema = { - type: 'Control', - scope: '#', - options: { - placeholder: 'date-time placeholder', - dateTimeFormat: 'YYYY-MM-DDTHH:mm', - dateTimeSaveFormat: 'YYYY-MM-DDTHH:mm:ss', - }, - }; - let wrapper: ReturnType; - - beforeEach(() => { - // clear all ids to guarantee that the snapshots will always be generated with the same ids - clearAllIds(); - wrapper = mountJsonForms(data, schema, renderers, uischema); - }); - - it('check if child DateTimeControlRenderer exists', () => { - expect(wrapper.getComponent(DateTimeControlRenderer)); - }); - - it('renders a date time input', () => { - expect(wrapper.find('input[type="text"]').exists()).toBe(true); - }); - - it('renders title as label', () => { - expect(wrapper.find('label').text()).toEqual('My Date Time'); - }); - - it('emits a data change', async () => { - const input = wrapper.find('input[type="text"]'); - await input.setValue('2021-03-10T21:10'); - expect(wrapper.vm.$data.event.data).toEqual('2021-03-10T21:10:00'); - }); - - it('should have a placeholder', async () => { - const input = wrapper.find('input[type="text"]'); - const placeholder = input.attributes('placeholder'); - expect(placeholder).toEqual('date-time placeholder'); - }); - - it('should render component and match snapshot', () => { - expect(wrapper.html()).toMatchSnapshot(); - }); - - it('should render component and match snapshot when clicked', async () => { - const input = wrapper.find('input[type="text"]'); - await input.trigger('click'); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/packages/vue-vuetify/tests/unit/controls/EnumControlRenderer.spec.ts b/packages/vue-vuetify/tests/unit/controls/EnumControlRenderer.spec.ts deleted file mode 100644 index 9f9c19c332..0000000000 --- a/packages/vue-vuetify/tests/unit/controls/EnumControlRenderer.spec.ts +++ /dev/null @@ -1,64 +0,0 @@ -import { describe, it, expect, beforeEach } from 'vitest'; -import { clearAllIds } from '@jsonforms/core'; -import EnumControlRenderer from '../../../src/controls/EnumControlRenderer.vue'; -import { entry as enumControlRendererEntry } from '../../../src/controls/EnumControlRenderer.entry'; -import { wait } from '../../../tests'; -import { mountJsonForms } from '../util'; - -describe('EnumControlRenderer.vue', () => { - const renderers = [enumControlRendererEntry]; - - const data = 'a'; - - const schema = { - type: 'string', - title: 'My Enum', - enum: ['a', 'b'], - }; - const uischema = { - type: 'Control', - scope: '#', - }; - - let wrapper: ReturnType; - - beforeEach(() => { - // clear all ids to guarantee that the snapshots will always be generated with the same ids - clearAllIds(); - wrapper = mountJsonForms(data, schema, renderers, uischema); - }); - - it('check if child EnumControlRenderer exists', () => { - expect(wrapper.getComponent(EnumControlRenderer)); - }); - - it('renders a input', () => { - expect(wrapper.find('input[type="text"]').exists()).toBe(true); - }); - - it('renders title as label', () => { - expect(wrapper.find('label').text()).toEqual('My Enum'); - }); - - it.todo('emits a data change', async () => { - const select = wrapper.find('input[type="text"]'); - // select the input so menu is shown - await select.trigger('click'); - - // select 2nd element which is b and click it to select it - wrapper.find('div[role="listbox"] div:nth-child(2)').trigger('click'); - // 300 ms debounceWait - await wait(300); - expect(wrapper.vm.$data.event.data).toEqual('b'); - }); - - it('should render component and match snapshot', () => { - expect(wrapper.html()).toMatchSnapshot(); - }); - - it('should render component and match snapshot when clicked', async () => { - const input = wrapper.find('input[type="text"]'); - await input.trigger('click'); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/packages/vue-vuetify/tests/unit/controls/IntegerControlRenderer.spec.ts b/packages/vue-vuetify/tests/unit/controls/IntegerControlRenderer.spec.ts deleted file mode 100644 index ef64f124a2..0000000000 --- a/packages/vue-vuetify/tests/unit/controls/IntegerControlRenderer.spec.ts +++ /dev/null @@ -1,60 +0,0 @@ -import { describe, it, expect, beforeEach } from 'vitest'; -import { clearAllIds } from '@jsonforms/core'; -import IntegerControlRenderer from '../../../src/controls/IntegerControlRenderer.vue'; -import { entry as integerControlRendererEntry } from '../../../src/controls/IntegerControlRenderer.entry'; -import { wait } from '../../../tests'; -import { mountJsonForms } from '../util'; - -describe('IntegerControlRenderer.vue', () => { - const renderers = [integerControlRendererEntry]; - - const data = 1; - const schema = { - type: 'integer', - title: 'My Integer', - }; - const uischema = { - type: 'Control', - scope: '#', - options: { - placeholder: 'integer placeholder', - }, - }; - let wrapper: ReturnType; - - beforeEach(() => { - // clear all ids to guarantee that the snapshots will always be generated with the same ids - clearAllIds(); - wrapper = mountJsonForms(data, schema, renderers, uischema); - }); - - it('check if child IntegerControlRenderer exists', () => { - expect(wrapper.getComponent(IntegerControlRenderer)); - }); - - it('renders a number input', () => { - expect(wrapper.find('input[type="text"]').exists()).toBe(true); - }); - - it('renders title as label', () => { - expect(wrapper.find('label').text()).toEqual('My Integer'); - }); - - it('emits a data change', async () => { - const input = wrapper.find('input'); - await input.setValue(2); - // 300 ms debounceWait - await wait(300); - expect(wrapper.vm.$data.event.data).toEqual(2); - }); - - it('should have a placeholder', async () => { - const input = wrapper.find('input[type="text"]'); - const placeholder = input.attributes('placeholder'); - expect(placeholder).toEqual('integer placeholder'); - }); - - it('should render component and match snapshot', () => { - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/packages/vue-vuetify/tests/unit/controls/MultiStringControlRenderer.spec.ts b/packages/vue-vuetify/tests/unit/controls/MultiStringControlRenderer.spec.ts deleted file mode 100644 index 77a6b14e9e..0000000000 --- a/packages/vue-vuetify/tests/unit/controls/MultiStringControlRenderer.spec.ts +++ /dev/null @@ -1,61 +0,0 @@ -import { describe, it, expect, beforeEach } from 'vitest'; -import { clearAllIds } from '@jsonforms/core'; -import MultiStringControlRenderer from '../../../src/controls/MultiStringControlRenderer.vue'; -import { entry as multiStringControlRendererEntry } from '../../../src/controls/MultiStringControlRenderer.entry'; -import { wait } from '../../../tests'; -import { mountJsonForms } from '../util'; - -describe('MultiStringControlRenderer.vue', () => { - const renderers = [multiStringControlRendererEntry]; - - const data = 'a'; - const schema = { - type: 'string', - title: 'My Multi String', - }; - const uischema = { - type: 'Control', - scope: '#', - options: { - multi: true, - placeholder: 'multi placeholder', - }, - }; - let wrapper: ReturnType; - - beforeEach(() => { - // clear all ids to guarantee that the snapshots will always be generated with the same ids - clearAllIds(); - wrapper = mountJsonForms(data, schema, renderers, uischema); - }); - - it('check if child MultiStringControlRenderer exists', () => { - expect(wrapper.getComponent(MultiStringControlRenderer)); - }); - - it('renders a text area', () => { - expect(wrapper.find('textarea').exists()).toBe(true); - }); - - it('renders title as label', () => { - expect(wrapper.find('label').text()).toEqual('My Multi String'); - }); - - it('emits a data change', async () => { - const select = wrapper.find('textarea'); - await select.setValue('b'); - // 300 ms debounceWait - await wait(300); - expect(wrapper.vm.$data.event.data).toEqual('b'); - }); - - it('should have a placeholder', async () => { - const input = wrapper.find('textarea'); - const placeholder = input.attributes('placeholder'); - expect(placeholder).toEqual('multi placeholder'); - }); - - it('should render component and match snapshot', () => { - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/packages/vue-vuetify/tests/unit/controls/NumberControlRenderer.spec.ts b/packages/vue-vuetify/tests/unit/controls/NumberControlRenderer.spec.ts deleted file mode 100644 index 0f76ffd832..0000000000 --- a/packages/vue-vuetify/tests/unit/controls/NumberControlRenderer.spec.ts +++ /dev/null @@ -1,59 +0,0 @@ -import { describe, it, expect, beforeEach } from 'vitest'; -import { clearAllIds } from '@jsonforms/core'; -import NumberControlRenderer from '../../../src/controls/NumberControlRenderer.vue'; -import { entry as numberControlRendererEntry } from '../../../src/controls/NumberControlRenderer.entry'; -import { wait } from '../../../tests'; -import { mountJsonForms } from '../util'; - -describe('NumberControlRenderer.vue', () => { - const renderers = [numberControlRendererEntry]; - const data = 1; - const schema = { - type: 'number', - title: 'My Number', - }; - const uischema = { - type: 'Control', - scope: '#', - options: { - placeholder: 'number placeholder', - }, - }; - let wrapper: ReturnType; - - beforeEach(() => { - // clear all ids to guarantee that the snapshots will always be generated with the same ids - clearAllIds(); - wrapper = mountJsonForms(data, schema, renderers, uischema); - }); - - it('check if child NumberControlRenderer exists', () => { - expect(wrapper.getComponent(NumberControlRenderer)); - }); - - it('renders a number input', () => { - expect(wrapper.find('input[type="text"]').exists()).toBe(true); - }); - - it('renders title as label', () => { - expect(wrapper.find('label').text()).toEqual('My Number'); - }); - - it('emits a data change', async () => { - const input = wrapper.find('input'); - await input.setValue(2); - // 300 ms debounceWait - await wait(300); - expect(wrapper.vm.$data.event.data).toEqual(2); - }); - - it('should have a placeholder', async () => { - const input = wrapper.find('input[type="text"]'); - const placeholder = input.attributes('placeholder'); - expect(placeholder).toEqual('number placeholder'); - }); - - it('should render component and match snapshot', () => { - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/packages/vue-vuetify/tests/unit/controls/OneOfEnumControlRenderer.spec.ts b/packages/vue-vuetify/tests/unit/controls/OneOfEnumControlRenderer.spec.ts deleted file mode 100644 index f8f293037f..0000000000 --- a/packages/vue-vuetify/tests/unit/controls/OneOfEnumControlRenderer.spec.ts +++ /dev/null @@ -1,66 +0,0 @@ -import { describe, it, expect, beforeEach } from 'vitest'; -import { clearAllIds } from '@jsonforms/core'; -import OneOfEnumControlRenderer from '../../../src/controls/OneOfEnumControlRenderer.vue'; -import { entry as oneOfEnumControlRendererEntry } from '../../../src/controls/OneOfEnumControlRenderer.entry'; -import { wait } from '../../../tests'; -import { mountJsonForms } from '../util'; - -describe('OneOfEnumControlRenderer.vue', () => { - const renderers = [oneOfEnumControlRendererEntry]; - const data = 'a'; - - const schema = { - type: 'string', - title: 'My OneOf Enum', - oneOf: [ - { const: 'a', title: 'Foo' }, - { const: 'b', title: 'Bar' }, - ], - }; - const uischema = { - type: 'Control', - scope: '#', - }; - - let wrapper: ReturnType; - - beforeEach(() => { - // clear all ids to guarantee that the snapshots will always be generated with the same ids - clearAllIds(); - wrapper = mountJsonForms(data, schema, renderers, uischema); - }); - - it('check if child OneOfEnumControlRenderer exists', () => { - expect(wrapper.getComponent(OneOfEnumControlRenderer)); - }); - - it('renders a input', () => { - expect(wrapper.find('input[type="text"]').exists()).toBe(true); - }); - - it('renders title as label', () => { - expect(wrapper.find('label').text()).toEqual('My OneOf Enum'); - }); - - it.todo('emits a data change', async () => { - const select = wrapper.find('input[type="text"]'); - // select the input so menu is shown - await select.trigger('click'); - - // select 2nd element which is b and click it to select it - wrapper.find('div[role="listbox"] div:nth-child(2)').trigger('click'); - // 300 ms debounceWait - await wait(300); - expect(wrapper.vm.$data.event.data).toEqual('b'); - }); - - it('should render component and match snapshot', () => { - expect(wrapper.html()).toMatchSnapshot(); - }); - - it('should render component and match snapshot when clicked', async () => { - const input = wrapper.find('input[type="text"]'); - await input.trigger('click'); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/packages/vue-vuetify/tests/unit/controls/StringControlRenderer.spec.ts b/packages/vue-vuetify/tests/unit/controls/StringControlRenderer.spec.ts deleted file mode 100644 index 345f9287d2..0000000000 --- a/packages/vue-vuetify/tests/unit/controls/StringControlRenderer.spec.ts +++ /dev/null @@ -1,137 +0,0 @@ -import { describe, it, expect, beforeEach } from 'vitest'; -import { clearAllIds } from '@jsonforms/core'; -import StringControlRenderer from '../../../src/controls/StringControlRenderer.vue'; -import { entry as stringControlRendererEntry } from '../../../src/controls/StringControlRenderer.entry'; -import { wait } from '../../../tests'; -import { mountJsonForms } from '../util'; - -describe('StringControlRenderer.vue', () => { - const renderers = [stringControlRendererEntry]; - - const data = 'a'; - const schema = { - type: 'string', - title: 'My String', - }; - const uischema = { - type: 'Control', - scope: '#', - options: { - placeholder: 'string placeholder', - }, - }; - - let wrapper: ReturnType; - - beforeEach(() => { - // clear all ids to guarantee that the snapshots will always be generated with the same ids - clearAllIds(); - wrapper = mountJsonForms(data, schema, renderers, uischema); - }); - - it('check if child StringControlRenderer exists', () => { - expect(wrapper.getComponent(StringControlRenderer)); - }); - - it('renders a string input', () => { - const input = wrapper.find('input[type="text"]'); - expect(input.exists()).toEqual(true); - }); - - it('renders title as label', () => { - expect(wrapper.find('label').text()).toEqual('My String'); - }); - - it('emits a data change', async () => { - const input = wrapper.find('input[type="text"]'); - await input.setValue('b'); - // 300 ms debounceWait - await wait(300); - expect(wrapper.vm.$data.event.data).toEqual('b'); - }); - - it('should have a placeholder', async () => { - const input = wrapper.find('input[type="text"]'); - const placeholder = input.attributes('placeholder'); - expect(placeholder).toEqual('string placeholder'); - }); - - it('should render component and match snapshot', () => { - expect(wrapper.html()).toMatchSnapshot(); - }); -}); - -describe('StringControlRenderer.vue with suggestion', () => { - const renderers = [stringControlRendererEntry]; - - const data = ''; - - const schema = { - type: 'string', - title: 'Select Continent', - }; - const uischema = { - type: 'Control', - scope: '#', - options: { - placeholder: 'Enter your continent', - suggestion: [ - 'Asia', - 'Africa', - 'Europe', - 'North America', - 'South America', - 'Australia/Oceania', - 'Antarctica', - ], - }, - }; - - let wrapper: ReturnType; - - beforeEach(() => { - // clear all ids to guarantee that the snapshots will always be generated with the same ids - clearAllIds(); - wrapper = mountJsonForms(data, schema, renderers, uischema); - }); - - it('check if child StringControlRenderer exists', () => { - expect(wrapper.getComponent(StringControlRenderer)); - }); - - it('renders a string input', () => { - const input = wrapper.find('input[type="text"]'); - expect(input.exists()).toEqual(true); - expect(input.attributes('type')).toEqual('text'); - }); - - it('renders title as label', () => { - expect(wrapper.find('label').text()).toEqual('Select Continent'); - }); - - it('emits a data change', async () => { - const input = wrapper.find('input[type="text"]'); - await input.setValue('Europe'); - // select the element - await input.trigger('keydown.enter'); - // 300 ms debounceWait - await wait(300); - expect(wrapper.vm.$data.event.data).toEqual('Europe'); - }); - - it.todo('should have a placeholder', async () => { - const input = wrapper.find('input[type="text"]'); - const placeholder = input.attributes('placeholder'); - expect(placeholder).toEqual('Enter your continent'); - }); - - it('should render component and match snapshot', () => { - expect(wrapper.html()).toMatchSnapshot(); - }); - - it('should render component and match snapshot when clicked', async () => { - const input = wrapper.find('input[type="text"]'); - await input.trigger('click'); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/packages/vue-vuetify/tests/unit/controls/TimeControlRenderer.spec.ts b/packages/vue-vuetify/tests/unit/controls/TimeControlRenderer.spec.ts deleted file mode 100644 index 556200c44b..0000000000 --- a/packages/vue-vuetify/tests/unit/controls/TimeControlRenderer.spec.ts +++ /dev/null @@ -1,65 +0,0 @@ -import { describe, it, expect, beforeEach } from 'vitest'; -import { clearAllIds } from '@jsonforms/core'; -import TimeControlRenderer from '../../../src/controls/TimeControlRenderer.vue'; -import { entry as timeControlRendererEntry } from '../../../src/controls/TimeControlRenderer.entry'; -import { mountJsonForms } from '../util'; - -describe('TimeControlRenderer.vue', () => { - const renderers = [timeControlRendererEntry]; - const data = '00:20:00'; - const schema = { - type: 'string', - title: 'My Time', - format: 'time', - }; - const uischema = { - type: 'Control', - scope: '#', - options: { - placeholder: 'time placeholder', - timeFormat: 'HH:mm:ss', - timeSaveFormat: 'HH:mm:ss', - }, - }; - let wrapper: ReturnType; - - beforeEach(() => { - // clear all ids to guarantee that the snapshots will always be generated with the same ids - clearAllIds(); - wrapper = mountJsonForms(data, schema, renderers, uischema); - }); - - it('check if child TimeControlRenderer exists', () => { - expect(wrapper.getComponent(TimeControlRenderer)); - }); - - it('renders a text input', () => { - expect(wrapper.find('input[type="text"]').exists()).toBe(true); - }); - - it('renders title as label', () => { - expect(wrapper.find('label').text()).toEqual('My Time'); - }); - - it('emits a data change', async () => { - const input = wrapper.find('input[type="text"]'); - await input.setValue('01:51:10'); - expect(wrapper.vm.$data.event.data).toEqual('01:51:10'); - }); - - it('should have a placeholder', async () => { - const input = wrapper.find('input[type="text"]'); - const placeholder = input.attributes('placeholder'); - expect(placeholder).toEqual('time placeholder'); - }); - - it('should render component and match snapshot', () => { - expect(wrapper.html()).toMatchSnapshot(); - }); - - it('should render component and match snapshot when clicked', async () => { - const input = wrapper.find('input[type="text"]'); - await input.trigger('click'); - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/packages/vue-vuetify/tests/unit/controls/__snapshots__/BooleanControlRenderer.spec.ts.snap b/packages/vue-vuetify/tests/unit/controls/__snapshots__/BooleanControlRenderer.spec.ts.snap deleted file mode 100644 index d4f5f9cb42..0000000000 --- a/packages/vue-vuetify/tests/unit/controls/__snapshots__/BooleanControlRenderer.spec.ts.snap +++ /dev/null @@ -1,30 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`BooleanControlRenderer.vue > should render component and match snapshot 1`] = ` -"
-
-
-
- -
-
-
- -
-
-
-
- -
- - - - -
-
-
-
-
" -`; diff --git a/packages/vue-vuetify/tests/unit/controls/__snapshots__/DateControlRenderer.spec.ts.snap b/packages/vue-vuetify/tests/unit/controls/__snapshots__/DateControlRenderer.spec.ts.snap deleted file mode 100644 index db169333f0..0000000000 --- a/packages/vue-vuetify/tests/unit/controls/__snapshots__/DateControlRenderer.spec.ts.snap +++ /dev/null @@ -1,123 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`DateControlRenderer.vue > should render component and match snapshot 1`] = ` -"
-
-
-
- -
-
-
-
- -
- -
- - -
- -
-
-
- - -
-
- - -
-
-
- -
- - - - -
-
-
-
-
" -`; - -exports[`DateControlRenderer.vue > should render component and match snapshot when clicked 1`] = ` -"
-
-
-
- -
-
-
-
- -
- -
- - -
- -
-
-
- - -
-
- - -
-
-
- -
- - - - -
-
-
-
-
" -`; diff --git a/packages/vue-vuetify/tests/unit/controls/__snapshots__/DateTimeControlRenderer.spec.ts.snap b/packages/vue-vuetify/tests/unit/controls/__snapshots__/DateTimeControlRenderer.spec.ts.snap deleted file mode 100644 index ae0d1cd59a..0000000000 --- a/packages/vue-vuetify/tests/unit/controls/__snapshots__/DateTimeControlRenderer.spec.ts.snap +++ /dev/null @@ -1,123 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`DateTimeControlRenderer.vue > should render component and match snapshot 1`] = ` -"
-
-
-
- -
-
-
-
- -
-
- - -
-
- - -
- -
-
-
- - -
-
- - -
-
-
- -
- - - - -
-
-
-
-
" -`; - -exports[`DateTimeControlRenderer.vue > should render component and match snapshot when clicked 1`] = ` -"
-
-
-
- -
-
-
-
- -
-
- - -
-
- - -
- -
-
-
- - -
-
- - -
-
-
- -
- - - - -
-
-
-
-
" -`; diff --git a/packages/vue-vuetify/tests/unit/controls/__snapshots__/EnumControlRenderer.spec.ts.snap b/packages/vue-vuetify/tests/unit/controls/__snapshots__/EnumControlRenderer.spec.ts.snap deleted file mode 100644 index bcd318f00a..0000000000 --- a/packages/vue-vuetify/tests/unit/controls/__snapshots__/EnumControlRenderer.spec.ts.snap +++ /dev/null @@ -1,127 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`EnumControlRenderer.vue > should render component and match snapshot 1`] = ` -"
-
-
-
- -
- -
- -
- - - - -
-
-
-
-
" -`; - -exports[`EnumControlRenderer.vue > should render component and match snapshot when clicked 1`] = ` -"
-
-
-
- -
- -
- -
- - - - -
-
-
-
-
" -`; diff --git a/packages/vue-vuetify/tests/unit/controls/__snapshots__/IntegerControlRenderer.spec.ts.snap b/packages/vue-vuetify/tests/unit/controls/__snapshots__/IntegerControlRenderer.spec.ts.snap deleted file mode 100644 index d5db864518..0000000000 --- a/packages/vue-vuetify/tests/unit/controls/__snapshots__/IntegerControlRenderer.spec.ts.snap +++ /dev/null @@ -1,71 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`IntegerControlRenderer.vue > should render component and match snapshot 1`] = ` -"
-
-
-
- -
-
-
-
- -
- -
- - -
- -
-
-
- - -
- -
- -
-
- - -
-
-
- -
- - - - -
-
-
-
-
" -`; diff --git a/packages/vue-vuetify/tests/unit/controls/__snapshots__/MultiStringControlRenderer.spec.ts.snap b/packages/vue-vuetify/tests/unit/controls/__snapshots__/MultiStringControlRenderer.spec.ts.snap deleted file mode 100644 index 6ee431a953..0000000000 --- a/packages/vue-vuetify/tests/unit/controls/__snapshots__/MultiStringControlRenderer.spec.ts.snap +++ /dev/null @@ -1,60 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`MultiStringControlRenderer.vue > should render component and match snapshot 1`] = ` -"
-
-
-
- -
-
-
-
- -
- -
- - - -
- -
-
-
- - -
-
- - -
-
-
- -
- - - - -
-
-
-
-
" -`; diff --git a/packages/vue-vuetify/tests/unit/controls/__snapshots__/NumberControlRenderer.spec.ts.snap b/packages/vue-vuetify/tests/unit/controls/__snapshots__/NumberControlRenderer.spec.ts.snap deleted file mode 100644 index e9a4e1482d..0000000000 --- a/packages/vue-vuetify/tests/unit/controls/__snapshots__/NumberControlRenderer.spec.ts.snap +++ /dev/null @@ -1,71 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`NumberControlRenderer.vue > should render component and match snapshot 1`] = ` -"
-
-
-
- -
-
-
-
- -
- -
- - -
- -
-
-
- - -
- -
- -
-
- - -
-
-
- -
- - - - -
-
-
-
-
" -`; diff --git a/packages/vue-vuetify/tests/unit/controls/__snapshots__/OneOfEnumControlRenderer.spec.ts.snap b/packages/vue-vuetify/tests/unit/controls/__snapshots__/OneOfEnumControlRenderer.spec.ts.snap deleted file mode 100644 index 7b6ac42e79..0000000000 --- a/packages/vue-vuetify/tests/unit/controls/__snapshots__/OneOfEnumControlRenderer.spec.ts.snap +++ /dev/null @@ -1,127 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`OneOfEnumControlRenderer.vue > should render component and match snapshot 1`] = ` -"
-
-
-
- -
- -
- -
- - - - -
-
-
-
-
" -`; - -exports[`OneOfEnumControlRenderer.vue > should render component and match snapshot when clicked 1`] = ` -"
-
-
-
- -
- -
- -
- - - - -
-
-
-
-
" -`; diff --git a/packages/vue-vuetify/tests/unit/controls/__snapshots__/StringControlRenderer.spec.ts.snap b/packages/vue-vuetify/tests/unit/controls/__snapshots__/StringControlRenderer.spec.ts.snap deleted file mode 100644 index 484294eea3..0000000000 --- a/packages/vue-vuetify/tests/unit/controls/__snapshots__/StringControlRenderer.spec.ts.snap +++ /dev/null @@ -1,185 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`StringControlRenderer.vue > should render component and match snapshot 1`] = ` -"
-
-
-
- -
-
-
-
- -
- -
- - -
- -
-
-
- - -
-
- - -
-
-
- -
- - - - -
-
-
-
-
" -`; - -exports[`StringControlRenderer.vue with suggestion > should render component and match snapshot 1`] = ` -"
-
-
-
- -
- -
- -
- - - - -
-
-
-
-
" -`; - -exports[`StringControlRenderer.vue with suggestion > should render component and match snapshot when clicked 1`] = ` -"
-
-
-
- -
- -
- -
- - - - -
-
-
-
-
" -`; diff --git a/packages/vue-vuetify/tests/unit/controls/__snapshots__/TimeControlRenderer.spec.ts.snap b/packages/vue-vuetify/tests/unit/controls/__snapshots__/TimeControlRenderer.spec.ts.snap deleted file mode 100644 index 6fe703d8f1..0000000000 --- a/packages/vue-vuetify/tests/unit/controls/__snapshots__/TimeControlRenderer.spec.ts.snap +++ /dev/null @@ -1,123 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`TimeControlRenderer.vue > should render component and match snapshot 1`] = ` -"
-
-
-
- -
-
-
-
- -
- -
- - -
- -
-
-
- - -
-
- - -
-
-
- -
- - - - -
-
-
-
-
" -`; - -exports[`TimeControlRenderer.vue > should render component and match snapshot when clicked 1`] = ` -"
-
-
-
- -
-
-
-
- -
- -
- - -
- -
-
-
- - -
-
- - -
-
-
- -
- - - - -
-
-
-
-
" -`; diff --git a/packages/vue-vuetify/tests/unit/layout/ArrayLayoutRenderer.spec.ts b/packages/vue-vuetify/tests/unit/layout/ArrayLayoutRenderer.spec.ts deleted file mode 100644 index ba8a591c5a..0000000000 --- a/packages/vue-vuetify/tests/unit/layout/ArrayLayoutRenderer.spec.ts +++ /dev/null @@ -1,57 +0,0 @@ -import { describe, it, expect, beforeEach } from 'vitest'; -import { clearAllIds, type Translator } from '@jsonforms/core'; -import ArrayLayoutRenderer from '../../../src/layouts/ArrayLayoutRenderer.vue'; -import { entry as arrayLayoutRendererEntry } from '../../../src/layouts/ArrayLayoutRenderer.entry'; -import { mountJsonForms } from '../util'; - -describe('ArrayLayoutRenderer.vue', () => { - const renderers = [arrayLayoutRendererEntry]; - - const data: unknown[] = []; - const schema = { - type: 'array', - items: { - type: 'object', - properties: { - name: { type: 'string' }, - done: { type: 'boolean' }, - person: { type: 'object', properties: { name: { type: 'string' } } }, - }, - }, - }; - const uischema = { - type: 'Control', - scope: '#', - }; - - let wrapper: ReturnType; - - beforeEach(() => { - // clear all ids to guarantee that the snapshots will always be generated with the same ids - clearAllIds(); - wrapper = mountJsonForms(data, schema, renderers, uischema, undefined, { - translate: ((id, defaultMessage) => { - if (id.endsWith('addAriaLabel')) { - return 'MyAdd'; - } - return defaultMessage; - }) as Translator, - }); - }); - - it('check if child ArrayLayout exists', () => { - expect(wrapper.getComponent(ArrayLayoutRenderer)); - }); - - it('renders an add button', () => { - expect(wrapper.find('.array-list-add').exists()).toBeTruthy(); - }); - - it('respects translations', () => { - expect(wrapper.find('[aria-label="MyAdd"]').exists()).toBeTruthy(); - }); - - it('should render component and match snapshot', () => { - expect(wrapper.html()).toMatchSnapshot(); - }); -}); diff --git a/packages/vue-vuetify/tests/unit/layout/__snapshots__/ArrayLayoutRenderer.spec.ts.snap b/packages/vue-vuetify/tests/unit/layout/__snapshots__/ArrayLayoutRenderer.spec.ts.snap deleted file mode 100644 index fed46e0a01..0000000000 --- a/packages/vue-vuetify/tests/unit/layout/__snapshots__/ArrayLayoutRenderer.spec.ts.snap +++ /dev/null @@ -1,66 +0,0 @@ -// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html - -exports[`ArrayLayoutRenderer.vue > should render component and match snapshot 1`] = ` -"
-
-
- -
- -
- - -
-
- -
- - -
-
- -
-
-
- - - - -
- - - -
-
-
-
-
-
-
-
-
No data
-
- - - - - -
-
-
" -`; diff --git a/packages/vue-vuetify/tests/unit/util/TestComponent.vue b/packages/vue-vuetify/tests/unit/util/TestComponent.vue deleted file mode 100644 index eda1f44f16..0000000000 --- a/packages/vue-vuetify/tests/unit/util/TestComponent.vue +++ /dev/null @@ -1,123 +0,0 @@ - - - diff --git a/packages/vue-vuetify/tests/unit/util/index.ts b/packages/vue-vuetify/tests/unit/util/index.ts deleted file mode 100644 index bbebd88eb4..0000000000 --- a/packages/vue-vuetify/tests/unit/util/index.ts +++ /dev/null @@ -1 +0,0 @@ -export * from './util'; diff --git a/packages/vue-vuetify/tests/unit/util/util.ts b/packages/vue-vuetify/tests/unit/util/util.ts deleted file mode 100644 index a5c6770354..0000000000 --- a/packages/vue-vuetify/tests/unit/util/util.ts +++ /dev/null @@ -1,43 +0,0 @@ -import type { - JsonFormsI18nState, - JsonFormsRendererRegistryEntry, - JsonSchema, - UISchemaElement, -} from '@jsonforms/core'; -import { mount } from '@vue/test-utils'; -import TestComponent from './TestComponent.vue'; -import { createVuetify } from 'vuetify'; -import * as components from 'vuetify/components'; -import * as directives from 'vuetify/directives'; -import { markRaw } from 'vue'; - -const vuetify = createVuetify({ - components, - directives, -}); - -global.ResizeObserver = require('resize-observer-polyfill'); - -export const mountJsonForms = ( - data: any, - schema: JsonSchema, - renderers: JsonFormsRendererRegistryEntry[], - uischema?: UISchemaElement, - config?: any, - i18n?: JsonFormsI18nState, -) => { - return mount(TestComponent, { - global: { - plugins: [vuetify], - }, - propsData: { - data: data, - schema, - uischema, - config, - renderers: markRaw(renderers), - i18n, - }, - attachTo: document.body, - }); -}; diff --git a/packages/vue-vuetify/tsconfig.example.json b/packages/vue-vuetify/tsconfig.example.json deleted file mode 100644 index bb5932cf76..0000000000 --- a/packages/vue-vuetify/tsconfig.example.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "@vue/tsconfig/tsconfig.dom.json", - "include": ["dev/env.d.ts", "dev/**/*", "src/**/*", "src/**/*.vue"], - "exclude": ["src/**/__tests__/*", "dev/**/__tests__/*"], - "compilerOptions": { - "composite": true, - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", - "baseUrl": ".", - "paths": { - "@/*": ["./src/*"] - } - } -} diff --git a/packages/vue-vuetify/tsconfig.json b/packages/vue-vuetify/tsconfig.json deleted file mode 100644 index b61a960cfe..0000000000 --- a/packages/vue-vuetify/tsconfig.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "files": [], - "references": [ - { - "path": "./tsconfig.node.json" - }, - { - "path": "./tsconfig.lib.json" - }, - { - "path": "./tsconfig.vitest.json" - }, - { - "path": "./tsconfig.example.json" - } - ] -} diff --git a/packages/vue-vuetify/tsconfig.lib.json b/packages/vue-vuetify/tsconfig.lib.json deleted file mode 100644 index 5f48b9e90c..0000000000 --- a/packages/vue-vuetify/tsconfig.lib.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "extends": "@vue/tsconfig/tsconfig.dom.json", - "include": ["src/**/*", "src/**/*.vue"], - "exclude": ["src/**/__tests__/*", "dev/**/*"], - "compilerOptions": { - "composite": true, - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.app.tsbuildinfo", - "baseUrl": ".", - "paths": { - "@/*": ["./src/*"] - } - } -} diff --git a/packages/vue-vuetify/tsconfig.node.json b/packages/vue-vuetify/tsconfig.node.json deleted file mode 100644 index 6fffb82ef1..0000000000 --- a/packages/vue-vuetify/tsconfig.node.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "extends": "@tsconfig/node20/tsconfig.json", - "include": [ - "vite.config.*", - "vitest.config.*", - "cypress.config.*", - "nightwatch.conf.*", - "playwright.config.*" - ], - "compilerOptions": { - "composite": true, - "noEmit": true, - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.node.tsbuildinfo", - "module": "ESNext", - "moduleResolution": "Bundler", - "types": [ - "node" - ] - } -} diff --git a/packages/vue-vuetify/tsconfig.typedoc.json b/packages/vue-vuetify/tsconfig.typedoc.json deleted file mode 100644 index 72956944fd..0000000000 --- a/packages/vue-vuetify/tsconfig.typedoc.json +++ /dev/null @@ -1,4 +0,0 @@ -{ - "extends": "./tsconfig.lib.json", - "include": ["lib/index.d.ts"] -} diff --git a/packages/vue-vuetify/tsconfig.vitest.json b/packages/vue-vuetify/tsconfig.vitest.json deleted file mode 100644 index ffa0247951..0000000000 --- a/packages/vue-vuetify/tsconfig.vitest.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "extends": "./tsconfig.lib.json", - "include": [ - "src/**/*", - "src/**/*.vue", - "tests/**/*", - ], - "compilerOptions": { - "composite": true, - "tsBuildInfoFile": "./node_modules/.tmp/tsconfig.vitest.tsbuildinfo", - "lib": [], - "types": [ - "node", - "jsdom", - "vitest/globals" - ] - } -} diff --git a/packages/vue-vuetify/vite.config.ts b/packages/vue-vuetify/vite.config.ts deleted file mode 100644 index 27c583f1ed..0000000000 --- a/packages/vue-vuetify/vite.config.ts +++ /dev/null @@ -1,92 +0,0 @@ -import { fileURLToPath, URL } from 'node:url'; - -import { defineConfig } from 'vite'; -import vue from '@vitejs/plugin-vue'; -import { resolve } from 'node:path'; -import dts from 'vite-plugin-dts'; -import packageJson from './package.json'; - -// https://vitejs.dev/config/ -export default defineConfig({ - plugins: [ - vue(), - dts({ - outDir: 'lib', // specify the output directory for .d.ts files - tsconfigPath: './tsconfig.lib.json', // specify the path to your tsconfig.json file - entryRoot: 'src', // root directory for the declaration files - cleanVueFileName: true, // removes .vue suffix from filenames - staticImport: true, // uses static imports in declaration files - }), - ], - build: { - outDir: 'lib', - lib: { - // tell the build process to treat this project as library - entry: resolve(__dirname, 'src/index.ts'), - name: packageJson.name, - formats: ['es', 'cjs', 'umd'], - fileName: (format: string) => { - if (format === 'es') { - format = 'esm'; - } - return `jsonforms-vue-vuetify.${format}.js`; - }, - }, - rollupOptions: { - external: [ - ...Object.keys(packageJson.peerDependencies), - 'vue', - /^lodash\/.*/, - /^dayjs\/.*/, - /^ajv\/.*/, - /^vuetify\/.*/, - ], - output: { - globals: (name: string) => { - if (name === 'vue') { - return 'Vue'; - } else if (name.startsWith('vuetify')) { - // check https://vuetifyjs.com/en/getting-started/installation/#using-cdn - // Replace all slashes with dots - let result = name.replace(/\//g, '.'); - - // Capitalize the first letter - result = result.charAt(0).toUpperCase() + result.slice(1); - - return result; - } else if (name.startsWith('lodash')) { - if (name === 'lodash') { - return '_'; - } - // Replace occurrences of 'lodash/XYZ' with '_.XYZ' - const result = name.replace(/lodash\/(.*)/g, (match, p1) => { - return '_.' + p1.replace(/\//g, '.'); - }); - - return result; - } else if (name.startsWith('dayjs')) { - if (name === 'dayjs') { - return 'dayjs'; - } - // check https://day.js.org/docs/en/plugin/loading-into-browser - // Replace occurrences of 'dayjs/XYZ' with 'dayjs_XYZ' - const result = name.replace(/dayjs\/(.*)/g, (match, p1) => { - return 'dayjs_' + p1.replace(/\//g, '_'); - }); - - return result; - } - return name; - }, - assetFileNames: 'jsonforms-vue-vuetify.[ext]', - }, - }, - minify: false, // builds unminified files - sourcemap: true, // generates sourcemap files - }, - resolve: { - alias: { - '@': fileURLToPath(new URL('./src', import.meta.url)), - }, - }, -}); diff --git a/packages/vue-vuetify/vite.example.config.ts b/packages/vue-vuetify/vite.example.config.ts deleted file mode 100644 index 41a2cc8fd5..0000000000 --- a/packages/vue-vuetify/vite.example.config.ts +++ /dev/null @@ -1,45 +0,0 @@ -import { fileURLToPath, URL } from 'node:url'; - -import vue from '@vitejs/plugin-vue'; -import { defineConfig } from 'vite'; -import { nodePolyfills } from 'vite-plugin-node-polyfills'; -import vuetify, { transformAssetUrls } from 'vite-plugin-vuetify'; - -// https://vitejs.dev/config/ -export default defineConfig({ - base: '', - optimizeDeps: { - // Exclude vuetify since it has an issue with vite dev - TypeError: makeVExpansionPanelTextProps is not a function - the makeVExpansionPanelTextProps is used before it is defined - exclude: ['vuetify'], - }, - plugins: [ - vue({ - template: { transformAssetUrls }, - }), - vuetify(), - // needed for json-refs - nodePolyfills({ - include: ['path', 'querystring'], - globals: { - process: true, - }, - }), - ], - build: { - outDir: 'example/dist', - rollupOptions: { - output: { - dir: 'example/dist', - entryFileNames: 'bundle.js', - format: 'iife', - }, - }, - minify: true, - sourcemap: true, // generates sourcemap files - }, - resolve: { - alias: { - '@': fileURLToPath(new URL('./src', import.meta.url)), - }, - }, -}); diff --git a/packages/vue-vuetify/vitest.config.ts b/packages/vue-vuetify/vitest.config.ts deleted file mode 100644 index b280e03ac0..0000000000 --- a/packages/vue-vuetify/vitest.config.ts +++ /dev/null @@ -1,23 +0,0 @@ -import { fileURLToPath } from 'node:url'; -import { mergeConfig, defineConfig, configDefaults } from 'vitest/config'; -import viteConfig from './vite.config'; - -export default mergeConfig( - viteConfig, - defineConfig({ - test: { - environment: 'jsdom', - exclude: [...configDefaults.exclude, 'e2e/**'], - root: fileURLToPath(new URL('./', import.meta.url)), - coverage: { - provider: 'v8', - reporter: ['text', 'json', 'html'], - }, - server: { - deps: { - inline: ['vuetify'], - }, - }, - }, - }), -); diff --git a/packages/vue/README.md b/packages/vue/README.md index a03c58463e..e903c6ef4e 100644 --- a/packages/vue/README.md +++ b/packages/vue/README.md @@ -90,16 +90,16 @@ export default defineComponent({ ### Renderer Set -The `@jsonforms/vue` package offers JSON Forms Core bindings based on the composition API. +The `@flextract/json-forms-vue` package offers JSON Forms Core bindings based on the composition API. These bindings handle the props given to the `dispatch-renderer` and use the JSON Forms Core to determine specialized inputs for many use cases like validation and rule-based visibility. Using these bindings as a basis, it's straightforward to create renderer sets for Vue 3. #### Basic control renderer example ```ts -import { ControlElement } from '@jsonforms/core'; +import { ControlElement } from '@flextract/json-forms-core'; import { defineComponent } from 'vue'; -import { rendererProps, useJsonFormsControl } from '@jsonforms/vue'; +import { rendererProps, useJsonFormsControl } from '@flextract/json-forms-vue'; const controlRenderer = defineComponent({ name: 'control-renderer', @@ -142,7 +142,7 @@ import { isControl, JsonFormsRendererRegistryEntry, rankWith, -} from '@jsonforms/core'; +} from '@flextract/json-forms-core'; export const entry: JsonFormsRendererRegistryEntry = { renderer: controlRenderer, tester: rankWith(1, isControl), @@ -165,13 +165,13 @@ import { JsonFormsRendererRegistryEntry, Layout, rankWith, -} from '@jsonforms/core'; +} from '@flextract/json-forms-core'; import { defineComponent } from 'vue'; import { DispatchRenderer, rendererProps, useJsonFormsLayout, -} from '@jsonforms/vue'; +} from '@flextract/json-forms-vue'; const layoutRenderer = defineComponent({ name: 'layout-renderer', diff --git a/packages/vue/dev/renderers/ControlRenderer.vue b/packages/vue/dev/renderers/ControlRenderer.vue index 50c39563c7..25cc168681 100644 --- a/packages/vue/dev/renderers/ControlRenderer.vue +++ b/packages/vue/dev/renderers/ControlRenderer.vue @@ -28,7 +28,7 @@ import { isControl, JsonFormsRendererRegistryEntry, rankWith, -} from '@jsonforms/core'; +} from '@flextract/json-forms-core'; import { defineComponent } from 'vue'; import { rendererProps, useJsonFormsControl } from '../../src/'; diff --git a/packages/vue/dev/renderers/LayoutRenderer.vue b/packages/vue/dev/renderers/LayoutRenderer.vue index 19ebfd7bcb..c7d605679a 100644 --- a/packages/vue/dev/renderers/LayoutRenderer.vue +++ b/packages/vue/dev/renderers/LayoutRenderer.vue @@ -37,7 +37,7 @@ import { JsonFormsRendererRegistryEntry, Layout, rankWith, -} from '@jsonforms/core'; +} from '@flextract/json-forms-core'; import { defineComponent } from 'vue'; import { DispatchRenderer, diff --git a/packages/vue/package.json b/packages/vue/package.json index 5b06e482ff..2377298ac3 100644 --- a/packages/vue/package.json +++ b/packages/vue/package.json @@ -1,13 +1,14 @@ { - "name": "@jsonforms/vue", - "version": "3.6.0", + "name": "@flextract/json-forms-vue", + "version": "4.0.3", "description": "Vue 3 module of JSON Forms", "repository": "https://github.com/eclipsesource/jsonforms", "bugs": "https://github.com/eclipsesource/jsonforms/issues", "homepage": "http://jsonforms.io/", "license": "MIT", "publishConfig": { - "access": "public" + "access": "public", + "registry": "https://npm.pkg.github.com" }, "keywords": [ "vue", @@ -50,7 +51,7 @@ "@babel/core": "^7.16.0", "@babel/preset-env": "^7.16.4", "@babel/preset-typescript": "^7.9.0", - "@jsonforms/core": "workspace:*", + "@flextract/json-forms-core": "workspace:*", "@rollup/plugin-alias": "^3.1.8", "@types/jest": "^27.4.1", "@types/node": "^22.13.8", @@ -85,7 +86,7 @@ "vue": "^3.4.21" }, "peerDependencies": { - "@jsonforms/core": "3.6.0", + "@flextract/json-forms-core": "3.6.0", "vue": "^3.2.26" } } diff --git a/packages/vue/src/components/DispatchCell.vue b/packages/vue/src/components/DispatchCell.vue index b3a07730d3..771f4c5ea9 100644 --- a/packages/vue/src/components/DispatchCell.vue +++ b/packages/vue/src/components/DispatchCell.vue @@ -15,7 +15,7 @@ import { rendererProps, useJsonFormsDispatchCell, } from '../jsonFormsCompositions'; -import { ControlElement } from '@jsonforms/core'; +import { ControlElement } from '@flextract/json-forms-core'; export default defineComponent({ name: 'DispatchCell', diff --git a/packages/vue/src/components/JsonForms.vue b/packages/vue/src/components/JsonForms.vue index 2000c10323..1777e37b70 100644 --- a/packages/vue/src/components/JsonForms.vue +++ b/packages/vue/src/components/JsonForms.vue @@ -25,9 +25,10 @@ import { JsonFormsI18nState, defaultMiddleware, Middleware, -} from '@jsonforms/core'; +} from '@flextract/json-forms-core'; import { JsonFormsChangeEvent, MaybeReadonly } from '../types'; import DispatchRenderer from './DispatchRenderer.vue'; +import { debugJsonForms } from '../suggestionsDebug'; import type Ajv from 'ajv'; import type { ErrorObject } from 'ajv'; @@ -57,6 +58,16 @@ export default defineComponent({ type: [String, Number, Boolean, Array, Object] as PropType, default: undefined, }, + suggestions: { + required: false, + type: [String, Number, Boolean, Array, Object] as PropType, + default: undefined, + }, + suggestionsExpanded: { + required: false, + type: Boolean, + default: false, + }, schema: { required: false, type: [Object, Boolean] as PropType, @@ -145,6 +156,8 @@ export default defineComponent({ ); return core; }; + debugJsonForms('Initializing JsonForms component', this.suggestions); + return { schemaToUse, dataToUse, @@ -164,6 +177,8 @@ export default defineComponent({ cells: this.cells, uischemas: this.uischemas, readonly: this.readonly, + suggestions: this.suggestions, + suggestionsExpanded: this.suggestionsExpanded, }, }; }, @@ -211,6 +226,13 @@ export default defineComponent({ data(newData) { this.dataToUse = newData; }, + suggestions(newSuggestions) { + debugJsonForms('Suggestions prop changed', newSuggestions); + this.jsonforms.suggestions = newSuggestions; + }, + suggestionsExpanded(newSuggestionsExpanded) { + this.jsonforms.suggestionsExpanded = newSuggestionsExpanded; + }, renderers(newRenderers) { this.jsonforms.renderers = newRenderers; }, diff --git a/packages/vue/src/index.ts b/packages/vue/src/index.ts index 319a72aeff..82ee7fe830 100644 --- a/packages/vue/src/index.ts +++ b/packages/vue/src/index.ts @@ -1,3 +1,4 @@ export * from './components'; export * from './jsonFormsCompositions'; export * from './types'; +export * from './suggestionsDebug'; diff --git a/packages/vue/src/jsonFormsCompositions.ts b/packages/vue/src/jsonFormsCompositions.ts index 1ac967aab6..ad4b705e4e 100644 --- a/packages/vue/src/jsonFormsCompositions.ts +++ b/packages/vue/src/jsonFormsCompositions.ts @@ -5,7 +5,6 @@ import { mapDispatchToControlProps, mapStateToControlProps, mapStateToLayoutProps, - JsonFormsSubStates, JsonSchema, UISchemaElement, CoreActions, @@ -38,7 +37,8 @@ import { Categorization, isControl, Scopable, -} from '@jsonforms/core'; + Resolve, +} from '@flextract/json-forms-core'; import { PropType, computed, @@ -49,6 +49,27 @@ import { ref, watch, } from 'vue'; +import { JsonFormsSubStatesWithSuggestions } from './types'; +import { debugResolution, debugControl } from './suggestionsDebug'; + +/** + * Resolves a suggestion value from the suggestions object for a given path + */ +const resolveSuggestion = (suggestions: any, path: string): any => { + if (!suggestions || !path) { + debugResolution(path, suggestions, undefined); + return undefined; + } + + try { + const result = Resolve.data(suggestions, path); + debugResolution(path, suggestions, result); + return result; + } catch (e) { + debugResolution(path, suggestions, undefined); + return undefined; + } +}; /** * Constructs a props declaration for Vue components which can be used @@ -177,7 +198,7 @@ export function useControl< stateMap: (state: JsonFormsState, props: P) => R, dispatchMap?: (dispatch: Dispatch) => D ) { - const jsonforms = inject('jsonforms'); + const jsonforms = inject('jsonforms'); const dispatch = inject>('dispatch'); if (!jsonforms || !dispatch) { @@ -187,11 +208,24 @@ export function useControl< } const id = ref(undefined); - const control = computed(() => ({ - ...props, - ...stateMap({ jsonforms }, props), - id: id.value, - })); + const control = computed(() => { + const mappedState = stateMap({ jsonforms }, props); + const path = (mappedState as any).path || ''; + const suggestion = resolveSuggestion(jsonforms.suggestions, path); + const hasSuggestion = suggestion !== undefined; + + const uischemaType = (props.uischema as any)?.type || 'unknown'; + debugControl(uischemaType, path, hasSuggestion, suggestion); + + return { + ...props, + ...mappedState, + id: id.value, + suggestion, + hasSuggestion, + suggestionsExpanded: jsonforms.suggestionsExpanded, + }; + }); const dispatchMethods = dispatchMap?.(dispatch); @@ -404,7 +438,7 @@ export const useJsonFormsMasterListItem = (props: OwnPropsOfMasterListItem) => { * Access bindings via the provided reactive 'renderer' object. */ export const useJsonFormsRenderer = (props: RendererProps) => { - const jsonforms = inject('jsonforms'); + const jsonforms = inject('jsonforms'); const dispatch = inject>('dispatch'); if (!jsonforms || !dispatch) { diff --git a/packages/vue/src/suggestionsDebug.ts b/packages/vue/src/suggestionsDebug.ts new file mode 100644 index 0000000000..055ff11984 --- /dev/null +++ b/packages/vue/src/suggestionsDebug.ts @@ -0,0 +1,163 @@ +/** + * Debug utility for tracing suggestions flow through JSON Forms + * + * To enable debug mode, set localStorage: + * localStorage.setItem('jsonforms_suggestions_debug', 'true') + * + * To disable debug mode, remove the key: + * localStorage.removeItem('jsonforms_suggestions_debug') + */ + +const STORAGE_KEY = 'jsonforms_suggestions_debug'; + +/** + * Check if debug mode is enabled from localStorage + */ +const isDebugEnabled = (): boolean => { + if (typeof window === 'undefined' || typeof localStorage === 'undefined') { + return false; + } + try { + return localStorage.getItem(STORAGE_KEY) === 'true'; + } catch (e) { + return false; + } +}; + +/** + * Debug logger with color coding and structured output + */ +export const debugLog = (category: string, message: string, data?: any) => { + if (!isDebugEnabled()) return; + + const colors: Record = { + 'JsonForms': '#3b82f6', // blue + 'Resolution': '#8b5cf6', // purple + 'Control': '#10b981', // green + 'Vanilla': '#f59e0b', // orange + 'Wrapper': '#ef4444', // red + 'State': '#ec4899', // pink + }; + + const color = colors[category] || '#6b7280'; + const timestamp = new Date().toISOString().split('T')[1].slice(0, -1); + + console.groupCollapsed( + `%c[${timestamp}] [${category}] ${message}`, + `color: ${color}; font-weight: bold` + ); + + if (data !== undefined) { + if (typeof data === 'object') { + console.log('%cData:', 'color: #9ca3af; font-weight: bold'); + console.log(JSON.parse(JSON.stringify(data))); // Deep clone to avoid reference issues + } else { + console.log('%cValue:', 'color: #9ca3af; font-weight: bold', data); + } + } + + console.trace('Call stack'); + console.groupEnd(); +}; + +/** + * Debug logger for suggestion resolution + */ +export const debugResolution = (path: string, suggestions: any, result: any) => { + if (!isDebugEnabled()) return; + + debugLog('Resolution', `Resolving suggestion for path: "${path}"`, { + path, + suggestions: suggestions, + resolved: result, + hasValue: result !== undefined, + }); +}; + +/** + * Debug logger for control binding + */ +export const debugControl = ( + uischemaType: string, + path: string, + hasSuggestion: boolean, + suggestion: any +) => { + if (!isDebugEnabled()) return; + + debugLog('Control', `Control bound: ${uischemaType} at "${path}"`, { + uischemaType, + path, + hasSuggestion, + suggestion, + }); +}; + +/** + * Debug logger for vanilla control setup + */ +export const debugVanillaControl = ( + path: string, + hasSuggestion: boolean, + suggestion: any, + suggestionState: string +) => { + if (!isDebugEnabled()) return; + + debugLog('Vanilla', `Vanilla control setup for "${path}"`, { + path, + hasSuggestion, + suggestion, + suggestionState, + }); +}; + +/** + * Debug logger for suggestion actions + */ +export const debugAction = ( + action: 'accept' | 'reject', + path: string, + suggestion: any +) => { + if (!isDebugEnabled()) return; + + debugLog('State', `Suggestion ${action}ed at "${path}"`, { + action, + path, + suggestion, + }); +}; + +/** + * Debug logger for wrapper rendering + */ +export const debugWrapper = ( + id: string, + hasSuggestion: boolean, + showSuggestion: boolean, + suggestionState: string, + suggestion: any +) => { + if (!isDebugEnabled()) return; + + debugLog('Wrapper', `Rendering wrapper for control "${id}"`, { + id, + hasSuggestion, + showSuggestion, + suggestionState, + suggestion, + }); +}; + +/** + * Debug logger for JsonForms component + */ +export const debugJsonForms = (action: string, suggestions: any) => { + if (!isDebugEnabled()) return; + + debugLog('JsonForms', action, { + suggestions: suggestions, + hasValue: suggestions !== undefined, + }); +}; diff --git a/packages/vue/src/types.ts b/packages/vue/src/types.ts index 4ed76941b2..c90719bf07 100644 --- a/packages/vue/src/types.ts +++ b/packages/vue/src/types.ts @@ -3,10 +3,15 @@ import { Dispatch, JsonFormsCore, JsonFormsSubStates, -} from '@jsonforms/core'; +} from '@flextract/json-forms-core'; + +export interface JsonFormsSubStatesWithSuggestions extends JsonFormsSubStates { + suggestions?: any; + suggestionsExpanded?: boolean; +} export interface InjectJsonFormsState { - jsonforms: JsonFormsSubStates; + jsonforms: JsonFormsSubStatesWithSuggestions; } export interface InjectJsonFormsDispatch { dispatch: Dispatch; diff --git a/packages/vue/tests/unit/JsonForms.spec.ts b/packages/vue/tests/unit/JsonForms.spec.ts index b39e505273..9e5374bc79 100644 --- a/packages/vue/tests/unit/JsonForms.spec.ts +++ b/packages/vue/tests/unit/JsonForms.spec.ts @@ -1,4 +1,4 @@ -import { JsonFormsUISchemaRegistryEntry, Generate } from '@jsonforms/core'; +import { JsonFormsUISchemaRegistryEntry, Generate } from '@flextract/json-forms-core'; import { shallowMount } from '@vue/test-utils'; import { JsonForms } from '../../src'; import { bindings } from '../testHelper'; diff --git a/packages/vue/tsconfig.json b/packages/vue/tsconfig.json index 73cbe2f5f4..58a7a0f823 100644 --- a/packages/vue/tsconfig.json +++ b/packages/vue/tsconfig.json @@ -4,7 +4,7 @@ "module": "ES2020", "skipLibCheck": true, "strict": true, - "declaration": true, + "declaration": false, "noUnusedLocals": true, "noUnusedParameters": true, "importHelpers": true, diff --git a/pnpm-lock.yaml b/pnpm-lock.yaml index 6b18066b44..953b142d7b 100644 --- a/pnpm-lock.yaml +++ b/pnpm-lock.yaml @@ -9,16 +9,16 @@ importers: devDependencies: '@angular/cli': specifier: ^18.0.0 - version: 18.2.12(chokidar@3.6.0) + version: 18.2.21(chokidar@3.6.0) '@angular/core': specifier: ^18.0.0 - version: 18.2.13(rxjs@7.8.1)(zone.js@0.14.10) + version: 18.2.14(rxjs@7.8.2)(zone.js@0.14.10) '@babel/plugin-proposal-nullish-coalescing-operator': specifier: ^7.16.5 - version: 7.18.6(@babel/core@7.25.2) + version: 7.18.6(@babel/core@7.28.5) '@babel/plugin-proposal-optional-chaining': specifier: ^7.16.5 - version: 7.21.0(@babel/core@7.25.2) + version: 7.21.0(@babel/core@7.28.5) '@istanbuljs/nyc-config-typescript': specifier: ^1.0.2 version: 1.0.2(nyc@15.1.0) @@ -27,19 +27,19 @@ importers: version: 27.5.2 '@types/lodash': specifier: ^4.14.149 - version: 4.14.149 + version: 4.17.21 ajv: specifier: ^8.6.1 - version: 8.13.0 + version: 8.17.1 ajv-formats: specifier: ^2.1.0 - version: 2.1.1(ajv@8.13.0) + version: 2.1.1(ajv@8.17.1) babel-loader: specifier: ^8.0.6 - version: 8.3.0(@babel/core@7.25.2)(webpack@5.91.0) + version: 8.4.1(@babel/core@7.28.5)(webpack@5.103.0) core-js: specifier: ^3.9.1 - version: 3.37.1 + version: 3.47.0 coveralls: specifier: ^3.0.9 version: 3.1.1 @@ -48,7 +48,7 @@ importers: version: 7.0.3 css-loader: specifier: ^3.2.0 - version: 3.6.0(webpack@5.91.0) + version: 3.6.0(webpack@5.103.0) istanbul-lib-coverage: specifier: ^3.2.0 version: 3.2.2 @@ -57,10 +57,10 @@ importers: version: 3.3.0 lerna: specifier: ^6.6.2 - version: 6.6.2(encoding@0.1.13) + version: 6.6.2(@types/node@22.19.1)(encoding@0.1.13) nan: specifier: ^2.14.2 - version: 2.19.0 + version: 2.23.1 nyc: specifier: ^15.1.0 version: 15.1.0 @@ -72,301 +72,26 @@ importers: version: 0.2.4 style-loader: specifier: ^1.0.1 - version: 1.3.0(webpack@5.91.0) + version: 1.3.0(webpack@5.103.0) ts-loader: specifier: ^9.5.1 - version: 9.5.1(typescript@5.5.4)(webpack@5.91.0) + version: 9.5.4(typescript@5.5.4)(webpack@5.103.0) ts-node: specifier: ^10.4.0 - version: 10.9.2(@types/node@22.13.8)(typescript@5.5.4) + version: 10.9.2(@types/node@22.19.1)(typescript@5.5.4) tslib: specifier: ^2.5.0 - version: 2.6.2 + version: 2.8.1 typescript: specifier: ~5.5.0 version: 5.5.4 webpack: specifier: ^5.78.0 - version: 5.91.0(webpack-cli@5.1.4) + version: 5.103.0 webpack-merge: specifier: ^5.10.0 version: 5.10.0 - packages/angular: - dependencies: - lodash: - specifier: ^4.17.21 - version: 4.17.21 - devDependencies: - '@angular-eslint/eslint-plugin': - specifier: ^18.0.0 - version: 18.4.3(@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@angular-eslint/eslint-plugin-template': - specifier: ^18.0.0 - version: 18.4.3(@typescript-eslint/types@7.18.0)(@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@angular-eslint/schematics': - specifier: ^18.0.0 - version: 18.4.3(@typescript-eslint/types@7.18.0)(@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4))(chokidar@3.6.0)(eslint@8.57.0)(typescript@5.5.4) - '@angular-eslint/template-parser': - specifier: ^18.0.0 - version: 18.4.3(eslint@8.57.0)(typescript@5.5.4) - '@angular/compiler': - specifier: ^18.0.0 - version: 18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)) - '@angular/compiler-cli': - specifier: ^18.0.0 - version: 18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4) - '@angular/core': - specifier: ^18.0.0 - version: 18.2.13(rxjs@6.6.7)(zone.js@0.14.10) - '@angular/forms': - specifier: ^18.0.0 - version: 18.2.13(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(@angular/platform-browser@18.2.13(@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(rxjs@6.6.7) - '@jsonforms/core': - specifier: workspace:* - version: link:../core - '@typescript-eslint/eslint-plugin': - specifier: ^5.54.1 - version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/parser': - specifier: ^5.54.1 - version: 5.62.0(eslint@8.57.0)(typescript@5.5.4) - ava: - specifier: ^6.1.2 - version: 6.1.3(encoding@0.1.13) - copy-webpack-plugin: - specifier: ^5.0.5 - version: 5.1.2(webpack@5.94.0) - eslint: - specifier: ^8.56.0 - version: 8.57.0 - eslint-config-prettier: - specifier: ^8.7.0 - version: 8.10.0(eslint@8.57.0) - eslint-plugin-import: - specifier: ^2.27.5 - version: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) - eslint-plugin-prettier: - specifier: ^4.2.1 - version: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8) - ng-packagr: - specifier: ^18.0.0 - version: 18.2.1(@angular/compiler-cli@18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4) - nyc: - specifier: ^15.1.0 - version: 15.1.0 - prettier: - specifier: ^2.8.4 - version: 2.8.8 - rimraf: - specifier: ^3.0.2 - version: 3.0.2 - rxjs: - specifier: ^6.6.0 - version: 6.6.7 - source-map-support: - specifier: ^0.5.21 - version: 0.5.21 - tslib: - specifier: ^2.3.0 - version: 2.6.2 - typedoc: - specifier: ~0.25.3 - version: 0.25.13(typescript@5.5.4) - typescript: - specifier: ~5.5.0 - version: 5.5.4 - - packages/angular-material: - dependencies: - hammerjs: - specifier: 2.0.8 - version: 2.0.8 - lodash: - specifier: ^4.17.21 - version: 4.17.21 - devDependencies: - '@angular-devkit/build-angular': - specifier: ^18.0.0 - version: 18.2.12(@angular/compiler-cli@18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4))(@types/node@22.13.8)(chokidar@3.6.0)(html-webpack-plugin@5.6.0(webpack@5.91.0))(karma@6.4.3)(ng-packagr@18.2.1(@angular/compiler-cli@18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4))(protractor@7.0.0)(stylus@0.57.0)(typescript@5.5.4) - '@angular-devkit/core': - specifier: ^18.0.0 - version: 18.2.12(chokidar@3.6.0) - '@angular-eslint/eslint-plugin': - specifier: ^18.0.0 - version: 18.4.3(@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@angular-eslint/eslint-plugin-template': - specifier: ^18.0.0 - version: 18.4.3(@typescript-eslint/types@7.18.0)(@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@angular-eslint/schematics': - specifier: ^18.0.0 - version: 18.4.3(@typescript-eslint/types@7.18.0)(@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4))(chokidar@3.6.0)(eslint@8.57.0)(typescript@5.5.4) - '@angular-eslint/template-parser': - specifier: ^18.0.0 - version: 18.4.3(eslint@8.57.0)(typescript@5.5.4) - '@angular/animations': - specifier: ^18.0.0 - version: 18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)) - '@angular/cdk': - specifier: ^18.0.0 - version: 18.2.14(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7) - '@angular/common': - specifier: ^18.0.0 - version: 18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7) - '@angular/compiler': - specifier: ^18.0.0 - version: 18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)) - '@angular/compiler-cli': - specifier: ^18.0.0 - version: 18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4) - '@angular/core': - specifier: ^18.0.0 - version: 18.2.13(rxjs@6.6.7)(zone.js@0.14.10) - '@angular/forms': - specifier: ^18.0.0 - version: 18.2.13(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(@angular/platform-browser@18.2.13(@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(rxjs@6.6.7) - '@angular/material': - specifier: ^18.0.0 - version: 18.2.14(72f5cb6cebd09c53f429f73267659db8) - '@angular/platform-browser': - specifier: ^18.0.0 - version: 18.2.13(@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)) - '@angular/platform-browser-dynamic': - specifier: ^18.0.0 - version: 18.2.13(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(@angular/platform-browser@18.2.13(@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))) - '@angular/router': - specifier: ^18.0.0 - version: 18.2.13(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(@angular/platform-browser@18.2.13(@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(rxjs@6.6.7) - '@babel/plugin-proposal-nullish-coalescing-operator': - specifier: ^7.16.5 - version: 7.18.6(@babel/core@7.25.2) - '@babel/plugin-proposal-optional-chaining': - specifier: ^7.16.5 - version: 7.21.0(@babel/core@7.25.2) - '@jsonforms/angular': - specifier: workspace:* - version: link:../angular - '@jsonforms/core': - specifier: workspace:* - version: link:../core - '@jsonforms/examples': - specifier: workspace:* - version: link:../examples - '@ngtools/webpack': - specifier: ^18.0.0 - version: 18.2.12(@angular/compiler-cli@18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4))(typescript@5.5.4)(webpack@5.91.0) - '@types/jasmine': - specifier: ~3.8.0 - version: 3.8.2 - '@types/lodash': - specifier: 4.14.149 - version: 4.14.149 - '@types/node': - specifier: ^22.13.8 - version: 22.13.8 - '@typescript-eslint/eslint-plugin': - specifier: ^5.54.1 - version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/parser': - specifier: ^5.54.1 - version: 5.62.0(eslint@8.57.0)(typescript@5.5.4) - babel-loader: - specifier: ^8.0.6 - version: 8.3.0(@babel/core@7.25.2)(webpack@5.91.0) - copy-webpack-plugin: - specifier: ^11.0.0 - version: 11.0.0(webpack@5.91.0) - dayjs: - specifier: ^1.11.10 - version: 1.11.11 - eslint: - specifier: ^8.56.0 - version: 8.57.0 - eslint-config-prettier: - specifier: ^8.7.0 - version: 8.10.0(eslint@8.57.0) - eslint-plugin-import: - specifier: ^2.27.5 - version: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) - eslint-plugin-prettier: - specifier: ^4.2.1 - version: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8) - html-loader: - specifier: ^0.5.5 - version: 0.5.5 - http-server: - specifier: ^14.1.1 - version: 14.1.1 - jasmine: - specifier: ^3.99.0 - version: 3.99.0 - jasmine-spec-reporter: - specifier: ^4.2.1 - version: 4.2.1 - karma: - specifier: ^6.4.3 - version: 6.4.3 - karma-chrome-launcher: - specifier: ^3.2.0 - version: 3.2.0 - karma-coverage: - specifier: ~2.0.3 - version: 2.0.3 - karma-jasmine: - specifier: ^2.0.1 - version: 2.0.1(karma@6.4.3) - karma-jasmine-html-reporter: - specifier: ^1.7.0 - version: 1.7.0(jasmine-core@5.1.2)(karma-jasmine@2.0.1(karma@6.4.3))(karma@6.4.3) - karma-sourcemap-loader: - specifier: ^0.3.8 - version: 0.3.8 - karma-webpack: - specifier: ^5.0.0 - version: 5.0.1(webpack@5.91.0) - ng-packagr: - specifier: ^18.0.0 - version: 18.2.1(@angular/compiler-cli@18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4) - null-loader: - specifier: ^0.1.1 - version: 0.1.1 - nyc: - specifier: ^15.1.0 - version: 15.1.0 - prettier: - specifier: ^2.8.4 - version: 2.8.8 - protractor: - specifier: ^7.0.0 - version: 7.0.0 - rimraf: - specifier: ^3.0.2 - version: 3.0.2 - rxjs: - specifier: ^6.6.0 - version: 6.6.7 - ts-loader: - specifier: ^9.5.1 - version: 9.5.1(typescript@5.5.4)(webpack@5.91.0) - tslib: - specifier: ^2.5.0 - version: 2.6.2 - typedoc: - specifier: ~0.25.3 - version: 0.25.13(typescript@5.5.4) - typescript: - specifier: ~5.5.0 - version: 5.5.4 - webpack: - specifier: ^5.78.0 - version: 5.91.0(webpack-cli@5.1.4) - yargs: - specifier: ^17.7.2 - version: 17.7.2 - zone.js: - specifier: ~0.14.10 - version: 0.14.10 - packages/core: dependencies: '@types/json-schema': @@ -374,10 +99,10 @@ importers: version: 7.0.15 ajv: specifier: ^8.6.1 - version: 8.13.0 + version: 8.17.1 ajv-formats: specifier: ^2.1.0 - version: 2.1.1(ajv@8.13.0) + version: 2.1.1(ajv@8.17.1) lodash: specifier: ^4.17.21 version: 4.17.21 @@ -387,31 +112,31 @@ importers: version: 1.0.2(nyc@15.1.0) '@types/redux-mock-store': specifier: ^1.0.1 - version: 1.0.6 + version: 1.5.0 '@typescript-eslint/eslint-plugin': specifier: ^5.54.1 - version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) + version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) '@typescript-eslint/parser': specifier: ^5.54.1 - version: 5.62.0(eslint@8.57.0)(typescript@5.5.4) + version: 5.62.0(eslint@8.57.1)(typescript@5.5.4) ava: specifier: ^6.1.2 - version: 6.1.3(encoding@0.1.13) + version: 6.4.1(encoding@0.1.13)(rollup@2.79.2) document-register-element: specifier: ^1.14.3 version: 1.14.10 eslint: specifier: ^8.56.0 - version: 8.57.0 + version: 8.57.1 eslint-config-prettier: specifier: ^8.7.0 - version: 8.10.0(eslint@8.57.0) + version: 8.10.2(eslint@8.57.1) eslint-plugin-import: specifier: ^2.27.5 - version: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) + version: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1) eslint-plugin-prettier: specifier: ^4.2.1 - version: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8) + version: 4.2.5(eslint-config-prettier@8.10.2(eslint@8.57.1))(eslint@8.57.1)(prettier@2.8.8) jsdom: specifier: ^22.0.0 version: 22.1.0 @@ -435,25 +160,25 @@ importers: version: 3.0.2 rollup: specifier: ^2.78.0 - version: 2.79.1 + version: 2.79.2 rollup-plugin-cleanup: specifier: ^3.2.1 - version: 3.2.1(rollup@2.79.1) + version: 3.2.1(rollup@2.79.2) rollup-plugin-typescript2: specifier: ^0.34.1 - version: 0.34.1(rollup@2.79.1)(typescript@5.5.4) + version: 0.34.1(rollup@2.79.2)(typescript@5.5.4) rollup-plugin-visualizer: specifier: ^5.4.1 - version: 5.12.0(rollup@2.79.1) + version: 5.14.0(rollup@2.79.2) source-map-support: specifier: ^0.5.21 version: 0.5.21 ts-node: specifier: ^10.4.0 - version: 10.9.2(@types/node@22.13.8)(typescript@5.5.4) + version: 10.9.2(@types/node@22.19.1)(typescript@5.5.4) tslib: specifier: ^2.5.0 - version: 2.6.2 + version: 2.8.1 typedoc: specifier: ~0.25.3 version: 0.25.13(typescript@5.5.4) @@ -461,39 +186,81 @@ importers: specifier: ~5.5.0 version: 5.5.4 - packages/examples: + packages/vue: dependencies: - ajv-i18n: - specifier: ^4.2.0 - version: 4.2.0(ajv@8.17.1) lodash: specifier: ^4.17.21 version: 4.17.21 devDependencies: - '@jsonforms/core': + '@babel/core': + specifier: ^7.16.0 + version: 7.28.5 + '@babel/preset-env': + specifier: ^7.16.4 + version: 7.28.5(@babel/core@7.28.5) + '@babel/preset-typescript': + specifier: ^7.9.0 + version: 7.28.5(@babel/core@7.28.5) + '@flextract/json-forms-core': specifier: workspace:* version: link:../core + '@rollup/plugin-alias': + specifier: ^3.1.8 + version: 3.1.9(rollup@2.79.2) + '@types/jest': + specifier: ^27.4.1 + version: 27.5.2 '@types/node': specifier: ^22.13.8 - version: 22.13.8 + version: 22.19.1 '@typescript-eslint/eslint-plugin': specifier: ^5.54.1 - version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) + version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) '@typescript-eslint/parser': specifier: ^5.54.1 - version: 5.62.0(eslint@8.57.0)(typescript@5.5.4) + version: 5.62.0(eslint@8.57.1)(typescript@5.5.4) + '@vue/cli-plugin-babel': + specifier: ~5.0.8 + version: 5.0.9(@vue/cli-service@5.0.9(@vue/compiler-sfc@3.5.25)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue@3.5.25(typescript@5.5.4))(webpack-sources@3.3.3))(core-js@3.47.0)(encoding@0.1.13)(vue@3.5.25(typescript@5.5.4)) + '@vue/cli-plugin-typescript': + specifier: ~5.0.8 + version: 5.0.9(@vue/cli-service@5.0.9(@vue/compiler-sfc@3.5.25)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue@3.5.25(typescript@5.5.4))(webpack-sources@3.3.3))(encoding@0.1.13)(eslint@8.57.1)(typescript@5.5.4)(vue@3.5.25(typescript@5.5.4)) + '@vue/cli-service': + specifier: ~5.0.8 + version: 5.0.9(@vue/compiler-sfc@3.5.25)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue@3.5.25(typescript@5.5.4))(webpack-sources@3.3.3) + '@vue/eslint-config-typescript': + specifier: ^11.0.2 + version: 11.0.3(eslint-plugin-vue@9.33.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.5.4) + '@vue/test-utils': + specifier: ^2.4.5 + version: 2.4.6 + '@vue/vue3-jest': + specifier: ^27.0.0 + version: 27.0.0(@babel/core@7.28.5)(babel-jest@27.5.1(@babel/core@7.28.5))(jest@27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4)))(ts-jest@27.1.5(@babel/core@7.28.5)(@types/jest@27.5.2)(babel-jest@27.5.1(@babel/core@7.28.5))(jest@27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4)))(typescript@5.5.4))(typescript@5.5.4)(vue@3.5.25(typescript@5.5.4)) + core-js: + specifier: ^3.9.1 + version: 3.47.0 + cross-env: + specifier: ^7.0.2 + version: 7.0.3 eslint: specifier: ^8.56.0 - version: 8.57.0 + version: 8.57.1 eslint-config-prettier: specifier: ^8.7.0 - version: 8.10.0(eslint@8.57.0) + version: 8.10.2(eslint@8.57.1) eslint-plugin-import: specifier: ^2.27.5 - version: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) - eslint-plugin-prettier: - specifier: ^4.2.1 - version: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8) + version: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1) + eslint-plugin-prettier-vue: + specifier: ^4.2.0 + version: 4.2.0 + eslint-plugin-vue: + specifier: ^9.9.0 + version: 9.33.0(eslint@8.57.1) + jest: + specifier: ^27.5.1 + version: 27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4)) prettier: specifier: ^2.8.4 version: 2.8.8 @@ -502,23848 +269,15098 @@ importers: version: 3.0.2 rollup: specifier: ^2.78.0 - version: 2.79.1 + version: 2.79.2 + rollup-plugin-babel: + specifier: ^4.4.0 + version: 4.4.0(@babel/core@7.28.5)(rollup@2.79.2) rollup-plugin-cleanup: specifier: ^3.2.1 - version: 3.2.1(rollup@2.79.1) + version: 3.2.1(rollup@2.79.2) rollup-plugin-typescript2: specifier: ^0.34.1 - version: 0.34.1(rollup@2.79.1)(typescript@5.5.4) + version: 0.34.1(rollup@2.79.2)(typescript@5.5.4) rollup-plugin-visualizer: specifier: ^5.4.1 - version: 5.12.0(rollup@2.79.1) + version: 5.14.0(rollup@2.79.2) + rollup-plugin-vue: + specifier: ^6.0.0 + version: 6.0.0(@vue/compiler-sfc@3.5.25) + ts-jest: + specifier: ^27.1.5 + version: 27.1.5(@babel/core@7.28.5)(@types/jest@27.5.2)(babel-jest@27.5.1(@babel/core@7.28.5))(jest@27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4)))(typescript@5.5.4) tslib: specifier: ^2.5.0 - version: 2.6.2 + version: 2.8.1 typedoc: specifier: ~0.25.3 version: 0.25.13(typescript@5.5.4) typescript: specifier: ~5.5.0 version: 5.5.4 + vue: + specifier: ^3.4.21 + version: 3.5.25(typescript@5.5.4) - packages/examples-app: - devDependencies: - '@types/fs-extra': - specifier: ^9.0.13 - version: 9.0.13 - fs-extra: - specifier: ^11.1.0 - version: 11.2.0 - - packages/examples-react: + packages/vue-vanilla: dependencies: - '@jsonforms/core': - specifier: workspace:* - version: link:../core - '@jsonforms/examples': - specifier: workspace:* - version: link:../examples - '@jsonforms/react': - specifier: workspace:* - version: link:../react - '@mui/material': - specifier: ~5.13.0 - version: 5.13.7(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@types/react-highlight': - specifier: ^0.12.5 - version: 0.12.8 - '@types/react-tabs': - specifier: ^2.3.3 - version: 2.3.4 - highlight.js: - specifier: ^11.3.1 - version: 11.9.0 - json-refs: - specifier: 3.0.15 - version: 3.0.15 + '@rollup/plugin-alias': + specifier: ^3.1.8 + version: 3.1.9(rollup@2.79.2) lodash: specifier: ^4.17.21 version: 4.17.21 - react: - specifier: ^17.0.2 - version: 17.0.2 - react-dom: - specifier: ^17.0.2 - version: 17.0.2(react@17.0.2) - react-highlight: - specifier: ^0.14.0 - version: 0.14.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - react-tabs: - specifier: ^3.2.3 - version: 3.2.3(react@17.0.2) devDependencies: - '@types/react': - specifier: ^17.0.24 - version: 17.0.80 - '@types/react-dom': - specifier: ^17.0.9 - version: 17.0.25 + '@babel/core': + specifier: ^7.9.0 + version: 7.28.5 + '@babel/preset-env': + specifier: ^7.9.5 + version: 7.28.5(@babel/core@7.28.5) + '@babel/preset-typescript': + specifier: ^7.9.0 + version: 7.28.5(@babel/core@7.28.5) + '@flextract/json-forms-core': + specifier: workspace:* + version: link:../core + '@flextract/json-forms-vue': + specifier: workspace:* + version: link:../vue + '@types/chai': + specifier: ^4.2.11 + version: 4.3.20 + '@types/jest': + specifier: ^27.4.1 + version: 27.5.2 + '@types/mocha': + specifier: ^5.2.4 + version: 5.2.7 + '@types/node': + specifier: ^22.13.8 + version: 22.19.1 '@typescript-eslint/eslint-plugin': specifier: ^5.54.1 - version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) + version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) '@typescript-eslint/parser': specifier: ^5.54.1 - version: 5.62.0(eslint@8.57.0)(typescript@5.5.4) + version: 5.62.0(eslint@8.57.1)(typescript@5.5.4) + '@vue/cli-plugin-babel': + specifier: ~5.0.8 + version: 5.0.9(@vue/cli-service@5.0.9(@vue/compiler-sfc@3.5.25)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue@3.5.25(typescript@5.5.4))(webpack-sources@3.3.3))(core-js@3.47.0)(encoding@0.1.13)(vue@3.5.25(typescript@5.5.4)) + '@vue/cli-plugin-typescript': + specifier: ~5.0.8 + version: 5.0.9(@vue/cli-service@5.0.9(@vue/compiler-sfc@3.5.25)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue@3.5.25(typescript@5.5.4))(webpack-sources@3.3.3))(encoding@0.1.13)(eslint@8.57.1)(typescript@5.5.4)(vue@3.5.25(typescript@5.5.4)) + '@vue/cli-plugin-unit-mocha': + specifier: ~5.0.8 + version: 5.0.9(@vue/cli-service@5.0.9(@vue/compiler-sfc@3.5.25)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue@3.5.25(typescript@5.5.4))(webpack-sources@3.3.3))(encoding@0.1.13)(webpack@5.103.0) + '@vue/cli-service': + specifier: ~5.0.8 + version: 5.0.9(@vue/compiler-sfc@3.5.25)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue@3.5.25(typescript@5.5.4))(webpack-sources@3.3.3) + '@vue/eslint-config-typescript': + specifier: ^11.0.2 + version: 11.0.3(eslint-plugin-vue@9.33.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.5.4) + '@vue/test-utils': + specifier: ^2.4.5 + version: 2.4.6 + chai: + specifier: ^4.1.2 + version: 4.5.0 + cross-env: + specifier: ^7.0.2 + version: 7.0.3 eslint: specifier: ^8.56.0 - version: 8.57.0 + version: 8.57.1 eslint-config-prettier: specifier: ^8.7.0 - version: 8.10.0(eslint@8.57.0) + version: 8.10.2(eslint@8.57.1) eslint-plugin-import: specifier: ^2.27.5 - version: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) - eslint-plugin-prettier: - specifier: ^4.2.1 - version: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8) - eslint-plugin-react: - specifier: ^7.32.2 - version: 7.34.1(eslint@8.57.0) + version: 2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1) + eslint-plugin-prettier-vue: + specifier: ^4.2.0 + version: 4.2.0 + eslint-plugin-vue: + specifier: ^9.9.0 + version: 9.33.0(eslint@8.57.1) + npm-run-all: + specifier: ^4.1.5 + version: 4.1.5 prettier: specifier: ^2.8.4 version: 2.8.8 + rimraf: + specifier: ^3.0.2 + version: 3.0.2 + rollup: + specifier: ^2.78.0 + version: 2.79.2 + rollup-plugin-babel: + specifier: ^4.4.0 + version: 4.4.0(@babel/core@7.28.5)(rollup@2.79.2) + rollup-plugin-cleanup: + specifier: ^3.2.1 + version: 3.2.1(rollup@2.79.2) + rollup-plugin-typescript2: + specifier: ^0.34.1 + version: 0.34.1(rollup@2.79.2)(typescript@5.5.4) + rollup-plugin-visualizer: + specifier: ^5.4.1 + version: 5.14.0(rollup@2.79.2) + rollup-plugin-vue: + specifier: ^6.0.0 + version: 6.0.0(@vue/compiler-sfc@3.5.25) + symlink-dir: + specifier: ^5.0.0 + version: 5.2.1 tslib: specifier: ^2.5.0 - version: 2.6.2 - - packages/material-renderers: - dependencies: - '@date-io/dayjs': - specifier: ^3.0.0 - version: 3.0.0(dayjs@1.10.7) - dayjs: - specifier: 1.10.7 - version: 1.10.7 - lodash: - specifier: ^4.17.21 - version: 4.17.21 - devDependencies: - '@emotion/react': - specifier: ^11.5.0 - version: 11.11.4(@types/react@17.0.80)(react@17.0.2) - '@emotion/styled': - specifier: ^11.3.0 - version: 11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2) - '@jsonforms/core': - specifier: workspace:* - version: link:../core - '@jsonforms/react': - specifier: workspace:* - version: link:../react - '@mui/icons-material': - specifier: ^5.11.16 - version: 5.15.18(@mui/material@5.13.7(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(@types/react@17.0.80)(react@17.0.2) - '@mui/material': - specifier: ~5.13.0 - version: 5.13.7(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@mui/x-date-pickers': - specifier: ^7.7.1 - version: 7.7.1(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(@mui/material@5.13.7(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(@types/react@17.0.80)(dayjs@1.10.7)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@rollup/plugin-commonjs': - specifier: ^23.0.3 - version: 23.0.7(rollup@2.79.1) - '@rollup/plugin-json': - specifier: ^5.0.2 - version: 5.0.2(rollup@2.79.1) - '@rollup/plugin-node-resolve': - specifier: ^15.0.1 - version: 15.2.3(rollup@2.79.1) - '@rollup/plugin-replace': - specifier: ^5.0.1 - version: 5.0.5(rollup@2.79.1) - '@types/enzyme': - specifier: ^3.10.3 - version: 3.10.18 - '@types/react': - specifier: ^17.0.24 - version: 17.0.80 - '@types/react-dom': - specifier: ^17.0.9 - version: 17.0.25 - '@typescript-eslint/eslint-plugin': - specifier: ^5.54.1 - version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/parser': - specifier: ^5.54.1 - version: 5.62.0(eslint@8.57.0)(typescript@5.5.4) - '@wojtekmaj/enzyme-adapter-react-17': - specifier: ^0.6.7 - version: 0.6.7(enzyme@3.11.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - copy-webpack-plugin: - specifier: ^5.0.5 - version: 5.1.2(webpack@5.91.0) - enzyme: - specifier: ^3.11.0 - version: 3.11.0 - eslint: - specifier: ^8.56.0 - version: 8.57.0 - eslint-config-prettier: - specifier: ^8.7.0 - version: 8.10.0(eslint@8.57.0) - eslint-plugin-import: - specifier: ^2.27.5 - version: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) - eslint-plugin-prettier: - specifier: ^4.2.1 - version: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8) - eslint-plugin-react: - specifier: ^7.32.2 - version: 7.34.1(eslint@8.57.0) - jest: - specifier: ^27.5.1 - version: 27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)) - jsdom: - specifier: ^22.0.0 - version: 22.1.0 - jsdom-global: - specifier: ^3.0.2 - version: 3.0.2(jsdom@22.1.0) - nyc: - specifier: ^15.1.0 - version: 15.1.0 - prettier: - specifier: ^2.8.4 - version: 2.8.8 - react: - specifier: ^17.0.2 - version: 17.0.2 - react-dom: - specifier: ^17.0.2 - version: 17.0.2(react@17.0.2) - rimraf: - specifier: ^3.0.2 - version: 3.0.2 - rollup: - specifier: ^2.78.0 - version: 2.79.1 - rollup-plugin-cleanup: - specifier: ^3.2.1 - version: 3.2.1(rollup@2.79.1) - rollup-plugin-copy: - specifier: ^3.4.0 - version: 3.5.0 - rollup-plugin-import-css: - specifier: ^3.3.1 - version: 3.5.0(rollup@2.79.1) - rollup-plugin-typescript2: - specifier: ^0.34.1 - version: 0.34.1(rollup@2.79.1)(typescript@5.5.4) - rollup-plugin-visualizer: - specifier: ^5.4.1 - version: 5.12.0(rollup@2.79.1) - source-map-loader: - specifier: ^0.2.4 - version: 0.2.4 - ts-jest: - specifier: ^27.1.4 - version: 27.1.5(@babel/core@7.24.5)(@types/jest@27.5.2)(babel-jest@27.5.1(@babel/core@7.24.5))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(typescript@5.5.4) - ts-loader: - specifier: ^9.5.1 - version: 9.5.1(typescript@5.5.4)(webpack@5.91.0) - tslib: - specifier: ^2.5.0 - version: 2.6.2 - typedoc: - specifier: ~0.25.3 - version: 0.25.13(typescript@5.5.4) - typescript: - specifier: ~5.5.0 - version: 5.5.4 - webpack: - specifier: ^5.78.0 - version: 5.91.0(webpack-cli@5.1.4) - webpack-cli: - specifier: ^5.1.4 - version: 5.1.4(webpack-dev-server@4.15.2)(webpack@5.91.0) - webpack-dev-server: - specifier: ^4.15.1 - version: 4.15.2(webpack-cli@5.1.4)(webpack@5.91.0) - - packages/react: - dependencies: - lodash: - specifier: ^4.17.21 - version: 4.17.21 - devDependencies: - '@jsonforms/core': - specifier: workspace:* - version: link:../core - '@rollup/plugin-alias': - specifier: ^3.1.8 - version: 3.1.9(rollup@2.79.1) - '@types/enzyme': - specifier: ^3.10.3 - version: 3.10.18 - '@types/object-hash': - specifier: ^1.3.0 - version: 1.3.4 - '@types/react': - specifier: ^17.0.24 - version: 17.0.80 - '@types/react-redux': - specifier: ^7.1.5 - version: 7.1.33 - '@typescript-eslint/eslint-plugin': - specifier: ^5.54.1 - version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/parser': - specifier: ^5.54.1 - version: 5.62.0(eslint@8.57.0)(typescript@5.5.4) - '@wojtekmaj/enzyme-adapter-react-17': - specifier: ^0.6.7 - version: 0.6.7(enzyme@3.11.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - cross-env: - specifier: ^7.0.2 - version: 7.0.3 - enzyme: - specifier: ^3.11.0 - version: 3.11.0 - eslint: - specifier: ^8.56.0 - version: 8.57.0 - eslint-config-prettier: - specifier: ^8.7.0 - version: 8.10.0(eslint@8.57.0) - eslint-plugin-import: - specifier: ^2.27.5 - version: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) - eslint-plugin-prettier: - specifier: ^4.2.1 - version: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8) - eslint-plugin-react: - specifier: ^7.32.2 - version: 7.34.1(eslint@8.57.0) - jest: - specifier: ^27.5.1 - version: 27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)) - jsdom: - specifier: ^22.0.0 - version: 22.1.0 - jsdom-global: - specifier: ^3.0.2 - version: 3.0.2(jsdom@22.1.0) - nyc: - specifier: ^15.1.0 - version: 15.1.0 - prettier: - specifier: ^2.8.4 - version: 2.8.8 - react: - specifier: ^17.0.2 - version: 17.0.2 - react-dom: - specifier: ^17.0.2 - version: 17.0.2(react@17.0.2) - react-redux: - specifier: ^7.1.3 - version: 7.2.9(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - redux: - specifier: ^4.0.4 - version: 4.2.1 - redux-mock-store: - specifier: 1.5.3 - version: 1.5.3 - rimraf: - specifier: ^3.0.2 - version: 3.0.2 - rollup: - specifier: ^2.78.0 - version: 2.79.1 - rollup-plugin-cleanup: - specifier: ^3.2.1 - version: 3.2.1(rollup@2.79.1) - rollup-plugin-typescript2: - specifier: ^0.34.1 - version: 0.34.1(rollup@2.79.1)(typescript@5.5.4) - rollup-plugin-visualizer: - specifier: ^5.4.1 - version: 5.12.0(rollup@2.79.1) - ts-jest: - specifier: ^27.1.4 - version: 27.1.5(@babel/core@7.25.2)(@types/jest@27.5.2)(babel-jest@27.5.1(@babel/core@7.25.2))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(typescript@5.5.4) - tslib: - specifier: ^2.5.0 - version: 2.6.2 - typedoc: - specifier: ~0.25.3 - version: 0.25.13(typescript@5.5.4) - typescript: - specifier: ~5.5.0 - version: 5.5.4 - - packages/vanilla-renderers: - dependencies: - lodash: - specifier: ^4.17.21 - version: 4.17.21 - devDependencies: - '@istanbuljs/nyc-config-typescript': - specifier: ^1.0.2 - version: 1.0.2(nyc@15.1.0) - '@jsonforms/core': - specifier: workspace:* - version: link:../core - '@jsonforms/react': - specifier: workspace:* - version: link:../react - '@rollup/plugin-commonjs': - specifier: ^23.0.3 - version: 23.0.7(rollup@2.79.1) - '@rollup/plugin-json': - specifier: ^5.0.2 - version: 5.0.2(rollup@2.79.1) - '@rollup/plugin-node-resolve': - specifier: ^15.0.1 - version: 15.2.3(rollup@2.79.1) - '@rollup/plugin-replace': - specifier: ^5.0.1 - version: 5.0.5(rollup@2.79.1) - '@types/enzyme': - specifier: ^3.10.3 - version: 3.10.18 - '@types/react': - specifier: ^17.0.24 - version: 17.0.80 - '@typescript-eslint/eslint-plugin': - specifier: ^5.54.1 - version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/parser': - specifier: ^5.54.1 - version: 5.62.0(eslint@8.57.0)(typescript@5.5.4) - '@wojtekmaj/enzyme-adapter-react-17': - specifier: ^0.6.7 - version: 0.6.7(enzyme@3.11.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - copy-webpack-plugin: - specifier: ^5.0.5 - version: 5.1.2(webpack@5.91.0) - enzyme: - specifier: ^3.11.0 - version: 3.11.0 - eslint: - specifier: ^8.56.0 - version: 8.57.0 - eslint-config-prettier: - specifier: ^8.7.0 - version: 8.10.0(eslint@8.57.0) - eslint-plugin-import: - specifier: ^2.27.5 - version: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) - eslint-plugin-prettier: - specifier: ^4.2.1 - version: 4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8) - eslint-plugin-react: - specifier: ^7.32.2 - version: 7.34.1(eslint@8.57.0) - jest: - specifier: ^27.5.1 - version: 27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)) - jsdom: - specifier: ^22.0.0 - version: 22.1.0 - jsdom-global: - specifier: ^3.0.2 - version: 3.0.2(jsdom@22.1.0) - nyc: - specifier: ^15.1.0 - version: 15.1.0 - prettier: - specifier: ^2.8.4 - version: 2.8.8 - react: - specifier: ^17.0.2 - version: 17.0.2 - react-dom: - specifier: ^17.0.2 - version: 17.0.2(react@17.0.2) - rimraf: - specifier: ^3.0.2 - version: 3.0.2 - rollup: - specifier: ^2.78.0 - version: 2.79.1 - rollup-plugin-cleanup: - specifier: ^3.2.1 - version: 3.2.1(rollup@2.79.1) - rollup-plugin-copy: - specifier: ^3.4.0 - version: 3.5.0 - rollup-plugin-import-css: - specifier: ^3.3.1 - version: 3.5.0(rollup@2.79.1) - rollup-plugin-typescript2: - specifier: ^0.34.1 - version: 0.34.1(rollup@2.79.1)(typescript@5.5.4) - rollup-plugin-visualizer: - specifier: ^5.4.1 - version: 5.12.0(rollup@2.79.1) - source-map-loader: - specifier: ^0.2.4 - version: 0.2.4 - ts-jest: - specifier: ^27.1.4 - version: 27.1.5(@babel/core@7.25.2)(@types/jest@27.5.2)(babel-jest@27.5.1(@babel/core@7.25.2))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(typescript@5.5.4) - ts-loader: - specifier: ^9.5.1 - version: 9.5.1(typescript@5.5.4)(webpack@5.91.0) - ts-node: - specifier: ^10.4.0 - version: 10.9.2(@types/node@22.13.8)(typescript@5.5.4) - tslib: - specifier: ^2.5.0 - version: 2.6.2 - typedoc: - specifier: ~0.25.3 - version: 0.25.13(typescript@5.5.4) - webpack: - specifier: ^5.78.0 - version: 5.91.0(webpack-cli@5.1.4) - webpack-cli: - specifier: ^5.1.4 - version: 5.1.4(webpack-dev-server@4.15.2)(webpack@5.91.0) - webpack-dev-server: - specifier: ^4.15.1 - version: 4.15.2(webpack-cli@5.1.4)(webpack@5.91.0) - - packages/vue: - dependencies: - lodash: - specifier: ^4.17.21 - version: 4.17.21 - devDependencies: - '@babel/core': - specifier: ^7.16.0 - version: 7.24.5 - '@babel/preset-env': - specifier: ^7.16.4 - version: 7.24.5(@babel/core@7.24.5) - '@babel/preset-typescript': - specifier: ^7.9.0 - version: 7.24.1(@babel/core@7.24.5) - '@jsonforms/core': - specifier: workspace:* - version: link:../core - '@rollup/plugin-alias': - specifier: ^3.1.8 - version: 3.1.9(rollup@2.79.1) - '@types/jest': - specifier: ^27.4.1 - version: 27.5.2 - '@types/node': - specifier: ^22.13.8 - version: 22.13.8 - '@typescript-eslint/eslint-plugin': - specifier: ^5.54.1 - version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/parser': - specifier: ^5.54.1 - version: 5.62.0(eslint@8.57.0)(typescript@5.5.4) - '@vue/cli-plugin-babel': - specifier: ~5.0.8 - version: 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.27)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4))(webpack-sources@3.2.3))(core-js@3.37.1)(encoding@0.1.13)(vue@3.4.27(typescript@5.5.4)) - '@vue/cli-plugin-typescript': - specifier: ~5.0.8 - version: 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.27)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4))(webpack-sources@3.2.3))(encoding@0.1.13)(eslint@8.57.0)(typescript@5.5.4)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4)) - '@vue/cli-service': - specifier: ~5.0.8 - version: 5.0.8(@vue/compiler-sfc@3.4.27)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4))(webpack-sources@3.2.3) - '@vue/eslint-config-typescript': - specifier: ^11.0.2 - version: 11.0.3(eslint-plugin-vue@9.26.0(eslint@8.57.0))(eslint@8.57.0)(typescript@5.5.4) - '@vue/test-utils': - specifier: ^2.4.5 - version: 2.4.6 - '@vue/vue3-jest': - specifier: ^27.0.0 - version: 27.0.0(@babel/core@7.24.5)(babel-jest@27.5.1(@babel/core@7.24.5))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(ts-jest@27.1.5(@babel/core@7.24.5)(@types/jest@27.5.2)(babel-jest@27.5.1(@babel/core@7.24.5))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(typescript@5.5.4))(typescript@5.5.4)(vue@3.4.27(typescript@5.5.4)) - core-js: - specifier: ^3.9.1 - version: 3.37.1 - cross-env: - specifier: ^7.0.2 - version: 7.0.3 - eslint: - specifier: ^8.56.0 - version: 8.57.0 - eslint-config-prettier: - specifier: ^8.7.0 - version: 8.10.0(eslint@8.57.0) - eslint-plugin-import: - specifier: ^2.27.5 - version: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) - eslint-plugin-prettier-vue: - specifier: ^4.2.0 - version: 4.2.0 - eslint-plugin-vue: - specifier: ^9.9.0 - version: 9.26.0(eslint@8.57.0) - jest: - specifier: ^27.5.1 - version: 27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)) - prettier: - specifier: ^2.8.4 - version: 2.8.8 - rimraf: - specifier: ^3.0.2 - version: 3.0.2 - rollup: - specifier: ^2.78.0 - version: 2.79.1 - rollup-plugin-babel: - specifier: ^4.4.0 - version: 4.4.0(@babel/core@7.24.5)(rollup@2.79.1) - rollup-plugin-cleanup: - specifier: ^3.2.1 - version: 3.2.1(rollup@2.79.1) - rollup-plugin-typescript2: - specifier: ^0.34.1 - version: 0.34.1(rollup@2.79.1)(typescript@5.5.4) - rollup-plugin-visualizer: - specifier: ^5.4.1 - version: 5.12.0(rollup@2.79.1) - rollup-plugin-vue: - specifier: ^6.0.0 - version: 6.0.0(@vue/compiler-sfc@3.4.27) - ts-jest: - specifier: ^27.1.5 - version: 27.1.5(@babel/core@7.24.5)(@types/jest@27.5.2)(babel-jest@27.5.1(@babel/core@7.24.5))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(typescript@5.5.4) - tslib: - specifier: ^2.5.0 - version: 2.6.2 - typedoc: - specifier: ~0.25.3 - version: 0.25.13(typescript@5.5.4) - typescript: - specifier: ~5.5.0 - version: 5.5.4 - vue: - specifier: ^3.4.21 - version: 3.4.27(typescript@5.5.4) - - packages/vue-vanilla: - dependencies: - lodash: - specifier: ^4.17.21 - version: 4.17.21 - devDependencies: - '@babel/core': - specifier: ^7.9.0 - version: 7.24.5 - '@babel/preset-env': - specifier: ^7.9.5 - version: 7.24.5(@babel/core@7.24.5) - '@babel/preset-typescript': - specifier: ^7.9.0 - version: 7.24.1(@babel/core@7.24.5) - '@jsonforms/core': - specifier: workspace:* - version: link:../core - '@jsonforms/vue': - specifier: workspace:* - version: link:../vue - '@types/chai': - specifier: ^4.2.11 - version: 4.3.16 - '@types/jest': - specifier: ^27.4.1 - version: 27.5.2 - '@types/mocha': - specifier: ^5.2.4 - version: 5.2.7 - '@types/node': - specifier: ^22.13.8 - version: 22.13.8 - '@typescript-eslint/eslint-plugin': - specifier: ^5.54.1 - version: 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/parser': - specifier: ^5.54.1 - version: 5.62.0(eslint@8.57.0)(typescript@5.5.4) - '@vue/cli-plugin-babel': - specifier: ~5.0.8 - version: 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.27)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4))(webpack-sources@3.2.3))(core-js@3.37.1)(encoding@0.1.13)(vue@3.4.27(typescript@5.5.4)) - '@vue/cli-plugin-typescript': - specifier: ~5.0.8 - version: 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.27)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4))(webpack-sources@3.2.3))(encoding@0.1.13)(eslint@8.57.0)(typescript@5.5.4)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4)) - '@vue/cli-plugin-unit-mocha': - specifier: ~5.0.8 - version: 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.27)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4))(webpack-sources@3.2.3))(encoding@0.1.13)(webpack@5.94.0) - '@vue/cli-service': - specifier: ~5.0.8 - version: 5.0.8(@vue/compiler-sfc@3.4.27)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4))(webpack-sources@3.2.3) - '@vue/eslint-config-typescript': - specifier: ^11.0.2 - version: 11.0.3(eslint-plugin-vue@9.26.0(eslint@8.57.0))(eslint@8.57.0)(typescript@5.5.4) - '@vue/test-utils': - specifier: ^2.4.5 - version: 2.4.6 - chai: - specifier: ^4.1.2 - version: 4.4.1 - cross-env: - specifier: ^7.0.2 - version: 7.0.3 - eslint: - specifier: ^8.56.0 - version: 8.57.0 - eslint-config-prettier: - specifier: ^8.7.0 - version: 8.10.0(eslint@8.57.0) - eslint-plugin-import: - specifier: ^2.27.5 - version: 2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0) - eslint-plugin-prettier-vue: - specifier: ^4.2.0 - version: 4.2.0 - eslint-plugin-vue: - specifier: ^9.9.0 - version: 9.26.0(eslint@8.57.0) - npm-run-all: - specifier: ^4.1.5 - version: 4.1.5 - prettier: - specifier: ^2.8.4 - version: 2.8.8 - rimraf: - specifier: ^3.0.2 - version: 3.0.2 - rollup: - specifier: ^2.78.0 - version: 2.79.1 - rollup-plugin-babel: - specifier: ^4.4.0 - version: 4.4.0(@babel/core@7.24.5)(rollup@2.79.1) - rollup-plugin-cleanup: - specifier: ^3.2.1 - version: 3.2.1(rollup@2.79.1) - rollup-plugin-typescript2: - specifier: ^0.34.1 - version: 0.34.1(rollup@2.79.1)(typescript@5.5.4) - rollup-plugin-visualizer: - specifier: ^5.4.1 - version: 5.12.0(rollup@2.79.1) - rollup-plugin-vue: - specifier: ^6.0.0 - version: 6.0.0(@vue/compiler-sfc@3.4.27) - symlink-dir: - specifier: ^5.0.0 - version: 5.2.1 - tslib: - specifier: ^2.5.0 - version: 2.6.2 - typedoc: - specifier: ~0.25.3 - version: 0.25.13(typescript@5.5.4) - typescript: - specifier: ~5.5.0 - version: 5.5.4 - vue: - specifier: ^3.4.21 - version: 3.4.27(typescript@5.5.4) - vue-jest: - specifier: ^5.0.0-0 - version: 5.0.0-alpha.10(@babel/core@7.24.5)(babel-jest@27.5.1(@babel/core@7.24.5))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(typescript@5.5.4)(vue@3.4.27(typescript@5.5.4)) - - packages/vue-vuetify: - devDependencies: - '@fortawesome/fontawesome-free': - specifier: ^6.5.2 - version: 6.6.0 - '@jsonforms/core': - specifier: workspace:* - version: link:../core - '@jsonforms/examples': - specifier: workspace:* - version: link:../examples - '@jsonforms/vue': - specifier: workspace:* - version: link:../vue - '@mdi/font': - specifier: ^7.4.47 - version: 7.4.47 - '@rushstack/eslint-patch': - specifier: ^1.8.0 - version: 1.10.4 - '@tsconfig/node20': - specifier: ^20.1.4 - version: 20.1.4 - '@types/jsdom': - specifier: ^21.1.6 - version: 21.1.7 - '@types/lodash': - specifier: ^4.14.172 - version: 4.17.7 - '@types/node': - specifier: ^22.13.8 - version: 22.13.8 - '@types/splitpanes': - specifier: ^2.2.6 - version: 2.2.6 - '@vitejs/plugin-vue': - specifier: ^5.0.4 - version: 5.1.2(vite@5.4.2(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6))(vue@3.4.27(typescript@5.4.5)) - '@vitest/coverage-v8': - specifier: ^1.6.0 - version: 1.6.0(vitest@1.6.0(@types/node@22.13.8)(jsdom@24.1.1)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6)) - '@vue/eslint-config-prettier': - specifier: ^9.0.0 - version: 9.0.0(@types/eslint@8.56.10)(eslint@8.57.0)(prettier@3.3.3) - '@vue/eslint-config-typescript': - specifier: ^13.0.0 - version: 13.0.0(eslint-plugin-vue@9.26.0(eslint@8.57.0))(eslint@8.57.0)(typescript@5.4.5) - '@vue/test-utils': - specifier: ^2.4.5 - version: 2.4.6 - '@vue/tsconfig': - specifier: ^0.5.1 - version: 0.5.1 - ajv: - specifier: ^8.6.1 - version: 8.13.0 - ajv-keywords: - specifier: ^5.1.0 - version: 5.1.0(ajv@8.13.0) - core-js: - specifier: ^3.9.1 - version: 3.37.1 - cross-env: - specifier: ^7.0.2 - version: 7.0.3 - dayjs: - specifier: ^1.10.6 - version: 1.11.11 - eslint: - specifier: ^8.57.0 - version: 8.57.0 - eslint-plugin-vue: - specifier: ^9.23.0 - version: 9.26.0(eslint@8.57.0) - eslint-plugin-vue-scoped-css: - specifier: ^2.8.0 - version: 2.8.1(eslint@8.57.0)(vue-eslint-parser@9.4.2(eslint@8.57.0)) - jsdom: - specifier: ^24.0.0 - version: 24.1.1 - json-refs: - specifier: 3.0.15 - version: 3.0.15 - lodash: - specifier: ^4.17.21 - version: 4.17.21 - maska: - specifier: ^2.1.11 - version: 2.1.11 - monaco-editor: - specifier: ^0.49.0 - version: 0.49.0 - npm-run-all2: - specifier: ^6.1.2 - version: 6.2.2 - prettier: - specifier: ^3.2.5 - version: 3.3.3 - resize-observer-polyfill: - specifier: ^1.5.1 - version: 1.5.1 - rimraf: - specifier: ^4.4.1 - version: 4.4.1 - rollup-plugin-postcss: - specifier: ^4.0.2 - version: 4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.4.5)) - splitpanes: - specifier: ^3.1.5 - version: 3.1.5 - typedoc: - specifier: ~0.25.3 - version: 0.25.13(typescript@5.4.5) - typescript: - specifier: ~5.4.0 - version: 5.4.5 - vite: - specifier: ^5.2.8 - version: 5.4.2(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6) - vite-plugin-dts: - specifier: ^3.9.1 - version: 3.9.1(@types/node@22.13.8)(rollup@4.22.4)(typescript@5.4.5)(vite@5.4.2(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6)) - vite-plugin-node-polyfills: - specifier: ^0.21.0 - version: 0.21.0(rollup@4.22.4)(vite@5.4.2(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6)) - vite-plugin-static-copy: - specifier: ^1.0.5 - version: 1.0.6(vite@5.4.2(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6)) - vite-plugin-vuetify: - specifier: ^2.0.3 - version: 2.0.4(vite@5.4.2(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6))(vue@3.4.27(typescript@5.4.5))(vuetify@3.7.0) - vitest: - specifier: ^1.4.0 - version: 1.6.0(@types/node@22.13.8)(jsdom@24.1.1)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6) - vue: - specifier: ^3.4.21 - version: 3.4.27(typescript@5.4.5) - vue-eslint-parser: - specifier: ^9.4.2 - version: 9.4.2(eslint@8.57.0) - vue-tsc: - specifier: ^2.0.11 - version: 2.0.29(typescript@5.4.5) - vuetify: - specifier: ^3.6.6 - version: 3.7.0(typescript@5.4.5)(vite-plugin-vuetify@2.0.4)(vue@3.4.27(typescript@5.4.5)) - -packages: - '@achrinza/node-ipc@9.2.8': - resolution: - { - integrity: sha512-DSzEEkbMYbAUVlhy7fg+BzccoRuSQzqHbIPGxGv19OJ2WKwS3/9ChAnQcII4g+GujcHhyJ8BUuOVAx/S5uAfQg==, - } - engines: - { - node: 8 || 9 || 10 || 11 || 12 || 13 || 14 || 15 || 16 || 17 || 18 || 19 || 20 || 21, - } - - '@ampproject/remapping@2.3.0': - resolution: - { - integrity: sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==, - } - engines: { node: '>=6.0.0' } - - '@angular-devkit/architect@0.1802.12': - resolution: - { - integrity: sha512-bepVb2/GtJppYKaeW8yTGE6egmoWZ7zagFDsmBdbF+BYp+HmeoPsclARcdryBPVq68zedyTRdvhWSUTbw1AYuw==, - } - engines: - { - node: ^18.19.1 || ^20.11.1 || >=22.0.0, - npm: ^6.11.0 || ^7.5.6 || >=8.0.0, - yarn: '>= 1.13.0', - } - - '@angular-devkit/build-angular@18.2.12': - resolution: - { - integrity: sha512-quVUi7eqTq9OHumQFNl9Y8t2opm8miu4rlYnuF6rbujmmBDvdUvR6trFChueRczl2p5HWqTOr6NPoDGQm8AyNw==, - } - engines: - { - node: ^18.19.1 || ^20.11.1 || >=22.0.0, - npm: ^6.11.0 || ^7.5.6 || >=8.0.0, - yarn: '>= 1.13.0', - } - peerDependencies: - '@angular/compiler-cli': ^18.0.0 - '@angular/localize': ^18.0.0 - '@angular/platform-server': ^18.0.0 - '@angular/service-worker': ^18.0.0 - '@web/test-runner': ^0.18.0 - browser-sync: ^3.0.2 - jest: ^29.5.0 - jest-environment-jsdom: ^29.5.0 - karma: ^6.3.0 - ng-packagr: ^18.0.0 - protractor: ^7.0.0 - tailwindcss: ^2.0.0 || ^3.0.0 - typescript: '>=5.4 <5.6' - peerDependenciesMeta: - '@angular/localize': - optional: true - '@angular/platform-server': - optional: true - '@angular/service-worker': - optional: true - '@web/test-runner': - optional: true - browser-sync: - optional: true - jest: - optional: true - jest-environment-jsdom: - optional: true - karma: - optional: true - ng-packagr: - optional: true - protractor: - optional: true - tailwindcss: - optional: true - - '@angular-devkit/build-webpack@0.1802.12': - resolution: - { - integrity: sha512-0Z3fdbZVRnjYWE2/VYyfy+uieY+6YZyEp4ylzklVkc+fmLNsnz4Zw6cK1LzzcBqAwKIyh1IdW20Cg7o8b0sONA==, - } - engines: - { - node: ^18.19.1 || ^20.11.1 || >=22.0.0, - npm: ^6.11.0 || ^7.5.6 || >=8.0.0, - yarn: '>= 1.13.0', - } - peerDependencies: - webpack: ^5.30.0 - webpack-dev-server: ^5.0.2 - - '@angular-devkit/core@18.2.12': - resolution: - { - integrity: sha512-NtB6ypsaDyPE6/fqWOdfTmACs+yK5RqfH5tStEzWFeeDsIEDYKsJ06ypuRep7qTjYus5Rmttk0Ds+cFgz8JdUQ==, - } - engines: - { - node: ^18.19.1 || ^20.11.1 || >=22.0.0, - npm: ^6.11.0 || ^7.5.6 || >=8.0.0, - yarn: '>= 1.13.0', - } - peerDependencies: - chokidar: ^3.5.2 - peerDependenciesMeta: - chokidar: - optional: true - - '@angular-devkit/schematics@18.2.12': - resolution: - { - integrity: sha512-mMea9txHbnCX5lXLHlo0RAgfhFHDio45/jMsREM2PA8UtVf2S8ltXz7ZwUrUyMQRv8vaSfn4ijDstF4hDMnRgQ==, - } - engines: - { - node: ^18.19.1 || ^20.11.1 || >=22.0.0, - npm: ^6.11.0 || ^7.5.6 || >=8.0.0, - yarn: '>= 1.13.0', - } - - '@angular-eslint/bundled-angular-compiler@18.4.3': - resolution: - { - integrity: sha512-zdrA8mR98X+U4YgHzUKmivRU+PxzwOL/j8G7eTOvBuq8GPzsP+hvak+tyxlgeGm9HsvpFj9ERHLtJ0xDUPs8fg==, - } - - '@angular-eslint/eslint-plugin-template@18.4.3': - resolution: - { - integrity: sha512-ijGlX2N01ayMXTpeQivOA31AszO8OEbu9ZQUCxnu9AyMMhxyi2q50bujRChAvN9YXQfdQtbxuajxV6+aiWb5BQ==, - } - peerDependencies: - '@typescript-eslint/types': ^7.11.0 || ^8.0.0 - '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - - '@angular-eslint/eslint-plugin@18.4.3': - resolution: - { - integrity: sha512-AyJbupiwTBR81P6T59v+aULEnPpZBCBxL2S5QFWfAhNCwWhcof4GihvdK2Z87yhvzDGeAzUFSWl/beJfeFa+PA==, - } - peerDependencies: - '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - - '@angular-eslint/schematics@18.4.3': - resolution: - { - integrity: sha512-D5maKn5e6n58+8n7jLFLD4g+RGPOPeDSsvPc1sqial5tEKLxAJQJS9WZ28oef3bhkob6C60D+1H0mMmEEVvyVA==, - } - - '@angular-eslint/template-parser@18.4.3': - resolution: - { - integrity: sha512-JZMPtEB8yNip3kg4WDEWQyObSo2Hwf+opq2ElYuwe85GQkGhfJSJ2CQYo4FSwd+c5MUQAqESNRg9QqGYauDsiw==, - } - peerDependencies: - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - - '@angular-eslint/utils@18.4.3': - resolution: - { - integrity: sha512-w0bJ9+ELAEiPBSTPPm9bvDngfu1d8JbzUhvs2vU+z7sIz/HMwUZT5S4naypj2kNN0gZYGYrW0lt+HIbW87zTAQ==, - } - peerDependencies: - '@typescript-eslint/utils': ^7.11.0 || ^8.0.0 - eslint: ^8.57.0 || ^9.0.0 - typescript: '*' - - '@angular/animations@18.2.13': - resolution: - { - integrity: sha512-rG5J5Ek5Hg+Tz2NjkNOaG6PupiNK/lPfophXpsR1t/nWujqnMWX2krahD/i6kgD+jNWNKCJCYSOVvCx/BHOtKA==, - } - engines: { node: ^18.19.1 || ^20.11.1 || >=22.0.0 } - peerDependencies: - '@angular/core': 18.2.13 - - '@angular/build@18.2.12': - resolution: - { - integrity: sha512-4Ohz+OSILoL+cCAQ4UTiCT5v6pctu3fXNoNpTEUK46OmxELk9jDITO5rNyNS7TxBn9wY69kjX5VcDf7MenquFQ==, - } - engines: - { - node: ^18.19.1 || ^20.11.1 || >=22.0.0, - npm: ^6.11.0 || ^7.5.6 || >=8.0.0, - yarn: '>= 1.13.0', - } - peerDependencies: - '@angular/compiler-cli': ^18.0.0 - '@angular/localize': ^18.0.0 - '@angular/platform-server': ^18.0.0 - '@angular/service-worker': ^18.0.0 - less: ^4.2.0 - postcss: ^8.4.0 - tailwindcss: ^2.0.0 || ^3.0.0 - typescript: '>=5.4 <5.6' - peerDependenciesMeta: - '@angular/localize': - optional: true - '@angular/platform-server': - optional: true - '@angular/service-worker': - optional: true - less: - optional: true - postcss: - optional: true - tailwindcss: - optional: true - - '@angular/cdk@18.2.14': - resolution: - { - integrity: sha512-vDyOh1lwjfVk9OqoroZAP8pf3xxKUvyl+TVR8nJxL4c5fOfUFkD7l94HaanqKSRwJcI2xiztuu92IVoHn8T33Q==, - } - peerDependencies: - '@angular/common': ^18.0.0 || ^19.0.0 - '@angular/core': ^18.0.0 || ^19.0.0 - rxjs: ^6.5.3 || ^7.4.0 - - '@angular/cli@18.2.12': - resolution: - { - integrity: sha512-xhuZ/b7IhqNw1MgXf+arWf4x+GfUSt/IwbdWU4+CO8A7h0Y46zQywouP/KUK3cMQZfVdHdciTBvlpF3vFacA6Q==, - } - engines: - { - node: ^18.19.1 || ^20.11.1 || >=22.0.0, - npm: ^6.11.0 || ^7.5.6 || >=8.0.0, - yarn: '>= 1.13.0', - } - hasBin: true - - '@angular/common@18.2.13': - resolution: - { - integrity: sha512-4ZqrNp1PoZo7VNvW+sbSc2CB2axP1sCH2wXl8B0wdjsj8JY1hF1OhuugwhpAHtGxqewed2kCXayE+ZJqSTV4jw==, - } - engines: { node: ^18.19.1 || ^20.11.1 || >=22.0.0 } - peerDependencies: - '@angular/core': 18.2.13 - rxjs: ^6.5.3 || ^7.4.0 - - '@angular/compiler-cli@18.2.13': - resolution: - { - integrity: sha512-DBSh4AQwkiJDSiVvJATRmjxf6wyUs9pwQLgaFdSlfuTRO+sdb0J2z1r3BYm8t0IqdoyXzdZq2YCH43EmyvD71g==, - } - engines: { node: ^18.19.1 || ^20.11.1 || >=22.0.0 } - hasBin: true - peerDependencies: - '@angular/compiler': 18.2.13 - typescript: '>=5.4 <5.6' - - '@angular/compiler@18.2.13': - resolution: - { - integrity: sha512-TzWcrkopyjFF+WeDr2cRe8CcHjU72KfYV3Sm2TkBkcXrkYX5sDjGWrBGrG3hRB4e4okqchrOCvm1MiTdy2vKMA==, - } - engines: { node: ^18.19.1 || ^20.11.1 || >=22.0.0 } - peerDependencies: - '@angular/core': 18.2.13 - peerDependenciesMeta: - '@angular/core': - optional: true - - '@angular/core@18.2.13': - resolution: - { - integrity: sha512-8mbWHMgO95OuFV1Ejy4oKmbe9NOJ3WazQf/f7wks8Bck7pcihd0IKhlPBNjFllbF5o+04EYSwFhEtvEgjMDClA==, - } - engines: { node: ^18.19.1 || ^20.11.1 || >=22.0.0 } - peerDependencies: - rxjs: ^6.5.3 || ^7.4.0 - zone.js: ~0.14.10 - - '@angular/forms@18.2.13': - resolution: - { - integrity: sha512-A67D867fu3DSBhdLWWZl/F5pr7v2+dRM2u3U7ZJ0ewh4a+sv+0yqWdJW+a8xIoiHxS+btGEJL2qAKJiH+MCFfg==, - } - engines: { node: ^18.19.1 || ^20.11.1 || >=22.0.0 } - peerDependencies: - '@angular/common': 18.2.13 - '@angular/core': 18.2.13 - '@angular/platform-browser': 18.2.13 - rxjs: ^6.5.3 || ^7.4.0 - - '@angular/material@18.2.14': - resolution: - { - integrity: sha512-28pxzJP49Mymt664WnCtPkKeg7kXUsQKTKGf/Kl95rNTEdTJLbnlcc8wV0rT0yQNR7kXgpfBnG7h0ETLv/iu5Q==, - } - peerDependencies: - '@angular/animations': ^18.0.0 || ^19.0.0 - '@angular/cdk': 18.2.14 - '@angular/common': ^18.0.0 || ^19.0.0 - '@angular/core': ^18.0.0 || ^19.0.0 - '@angular/forms': ^18.0.0 || ^19.0.0 - '@angular/platform-browser': ^18.0.0 || ^19.0.0 - rxjs: ^6.5.3 || ^7.4.0 - - '@angular/platform-browser-dynamic@18.2.13': - resolution: - { - integrity: sha512-kbQCf9+8EpuJC7buBxhSiwBtXvjAwAKh6MznD6zd2pyCYqfY6gfRCZQRtK59IfgVtKmEONWI9grEyNIRoTmqJg==, - } - engines: { node: ^18.19.1 || ^20.11.1 || >=22.0.0 } - peerDependencies: - '@angular/common': 18.2.13 - '@angular/compiler': 18.2.13 - '@angular/core': 18.2.13 - '@angular/platform-browser': 18.2.13 - - '@angular/platform-browser@18.2.13': - resolution: - { - integrity: sha512-tu7ZzY6qD3ATdWFzcTcsAKe7M6cJeWbT/4/bF9unyGO3XBPcNYDKoiz10+7ap2PUd0fmPwvuvTvSNJiFEBnB8Q==, - } - engines: { node: ^18.19.1 || ^20.11.1 || >=22.0.0 } - peerDependencies: - '@angular/animations': 18.2.13 - '@angular/common': 18.2.13 - '@angular/core': 18.2.13 - peerDependenciesMeta: - '@angular/animations': - optional: true - - '@angular/router@18.2.13': - resolution: - { - integrity: sha512-VKmfgi/r/CkyBq9nChQ/ptmfu0JT/8ONnLVJ5H+SkFLRYJcIRyHLKjRihMCyVm6xM5yktOdCaW73NTQrFz7+bg==, - } - engines: { node: ^18.19.1 || ^20.11.1 || >=22.0.0 } - peerDependencies: - '@angular/common': 18.2.13 - '@angular/core': 18.2.13 - '@angular/platform-browser': 18.2.13 - rxjs: ^6.5.3 || ^7.4.0 - - '@babel/code-frame@7.24.2': - resolution: - { - integrity: sha512-y5+tLQyV8pg3fsiln67BVLD1P13Eg4lh5RW9mF0zUuvLrv9uIQ4MCL+CRT+FTsBlBjcIan6PGsLcBN0m3ClUyQ==, - } - engines: { node: '>=6.9.0' } - - '@babel/code-frame@7.26.2': - resolution: - { - integrity: sha512-RJlIHRueQgwWitWgF8OdFYGZX328Ax5BCemNGlqHfplnRT9ESi8JkFlvaVYbS+UubVY6dpv87Fs2u5M29iNFVQ==, - } - engines: { node: '>=6.9.0' } - - '@babel/compat-data@7.24.4': - resolution: - { - integrity: sha512-vg8Gih2MLK+kOkHJp4gBEIkyaIi00jgWot2D9QOmmfLC8jINSOzmCLta6Bvz/JSBCqnegV0L80jhxkol5GWNfQ==, - } - engines: { node: '>=6.9.0' } - - '@babel/compat-data@7.26.2': - resolution: - { - integrity: sha512-Z0WgzSEa+aUcdiJuCIqgujCshpMWgUpgOxXotrYPSA53hA3qopNaqcJpyr0hVb1FeWdnqFA35/fUtXgBK8srQg==, - } - engines: { node: '>=6.9.0' } - - '@babel/core@7.24.5': - resolution: - { - integrity: sha512-tVQRucExLQ02Boi4vdPp49svNGcfL2GhdTCT9aldhXgCJVAI21EtRfBettiuLUwce/7r6bFdgs6JFkcdTiFttA==, - } - engines: { node: '>=6.9.0' } - - '@babel/core@7.25.2': - resolution: - { - integrity: sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==, - } - engines: { node: '>=6.9.0' } - - '@babel/generator@7.24.5': - resolution: - { - integrity: sha512-x32i4hEXvr+iI0NEoEfDKzlemF8AmtOP8CcrRaEcpzysWuoEb1KknpcvMsHKPONoKZiDuItklgWhB18xEhr9PA==, - } - engines: { node: '>=6.9.0' } - - '@babel/generator@7.25.0': - resolution: - { - integrity: sha512-3LEEcj3PVW8pW2R1SR1M89g/qrYk/m/mB/tLqn7dn4sbBUQyTqnlod+II2U4dqiGtUmkcnAmkMDralTFZttRiw==, - } - engines: { node: '>=6.9.0' } - - '@babel/generator@7.26.2': - resolution: - { - integrity: sha512-zevQbhbau95nkoxSq3f/DC/SC+EEOUZd3DYqfSkMhY2/wfSeaHV1Ew4vk8e+x8lja31IbyuUa2uQ3JONqKbysw==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-annotate-as-pure@7.22.5': - resolution: - { - integrity: sha512-LvBTxu8bQSQkcyKOU+a1btnNFQ1dMAd0R6PyW3arXes06F6QLWLIrd681bxRPIXlrMGR3XYnW9JyML7dP3qgxg==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-annotate-as-pure@7.24.7': - resolution: - { - integrity: sha512-BaDeOonYvhdKw+JoMVkAixAAJzG2jVPIwWoKBPdYuY9b452e2rPuI9QPYh3KpofZ3pW2akOmwZLOiOsHMiqRAg==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-annotate-as-pure@7.25.9': - resolution: - { - integrity: sha512-gv7320KBUFJz1RnylIg5WWYPRXKZ884AGkYpgpWW02TH66Dl+HaC1t1CKd0z3R4b6hdYEcmrNZHUmfCP+1u3/g==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': - resolution: - { - integrity: sha512-QkBXwGgaoC2GtGZRoma6kv7Szfv06khvhFav67ZExau2RaXzy8MpHSMO2PNoP2XtmQphJQRHFfg77Bq731Yizw==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9': - resolution: - { - integrity: sha512-C47lC7LIDCnz0h4vai/tpNOI95tCd5ZT3iBt/DBH5lXKHZsyNQv18yf1wIIg2ntiQNgmAvA+DgZ82iW8Qdym8g==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-compilation-targets@7.23.6': - resolution: - { - integrity: sha512-9JB548GZoQVmzrFgp8o7KxdgkTGm6xs9DW0o/Pim72UDjzr5ObUQ6ZzYPqA+g9OTS2bBQoctLJrky0RDCAWRgQ==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-compilation-targets@7.25.9': - resolution: - { - integrity: sha512-j9Db8Suy6yV/VHa4qzrj9yZfZxhLWQdVnRlXxmKLYlhWUVB1sB2G5sxuWYXk/whHD9iW76PmNzxZ4UCnTQTVEQ==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-create-class-features-plugin@7.24.5': - resolution: - { - integrity: sha512-uRc4Cv8UQWnE4NXlYTIIdM7wfFkOqlFztcC/gVXDKohKoVB3OyonfelUBaJzSwpBntZ2KYGF/9S7asCHsXwW6g==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-class-features-plugin@7.25.9': - resolution: - { - integrity: sha512-UTZQMvt0d/rSz6KI+qdu7GQze5TIajwTS++GUozlw8VBJDEOAqSXwm1WvmYEZwqdqSGQshRocPDqrt4HBZB3fQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-regexp-features-plugin@7.22.15': - resolution: - { - integrity: sha512-29FkPLFjn4TPEa3RE7GpW+qbE8tlsu3jntNYNfcGsc49LphF1PQIiD+vMZ1z1xVOKt+93khA9tc2JBs3kBjA7w==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-create-regexp-features-plugin@7.25.9': - resolution: - { - integrity: sha512-ORPNZ3h6ZRkOyAa/SaHU+XsLZr0UQzRwuDQ0cczIA17nAzZ+85G5cVkOJIj7QavLZGSe8QXUmNFxSZzjcZF9bw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-define-polyfill-provider@0.6.2': - resolution: - { - integrity: sha512-LV76g+C502biUK6AyZ3LK10vDpDyCzZnhZFXkH1L75zHPj68+qc8Zfpx2th+gzwA2MzyK+1g/3EPl62yFnVttQ==, - } - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - '@babel/helper-environment-visitor@7.22.20': - resolution: - { - integrity: sha512-zfedSIzFhat/gFhWfHtgWvlec0nqB9YEIVrpuwjruLlXfUSnA8cJB0miHKwqDnQ7d32aKo2xt88/xZptwxbfhA==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-function-name@7.23.0': - resolution: - { - integrity: sha512-OErEqsrxjZTJciZ4Oo+eoZqeW9UIiOcuYKRJA4ZAgV9myA+pOXhhmpfNCKjEH/auVfEYVFJ6y1Tc4r0eIApqiw==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-hoist-variables@7.22.5': - resolution: - { - integrity: sha512-wGjk9QZVzvknA6yKIUURb8zY3grXCcOZt+/7Wcy8O2uctxhplmUPkOdlgoNhmdVee2c92JXbf1xpMtVNbfoxRw==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-member-expression-to-functions@7.24.5': - resolution: - { - integrity: sha512-4owRteeihKWKamtqg4JmWSsEZU445xpFRXPEwp44HbgbxdWlUV1b4Agg4lkA806Lil5XM/e+FJyS0vj5T6vmcA==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-member-expression-to-functions@7.25.9': - resolution: - { - integrity: sha512-wbfdZ9w5vk0C0oyHqAJbc62+vet5prjj01jjJ8sKn3j9h3MQQlflEdXYvuqRWjHnM12coDEqiC1IRCi0U/EKwQ==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-module-imports@7.22.15': - resolution: - { - integrity: sha512-0pYVBnDKZO2fnSPCrgM/6WMc7eS20Fbok+0r88fp+YtWVLZrp4CkafFGIp+W0VKw4a22sgebPT99y+FDNMdP4w==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-module-imports@7.24.3': - resolution: - { - integrity: sha512-viKb0F9f2s0BCS22QSF308z/+1YWKV/76mwt61NBzS5izMzDPwdq1pTrzf+Li3npBWX9KdQbkeCt1jSAM7lZqg==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-module-imports@7.25.9': - resolution: - { - integrity: sha512-tnUA4RsrmflIM6W6RFTLFSXITtl0wKjgpnLgXyowocVPrbYrLUXSBXDgTs8BlbmIzIdlBySRQjINYs2BAkiLtw==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-module-transforms@7.24.5': - resolution: - { - integrity: sha512-9GxeY8c2d2mdQUP1Dye0ks3VDyIMS98kt/llQ2nUId8IsWqTF0l1LkSX0/uP7l7MCDrzXS009Hyhe2gzTiGW8A==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-module-transforms@7.26.0': - resolution: - { - integrity: sha512-xO+xu6B5K2czEnQye6BHA7DolFFmS3LB7stHZFaOLb1pAwO1HWLS8fXA+eh0A2yIvltPVmx3eNNDBJA2SLHXFw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-optimise-call-expression@7.22.5': - resolution: - { - integrity: sha512-HBwaojN0xFRx4yIvpwGqxiV2tUfl7401jlok564NgB9EHS1y6QT17FmKWm4ztqjeVdXLuC4fSvHc5ePpQjoTbw==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-optimise-call-expression@7.25.9': - resolution: - { - integrity: sha512-FIpuNaz5ow8VyrYcnXQTDRGvV6tTjkNtCK/RYNDXGSLlUD6cBuQTSw43CShGxjvfBTfcUA/r6UhUCbtYqkhcuQ==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-plugin-utils@7.24.5': - resolution: - { - integrity: sha512-xjNLDopRzW2o6ba0gKbkZq5YWEBaK3PCyTOY1K2P/O07LGMhMqlMXPxwN4S5/RhWuCobT8z0jrlKGlYmeR1OhQ==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-plugin-utils@7.25.9': - resolution: - { - integrity: sha512-kSMlyUVdWe25rEsRGviIgOWnoT/nfABVWlqt9N19/dIPWViAOW2s9wznP5tURbs/IDuNk4gPy3YdYRgH3uxhBw==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-remap-async-to-generator@7.22.20': - resolution: - { - integrity: sha512-pBGyV4uBqOns+0UvhsTO8qgl8hO89PmiDYv+/COyp1aeMcmfrfruz+/nCMFiYyFF/Knn0yfrC85ZzNFjembFTw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-remap-async-to-generator@7.25.9': - resolution: - { - integrity: sha512-IZtukuUeBbhgOcaW2s06OXTzVNJR0ybm4W5xC1opWFFJMZbwRj5LCk+ByYH7WdZPZTt8KnFwA8pvjN2yqcPlgw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-replace-supers@7.24.1': - resolution: - { - integrity: sha512-QCR1UqC9BzG5vZl8BMicmZ28RuUBnHhAMddD8yHFHDRH9lLTZ9uUPehX8ctVPT8l0TKblJidqcgUUKGVrePleQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-replace-supers@7.25.9': - resolution: - { - integrity: sha512-IiDqTOTBQy0sWyeXyGSC5TBJpGFXBkRynjBeXsvbhQFKj2viwJC76Epz35YLU1fpe/Am6Vppb7W7zM4fPQzLsQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/helper-simple-access@7.24.5': - resolution: - { - integrity: sha512-uH3Hmf5q5n7n8mz7arjUlDOCbttY/DW4DYhE6FUsjKJ/oYC1kQQUvwEQWxRwUpX9qQKRXeqLwWxrqilMrf32sQ==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-simple-access@7.25.9': - resolution: - { - integrity: sha512-c6WHXuiaRsJTyHYLJV75t9IqsmTbItYfdj99PnzYGQZkYKvan5/2jKJ7gu31J3/BJ/A18grImSPModuyG/Eo0Q==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': - resolution: - { - integrity: sha512-tK14r66JZKiC43p8Ki33yLBVJKlQDFoA8GYN67lWCDCqoL6EMMSuM9b+Iff2jHaM/RRFYl7K+iiru7hbRqNx8Q==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-skip-transparent-expression-wrappers@7.25.9': - resolution: - { - integrity: sha512-K4Du3BFa3gvyhzgPcntrkDgZzQaq6uozzcpGbOO1OEJaI+EJdqWIMTLgFgQf6lrfiDFo5FU+BxKepI9RmZqahA==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-split-export-declaration@7.24.5': - resolution: - { - integrity: sha512-5CHncttXohrHk8GWOFCcCl4oRD9fKosWlIRgWm4ql9VYioKm52Mk2xsmoohvm7f3JoiLSM5ZgJuRaf5QZZYd3Q==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-split-export-declaration@7.24.7': - resolution: - { - integrity: sha512-oy5V7pD+UvfkEATUKvIjvIAH/xCzfsFVw7ygW2SI6NClZzquT+mwdTfgfdbUiceh6iQO0CHtCPsyze/MZ2YbAA==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-string-parser@7.24.1': - resolution: - { - integrity: sha512-2ofRCjnnA9y+wk8b9IAREroeUP02KHp431N2mhKniy2yKIDKpbrHv9eXwm8cBeWQYcJmzv5qKCu65P47eCF7CQ==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-string-parser@7.25.9': - resolution: - { - integrity: sha512-4A/SCr/2KLd5jrtOMFzaKjVtAei3+2r/NChoBNoZ3EyP/+GlhoaEGoWOZUmFmoITP7zOJyHIMm+DYRd8o3PvHA==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-validator-identifier@7.24.5': - resolution: - { - integrity: sha512-3q93SSKX2TWCG30M2G2kwaKeTYgEUp5Snjuj8qm729SObL6nbtUldAi37qbxkD5gg3xnBio+f9nqpSepGZMvxA==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-validator-identifier@7.25.9': - resolution: - { - integrity: sha512-Ed61U6XJc3CVRfkERJWDz4dJwKe7iLmmJsbOGu9wSloNSFttHV0I8g6UAgb7qnK5ly5bGLPd4oXZlxCdANBOWQ==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-validator-option@7.23.5': - resolution: - { - integrity: sha512-85ttAOMLsr53VgXkTbkx8oA6YTfT4q7/HzXSLEYmjcSTJPMPQtvq1BD79Byep5xMUYbGRzEpDsjUf3dyp54IKw==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-validator-option@7.25.9': - resolution: - { - integrity: sha512-e/zv1co8pp55dNdEcCynfj9X7nyUKUXoUEwfXqaZt0omVOmDe9oOTdKStH4GmAw6zxMFs50ZayuMfHDKlO7Tfw==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-wrap-function@7.24.5': - resolution: - { - integrity: sha512-/xxzuNvgRl4/HLNKvnFwdhdgN3cpLxgLROeLDl83Yx0AJ1SGvq1ak0OszTOjDfiB8Vx03eJbeDWh9r+jCCWttw==, - } - engines: { node: '>=6.9.0' } - - '@babel/helper-wrap-function@7.25.9': - resolution: - { - integrity: sha512-ETzz9UTjQSTmw39GboatdymDq4XIQbR8ySgVrylRhPOFpsd+JrKHIuF0de7GCWmem+T4uC5z7EZguod7Wj4A4g==, - } - engines: { node: '>=6.9.0' } - - '@babel/helpers@7.24.5': - resolution: - { - integrity: sha512-CiQmBMMpMQHwM5m01YnrM6imUG1ebgYJ+fAIW4FZe6m4qHTPaRHti+R8cggAwkdz4oXhtO4/K9JWlh+8hIfR2Q==, - } - engines: { node: '>=6.9.0' } - - '@babel/helpers@7.26.0': - resolution: - { - integrity: sha512-tbhNuIxNcVb21pInl3ZSjksLCvgdZy9KwJ8brv993QtIVKJBBkYXz4q4ZbAv31GdnC+R90np23L5FbEBlthAEw==, - } - engines: { node: '>=6.9.0' } - - '@babel/highlight@7.24.5': - resolution: - { - integrity: sha512-8lLmua6AVh/8SLJRRVD6V8p73Hir9w5mJrhE+IPpILG31KKlI9iz5zmBYKcWPS59qSfgP9RaSBQSHHE81WKuEw==, - } - engines: { node: '>=6.9.0' } - - '@babel/parser@7.24.5': - resolution: - { - integrity: sha512-EOv5IK8arwh3LI47dz1b0tKUb/1uhHAnHJOrjgtQMIpu1uXd9mlFrJg9IUgGUgZ41Ch0K8REPTYpO7B76b4vJg==, - } - engines: { node: '>=6.0.0' } - hasBin: true - - '@babel/parser@7.26.2': - resolution: - { - integrity: sha512-DWMCZH9WA4Maitz2q21SRKHo9QXZxkDsbNZoVD62gusNtNBBqDg9i7uOhASfTfIGNzW+O+r7+jAlM8dwphcJKQ==, - } - engines: { node: '>=6.0.0' } - hasBin: true - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5': - resolution: - { - integrity: sha512-LdXRi1wEMTrHVR4Zc9F8OewC3vdm5h4QB6L71zy6StmYeqGi1b3ttIO8UC+BfZKcH9jdr4aI249rBkm+3+YvHw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9': - resolution: - { - integrity: sha512-ZkRyVkThtxQ/J6nv3JFYv1RYY+JT5BvU0y3k5bWrmuG4woXypRa4PXmm9RhOwodRkYFWqC0C0cqcJ4OqR7kW+g==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9': - resolution: - { - integrity: sha512-MrGRLZxLD/Zjj0gdU15dfs+HH/OXvnw/U4jJD8vpcP2CJQapPEv1IWwjc/qMg7ItBlPwSv1hRBbb7LeuANdcnw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1': - resolution: - { - integrity: sha512-y4HqEnkelJIOQGd+3g1bTeKsA5c6qM7eOn7VggGVbBc0y8MLSKHacwcIE2PplNlQSj0PqS9rrXL/nkPVK+kUNg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9': - resolution: - { - integrity: sha512-2qUwwfAFpJLZqxd02YW9btUCZHl+RFvdDkNfZwaIJrvB8Tesjsk8pEQkTvGwZXLqXUx/2oyY3ySRhm6HOXuCug==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1': - resolution: - { - integrity: sha512-Hj791Ii4ci8HqnaKHAlLNs+zaLXb0EzSDhiAWp5VNlyvCNymYfacs64pxTxbH1znW/NcArSmwpmG9IKE/TUVVQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.13.0 - - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9': - resolution: - { - integrity: sha512-6xWgLZTJXwilVjlnV7ospI3xi+sl8lN8rXXbBD6vYn3UYDlGsag8wrZkKcSI8G6KgqKP7vNFaDgeDnfAABq61g==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.13.0 - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1': - resolution: - { - integrity: sha512-m9m/fXsXLiHfwdgydIFnpk+7jlVbnvlK5B2EKiPdLUb6WX654ZaaEWJUjk8TftRbZpK0XibovlLWX4KIZhV6jw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9': - resolution: - { - integrity: sha512-aLnMXYPnzwwqhYSCyXfKkIkYgJ8zv9RK+roo9DkTXz38ynIhd9XCbN08s3MGvqL2MYGVUGdRQLL/JqBIeJhJBg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-proposal-class-properties@7.18.6': - resolution: - { - integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==, - } - engines: { node: '>=6.9.0' } - 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. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-decorators@7.24.1': - resolution: - { - integrity: sha512-zPEvzFijn+hRvJuX2Vu3KbEBN39LN3f7tW3MQO2LsIs57B26KU+kUc82BdAktS1VCM6libzh45eKGI65lg0cpA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': - resolution: - { - integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==, - } - engines: { node: '>=6.9.0' } - 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. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-optional-chaining@7.21.0': - resolution: - { - integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==, - } - engines: { node: '>=6.9.0' } - 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. - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': - resolution: - { - integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-async-generators@7.8.4': - resolution: - { - integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-bigint@7.8.3': - resolution: - { - integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-properties@7.12.13': - resolution: - { - integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-class-static-block@7.14.5': - resolution: - { - integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-decorators@7.24.1': - resolution: - { - integrity: sha512-05RJdO/cCrtVWuAaSn1tS3bH8jbsJa/Y1uD186u6J4C/1mnHFxseeuWpsqr9anvo7TUulev7tm7GDwRV+VuhDw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-dynamic-import@7.8.3': - resolution: - { - integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-export-namespace-from@7.8.3': - resolution: - { - integrity: sha512-MXf5laXo6c1IbEbegDmzGPwGNTsHZmEy6QGznu5Sh2UCWvueywb2ee+CCE4zQiZstxU9BMoQO9i6zUFSY0Kj0Q==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-assertions@7.24.1': - resolution: - { - integrity: sha512-IuwnI5XnuF189t91XbxmXeCDz3qs6iDRO7GJ++wcfgeXNs/8FmIlKcpDSXNVyuLQxlwvskmI3Ct73wUODkJBlQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-assertions@7.26.0': - resolution: - { - integrity: sha512-QCWT5Hh830hK5EQa7XzuqIkQU9tT/whqbDz7kuaZMHFl1inRRg7JnuAEOQ0Ur0QUl0NufCk1msK2BeY79Aj/eg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-attributes@7.24.1': - resolution: - { - integrity: sha512-zhQTMH0X2nVLnb04tz+s7AMuasX8U0FnpE+nHTOhSOINjWMnopoZTxtIKsd45n4GQ/HIZLyfIpoul8e2m0DnRA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-attributes@7.24.7': - resolution: - { - integrity: sha512-hbX+lKKeUMGihnK8nvKqmXBInriT3GVjzXKFriV3YC6APGxMbP8RZNFwy91+hocLXq90Mta+HshoB31802bb8A==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-attributes@7.26.0': - resolution: - { - integrity: sha512-e2dttdsJ1ZTpi3B9UYGLw41hifAubg19AtCu/2I/F1QNVclOBr1dYpTdmdyZ84Xiz43BS/tCUkMAZNLv12Pi+A==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-import-meta@7.10.4': - resolution: - { - integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-json-strings@7.8.3': - resolution: - { - integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-jsx@7.24.1': - resolution: - { - integrity: sha512-2eCtxZXf+kbkMIsXS4poTvT4Yu5rXiRa+9xGVT56raghjmBTKMpFNc9R4IDiB4emao9eO22Ox7CxuJG7BgExqA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-logical-assignment-operators@7.10.4': - resolution: - { - integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': - resolution: - { - integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-numeric-separator@7.10.4': - resolution: - { - integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-object-rest-spread@7.8.3': - resolution: - { - integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-catch-binding@7.8.3': - resolution: - { - integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-optional-chaining@7.8.3': - resolution: - { - integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-private-property-in-object@7.14.5': - resolution: - { - integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-top-level-await@7.14.5': - resolution: - { - integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-typescript@7.24.1': - resolution: - { - integrity: sha512-Yhnmvy5HZEnHUty6i++gcfH1/l68AHnItFHnaCv6hn9dNh0hQvvQJsxpi4BMBFN5DLeHBuucT/0DgzXif/OyRw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-syntax-unicode-sets-regex@7.18.6': - resolution: - { - integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-arrow-functions@7.24.1': - resolution: - { - integrity: sha512-ngT/3NkRhsaep9ck9uj2Xhv9+xB1zShY3tM3g6om4xxCELwCDN4g4Aq5dRn48+0hasAql7s2hdBOysCfNpr4fw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-arrow-functions@7.25.9': - resolution: - { - integrity: sha512-6jmooXYIwn9ca5/RylZADJ+EnSxVUS5sjeJ9UPk6RWRzXCmOJCy6dqItPJFpw2cuCangPK4OYr5uhGKcmrm5Qg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-generator-functions@7.24.3': - resolution: - { - integrity: sha512-Qe26CMYVjpQxJ8zxM1340JFNjZaF+ISWpr1Kt/jGo+ZTUzKkfw/pphEWbRCb+lmSM6k/TOgfYLvmbHkUQ0asIg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-generator-functions@7.25.0': - resolution: - { - integrity: sha512-uaIi2FdqzjpAMvVqvB51S42oC2JEVgh0LDsGfZVDysWE8LrJtQC2jvKmOqEYThKyB7bDEb7BP1GYWDm7tABA0Q==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-to-generator@7.24.1': - resolution: - { - integrity: sha512-AawPptitRXp1y0n4ilKcGbRYWfbbzFWz2NqNu7dacYDtFtz0CMjG64b3LQsb3KIgnf4/obcUL78hfaOS7iCUfw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-async-to-generator@7.24.7': - resolution: - { - integrity: sha512-SQY01PcJfmQ+4Ash7NE+rpbLFbmqA2GPIgqzxfFTL4t1FKRq4zTms/7htKpoCUI9OcFYgzqfmCdH53s6/jn5fA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoped-functions@7.24.1': - resolution: - { - integrity: sha512-TWWC18OShZutrv9C6mye1xwtam+uNi2bnTOCBUd5sZxyHOiWbU6ztSROofIMrK84uweEZC219POICK/sTYwfgg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoped-functions@7.25.9': - resolution: - { - integrity: sha512-toHc9fzab0ZfenFpsyYinOX0J/5dgJVA2fm64xPewu7CoYHWEivIWKxkK2rMi4r3yQqLnVmheMXRdG+k239CgA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoping@7.24.5': - resolution: - { - integrity: sha512-sMfBc3OxghjC95BkYrYocHL3NaOplrcaunblzwXhGmlPwpmfsxr4vK+mBBt49r+S240vahmv+kUxkeKgs+haCw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-block-scoping@7.25.9': - resolution: - { - integrity: sha512-1F05O7AYjymAtqbsFETboN1NvBdcnzMerO+zlMyJBEz6WkMdejvGWw9p05iTSjC85RLlBseHHQpYaM4gzJkBGg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-properties@7.24.1': - resolution: - { - integrity: sha512-OMLCXi0NqvJfORTaPQBwqLXHhb93wkBKZ4aNwMl6WtehO7ar+cmp+89iPEQPqxAnxsOKTaMcs3POz3rKayJ72g==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-properties@7.25.9': - resolution: - { - integrity: sha512-bbMAII8GRSkcd0h0b4X+36GksxuheLFjP65ul9w6C3KgAamI3JqErNgSrosX6ZPj+Mpim5VvEbawXxJCyEUV3Q==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-class-static-block@7.24.4': - resolution: - { - integrity: sha512-B8q7Pz870Hz/q9UgP8InNpY01CSLDSCyqX7zcRuv3FcPl87A2G17lASroHWaCtbdIcbYzOZ7kWmXFKbijMSmFg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.12.0 - - '@babel/plugin-transform-class-static-block@7.26.0': - resolution: - { - integrity: sha512-6J2APTs7BDDm+UMqP1useWqhcRAXo0WIoVj26N7kPFB6S73Lgvyka4KTZYIxtgYXiN5HTyRObA72N2iu628iTQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.12.0 - - '@babel/plugin-transform-classes@7.24.5': - resolution: - { - integrity: sha512-gWkLP25DFj2dwe9Ck8uwMOpko4YsqyfZJrOmqqcegeDYEbp7rmn4U6UQZNj08UF6MaX39XenSpKRCvpDRBtZ7Q==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-classes@7.25.9': - resolution: - { - integrity: sha512-mD8APIXmseE7oZvZgGABDyM34GUmK45Um2TXiBUt7PnuAxrgoSVf123qUzPxEr/+/BHrRn5NMZCdE2m/1F8DGg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-computed-properties@7.24.1': - resolution: - { - integrity: sha512-5pJGVIUfJpOS+pAqBQd+QMaTD2vCL/HcePooON6pDpHgRp4gNRmzyHTPIkXntwKsq3ayUFVfJaIKPw2pOkOcTw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-computed-properties@7.25.9': - resolution: - { - integrity: sha512-HnBegGqXZR12xbcTHlJ9HGxw1OniltT26J5YpfruGqtUHlz/xKf/G2ak9e+t0rVqrjXa9WOhvYPz1ERfMj23AA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-destructuring@7.24.5': - resolution: - { - integrity: sha512-SZuuLyfxvsm+Ah57I/i1HVjveBENYK9ue8MJ7qkc7ndoNjqquJiElzA7f5yaAXjyW2hKojosOTAQQRX50bPSVg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-destructuring@7.25.9': - resolution: - { - integrity: sha512-WkCGb/3ZxXepmMiX101nnGiU+1CAdut8oHyEOHxkKuS1qKpU2SMXE2uSvfz8PBuLd49V6LEsbtyPhWC7fnkgvQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dotall-regex@7.24.1': - resolution: - { - integrity: sha512-p7uUxgSoZwZ2lPNMzUkqCts3xlp8n+o05ikjy7gbtFJSt9gdU88jAmtfmOxHM14noQXBxfgzf2yRWECiNVhTCw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dotall-regex@7.25.9': - resolution: - { - integrity: sha512-t7ZQ7g5trIgSRYhI9pIJtRl64KHotutUJsh4Eze5l7olJv+mRSg4/MmbZ0tv1eeqRbdvo/+trvJD/Oc5DmW2cA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-keys@7.24.1': - resolution: - { - integrity: sha512-msyzuUnvsjsaSaocV6L7ErfNsa5nDWL1XKNnDePLgmz+WdU4w/J8+AxBMrWfi9m4IxfL5sZQKUPQKDQeeAT6lA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-keys@7.25.9': - resolution: - { - integrity: sha512-LZxhJ6dvBb/f3x8xwWIuyiAHy56nrRG3PeYTpBkkzkYRRQ6tJLu68lEF5VIqMUZiAV7a8+Tb78nEoMCMcqjXBw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9': - resolution: - { - integrity: sha512-0UfuJS0EsXbRvKnwcLjFtJy/Sxc5J5jhLHnFhy7u4zih97Hz6tJkLU+O+FMMrNZrosUPxDi6sYxJ/EA8jDiAog==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-dynamic-import@7.24.1': - resolution: - { - integrity: sha512-av2gdSTyXcJVdI+8aFZsCAtR29xJt0S5tas+Ef8NvBNmD1a+N/3ecMLeMBgfcK+xzsjdLDT6oHt+DFPyeqUbDA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-dynamic-import@7.25.9': - resolution: - { - integrity: sha512-GCggjexbmSLaFhqsojeugBpeaRIgWNTcgKVq/0qIteFEqY2A+b9QidYadrWlnbWQUrW5fn+mCvf3tr7OeBFTyg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-exponentiation-operator@7.24.1': - resolution: - { - integrity: sha512-U1yX13dVBSwS23DEAqU+Z/PkwE9/m7QQy8Y9/+Tdb8UWYaGNDYwTLi19wqIAiROr8sXVum9A/rtiH5H0boUcTw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-exponentiation-operator@7.25.9': - resolution: - { - integrity: sha512-KRhdhlVk2nObA5AYa7QMgTMTVJdfHprfpAk4DjZVtllqRg9qarilstTKEhpVjyt+Npi8ThRyiV8176Am3CodPA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-export-namespace-from@7.24.1': - resolution: - { - integrity: sha512-Ft38m/KFOyzKw2UaJFkWG9QnHPG/Q/2SkOrRk4pNBPg5IPZ+dOxcmkK5IyuBcxiNPyyYowPGUReyBvrvZs7IlQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-export-namespace-from@7.25.9': - resolution: - { - integrity: sha512-2NsEz+CxzJIVOPx2o9UsW1rXLqtChtLoVnwYHHiB04wS5sgn7mrV45fWMBX0Kk+ub9uXytVYfNP2HjbVbCB3Ww==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-for-of@7.24.1': - resolution: - { - integrity: sha512-OxBdcnF04bpdQdR3i4giHZNZQn7cm8RQKcSwA17wAAqEELo1ZOwp5FFgeptWUQXFyT9kwHo10aqqauYkRZPCAg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-for-of@7.25.9': - resolution: - { - integrity: sha512-LqHxduHoaGELJl2uhImHwRQudhCM50pT46rIBNvtT/Oql3nqiS3wOwP+5ten7NpYSXrrVLgtZU3DZmPtWZo16A==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-function-name@7.24.1': - resolution: - { - integrity: sha512-BXmDZpPlh7jwicKArQASrj8n22/w6iymRnvHYYd2zO30DbE277JO20/7yXJT3QxDPtiQiOxQBbZH4TpivNXIxA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-function-name@7.25.9': - resolution: - { - integrity: sha512-8lP+Yxjv14Vc5MuWBpJsoUCd3hD6V9DgBon2FVYL4jJgbnVQ9fTgYmonchzZJOVNgzEgbxp4OwAf6xz6M/14XA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-json-strings@7.24.1': - resolution: - { - integrity: sha512-U7RMFmRvoasscrIFy5xA4gIp8iWnWubnKkKuUGJjsuOH7GfbMkB+XZzeslx2kLdEGdOJDamEmCqOks6e8nv8DQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-json-strings@7.25.9': - resolution: - { - integrity: sha512-xoTMk0WXceiiIvsaquQQUaLLXSW1KJ159KP87VilruQm0LNNGxWzahxSS6T6i4Zg3ezp4vA4zuwiNUR53qmQAw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-literals@7.24.1': - resolution: - { - integrity: sha512-zn9pwz8U7nCqOYIiBaOxoQOtYmMODXTJnkxG4AtX8fPmnCRYWBOHD0qcpwS9e2VDSp1zNJYpdnFMIKb8jmwu6g==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-literals@7.25.9': - resolution: - { - integrity: sha512-9N7+2lFziW8W9pBl2TzaNht3+pgMIRP74zizeCSrtnSKVdUl8mAjjOP2OOVQAfZ881P2cNjDj1uAMEdeD50nuQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-logical-assignment-operators@7.24.1': - resolution: - { - integrity: sha512-OhN6J4Bpz+hIBqItTeWJujDOfNP+unqv/NJgyhlpSqgBTPm37KkMmZV6SYcOj+pnDbdcl1qRGV/ZiIjX9Iy34w==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-logical-assignment-operators@7.25.9': - resolution: - { - integrity: sha512-wI4wRAzGko551Y8eVf6iOY9EouIDTtPb0ByZx+ktDGHwv6bHFimrgJM/2T021txPZ2s4c7bqvHbd+vXG6K948Q==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-member-expression-literals@7.24.1': - resolution: - { - integrity: sha512-4ojai0KysTWXzHseJKa1XPNXKRbuUrhkOPY4rEGeR+7ChlJVKxFa3H3Bz+7tWaGKgJAXUWKOGmltN+u9B3+CVg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-member-expression-literals@7.25.9': - resolution: - { - integrity: sha512-PYazBVfofCQkkMzh2P6IdIUaCEWni3iYEerAsRWuVd8+jlM1S9S9cz1dF9hIzyoZ8IA3+OwVYIp9v9e+GbgZhA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-amd@7.24.1': - resolution: - { - integrity: sha512-lAxNHi4HVtjnHd5Rxg3D5t99Xm6H7b04hUS7EHIXcUl2EV4yl1gWdqZrNzXnSrHveL9qMdbODlLF55mvgjAfaQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-amd@7.25.9': - resolution: - { - integrity: sha512-g5T11tnI36jVClQlMlt4qKDLlWnG5pP9CSM4GhdRciTNMRgkfpo5cR6b4rGIOYPgRRuFAvwjPQ/Yk+ql4dyhbw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-commonjs@7.24.1': - resolution: - { - integrity: sha512-szog8fFTUxBfw0b98gEWPaEqF42ZUD/T3bkynW/wtgx2p/XCP55WEsb+VosKceRSd6njipdZvNogqdtI4Q0chw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-commonjs@7.25.9': - resolution: - { - integrity: sha512-dwh2Ol1jWwL2MgkCzUSOvfmKElqQcuswAZypBSUsScMXvgdT8Ekq5YA6TtqpTVWH+4903NmboMuH1o9i8Rxlyg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-systemjs@7.24.1': - resolution: - { - integrity: sha512-mqQ3Zh9vFO1Tpmlt8QPnbwGHzNz3lpNEMxQb1kAemn/erstyqw1r9KeOlOfo3y6xAnFEcOv2tSyrXfmMk+/YZA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-systemjs@7.25.9': - resolution: - { - integrity: sha512-hyss7iIlH/zLHaehT+xwiymtPOpsiwIIRlCAOwBB04ta5Tt+lNItADdlXw3jAWZ96VJ2jlhl/c+PNIQPKNfvcA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-umd@7.24.1': - resolution: - { - integrity: sha512-tuA3lpPj+5ITfcCluy6nWonSL7RvaG0AOTeAuvXqEKS34lnLzXpDb0dcP6K8jD0zWZFNDVly90AGFJPnm4fOYg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-modules-umd@7.25.9': - resolution: - { - integrity: sha512-bS9MVObUgE7ww36HEfwe6g9WakQ0KF07mQF74uuXdkoziUPfKyu/nIm663kz//e5O1nPInPFx36z7WJmJ4yNEw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5': - resolution: - { - integrity: sha512-YgLLKmS3aUBhHaxp5hi1WJTgOUb/NCuDHzGT9z9WTt3YG+CPRhJs6nprbStx6DnWM4dh6gt7SU3sZodbZ08adQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-named-capturing-groups-regex@7.25.9': - resolution: - { - integrity: sha512-oqB6WHdKTGl3q/ItQhpLSnWWOpjUJLsOCLVyeFgeTktkBSCiurvPOsyt93gibI9CmuKvTUEtWmG5VhZD+5T/KA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-new-target@7.24.1': - resolution: - { - integrity: sha512-/rurytBM34hYy0HKZQyA0nHbQgQNFm4Q/BOc9Hflxi2X3twRof7NaE5W46j4kQitm7SvACVRXsa6N/tSZxvPug==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-new-target@7.25.9': - resolution: - { - integrity: sha512-U/3p8X1yCSoKyUj2eOBIx3FOn6pElFOKvAAGf8HTtItuPyB+ZeOqfn+mvTtg9ZlOAjsPdK3ayQEjqHjU/yLeVQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-nullish-coalescing-operator@7.24.1': - resolution: - { - integrity: sha512-iQ+caew8wRrhCikO5DrUYx0mrmdhkaELgFa+7baMcVuhxIkN7oxt06CZ51D65ugIb1UWRQ8oQe+HXAVM6qHFjw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-nullish-coalescing-operator@7.25.9': - resolution: - { - integrity: sha512-ENfftpLZw5EItALAD4WsY/KUWvhUlZndm5GC7G3evUsVeSJB6p0pBeLQUnRnBCBx7zV0RKQjR9kCuwrsIrjWog==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-numeric-separator@7.24.1': - resolution: - { - integrity: sha512-7GAsGlK4cNL2OExJH1DzmDeKnRv/LXq0eLUSvudrehVA5Rgg4bIrqEUW29FbKMBRT0ztSqisv7kjP+XIC4ZMNw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-numeric-separator@7.25.9': - resolution: - { - integrity: sha512-TlprrJ1GBZ3r6s96Yq8gEQv82s8/5HnCVHtEJScUj90thHQbwe+E5MLhi2bbNHBEJuzrvltXSru+BUxHDoog7Q==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-rest-spread@7.24.5': - resolution: - { - integrity: sha512-7EauQHszLGM3ay7a161tTQH7fj+3vVM/gThlz5HpFtnygTxjrlvoeq7MPVA1Vy9Q555OB8SnAOsMkLShNkkrHA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-rest-spread@7.25.9': - resolution: - { - integrity: sha512-fSaXafEE9CVHPweLYw4J0emp1t8zYTXyzN3UuG+lylqkvYd7RMrsOQ8TYx5RF231be0vqtFC6jnx3UmpJmKBYg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-super@7.24.1': - resolution: - { - integrity: sha512-oKJqR3TeI5hSLRxudMjFQ9re9fBVUU0GICqM3J1mi8MqlhVr6hC/ZN4ttAyMuQR6EZZIY6h/exe5swqGNNIkWQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-object-super@7.25.9': - resolution: - { - integrity: sha512-Kj/Gh+Rw2RNLbCK1VAWj2U48yxxqL2x0k10nPtSdRa0O2xnHXalD0s+o1A6a0W43gJ00ANo38jxkQreckOzv5A==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-catch-binding@7.24.1': - resolution: - { - integrity: sha512-oBTH7oURV4Y+3EUrf6cWn1OHio3qG/PVwO5J03iSJmBg6m2EhKjkAu/xuaXaYwWW9miYtvbWv4LNf0AmR43LUA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-catch-binding@7.25.9': - resolution: - { - integrity: sha512-qM/6m6hQZzDcZF3onzIhZeDHDO43bkNNlOX0i8n3lR6zLbu0GN2d8qfM/IERJZYauhAHSLHy39NF0Ctdvcid7g==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-chaining@7.24.5': - resolution: - { - integrity: sha512-xWCkmwKT+ihmA6l7SSTpk8e4qQl/274iNbSKRRS8mpqFR32ksy36+a+LWY8OXCCEefF8WFlnOHVsaDI2231wBg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-optional-chaining@7.25.9': - resolution: - { - integrity: sha512-6AvV0FsLULbpnXeBjrY4dmWF8F7gf8QnvTEoO/wX/5xm/xE1Xo8oPuD3MPS+KS9f9XBEAWN7X1aWr4z9HdOr7A==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-parameters@7.24.5': - resolution: - { - integrity: sha512-9Co00MqZ2aoky+4j2jhofErthm6QVLKbpQrvz20c3CH9KQCLHyNB+t2ya4/UrRpQGR+Wrwjg9foopoeSdnHOkA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-parameters@7.25.9': - resolution: - { - integrity: sha512-wzz6MKwpnshBAiRmn4jR8LYz/g8Ksg0o80XmwZDlordjwEk9SxBzTWC7F5ef1jhbrbOW2DJ5J6ayRukrJmnr0g==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-methods@7.24.1': - resolution: - { - integrity: sha512-tGvisebwBO5em4PaYNqt4fkw56K2VALsAbAakY0FjTYqJp7gfdrgr7YX76Or8/cpik0W6+tj3rZ0uHU9Oil4tw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-methods@7.25.9': - resolution: - { - integrity: sha512-D/JUozNpQLAPUVusvqMxyvjzllRaF8/nSrP1s2YGQT/W4LHK4xxsMcHjhOGTS01mp9Hda8nswb+FblLdJornQw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-property-in-object@7.24.5': - resolution: - { - integrity: sha512-JM4MHZqnWR04jPMujQDTBVRnqxpLLpx2tkn7iPn+Hmsc0Gnb79yvRWOkvqFOx3Z7P7VxiRIR22c4eGSNj87OBQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-private-property-in-object@7.25.9': - resolution: - { - integrity: sha512-Evf3kcMqzXA3xfYJmZ9Pg1OvKdtqsDMSWBDzZOPLvHiTt36E75jLDQo5w1gtRU95Q4E5PDttrTf25Fw8d/uWLw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-property-literals@7.24.1': - resolution: - { - integrity: sha512-LetvD7CrHmEx0G442gOomRr66d7q8HzzGGr4PMHGr+5YIm6++Yke+jxj246rpvsbyhJwCLxcTn6zW1P1BSenqA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-property-literals@7.25.9': - resolution: - { - integrity: sha512-IvIUeV5KrS/VPavfSM/Iu+RE6llrHrYIKY1yfCzyO/lMXHQ+p7uGhonmGVisv6tSBSVgWzMBohTcvkC9vQcQFA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regenerator@7.24.1': - resolution: - { - integrity: sha512-sJwZBCzIBE4t+5Q4IGLaaun5ExVMRY0lYwos/jNecjMrVCygCdph3IKv0tkP5Fc87e/1+bebAmEAGBfnRD+cnw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-regenerator@7.25.9': - resolution: - { - integrity: sha512-vwDcDNsgMPDGP0nMqzahDWE5/MLcX8sv96+wfX7as7LoF/kr97Bo/7fI00lXY4wUXYfVmwIIyG80fGZ1uvt2qg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-reserved-words@7.24.1': - resolution: - { - integrity: sha512-JAclqStUfIwKN15HrsQADFgeZt+wexNQ0uLhuqvqAUFoqPMjEcFCYZBhq0LUdz6dZK/mD+rErhW71fbx8RYElg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-reserved-words@7.25.9': - resolution: - { - integrity: sha512-7DL7DKYjn5Su++4RXu8puKZm2XBPHyjWLUidaPEkCUBbE7IPcsrkRHggAOOKydH1dASWdcUBxrkOGNxUv5P3Jg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-runtime@7.24.3': - resolution: - { - integrity: sha512-J0BuRPNlNqlMTRJ72eVptpt9VcInbxO6iP3jaxr+1NPhC0UkKL+6oeX6VXMEYdADnuqmMmsBspt4d5w8Y/TCbQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-runtime@7.24.7': - resolution: - { - integrity: sha512-YqXjrk4C+a1kZjewqt+Mmu2UuV1s07y8kqcUf4qYLnoqemhR4gRQikhdAhSVJioMjVTu6Mo6pAbaypEA3jY6fw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-shorthand-properties@7.24.1': - resolution: - { - integrity: sha512-LyjVB1nsJ6gTTUKRjRWx9C1s9hE7dLfP/knKdrfeH9UPtAGjYGgxIbFfx7xyLIEWs7Xe1Gnf8EWiUqfjLhInZA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-shorthand-properties@7.25.9': - resolution: - { - integrity: sha512-MUv6t0FhO5qHnS/W8XCbHmiRWOphNufpE1IVxhK5kuN3Td9FT1x4rx4K42s3RYdMXCXpfWkGSbCSd0Z64xA7Ng==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-spread@7.24.1': - resolution: - { - integrity: sha512-KjmcIM+fxgY+KxPVbjelJC6hrH1CgtPmTvdXAfn3/a9CnWGSTY7nH4zm5+cjmWJybdcPSsD0++QssDsjcpe47g==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-spread@7.25.9': - resolution: - { - integrity: sha512-oNknIB0TbURU5pqJFVbOOFspVlrpVwo2H1+HUIsVDvp5VauGGDP1ZEvO8Nn5xyMEs3dakajOxlmkNW7kNgSm6A==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-sticky-regex@7.24.1': - resolution: - { - integrity: sha512-9v0f1bRXgPVcPrngOQvLXeGNNVLc8UjMVfebo9ka0WF3/7+aVUHmaJVT3sa0XCzEFioPfPHZiOcYG9qOsH63cw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-sticky-regex@7.25.9': - resolution: - { - integrity: sha512-WqBUSgeVwucYDP9U/xNRQam7xV8W5Zf+6Eo7T2SRVUFlhRiMNFdFz58u0KZmCVVqs2i7SHgpRnAhzRNmKfi2uA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-template-literals@7.24.1': - resolution: - { - integrity: sha512-WRkhROsNzriarqECASCNu/nojeXCDTE/F2HmRgOzi7NGvyfYGq1NEjKBK3ckLfRgGc6/lPAqP0vDOSw3YtG34g==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-template-literals@7.25.9': - resolution: - { - integrity: sha512-o97AE4syN71M/lxrCtQByzphAdlYluKPDBzDVzMmfCobUjjhAryZV0AIpRPrxN0eAkxXO6ZLEScmt+PNhj2OTw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typeof-symbol@7.24.5': - resolution: - { - integrity: sha512-UTGnhYVZtTAjdwOTzT+sCyXmTn8AhaxOS/MjG9REclZ6ULHWF9KoCZur0HSGU7hk8PdBFKKbYe6+gqdXWz84Jg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typeof-symbol@7.25.9': - resolution: - { - integrity: sha512-v61XqUMiueJROUv66BVIOi0Fv/CUuZuZMl5NkRoCVxLAnMexZ0A3kMe7vvZ0nulxMuMp0Mk6S5hNh48yki08ZA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-typescript@7.24.5': - resolution: - { - integrity: sha512-E0VWu/hk83BIFUWnsKZ4D81KXjN5L3MobvevOHErASk9IPwKHOkTgvqzvNo1yP/ePJWqqK2SpUR5z+KQbl6NVw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-escapes@7.24.1': - resolution: - { - integrity: sha512-RlkVIcWT4TLI96zM660S877E7beKlQw7Ig+wqkKBiWfj0zH5Q4h50q6er4wzZKRNSYpfo6ILJ+hrJAGSX2qcNw==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-escapes@7.25.9': - resolution: - { - integrity: sha512-s5EDrE6bW97LtxOcGj1Khcx5AaXwiMmi4toFWRDP9/y0Woo6pXC+iyPu/KuhKtfSrNFd7jJB+/fkOtZy6aIC6Q==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-property-regex@7.24.1': - resolution: - { - integrity: sha512-Ss4VvlfYV5huWApFsF8/Sq0oXnGO+jB+rijFEFugTd3cwSObUSnUi88djgR5528Csl0uKlrI331kRqe56Ov2Ng==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-property-regex@7.25.9': - resolution: - { - integrity: sha512-Jt2d8Ga+QwRluxRQ307Vlxa6dMrYEMZCgGxoPR8V52rxPyldHu3hdlHspxaqYmE7oID5+kB+UKUB/eWS+DkkWg==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-regex@7.24.1': - resolution: - { - integrity: sha512-2A/94wgZgxfTsiLaQ2E36XAOdcZmGAaEEgVmxQWwZXWkGhvoHbaqXcKnU8zny4ycpu3vNqg0L/PcCiYtHtA13g==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-regex@7.25.9': - resolution: - { - integrity: sha512-yoxstj7Rg9dlNn9UQxzk4fcNivwv4nUYz7fYXBaKxvw/lnmPuOm/ikoELygbYq68Bls3D/D+NBPHiLwZdZZ4HA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/plugin-transform-unicode-sets-regex@7.24.1': - resolution: - { - integrity: sha512-fqj4WuzzS+ukpgerpAoOnMfQXwUHFxXUZUE84oL2Kao2N8uSlvcpnAidKASgsNgzZHBsHWvcm8s9FPWUhAb8fA==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/plugin-transform-unicode-sets-regex@7.25.9': - resolution: - { - integrity: sha512-8BYqO3GeVNHtx69fdPshN3fnzUNLrWdHhk/icSwigksJGczKSizZ+Z6SBCxTs723Fr5VSNorTIK7a+R2tISvwQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0 - - '@babel/preset-env@7.24.5': - resolution: - { - integrity: sha512-UGK2ifKtcC8i5AI4cH+sbLLuLc2ktYSFJgBAXorKAsHUZmrQ1q6aQ6i3BvU24wWs2AAKqQB6kq3N9V9Gw1HiMQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-env@7.25.3': - resolution: - { - integrity: sha512-QsYW7UeAaXvLPX9tdVliMJE7MD7M6MLYVTovRTIwhoYQVFHR1rM4wO8wqAezYi3/BpSD+NzVCZ69R6smWiIi8g==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/preset-modules@0.1.6-no-external-plugins': - resolution: - { - integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - - '@babel/preset-typescript@7.24.1': - resolution: - { - integrity: sha512-1DBaMmRDpuYQBPWD8Pf/WEwCrtgRHxsZnP4mIy9G/X+hFfbI47Q2G4t1Paakld84+qsk2fSsUPMKg71jkoOOaQ==, - } - engines: { node: '>=6.9.0' } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@babel/regjsgen@0.8.0': - resolution: - { - integrity: sha512-x/rqGMdzj+fWZvCOYForTghzbtqPDZ5gPwaoNGHdgDfF2QA/XZbCBp4Moo5scrkAMPhB7z26XM/AaHuIJdgauA==, - } - - '@babel/runtime-corejs2@7.24.5': - resolution: - { - integrity: sha512-cC9jiO6s/IN+xwCHYy1AGrcFJ4bwgIwb8HX1KaoEpRsznLlO4x9eBP6AX7RIeMSWlQqEj2WHox637OS8cDq6Ew==, - } - engines: { node: '>=6.9.0' } - - '@babel/runtime@7.24.5': - resolution: - { - integrity: sha512-Nms86NXrsaeU9vbBJKni6gXiEXZ4CVpYVzEjDH9Sb8vmZ3UljyA1GSOJl/6LGPO8EHLuSF9H+IxNXHPX8QHJ4g==, - } - engines: { node: '>=6.9.0' } - - '@babel/runtime@7.24.7': - resolution: - { - integrity: sha512-UwgBRMjJP+xv857DCngvqXI3Iq6J4v0wXmwc6sapg+zyhbwmQX67LUEFrkK5tbyJ30jGuG3ZvWpBiB9LCy1kWw==, - } - engines: { node: '>=6.9.0' } - - '@babel/runtime@7.25.0': - resolution: - { - integrity: sha512-7dRy4DwXwtzBrPbZflqxnvfxLF8kdZXPkhymtDeFoFqE6ldzjQFgYTtYIFARcLEYDrqfBfYcZt1WqFxRoyC9Rw==, - } - engines: { node: '>=6.9.0' } - - '@babel/template@7.24.0': - resolution: - { - integrity: sha512-Bkf2q8lMB0AFpX0NFEqSbx1OkTHf0f+0j82mkw+ZpzBnkk7e9Ql0891vlfgi+kHwOk8tQjiQHpqh4LaSa0fKEA==, - } - engines: { node: '>=6.9.0' } - - '@babel/template@7.25.9': - resolution: - { - integrity: sha512-9DGttpmPvIxBb/2uwpVo3dqJ+O6RooAFOS+lB+xDqoE2PVCE8nfoHMdZLpfCQRLwvohzXISPZcgxt80xLfsuwg==, - } - engines: { node: '>=6.9.0' } - - '@babel/traverse@7.24.5': - resolution: - { - integrity: sha512-7aaBLeDQ4zYcUFDUD41lJc1fG8+5IU9DaNSJAgal866FGvmD5EbWQgnEC6kO1gGLsX0esNkfnJSndbTXA3r7UA==, - } - engines: { node: '>=6.9.0' } - - '@babel/traverse@7.25.9': - resolution: - { - integrity: sha512-ZCuvfwOwlz/bawvAuvcj8rrithP2/N55Tzz342AkTvq4qaWbGfmCk/tKhNaV2cthijKrPAA8SRJV5WWe7IBMJw==, - } - engines: { node: '>=6.9.0' } - - '@babel/types@7.24.5': - resolution: - { - integrity: sha512-6mQNsaLeXTw0nxYUYu+NSa4Hx4BlF1x1x8/PMFbiR+GBSr+2DkECc69b8hgy2frEodNcvPffeH8YfWd3LI6jhQ==, - } - engines: { node: '>=6.9.0' } - - '@babel/types@7.26.0': - resolution: - { - integrity: sha512-Z/yiTPj+lDVnF7lWeKCIJzaIkI0vYO87dMpZ4bg4TDrFe4XXLFWL1TbXU27gBP3QccxV9mZICCrnjnYlJjXHOA==, - } - engines: { node: '>=6.9.0' } - - '@bcoe/v8-coverage@0.2.3': - resolution: - { - integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==, - } - - '@colors/colors@1.5.0': - resolution: - { - integrity: sha512-ooWCrlZP11i8GImSjTHYHLkvFDP48nS4+204nGb1RiX/WXYHmJA2III9/e2DWVabCESdW7hBAEzHRqUn9OUVvQ==, - } - engines: { node: '>=0.1.90' } - - '@cspotcode/source-map-support@0.8.1': - resolution: - { - integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==, - } - engines: { node: '>=12' } - - '@date-io/core@3.0.0': - resolution: - { - integrity: sha512-S3j+IAQVBYNkQzchVVhX40eBkGDreBpScy9RXwTS5j2+k07+62pMVPisQ44Gq76Rqy5AOG/EZXCwBpY/jbemvA==, - } - - '@date-io/dayjs@3.0.0': - resolution: - { - integrity: sha512-vy7DSwoQiPA2L0stRqW3le7lcEBMjoMMEmbpCNkyoX3xXizKInFvhbnOBmCyusIQ7tL/WsNC4X5bVgdNWX0JLA==, - } - peerDependencies: - dayjs: ^1.8.17 - peerDependenciesMeta: - dayjs: - optional: true - - '@discoveryjs/json-ext@0.5.7': - resolution: - { - integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==, - } - engines: { node: '>=10.0.0' } - - '@discoveryjs/json-ext@0.6.1': - resolution: - { - integrity: sha512-boghen8F0Q8D+0/Q1/1r6DUEieUJ8w2a1gIknExMSHBsJFOr2+0KUfHiVYBvucPwl3+RU5PFBK833FjFCh3BhA==, - } - engines: { node: '>=14.17.0' } - - '@emotion/babel-plugin@11.11.0': - resolution: - { - integrity: sha512-m4HEDZleaaCH+XgDDsPF15Ht6wTLsgDTeR3WYj9Q/k76JtWhrJjcP4+/XlG8LGT/Rol9qUfOIztXeA84ATpqPQ==, - } - - '@emotion/cache@11.11.0': - resolution: - { - integrity: sha512-P34z9ssTCBi3e9EI1ZsWpNHcfY1r09ZO0rZbRO2ob3ZQMnFI35jB536qoXbkdesr5EUhYi22anuEJuyxifaqAQ==, - } - - '@emotion/hash@0.9.1': - resolution: - { - integrity: sha512-gJB6HLm5rYwSLI6PQa+X1t5CFGrv1J1TWG+sOyMCeKz2ojaj6Fnl/rZEspogG+cvqbt4AE/2eIyD2QfLKTBNlQ==, - } - - '@emotion/is-prop-valid@1.2.2': - resolution: - { - integrity: sha512-uNsoYd37AFmaCdXlg6EYD1KaPOaRWRByMCYzbKUX4+hhMfrxdVSelShywL4JVaAeM/eHUOSprYBQls+/neX3pw==, - } - - '@emotion/memoize@0.8.1': - resolution: - { - integrity: sha512-W2P2c/VRW1/1tLox0mVUalvnWXxavmv/Oum2aPsRcoDJuob75FC3Y8FbpfLwUegRcxINtGUMPq0tFCvYNTBXNA==, - } - - '@emotion/react@11.11.4': - resolution: - { - integrity: sha512-t8AjMlF0gHpvvxk5mAtCqR4vmxiGHCeJBaQO6gncUSdklELOgtwjerNY2yuJNfwnc6vi16U/+uMF+afIawJ9iw==, - } - peerDependencies: - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@types/react': - optional: true - - '@emotion/serialize@1.1.4': - resolution: - { - integrity: sha512-RIN04MBT8g+FnDwgvIUi8czvr1LU1alUMI05LekWB5DGyTm8cCBMCRpq3GqaiyEDRptEXOyXnvZ58GZYu4kBxQ==, - } - - '@emotion/sheet@1.2.2': - resolution: - { - integrity: sha512-0QBtGvaqtWi+nx6doRwDdBIzhNdZrXUppvTM4dtZZWEGTXL/XE/yJxLMGlDT1Gt+UHH5IX1n+jkXyytE/av7OA==, - } - - '@emotion/styled@11.11.5': - resolution: - { - integrity: sha512-/ZjjnaNKvuMPxcIiUkf/9SHoG4Q196DRl1w82hQ3WCsjo1IUR8uaGWrC6a87CrYAW0Kb/pK7hk8BnLgLRi9KoQ==, - } - peerDependencies: - '@emotion/react': ^11.0.0-rc.0 - '@types/react': '*' - react: '>=16.8.0' - peerDependenciesMeta: - '@types/react': - optional: true - - '@emotion/unitless@0.8.1': - resolution: - { - integrity: sha512-KOEGMu6dmJZtpadb476IsZBclKvILjopjUii3V+7MnXIQCYh8W3NgNcgwo21n9LXZX6EDIKvqfjYxXebDwxKmQ==, - } - - '@emotion/use-insertion-effect-with-fallbacks@1.0.1': - resolution: - { - integrity: sha512-jT/qyKZ9rzLErtrjGgdkMBn2OP8wl0G3sQlBb3YPryvKHsjvINUhVaPFfP+fpBcOkmrVOVEEHQFJ7nbj2TH2gw==, - } - peerDependencies: - react: '>=16.8.0' - - '@emotion/utils@1.2.1': - resolution: - { - integrity: sha512-Y2tGf3I+XVnajdItskUCn6LX+VUDmP6lTL4fcqsXAv43dnlbZiuW4MWQW38rW/BVWSE7Q/7+XQocmpnRYILUmg==, - } - - '@emotion/weak-memoize@0.3.1': - resolution: - { - integrity: sha512-EsBwpc7hBUJWAsNPBmJy4hxWx12v6bshQsldrVmjxJoc3isbxhOrF2IcCpaXxfvq03NwkI7sbsOLXbYuqF/8Ww==, - } - - '@esbuild/aix-ppc64@0.21.5': - resolution: - { - integrity: sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==, - } - engines: { node: '>=12' } - cpu: [ppc64] - os: [aix] - - '@esbuild/aix-ppc64@0.23.0': - resolution: - { - integrity: sha512-3sG8Zwa5fMcA9bgqB8AfWPQ+HFke6uD3h1s3RIwUNK8EG7a4buxvuFTs3j1IMs2NXAk9F30C/FF4vxRgQCcmoQ==, - } - engines: { node: '>=18' } - cpu: [ppc64] - os: [aix] - - '@esbuild/aix-ppc64@0.23.1': - resolution: - { - integrity: sha512-6VhYk1diRqrhBAqpJEdjASR/+WVRtfjpqKuNw11cLiaWpAT/Uu+nokB+UJnevzy/P9C/ty6AOe0dwueMrGh/iQ==, - } - engines: { node: '>=18' } - cpu: [ppc64] - os: [aix] - - '@esbuild/android-arm64@0.21.5': - resolution: - { - integrity: sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==, - } - engines: { node: '>=12' } - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.23.0': - resolution: - { - integrity: sha512-EuHFUYkAVfU4qBdyivULuu03FhJO4IJN9PGuABGrFy4vUuzk91P2d+npxHcFdpUnfYKy0PuV+n6bKIpHOB3prQ==, - } - engines: { node: '>=18' } - cpu: [arm64] - os: [android] - - '@esbuild/android-arm64@0.23.1': - resolution: - { - integrity: sha512-xw50ipykXcLstLeWH7WRdQuysJqejuAGPd30vd1i5zSyKK3WE+ijzHmLKxdiCMtH1pHz78rOg0BKSYOSB/2Khw==, - } - engines: { node: '>=18' } - cpu: [arm64] - os: [android] - - '@esbuild/android-arm@0.21.5': - resolution: - { - integrity: sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==, - } - engines: { node: '>=12' } - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.23.0': - resolution: - { - integrity: sha512-+KuOHTKKyIKgEEqKbGTK8W7mPp+hKinbMBeEnNzjJGyFcWsfrXjSTNluJHCY1RqhxFurdD8uNXQDei7qDlR6+g==, - } - engines: { node: '>=18' } - cpu: [arm] - os: [android] - - '@esbuild/android-arm@0.23.1': - resolution: - { - integrity: sha512-uz6/tEy2IFm9RYOyvKl88zdzZfwEfKZmnX9Cj1BHjeSGNuGLuMD1kR8y5bteYmwqKm1tj8m4cb/aKEorr6fHWQ==, - } - engines: { node: '>=18' } - cpu: [arm] - os: [android] - - '@esbuild/android-x64@0.21.5': - resolution: - { - integrity: sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==, - } - engines: { node: '>=12' } - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.23.0': - resolution: - { - integrity: sha512-WRrmKidLoKDl56LsbBMhzTTBxrsVwTKdNbKDalbEZr0tcsBgCLbEtoNthOW6PX942YiYq8HzEnb4yWQMLQuipQ==, - } - engines: { node: '>=18' } - cpu: [x64] - os: [android] - - '@esbuild/android-x64@0.23.1': - resolution: - { - integrity: sha512-nlN9B69St9BwUoB+jkyU090bru8L0NA3yFvAd7k8dNsVH8bi9a8cUAUSEcEEgTp2z3dbEDGJGfP6VUnkQnlReg==, - } - engines: { node: '>=18' } - cpu: [x64] - os: [android] - - '@esbuild/darwin-arm64@0.21.5': - resolution: - { - integrity: sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==, - } - engines: { node: '>=12' } - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.23.0': - resolution: - { - integrity: sha512-YLntie/IdS31H54Ogdn+v50NuoWF5BDkEUFpiOChVa9UnKpftgwzZRrI4J132ETIi+D8n6xh9IviFV3eXdxfow==, - } - engines: { node: '>=18' } - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-arm64@0.23.1': - resolution: - { - integrity: sha512-YsS2e3Wtgnw7Wq53XXBLcV6JhRsEq8hkfg91ESVadIrzr9wO6jJDMZnCQbHm1Guc5t/CdDiFSSfWP58FNuvT3Q==, - } - engines: { node: '>=18' } - cpu: [arm64] - os: [darwin] - - '@esbuild/darwin-x64@0.21.5': - resolution: - { - integrity: sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==, - } - engines: { node: '>=12' } - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.23.0': - resolution: - { - integrity: sha512-IMQ6eme4AfznElesHUPDZ+teuGwoRmVuuixu7sv92ZkdQcPbsNHzutd+rAfaBKo8YK3IrBEi9SLLKWJdEvJniQ==, - } - engines: { node: '>=18' } - cpu: [x64] - os: [darwin] - - '@esbuild/darwin-x64@0.23.1': - resolution: - { - integrity: sha512-aClqdgTDVPSEGgoCS8QDG37Gu8yc9lTHNAQlsztQ6ENetKEO//b8y31MMu2ZaPbn4kVsIABzVLXYLhCGekGDqw==, - } - engines: { node: '>=18' } - cpu: [x64] - os: [darwin] - - '@esbuild/freebsd-arm64@0.21.5': - resolution: - { - integrity: sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==, - } - engines: { node: '>=12' } - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.23.0': - resolution: - { - integrity: sha512-0muYWCng5vqaxobq6LB3YNtevDFSAZGlgtLoAc81PjUfiFz36n4KMpwhtAd4he8ToSI3TGyuhyx5xmiWNYZFyw==, - } - engines: { node: '>=18' } - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-arm64@0.23.1': - resolution: - { - integrity: sha512-h1k6yS8/pN/NHlMl5+v4XPfikhJulk4G+tKGFIOwURBSFzE8bixw1ebjluLOjfwtLqY0kewfjLSrO6tN2MgIhA==, - } - engines: { node: '>=18' } - cpu: [arm64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.21.5': - resolution: - { - integrity: sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==, - } - engines: { node: '>=12' } - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.23.0': - resolution: - { - integrity: sha512-XKDVu8IsD0/q3foBzsXGt/KjD/yTKBCIwOHE1XwiXmrRwrX6Hbnd5Eqn/WvDekddK21tfszBSrE/WMaZh+1buQ==, - } - engines: { node: '>=18' } - cpu: [x64] - os: [freebsd] - - '@esbuild/freebsd-x64@0.23.1': - resolution: - { - integrity: sha512-lK1eJeyk1ZX8UklqFd/3A60UuZ/6UVfGT2LuGo3Wp4/z7eRTRYY+0xOu2kpClP+vMTi9wKOfXi2vjUpO1Ro76g==, - } - engines: { node: '>=18' } - cpu: [x64] - os: [freebsd] - - '@esbuild/linux-arm64@0.21.5': - resolution: - { - integrity: sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==, - } - engines: { node: '>=12' } - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.23.0': - resolution: - { - integrity: sha512-j1t5iG8jE7BhonbsEg5d9qOYcVZv/Rv6tghaXM/Ug9xahM0nX/H2gfu6X6z11QRTMT6+aywOMA8TDkhPo8aCGw==, - } - engines: { node: '>=18' } - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm64@0.23.1': - resolution: - { - integrity: sha512-/93bf2yxencYDnItMYV/v116zff6UyTjo4EtEQjUBeGiVpMmffDNUyD9UN2zV+V3LRV3/on4xdZ26NKzn6754g==, - } - engines: { node: '>=18' } - cpu: [arm64] - os: [linux] - - '@esbuild/linux-arm@0.21.5': - resolution: - { - integrity: sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==, - } - engines: { node: '>=12' } - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.23.0': - resolution: - { - integrity: sha512-SEELSTEtOFu5LPykzA395Mc+54RMg1EUgXP+iw2SJ72+ooMwVsgfuwXo5Fn0wXNgWZsTVHwY2cg4Vi/bOD88qw==, - } - engines: { node: '>=18' } - cpu: [arm] - os: [linux] - - '@esbuild/linux-arm@0.23.1': - resolution: - { - integrity: sha512-CXXkzgn+dXAPs3WBwE+Kvnrf4WECwBdfjfeYHpMeVxWE0EceB6vhWGShs6wi0IYEqMSIzdOF1XjQ/Mkm5d7ZdQ==, - } - engines: { node: '>=18' } - cpu: [arm] - os: [linux] - - '@esbuild/linux-ia32@0.21.5': - resolution: - { - integrity: sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==, - } - engines: { node: '>=12' } - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.23.0': - resolution: - { - integrity: sha512-P7O5Tkh2NbgIm2R6x1zGJJsnacDzTFcRWZyTTMgFdVit6E98LTxO+v8LCCLWRvPrjdzXHx9FEOA8oAZPyApWUA==, - } - engines: { node: '>=18' } - cpu: [ia32] - os: [linux] - - '@esbuild/linux-ia32@0.23.1': - resolution: - { - integrity: sha512-VTN4EuOHwXEkXzX5nTvVY4s7E/Krz7COC8xkftbbKRYAl96vPiUssGkeMELQMOnLOJ8k3BY1+ZY52tttZnHcXQ==, - } - engines: { node: '>=18' } - cpu: [ia32] - os: [linux] - - '@esbuild/linux-loong64@0.21.5': - resolution: - { - integrity: sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==, - } - engines: { node: '>=12' } - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.23.0': - resolution: - { - integrity: sha512-InQwepswq6urikQiIC/kkx412fqUZudBO4SYKu0N+tGhXRWUqAx+Q+341tFV6QdBifpjYgUndV1hhMq3WeJi7A==, - } - engines: { node: '>=18' } - cpu: [loong64] - os: [linux] - - '@esbuild/linux-loong64@0.23.1': - resolution: - { - integrity: sha512-Vx09LzEoBa5zDnieH8LSMRToj7ir/Jeq0Gu6qJ/1GcBq9GkfoEAoXvLiW1U9J1qE/Y/Oyaq33w5p2ZWrNNHNEw==, - } - engines: { node: '>=18' } - cpu: [loong64] - os: [linux] - - '@esbuild/linux-mips64el@0.21.5': - resolution: - { - integrity: sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==, - } - engines: { node: '>=12' } - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.23.0': - resolution: - { - integrity: sha512-J9rflLtqdYrxHv2FqXE2i1ELgNjT+JFURt/uDMoPQLcjWQA5wDKgQA4t/dTqGa88ZVECKaD0TctwsUfHbVoi4w==, - } - engines: { node: '>=18' } - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-mips64el@0.23.1': - resolution: - { - integrity: sha512-nrFzzMQ7W4WRLNUOU5dlWAqa6yVeI0P78WKGUo7lg2HShq/yx+UYkeNSE0SSfSure0SqgnsxPvmAUu/vu0E+3Q==, - } - engines: { node: '>=18' } - cpu: [mips64el] - os: [linux] - - '@esbuild/linux-ppc64@0.21.5': - resolution: - { - integrity: sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==, - } - engines: { node: '>=12' } - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.23.0': - resolution: - { - integrity: sha512-cShCXtEOVc5GxU0fM+dsFD10qZ5UpcQ8AM22bYj0u/yaAykWnqXJDpd77ublcX6vdDsWLuweeuSNZk4yUxZwtw==, - } - engines: { node: '>=18' } - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-ppc64@0.23.1': - resolution: - { - integrity: sha512-dKN8fgVqd0vUIjxuJI6P/9SSSe/mB9rvA98CSH2sJnlZ/OCZWO1DJvxj8jvKTfYUdGfcq2dDxoKaC6bHuTlgcw==, - } - engines: { node: '>=18' } - cpu: [ppc64] - os: [linux] - - '@esbuild/linux-riscv64@0.21.5': - resolution: - { - integrity: sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==, - } - engines: { node: '>=12' } - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.23.0': - resolution: - { - integrity: sha512-HEtaN7Y5UB4tZPeQmgz/UhzoEyYftbMXrBCUjINGjh3uil+rB/QzzpMshz3cNUxqXN7Vr93zzVtpIDL99t9aRw==, - } - engines: { node: '>=18' } - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-riscv64@0.23.1': - resolution: - { - integrity: sha512-5AV4Pzp80fhHL83JM6LoA6pTQVWgB1HovMBsLQ9OZWLDqVY8MVobBXNSmAJi//Csh6tcY7e7Lny2Hg1tElMjIA==, - } - engines: { node: '>=18' } - cpu: [riscv64] - os: [linux] - - '@esbuild/linux-s390x@0.21.5': - resolution: - { - integrity: sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==, - } - engines: { node: '>=12' } - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.23.0': - resolution: - { - integrity: sha512-WDi3+NVAuyjg/Wxi+o5KPqRbZY0QhI9TjrEEm+8dmpY9Xir8+HE/HNx2JoLckhKbFopW0RdO2D72w8trZOV+Wg==, - } - engines: { node: '>=18' } - cpu: [s390x] - os: [linux] - - '@esbuild/linux-s390x@0.23.1': - resolution: - { - integrity: sha512-9ygs73tuFCe6f6m/Tb+9LtYxWR4c9yg7zjt2cYkjDbDpV/xVn+68cQxMXCjUpYwEkze2RcU/rMnfIXNRFmSoDw==, - } - engines: { node: '>=18' } - cpu: [s390x] - os: [linux] - - '@esbuild/linux-x64@0.21.5': - resolution: - { - integrity: sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==, - } - engines: { node: '>=12' } - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.23.0': - resolution: - { - integrity: sha512-a3pMQhUEJkITgAw6e0bWA+F+vFtCciMjW/LPtoj99MhVt+Mfb6bbL9hu2wmTZgNd994qTAEw+U/r6k3qHWWaOQ==, - } - engines: { node: '>=18' } - cpu: [x64] - os: [linux] - - '@esbuild/linux-x64@0.23.1': - resolution: - { - integrity: sha512-EV6+ovTsEXCPAp58g2dD68LxoP/wK5pRvgy0J/HxPGB009omFPv3Yet0HiaqvrIrgPTBuC6wCH1LTOY91EO5hQ==, - } - engines: { node: '>=18' } - cpu: [x64] - os: [linux] - - '@esbuild/netbsd-x64@0.21.5': - resolution: - { - integrity: sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==, - } - engines: { node: '>=12' } - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.23.0': - resolution: - { - integrity: sha512-cRK+YDem7lFTs2Q5nEv/HHc4LnrfBCbH5+JHu6wm2eP+d8OZNoSMYgPZJq78vqQ9g+9+nMuIsAO7skzphRXHyw==, - } - engines: { node: '>=18' } - cpu: [x64] - os: [netbsd] - - '@esbuild/netbsd-x64@0.23.1': - resolution: - { - integrity: sha512-aevEkCNu7KlPRpYLjwmdcuNz6bDFiE7Z8XC4CPqExjTvrHugh28QzUXVOZtiYghciKUacNktqxdpymplil1beA==, - } - engines: { node: '>=18' } - cpu: [x64] - os: [netbsd] - - '@esbuild/openbsd-arm64@0.23.0': - resolution: - { - integrity: sha512-suXjq53gERueVWu0OKxzWqk7NxiUWSUlrxoZK7usiF50C6ipColGR5qie2496iKGYNLhDZkPxBI3erbnYkU0rQ==, - } - engines: { node: '>=18' } - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-arm64@0.23.1': - resolution: - { - integrity: sha512-3x37szhLexNA4bXhLrCC/LImN/YtWis6WXr1VESlfVtVeoFJBRINPJ3f0a/6LV8zpikqoUg4hyXw0sFBt5Cr+Q==, - } - engines: { node: '>=18' } - cpu: [arm64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.21.5': - resolution: - { - integrity: sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==, - } - engines: { node: '>=12' } - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.23.0': - resolution: - { - integrity: sha512-6p3nHpby0DM/v15IFKMjAaayFhqnXV52aEmv1whZHX56pdkK+MEaLoQWj+H42ssFarP1PcomVhbsR4pkz09qBg==, - } - engines: { node: '>=18' } - cpu: [x64] - os: [openbsd] - - '@esbuild/openbsd-x64@0.23.1': - resolution: - { - integrity: sha512-aY2gMmKmPhxfU+0EdnN+XNtGbjfQgwZj43k8G3fyrDM/UdZww6xrWxmDkuz2eCZchqVeABjV5BpildOrUbBTqA==, - } - engines: { node: '>=18' } - cpu: [x64] - os: [openbsd] - - '@esbuild/sunos-x64@0.21.5': - resolution: - { - integrity: sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==, - } - engines: { node: '>=12' } - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.23.0': - resolution: - { - integrity: sha512-BFelBGfrBwk6LVrmFzCq1u1dZbG4zy/Kp93w2+y83Q5UGYF1d8sCzeLI9NXjKyujjBBniQa8R8PzLFAUrSM9OA==, - } - engines: { node: '>=18' } - cpu: [x64] - os: [sunos] - - '@esbuild/sunos-x64@0.23.1': - resolution: - { - integrity: sha512-RBRT2gqEl0IKQABT4XTj78tpk9v7ehp+mazn2HbUeZl1YMdaGAQqhapjGTCe7uw7y0frDi4gS0uHzhvpFuI1sA==, - } - engines: { node: '>=18' } - cpu: [x64] - os: [sunos] - - '@esbuild/win32-arm64@0.21.5': - resolution: - { - integrity: sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==, - } - engines: { node: '>=12' } - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.23.0': - resolution: - { - integrity: sha512-lY6AC8p4Cnb7xYHuIxQ6iYPe6MfO2CC43XXKo9nBXDb35krYt7KGhQnOkRGar5psxYkircpCqfbNDB4uJbS2jQ==, - } - engines: { node: '>=18' } - cpu: [arm64] - os: [win32] - - '@esbuild/win32-arm64@0.23.1': - resolution: - { - integrity: sha512-4O+gPR5rEBe2FpKOVyiJ7wNDPA8nGzDuJ6gN4okSA1gEOYZ67N8JPk58tkWtdtPeLz7lBnY6I5L3jdsr3S+A6A==, - } - engines: { node: '>=18' } - cpu: [arm64] - os: [win32] - - '@esbuild/win32-ia32@0.21.5': - resolution: - { - integrity: sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==, - } - engines: { node: '>=12' } - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.23.0': - resolution: - { - integrity: sha512-7L1bHlOTcO4ByvI7OXVI5pNN6HSu6pUQq9yodga8izeuB1KcT2UkHaH6118QJwopExPn0rMHIseCTx1CRo/uNA==, - } - engines: { node: '>=18' } - cpu: [ia32] - os: [win32] - - '@esbuild/win32-ia32@0.23.1': - resolution: - { - integrity: sha512-BcaL0Vn6QwCwre3Y717nVHZbAa4UBEigzFm6VdsVdT/MbZ38xoj1X9HPkZhbmaBGUD1W8vxAfffbDe8bA6AKnQ==, - } - engines: { node: '>=18' } - cpu: [ia32] - os: [win32] - - '@esbuild/win32-x64@0.21.5': - resolution: - { - integrity: sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==, - } - engines: { node: '>=12' } - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.23.0': - resolution: - { - integrity: sha512-Arm+WgUFLUATuoxCJcahGuk6Yj9Pzxd6l11Zb/2aAuv5kWWvvfhLFo2fni4uSK5vzlUdCGZ/BdV5tH8klj8p8g==, - } - engines: { node: '>=18' } - cpu: [x64] - os: [win32] - - '@esbuild/win32-x64@0.23.1': - resolution: - { - integrity: sha512-BHpFFeslkWrXWyUPnbKm+xYYVYruCinGcftSBaa8zoF9hZO4BcSCFUvHVTtzpIY6YzUnYtuEhZ+C9iEXjxnasg==, - } - engines: { node: '>=18' } - cpu: [x64] - os: [win32] - - '@eslint-community/eslint-utils@4.4.0': - resolution: - { - integrity: sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 - - '@eslint-community/regexpp@4.10.0': - resolution: - { - integrity: sha512-Cu96Sd2By9mCNTx2iyKOmq10v22jUVQv0lQnlGNy16oE9589yE+QADPbrMGCkA51cKZSg3Pu/aTJVTGfL/qjUA==, - } - engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } - - '@eslint/eslintrc@2.1.4': - resolution: - { - integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - '@eslint/js@8.57.0': - resolution: - { - integrity: sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - '@floating-ui/core@1.6.2': - resolution: - { - integrity: sha512-+2XpQV9LLZeanU4ZevzRnGFg2neDeKHgFLjP6YLW+tly0IvrhqT4u8enLGjLH3qeh85g19xY5rsAusfwTdn5lg==, - } - - '@floating-ui/dom@1.6.5': - resolution: - { - integrity: sha512-Nsdud2X65Dz+1RHjAIP0t8z5e2ff/IRbei6BqFrl1urT8sDVzM1HMQ+R0XcU5ceRfyO3I6ayeqIfh+6Wb8LGTw==, - } - - '@floating-ui/react-dom@2.1.0': - resolution: - { - integrity: sha512-lNzj5EQmEKn5FFKc04+zasr09h/uX8RtJRNj5gUXsSQIXHVWTVh+hVAg1vOMCexkX8EgvemMvIFpQfkosnVNyA==, - } - peerDependencies: - react: '>=16.8.0' - react-dom: '>=16.8.0' - - '@floating-ui/utils@0.2.2': - resolution: - { - integrity: sha512-J4yDIIthosAsRZ5CPYP/jQvUAQtlZTTD/4suA08/FEnlxqW3sKS9iAhgsa9VYLZ6vDHn/ixJgIqRQPotoBjxIw==, - } - - '@fortawesome/fontawesome-free@6.6.0': - resolution: - { - integrity: sha512-60G28ke/sXdtS9KZCpZSHHkCbdsOGEhIUGlwq6yhY74UpTiToIh8np7A8yphhM4BWsvNFtIvLpi4co+h9Mr9Ow==, - } - engines: { node: '>=6' } - - '@gar/promisify@1.1.3': - resolution: - { - integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==, - } - - '@hapi/hoek@9.3.0': - resolution: - { - integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==, - } - - '@hapi/topo@5.1.0': - resolution: - { - integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==, - } - - '@humanwhocodes/config-array@0.11.14': - resolution: - { - integrity: sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==, - } - engines: { node: '>=10.10.0' } - - '@humanwhocodes/module-importer@1.0.1': - resolution: - { - integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, - } - engines: { node: '>=12.22' } - - '@humanwhocodes/object-schema@2.0.3': - resolution: - { - integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==, - } - deprecated: Use @eslint/object-schema instead - - '@hutson/parse-repository-url@3.0.2': - resolution: - { - integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==, - } - engines: { node: '>=6.9.0' } - - '@inquirer/checkbox@2.5.0': - resolution: - { - integrity: sha512-sMgdETOfi2dUHT8r7TT1BTKOwNvdDGFDXYWtQ2J69SvlYNntk9I/gJe7r5yvMwwsuKnYbuRs3pNhx4tgNck5aA==, - } - engines: { node: '>=18' } - - '@inquirer/confirm@3.1.22': - resolution: - { - integrity: sha512-gsAKIOWBm2Q87CDfs9fEo7wJT3fwWIJfnDGMn9Qy74gBnNFOACDNfhUzovubbJjWnKLGBln7/NcSmZwj5DuEXg==, - } - engines: { node: '>=18' } - - '@inquirer/confirm@3.2.0': - resolution: - { - integrity: sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==, - } - engines: { node: '>=18' } - - '@inquirer/core@9.2.1': - resolution: - { - integrity: sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==, - } - engines: { node: '>=18' } - - '@inquirer/editor@2.2.0': - resolution: - { - integrity: sha512-9KHOpJ+dIL5SZli8lJ6xdaYLPPzB8xB9GZItg39MBybzhxA16vxmszmQFrRwbOA918WA2rvu8xhDEg/p6LXKbw==, - } - engines: { node: '>=18' } - - '@inquirer/expand@2.3.0': - resolution: - { - integrity: sha512-qnJsUcOGCSG1e5DTOErmv2BPQqrtT6uzqn1vI/aYGiPKq+FgslGZmtdnXbhuI7IlT7OByDoEEqdnhUnVR2hhLw==, - } - engines: { node: '>=18' } - - '@inquirer/figures@1.0.8': - resolution: - { - integrity: sha512-tKd+jsmhq21AP1LhexC0pPwsCxEhGgAkg28byjJAd+xhmIs8LUX8JbUc3vBf3PhLxWiB5EvyBE5X7JSPAqMAqg==, - } - engines: { node: '>=18' } - - '@inquirer/input@2.3.0': - resolution: - { - integrity: sha512-XfnpCStx2xgh1LIRqPXrTNEEByqQWoxsWYzNRSEUxJ5c6EQlhMogJ3vHKu8aXuTacebtaZzMAHwEL0kAflKOBw==, - } - engines: { node: '>=18' } - - '@inquirer/number@1.1.0': - resolution: - { - integrity: sha512-ilUnia/GZUtfSZy3YEErXLJ2Sljo/mf9fiKc08n18DdwdmDbOzRcTv65H1jjDvlsAuvdFXf4Sa/aL7iw/NanVA==, - } - engines: { node: '>=18' } - - '@inquirer/password@2.2.0': - resolution: - { - integrity: sha512-5otqIpgsPYIshqhgtEwSspBQE40etouR8VIxzpJkv9i0dVHIpyhiivbkH9/dGiMLdyamT54YRdGJLfl8TFnLHg==, - } - engines: { node: '>=18' } - - '@inquirer/prompts@5.3.8': - resolution: - { - integrity: sha512-b2BudQY/Si4Y2a0PdZZL6BeJtl8llgeZa7U2j47aaJSCeAl1e4UI7y8a9bSkO3o/ZbZrgT5muy/34JbsjfIWxA==, - } - engines: { node: '>=18' } - - '@inquirer/rawlist@2.3.0': - resolution: - { - integrity: sha512-zzfNuINhFF7OLAtGHfhwOW2TlYJyli7lOUoJUXw/uyklcwalV6WRXBXtFIicN8rTRK1XTiPWB4UY+YuW8dsnLQ==, - } - engines: { node: '>=18' } - - '@inquirer/search@1.1.0': - resolution: - { - integrity: sha512-h+/5LSj51dx7hp5xOn4QFnUaKeARwUCLs6mIhtkJ0JYPBLmEYjdHSYh7I6GrLg9LwpJ3xeX0FZgAG1q0QdCpVQ==, - } - engines: { node: '>=18' } - - '@inquirer/select@2.5.0': - resolution: - { - integrity: sha512-YmDobTItPP3WcEI86GvPo+T2sRHkxxOq/kXmsBjHS5BVXUgvgZ5AfJjkvQvZr03T81NnI3KrrRuMzeuYUQRFOA==, - } - engines: { node: '>=18' } - - '@inquirer/type@1.5.5': - resolution: - { - integrity: sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==, - } - engines: { node: '>=18' } - - '@inquirer/type@2.0.0': - resolution: - { - integrity: sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==, - } - engines: { node: '>=18' } - - '@isaacs/cliui@8.0.2': - resolution: - { - integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==, - } - engines: { node: '>=12' } - - '@isaacs/string-locale-compare@1.1.0': - resolution: - { - integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==, - } - - '@istanbuljs/load-nyc-config@1.1.0': - resolution: - { - integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==, - } - engines: { node: '>=8' } - - '@istanbuljs/nyc-config-typescript@1.0.2': - resolution: - { - integrity: sha512-iKGIyMoyJuFnJRSVTZ78POIRvNnwZaWIf8vG4ZS3rQq58MMDrqEX2nnzx0R28V2X8JvmKYiqY9FP2hlJsm8A0w==, - } - engines: { node: '>=8' } - peerDependencies: - nyc: '>=15' - - '@istanbuljs/schema@0.1.3': - resolution: - { - integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==, - } - engines: { node: '>=8' } - - '@jest/console@27.5.1': - resolution: - { - integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==, - } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - '@jest/core@27.5.1': - resolution: - { - integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==, - } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/environment@27.5.1': - resolution: - { - integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==, - } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - '@jest/fake-timers@27.5.1': - resolution: - { - integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==, - } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - '@jest/globals@27.5.1': - resolution: - { - integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==, - } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - '@jest/reporters@27.5.1': - resolution: - { - integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==, - } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - - '@jest/schemas@29.6.3': - resolution: - { - integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==, - } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - - '@jest/source-map@27.5.1': - resolution: - { - integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==, - } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - '@jest/test-result@27.5.1': - resolution: - { - integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==, - } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - '@jest/test-sequencer@27.5.1': - resolution: - { - integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==, - } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - '@jest/transform@27.5.1': - resolution: - { - integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==, - } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - '@jest/types@27.5.1': - resolution: - { - integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==, - } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - '@jridgewell/gen-mapping@0.3.5': - resolution: - { - integrity: sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==, - } - engines: { node: '>=6.0.0' } - - '@jridgewell/resolve-uri@3.1.2': - resolution: - { - integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, - } - engines: { node: '>=6.0.0' } - - '@jridgewell/set-array@1.2.1': - resolution: - { - integrity: sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==, - } - engines: { node: '>=6.0.0' } - - '@jridgewell/source-map@0.3.6': - resolution: - { - integrity: sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==, - } - - '@jridgewell/sourcemap-codec@1.4.15': - resolution: - { - integrity: sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==, - } - - '@jridgewell/sourcemap-codec@1.5.0': - resolution: - { - integrity: sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==, - } - - '@jridgewell/trace-mapping@0.3.25': - resolution: - { - integrity: sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==, - } - - '@jridgewell/trace-mapping@0.3.9': - resolution: - { - integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==, - } - - '@jsonjoy.com/base64@1.1.2': - resolution: - { - integrity: sha512-q6XAnWQDIMA3+FTiOYajoYqySkO+JSat0ytXGSuRdq9uXE7o92gzuQwQM14xaCRlBLGq3v5miDGC4vkVTn54xA==, - } - engines: { node: '>=10.0' } - peerDependencies: - tslib: '2' - - '@jsonjoy.com/json-pack@1.1.0': - resolution: - { - integrity: sha512-zlQONA+msXPPwHWZMKFVS78ewFczIll5lXiVPwFPCZUsrOKdxc2AvxU1HoNBmMRhqDZUR9HkC3UOm+6pME6Xsg==, - } - engines: { node: '>=10.0' } - peerDependencies: - tslib: '2' - - '@jsonjoy.com/util@1.5.0': - resolution: - { - integrity: sha512-ojoNsrIuPI9g6o8UxhraZQSyF2ByJanAY4cTFbc8Mf2AXEF4aQRGY1dJxyJpuyav8r9FGflEt/Ff3u5Nt6YMPA==, - } - engines: { node: '>=10.0' } - peerDependencies: - tslib: '2' - - '@leichtgewicht/ip-codec@2.0.5': - resolution: - { - integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==, - } - - '@lerna/child-process@6.6.2': - resolution: - { - integrity: sha512-QyKIWEnKQFnYu2ey+SAAm1A5xjzJLJJj3bhIZd3QKyXKKjaJ0hlxam/OsWSltxTNbcyH1jRJjC6Cxv31usv0Ag==, - } - engines: { node: ^14.17.0 || >=16.0.0 } - - '@lerna/create@6.6.2': - resolution: - { - integrity: sha512-xQ+1Y7D+9etvUlE+unhG/TwmM6XBzGIdFBaNoW8D8kyOa9M2Jf3vdEtAxVa7mhRz66CENfhL/+I/QkVaa7pwbQ==, - } - engines: { node: ^14.17.0 || >=16.0.0 } - - '@lerna/legacy-package-management@6.6.2': - resolution: - { - integrity: sha512-0hZxUPKnHwehUO2xC4ldtdX9bW0W1UosxebDIQlZL2STnZnA2IFmIk2lJVUyFW+cmTPQzV93jfS0i69T9Z+teg==, - } - engines: { node: ^14.17.0 || >=16.0.0 } - - '@listr2/prompt-adapter-inquirer@2.0.15': - resolution: - { - integrity: sha512-MZrGem/Ujjd4cPTLYDfCZK2iKKeiO/8OX13S6jqxldLs0Prf2aGqVlJ77nMBqMv7fzqgXEgjrNHLXcKR8l9lOg==, - } - engines: { node: '>=18.0.0' } - peerDependencies: - '@inquirer/prompts': '>= 3 < 6' - - '@lmdb/lmdb-darwin-arm64@3.0.13': - resolution: - { - integrity: sha512-uiKPB0Fv6WEEOZjruu9a6wnW/8jrjzlZbxXscMB8kuCJ1k6kHpcBnuvaAWcqhbI7rqX5GKziwWEdD+wi2gNLfA==, - } - cpu: [arm64] - os: [darwin] - - '@lmdb/lmdb-darwin-x64@3.0.13': - resolution: - { - integrity: sha512-bEVIIfK5mSQoG1R19qA+fJOvCB+0wVGGnXHT3smchBVahYBdlPn2OsZZKzlHWfb1E+PhLBmYfqB5zQXFP7hJig==, - } - cpu: [x64] - os: [darwin] - - '@lmdb/lmdb-linux-arm64@3.0.13': - resolution: - { - integrity: sha512-afbVrsMgZ9dUTNUchFpj5VkmJRxvht/u335jUJ7o23YTbNbnpmXif3VKQGCtnjSh+CZaqm6N3CPG8KO3zwyZ1Q==, - } - cpu: [arm64] - os: [linux] - - '@lmdb/lmdb-linux-arm@3.0.13': - resolution: - { - integrity: sha512-Yml1KlMzOnXj/tnW7yX8U78iAzTk39aILYvCPbqeewAq1kSzl+w59k/fiVkTBfvDi/oW/5YRxL+Fq+Y1Fr1r2Q==, - } - cpu: [arm] - os: [linux] - - '@lmdb/lmdb-linux-x64@3.0.13': - resolution: - { - integrity: sha512-vOtxu0xC0SLdQ2WRXg8Qgd8T32ak4SPqk5zjItRszrJk2BdeXqfGxBJbP7o4aOvSPSmSSv46Lr1EP4HXU8v7Kg==, - } - cpu: [x64] - os: [linux] - - '@lmdb/lmdb-win32-x64@3.0.13': - resolution: - { - integrity: sha512-UCrMJQY/gJnOl3XgbWRZZUvGGBuKy6i0YNSptgMzHBjs+QYDYR1Mt/RLTOPy4fzzves65O1EDmlL//OzEqoLlA==, - } - cpu: [x64] - os: [win32] - - '@mapbox/node-pre-gyp@1.0.11': - resolution: - { - integrity: sha512-Yhlar6v9WQgUp/He7BdgzOz8lqMQ8sU+jkCq7Wx8Myc5YFJLbEe7lgui/V7G1qB1DJykHSGwreceSaD60Y0PUQ==, - } - hasBin: true - - '@mdi/font@7.4.47': - resolution: - { - integrity: sha512-43MtGpd585SNzHZPcYowu/84Vz2a2g31TvPMTm9uTiCSWzaheQySUcSyUH/46fPnuPQWof2yd0pGBtzee/IQWw==, - } - - '@microsoft/api-extractor-model@7.28.13': - resolution: - { - integrity: sha512-39v/JyldX4MS9uzHcdfmjjfS6cYGAoXV+io8B5a338pkHiSt+gy2eXQ0Q7cGFJ7quSa1VqqlMdlPrB6sLR/cAw==, - } - - '@microsoft/api-extractor@7.43.0': - resolution: - { - integrity: sha512-GFhTcJpB+MI6FhvXEI9b2K0snulNLWHqC/BbcJtyNYcKUiw7l3Lgis5ApsYncJ0leALX7/of4XfmXk+maT111w==, - } - hasBin: true - - '@microsoft/tsdoc-config@0.16.2': - resolution: - { - integrity: sha512-OGiIzzoBLgWWR0UdRJX98oYO+XKGf7tiK4Zk6tQ/E4IJqGCe7dvkTvgDZV5cFJUzLGDOjeAXrnZoA6QkVySuxw==, - } - - '@microsoft/tsdoc@0.14.2': - resolution: - { - integrity: sha512-9b8mPpKrfeGRuhFH5iO1iwCLeIIsV6+H1sRfxbkoGXIyQE2BTsPd9zqSqQJ+pv5sJ/hT5M1zvOFL02MnEezFug==, - } - - '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': - resolution: - { - integrity: sha512-QZHtlVgbAdy2zAqNA9Gu1UpIuI8Xvsd1v8ic6B2pZmeFnFcMWiPLfWXh7TVw4eGEZ/C9TH281KwhVoeQUKbyjw==, - } - cpu: [arm64] - os: [darwin] - - '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': - resolution: - { - integrity: sha512-mdzd3AVzYKuUmiWOQ8GNhl64/IoFGol569zNRdkLReh6LRLHOXxU4U8eq0JwaD8iFHdVGqSy4IjFL4reoWCDFw==, - } - cpu: [x64] - os: [darwin] - - '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': - resolution: - { - integrity: sha512-YxQL+ax0XqBJDZiKimS2XQaf+2wDGVa1enVRGzEvLLVFeqa5kx2bWbtcSXgsxjQB7nRqqIGFIcLteF/sHeVtQg==, - } - cpu: [arm64] - os: [linux] - - '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': - resolution: - { - integrity: sha512-fg0uy/dG/nZEXfYilKoRe7yALaNmHoYeIoJuJ7KJ+YyU2bvY8vPv27f7UKhGRpY6euFYqEVhxCFZgAUNQBM3nw==, - } - cpu: [arm] - os: [linux] - - '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': - resolution: - { - integrity: sha512-cvwNfbP07pKUfq1uH+S6KJ7dT9K8WOE4ZiAcsrSes+UY55E/0jLYc+vq+DO7jlmqRb5zAggExKm0H7O/CBaesg==, - } - cpu: [x64] - os: [linux] - - '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': - resolution: - { - integrity: sha512-x0fWaQtYp4E6sktbsdAqnehxDgEc/VwM7uLsRCYWaiGu0ykYdZPiS8zCWdnjHwyiumousxfBm4SO31eXqwEZhQ==, - } - cpu: [x64] - os: [win32] - - '@mui/base@5.0.0-beta.40': - resolution: - { - integrity: sha512-I/lGHztkCzvwlXpjD2+SNmvNQvB4227xBXhISPjEaJUXGImOQ9f3D2Yj/T3KasSI/h0MLWy74X0J6clhPmsRbQ==, - } - engines: { node: '>=12.0.0' } - 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 - - '@mui/base@5.0.0-beta.6': - resolution: - { - integrity: sha512-jcHy6HwOX7KzRhRtL8nvIvUlxvLx2Fl6NMRCyUSQSvMTyfou9kndekz0H4HJaXvG1Y4WEifk23RYedOlrD1kEQ==, - } - engines: { node: '>=12.0.0' } - 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 - - '@mui/core-downloads-tracker@5.15.18': - resolution: - { - integrity: sha512-/9pVk+Al8qxAjwFUADv4BRZgMpZM4m5E+2Q/20qhVPuIJWqKp4Ie4tGExac6zu93rgPTYVQGgu+1vjiT0E+cEw==, - } - - '@mui/icons-material@5.15.18': - resolution: - { - integrity: sha512-jGhyw02TSLM0NgW+MDQRLLRUD/K4eN9rlK2pTBTL1OtzyZmQ8nB060zK1wA0b7cVrIiG+zyrRmNAvGWXwm2N9Q==, - } - engines: { node: '>=12.0.0' } - peerDependencies: - '@mui/material': ^5.0.0 - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/material@5.13.7': - resolution: - { - integrity: sha512-+n453jDDm88zZM3b5YK29nZ7gXY+s+rryH9ovDbhmfSkOlFtp+KSqbXy5cTaC/UlDqDM7sYYJGq8BmJov3v9Tg==, - } - engines: { node: '>=12.0.0' } - 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 - - '@mui/private-theming@5.15.14': - resolution: - { - integrity: sha512-UH0EiZckOWcxiXLX3Jbb0K7rC8mxTr9L9l6QhOZxYc4r8FHUkefltV9VDGLrzCaWh30SQiJvAEd7djX3XXY6Xw==, - } - engines: { node: '>=12.0.0' } - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/private-theming@5.15.20': - resolution: - { - integrity: sha512-BK8F94AIqSrnaPYXf2KAOjGZJgWfvqAVQ2gVR3EryvQFtuBnG6RwodxrCvd3B48VuMy6Wsk897+lQMUxJyk+6g==, - } - engines: { node: '>=12.0.0' } - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/styled-engine@5.15.14': - resolution: - { - integrity: sha512-RILkuVD8gY6PvjZjqnWhz8fu68dVkqhM5+jYWfB5yhlSQKg+2rHkmEwm75XIeAqI3qwOndK6zELK5H6Zxn4NHw==, - } - engines: { node: '>=12.0.0' } - 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 - - '@mui/system@5.15.15': - resolution: - { - integrity: sha512-aulox6N1dnu5PABsfxVGOZffDVmlxPOVgj56HrUnJE8MCSh8lOvvkd47cebIVQQYAjpwieXQXiDPj5pwM40jTQ==, - } - engines: { node: '>=12.0.0' } - 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 - - '@mui/system@5.15.20': - resolution: - { - integrity: sha512-LoMq4IlAAhxzL2VNUDBTQxAb4chnBe8JvRINVNDiMtHE2PiPOoHlhOPutSxEbaL5mkECPVWSv6p8JEV+uykwIA==, - } - engines: { node: '>=12.0.0' } - 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 - - '@mui/types@7.2.14': - resolution: - { - integrity: sha512-MZsBZ4q4HfzBsywtXgM1Ksj6HDThtiwmOKUXH1pKYISI9gAVXCNHNpo7TlGoGrBaYWZTdNoirIN7JsQcQUjmQQ==, - } - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/utils@5.15.14': - resolution: - { - integrity: sha512-0lF/7Hh/ezDv5X7Pry6enMsbYyGKjADzvHyo3Qrc/SSlTsQ1VkbDMbH0m2t3OR5iIVLwMoxwM7yGd+6FCMtTFA==, - } - engines: { node: '>=12.0.0' } - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/utils@5.15.20': - resolution: - { - integrity: sha512-mAbYx0sovrnpAu1zHc3MDIhPqL8RPVC5W5xcO1b7PiSCJPtckIZmBkp8hefamAvUiAV8gpfMOM6Zb+eSisbI2A==, - } - engines: { node: '>=12.0.0' } - peerDependencies: - '@types/react': ^17.0.0 || ^18.0.0 - react: ^17.0.0 || ^18.0.0 - peerDependenciesMeta: - '@types/react': - optional: true - - '@mui/x-date-pickers@7.7.1': - resolution: - { - integrity: sha512-p7/TY8QcdQd6RelNqzW5q89GeUFctvZnDHTfQVEC0l0nAy7ArE6u21uNF8QWGrijZoJXCM+OlIRzlZADaUPpWA==, - } - engines: { node: '>=14.0.0' } - peerDependencies: - '@emotion/react': ^11.9.0 - '@emotion/styled': ^11.8.1 - '@mui/material': ^5.15.14 - date-fns: ^2.25.0 || ^3.2.0 - date-fns-jalali: ^2.13.0-0 || ^3.2.0-0 - dayjs: ^1.10.7 - luxon: ^3.0.2 - moment: ^2.29.4 - moment-hijri: ^2.1.2 - moment-jalaali: ^0.7.4 || ^0.8.0 || ^0.9.0 || ^0.10.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 - date-fns: - optional: true - date-fns-jalali: - optional: true - dayjs: - optional: true - luxon: - optional: true - moment: - optional: true - moment-hijri: - optional: true - moment-jalaali: - optional: true - - '@ngtools/webpack@18.2.12': - resolution: - { - integrity: sha512-FFJAwtWbtpncMOVNuULPBwFJB7GSjiUwO93eGTzRp8O4EPQ8lCQeFbezQm/NP34+T0+GBLGzPSuQT+muob8YKw==, - } - engines: - { - node: ^18.19.1 || ^20.11.1 || >=22.0.0, - npm: ^6.11.0 || ^7.5.6 || >=8.0.0, - yarn: '>= 1.13.0', - } - peerDependencies: - '@angular/compiler-cli': ^18.0.0 - typescript: '>=5.4 <5.6' - webpack: ^5.54.0 - - '@node-ipc/js-queue@2.0.3': - resolution: - { - integrity: sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==, - } - engines: { node: '>=1.0.0' } - - '@nodelib/fs.scandir@2.1.5': - resolution: - { - integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, - } - engines: { node: '>= 8' } - - '@nodelib/fs.stat@2.0.5': - resolution: - { - integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, - } - engines: { node: '>= 8' } - - '@nodelib/fs.walk@1.2.8': - resolution: - { - integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, - } - engines: { node: '>= 8' } - - '@npmcli/agent@2.2.2': - resolution: - { - integrity: sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - '@npmcli/arborist@6.2.3': - resolution: - { - integrity: sha512-lpGOC2ilSJXcc2zfW9QtukcCTcMbl3fVI0z4wvFB2AFIl0C+Q6Wv7ccrpdrQa8rvJ1ZVuc6qkX7HVTyKlzGqKA==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - hasBin: true - - '@npmcli/fs@2.1.2': - resolution: - { - integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==, - } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - - '@npmcli/fs@3.1.1': - resolution: - { - integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - '@npmcli/git@4.1.0': - resolution: - { - integrity: sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - '@npmcli/git@5.0.7': - resolution: - { - integrity: sha512-WaOVvto604d5IpdCRV2KjQu8PzkfE96d50CQGKgywXh2GxXmDeUO5EWcBC4V57uFyrNqx83+MewuJh3WTR3xPA==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - '@npmcli/installed-package-contents@2.1.0': - resolution: - { - integrity: sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - hasBin: true - - '@npmcli/map-workspaces@3.0.6': - resolution: - { - integrity: sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - '@npmcli/metavuln-calculator@5.0.1': - resolution: - { - integrity: sha512-qb8Q9wIIlEPj3WeA1Lba91R4ZboPL0uspzV0F9uwP+9AYMVB2zOoa7Pbk12g6D2NHAinSbHh6QYmGuRyHZ874Q==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - '@npmcli/move-file@2.0.1': - resolution: - { - integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==, - } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - deprecated: This functionality has been moved to @npmcli/fs - - '@npmcli/name-from-folder@2.0.0': - resolution: - { - integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - '@npmcli/node-gyp@2.0.0': - resolution: - { - integrity: sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==, - } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - - '@npmcli/node-gyp@3.0.0': - resolution: - { - integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - '@npmcli/package-json@3.1.1': - resolution: - { - integrity: sha512-+UW0UWOYFKCkvszLoTwrYGrjNrT8tI5Ckeb/h+Z1y1fsNJEctl7HmerA5j2FgmoqFaLI2gsA1X9KgMFqx/bRmA==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - '@npmcli/package-json@5.1.0': - resolution: - { - integrity: sha512-1aL4TuVrLS9sf8quCLerU3H9J4vtCtgu8VauYozrmEyU57i/EdKleCnsQ7vpnABIH6c9mnTxcH5sFkO3BlV8wQ==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - '@npmcli/promise-spawn@3.0.0': - resolution: - { - integrity: sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==, - } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - - '@npmcli/promise-spawn@6.0.2': - resolution: - { - integrity: sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - '@npmcli/promise-spawn@7.0.2': - resolution: - { - integrity: sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - '@npmcli/query@3.1.0': - resolution: - { - integrity: sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - '@npmcli/redact@2.0.1': - resolution: - { - integrity: sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - '@npmcli/run-script@4.1.7': - resolution: - { - integrity: sha512-WXr/MyM4tpKA4BotB81NccGAv8B48lNH0gRoILucbcAhTQXLCoi6HflMV3KdXubIqvP9SuLsFn68Z7r4jl+ppw==, - } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - - '@npmcli/run-script@6.0.2': - resolution: - { - integrity: sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - '@npmcli/run-script@8.1.0': - resolution: - { - integrity: sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - '@nrwl/cli@15.9.7': - resolution: - { - integrity: sha512-1jtHBDuJzA57My5nLzYiM372mJW0NY6rFKxlWt5a0RLsAZdPTHsd8lE3Gs9XinGC1jhXbruWmhhnKyYtZvX/zA==, - } - - '@nrwl/devkit@15.9.7': - resolution: - { - integrity: sha512-Sb7Am2TMT8AVq8e+vxOlk3AtOA2M0qCmhBzoM1OJbdHaPKc0g0UgSnWRml1kPGg5qfPk72tWclLoZJ5/ut0vTg==, - } - peerDependencies: - nx: '>= 14.1 <= 16' - - '@nrwl/nx-darwin-arm64@15.9.7': - resolution: - { - integrity: sha512-aBUgnhlkrgC0vu0fK6eb9Vob7eFnkuknrK+YzTjmLrrZwj7FGNAeyGXSlyo1dVokIzjVKjJg2saZZ0WQbfuCJw==, - } - engines: { node: '>= 10' } - cpu: [arm64] - os: [darwin] - - '@nrwl/nx-darwin-x64@15.9.7': - resolution: - { - integrity: sha512-L+elVa34jhGf1cmn38Z0sotQatmLovxoASCIw5r1CBZZeJ5Tg7Y9nOwjRiDixZxNN56hPKXm6xl9EKlVHVeKlg==, - } - engines: { node: '>= 10' } - cpu: [x64] - os: [darwin] - - '@nrwl/nx-linux-arm-gnueabihf@15.9.7': - resolution: - { - integrity: sha512-pqmfqqEUGFu6PmmHKyXyUw1Al0Ki8PSaR0+ndgCAb1qrekVDGDfznJfaqxN0JSLeolPD6+PFtLyXNr9ZyPFlFg==, - } - engines: { node: '>= 10' } - cpu: [arm] - os: [linux] - - '@nrwl/nx-linux-arm64-gnu@15.9.7': - resolution: - { - integrity: sha512-NYOa/eRrqmM+In5g3M0rrPVIS9Z+q6fvwXJYf/KrjOHqqan/KL+2TOfroA30UhcBrwghZvib7O++7gZ2hzwOnA==, - } - engines: { node: '>= 10' } - cpu: [arm64] - os: [linux] - - '@nrwl/nx-linux-arm64-musl@15.9.7': - resolution: - { - integrity: sha512-zyStqjEcmbvLbejdTOrLUSEdhnxNtdQXlmOuymznCzYUEGRv+4f7OAepD3yRoR0a/57SSORZmmGQB7XHZoYZJA==, - } - engines: { node: '>= 10' } - cpu: [arm64] - os: [linux] - - '@nrwl/nx-linux-x64-gnu@15.9.7': - resolution: - { - integrity: sha512-saNK5i2A8pKO3Il+Ejk/KStTApUpWgCxjeUz9G+T8A+QHeDloZYH2c7pU/P3jA9QoNeKwjVO9wYQllPL9loeVg==, - } - engines: { node: '>= 10' } - cpu: [x64] - os: [linux] - - '@nrwl/nx-linux-x64-musl@15.9.7': - resolution: - { - integrity: sha512-extIUThYN94m4Vj4iZggt6hhMZWQSukBCo8pp91JHnDcryBg7SnYmnikwtY1ZAFyyRiNFBLCKNIDFGkKkSrZ9Q==, - } - engines: { node: '>= 10' } - cpu: [x64] - os: [linux] - - '@nrwl/nx-win32-arm64-msvc@15.9.7': - resolution: - { - integrity: sha512-GSQ54hJ5AAnKZb4KP4cmBnJ1oC4ILxnrG1mekxeM65c1RtWg9NpBwZ8E0gU3xNrTv8ZNsBeKi/9UhXBxhsIh8A==, - } - engines: { node: '>= 10' } - cpu: [arm64] - os: [win32] - - '@nrwl/nx-win32-x64-msvc@15.9.7': - resolution: - { - integrity: sha512-x6URof79RPd8AlapVbPefUD3ynJZpmah3tYaYZ9xZRMXojVtEHV8Qh5vysKXQ1rNYJiiB8Ah6evSKWLbAH60tw==, - } - engines: { node: '>= 10' } - cpu: [x64] - os: [win32] - - '@nrwl/tao@15.9.7': - resolution: - { - integrity: sha512-OBnHNvQf3vBH0qh9YnvBQQWyyFZ+PWguF6dJ8+1vyQYlrLVk/XZ8nJ4ukWFb+QfPv/O8VBmqaofaOI9aFC4yTw==, - } - hasBin: true - - '@octokit/auth-token@3.0.4': - resolution: - { - integrity: sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==, - } - engines: { node: '>= 14' } - - '@octokit/core@4.2.4': - resolution: - { - integrity: sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==, - } - engines: { node: '>= 14' } - - '@octokit/endpoint@7.0.6': - resolution: - { - integrity: sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==, - } - engines: { node: '>= 14' } - - '@octokit/graphql@5.0.6': - resolution: - { - integrity: sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==, - } - engines: { node: '>= 14' } - - '@octokit/openapi-types@12.11.0': - resolution: - { - integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==, - } - - '@octokit/openapi-types@14.0.0': - resolution: - { - integrity: sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==, - } - - '@octokit/openapi-types@18.1.1': - resolution: - { - integrity: sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==, - } - - '@octokit/plugin-enterprise-rest@6.0.1': - resolution: - { - integrity: sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==, - } - - '@octokit/plugin-paginate-rest@3.1.0': - resolution: - { - integrity: sha512-+cfc40pMzWcLkoDcLb1KXqjX0jTGYXjKuQdFQDc6UAknISJHnZTiBqld6HDwRJvD4DsouDKrWXNbNV0lE/3AXA==, - } - engines: { node: '>= 14' } - peerDependencies: - '@octokit/core': '>=4' - - '@octokit/plugin-request-log@1.0.4': - resolution: - { - integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==, - } - peerDependencies: - '@octokit/core': '>=3' - - '@octokit/plugin-rest-endpoint-methods@6.8.1': - resolution: - { - integrity: sha512-QrlaTm8Lyc/TbU7BL/8bO49vp+RZ6W3McxxmmQTgYxf2sWkO8ZKuj4dLhPNJD6VCUW1hetCmeIM0m6FTVpDiEg==, - } - engines: { node: '>= 14' } - peerDependencies: - '@octokit/core': '>=3' - - '@octokit/request-error@3.0.3': - resolution: - { - integrity: sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==, - } - engines: { node: '>= 14' } - - '@octokit/request@6.2.8': - resolution: - { - integrity: sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==, - } - engines: { node: '>= 14' } - - '@octokit/rest@19.0.3': - resolution: - { - integrity: sha512-5arkTsnnRT7/sbI4fqgSJ35KiFaN7zQm0uQiQtivNQLI8RQx8EHwJCajcTUwmaCMNDg7tdCvqAnc7uvHHPxrtQ==, - } - engines: { node: '>= 14' } - - '@octokit/types@6.41.0': - resolution: - { - integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==, - } - - '@octokit/types@8.2.1': - resolution: - { - integrity: sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==, - } - - '@octokit/types@9.3.2': - resolution: - { - integrity: sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==, - } - - '@one-ini/wasm@0.1.1': - resolution: - { - integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==, - } - - '@parcel/watcher@2.0.4': - resolution: - { - integrity: sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==, - } - engines: { node: '>= 10.0.0' } - - '@pkgjs/parseargs@0.11.0': - resolution: - { - integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, - } - engines: { node: '>=14' } - - '@pkgr/core@0.1.1': - resolution: - { - integrity: sha512-cq8o4cWH0ibXh9VGi5P20Tu9XF/0fFXl9EUinr9QfTM7a7p0oTA4iJRCQWppXR1Pg8dSM0UCItCkPwsk9qWWYA==, - } - engines: { node: ^12.20.0 || ^14.18.0 || >=16.0.0 } - - '@polka/url@1.0.0-next.25': - resolution: - { - integrity: sha512-j7P6Rgr3mmtdkeDGTe0E/aYyWEWVtc5yFXtHCRHs28/jptDEWfaVOc5T7cblqy1XKPPfCxJc/8DwQ5YgLOZOVQ==, - } - - '@popperjs/core@2.11.8': - resolution: - { - integrity: sha512-P1st0aksCrn9sGZhp8GMYwBnQsbvAWsZAX44oXNNvLHGqAOcoVxmjZiohstwQ7SqKnbR47akdNi+uleWD8+g6A==, - } - - '@rollup/plugin-alias@3.1.9': - resolution: - { - integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==, - } - engines: { node: '>=8.0.0' } - peerDependencies: - rollup: ^1.20.0||^2.0.0 - - '@rollup/plugin-commonjs@23.0.7': - resolution: - { - integrity: sha512-hsSD5Qzyuat/swzrExGG5l7EuIlPhwTsT7KwKbSCQzIcJWjRxiimi/0tyMYY2bByitNb3i1p+6JWEDGa0NvT0Q==, - } - engines: { node: '>=14.0.0' } - peerDependencies: - rollup: ^2.68.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-inject@5.0.5': - resolution: - { - integrity: sha512-2+DEJbNBoPROPkgTDNe8/1YXWcqxbN5DTjASVIOx8HS+pITXushyNiBV56RB08zuptzz8gT3YfkqriTBVycepg==, - } - engines: { node: '>=14.0.0' } - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-json@5.0.2': - resolution: - { - integrity: sha512-D1CoOT2wPvadWLhVcmpkDnesTzjhNIQRWLsc3fA49IFOP2Y84cFOOJ+nKGYedvXHKUsPeq07HR4hXpBBr+CHlA==, - } - engines: { node: '>=14.0.0' } - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-json@6.1.0': - resolution: - { - integrity: sha512-EGI2te5ENk1coGeADSIwZ7G2Q8CJS2sF120T7jLw4xFw9n7wIOXHo+kIYRAoVpJAN+kmqZSoO3Fp4JtoNF4ReA==, - } - engines: { node: '>=14.0.0' } - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-node-resolve@15.2.3': - resolution: - { - integrity: sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==, - } - engines: { node: '>=14.0.0' } - peerDependencies: - rollup: ^2.78.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/plugin-replace@5.0.5': - resolution: - { - integrity: sha512-rYO4fOi8lMaTg/z5Jb+hKnrHHVn8j2lwkqwyS4kTRhKyWOLf2wST2sWXr4WzWiTcoHTp2sTjqUbqIj2E39slKQ==, - } - engines: { node: '>=14.0.0' } - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/pluginutils@4.2.1': - resolution: - { - integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==, - } - engines: { node: '>= 8.0.0' } - - '@rollup/pluginutils@5.1.0': - resolution: - { - integrity: sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==, - } - engines: { node: '>=14.0.0' } - peerDependencies: - rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 - peerDependenciesMeta: - rollup: - optional: true - - '@rollup/rollup-android-arm-eabi@4.21.0': - resolution: - { - integrity: sha512-WTWD8PfoSAJ+qL87lE7votj3syLavxunWhzCnx3XFxFiI/BA/r3X7MUM8dVrH8rb2r4AiO8jJsr3ZjdaftmnfA==, - } - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm-eabi@4.22.4': - resolution: - { - integrity: sha512-Fxamp4aEZnfPOcGA8KSNEohV8hX7zVHOemC8jVBoBUHu5zpJK/Eu3uJwt6BMgy9fkvzxDaurgj96F/NiLukF2w==, - } - cpu: [arm] - os: [android] - - '@rollup/rollup-android-arm64@4.21.0': - resolution: - { - integrity: sha512-a1sR2zSK1B4eYkiZu17ZUZhmUQcKjk2/j9Me2IDjk1GHW7LB5Z35LEzj9iJch6gtUfsnvZs1ZNyDW2oZSThrkA==, - } - cpu: [arm64] - os: [android] - - '@rollup/rollup-android-arm64@4.22.4': - resolution: - { - integrity: sha512-VXoK5UMrgECLYaMuGuVTOx5kcuap1Jm8g/M83RnCHBKOqvPPmROFJGQaZhGccnsFtfXQ3XYa4/jMCJvZnbJBdA==, - } - cpu: [arm64] - os: [android] - - '@rollup/rollup-darwin-arm64@4.21.0': - resolution: - { - integrity: sha512-zOnKWLgDld/svhKO5PD9ozmL6roy5OQ5T4ThvdYZLpiOhEGY+dp2NwUmxK0Ld91LrbjrvtNAE0ERBwjqhZTRAA==, - } - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-arm64@4.22.4': - resolution: - { - integrity: sha512-xMM9ORBqu81jyMKCDP+SZDhnX2QEVQzTcC6G18KlTQEzWK8r/oNZtKuZaCcHhnsa6fEeOBionoyl5JsAbE/36Q==, - } - cpu: [arm64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.21.0': - resolution: - { - integrity: sha512-7doS8br0xAkg48SKE2QNtMSFPFUlRdw9+votl27MvT46vo44ATBmdZdGysOevNELmZlfd+NEa0UYOA8f01WSrg==, - } - cpu: [x64] - os: [darwin] - - '@rollup/rollup-darwin-x64@4.22.4': - resolution: - { - integrity: sha512-aJJyYKQwbHuhTUrjWjxEvGnNNBCnmpHDvrb8JFDbeSH3m2XdHcxDd3jthAzvmoI8w/kSjd2y0udT+4okADsZIw==, - } - cpu: [x64] - os: [darwin] - - '@rollup/rollup-linux-arm-gnueabihf@4.21.0': - resolution: - { - integrity: sha512-pWJsfQjNWNGsoCq53KjMtwdJDmh/6NubwQcz52aEwLEuvx08bzcy6tOUuawAOncPnxz/3siRtd8hiQ32G1y8VA==, - } - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-gnueabihf@4.22.4': - resolution: - { - integrity: sha512-j63YtCIRAzbO+gC2L9dWXRh5BFetsv0j0va0Wi9epXDgU/XUi5dJKo4USTttVyK7fGw2nPWK0PbAvyliz50SCQ==, - } - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.21.0': - resolution: - { - integrity: sha512-efRIANsz3UHZrnZXuEvxS9LoCOWMGD1rweciD6uJQIx2myN3a8Im1FafZBzh7zk1RJ6oKcR16dU3UPldaKd83w==, - } - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm-musleabihf@4.22.4': - resolution: - { - integrity: sha512-dJnWUgwWBX1YBRsuKKMOlXCzh2Wu1mlHzv20TpqEsfdZLb3WoJW2kIEsGwLkroYf24IrPAvOT/ZQ2OYMV6vlrg==, - } - cpu: [arm] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.21.0': - resolution: - { - integrity: sha512-ZrPhydkTVhyeGTW94WJ8pnl1uroqVHM3j3hjdquwAcWnmivjAwOYjTEAuEDeJvGX7xv3Z9GAvrBkEzCgHq9U1w==, - } - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-gnu@4.22.4': - resolution: - { - integrity: sha512-AdPRoNi3NKVLolCN/Sp4F4N1d98c4SBnHMKoLuiG6RXgoZ4sllseuGioszumnPGmPM2O7qaAX/IJdeDU8f26Aw==, - } - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.21.0': - resolution: - { - integrity: sha512-cfaupqd+UEFeURmqNP2eEvXqgbSox/LHOyN9/d2pSdV8xTrjdg3NgOFJCtc1vQ/jEke1qD0IejbBfxleBPHnPw==, - } - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-arm64-musl@4.22.4': - resolution: - { - integrity: sha512-Gl0AxBtDg8uoAn5CCqQDMqAx22Wx22pjDOjBdmG0VIWX3qUBHzYmOKh8KXHL4UpogfJ14G4wk16EQogF+v8hmA==, - } - cpu: [arm64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.21.0': - resolution: - { - integrity: sha512-ZKPan1/RvAhrUylwBXC9t7B2hXdpb/ufeu22pG2psV7RN8roOfGurEghw1ySmX/CmDDHNTDDjY3lo9hRlgtaHg==, - } - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-powerpc64le-gnu@4.22.4': - resolution: - { - integrity: sha512-3aVCK9xfWW1oGQpTsYJJPF6bfpWfhbRnhdlyhak2ZiyFLDaayz0EP5j9V1RVLAAxlmWKTDfS9wyRyY3hvhPoOg==, - } - cpu: [ppc64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.21.0': - resolution: - { - integrity: sha512-H1eRaCwd5E8eS8leiS+o/NqMdljkcb1d6r2h4fKSsCXQilLKArq6WS7XBLDu80Yz+nMqHVFDquwcVrQmGr28rg==, - } - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-riscv64-gnu@4.22.4': - resolution: - { - integrity: sha512-ePYIir6VYnhgv2C5Xe9u+ico4t8sZWXschR6fMgoPUK31yQu7hTEJb7bCqivHECwIClJfKgE7zYsh1qTP3WHUA==, - } - cpu: [riscv64] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.21.0': - resolution: - { - integrity: sha512-zJ4hA+3b5tu8u7L58CCSI0A9N1vkfwPhWd/puGXwtZlsB5bTkwDNW/+JCU84+3QYmKpLi+XvHdmrlwUwDA6kqw==, - } - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-s390x-gnu@4.22.4': - resolution: - { - integrity: sha512-GqFJ9wLlbB9daxhVlrTe61vJtEY99/xB3C8e4ULVsVfflcpmR6c8UZXjtkMA6FhNONhj2eA5Tk9uAVw5orEs4Q==, - } - cpu: [s390x] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.21.0': - resolution: - { - integrity: sha512-e2hrvElFIh6kW/UNBQK/kzqMNY5mO+67YtEh9OA65RM5IJXYTWiXjX6fjIiPaqOkBthYF1EqgiZ6OXKcQsM0hg==, - } - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-gnu@4.22.4': - resolution: - { - integrity: sha512-87v0ol2sH9GE3cLQLNEy0K/R0pz1nvg76o8M5nhMR0+Q+BBGLnb35P0fVz4CQxHYXaAOhE8HhlkaZfsdUOlHwg==, - } - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.21.0': - resolution: - { - integrity: sha512-1vvmgDdUSebVGXWX2lIcgRebqfQSff0hMEkLJyakQ9JQUbLDkEaMsPTLOmyccyC6IJ/l3FZuJbmrBw/u0A0uCQ==, - } - cpu: [x64] - os: [linux] - - '@rollup/rollup-linux-x64-musl@4.22.4': - resolution: - { - integrity: sha512-UV6FZMUgePDZrFjrNGIWzDo/vABebuXBhJEqrHxrGiU6HikPy0Z3LfdtciIttEUQfuDdCn8fqh7wiFJjCNwO+g==, - } - cpu: [x64] - os: [linux] - - '@rollup/rollup-win32-arm64-msvc@4.21.0': - resolution: - { - integrity: sha512-s5oFkZ/hFcrlAyBTONFY1TWndfyre1wOMwU+6KCpm/iatybvrRgmZVM+vCFwxmC5ZhdlgfE0N4XorsDpi7/4XQ==, - } - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-arm64-msvc@4.22.4': - resolution: - { - integrity: sha512-BjI+NVVEGAXjGWYHz/vv0pBqfGoUH0IGZ0cICTn7kB9PyjrATSkX+8WkguNjWoj2qSr1im/+tTGRaY+4/PdcQw==, - } - cpu: [arm64] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.21.0': - resolution: - { - integrity: sha512-G9+TEqRnAA6nbpqyUqgTiopmnfgnMkR3kMukFBDsiyy23LZvUCpiUwjTRx6ezYCjJODXrh52rBR9oXvm+Fp5wg==, - } - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-ia32-msvc@4.22.4': - resolution: - { - integrity: sha512-SiWG/1TuUdPvYmzmYnmd3IEifzR61Tragkbx9D3+R8mzQqDBz8v+BvZNDlkiTtI9T15KYZhP0ehn3Dld4n9J5g==, - } - cpu: [ia32] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.21.0': - resolution: - { - integrity: sha512-2jsCDZwtQvRhejHLfZ1JY6w6kEuEtfF9nzYsZxzSlNVKDX+DpsDJ+Rbjkm74nvg2rdx0gwBS+IMdvwJuq3S9pQ==, - } - cpu: [x64] - os: [win32] - - '@rollup/rollup-win32-x64-msvc@4.22.4': - resolution: - { - integrity: sha512-j8pPKp53/lq9lMXN57S8cFz0MynJk8OWNuUnXct/9KCpKU7DgU3bYMJhwWmcqC0UU29p8Lr0/7KEVcaM6bf47Q==, - } - cpu: [x64] - os: [win32] - - '@rollup/wasm-node@4.18.0': - resolution: - { - integrity: sha512-DkLoyblRMhJw9ZogW9zCpyH0CNJ+7GaM7Ty+Vl+G21z/Gr7uKBaXqcJqwWUiNYVxTOgxZrxhDG6pmOFxOuswvw==, - } - engines: { node: '>=18.0.0', npm: '>=8.0.0' } - hasBin: true - - '@rushstack/eslint-patch@1.10.4': - resolution: - { - integrity: sha512-WJgX9nzTqknM393q1QJDJmoW28kUfEnybeTfVNcNAPnIx210RXm2DiXiHzfNPJNIUUb1tJnz/l4QGtJ30PgWmA==, - } - - '@rushstack/node-core-library@4.0.2': - resolution: - { - integrity: sha512-hyES82QVpkfQMeBMteQUnrhASL/KHPhd7iJ8euduwNJG4mu2GSOKybf0rOEjOm1Wz7CwJEUm9y0yD7jg2C1bfg==, - } - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - - '@rushstack/rig-package@0.5.2': - resolution: - { - integrity: sha512-mUDecIJeH3yYGZs2a48k+pbhM6JYwWlgjs2Ca5f2n1G2/kgdgP9D/07oglEGf6mRyXEnazhEENeYTSNDRCwdqA==, - } - - '@rushstack/terminal@0.10.0': - resolution: - { - integrity: sha512-UbELbXnUdc7EKwfH2sb8ChqNgapUOdqcCIdQP4NGxBpTZV2sQyeekuK3zmfQSa/MN+/7b4kBogl2wq0vpkpYGw==, - } - peerDependencies: - '@types/node': '*' - peerDependenciesMeta: - '@types/node': - optional: true - - '@rushstack/ts-command-line@4.19.1': - resolution: - { - integrity: sha512-J7H768dgcpG60d7skZ5uSSwyCZs/S2HrWP1Ds8d1qYAyaaeJmpmmLr9BVw97RjFzmQPOYnoXcKA4GkqDCkduQg==, - } - - '@schematics/angular@18.2.12': - resolution: - { - integrity: sha512-sIoeipsisK5eTLW3XuNZYcal83AfslBbgI7LnV+3VrXwpasKPGHwo2ZdwhCd2IXAkuJ02Iyu7MyV0aQRM9i/3g==, - } - engines: - { - node: ^18.19.1 || ^20.11.1 || >=22.0.0, - npm: ^6.11.0 || ^7.5.6 || >=8.0.0, - yarn: '>= 1.13.0', - } - - '@sideway/address@4.1.5': - resolution: - { - integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==, - } - - '@sideway/formula@3.0.1': - resolution: - { - integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==, - } - - '@sideway/pinpoint@2.0.0': - resolution: - { - integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==, - } - - '@sigstore/bundle@1.1.0': - resolution: - { - integrity: sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - '@sigstore/bundle@2.3.2': - resolution: - { - integrity: sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - '@sigstore/core@1.1.0': - resolution: - { - integrity: sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - '@sigstore/protobuf-specs@0.2.1': - resolution: - { - integrity: sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - '@sigstore/protobuf-specs@0.3.2': - resolution: - { - integrity: sha512-c6B0ehIWxMI8wiS/bj6rHMPqeFvngFV7cDU/MY+B16P9Z3Mp9k8L93eYZ7BYzSickzuqAQqAq0V956b3Ju6mLw==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - '@sigstore/sign@1.0.0': - resolution: - { - integrity: sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - '@sigstore/sign@2.3.2': - resolution: - { - integrity: sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - '@sigstore/tuf@1.0.3': - resolution: - { - integrity: sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - '@sigstore/tuf@2.3.4': - resolution: - { - integrity: sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - '@sigstore/verify@1.2.1': - resolution: - { - integrity: sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - '@sinclair/typebox@0.27.8': - resolution: - { - integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==, - } - - '@sindresorhus/merge-streams@2.3.0': - resolution: - { - integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==, - } - engines: { node: '>=18' } - - '@sinonjs/commons@1.8.6': - resolution: - { - integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==, - } - - '@sinonjs/fake-timers@8.1.0': - resolution: - { - integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==, - } - - '@socket.io/component-emitter@3.1.2': - resolution: - { - integrity: sha512-9BCxFwvbGg/RsZK9tjXd8s4UcwR0MWeFQ1XEKIQVVvAGJyINdrqKMcTRyLoK8Rse1GjzLV9cwjWV1olXRWEXVA==, - } - - '@soda/friendly-errors-webpack-plugin@1.8.1': - resolution: - { - integrity: sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==, - } - engines: { node: '>=8.0.0' } - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - - '@soda/get-current-script@1.0.2': - resolution: - { - integrity: sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==, - } - - '@tootallnate/once@1.1.2': - resolution: - { - integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==, - } - engines: { node: '>= 6' } - - '@tootallnate/once@2.0.0': - resolution: - { - integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==, - } - engines: { node: '>= 10' } - - '@trysound/sax@0.2.0': - resolution: - { - integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==, - } - engines: { node: '>=10.13.0' } - - '@tsconfig/node10@1.0.11': - resolution: - { - integrity: sha512-DcRjDCujK/kCk/cUe8Xz8ZSpm8mS3mNNpta+jGCA6USEDfktlNvm1+IuZ9eTcDbNk41BHwpHHeW+N1lKCz4zOw==, - } - - '@tsconfig/node12@1.0.11': - resolution: - { - integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==, - } - - '@tsconfig/node14@1.0.3': - resolution: - { - integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==, - } - - '@tsconfig/node16@1.0.4': - resolution: - { - integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==, - } - - '@tsconfig/node20@20.1.4': - resolution: - { - integrity: sha512-sqgsT69YFeLWf5NtJ4Xq/xAF8p4ZQHlmGW74Nu2tD4+g5fAsposc4ZfaaPixVu4y01BEiDCWLRDCvDM5JOsRxg==, - } - - '@tufjs/canonical-json@1.0.0': - resolution: - { - integrity: sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - '@tufjs/canonical-json@2.0.0': - resolution: - { - integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - '@tufjs/models@1.0.4': - resolution: - { - integrity: sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - '@tufjs/models@2.0.1': - resolution: - { - integrity: sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - '@types/argparse@1.0.38': - resolution: - { - integrity: sha512-ebDJ9b0e702Yr7pWgB0jzm+CX4Srzz8RcXtLJDJB+BSccqMa36uyH/zUsSYao5+BD1ytv3k3rPYCq4mAE1hsXA==, - } - - '@types/babel__core@7.20.5': - resolution: - { - integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==, - } - - '@types/babel__generator@7.6.8': - resolution: - { - integrity: sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==, - } - - '@types/babel__template@7.4.4': - resolution: - { - integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==, - } - - '@types/babel__traverse@7.20.6': - resolution: - { - integrity: sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==, - } - - '@types/body-parser@1.19.5': - resolution: - { - integrity: sha512-fB3Zu92ucau0iQ0JMCFQE7b/dv8Ot07NI3KaZIkIUNXq82k4eBAqUaneXfleGY9JWskeS9y+u0nXMyspcuQrCg==, - } - - '@types/bonjour@3.5.13': - resolution: - { - integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==, - } - - '@types/chai@4.3.16': - resolution: - { - integrity: sha512-PatH4iOdyh3MyWtmHVFXLWCCIhUbopaltqddG9BzB+gMIzee2MJrvd+jouii9Z3wzQJruGWAm7WOMjgfG8hQlQ==, - } - - '@types/cheerio@0.22.35': - resolution: - { - integrity: sha512-yD57BchKRvTV+JD53UZ6PD8KWY5g5rvvMLRnZR3EQBCZXiDT/HR+pKpMzFGlWNhFrXlo7VPZXtKvIEwZkAWOIA==, - } - - '@types/connect-history-api-fallback@1.5.4': - resolution: - { - integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==, - } - - '@types/connect@3.4.38': - resolution: - { - integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==, - } - - '@types/cookie@0.4.1': - resolution: - { - integrity: sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==, - } - - '@types/cors@2.8.17': - resolution: - { - integrity: sha512-8CGDvrBj1zgo2qE+oS3pOCyYNqCPryMWY2bGfwA0dcfopWGgxs+78df0Rs3rc9THP4JkOhLsAa+15VdpAqkcUA==, - } - - '@types/enzyme@3.10.18': - resolution: - { - integrity: sha512-RaO/TyyHZvXkpzinbMTZmd/S5biU4zxkvDsn22ujC29t9FMSzq8tnn8f2MxQ2P8GVhFRG5jTAL05DXKyTtpEQQ==, - } - - '@types/eslint-scope@3.7.7': - resolution: - { - integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==, - } - - '@types/eslint@8.56.10': - resolution: - { - integrity: sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==, - } - - '@types/estree@1.0.5': - resolution: - { - integrity: sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==, - } - - '@types/express-serve-static-core@4.19.1': - resolution: - { - integrity: sha512-ej0phymbFLoCB26dbbq5PGScsf2JAJ4IJHjG10LalgUV36XKTmA4GdA+PVllKvRk0sEKt64X8975qFnkSi0hqA==, - } - - '@types/express@4.17.21': - resolution: - { - integrity: sha512-ejlPM315qwLpaQlQDTjPdsUFSc6ZsP4AN6AlWnogPjQ7CVi7PYF3YVz+CY3jE2pwYf7E/7HlDAN0rV2GxTG0HQ==, - } - - '@types/fs-extra@8.1.5': - resolution: - { - integrity: sha512-0dzKcwO+S8s2kuF5Z9oUWatQJj5Uq/iqphEtE3GQJVRRYm/tD1LglU2UnXi2A8jLq5umkGouOXOR9y0n613ZwQ==, - } - - '@types/fs-extra@9.0.13': - resolution: - { - integrity: sha512-nEnwB++1u5lVDM2UI4c1+5R+FYaKfaAzS4OococimjVm3nQw3TuzH5UNsocrcTBbhnerblyHj4A49qXbIiZdpA==, - } - - '@types/glob@7.2.0': - resolution: - { - integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==, - } - - '@types/graceful-fs@4.1.9': - resolution: - { - integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==, - } - - '@types/hoist-non-react-statics@3.3.5': - resolution: - { - integrity: sha512-SbcrWzkKBw2cdwRTwQAswfpB9g9LJWfjtUeW/jvNwbhC8cpmmNYVePa+ncbUe0rGTQ7G3Ff6mYUN2VMfLVr+Sg==, - } - - '@types/html-minifier-terser@6.1.0': - resolution: - { - integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==, - } - - '@types/http-errors@2.0.4': - resolution: - { - integrity: sha512-D0CFMMtydbJAegzOyHjtiKPLlvnm3iTZyZRSZoLq2mRhDdmLfIWOCYPfQJ4cu2erKghU++QvjcUjp/5h7hESpA==, - } - - '@types/http-proxy@1.17.14': - resolution: - { - integrity: sha512-SSrD0c1OQzlFX7pGu1eXxSEjemej64aaNPRhhVYUGqXh0BtldAAx37MG8btcumvpgKyZp1F5Gn3JkktdxiFv6w==, - } - - '@types/http-proxy@1.17.15': - resolution: - { - integrity: sha512-25g5atgiVNTIv0LBDTg1H74Hvayx0ajtJPLLcYE3whFv75J0pWNtOBzaXJQgDTmrX1bx5U9YC2w/n65BN1HwRQ==, - } - - '@types/istanbul-lib-coverage@2.0.6': - resolution: - { - integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==, - } - - '@types/istanbul-lib-report@3.0.3': - resolution: - { - integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==, - } - - '@types/istanbul-reports@3.0.4': - resolution: - { - integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==, - } - - '@types/jasmine@3.8.2': - resolution: - { - integrity: sha512-u5h7dqzy2XpXTzhOzSNQUQpKGFvROF8ElNX9P/TJvsHnTg/JvsAseVsGWQAQQldqanYaM+5kwxW909BBFAUYsg==, - } - - '@types/jest@27.5.2': - resolution: - { - integrity: sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==, - } - - '@types/jsdom@21.1.7': - resolution: - { - integrity: sha512-yOriVnggzrnQ3a9OKOCxaVuSug3w3/SbOj5i7VwXWZEyUNl3bLF9V3MfxGbZKuwqJOQyRfqXyROBB1CoZLFWzA==, - } - - '@types/json-schema@7.0.15': - resolution: - { - integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, - } - - '@types/json5@0.0.29': - resolution: - { - integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==, - } - - '@types/lodash@4.14.149': - resolution: - { - integrity: sha512-ijGqzZt/b7BfzcK9vTrS6MFljQRPn5BFWOx8oE0GYxribu6uV+aA9zZuXI1zc/etK9E8nrgdoF2+LgUw7+9tJQ==, - } - - '@types/lodash@4.17.7': - resolution: - { - integrity: sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==, - } - - '@types/mime@1.3.5': - resolution: - { - integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==, - } - - '@types/minimatch@3.0.5': - resolution: - { - integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==, - } - - '@types/minimatch@5.1.2': - resolution: - { - integrity: sha512-K0VQKziLUWkVKiRVrx4a40iPaxTUefQmjtkQofBkYRcoaaL/8rhwDWww9qWbrgicNOgnpIsMxyNIUM4+n6dUIA==, - } - - '@types/minimist@1.2.5': - resolution: - { - integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==, - } - - '@types/mocha@5.2.7': - resolution: - { - integrity: sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==, - } - - '@types/mute-stream@0.0.4': - resolution: - { - integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==, - } - - '@types/node-forge@1.3.11': - resolution: - { - integrity: sha512-FQx220y22OKNTqaByeBGqHWYz4cl94tpcxeFdvBo3wjG6XPBuZ0BNgNZRV5J5TFmmcsJ4IzsLkmGRiQbnYsBEQ==, - } - - '@types/node@22.13.8': - resolution: - { - integrity: sha512-G3EfaZS+iOGYWLLRCEAXdWK9my08oHNZ+FHluRiggIYJPOXzhOiDgpVCUHaUvyIC5/fj7C/p637jdzC666AOKQ==, - } - - '@types/normalize-package-data@2.4.4': - resolution: - { - integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==, - } - - '@types/object-hash@1.3.4': - resolution: - { - integrity: sha512-xFdpkAkikBgqBdG9vIlsqffDV8GpvnPEzs0IUtr1v3BEB97ijsFQ4RXVbUZwjFThhB4MDSTUfvmxUD5PGx0wXA==, - } - - '@types/parse-json@4.0.2': - resolution: - { - integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==, - } - - '@types/prettier@2.7.3': - resolution: - { - integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==, - } - - '@types/prop-types@15.7.12': - resolution: - { - integrity: sha512-5zvhXYtRNRluoE/jAp4GVsSduVUzNWKkOZrCDBWYtE7biZywwdC2AcEzg+cSMLFRfVgeAFqpfNabiPjxFddV1Q==, - } - - '@types/q@0.0.32': - resolution: - { - integrity: sha512-qYi3YV9inU/REEfxwVcGZzbS3KG/Xs90lv0Pr+lDtuVjBPGd1A+eciXzVSaRvLify132BfcvhvEjeVahrUl0Ug==, - } - - '@types/qs@6.9.15': - resolution: - { - integrity: sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==, - } - - '@types/range-parser@1.2.7': - resolution: - { - integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==, - } - - '@types/react-dom@17.0.25': - resolution: - { - integrity: sha512-urx7A7UxkZQmThYA4So0NelOVjx3V4rNFVJwp0WZlbIK5eM4rNJDiN3R/E9ix0MBh6kAEojk/9YL+Te6D9zHNA==, - } - - '@types/react-highlight@0.12.8': - resolution: - { - integrity: sha512-V7O7zwXUw8WSPd//YUO8sz489J/EeobJljASGhP0rClrvq+1Y1qWEpToGu+Pp7YuChxhAXSgkLkrOYpZX5A62g==, - } - - '@types/react-redux@7.1.33': - resolution: - { - integrity: sha512-NF8m5AjWCkert+fosDsN3hAlHzpjSiXlVy9EgQEmLoBhaNXbmyeGs/aj5dQzKuF+/q+S7JQagorGDW8pJ28Hmg==, - } - - '@types/react-tabs@2.3.4': - resolution: - { - integrity: sha512-HQzhKW+RF/7h14APw/2cu4Nnt+GmsTvfBKbFdn/NbYpb8Q+iB65wIkPHz4VRKDxWtOpNFpOUtzt5r0LRmQMfOA==, - } - - '@types/react-transition-group@4.4.10': - resolution: - { - integrity: sha512-hT/+s0VQs2ojCX823m60m5f0sL5idt9SO6Tj6Dg+rdphGPIeJbJ6CxvBYkgkGKrYeDjvIpKTR38UzmtHJOGW3Q==, - } - - '@types/react@16.14.60': - resolution: - { - integrity: sha512-wIFmnczGsTcgwCBeIYOuy2mdXEiKZ5znU/jNOnMZPQyCcIxauMGWlX0TNG4lZ7NxRKj7YUIZRneJQSSdB2jKgg==, - } - - '@types/react@17.0.80': - resolution: - { - integrity: sha512-LrgHIu2lEtIo8M7d1FcI3BdwXWoRQwMoXOZ7+dPTW0lYREjmlHl3P0U1VD0i/9tppOuv8/sam7sOjx34TxSFbA==, - } - - '@types/redux-mock-store@1.0.6': - resolution: - { - integrity: sha512-eg5RDfhJTXuoJjOMyXiJbaDb1B8tfTaJixscmu+jOusj6adGC0Krntz09Tf4gJgXeCqCrM5bBMd+B7ez0izcAQ==, - } - - '@types/resolve@1.20.2': - resolution: - { - integrity: sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==, - } - - '@types/retry@0.12.0': - resolution: - { - integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==, - } - - '@types/retry@0.12.2': - resolution: - { - integrity: sha512-XISRgDJ2Tc5q4TRqvgJtzsRkFYNJzZrhTdtMoGVBttwzzQJkPnS3WWTFc7kuDRoPtPakl+T+OfdEUjYJj7Jbow==, - } - - '@types/scheduler@0.16.8': - resolution: - { - integrity: sha512-WZLiwShhwLRmeV6zH+GkbOFT6Z6VklCItrDioxUnv+u4Ll+8vKeFySoFyK/0ctcRpOmwAicELfmys1sDc/Rw+A==, - } - - '@types/selenium-webdriver@3.0.26': - resolution: - { - integrity: sha512-dyIGFKXfUFiwkMfNGn1+F6b80ZjR3uSYv1j6xVJSDlft5waZ2cwkHW4e7zNzvq7hiEackcgvBpmnXZrI1GltPg==, - } - - '@types/semver@7.5.8': - resolution: - { - integrity: sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==, - } - - '@types/send@0.17.4': - resolution: - { - integrity: sha512-x2EM6TJOybec7c52BX0ZspPodMsQUd5L6PRwOunVyVUhXiBSKf3AezDL8Dgvgt5o0UfKNfuA0eMLr2wLT4AiBA==, - } - - '@types/serve-index@1.9.4': - resolution: - { - integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==, - } - - '@types/serve-static@1.15.7': - resolution: - { - integrity: sha512-W8Ym+h8nhuRwaKPaDw34QUkwsGi6Rc4yYqvKFo5rm2FUEhCFbzVWrxXUxuKK8TASjWsysJY0nsmNCGhCOIsrOw==, - } - - '@types/sockjs@0.3.36': - resolution: - { - integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==, - } - - '@types/splitpanes@2.2.6': - resolution: - { - integrity: sha512-3dV5sO1Ht74iER4jJU03mreL3f+Q2h47ZqXS6Sfbqc6hkCvsDrX1GA0NbYWRdNvZemPyTDzUoApWKeoGbALwkQ==, - } - - '@types/stack-utils@2.0.3': - resolution: - { - integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==, - } - - '@types/strip-bom@3.0.0': - resolution: - { - integrity: sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==, - } - - '@types/strip-json-comments@0.0.30': - resolution: - { - integrity: sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==, - } - - '@types/tough-cookie@4.0.5': - resolution: - { - integrity: sha512-/Ad8+nIOV7Rl++6f1BdKxFSMgmoqEoYbHRpPcx3JEfv8VRsQe9Z4mCXeJBzxs7mbHY/XOZZuXlRNfhpVPbs6ZA==, - } - - '@types/webpack-env@1.18.5': - resolution: - { - integrity: sha512-wz7kjjRRj8/Lty4B+Kr0LN6Ypc/3SymeCCGSbaXp2leH0ZVg/PriNiOwNj4bD4uphI7A8NXS4b6Gl373sfO5mA==, - } - - '@types/wrap-ansi@3.0.0': - resolution: - { - integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==, - } - - '@types/ws@8.5.10': - resolution: - { - integrity: sha512-vmQSUcfalpIq0R9q7uTo2lXs6eGIpt9wtnLdMv9LVpIjCA/+ufZRozlVoVelIYixx1ugCBKDhn89vnsEGOCx9A==, - } - - '@types/yargs-parser@21.0.3': - resolution: - { - integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==, - } - - '@types/yargs@16.0.9': - resolution: - { - integrity: sha512-tHhzvkFXZQeTECenFoRljLBYPZJ7jAVxqqtEI0qTLOmuultnFp4I9yKE17vTuhf7BkhCu7I4XuemPgikDVuYqA==, - } - - '@typescript-eslint/eslint-plugin@5.62.0': - resolution: - { - integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - '@typescript-eslint/parser': ^5.0.0 - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/eslint-plugin@7.18.0': - resolution: - { - integrity: sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==, - } - engines: { node: ^18.18.0 || >=20.0.0 } - peerDependencies: - '@typescript-eslint/parser': ^7.0.0 - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@5.62.0': - resolution: - { - integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/parser@7.18.0': - resolution: - { - integrity: sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==, - } - engines: { node: ^18.18.0 || >=20.0.0 } - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/scope-manager@5.62.0': - resolution: - { - integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - '@typescript-eslint/scope-manager@7.18.0': - resolution: - { - integrity: sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==, - } - engines: { node: ^18.18.0 || >=20.0.0 } - - '@typescript-eslint/type-utils@5.62.0': - resolution: - { - integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: '*' - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/type-utils@7.18.0': - resolution: - { - integrity: sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==, - } - engines: { node: ^18.18.0 || >=20.0.0 } - peerDependencies: - eslint: ^8.56.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/types@5.62.0': - resolution: - { - integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - '@typescript-eslint/types@7.18.0': - resolution: - { - integrity: sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==, - } - engines: { node: ^18.18.0 || >=20.0.0 } - - '@typescript-eslint/typescript-estree@5.62.0': - resolution: - { - integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/typescript-estree@7.18.0': - resolution: - { - integrity: sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==, - } - engines: { node: ^18.18.0 || >=20.0.0 } - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@typescript-eslint/utils@5.62.0': - resolution: - { - integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - - '@typescript-eslint/utils@7.18.0': - resolution: - { - integrity: sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==, - } - engines: { node: ^18.18.0 || >=20.0.0 } - peerDependencies: - eslint: ^8.56.0 - - '@typescript-eslint/visitor-keys@5.62.0': - resolution: - { - integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==, - } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - - '@typescript-eslint/visitor-keys@7.18.0': - resolution: - { - integrity: sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==, - } - engines: { node: ^18.18.0 || >=20.0.0 } - - '@ungap/promise-all-settled@1.1.2': - resolution: - { - integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==, - } - - '@ungap/structured-clone@1.2.0': - resolution: - { - integrity: sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==, - } - - '@vercel/nft@0.26.5': - resolution: - { - integrity: sha512-NHxohEqad6Ra/r4lGknO52uc/GrWILXAMs1BB4401GTqww0fw1bAqzpG1XHuDO+dprg4GvsD9ZLLSsdo78p9hQ==, - } - engines: { node: '>=16' } - hasBin: true - - '@vitejs/plugin-basic-ssl@1.1.0': - resolution: - { - integrity: sha512-wO4Dk/rm8u7RNhOf95ZzcEmC9rYOncYgvq4z3duaJrCgjN8BxAnDVyndanfcJZ0O6XZzHz6Q0hTimxTg8Y9g/A==, - } - engines: { node: '>=14.6.0' } - peerDependencies: - vite: ^3.0.0 || ^4.0.0 || ^5.0.0 - - '@vitejs/plugin-vue@5.1.2': - resolution: - { - integrity: sha512-nY9IwH12qeiJqumTCLJLE7IiNx7HZ39cbHaysEUd+Myvbz9KAqd2yq+U01Kab1R/H1BmiyM2ShTYlNH32Fzo3A==, - } - engines: { node: ^18.0.0 || >=20.0.0 } - peerDependencies: - vite: ^5.0.0 - vue: ^3.2.25 - - '@vitest/coverage-v8@1.6.0': - resolution: - { - integrity: sha512-KvapcbMY/8GYIG0rlwwOKCVNRc0OL20rrhFkg/CHNzncV03TE2XWvO5w9uZYoxNiMEBacAJt3unSOiZ7svePew==, - } - peerDependencies: - vitest: 1.6.0 - - '@vitest/expect@1.6.0': - resolution: - { - integrity: sha512-ixEvFVQjycy/oNgHjqsL6AZCDduC+tflRluaHIzKIsdbzkLn2U/iBnVeJwB6HsIjQBdfMR8Z0tRxKUsvFJEeWQ==, - } - - '@vitest/runner@1.6.0': - resolution: - { - integrity: sha512-P4xgwPjwesuBiHisAVz/LSSZtDjOTPYZVmNAnpHHSR6ONrf8eCJOFRvUwdHn30F5M1fxhqtl7QZQUk2dprIXAg==, - } - - '@vitest/snapshot@1.6.0': - resolution: - { - integrity: sha512-+Hx43f8Chus+DCmygqqfetcAZrDJwvTj0ymqjQq4CvmpKFSTVteEOBzCusu1x2tt4OJcvBflyHUE0DZSLgEMtQ==, - } - - '@vitest/spy@1.6.0': - resolution: - { - integrity: sha512-leUTap6B/cqi/bQkXUu6bQV5TZPx7pmMBKBQiI0rJA8c3pB56ZsaTbREnF7CJfmvAS4V2cXIBAh/3rVwrrCYgw==, - } - - '@vitest/utils@1.6.0': - resolution: - { - integrity: sha512-21cPiuGMoMZwiOHa2i4LXkMkMkCGzA+MVFV70jRwHo95dL4x/ts5GZhML1QWuy7yfp3WzK3lRvZi3JnXTYqrBw==, - } - - '@volar/language-core@1.11.1': - resolution: - { - integrity: sha512-dOcNn3i9GgZAcJt43wuaEykSluAuOkQgzni1cuxLxTV0nJKanQztp7FxyswdRILaKH+P2XZMPRp2S4MV/pElCw==, - } - - '@volar/language-core@2.4.0': - resolution: - { - integrity: sha512-FTla+khE+sYK0qJP+6hwPAAUwiNHVMph4RUXpxf/FIPKUP61NFrVZorml4mjFShnueR2y9/j8/vnh09YwVdH7A==, - } - - '@volar/source-map@1.11.1': - resolution: - { - integrity: sha512-hJnOnwZ4+WT5iupLRnuzbULZ42L7BWWPMmruzwtLhJfpDVoZLjNBxHDi2sY2bgZXCKlpU5XcsMFoYrsQmPhfZg==, - } - - '@volar/source-map@2.4.0': - resolution: - { - integrity: sha512-2ceY8/NEZvN6F44TXw2qRP6AQsvCYhV2bxaBPWxV9HqIfkbRydSksTFObCF1DBDNBfKiZTS8G/4vqV6cvjdOIQ==, - } - - '@volar/typescript@1.11.1': - resolution: - { - integrity: sha512-iU+t2mas/4lYierSnoFOeRFQUhAEMgsFuQxoxvwn5EdQopw43j+J27a4lt9LMInx1gLJBC6qL14WYGlgymaSMQ==, - } - - '@volar/typescript@2.4.0': - resolution: - { - integrity: sha512-9zx3lQWgHmVd+JRRAHUSRiEhe4TlzL7U7e6ulWXOxHH/WNYxzKwCvZD7WYWEZFdw4dHfTD9vUR0yPQO6GilCaQ==, - } - - '@vue/babel-helper-vue-jsx-merge-props@1.4.0': - resolution: - { - integrity: sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==, - } - - '@vue/babel-helper-vue-transform-on@1.2.2': - resolution: - { - integrity: sha512-nOttamHUR3YzdEqdM/XXDyCSdxMA9VizUKoroLX6yTyRtggzQMHXcmwh8a7ZErcJttIBIc9s68a1B8GZ+Dmvsw==, - } - - '@vue/babel-plugin-jsx@1.2.2': - resolution: - { - integrity: sha512-nYTkZUVTu4nhP199UoORePsql0l+wj7v/oyQjtThUVhJl1U+6qHuoVhIvR3bf7eVKjbCK+Cs2AWd7mi9Mpz9rA==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - peerDependenciesMeta: - '@babel/core': - optional: true - - '@vue/babel-plugin-resolve-type@1.2.2': - resolution: - { - integrity: sha512-EntyroPwNg5IPVdUJupqs0CFzuf6lUrVvCspmv2J1FITLeGnUCuoGNNk78dgCusxEiYj6RMkTJflGSxk5aIC4A==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@vue/babel-plugin-transform-vue-jsx@1.4.0': - resolution: - { - integrity: sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@vue/babel-preset-app@5.0.8': - resolution: - { - integrity: sha512-yl+5qhpjd8e1G4cMXfORkkBlvtPCIgmRf3IYCWYDKIQ7m+PPa5iTm4feiNmCMD6yGqQWMhhK/7M3oWGL9boKwg==, - } - peerDependencies: - '@babel/core': '*' - core-js: ^3 - vue: ^2 || ^3.2.13 - peerDependenciesMeta: - core-js: - optional: true - vue: - optional: true - - '@vue/babel-preset-jsx@1.4.0': - resolution: - { - integrity: sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - vue: '*' - peerDependenciesMeta: - vue: - optional: true - - '@vue/babel-sugar-composition-api-inject-h@1.4.0': - resolution: - { - integrity: sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@vue/babel-sugar-composition-api-render-instance@1.4.0': - resolution: - { - integrity: sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@vue/babel-sugar-functional-vue@1.4.0': - resolution: - { - integrity: sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@vue/babel-sugar-inject-h@1.4.0': - resolution: - { - integrity: sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@vue/babel-sugar-v-model@1.4.0': - resolution: - { - integrity: sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@vue/babel-sugar-v-on@1.4.0': - resolution: - { - integrity: sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==, - } - peerDependencies: - '@babel/core': ^7.0.0-0 - - '@vue/cli-overlay@5.0.8': - resolution: - { - integrity: sha512-KmtievE/B4kcXp6SuM2gzsnSd8WebkQpg3XaB6GmFh1BJGRqa1UiW9up7L/Q67uOdTigHxr5Ar2lZms4RcDjwQ==, - } - - '@vue/cli-plugin-babel@5.0.8': - resolution: - { - integrity: sha512-a4qqkml3FAJ3auqB2kN2EMPocb/iu0ykeELwed+9B1c1nQ1HKgslKMHMPavYx3Cd/QAx2mBD4hwKBqZXEI/CsQ==, - } - peerDependencies: - '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0 - - '@vue/cli-plugin-router@5.0.8': - resolution: - { - integrity: sha512-Gmv4dsGdAsWPqVijz3Ux2OS2HkMrWi1ENj2cYL75nUeL+Xj5HEstSqdtfZ0b1q9NCce+BFB6QnHfTBXc/fCvMg==, - } - peerDependencies: - '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0 - - '@vue/cli-plugin-typescript@5.0.8': - resolution: - { - integrity: sha512-JKJOwzJshBqsmp4yLBexwVMebOZ4VGJgbnYvmHVxasJOStF2RxwyW28ZF+zIvASGdat4sAUuo/3mAQyVhm7JHg==, - } - peerDependencies: - '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0 - cache-loader: ^4.1.0 - typescript: '>=2' - vue: ^2 || ^3.2.13 - vue-template-compiler: ^2.0.0 - peerDependenciesMeta: - cache-loader: - optional: true - vue-template-compiler: - optional: true - - '@vue/cli-plugin-unit-mocha@5.0.8': - resolution: - { - integrity: sha512-t8eN1ttbSkHg+U7AjCKwpuhpV2OBsP35RjBkdSrcAPjoX3MxVwoWyqGPeYI+jWbPGX3tFxM/uMQwN0U3lmzH7A==, - } - peerDependencies: - '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0 - - '@vue/cli-plugin-vuex@5.0.8': - resolution: - { - integrity: sha512-HSYWPqrunRE5ZZs8kVwiY6oWcn95qf/OQabwLfprhdpFWAGtLStShjsGED2aDpSSeGAskQETrtR/5h7VqgIlBA==, - } - peerDependencies: - '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0 - - '@vue/cli-service@5.0.8': - resolution: - { - integrity: sha512-nV7tYQLe7YsTtzFrfOMIHc5N2hp5lHG2rpYr0aNja9rNljdgcPZLyQRb2YRivTHqTv7lI962UXFURcpStHgyFw==, - } - engines: { node: ^12.0.0 || >= 14.0.0 } - hasBin: true - peerDependencies: - cache-loader: '*' - less-loader: '*' - pug-plain-loader: '*' - raw-loader: '*' - sass-loader: '*' - stylus-loader: '*' - vue-template-compiler: ^2.0.0 - webpack-sources: '*' - peerDependenciesMeta: - cache-loader: - optional: true - less-loader: - optional: true - pug-plain-loader: - optional: true - raw-loader: - optional: true - sass-loader: - optional: true - stylus-loader: - optional: true - vue-template-compiler: - optional: true - webpack-sources: - optional: true - - '@vue/cli-shared-utils@5.0.8': - resolution: - { - integrity: sha512-uK2YB7bBVuQhjOJF+O52P9yFMXeJVj7ozqJkwYE9PlMHL1LMHjtCYm4cSdOebuPzyP+/9p0BimM/OqxsevIopQ==, - } - - '@vue/compiler-core@3.4.27': - resolution: - { - integrity: sha512-E+RyqY24KnyDXsCuQrI+mlcdW3ALND6U7Gqa/+bVwbcpcR3BRRIckFoz7Qyd4TTlnugtwuI7YgjbvsLmxb+yvg==, - } - - '@vue/compiler-dom@3.4.27': - resolution: - { - integrity: sha512-kUTvochG/oVgE1w5ViSr3KUBh9X7CWirebA3bezTbB5ZKBQZwR2Mwj9uoSKRMFcz4gSMzzLXBPD6KpCLb9nvWw==, - } - - '@vue/compiler-sfc@2.7.16': - resolution: - { - integrity: sha512-KWhJ9k5nXuNtygPU7+t1rX6baZeqOYLEforUPjgNDBnLicfHCoi48H87Q8XyLZOrNNsmhuwKqtpDQWjEFe6Ekg==, - } - - '@vue/compiler-sfc@3.4.27': - resolution: - { - integrity: sha512-nDwntUEADssW8e0rrmE0+OrONwmRlegDA1pD6QhVeXxjIytV03yDqTey9SBDiALsvAd5U4ZrEKbMyVXhX6mCGA==, - } - - '@vue/compiler-ssr@3.4.27': - resolution: - { - integrity: sha512-CVRzSJIltzMG5FcidsW0jKNQnNRYC8bT21VegyMMtHmhW3UOI7knmUehzswXLrExDLE6lQCZdrhD4ogI7c+vuw==, - } - - '@vue/compiler-vue2@2.7.16': - resolution: - { - integrity: sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==, - } - - '@vue/component-compiler-utils@3.3.0': - resolution: - { - integrity: sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==, - } - - '@vue/eslint-config-prettier@9.0.0': - resolution: - { - integrity: sha512-z1ZIAAUS9pKzo/ANEfd2sO+v2IUalz7cM/cTLOZ7vRFOPk5/xuRKQteOu1DErFLAh/lYGXMVZ0IfYKlyInuDVg==, - } - peerDependencies: - eslint: '>= 8.0.0' - prettier: '>= 3.0.0' - - '@vue/eslint-config-typescript@11.0.3': - resolution: - { - integrity: sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw==, - } - engines: { node: ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 - eslint-plugin-vue: ^9.0.0 - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@vue/eslint-config-typescript@13.0.0': - resolution: - { - integrity: sha512-MHh9SncG/sfqjVqjcuFLOLD6Ed4dRAis4HNt0dXASeAuLqIAx4YMB1/m2o4pUKK1vCt8fUvYG8KKX2Ot3BVZTg==, - } - engines: { node: ^18.18.0 || >=20.0.0 } - peerDependencies: - eslint: ^8.56.0 - eslint-plugin-vue: ^9.0.0 - typescript: '>=4.7.4' - peerDependenciesMeta: - typescript: - optional: true - - '@vue/language-core@1.8.27': - resolution: - { - integrity: sha512-L8Kc27VdQserNaCUNiSFdDl9LWT24ly8Hpwf1ECy3aFb9m6bDhBGQYOujDm21N7EW3moKIOKEanQwe1q5BK+mA==, - } - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@vue/language-core@2.0.29': - resolution: - { - integrity: sha512-o2qz9JPjhdoVj8D2+9bDXbaI4q2uZTHQA/dbyZT4Bj1FR9viZxDJnLcKVHfxdn6wsOzRgpqIzJEEmSSvgMvDTQ==, - } - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - - '@vue/reactivity@3.4.27': - resolution: - { - integrity: sha512-kK0g4NknW6JX2yySLpsm2jlunZJl2/RJGZ0H9ddHdfBVHcNzxmQ0sS0b09ipmBoQpY8JM2KmUw+a6sO8Zo+zIA==, - } - - '@vue/runtime-core@3.4.27': - resolution: - { - integrity: sha512-7aYA9GEbOOdviqVvcuweTLe5Za4qBZkUY7SvET6vE8kyypxVgaT1ixHLg4urtOlrApdgcdgHoTZCUuTGap/5WA==, - } - - '@vue/runtime-dom@3.4.27': - resolution: - { - integrity: sha512-ScOmP70/3NPM+TW9hvVAz6VWWtZJqkbdf7w6ySsws+EsqtHvkhxaWLecrTorFxsawelM5Ys9FnDEMt6BPBDS0Q==, - } - - '@vue/server-renderer@3.4.27': - resolution: - { - integrity: sha512-dlAMEuvmeA3rJsOMJ2J1kXU7o7pOxgsNHVr9K8hB3ImIkSuBrIdy0vF66h8gf8Tuinf1TK3mPAz2+2sqyf3KzA==, - } - peerDependencies: - vue: 3.4.27 - - '@vue/shared@3.4.27': - resolution: - { - integrity: sha512-DL3NmY2OFlqmYYrzp39yi3LDkKxa5vZVwxWdQ3rG0ekuWscHraeIbnI8t+aZK7qhYqEqWKTUdijadunb9pnrgA==, - } - - '@vue/test-utils@2.4.6': - resolution: - { - integrity: sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==, - } - - '@vue/tsconfig@0.5.1': - resolution: - { - integrity: sha512-VcZK7MvpjuTPx2w6blwnwZAu5/LgBUtejFOi3pPGQFXQN5Ela03FUtd2Qtg4yWGGissVL0dr6Ro1LfOFh+PCuQ==, - } - - '@vue/vue3-jest@27.0.0': - resolution: - { - integrity: sha512-VL61CgZBoQqayXfzlZJHHpZuX4lsT8dmdZMJzADhdAJjKu26JBpypHr/2ppevxItljPiuALQW4MKhhCXZRXnLg==, - } - peerDependencies: - '@babel/core': 7.x - babel-jest: 27.x - jest: 27.x - ts-jest: 27.x - typescript: '>= 3.x' - vue: ^3.0.0-0 - peerDependenciesMeta: - ts-jest: - optional: true - typescript: - optional: true - - '@vue/web-component-wrapper@1.3.0': - resolution: - { - integrity: sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==, - } - - '@vuetify/loader-shared@2.0.3': - resolution: - { - integrity: sha512-Ss3GC7eJYkp2SF6xVzsT7FAruEmdihmn4OCk2+UocREerlXKWgOKKzTN5PN3ZVN5q05jHHrsNhTuWbhN61Bpdg==, - } - peerDependencies: - vue: ^3.0.0 - vuetify: ^3.0.0 - - '@webassemblyjs/ast@1.12.1': - resolution: - { - integrity: sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==, - } - - '@webassemblyjs/floating-point-hex-parser@1.11.6': - resolution: - { - integrity: sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==, - } - - '@webassemblyjs/helper-api-error@1.11.6': - resolution: - { - integrity: sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==, - } - - '@webassemblyjs/helper-buffer@1.12.1': - resolution: - { - integrity: sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==, - } - - '@webassemblyjs/helper-numbers@1.11.6': - resolution: - { - integrity: sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==, - } - - '@webassemblyjs/helper-wasm-bytecode@1.11.6': - resolution: - { - integrity: sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==, - } - - '@webassemblyjs/helper-wasm-section@1.12.1': - resolution: - { - integrity: sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==, - } - - '@webassemblyjs/ieee754@1.11.6': - resolution: - { - integrity: sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==, - } - - '@webassemblyjs/leb128@1.11.6': - resolution: - { - integrity: sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==, - } - - '@webassemblyjs/utf8@1.11.6': - resolution: - { - integrity: sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==, - } - - '@webassemblyjs/wasm-edit@1.12.1': - resolution: - { - integrity: sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==, - } - - '@webassemblyjs/wasm-gen@1.12.1': - resolution: - { - integrity: sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==, - } - - '@webassemblyjs/wasm-opt@1.12.1': - resolution: - { - integrity: sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==, - } - - '@webassemblyjs/wasm-parser@1.12.1': - resolution: - { - integrity: sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==, - } - - '@webassemblyjs/wast-printer@1.12.1': - resolution: - { - integrity: sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==, - } - - '@webpack-cli/configtest@2.1.1': - resolution: - { - integrity: sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==, - } - engines: { node: '>=14.15.0' } - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - - '@webpack-cli/info@2.0.2': - resolution: - { - integrity: sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==, - } - engines: { node: '>=14.15.0' } - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - - '@webpack-cli/serve@2.0.5': - resolution: - { - integrity: sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==, - } - engines: { node: '>=14.15.0' } - peerDependencies: - webpack: 5.x.x - webpack-cli: 5.x.x - webpack-dev-server: '*' - peerDependenciesMeta: - webpack-dev-server: - optional: true - - '@wojtekmaj/enzyme-adapter-react-17@0.6.7': - resolution: - { - integrity: sha512-B+byiwi/T1bx5hcj9wc0fUL5Hlb5giSXJzcnEfJVl2j6dGV2NJfcxDBYX0WWwIxlzNiFz8kAvlkFWI2y/nscZQ==, - } - peerDependencies: - enzyme: ^3.0.0 - react: ^17.0.0-0 - react-dom: ^17.0.0-0 - - '@wojtekmaj/enzyme-adapter-utils@0.1.4': - resolution: - { - integrity: sha512-ARGIQSIIv3oBia1m5Ihn1VU0FGmft6KPe39SBKTb8p7LSXO23YI4kNtc4M/cKoIY7P+IYdrZcgMObvedyjoSQA==, - } - peerDependencies: - react: ^17.0.0-0 - - '@xtuc/ieee754@1.2.0': - resolution: - { - integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==, - } - - '@xtuc/long@4.2.2': - resolution: - { - integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==, - } - - '@yarnpkg/lockfile@1.1.0': - resolution: - { - integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==, - } - - '@yarnpkg/parsers@3.0.0-rc.46': - resolution: - { - integrity: sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==, - } - engines: { node: '>=14.15.0' } - - '@zkochan/js-yaml@0.0.6': - resolution: - { - integrity: sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==, - } - hasBin: true - - '@zkochan/rimraf@2.1.3': - resolution: - { - integrity: sha512-mCfR3gylCzPC+iqdxEA6z5SxJeOgzgbwmyxanKriIne5qZLswDe/M43aD3p5MNzwzXRhbZg/OX+MpES6Zk1a6A==, - } - engines: { node: '>=12.10' } - - JSONStream@1.3.5: - resolution: - { - integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==, - } - hasBin: true - - abab@2.0.6: - resolution: - { - integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==, - } - deprecated: Use your platform's native atob() and btoa() methods instead - - abbrev@1.1.1: - resolution: - { - integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==, - } - - abbrev@2.0.0: - resolution: - { - integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - accepts@1.3.8: - resolution: - { - integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==, - } - engines: { node: '>= 0.6' } - - acorn-globals@6.0.0: - resolution: - { - integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==, - } - - acorn-import-assertions@1.9.0: - resolution: - { - integrity: sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==, - } - peerDependencies: - acorn: ^8 - - acorn-import-attributes@1.9.5: - resolution: - { - integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==, - } - peerDependencies: - acorn: ^8 - - acorn-jsx@5.3.2: - resolution: - { - integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, - } - peerDependencies: - acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - - acorn-walk@7.2.0: - resolution: - { - integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==, - } - engines: { node: '>=0.4.0' } - - acorn-walk@8.3.2: - resolution: - { - integrity: sha512-cjkyv4OtNCIeqhHrfS81QWXoCBPExR/J62oyEqepVw8WaQeSqpW2uhuLPh1m9eWhDuOo/jUXVTlifvesOWp/4A==, - } - engines: { node: '>=0.4.0' } - - acorn@7.4.1: - resolution: - { - integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==, - } - engines: { node: '>=0.4.0' } - hasBin: true - - acorn@8.11.3: - resolution: - { - integrity: sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==, - } - engines: { node: '>=0.4.0' } - hasBin: true - - add-stream@1.0.0: - resolution: - { - integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==, - } - - address@1.2.2: - resolution: - { - integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==, - } - engines: { node: '>= 10.0.0' } - - adjust-sourcemap-loader@4.0.0: - resolution: - { - integrity: sha512-OXwN5b9pCUXNQHJpwwD2qP40byEmSgzj8B4ydSN0uMNYWiFmJ6x6KwUllMmfk8Rwu/HJDFR7U8ubsWBoN0Xp0A==, - } - engines: { node: '>=8.9' } - - adm-zip@0.5.12: - resolution: - { - integrity: sha512-6TVU49mK6KZb4qG6xWaaM4C7sA/sgUMLy/JYMOzkcp3BvVLpW0fXDFQiIzAuxFCt/2+xD7fNIiPFAoLZPhVNLQ==, - } - engines: { node: '>=6.0' } - - agent-base@4.3.0: - resolution: - { - integrity: sha512-salcGninV0nPrwpGNn4VTXBb1SOuXQBiqbrNXoeizJsHrsL6ERFM2Ne3JUSBWRE6aeNJI2ROP/WEEIDUiDe3cg==, - } - engines: { node: '>= 4.0.0' } - - agent-base@6.0.2: - resolution: - { - integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==, - } - engines: { node: '>= 6.0.0' } - - agent-base@7.1.1: - resolution: - { - integrity: sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==, - } - engines: { node: '>= 14' } - - agentkeepalive@4.5.0: - resolution: - { - integrity: sha512-5GG/5IbQQpC9FpkRGsSvZI5QYeSCzlJHdpBQntCsuTOxhKD8lqKhrleg2Yi7yvMIf82Ycmmqln9U8V9qwEiJew==, - } - engines: { node: '>= 8.0.0' } - - aggregate-error@3.1.0: - resolution: - { - integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==, - } - engines: { node: '>=8' } - - ajv-errors@1.0.1: - resolution: - { - integrity: sha512-DCRfO/4nQ+89p/RK43i8Ezd41EqdGIU4ld7nGF8OQ14oc/we5rEntLCUa7+jrn3nn83BosfwZA0wb4pon2o8iQ==, - } - peerDependencies: - ajv: '>=5.0.0' - - ajv-formats@2.1.1: - resolution: - { - integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==, - } - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv-formats@3.0.1: - resolution: - { - integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==, - } - peerDependencies: - ajv: ^8.0.0 - peerDependenciesMeta: - ajv: - optional: true - - ajv-i18n@4.2.0: - resolution: - { - integrity: sha512-v/ei2UkCEeuKNXh8RToiFsUclmU+G57LO1Oo22OagNMENIw+Yb8eMwvHu7Vn9fmkjJyv6XclhJ8TbuigSglPkg==, - } - peerDependencies: - ajv: ^8.0.0-beta.0 - - ajv-keywords@3.5.2: - resolution: - { - integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==, - } - peerDependencies: - ajv: ^6.9.1 - - ajv-keywords@5.1.0: - resolution: - { - integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==, - } - peerDependencies: - ajv: ^8.8.2 - - ajv@6.12.6: - resolution: - { - integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, - } - - ajv@8.13.0: - resolution: - { - integrity: sha512-PRA911Blj99jR5RMeTunVbNXMF6Lp4vZXnk5GQjcnUWUTsrXtekg/pnmFFI2u/I36Y/2bITGS30GZCXei6uNkA==, - } - - ajv@8.17.1: - resolution: - { - integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==, - } - - ansi-colors@3.2.4: - resolution: - { - integrity: sha512-hHUXGagefjN2iRrID63xckIvotOXOojhQKWIPUZ4mNUZ9nLZW+7FMNoE1lOkEhNWYsx/7ysGIuJYCiMAA9FnrA==, - } - engines: { node: '>=6' } - - ansi-colors@4.1.1: - resolution: - { - integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==, - } - engines: { node: '>=6' } - - ansi-colors@4.1.3: - resolution: - { - integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==, - } - engines: { node: '>=6' } - - ansi-escapes@3.2.0: - resolution: - { - integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==, - } - engines: { node: '>=4' } - - ansi-escapes@4.3.2: - resolution: - { - integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, - } - engines: { node: '>=8' } - - ansi-escapes@7.0.0: - resolution: - { - integrity: sha512-GdYO7a61mR0fOlAsvC9/rIHf7L96sBc6dEWzeOu+KAea5bZyQRPIpojrVoI4AXGJS/ycu/fBTdLrUkA4ODrvjw==, - } - engines: { node: '>=18' } - - ansi-html-community@0.0.8: - resolution: - { - integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==, - } - engines: { '0': node >= 0.8.0 } - hasBin: true - - ansi-regex@2.1.1: - resolution: - { - integrity: sha512-TIGnTpdo+E3+pCyAluZvtED5p5wCqLdezCyhPZzKPcxvFplEt4i+W7OONCKgeZFT3+y5NZZfOOS/Bdcanm1MYA==, - } - engines: { node: '>=0.10.0' } - - ansi-regex@3.0.1: - resolution: - { - integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==, - } - engines: { node: '>=4' } - - ansi-regex@4.1.1: - resolution: - { - integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==, - } - engines: { node: '>=6' } - - ansi-regex@5.0.1: - resolution: - { - integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, - } - engines: { node: '>=8' } - - ansi-regex@6.0.1: - resolution: - { - integrity: sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==, - } - engines: { node: '>=12' } - - ansi-sequence-parser@1.1.1: - resolution: - { - integrity: sha512-vJXt3yiaUL4UU546s3rPXlsry/RnM730G1+HkpKE012AN0sx1eOrxSu95oKDIonskeLTijMgqWZ3uDEe3NFvyg==, - } - - ansi-styles@2.2.1: - resolution: - { - integrity: sha512-kmCevFghRiWM7HB5zTPULl4r9bVFSWjz62MhqizDGUrq2NWuNMQyuv4tHHoKJHs69M/MF64lEcHdYIocrdWQYA==, - } - engines: { node: '>=0.10.0' } - - ansi-styles@3.2.1: - resolution: - { - integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, - } - engines: { node: '>=4' } - - ansi-styles@4.3.0: - resolution: - { - integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, - } - engines: { node: '>=8' } - - ansi-styles@5.2.0: - resolution: - { - integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, - } - engines: { node: '>=10' } - - ansi-styles@6.2.1: - resolution: - { - integrity: sha512-bN798gFfQX+viw3R7yrGWRqnrN2oRkEkUjjl4JNn4E8GxxbjtG3FbrEIIY3l8/hrwUwIeCZvi4QuOTP4MErVug==, - } - engines: { node: '>=12' } - - any-promise@1.3.0: - resolution: - { - integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==, - } - - anymatch@3.1.3: - resolution: - { - integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, - } - engines: { node: '>= 8' } - - append-buffer@1.0.2: - resolution: - { - integrity: sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==, - } - engines: { node: '>=0.10.0' } - - append-transform@2.0.0: - resolution: - { - integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==, - } - engines: { node: '>=8' } - - aproba@1.2.0: - resolution: - { - integrity: sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw==, - } - - aproba@2.0.0: - resolution: - { - integrity: sha512-lYe4Gx7QT+MKGbDsA+Z+he/Wtef0BiwDOlK/XkBrdfsh9J/jPPXbX0tE9x9cl27Tmu5gg3QUbUrQYa/y+KOHPQ==, - } - - arch@2.2.0: - resolution: - { - integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==, - } - - archy@1.0.0: - resolution: - { - integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==, - } - - are-we-there-yet@2.0.0: - resolution: - { - integrity: sha512-Ci/qENmwHnsYo9xKIcUJN5LeDKdJ6R1Z1j9V/J5wyq8nh/mYPEpIKJbBZXtZjG04HiK7zV/p6Vs9952MrMeUIw==, - } - engines: { node: '>=10' } - deprecated: This package is no longer supported. - - are-we-there-yet@3.0.1: - resolution: - { - integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==, - } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - deprecated: This package is no longer supported. - - are-we-there-yet@4.0.2: - resolution: - { - integrity: sha512-ncSWAawFhKMJDTdoAeOV+jyW1VCMj5QIAwULIBV0SSR7B/RLPPEQiknKcg/RIIZlUQrxELpsxMiTUoAQ4sIUyg==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - deprecated: This package is no longer supported. - - arg@4.1.3: - resolution: - { - integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==, - } - - argparse@1.0.10: - resolution: - { - integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, - } - - argparse@2.0.1: - resolution: - { - integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, - } - - aria-query@5.3.2: - resolution: - { - integrity: sha512-COROpnaoap1E2F000S62r6A60uHZnmlvomhfyT2DlTcrY1OrBKn2UhH7qn5wTC9zMvD0AY7csdPSNwKP+7WiQw==, - } - engines: { node: '>= 0.4' } - - array-buffer-byte-length@1.0.1: - resolution: - { - integrity: sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==, - } - engines: { node: '>= 0.4' } - - array-differ@3.0.0: - resolution: - { - integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==, - } - engines: { node: '>=8' } - - array-find-index@1.0.2: - resolution: - { - integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==, - } - engines: { node: '>=0.10.0' } - - array-flatten@1.1.1: - resolution: - { - integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==, - } - - array-ify@1.0.0: - resolution: - { - integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==, - } - - array-includes@3.1.8: - resolution: - { - integrity: sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==, - } - engines: { node: '>= 0.4' } - - array-union@1.0.2: - resolution: - { - integrity: sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==, - } - engines: { node: '>=0.10.0' } - - array-union@2.1.0: - resolution: - { - integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, - } - engines: { node: '>=8' } - - array-uniq@1.0.3: - resolution: - { - integrity: sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==, - } - engines: { node: '>=0.10.0' } - - array.prototype.filter@1.0.4: - resolution: - { - integrity: sha512-r+mCJ7zXgXElgR4IRC+fkvNCeoaavWBs6EdCso5Tbcf+iEMKzBU/His60lt34WEZ9vlb8wDkZvQGcVI5GwkfoQ==, - } - engines: { node: '>= 0.4' } - - array.prototype.findlast@1.2.5: - resolution: - { - integrity: sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==, - } - engines: { node: '>= 0.4' } - - array.prototype.findlastindex@1.2.5: - resolution: - { - integrity: sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==, - } - engines: { node: '>= 0.4' } - - array.prototype.flat@1.3.2: - resolution: - { - integrity: sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==, - } - engines: { node: '>= 0.4' } - - array.prototype.flatmap@1.3.2: - resolution: - { - integrity: sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==, - } - engines: { node: '>= 0.4' } - - array.prototype.toreversed@1.1.2: - resolution: - { - integrity: sha512-wwDCoT4Ck4Cz7sLtgUmzR5UV3YF5mFHUlbChCzZBQZ+0m2cl/DH3tKgvphv1nKgFsJ48oCSg6p91q2Vm0I/ZMA==, - } - - array.prototype.tosorted@1.1.3: - resolution: - { - integrity: sha512-/DdH4TiTmOKzyQbp/eadcCVexiCb36xJg7HshYOYJnNZFDj33GEv0P7GxsynpShhq4OLYJzbGcBDkLsDt7MnNg==, - } - - arraybuffer.prototype.slice@1.0.3: - resolution: - { - integrity: sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==, - } - engines: { node: '>= 0.4' } - - arrgv@1.0.2: - resolution: - { - integrity: sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==, - } - engines: { node: '>=8.0.0' } - - arrify@1.0.1: - resolution: - { - integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==, - } - engines: { node: '>=0.10.0' } - - arrify@2.0.1: - resolution: - { - integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==, - } - engines: { node: '>=8' } - - arrify@3.0.0: - resolution: - { - integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==, - } - engines: { node: '>=12' } - - asap@2.0.6: - resolution: - { - integrity: sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==, - } - - asn1.js@4.10.1: - resolution: - { - integrity: sha512-p32cOF5q0Zqs9uBiONKYLm6BClCoBCM5O9JfeUSlnQLBTxYdTK+pW+nXflm8UkKd2UYlEbYz5qEi0JuZR9ckSw==, - } - - asn1@0.2.6: - resolution: - { - integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==, - } - - assert-plus@1.0.0: - resolution: - { - integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==, - } - engines: { node: '>=0.8' } - - assert@2.1.0: - resolution: - { - integrity: sha512-eLHpSK/Y4nhMJ07gDaAzoX/XAKS8PSaojml3M0DM4JpV1LAi5JOJ/p6H/XWrl8L+DzVEvVCW1z3vWAaB9oTsQw==, - } - - assertion-error@1.1.0: - resolution: - { - integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==, - } - - ast-types@0.9.6: - resolution: - { - integrity: sha512-qEdtR2UH78yyHX/AUNfXmJTlM48XoFZKBdwi1nzkI1mJL21cmbu0cvjxjpkXJ5NENMq42H+hNs8VLJcqXLerBQ==, - } - engines: { node: '>= 0.8' } - - async-sema@3.1.1: - resolution: - { - integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==, - } - - async@2.6.4: - resolution: - { - integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==, - } - - async@3.2.5: - resolution: - { - integrity: sha512-baNZyqaaLhyLVKm/DlvdW051MSgO6b8eVfIezl9E5PqWxFgzLm/wQntEW4zOytVburDEr0JlALEpdOFwvErLsg==, - } - - asynckit@0.4.0: - resolution: - { - integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, - } - - at-least-node@1.0.0: - resolution: - { - integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==, - } - engines: { node: '>= 4.0.0' } - - atob@2.1.2: - resolution: - { - integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==, - } - engines: { node: '>= 4.5.0' } - hasBin: true - - autoprefixer@10.4.19: - resolution: - { - integrity: sha512-BaENR2+zBZ8xXhM4pUaKUxlVdxZ0EZhjvbopwnXmxRUfqDmwSpC2lAi/QXvx7NRdPCo1WKEcEF6mV64si1z4Ew==, - } - engines: { node: ^10 || ^12 || >=14 } - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - autoprefixer@10.4.20: - resolution: - { - integrity: sha512-XY25y5xSv/wEoqzDyXXME4AFfkZI0P23z6Fs3YgymDnKJkCGOnkL0iTxCa85UTqaSgfcqyf3UA6+c7wUvx/16g==, - } - engines: { node: ^10 || ^12 || >=14 } - hasBin: true - peerDependencies: - postcss: ^8.1.0 - - ava@6.1.3: - resolution: - { - integrity: sha512-tkKbpF1pIiC+q09wNU9OfyTDYZa8yuWvU2up3+lFJ3lr1RmnYh2GBpPwzYUEB0wvTPIUysGjcZLNZr7STDviRA==, - } - engines: { node: ^18.18 || ^20.8 || ^21 || ^22 } - hasBin: true - peerDependencies: - '@ava/typescript': '*' - peerDependenciesMeta: - '@ava/typescript': - optional: true - - available-typed-arrays@1.0.7: - resolution: - { - integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==, - } - engines: { node: '>= 0.4' } - - aws-sign2@0.7.0: - resolution: - { - integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==, - } - - aws4@1.13.0: - resolution: - { - integrity: sha512-3AungXC4I8kKsS9PuS4JH2nc+0bVY/mjgrephHTIi8fpEeGsTHBUJeosp0Wc1myYMElmD0B3Oc4XL/HVJ4PV2g==, - } - - axios@1.7.2: - resolution: - { - integrity: sha512-2A8QhOMrbomlDuiLeK9XibIBzuHeRcqqNOHp0Cyp5EoJ1IFDh+XZH3A6BkXtv0K4gFGCI0Y4BM7B1wOEi0Rmgw==, - } - - axobject-query@4.1.0: - resolution: - { - integrity: sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==, - } - engines: { node: '>= 0.4' } - - babel-jest@27.5.1: - resolution: - { - integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==, - } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - peerDependencies: - '@babel/core': ^7.8.0 - - babel-loader@8.3.0: - resolution: - { - integrity: sha512-H8SvsMF+m9t15HNLMipppzkC+Y2Yq+v3SonZyU70RBL/h1gxPkH08Ot8pEE9Z4Kd+czyWJClmFS8qzIP9OZ04Q==, - } - engines: { node: '>= 8.9' } - peerDependencies: - '@babel/core': ^7.0.0 - webpack: '>=2' - - babel-loader@9.1.3: - resolution: - { - integrity: sha512-xG3ST4DglodGf8qSwv0MdeWLhrDsw/32QMdTO5T1ZIp9gQur0HkCyFs7Awskr10JKXFXwpAhiCuYX5oGXnRGbw==, - } - engines: { node: '>= 14.15.0' } - peerDependencies: - '@babel/core': ^7.12.0 - webpack: '>=5' - - babel-plugin-dynamic-import-node@2.3.3: - resolution: - { - integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==, - } - - babel-plugin-istanbul@6.1.1: - resolution: - { - integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==, - } - engines: { node: '>=8' } - - babel-plugin-jest-hoist@27.5.1: - resolution: - { - integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==, - } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - - babel-plugin-macros@3.1.0: - resolution: - { - integrity: sha512-Cg7TFGpIr01vOQNODXOOaGz2NpCU5gl8x1qJFbb6hbZxR7XrcE2vtbAsTAbJ7/xwJtUuJEw8K8Zr/AE0LHlesg==, - } - engines: { node: '>=10', npm: '>=6' } - - babel-plugin-polyfill-corejs2@0.4.11: - resolution: - { - integrity: sha512-sMEJ27L0gRHShOh5G54uAAPaiCOygY/5ratXuiyb2G46FmlSpc9eFCzYVyDiPxfNbwzA7mYahmjQc5q+CZQ09Q==, - } - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-corejs3@0.10.4: - resolution: - { - integrity: sha512-25J6I8NGfa5YkCDogHRID3fVCadIR8/pGl1/spvCkzb6lVn6SR3ojpx9nOn9iEBcUsjY24AmdKm5khcfKdylcg==, - } - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-plugin-polyfill-regenerator@0.6.2: - resolution: - { - integrity: sha512-2R25rQZWP63nGwaAswvDazbPXfrM3HwVoBXK6HcqeKrSrL/JqcC/rDcf95l4r7LXLyxDXc8uQDa064GubtCABg==, - } - peerDependencies: - '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - - babel-preset-current-node-syntax@1.0.1: - resolution: - { - integrity: sha512-M7LQ0bxarkxQoN+vz5aJPsLBn77n8QgTFmo8WK0/44auK2xlCXrYcUxHFxgU7qW5Yzw/CjmLRK2uJzaCd7LvqQ==, - } - peerDependencies: - '@babel/core': ^7.0.0 - - babel-preset-jest@27.5.1: - resolution: - { - integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==, - } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - peerDependencies: - '@babel/core': ^7.0.0 - - balanced-match@1.0.2: - resolution: - { - integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, - } - - base64-js@1.5.1: - resolution: - { - integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, - } - - base64id@2.0.0: - resolution: - { - integrity: sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==, - } - engines: { node: ^4.5.0 || >= 5.9 } - - basic-auth@2.0.1: - resolution: - { - integrity: sha512-NF+epuEdnUYVlGuhaxbbq+dvJttwLnGY+YixlXlME5KpQ5W3CnXA5cVTneY3SPbPDRkcjMbifrwmFYcClgOZeg==, - } - engines: { node: '>= 0.8' } - - batch@0.6.1: - resolution: - { - integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==, - } - - bcrypt-pbkdf@1.0.2: - resolution: - { - integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==, - } - - before-after-hook@2.2.3: - resolution: - { - integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==, - } - - better-path-resolve@1.0.0: - resolution: - { - integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==, - } - engines: { node: '>=4' } - - big.js@5.2.2: - resolution: - { - integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==, - } - - bin-links@4.0.4: - resolution: - { - integrity: sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - binary-extensions@2.3.0: - resolution: - { - integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==, - } - engines: { node: '>=8' } - - bindings@1.5.0: - resolution: - { - integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==, - } - - bl@4.1.0: - resolution: - { - integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, - } - - blocking-proxy@1.0.1: - resolution: - { - integrity: sha512-KE8NFMZr3mN2E0HcvCgRtX7DjhiIQrwle+nSVJVC/yqFb9+xznHl2ZcoBp2L9qzkI4t4cBFJ1efXF8Dwi132RA==, - } - engines: { node: '>=6.9.x' } - hasBin: true - - bluebird@3.7.2: - resolution: - { - integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==, - } - - blueimp-md5@2.19.0: - resolution: - { - integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==, - } - - bn.js@4.12.0: - resolution: - { - integrity: sha512-c98Bf3tPniI+scsdk237ku1Dc3ujXQTSgyiPUDEOe7tRkhrqridvh8klBv0HCEso1OLOYcHuCv/cS6DNxKH+ZA==, - } - - bn.js@5.2.1: - resolution: - { - integrity: sha512-eXRvHzWyYPBuB4NBy0cmYQjGitUrtqwbvlzP3G6VFnNRbsZQIxQ10PbKKHt8gZ/HW/D/747aDl+QkDqg3KQLMQ==, - } - - body-parser@1.20.2: - resolution: - { - integrity: sha512-ml9pReCu3M61kGlqoTm2umSXTlRTuGTx0bfYj+uIUKKYycG5NtSbeetV3faSU6R7ajOPw0g/J1PvK4qNy7s5bA==, - } - engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 } - - bonjour-service@1.2.1: - resolution: - { - integrity: sha512-oSzCS2zV14bh2kji6vNe7vrpJYCHGvcZnlffFQ1MEoX/WOeQ/teD8SYWKR942OI3INjq8OMNJlbPK5LLLUxFDw==, - } - - boolbase@1.0.0: - resolution: - { - integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, - } - - brace-expansion@1.1.11: - resolution: - { - integrity: sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==, - } - - brace-expansion@2.0.1: - resolution: - { - integrity: sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==, - } - - braces@3.0.3: - resolution: - { - integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, - } - engines: { node: '>=8' } - - brorand@1.1.0: - resolution: - { - integrity: sha512-cKV8tMCEpQs4hK/ik71d6LrPOnpkpGBR0wzxqr68g2m/LB2GxVYQroAjMJZRVM1Y4BCjCKc3vAamxSzOY2RP+w==, - } - - browser-process-hrtime@1.0.0: - resolution: - { - integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==, - } - - browser-resolve@2.0.0: - resolution: - { - integrity: sha512-7sWsQlYL2rGLy2IWm8WL8DCTJvYLc/qlOnsakDac87SOoCd16WLsaAMdCiAqsTNHIe+SXfaqyxyo6THoWqs8WQ==, - } - - browser-stdout@1.3.1: - resolution: - { - integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==, - } - - browserify-aes@1.2.0: - resolution: - { - integrity: sha512-+7CHXqGuspUn/Sl5aO7Ea0xWGAtETPXNSAjHo48JfLdPWcMng33Xe4znFvQweqc/uzk5zSOI3H52CYnjCfb5hA==, - } - - browserify-cipher@1.0.1: - resolution: - { - integrity: sha512-sPhkz0ARKbf4rRQt2hTpAHqn47X3llLkUGn+xEJzLjwY8LRs2p0v7ljvI5EyoRO/mexrNunNECisZs+gw2zz1w==, - } - - browserify-des@1.0.2: - resolution: - { - integrity: sha512-BioO1xf3hFwz4kc6iBhI3ieDFompMhrMlnDFC4/0/vd5MokpuAc3R+LYbwTA9A5Yc9pq9UYPqffKpW2ObuwX5A==, - } - - browserify-rsa@4.1.0: - resolution: - { - integrity: sha512-AdEER0Hkspgno2aR97SAf6vi0y0k8NuOpGnVH3O99rcA5Q6sh8QxcngtHuJ6uXwnfAXNM4Gn1Gb7/MV1+Ymbog==, - } - - browserify-sign@4.2.3: - resolution: - { - integrity: sha512-JWCZW6SKhfhjJxO8Tyiiy+XYB7cqd2S5/+WeYHsKdNKFlCBhKbblba1A/HN/90YwtxKc8tCErjffZl++UNmGiw==, - } - engines: { node: '>= 0.12' } - - browserify-zlib@0.2.0: - resolution: - { - integrity: sha512-Z942RysHXmJrhqk88FmKBVq/v5tqmSkDz7p54G/MGyjMnCFFnC79XWNbg+Vta8W6Wb2qtSZTSxIGkJrRpCFEiA==, - } - - browserslist@4.23.0: - resolution: - { - integrity: sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==, - } - engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } - hasBin: true - - browserslist@4.24.2: - resolution: - { - integrity: sha512-ZIc+Q62revdMcqC6aChtW4jz3My3klmCO1fEmINZY/8J3EpBg5/A/D0AKmBveUh6pgoeycoMkVMko84tuYS+Gg==, - } - engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } - hasBin: true - - browserstack@1.6.1: - resolution: - { - integrity: sha512-GxtFjpIaKdbAyzHfFDKixKO8IBT7wR3NjbzrGc78nNs/Ciys9wU3/nBtsqsWv5nDSrdI5tz0peKuzCPuNXNUiw==, - } - - bs-logger@0.2.6: - resolution: - { - integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==, - } - engines: { node: '>= 6' } - - bser@2.1.1: - resolution: - { - integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==, - } - - buffer-equal@1.0.1: - resolution: - { - integrity: sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==, - } - engines: { node: '>=0.4' } - - buffer-from@1.1.2: - resolution: - { - integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, - } - - buffer-xor@1.0.3: - resolution: - { - integrity: sha512-571s0T7nZWK6vB67HI5dyUF7wXiNcfaPPPTl6zYCNApANjIvYJTg7hlud/+cJpdAhS7dVzqMLmfhfHR3rAcOjQ==, - } - - buffer@5.7.1: - resolution: - { - integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, - } - - builtin-modules@3.3.0: - resolution: - { - integrity: sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==, - } - engines: { node: '>=6' } - - builtin-status-codes@3.0.0: - resolution: - { - integrity: sha512-HpGFw18DgFWlncDfjTa2rcQ4W88O1mC8e8yZ2AvQY5KDaktSTwo+KRf6nHK6FRI5FyRyb/5T6+TSxfP7QyGsmQ==, - } - - builtins@1.0.3: - resolution: - { - integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==, - } - - builtins@5.1.0: - resolution: - { - integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==, - } - - bundle-name@4.1.0: - resolution: - { - integrity: sha512-tjwM5exMg6BGRI+kNmTntNsvdZS1X8BFYS6tnJ2hdH0kVxM6/eVZ2xy+FqStSWvYmtfFMDLIxurorHwDKfDz5Q==, - } - engines: { node: '>=18' } - - byte-size@7.0.0: - resolution: - { - integrity: sha512-NNiBxKgxybMBtWdmvx7ZITJi4ZG+CYUgwOSZTfqB1qogkRHrhbQE/R2r5Fh94X+InN5MCYz6SvB/ejHMj/HbsQ==, - } - engines: { node: '>=10' } - - bytes@3.0.0: - resolution: - { - integrity: sha512-pMhOfFDPiv9t5jjIXkHosWmkSyQbvsgEVNkz0ERHbuLh2T/7j4Mqqpz523Fe8MVY89KC6Sh/QfS2sM+SjgFDcw==, - } - engines: { node: '>= 0.8' } - - bytes@3.1.2: - resolution: - { - integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==, - } - engines: { node: '>= 0.8' } - - cac@6.7.14: - resolution: - { - integrity: sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==, - } - engines: { node: '>=8' } - - cacache@12.0.4: - resolution: - { - integrity: sha512-a0tMB40oefvuInr4Cwb3GerbL9xTj1D5yg0T5xrjGCGyfvbxseIXX7BAO/u/hIXdafzOI5JC3wDwHyf24buOAQ==, - } - - cacache@16.1.3: - resolution: - { - integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==, - } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - - cacache@17.1.4: - resolution: - { - integrity: sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==, - } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - - cacache@18.0.3: - resolution: - { - integrity: sha512-qXCd4rh6I07cnDqh8V48/94Tc/WSfj+o3Gn6NZ0aZovS255bUx8O13uKxRFd2eWG0xgsco7+YItQNPaa5E85hg==, - } - engines: { node: ^16.14.0 || >=18.0.0 } - - caching-transform@4.0.0: - resolution: - { - integrity: sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==, - } - engines: { node: '>=8' } + version: 2.8.1 + typedoc: + specifier: ~0.25.3 + version: 0.25.13(typescript@5.5.4) + typescript: + specifier: ~5.5.0 + version: 5.5.4 + vue: + specifier: ^3.4.21 + version: 3.5.25(typescript@5.5.4) + vue-jest: + specifier: ^5.0.0-0 + version: 5.0.0-alpha.10(@babel/core@7.28.5)(babel-jest@27.5.1(@babel/core@7.28.5))(jest@27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4)))(typescript@5.5.4)(vue@3.5.25(typescript@5.5.4)) - call-bind@1.0.7: +packages: + '@achrinza/node-ipc@9.2.9': resolution: { - integrity: sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==, + integrity: sha512-7s0VcTwiK/0tNOVdSX9FWMeFdOEcsAOz9HesBldXxFMaGvIak7KC2z9tV9EgsQXn6KUsWsfIkViMNuIo0GoZDQ==, } - engines: { node: '>= 0.4' } - - callsites@3.1.0: - resolution: + engines: { - integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, + node: 8 || 9 || 10 || 11 || 12 || 13 || 14 || 15 || 16 || 17 || 18 || 19 || 20 || 21 || 22, } - engines: { node: '>=6' } - callsites@4.1.0: + '@angular-devkit/architect@0.1802.21': resolution: { - integrity: sha512-aBMbD1Xxay75ViYezwT40aQONfr+pSXTHwNKvIXhXD6+LY3F1dLIcceoC5OZKBVHbXcysz1hL9D2w0JJIMXpUw==, + integrity: sha512-+Ll+xtpKwZ3iLWN/YypvnCZV/F0MVbP+/7ZpMR+Xv/uB0OmribhBVj9WGaCd9I/bGgoYBw8wBV/NFNCKkf0k3Q==, } - engines: { node: '>=12.20' } - - camel-case@3.0.0: - resolution: + engines: { - integrity: sha512-+MbKztAYHXPr1jNTSKQF52VpcFjwY5RkR7fxksV8Doo4KAYc5Fl4UJRgthBbTmEx8C54DqahhbLJkDwjI3PI/w==, + node: ^18.19.1 || ^20.11.1 || >=22.0.0, + npm: ^6.11.0 || ^7.5.6 || >=8.0.0, + yarn: '>= 1.13.0', } - camel-case@4.1.2: + '@angular-devkit/core@18.2.21': resolution: { - integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==, + integrity: sha512-Lno6GNbJME85wpc/uqn+wamBxvfZJZFYSH8+oAkkyjU/hk8r5+X8DuyqsKAa0m8t46zSTUsonHsQhVe5vgrZeQ==, } - - camelcase-keys@6.2.2: - resolution: + engines: { - integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==, + node: ^18.19.1 || ^20.11.1 || >=22.0.0, + npm: ^6.11.0 || ^7.5.6 || >=8.0.0, + yarn: '>= 1.13.0', } - engines: { node: '>=8' } + peerDependencies: + chokidar: ^3.5.2 + peerDependenciesMeta: + chokidar: + optional: true - camelcase@5.3.1: + '@angular-devkit/schematics@18.2.21': resolution: { - integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==, + integrity: sha512-yuC2vN4VL48JhnsaOa9J/o0Jl+cxOklRNQp5J2/ypMuRROaVCrZAPiX+ChSHh++kHYMpj8+ggNrrUwRNfMKACQ==, } - engines: { node: '>=6' } - - camelcase@6.3.0: - resolution: + engines: { - integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, + node: ^18.19.1 || ^20.11.1 || >=22.0.0, + npm: ^6.11.0 || ^7.5.6 || >=8.0.0, + yarn: '>= 1.13.0', } - engines: { node: '>=10' } - caniuse-api@3.0.0: + '@angular/cli@18.2.21': resolution: { - integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==, + integrity: sha512-efweY4p8awRTbHs+HKdg6s44hl7Y0gdVlXYi3HeY8Z5JDC0abbka0K6sA/MrV9AXvn/5ovxYbxiL3AsOApjTpg==, } - - caniuse-lite@1.0.30001621: - resolution: + engines: { - integrity: sha512-+NLXZiviFFKX0fk8Piwv3PfLPGtRqJeq2TiNoUff/qB5KJgwecJTvCXDpmlyP/eCI/GUEmp/h/y5j0yckiiZrA==, + node: ^18.19.1 || ^20.11.1 || >=22.0.0, + npm: ^6.11.0 || ^7.5.6 || >=8.0.0, + yarn: '>= 1.13.0', } + hasBin: true - caniuse-lite@1.0.30001685: + '@angular/core@18.2.14': resolution: { - integrity: sha512-e/kJN1EMyHQzgcMEEgoo+YTCO1NGCmIYHk5Qk8jT6AazWemS5QFKJ5ShCJlH3GZrNIdZofcNCEwZqbMjjKzmnA==, + integrity: sha512-BIPrCs93ZZTY9ym7yfoTgAQ5rs706yoYeAdrgc8kh/bDbM9DawxKlgeKBx2FLt09Y0YQ1bFhKVp0cV4gDEaMxQ==, } + engines: { node: ^18.19.1 || ^20.11.1 || >=22.0.0 } + peerDependencies: + rxjs: ^6.5.3 || ^7.4.0 + zone.js: ~0.14.10 - case-sensitive-paths-webpack-plugin@2.4.0: + '@babel/code-frame@7.27.1': resolution: { - integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==, + integrity: sha512-cjQ7ZlQ0Mv3b47hABuTevyTuYN4i+loJKGeV9flcCgIK37cCXRh+L1bd3iBHlynerhQ7BhCkn2BPbQUL+rGqFg==, } - engines: { node: '>=4' } + engines: { node: '>=6.9.0' } - caseless@0.12.0: + '@babel/compat-data@7.28.5': resolution: { - integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==, + integrity: sha512-6uFXyCayocRbqhZOB+6XcuZbkMNimwfVGFji8CTZnCzOHVGvDqzvitu1re2AU5LROliz7eQPhB8CpAMvnx9EjA==, } + engines: { node: '>=6.9.0' } - cbor@9.0.2: + '@babel/core@7.28.5': resolution: { - integrity: sha512-JPypkxsB10s9QOWwa6zwPzqE1Md3vqpPc+cai4sAecuCsRyAtAl/pMyhPlMbT/xtPnm2dznJZYRLui57qiRhaQ==, + integrity: sha512-e7jT4DxYvIDLk1ZHmU/m/mB19rex9sv0c2ftBtjSBv+kVM/902eh0fINUzD7UwLLNR+jU585GxUJ8/EBfAM5fw==, } - engines: { node: '>=16' } + engines: { node: '>=6.9.0' } - chai@4.4.1: + '@babel/generator@7.28.5': resolution: { - integrity: sha512-13sOfMv2+DWduEU+/xbun3LScLoqN17nBeTLUsmDfKdoiC1fr0n9PU4guu4AhRcOVFk/sW8LyZWHuhWtQZiF+g==, + integrity: sha512-3EwLFhZ38J4VyIP6WNtt2kUdW9dokXA9Cr4IVIFHuCpZ3H8/YFOl5JjZHisrn1fATPBmKKqXzDFvh9fUwHz6CQ==, } - engines: { node: '>=4' } + engines: { node: '>=6.9.0' } - chalk@1.1.3: + '@babel/helper-annotate-as-pure@7.27.3': resolution: { - integrity: sha512-U3lRVLMSlsCfjqYPbLyVv11M9CPW4I728d6TCKMAOJueEeB9/8o+eSsMnxPJD+Q+K909sdESg7C+tIkoH6on1A==, + integrity: sha512-fXSwMQqitTGeHLBC08Eq5yXz2m37E4pJX1qAU1+2cNedz/ifv/bVXft90VeSav5nFO61EcNgwr0aJxbyPaWBPg==, } - engines: { node: '>=0.10.0' } + engines: { node: '>=6.9.0' } - chalk@2.4.2: + '@babel/helper-compilation-targets@7.27.2': resolution: { - integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, + integrity: sha512-2+1thGUUWWjLTYTHZWK1n8Yga0ijBz1XAhUXcKy81rd5g6yh7hGqMp45v7cadSbEHc9G3OTv45SyneRN3ps4DQ==, } - engines: { node: '>=4' } + engines: { node: '>=6.9.0' } - chalk@3.0.0: + '@babel/helper-create-class-features-plugin@7.28.5': resolution: { - integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==, + integrity: sha512-q3WC4JfdODypvxArsJQROfupPBq9+lMwjKq7C33GhbFYJsufD0yd/ziwD+hJucLeWsnFPWZjsU2DNFqBPE7jwQ==, } - engines: { node: '>=8' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 - chalk@4.1.0: + '@babel/helper-create-regexp-features-plugin@7.28.5': resolution: { - integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==, + integrity: sha512-N1EhvLtHzOvj7QQOUCCS3NrPJP8c5W6ZXCHDn7Yialuy1iu4r5EmIYkXlKNqT99Ciw+W0mDqWoR6HWMZlFP3hw==, } - engines: { node: '>=10' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 - chalk@4.1.2: + '@babel/helper-define-polyfill-provider@0.6.5': resolution: { - integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, + integrity: sha512-uJnGFcPsWQK8fvjgGP5LZUZZsYGIoPeRjSF5PGwrelYgq7Q15/Ft9NGFp1zglwgIv//W0uG4BevRuSJRyylZPg==, } - engines: { node: '>=10' } + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - chalk@5.3.0: + '@babel/helper-globals@7.28.0': resolution: { - integrity: sha512-dLitG79d+GV1Nb/VYcCDFivJeK1hiukt9QjRNVOsUtTy1rR1YJsmpGGTZ3qJos+uw7WmWF4wUwBd9jxjocFC2w==, + integrity: sha512-+W6cISkXFa1jXsDEdYA8HeevQT/FULhxzR99pxphltZcVaugps53THCeiWA8SguxxpSp3gKPiuYfSWopkLQ4hw==, } - engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } + engines: { node: '>=6.9.0' } - char-regex@1.0.2: + '@babel/helper-member-expression-to-functions@7.28.5': resolution: { - integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==, + integrity: sha512-cwM7SBRZcPCLgl8a7cY0soT1SptSzAlMH39vwiRpOQkJlh53r5hdHwLSCZpQdVLT39sZt+CRpNwYG4Y2v77atg==, } - engines: { node: '>=10' } + engines: { node: '>=6.9.0' } - chardet@0.7.0: + '@babel/helper-module-imports@7.27.1': resolution: { - integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==, + integrity: sha512-0gSFWUPNXNopqtIPQvlD5WgXYI5GY2kP2cCvoT8kczjbfcfuIljTbcWrulD1CIPIX2gt1wghbDy08yE1p+/r3w==, } + engines: { node: '>=6.9.0' } - check-error@1.0.3: + '@babel/helper-module-transforms@7.28.3': resolution: { - integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==, + integrity: sha512-gytXUbs8k2sXS9PnQptz5o0QnpLL51SwASIORY6XaBKF88nsOT0Zw9szLqlSGQDP/4TljBAD5y98p2U1fqkdsw==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 - cheerio-select@2.1.0: + '@babel/helper-optimise-call-expression@7.27.1': resolution: { - integrity: sha512-9v9kG0LvzrlcungtnJtpGNxY+fzECQKhK4EGJX2vByejiMX84MFNQw4UxPJl3bFbTMw+Dfs37XaIkCwTZfLh4g==, + integrity: sha512-URMGH08NzYFhubNSGJrpUEphGKQwMQYBySzat5cAByY1/YgIRkULnIy3tAMeszlL/so2HbeilYloUmSpd7GdVw==, } + engines: { node: '>=6.9.0' } - cheerio@1.0.0-rc.12: + '@babel/helper-plugin-utils@7.27.1': resolution: { - integrity: sha512-VqR8m68vM46BNnuZ5NtnGBKIE/DfN0cRIzg9n40EIq9NOv90ayxLBXA8fXC5gquFRGJSTRqBq25Jt2ECLR431Q==, + integrity: sha512-1gn1Up5YXka3YYAHGKpbideQ5Yjf1tDa9qYcgysz+cNCXukyLl6DjPXhD3VRwSb8c0J9tA4b2+rHEZtc6R0tlw==, } - engines: { node: '>= 6' } + engines: { node: '>=6.9.0' } - chokidar@3.5.1: + '@babel/helper-remap-async-to-generator@7.27.1': resolution: { - integrity: sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==, + integrity: sha512-7fiA521aVw8lSPeI4ZOD3vRFkoqkJcS+z4hFo82bFSH/2tNd6eJ5qCVMS5OzDmZh/kaHQeBaeyxK6wljcPtveA==, } - engines: { node: '>= 8.10.0' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 - chokidar@3.6.0: + '@babel/helper-replace-supers@7.27.1': resolution: { - integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==, + integrity: sha512-7EHz6qDZc8RYS5ElPoShMheWvEgERonFCs7IAonWLLUTXW59DP14bCZt89/GKyreYn8g3S83m21FelHKbeDCKA==, } - engines: { node: '>= 8.10.0' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 - chokidar@4.0.1: + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': resolution: { - integrity: sha512-n8enUVCED/KVRQlab1hr3MVpcVMvxtZjmEa956u+4YijlmQED223XMSYj2tLuKvr4jcCTzNNMpQDUer72MMmzA==, + integrity: sha512-Tub4ZKEXqbPjXgWLl2+3JpQAYBJ8+ikpQ2Ocj/q/r0LwE3UhENh7EUabyHjz2kCEsrRY83ew2DQdHluuiDQFzg==, } - engines: { node: '>= 14.16.0' } + engines: { node: '>=6.9.0' } - chownr@1.1.4: + '@babel/helper-string-parser@7.27.1': resolution: { - integrity: sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg==, + integrity: sha512-qMlSxKbpRlAridDExk92nSobyDdpPijUq2DW6oDnUqd0iOGxmQjyqhMIihI9+zv4LPyZdRje2cavWPbCbWm3eA==, } + engines: { node: '>=6.9.0' } - chownr@2.0.0: + '@babel/helper-validator-identifier@7.28.5': resolution: { - integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==, + integrity: sha512-qSs4ifwzKJSV39ucNjsvc6WVHs6b7S03sOh2OcHF9UHfVPqWWALUsNUVzhSBiItjRZoLHx7nIarVjqKVusUZ1Q==, } - engines: { node: '>=10' } + engines: { node: '>=6.9.0' } - chrome-trace-event@1.0.3: + '@babel/helper-validator-option@7.27.1': resolution: { - integrity: sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==, + integrity: sha512-YvjJow9FxbhFFKDSuFnVCe2WxXk1zWc22fFePVNEaWJEu8IrZVlda6N0uHwzZrUM1il7NC9Mlp4MaJYbYd9JSg==, } - engines: { node: '>=6.0' } + engines: { node: '>=6.9.0' } - chunkd@2.0.1: + '@babel/helper-wrap-function@7.28.3': resolution: { - integrity: sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==, + integrity: sha512-zdf983tNfLZFletc0RRXYrHrucBEg95NIFMkn6K9dbeMYnsgHaSBGcQqdsCSStG2PYwRre0Qc2NNSCXbG+xc6g==, } + engines: { node: '>=6.9.0' } - ci-info@2.0.0: + '@babel/helpers@7.28.4': resolution: { - integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==, + integrity: sha512-HFN59MmQXGHVyYadKLVumYsA9dBFun/ldYxipEjzA4196jpLZd8UjEEBLkbEkvfYreDqJhZxYAWFPtrfhNpj4w==, } + engines: { node: '>=6.9.0' } - ci-info@3.9.0: + '@babel/parser@7.28.5': resolution: { - integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==, + integrity: sha512-KKBU1VGYR7ORr3At5HAtUQ+TV3SzRCXmA/8OdDZiLDBIZxVyzXuztPjfLd3BV1PRAQGCMWWSHYhL0F8d5uHBDQ==, } - engines: { node: '>=8' } + engines: { node: '>=6.0.0' } + hasBin: true - ci-info@4.0.0: + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5': resolution: { - integrity: sha512-TdHqgGf9odd8SXNuxtUBVx8Nv+qZOejE6qyqiy5NtbYYQOeFa6zmHkxlPzmaLxWWHsU6nJmB7AETdVPi+2NBUg==, + integrity: sha512-87GDMS3tsmMSi/3bWOte1UblL+YUTFMV8SZPZ2eSEL17s74Cw/l63rR6NmGVKMYW2GYi85nE+/d6Hw5N0bEk2Q==, } - engines: { node: '>=8' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 - ci-parallel-vars@1.0.1: + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1': resolution: { - integrity: sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==, + integrity: sha512-qNeq3bCKnGgLkEXUuFry6dPlGfCdQNZbn7yUAPCInwAJHMU7THJfrBSozkcWq5sNM6RcF3S8XyQL2A52KNR9IA==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 - cipher-base@1.0.4: + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1': resolution: { - integrity: sha512-Kkht5ye6ZGmwv40uUDZztayT2ThLQGfnj/T71N/XzeZeo3nf8foyW7zGTsPYkEya3m5f3cAypH+qe7YOrM1U2Q==, + integrity: sha512-g4L7OYun04N1WyqMNjldFwlfPCLVkgB54A/YCXICZYBsvJJE3kByKv9c9+R/nAfmIfjl2rKYLNyMHboYbZaWaA==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 - cjs-module-lexer@1.3.1: + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1': resolution: { - integrity: sha512-a3KdPAANPbNE4ZUv9h6LckSl9zLsYOP4MBmhIPkRaeyybt+r4UghLvq+xw/YwUcC1gqylCkL4rdVs3Lwupjm4Q==, + integrity: sha512-oO02gcONcD5O1iTLi/6frMJBIwWEHceWGSGqrpCmEL8nogiS6J9PBlE48CaK20/Jx1LuRml9aDftLgdjXT8+Cw==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.13.0 - clean-css@4.2.4: + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3': resolution: { - integrity: sha512-EJUDT7nDVFDvaQgAo2G/PJvxmp1o/c6iXLbswsBbUFXi1Nr+AjA2cKmfbKDMjMvzEe75g3P6JkaDDAKk96A85A==, + integrity: sha512-b6YTX108evsvE4YgWyQ921ZAFFQm3Bn+CA3+ZXlNVnPhx+UfsVURoPjfGAPCjBgrqo30yX/C2nZGX96DxvR9Iw==, } - engines: { node: '>= 4.0' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 - clean-css@5.3.3: + '@babel/plugin-proposal-class-properties@7.18.6': resolution: { - integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==, + integrity: sha512-cumfXOF0+nzZrrN8Rf0t7M+tF6sZc7vhQwYQck9q1/5w2OExlD+b4v4RpMJFaV1Z7WcDRgO6FqvxqxGlwo+RHQ==, } - engines: { node: '>= 10.0' } + engines: { node: '>=6.9.0' } + 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. + peerDependencies: + '@babel/core': ^7.0.0-0 - clean-stack@2.2.0: + '@babel/plugin-proposal-decorators@7.28.0': resolution: { - integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==, + integrity: sha512-zOiZqvANjWDUaUS9xMxbMcK/Zccztbe/6ikvUXaG9nsPH3w6qh5UaPGAnirI/WhIbZ8m3OHU0ReyPrknG+ZKeg==, } - engines: { node: '>=6' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - cli-cursor@2.1.0: + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6': resolution: { - integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==, + integrity: sha512-wQxQzxYeJqHcfppzBDnm1yAY0jSRkUXR2z8RePZYrKwMKgMlE8+Z6LUno+bd6LvbGh8Gltvy74+9pIYkr+XkKA==, } - engines: { node: '>=4' } + engines: { node: '>=6.9.0' } + 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. + peerDependencies: + '@babel/core': ^7.0.0-0 - cli-cursor@3.1.0: + '@babel/plugin-proposal-optional-chaining@7.21.0': resolution: { - integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==, + integrity: sha512-p4zeefM72gpmEe2fkUr/OnOXpWEf8nAgk7ZYVqqfFiyIG7oFfVZcCrU64hWn5xp4tQ9LkV4bTIa5rD0KANpKNA==, } - engines: { node: '>=8' } + engines: { node: '>=6.9.0' } + 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. + peerDependencies: + '@babel/core': ^7.0.0-0 - cli-cursor@5.0.0: + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2': resolution: { - integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==, + integrity: sha512-SOSkfJDddaM7mak6cPEpswyTRnuRltl429hMraQEglW+OkovnCzsiszTmsrlY//qLFjCpQDFRvjdm2wA5pPm9w==, } - engines: { node: '>=18' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - cli-highlight@2.1.11: + '@babel/plugin-syntax-async-generators@7.8.4': resolution: { - integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==, + integrity: sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==, } - engines: { node: '>=8.0.0', npm: '>=5.0.0' } - hasBin: true + peerDependencies: + '@babel/core': ^7.0.0-0 - cli-spinners@2.6.1: + '@babel/plugin-syntax-bigint@7.8.3': resolution: { - integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==, + integrity: sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==, } - engines: { node: '>=6' } + peerDependencies: + '@babel/core': ^7.0.0-0 - cli-spinners@2.9.2: + '@babel/plugin-syntax-class-properties@7.12.13': resolution: { - integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==, + integrity: sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==, } - engines: { node: '>=6' } + peerDependencies: + '@babel/core': ^7.0.0-0 - cli-truncate@4.0.0: + '@babel/plugin-syntax-class-static-block@7.14.5': resolution: { - integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==, + integrity: sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==, } - engines: { node: '>=18' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - cli-width@3.0.0: + '@babel/plugin-syntax-decorators@7.27.1': resolution: { - integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==, + integrity: sha512-YMq8Z87Lhl8EGkmb0MwYkt36QnxC+fzCgrl66ereamPlYToRpIk5nUjKUY3QKLWq8mwUB1BgbeXcTJhZOCDg5A==, } - engines: { node: '>= 10' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - cli-width@4.1.0: + '@babel/plugin-syntax-dynamic-import@7.8.3': resolution: { - integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==, + integrity: sha512-5gdGbFon+PszYzqs83S3E5mpi7/y/8M9eC90MRTZfduQOYW76ig6SOSPNe41IG5LoP3FGBn2N0RjVDSQiS94kQ==, } - engines: { node: '>= 12' } + peerDependencies: + '@babel/core': ^7.0.0-0 - clipboardy@2.3.0: + '@babel/plugin-syntax-import-assertions@7.27.1': resolution: { - integrity: sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==, + integrity: sha512-UT/Jrhw57xg4ILHLFnzFpPDlMbcdEicaAtjPQpbj9wa8T4r5KVWCimHcL/460g8Ht0DMxDyjsLgiWSkVjnwPFg==, } - engines: { node: '>=8' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - cliui@5.0.0: + '@babel/plugin-syntax-import-attributes@7.27.1': resolution: { - integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==, + integrity: sha512-oFT0FrKHgF53f4vOsZGi2Hh3I35PfSmVs4IBFLFj4dnafP+hIWDLg3VyKmUHfLoLHlyxY4C7DGtmHuJgn+IGww==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - cliui@6.0.0: + '@babel/plugin-syntax-import-meta@7.10.4': resolution: { - integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==, + integrity: sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==, } + peerDependencies: + '@babel/core': ^7.0.0-0 - cliui@7.0.4: + '@babel/plugin-syntax-json-strings@7.8.3': resolution: { - integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==, + integrity: sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==, } + peerDependencies: + '@babel/core': ^7.0.0-0 - cliui@8.0.1: + '@babel/plugin-syntax-jsx@7.27.1': resolution: { - integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, + integrity: sha512-y8YTNIeKoyhGd9O0Jiyzyyqk8gdjnumGTQPsz0xOZOQ2RmkVJeZ1vmmfIvFEKqucBG6axJGBZDE/7iI5suUI/w==, } - engines: { node: '>=12' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - clone-buffer@1.0.0: + '@babel/plugin-syntax-logical-assignment-operators@7.10.4': resolution: { - integrity: sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==, + integrity: sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==, } - engines: { node: '>= 0.10' } + peerDependencies: + '@babel/core': ^7.0.0-0 - clone-deep@4.0.1: + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3': resolution: { - integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==, + integrity: sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==, } - engines: { node: '>=6' } + peerDependencies: + '@babel/core': ^7.0.0-0 - clone-stats@1.0.0: + '@babel/plugin-syntax-numeric-separator@7.10.4': resolution: { - integrity: sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==, + integrity: sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==, } + peerDependencies: + '@babel/core': ^7.0.0-0 - clone@1.0.4: + '@babel/plugin-syntax-object-rest-spread@7.8.3': resolution: { - integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==, + integrity: sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==, } - engines: { node: '>=0.8' } + peerDependencies: + '@babel/core': ^7.0.0-0 - clone@2.1.2: + '@babel/plugin-syntax-optional-catch-binding@7.8.3': resolution: { - integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==, + integrity: sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==, } - engines: { node: '>=0.8' } + peerDependencies: + '@babel/core': ^7.0.0-0 - cloneable-readable@1.1.3: + '@babel/plugin-syntax-optional-chaining@7.8.3': resolution: { - integrity: sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==, + integrity: sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==, } + peerDependencies: + '@babel/core': ^7.0.0-0 - clsx@1.2.1: + '@babel/plugin-syntax-private-property-in-object@7.14.5': resolution: { - integrity: sha512-EcR6r5a8bj6pu3ycsa/E/cKVGuTgZJZdsyUYHOksG/UHIiKfjxzRxYJpyVBwYaQeOvghal9fcc4PidlgzugAQg==, + integrity: sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==, } - engines: { node: '>=6' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - clsx@2.1.1: + '@babel/plugin-syntax-top-level-await@7.14.5': resolution: { - integrity: sha512-eYm0QWBtUrBWZWG0d386OGAw16Z995PiOVo2B7bjWSbHedGl5e0ZWaq65kOGgUSNesEIDkB9ISbTg/JK9dhCZA==, + integrity: sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==, } - engines: { node: '>=6' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - cmd-shim@5.0.0: + '@babel/plugin-syntax-typescript@7.27.1': resolution: { - integrity: sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==, + integrity: sha512-xfYCBMxveHrRMnAWl1ZlPXOZjzkN82THFvLhQhFXFt81Z5HnN+EtUkZhv/zcKpmT3fzmWZB0ywiBrbC3vogbwQ==, } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - cmd-shim@6.0.3: + '@babel/plugin-syntax-unicode-sets-regex@7.18.6': resolution: { - integrity: sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA==, + integrity: sha512-727YkEAPwSIQTv5im8QHz3upqp92JTWhidIC81Tdx4VJYIte/VndKf1qKrfnnhPLiPghStWfvC/iFaMCQu7Nqg==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 - co@4.6.0: + '@babel/plugin-transform-arrow-functions@7.27.1': resolution: { - integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==, + integrity: sha512-8Z4TGic6xW70FKThA5HYEKKyBpOOsucTOD1DjU3fZxDg+K3zBJcXMFnt/4yQiZnf5+MiOMSXQ9PaEK/Ilh1DeA==, } - engines: { iojs: '>= 1.0.0', node: '>= 0.12.0' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - code-excerpt@4.0.0: + '@babel/plugin-transform-async-generator-functions@7.28.0': resolution: { - integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==, + integrity: sha512-BEOdvX4+M765icNPZeidyADIvQ1m1gmunXufXxvRESy/jNNyfovIqUyE7MVgGBjWktCoJlzvFA1To2O4ymIO3Q==, } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - collect-v8-coverage@1.0.2: + '@babel/plugin-transform-async-to-generator@7.27.1': resolution: { - integrity: sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==, + integrity: sha512-NREkZsZVJS4xmTr8qzE5y8AfIPqsdQfRuUiLRTEzb7Qii8iFWCyDKaUV2c0rCuh4ljDZ98ALHP/PetiBV2nddA==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - color-convert@1.9.3: + '@babel/plugin-transform-block-scoped-functions@7.27.1': resolution: { - integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, + integrity: sha512-cnqkuOtZLapWYZUYM5rVIdv1nXYuFVIltZ6ZJ7nIj585QsjKM5dhL2Fu/lICXZ1OyIAFc7Qy+bvDAtTXqGrlhg==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - color-convert@2.0.1: + '@babel/plugin-transform-block-scoping@7.28.5': resolution: { - integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, + integrity: sha512-45DmULpySVvmq9Pj3X9B+62Xe+DJGov27QravQJU1LLcapR6/10i+gYVAucGGJpHBp5mYxIMK4nDAT/QDLr47g==, } - engines: { node: '>=7.0.0' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - color-name@1.1.3: + '@babel/plugin-transform-class-properties@7.27.1': resolution: { - integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, + integrity: sha512-D0VcalChDMtuRvJIu3U/fwWjf8ZMykz5iZsg77Nuj821vCKI3zCyRLwRdWbsuJ/uRwZhZ002QtCqIkwC/ZkvbA==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - color-name@1.1.4: + '@babel/plugin-transform-class-static-block@7.28.3': resolution: { - integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, + integrity: sha512-LtPXlBbRoc4Njl/oh1CeD/3jC+atytbnf/UqLoqTDcEYGUPj022+rvfkbDYieUrSj3CaV4yHDByPE+T2HwfsJg==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.12.0 - color-support@1.1.3: + '@babel/plugin-transform-classes@7.28.4': resolution: { - integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==, + integrity: sha512-cFOlhIYPBv/iBoc+KS3M6et2XPtbT2HiCRfBXWtfpc9OAyostldxIf9YAYB6ypURBBbx+Qv6nyrLzASfJe+hBA==, } - hasBin: true + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - colord@2.9.3: + '@babel/plugin-transform-computed-properties@7.27.1': resolution: { - integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==, + integrity: sha512-lj9PGWvMTVksbWiDT2tW68zGS/cyo4AkZ/QTp0sQT0mjPopCmrSkzxeXkznjqBxzDI6TclZhOJbBmbBLjuOZUw==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - colorette@1.4.0: + '@babel/plugin-transform-destructuring@7.28.5': resolution: { - integrity: sha512-Y2oEozpomLn7Q3HFP7dpww7AtMJplbM9lGZP6RDfHqmbeRjiwRg4n6VM6j4KLmRke85uWEI7JqF17f3pqdRA0g==, + integrity: sha512-Kl9Bc6D0zTUcFUvkNuQh4eGXPKKNDOJQXVyyM4ZAQPMveniJdxi8XMJwLo+xSoW3MIq81bD33lcUe9kZpl0MCw==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - colorette@2.0.20: + '@babel/plugin-transform-dotall-regex@7.27.1': resolution: { - integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==, + integrity: sha512-gEbkDVGRvjj7+T1ivxrfgygpT7GUd4vmODtYpbs0gZATdkX8/iSnOtZSxiZnsgm1YjTgjI6VKBGSJJevkrclzw==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - colors@1.1.2: + '@babel/plugin-transform-duplicate-keys@7.27.1': resolution: { - integrity: sha512-ENwblkFQpqqia6b++zLD/KUWafYlVY/UNnAp7oz7LY7E924wmpye416wBOmvv/HMWzl8gL1kJlfvId/1Dg176w==, + integrity: sha512-MTyJk98sHvSs+cvZ4nOauwTTG1JeonDjSGvGGUNHreGQns+Mpt6WX/dVzWBHgg+dYZhkC4X+zTDfkTU+Vy9y7Q==, } - engines: { node: '>=0.1.90' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - columnify@1.6.0: + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1': resolution: { - integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==, + integrity: sha512-hkGcueTEzuhB30B3eJCbCYeCaaEQOmQR0AdvzpD4LoN0GXMWzzGSuRrxR2xTnCrvNbVwK9N6/jQ92GSLfiZWoQ==, } - engines: { node: '>=8.0.0' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 - combined-stream@1.0.8: + '@babel/plugin-transform-dynamic-import@7.27.1': resolution: { - integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, + integrity: sha512-MHzkWQcEmjzzVW9j2q8LGjwGWpG2mjwaaB0BNQwst3FIjqsg8Ct/mIZlvSPJvfi9y2AC8mi/ktxbFVL9pZ1I4A==, } - engines: { node: '>= 0.8' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - commander@10.0.1: + '@babel/plugin-transform-explicit-resource-management@7.28.0': resolution: { - integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==, + integrity: sha512-K8nhUcn3f6iB+P3gwCv/no7OdzOZQcKchW6N389V6PD8NUWKZHzndOd9sPDVbMoBsbmjMqlB4L9fm+fEFNVlwQ==, } - engines: { node: '>=14' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - commander@12.1.0: + '@babel/plugin-transform-exponentiation-operator@7.28.5': resolution: { - integrity: sha512-Vw8qHK3bZM9y/P10u3Vib8o/DdkvA2OtPtZvD871QKjy74Wj1WSKFILMPRPSdUSx5RFK1arlJzEtA4PkFgnbuA==, + integrity: sha512-D4WIMaFtwa2NizOp+dnoFjRez/ClKiC2BqqImwKd1X28nqBtZEyCYJ2ozQrrzlxAFrcrjxo39S6khe9RNDlGzw==, } - engines: { node: '>=18' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - commander@2.17.1: + '@babel/plugin-transform-export-namespace-from@7.27.1': resolution: { - integrity: sha512-wPMUt6FnH2yzG95SA6mzjQOEKUU3aLaDEmzs1ti+1E9h+CsrZghRlqEM/EJ4KscsQVG8uNN4uVreUeT8+drlgg==, + integrity: sha512-tQvHWSZ3/jH2xuq/vZDy0jNn+ZdXJeM8gHvX4lnJmsc3+50yPlWdZXIc5ay+umX+2/tJIqHqiEqcJvxlmIvRvQ==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - commander@2.19.0: + '@babel/plugin-transform-for-of@7.27.1': resolution: { - integrity: sha512-6tvAOO+D6OENvRAh524Dh9jcfKTYDQAqvqezbCW82xj5X0pSrcpxtvRKHLG0yBY6SD7PSDrJaj+0AiOcKVd1Xg==, + integrity: sha512-BfbWFFEJFQzLCQ5N8VocnCtA8J1CLkNTe2Ms2wocj75dd6VpiqS5Z5quTYcUoo4Yq+DN0rtikODccuv7RU81sw==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - commander@2.20.3: + '@babel/plugin-transform-function-name@7.27.1': resolution: { - integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, + integrity: sha512-1bQeydJF9Nr1eBCMMbC+hdwmRlsv5XYOMu03YSWFwNs0HsAmtSxxF1fyuYPqemVldVyFmlCU7w8UE14LupUSZQ==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - commander@4.1.1: + '@babel/plugin-transform-json-strings@7.27.1': resolution: { - integrity: sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==, + integrity: sha512-6WVLVJiTjqcQauBhn1LkICsR2H+zm62I3h9faTDKt1qP4jn2o72tSvqMwtGFKGTpojce0gJs+76eZ2uCHRZh0Q==, } - engines: { node: '>= 6' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - commander@7.2.0: + '@babel/plugin-transform-literals@7.27.1': resolution: { - integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==, + integrity: sha512-0HCFSepIpLTkLcsi86GG3mTUzxV5jpmbv97hTETW3yzrAij8aqlD36toB1D0daVFJM8NK6GvKO0gslVQmm+zZA==, } - engines: { node: '>= 10' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - commander@8.3.0: + '@babel/plugin-transform-logical-assignment-operators@7.28.5': resolution: { - integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==, + integrity: sha512-axUuqnUTBuXyHGcJEVVh9pORaN6wC5bYfE7FGzPiaWa3syib9m7g+/IT/4VgCOe2Upef43PHzeAvcrVek6QuuA==, } - engines: { node: '>= 12' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - commander@9.5.0: + '@babel/plugin-transform-member-expression-literals@7.27.1': resolution: { - integrity: sha512-KRs7WVDKg86PWiuAqhDrAQnTXZKraVcCc6vFdL14qrZ/DcWwuRo7VoiYXalXO7S5GKpqYiVEwCbgFDfxNHKJBQ==, + integrity: sha512-hqoBX4dcZ1I33jCSWcXrP+1Ku7kdqXf1oeah7ooKOIiAdKQ+uqftgCFNOSzA5AMS2XIHEYeGFg4cKRCdpxzVOQ==, } - engines: { node: ^12.20.0 || >=14 } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - common-ancestor-path@1.0.1: + '@babel/plugin-transform-modules-amd@7.27.1': resolution: { - integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==, + integrity: sha512-iCsytMg/N9/oFq6n+gFTvUYDZQOMK5kEdeYxmxt91fcJGycfxVP9CnrxoliM0oumFERba2i8ZtwRUCMhvP1LnA==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - common-path-prefix@3.0.0: + '@babel/plugin-transform-modules-commonjs@7.27.1': resolution: { - integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==, + integrity: sha512-OJguuwlTYlN0gBZFRPqwOGNWssZjfIUdS7HMYtN8c1KmwpwHFBwTeFZrg9XZa+DFTitWOW5iTAG7tyCUPsCCyw==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - commondir@1.0.1: + '@babel/plugin-transform-modules-systemjs@7.28.5': resolution: { - integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==, + integrity: sha512-vn5Jma98LCOeBy/KpeQhXcV2WZgaRUtjwQmjoBuLNlOmkg0fB5pdvYVeWRYI69wWKwK2cD1QbMiUQnoujWvrew==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - compare-func@2.0.0: + '@babel/plugin-transform-modules-umd@7.27.1': resolution: { - integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==, + integrity: sha512-iQBE/xC5BV1OxJbp6WG7jq9IWiD+xxlZhLrdwpPkTX3ydmXdvoCpyfJN7acaIBZaOqTfr76pgzqBJflNbeRK+w==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - component-emitter@1.3.1: + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1': resolution: { - integrity: sha512-T0+barUSQRTUQASh8bx02dl+DhF54GtIDY13Y3m9oWTklKbb3Wv974meRpeZ3lp1JpLVECWWNHC4vaG2XHXouQ==, + integrity: sha512-SstR5JYy8ddZvD6MhV0tM/j16Qds4mIpJTOd1Yu9J9pJjH93bxHECF7pgtc28XvkzTD6Pxcm/0Z73Hvk7kb3Ng==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 - compressible@2.0.18: + '@babel/plugin-transform-new-target@7.27.1': resolution: { - integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==, + integrity: sha512-f6PiYeqXQ05lYq3TIfIDu/MtliKUbNwkGApPUvyo6+tc7uaR4cPjPe7DFPr15Uyycg2lZU6btZ575CuQoYh7MQ==, } - engines: { node: '>= 0.6' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - compression@1.7.4: + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1': resolution: { - integrity: sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==, + integrity: sha512-aGZh6xMo6q9vq1JGcw58lZ1Z0+i0xB2x0XaauNIUXd6O1xXc3RwoWEBlsTQrY4KQ9Jf0s5rgD6SiNkaUdJegTA==, } - engines: { node: '>= 0.8.0' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - computeds@0.0.1: + '@babel/plugin-transform-numeric-separator@7.27.1': resolution: { - integrity: sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==, + integrity: sha512-fdPKAcujuvEChxDBJ5c+0BTaS6revLV7CJL08e4m3de8qJfNIuCc2nc7XJYOjBoTMJeqSmwXJ0ypE14RCjLwaw==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - concat-map@0.0.1: + '@babel/plugin-transform-object-rest-spread@7.28.4': resolution: { - integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, + integrity: sha512-373KA2HQzKhQCYiRVIRr+3MjpCObqzDlyrM6u4I201wL8Mp2wHf7uB8GhDwis03k2ti8Zr65Zyyqs1xOxUF/Ew==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - concat-stream@1.6.2: + '@babel/plugin-transform-object-super@7.27.1': resolution: { - integrity: sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==, + integrity: sha512-SFy8S9plRPbIcxlJ8A6mT/CxFdJx/c04JEctz4jf8YZaVS2px34j7NXRrlGlHkN/M2gnpL37ZpGRGVFLd3l8Ng==, } - engines: { '0': node >= 0.8 } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - concat-stream@2.0.0: + '@babel/plugin-transform-optional-catch-binding@7.27.1': resolution: { - integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==, + integrity: sha512-txEAEKzYrHEX4xSZN4kJ+OfKXFVSWKB2ZxM9dpcE3wT7smwkNmXo5ORRlVzMVdJbD+Q8ILTgSD7959uj+3Dm3Q==, } - engines: { '0': node >= 6.0 } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - concat-with-sourcemaps@1.1.0: + '@babel/plugin-transform-optional-chaining@7.28.5': resolution: { - integrity: sha512-4gEjHJFT9e+2W/77h/DS5SGUgwDaOwprX8L/gl5+3ixnzkVJJsZWDSelmN3Oilw3LNDZjZV0yqH1hLG3k6nghg==, + integrity: sha512-N6fut9IZlPnjPwgiQkXNhb+cT8wQKFlJNqcZkWlcTqkcqx6/kU4ynGmLFoa4LViBSirn05YAwk+sQBbPfxtYzQ==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - concordance@5.0.4: + '@babel/plugin-transform-parameters@7.27.7': resolution: { - integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==, + integrity: sha512-qBkYTYCb76RRxUM6CcZA5KRu8K4SM8ajzVeUgVdMVO9NN9uI/GaVmBg/WKJJGnNokV9SY8FxNOVWGXzqzUidBg==, } - engines: { node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - confbox@0.1.7: + '@babel/plugin-transform-private-methods@7.27.1': resolution: { - integrity: sha512-uJcB/FKZtBMCJpK8MQji6bJHgu1tixKPxRLeGkNzBoOZzpnZUJm0jm2/sBDWcuBx1dYgxV4JU+g5hmNxCyAmdA==, + integrity: sha512-10FVt+X55AjRAYI9BrdISN9/AQWHqldOeZDUoLyif1Kn05a56xVBXb8ZouL8pZ9jem8QpXaOt8TS7RHUIS+GPA==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - config-chain@1.1.12: + '@babel/plugin-transform-private-property-in-object@7.27.1': resolution: { - integrity: sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==, + integrity: sha512-5J+IhqTi1XPa0DXF83jYOaARrX+41gOewWbkPyjMNRDqgOCqdffGh8L3f/Ek5utaEBZExjSAzcyjmV9SSAWObQ==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - config-chain@1.1.13: + '@babel/plugin-transform-property-literals@7.27.1': resolution: { - integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==, + integrity: sha512-oThy3BCuCha8kDZ8ZkgOg2exvPYUlprMukKQXI1r1pJ47NCvxfkEy8vK+r/hT9nF0Aa4H1WUPZZjHTFtAhGfmQ==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - connect-history-api-fallback@2.0.0: + '@babel/plugin-transform-regenerator@7.28.4': resolution: { - integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==, + integrity: sha512-+ZEdQlBoRg9m2NnzvEeLgtvBMO4tkFBw5SQIUgLICgTrumLoU7lr+Oghi6km2PFj+dbUt2u1oby2w3BDO9YQnA==, } - engines: { node: '>=0.8' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - connect@3.7.0: + '@babel/plugin-transform-regexp-modifiers@7.27.1': resolution: { - integrity: sha512-ZqRXc+tZukToSNmh5C2iWMSoV3X1YUcPbqEM4DkEG5tNQXrQUZCNVGGv3IuicnkMtPfGf3Xtp8WCXs295iQ1pQ==, + integrity: sha512-TtEciroaiODtXvLZv4rmfMhkCv8jx3wgKpL68PuiPh2M4fvz5jhsA7697N1gMvkvr/JTF13DrFYyEbY9U7cVPA==, } - engines: { node: '>= 0.10.0' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 - console-browserify@1.2.0: + '@babel/plugin-transform-reserved-words@7.27.1': resolution: { - integrity: sha512-ZMkYO/LkF17QvCPqM0gxw8yUzigAOZOSWSHg91FH6orS7vcEj5dVZTidN2fQ14yBSdg97RqhSNwLUXInd52OTA==, + integrity: sha512-V2ABPHIJX4kC7HegLkYoDpfg9PVmuWy/i6vUM5eGK22bx4YVFD3M5F0QQnWQoDs6AGsUWTVOopBiMFQgHaSkVw==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - console-control-strings@1.1.0: + '@babel/plugin-transform-runtime@7.28.5': resolution: { - integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==, + integrity: sha512-20NUVgOrinudkIBzQ2bNxP08YpKprUkRTiRSd2/Z5GOdPImJGkoN4Z7IQe1T5AdyKI1i5L6RBmluqdSzvaq9/w==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - consolidate@0.15.1: + '@babel/plugin-transform-shorthand-properties@7.27.1': resolution: { - integrity: sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==, + integrity: sha512-N/wH1vcn4oYawbJ13Y/FxcQrWk63jhfNa7jef0ih7PHSIHX2LB7GWE1rkPrOnka9kwMxb6hMl19p7lidA+EHmQ==, } - engines: { node: '>= 0.10.0' } - deprecated: Please upgrade to consolidate v1.0.0+ as it has been modernized with several long-awaited fixes implemented. Maintenance is supported by Forward Email at https://forwardemail.net ; follow/watch https://github.com/ladjs/consolidate for updates and release changelog + engines: { node: '>=6.9.0' } peerDependencies: - arc-templates: ^0.5.3 - atpl: '>=0.7.6' - babel-core: ^6.26.3 - bracket-template: ^1.1.5 - coffee-script: ^1.12.7 - dot: ^1.1.3 - dust: ^0.3.0 - dustjs-helpers: ^1.7.4 - dustjs-linkedin: ^2.7.5 - eco: ^1.1.0-rc-3 - ect: ^0.5.9 - ejs: ^3.1.5 - haml-coffee: ^1.14.1 - hamlet: ^0.3.3 - hamljs: ^0.6.2 - handlebars: ^4.7.6 - hogan.js: ^3.0.2 - htmling: ^0.0.8 - jade: ^1.11.0 - jazz: ^0.0.18 - jqtpl: ~1.1.0 - just: ^0.1.8 - liquid-node: ^3.0.1 - liquor: ^0.0.5 - lodash: ^4.17.20 - marko: ^3.14.4 - mote: ^0.2.0 - mustache: ^3.0.0 - nunjucks: ^3.2.2 - plates: ~0.4.11 - pug: ^3.0.0 - qejs: ^3.0.5 - ractive: ^1.3.12 - razor-tmpl: ^1.3.1 - react: ^16.13.1 - react-dom: ^16.13.1 - slm: ^2.0.0 - squirrelly: ^5.1.0 - swig: ^1.4.2 - swig-templates: ^2.0.3 - teacup: ^2.0.0 - templayed: '>=0.2.3' - then-jade: '*' - then-pug: '*' - tinyliquid: ^0.2.34 - toffee: ^0.3.6 - twig: ^1.15.2 - twing: ^5.0.2 - underscore: ^1.11.0 - vash: ^0.13.0 - velocityjs: ^2.0.1 - walrus: ^0.10.1 - whiskers: ^0.4.0 - peerDependenciesMeta: - arc-templates: - optional: true - atpl: - optional: true - babel-core: - optional: true - bracket-template: - optional: true - coffee-script: - optional: true - dot: - optional: true - dust: - optional: true - dustjs-helpers: - optional: true - dustjs-linkedin: - optional: true - eco: - optional: true - ect: - optional: true - ejs: - optional: true - haml-coffee: - optional: true - hamlet: - optional: true - hamljs: - optional: true - handlebars: - optional: true - hogan.js: - optional: true - htmling: - optional: true - jade: - optional: true - jazz: - optional: true - jqtpl: - optional: true - just: - optional: true - liquid-node: - optional: true - liquor: - optional: true - lodash: - optional: true - marko: - optional: true - mote: - optional: true - mustache: - optional: true - nunjucks: - optional: true - plates: - optional: true - pug: - optional: true - qejs: - optional: true - ractive: - optional: true - razor-tmpl: - optional: true - react: - optional: true - react-dom: - optional: true - slm: - optional: true - squirrelly: - optional: true - swig: - optional: true - swig-templates: - optional: true - teacup: - optional: true - templayed: - optional: true - then-jade: - optional: true - then-pug: - optional: true - tinyliquid: - optional: true - toffee: - optional: true - twig: - optional: true - twing: - optional: true - underscore: - optional: true - vash: - optional: true - velocityjs: - optional: true - walrus: - optional: true - whiskers: - optional: true + '@babel/core': ^7.0.0-0 + + '@babel/plugin-transform-spread@7.27.1': + resolution: + { + integrity: sha512-kpb3HUqaILBJcRFVhFUs6Trdd4mkrzcGXss+6/mxUd273PfbWqSDHRzMT2234gIg2QYfAjvXLSquP1xECSg09Q==, + } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - constants-browserify@1.0.0: + '@babel/plugin-transform-sticky-regex@7.27.1': resolution: { - integrity: sha512-xFxOwqIzR/e1k1gLiWEophSCMqXcwVHIH7akf7b/vxcUeGunlj3hvZaaqxwHsTgn+IndtkQJgSztIDWeumWJDQ==, + integrity: sha512-lhInBO5bi/Kowe2/aLdBAawijx+q1pQzicSgnkB6dUPc1+RC8QmJHKf2OjvU+NZWitguJHEaEmbV6VWEouT58g==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - content-disposition@0.5.4: + '@babel/plugin-transform-template-literals@7.27.1': resolution: { - integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==, + integrity: sha512-fBJKiV7F2DxZUkg5EtHKXQdbsbURW3DZKQUWphDum0uRP6eHGGa/He9mc0mypL680pb+e/lDIthRohlv8NCHkg==, } - engines: { node: '>= 0.6' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - content-type@1.0.5: + '@babel/plugin-transform-typeof-symbol@7.27.1': resolution: { - integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==, + integrity: sha512-RiSILC+nRJM7FY5srIyc4/fGIwUhyDuuBSdWn4y6yT6gm652DpCHZjIipgn6B7MQ1ITOUnAKWixEUjQRIBIcLw==, } - engines: { node: '>= 0.6' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - conventional-changelog-angular@5.0.12: + '@babel/plugin-transform-typescript@7.28.5': resolution: { - integrity: sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==, + integrity: sha512-x2Qa+v/CuEoX7Dr31iAfr0IhInrVOWZU/2vJMJ00FOR/2nM0BcBEclpaf9sWCDc+v5e9dMrhSH8/atq/kX7+bA==, } - engines: { node: '>=10' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - conventional-changelog-core@4.2.4: + '@babel/plugin-transform-unicode-escapes@7.27.1': resolution: { - integrity: sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==, + integrity: sha512-Ysg4v6AmF26k9vpfFuTZg8HRfVWzsh1kVfowA23y9j/Gu6dOuahdUVhkLqpObp3JIv27MLSii6noRnuKN8H0Mg==, } - engines: { node: '>=10' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - conventional-changelog-preset-loader@2.3.4: + '@babel/plugin-transform-unicode-property-regex@7.27.1': resolution: { - integrity: sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==, + integrity: sha512-uW20S39PnaTImxp39O5qFlHLS9LJEmANjMG7SxIhap8rCHqu0Ik+tLEPX5DKmHn6CsWQ7j3lix2tFOa5YtL12Q==, } - engines: { node: '>=10' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - conventional-changelog-writer@5.0.1: + '@babel/plugin-transform-unicode-regex@7.27.1': resolution: { - integrity: sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==, + integrity: sha512-xvINq24TRojDuyt6JGtHmkVkrfVV3FPT16uytxImLeBZqW3/H52yN+kM1MGuyPkIQxrzKwPHs5U/MP3qKyzkGw==, } - engines: { node: '>=10' } - hasBin: true + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - conventional-commits-filter@2.0.7: + '@babel/plugin-transform-unicode-sets-regex@7.27.1': resolution: { - integrity: sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==, + integrity: sha512-EtkOujbc4cgvb0mlpQefi4NTPBzhSIevblFevACNLUspmrALgmEBdL/XfnyyITfd8fKBZrZys92zOWcik7j9Tw==, } - engines: { node: '>=10' } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0 - conventional-commits-parser@3.2.4: + '@babel/preset-env@7.28.5': resolution: { - integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==, + integrity: sha512-S36mOoi1Sb6Fz98fBfE+UZSpYw5mJm0NUHtIKrOuNcqeFauy1J6dIvXm2KRVKobOSaGq4t/hBXdN4HGU3wL9Wg==, } - engines: { node: '>=10' } - hasBin: true + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - conventional-recommended-bump@6.1.0: + '@babel/preset-modules@0.1.6-no-external-plugins': resolution: { - integrity: sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==, + integrity: sha512-HrcgcIESLm9aIR842yhJ5RWan/gebQUJ6E/E5+rf0y9o6oj7w0Br+sWuL6kEQ/o/AdfvR1Je9jG18/gnpwjEyA==, } - engines: { node: '>=10' } - hasBin: true + peerDependencies: + '@babel/core': ^7.0.0-0 || ^8.0.0-0 <8.0.0 - convert-source-map@1.9.0: + '@babel/preset-typescript@7.28.5': resolution: { - integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==, + integrity: sha512-+bQy5WOI2V6LJZpPVxY+yp66XdZ2yifu0Mc1aP5CQKgjn4QM5IN2i5fAZ4xKop47pr8rpVhiAeu+nDQa12C8+g==, } + engines: { node: '>=6.9.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 - convert-source-map@2.0.0: + '@babel/runtime-corejs3@7.28.4': resolution: { - integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, + integrity: sha512-h7iEYiW4HebClDEhtvFObtPmIvrd1SSfpI9EhOeKk4CtIK/ngBWFpuhCzhdmRKtg71ylcue+9I6dv54XYO1epQ==, } + engines: { node: '>=6.9.0' } - convert-to-spaces@2.0.1: + '@babel/runtime@7.28.4': resolution: { - integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==, + integrity: sha512-Q/N6JNWvIvPnLDvjlE1OUBLPQHH6l3CltCEsHIujp45zQUSSh8K+gHnaEX45yAT1nyngnINhvWtzN+Nb9D8RAQ==, } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + engines: { node: '>=6.9.0' } - cookie-signature@1.0.6: + '@babel/template@7.27.2': resolution: { - integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==, + integrity: sha512-LPDZ85aEJyYSd18/DkjNh4/y1ntkE5KwUHWTiqgRxruuZL2F1yuHligVHLvcHY2vMHXttKFpJn6LwfI7cw7ODw==, } + engines: { node: '>=6.9.0' } - cookie@0.4.2: + '@babel/traverse@7.28.5': resolution: { - integrity: sha512-aSWTXFzaKWkvHO1Ny/s+ePFpvKsPnjc551iI41v3ny/ow6tBG5Vd+FuqGNhh1LxOmVzOlGUriIlOaokOvhaStA==, + integrity: sha512-TCCj4t55U90khlYkVV/0TfkJkAkUg3jZFA3Neb7unZT8CPok7iiRfaX0F+WnqWqt7OxhOn0uBKXCw4lbL8W0aQ==, } - engines: { node: '>= 0.6' } + engines: { node: '>=6.9.0' } - cookie@0.6.0: + '@babel/types@7.28.5': resolution: { - integrity: sha512-U71cyTamuh1CRNCfpGY6to28lxvNwPG4Guz/EVjgf3Jmzv0vlDp1atT9eS5dDjMYHucpHbWns6Lwf3BKz6svdw==, + integrity: sha512-qQ5m48eI/MFLQ5PxQj4PFaprjyCTLI37ElWMmNs0K8Lk3dVeOdNpB3ks8jc7yM5CDmVC73eMVk/trk3fgmrUpA==, } - engines: { node: '>= 0.6' } + engines: { node: '>=6.9.0' } - cookiejar@2.1.4: + '@bcoe/v8-coverage@0.2.3': resolution: { - integrity: sha512-LDx6oHrK+PhzLKJU9j5S7/Y3jM/mUHvD/DeI1WQmJn652iPC5Y4TBzC9l+5OMOXlyTTA+SmVUPm0HQUwpD5Jqw==, + integrity: sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==, } - copy-anything@2.0.6: + '@cspotcode/source-map-support@0.8.1': resolution: { - integrity: sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==, + integrity: sha512-IchNf6dN4tHoMFIn/7OE8LWZ19Y6q/67Bmf6vnGREv8RSbBVb9LPJxEcnwrcwX6ixSvaiGoomAUvu4YSxXrVgw==, } + engines: { node: '>=12' } - copy-concurrently@1.0.5: + '@discoveryjs/json-ext@0.5.7': resolution: { - integrity: sha512-f2domd9fsVDFtaFcbaRZuYXwtdmnzqbADSwhSWYxYB/Q8zsdUUFMXVRwXGDMWmbEzAn1kdRrtI1T/KTFOL4X2A==, + integrity: sha512-dBVuXR082gk3jsFp7Rd/JI4kytwGHecnCoTtXFb7DB6CNHp4rg5k1bhg0nWdLGLnOV71lmDzGQaLMy8iPLY0pw==, } - deprecated: This package is no longer supported. + engines: { node: '>=10.0.0' } + + '@eslint-community/eslint-utils@4.9.0': + resolution: + { + integrity: sha512-ayVFHdtZ+hsq1t2Dy24wCmGXGe4q9Gu3smhLYALJrr473ZH27MsnSL+LKUlimp4BWJqMDMLmPpx/Q9R3OAlL4g==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || >=8.0.0 + + '@eslint-community/regexpp@4.12.2': + resolution: + { + integrity: sha512-EriSTlt5OC9/7SXkRSCAhfSxxoSUgBm33OH+IkwbdpgoqsSsUg7y3uh+IICI/Qg4BBWr3U2i39RpmycbxMq4ew==, + } + engines: { node: ^12.0.0 || ^14.0.0 || >=16.0.0 } + + '@eslint/eslintrc@2.1.4': + resolution: + { + integrity: sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + + '@eslint/js@8.57.1': + resolution: + { + integrity: sha512-d9zaMRSTIKDLhctzH12MtXvJKSSUhaHcjV+2Z+GK+EEY7XKpP5yR4x+N3TAcHTcu963nIr+TMcCb4DBCYX1z6Q==, + } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + + '@gar/promisify@1.1.3': + resolution: + { + integrity: sha512-k2Ty1JcVojjJFwrg/ThKi2ujJ7XNLYaFGNB/bWT9wGR+oSMJHMa5w+CUq6p/pVrKeNNgA7pCqEcjSnHVoqJQFw==, + } + + '@hapi/hoek@9.3.0': + resolution: + { + integrity: sha512-/c6rf4UJlmHlC9b5BaNvzAcFv7HZ2QHaV0D4/HNlBdvFnvQq8RI4kYdhyPCl7Xj+oWvTWQ8ujhqS53LIgAe6KQ==, + } + + '@hapi/topo@5.1.0': + resolution: + { + integrity: sha512-foQZKJig7Ob0BMAYBfcJk8d77QtOe7Wo4ox7ff1lQYoNNAb6jwcY1ncdoy2e9wQZzvNy7ODZCYJkK8kzmcAnAg==, + } + + '@humanwhocodes/config-array@0.13.0': + resolution: + { + integrity: sha512-DZLEEqFWQFiyK6h5YIeynKx7JlvCYWL0cImfSRXZ9l4Sg2efkFGTuFf6vzXjK1cq6IYkU+Eg/JizXw+TD2vRNw==, + } + engines: { node: '>=10.10.0' } + deprecated: Use @eslint/config-array instead + + '@humanwhocodes/module-importer@1.0.1': + resolution: + { + integrity: sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==, + } + engines: { node: '>=12.22' } + + '@humanwhocodes/object-schema@2.0.3': + resolution: + { + integrity: sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==, + } + deprecated: Use @eslint/object-schema instead + + '@hutson/parse-repository-url@3.0.2': + resolution: + { + integrity: sha512-H9XAx3hc0BQHY6l+IFSWHDySypcXsvsuLhgYLUGywmJ5pswRVQJUHpOsobnLYp2ZUaUlKiKDrgWWhosOwAEM8Q==, + } + engines: { node: '>=6.9.0' } + + '@inquirer/checkbox@2.5.0': + resolution: + { + integrity: sha512-sMgdETOfi2dUHT8r7TT1BTKOwNvdDGFDXYWtQ2J69SvlYNntk9I/gJe7r5yvMwwsuKnYbuRs3pNhx4tgNck5aA==, + } + engines: { node: '>=18' } + + '@inquirer/confirm@3.2.0': + resolution: + { + integrity: sha512-oOIwPs0Dvq5220Z8lGL/6LHRTEr9TgLHmiI99Rj1PJ1p1czTys+olrgBqZk4E2qC0YTzeHprxSQmoHioVdJ7Lw==, + } + engines: { node: '>=18' } + + '@inquirer/core@9.2.1': + resolution: + { + integrity: sha512-F2VBt7W/mwqEU4bL0RnHNZmC/OxzNx9cOYxHqnXX3MP6ruYvZUZAW9imgN9+h/uBT/oP8Gh888J2OZSbjSeWcg==, + } + engines: { node: '>=18' } + + '@inquirer/editor@2.2.0': + resolution: + { + integrity: sha512-9KHOpJ+dIL5SZli8lJ6xdaYLPPzB8xB9GZItg39MBybzhxA16vxmszmQFrRwbOA918WA2rvu8xhDEg/p6LXKbw==, + } + engines: { node: '>=18' } + + '@inquirer/expand@2.3.0': + resolution: + { + integrity: sha512-qnJsUcOGCSG1e5DTOErmv2BPQqrtT6uzqn1vI/aYGiPKq+FgslGZmtdnXbhuI7IlT7OByDoEEqdnhUnVR2hhLw==, + } + engines: { node: '>=18' } + + '@inquirer/external-editor@1.0.3': + resolution: + { + integrity: sha512-RWbSrDiYmO4LbejWY7ttpxczuwQyZLBUyygsA9Nsv95hpzUWwnNTVQmAq3xuh7vNwCp07UTmE5i11XAEExx4RA==, + } + engines: { node: '>=18' } + peerDependencies: + '@types/node': '>=18' + peerDependenciesMeta: + '@types/node': + optional: true + + '@inquirer/figures@1.0.15': + resolution: + { + integrity: sha512-t2IEY+unGHOzAaVM5Xx6DEWKeXlDDcNPeDyUpsRc6CUhBfU3VQOEl+Vssh7VNp1dR8MdUJBWhuObjXCsVpjN5g==, + } + engines: { node: '>=18' } + + '@inquirer/input@2.3.0': + resolution: + { + integrity: sha512-XfnpCStx2xgh1LIRqPXrTNEEByqQWoxsWYzNRSEUxJ5c6EQlhMogJ3vHKu8aXuTacebtaZzMAHwEL0kAflKOBw==, + } + engines: { node: '>=18' } + + '@inquirer/number@1.1.0': + resolution: + { + integrity: sha512-ilUnia/GZUtfSZy3YEErXLJ2Sljo/mf9fiKc08n18DdwdmDbOzRcTv65H1jjDvlsAuvdFXf4Sa/aL7iw/NanVA==, + } + engines: { node: '>=18' } + + '@inquirer/password@2.2.0': + resolution: + { + integrity: sha512-5otqIpgsPYIshqhgtEwSspBQE40etouR8VIxzpJkv9i0dVHIpyhiivbkH9/dGiMLdyamT54YRdGJLfl8TFnLHg==, + } + engines: { node: '>=18' } + + '@inquirer/prompts@5.3.8': + resolution: + { + integrity: sha512-b2BudQY/Si4Y2a0PdZZL6BeJtl8llgeZa7U2j47aaJSCeAl1e4UI7y8a9bSkO3o/ZbZrgT5muy/34JbsjfIWxA==, + } + engines: { node: '>=18' } - copy-webpack-plugin@11.0.0: + '@inquirer/rawlist@2.3.0': + resolution: + { + integrity: sha512-zzfNuINhFF7OLAtGHfhwOW2TlYJyli7lOUoJUXw/uyklcwalV6WRXBXtFIicN8rTRK1XTiPWB4UY+YuW8dsnLQ==, + } + engines: { node: '>=18' } + + '@inquirer/search@1.1.0': resolution: { - integrity: sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==, + integrity: sha512-h+/5LSj51dx7hp5xOn4QFnUaKeARwUCLs6mIhtkJ0JYPBLmEYjdHSYh7I6GrLg9LwpJ3xeX0FZgAG1q0QdCpVQ==, + } + engines: { node: '>=18' } + + '@inquirer/select@2.5.0': + resolution: + { + integrity: sha512-YmDobTItPP3WcEI86GvPo+T2sRHkxxOq/kXmsBjHS5BVXUgvgZ5AfJjkvQvZr03T81NnI3KrrRuMzeuYUQRFOA==, } - engines: { node: '>= 14.15.0' } - peerDependencies: - webpack: ^5.1.0 + engines: { node: '>=18' } - copy-webpack-plugin@12.0.2: + '@inquirer/type@1.5.5': resolution: { - integrity: sha512-SNwdBeHyII+rWvee/bTnAYyO8vfVdcSTud4EIb6jcZ8inLeWucJE0DnxXQBjlQ5zlteuuvooGQy3LIyGxhvlOA==, + integrity: sha512-MzICLu4yS7V8AA61sANROZ9vT1H3ooca5dSmI1FjZkzq7o/koMsRfQSzRtFo+F3Ao4Sf1C0bpLKejpKB/+j6MA==, } - engines: { node: '>= 18.12.0' } - peerDependencies: - webpack: ^5.1.0 + engines: { node: '>=18' } - copy-webpack-plugin@5.1.2: + '@inquirer/type@2.0.0': resolution: { - integrity: sha512-Uh7crJAco3AjBvgAy9Z75CjK8IG+gxaErro71THQ+vv/bl4HaQcpkexAY8KVW/T6D2W2IRr+couF/knIRkZMIQ==, + integrity: sha512-XvJRx+2KR3YXyYtPUUy+qd9i7p+GO9Ko6VIIpWlBrpWwXDv8WLFeHTxz35CfQFUiBMLXlGHhGzys7lqit9gWag==, } - engines: { node: '>= 6.9.0' } - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 + engines: { node: '>=18' } - copy-webpack-plugin@9.1.0: + '@isaacs/cliui@8.0.2': resolution: { - integrity: sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==, + integrity: sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==, } - engines: { node: '>= 12.13.0' } - peerDependencies: - webpack: ^5.1.0 + engines: { node: '>=12' } - core-js-compat@3.37.1: + '@isaacs/fs-minipass@4.0.1': resolution: { - integrity: sha512-9TNiImhKvQqSUkOvk/mMRZzOANTiEVC7WaBNhHcKM7x+/5E1l5NvsysR19zuDQScE8k+kfQXWRN3AtS/eOSHpg==, + integrity: sha512-wgm9Ehl2jpeqP3zw/7mo3kRHFp5MEDhqAdwy1fTGkHAwnkGOVsgpvQhL8B5n1qlb01jV3n/bI0ZfZp5lWA1k4w==, } + engines: { node: '>=18.0.0' } - core-js@2.6.12: + '@isaacs/string-locale-compare@1.1.0': resolution: { - integrity: sha512-Kb2wC0fvsWfQrgk8HU5lW6U/Lcs8+9aaYcy4ZFc6DDlo4nZ7n70dEgE5rtR0oG6ufKDUnrwfWL1mXR5ljDatrQ==, + integrity: sha512-SQ7Kzhh9+D+ZW9MA0zkYv3VXhIDNx+LzM6EJ+/65I3QY+enU6Itte7E5XX7EWrqLW2FN4n06GWzBnPoC3th2aQ==, } - 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. - core-js@3.37.1: + '@istanbuljs/load-nyc-config@1.1.0': resolution: { - integrity: sha512-Xn6qmxrQZyB0FFY8E3bgRXei3lWDJHhvI+u0q9TKIYM49G8pAr0FgnnrFRAmsbptZL1yxRADVXn+x5AGsbBfyw==, + integrity: sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==, } + engines: { node: '>=8' } - core-util-is@1.0.2: + '@istanbuljs/nyc-config-typescript@1.0.2': resolution: { - integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==, + integrity: sha512-iKGIyMoyJuFnJRSVTZ78POIRvNnwZaWIf8vG4ZS3rQq58MMDrqEX2nnzx0R28V2X8JvmKYiqY9FP2hlJsm8A0w==, } + engines: { node: '>=8' } + peerDependencies: + nyc: '>=15' - core-util-is@1.0.3: + '@istanbuljs/schema@0.1.3': resolution: { - integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==, + integrity: sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==, } + engines: { node: '>=8' } - cors@2.8.5: + '@jest/console@27.5.1': resolution: { - integrity: sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==, + integrity: sha512-kZ/tNpS3NXn0mlXXXPNuDZnb4c0oZ20r4K5eemM2k30ZC3G0T02nXUvyhf5YdbXWHPEJLc9qGLxEZ216MdL+Zg==, } - engines: { node: '>= 0.10' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - corser@2.0.1: + '@jest/core@27.5.1': resolution: { - integrity: sha512-utCYNzRSQIZNPIcGZdQc92UVJYAhtGAteCFg0yRaFm8f0P+CPtyGyHXJcGXnffjCybUCEx3FQ2G7U3/o9eIkVQ==, + integrity: sha512-AK6/UTrvQD0Cd24NSqmIA6rKsu0tKIxfiCducZvqxYdmMisOYAsdItspT+fQDQYARPf8XgjAFZi0ogW2agH5nQ==, } - engines: { node: '>= 0.4.0' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true - cosmiconfig@6.0.0: + '@jest/environment@27.5.1': resolution: { - integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==, + integrity: sha512-/WQjhPJe3/ghaol/4Bq480JKXV/Rfw8nQdN7f41fM8VDHLcxKXou6QyXAh3EFr9/bVG3x74z1NWDkP87EiY8gA==, } - engines: { node: '>=8' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - cosmiconfig@7.0.0: + '@jest/fake-timers@27.5.1': resolution: { - integrity: sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==, + integrity: sha512-/aPowoolwa07k7/oM3aASneNeBGCmGQsc3ugN4u6s4C/+s5M64MFo/+djTdiwcbQlRfFElGuDXWzaWj6QgKObQ==, } - engines: { node: '>=10' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - cosmiconfig@7.1.0: + '@jest/globals@27.5.1': resolution: { - integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==, + integrity: sha512-ZEJNB41OBQQgGzgyInAv0UUfDDj3upmHydjieSxFvTRuZElrx7tXg/uVQ5hYVEwiXs3+aMsAeEc9X7xiSKCm4Q==, } - engines: { node: '>=10' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - cosmiconfig@9.0.0: + '@jest/reporters@27.5.1': resolution: { - integrity: sha512-itvL5h8RETACmOTFc4UfIyB2RfEHi71Ax6E/PivVxq9NseKbOWpeyHEOIbmAw1rs8Ak0VursQNww7lf7YtUwzg==, + integrity: sha512-cPXh9hWIlVJMQkVk84aIvXuBB4uQQmFqZiacloFuGiP3ah1sbCxCosidXFDfqG8+6fO1oR2dTJTlsOy4VFmUfw==, } - engines: { node: '>=14' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } peerDependencies: - typescript: '>=4.9.5' + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 peerDependenciesMeta: - typescript: + node-notifier: optional: true - coveralls@3.1.1: + '@jest/schemas@29.6.3': resolution: { - integrity: sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==, + integrity: sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==, } - engines: { node: '>=6' } - hasBin: true + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - create-ecdh@4.0.4: + '@jest/source-map@27.5.1': resolution: { - integrity: sha512-mf+TCx8wWc9VpuxfP2ht0iSISLZnt0JgWlrOKZiNqyUZWnjIaCIVNQArMHnCZKfEYRg6IM7A+NeJoN8gf/Ws0A==, + integrity: sha512-y9NIHUYF3PJRlHk98NdC/N1gl88BL08aQQgu4k4ZopQkCw9t9cV8mtl3TV8b/YCB8XaVTFrmUTAJvjsntDireg==, } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - create-hash@1.2.0: + '@jest/test-result@27.5.1': resolution: { - integrity: sha512-z00bCGNHDG8mHAkP7CtT1qVu+bFQUPjYq/4Iv3C3kWjTFV10zIjfSoeqXo9Asws8gwSHDGj/hl2u4OGIjapeCg==, + integrity: sha512-EW35l2RYFUcUQxFJz5Cv5MTOxlJIQs4I7gxzi2zVU7PJhOwfYq1MdC5nhSmYjX1gmMmLPvB3sIaC+BkcHRBfag==, } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - create-hmac@1.1.7: + '@jest/test-sequencer@27.5.1': resolution: { - integrity: sha512-MJG9liiZ+ogc4TzUwuvbER1JRdgvUFSB5+VR/g5h82fGaIRWMWddtKBHi7/sVhfjQZ6SehlyhvQYrcYkaUIpLg==, + integrity: sha512-LCheJF7WB2+9JuCS7VB/EmGIdQuhtqjRNI9A43idHv3E4KltCTsPsLxvdaubFHSYwY/fNjMWjl6vNRhDiN7vpQ==, } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - create-require@1.1.1: + '@jest/transform@27.5.1': resolution: { - integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==, + integrity: sha512-ipON6WtYgl/1329g5AIJVbUuEh0wZVbdpGwC99Jw4LwuoBNS95MVphU6zOeD9pDkon+LLbFL7lOQRapbB8SCHw==, } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - critters@0.0.24: + '@jest/types@27.5.1': resolution: { - integrity: sha512-Oyqew0FGM0wYUSNqR0L6AteO5MpMoUU0rhKRieXeiKs+PmRTxiJMyaunYB2KF6fQ3dzChXKCpbFOEJx3OQ1v/Q==, + integrity: sha512-Cx46iJ9QpwQTjIdq5VJu2QTMMs3QlEjI0x1QbBP5W1+nMzyc2XmimiRR/CbX9TO0cPTeUlxWMOu8mslYsJ8DEw==, } - deprecated: Ownership of Critters has moved to the Nuxt team, who will be maintaining the project going forward. If you'd like to keep using Critters, please switch to the actively-maintained fork at https://github.com/danielroe/beasties + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - cross-env@7.0.3: + '@jridgewell/gen-mapping@0.3.13': resolution: { - integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==, + integrity: sha512-2kkt/7niJ6MgEPxF0bYdQ6etZaA+fQvDcLKckhy1yIQOzaoKjBBjSj63/aLVjYE3qhRt5dvM+uUyfCg6UKCBbA==, } - engines: { node: '>=10.14', npm: '>=6', yarn: '>=1' } - hasBin: true - cross-spawn@6.0.5: + '@jridgewell/remapping@2.3.5': resolution: { - integrity: sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==, + integrity: sha512-LI9u/+laYG4Ds1TDKSJW2YPrIlcVYOwi2fUC6xB43lueCjgxV4lffOCZCtYFiH6TNOX+tQKXx97T4IKHbhyHEQ==, } - engines: { node: '>=4.8' } - cross-spawn@7.0.3: + '@jridgewell/resolve-uri@3.1.2': resolution: { - integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==, + integrity: sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==, } - engines: { node: '>= 8' } + engines: { node: '>=6.0.0' } - crypto-browserify@3.12.0: + '@jridgewell/source-map@0.3.11': resolution: { - integrity: sha512-fz4spIh+znjO2VjL+IdhEpRJ3YN6sMzITSBijk6FK2UvTqruSQW+/cCZTSNsMiZNvUeq0CqurF+dAbyiGOY6Wg==, + integrity: sha512-ZMp1V8ZFcPG5dIWnQLr3NSI1MiCU7UETdS/A0G8V/XWHvJv3ZsFqutJn1Y5RPmAPX6F3BiE397OqveU/9NCuIA==, } - crypto-random-string@2.0.0: + '@jridgewell/sourcemap-codec@1.5.5': resolution: { - integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==, + integrity: sha512-cYQ9310grqxueWbl+WuIUIaiUaDcj7WOq5fVhEljNVgRfOUhY9fy2zTvfoqWsnebh8Sl70VScFbICvJnLKB0Og==, } - engines: { node: '>=8' } - css-declaration-sorter@6.4.1: + '@jridgewell/trace-mapping@0.3.31': resolution: { - integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==, + integrity: sha512-zzNR+SdQSDJzc8joaeP8QQoCQr8NuYx2dIIytl1QeBEZHJ9uW6hebsrYgbz8hJwUQao3TWCMtmfV8Nu1twOLAw==, } - engines: { node: ^10 || ^12 || >=14 } - peerDependencies: - postcss: ^8.0.9 - css-loader@3.6.0: + '@jridgewell/trace-mapping@0.3.9': resolution: { - integrity: sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==, + integrity: sha512-3Belt6tdc8bPgAtbcmdtNJlirVoTmEb5e2gC94PnkwEW9jI6CAHUeoG85tjWP5WquqfavoMtMwiG4P926ZKKuQ==, } - engines: { node: '>= 8.9.0' } - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - css-loader@6.11.0: + '@leichtgewicht/ip-codec@2.0.5': resolution: { - integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==, + integrity: sha512-Vo+PSpZG2/fmgmiNzYK9qWRh8h/CHrwD0mo1h1DzL4yzHNSfWYujGTYsWGreD000gcgmZ7K4Ys6Tx9TxtsKdDw==, } - engines: { node: '>= 12.13.0' } - peerDependencies: - '@rspack/core': 0.x || 1.x - webpack: ^5.0.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true - css-loader@7.1.2: + '@lerna/child-process@6.6.2': resolution: { - integrity: sha512-6WvYYn7l/XEGN8Xu2vWFt9nVzrCn39vKyTEFf/ExEyoksJjjSZV/0/35XPlMbpnr6VGhZIUg5yJrL8tGfes/FA==, + integrity: sha512-QyKIWEnKQFnYu2ey+SAAm1A5xjzJLJJj3bhIZd3QKyXKKjaJ0hlxam/OsWSltxTNbcyH1jRJjC6Cxv31usv0Ag==, } - engines: { node: '>= 18.12.0' } - peerDependencies: - '@rspack/core': 0.x || 1.x - webpack: ^5.27.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true + engines: { node: ^14.17.0 || >=16.0.0 } - css-minimizer-webpack-plugin@3.4.1: + '@lerna/create@6.6.2': resolution: { - integrity: sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==, + integrity: sha512-xQ+1Y7D+9etvUlE+unhG/TwmM6XBzGIdFBaNoW8D8kyOa9M2Jf3vdEtAxVa7mhRz66CENfhL/+I/QkVaa7pwbQ==, } - engines: { node: '>= 12.13.0' } - peerDependencies: - '@parcel/css': '*' - clean-css: '*' - csso: '*' - esbuild: '*' - webpack: ^5.0.0 - peerDependenciesMeta: - '@parcel/css': - optional: true - clean-css: - optional: true - csso: - optional: true - esbuild: - optional: true + engines: { node: ^14.17.0 || >=16.0.0 } - css-select@4.3.0: + '@lerna/legacy-package-management@6.6.2': resolution: { - integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==, + integrity: sha512-0hZxUPKnHwehUO2xC4ldtdX9bW0W1UosxebDIQlZL2STnZnA2IFmIk2lJVUyFW+cmTPQzV93jfS0i69T9Z+teg==, } + engines: { node: ^14.17.0 || >=16.0.0 } + deprecated: In v9 of lerna, released in September 2025, the `lerna bootstrap`, `lerna add` and `lerna link` commands were finally fully removed after over 2 years of being deprecated. If you are still using these commands, please migrate to using your package manager's long-supported `workspaces` feature. You may find https://lerna.js.org/docs/legacy-package-management useful for this transition. - css-select@5.1.0: + '@listr2/prompt-adapter-inquirer@2.0.15': resolution: { - integrity: sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==, + integrity: sha512-MZrGem/Ujjd4cPTLYDfCZK2iKKeiO/8OX13S6jqxldLs0Prf2aGqVlJ77nMBqMv7fzqgXEgjrNHLXcKR8l9lOg==, } + engines: { node: '>=18.0.0' } + peerDependencies: + '@inquirer/prompts': '>= 3 < 6' - css-tree@1.1.3: + '@mapbox/node-pre-gyp@2.0.0': resolution: { - integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==, + integrity: sha512-llMXd39jtP0HpQLVI37Bf1m2ADlEb35GYSh1SDSLsBhR+5iCxiNGlT31yqbNtVHygHAtMy6dWFERpU2JgufhPg==, } - engines: { node: '>=8.0.0' } + engines: { node: '>=18' } + hasBin: true - css-tree@2.3.1: + '@node-ipc/js-queue@2.0.3': resolution: { - integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==, + integrity: sha512-fL1wpr8hhD5gT2dA1qifeVaoDFlQR5es8tFuKqjHX+kdOtdNHnxkVZbtIrR2rxnMFvehkjaZRNV2H/gPXlb0hw==, } - engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } + engines: { node: '>=1.0.0' } - css-what@6.1.0: + '@nodelib/fs.scandir@2.1.5': resolution: { - integrity: sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==, + integrity: sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==, } - engines: { node: '>= 6' } + engines: { node: '>= 8' } - css@2.2.4: + '@nodelib/fs.stat@2.0.5': resolution: { - integrity: sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==, + integrity: sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==, } + engines: { node: '>= 8' } - css@3.0.0: + '@nodelib/fs.walk@1.2.8': resolution: { - integrity: sha512-DG9pFfwOrzc+hawpmqX/dHYHJG+Bsdb0klhyi1sDneOgGOXy9wQIC8hzyVp1e4NRYDBdxcylvywPkkXCHAzTyQ==, + integrity: sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==, } + engines: { node: '>= 8' } - cssesc@3.0.0: + '@npmcli/agent@2.2.2': resolution: { - integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, + integrity: sha512-OrcNPXdpSl9UX7qPVRWbmWMCSXrcDa2M9DvrbOTj7ao1S4PlqVFYv9/yLKMkrJKZ/V5A/kDBC690or307i26Og==, } - engines: { node: '>=4' } - hasBin: true + engines: { node: ^16.14.0 || >=18.0.0 } - cssnano-preset-default@5.2.14: + '@npmcli/arborist@6.2.3': resolution: { - integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==, + integrity: sha512-lpGOC2ilSJXcc2zfW9QtukcCTcMbl3fVI0z4wvFB2AFIl0C+Q6Wv7ccrpdrQa8rvJ1ZVuc6qkX7HVTyKlzGqKA==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + hasBin: true - cssnano-utils@3.1.0: + '@npmcli/fs@2.1.2': resolution: { - integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==, + integrity: sha512-yOJKRvohFOaLqipNtwYB9WugyZKhC/DZC4VYPmpaCzDBrA8YpK3qHZ8/HGscMnE4GqbkLNuVcCnxkeQEdGt6LQ==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - cssnano@5.1.15: + '@npmcli/fs@3.1.1': resolution: { - integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==, + integrity: sha512-q9CRWjpHCMIh5sVyefoD1cA7PkvILqCZsnSOEUUivORLjxCO/Irmue2DprETiNgEqktDBZaM1Bi+jrarx1XdCg==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - csso@4.2.0: + '@npmcli/git@4.1.0': resolution: { - integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==, + integrity: sha512-9hwoB3gStVfa0N31ymBmrX+GuDGdVA/QWShZVqE0HK2Af+7QGGrCTbZia/SW0ImUTjTne7SP91qxDmtXvDHRPQ==, } - engines: { node: '>=8.0.0' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - cssom@0.3.8: + '@npmcli/git@5.0.8': resolution: { - integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==, + integrity: sha512-liASfw5cqhjNW9UFd+ruwwdEf/lbOAQjLL2XY2dFW/bkJheXDYZgOyul/4gVvEV4BWkTXjYGmDqMw9uegdbJNQ==, } + engines: { node: ^16.14.0 || >=18.0.0 } - cssom@0.4.4: + '@npmcli/installed-package-contents@2.1.0': resolution: { - integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==, + integrity: sha512-c8UuGLeZpm69BryRykLuKRyKFZYJsZSCT4aVY5ds4omyZqJ172ApzgfKJ5eV/r3HgLdUYgFVe54KSFVjKoe27w==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + hasBin: true - cssom@0.5.0: + '@npmcli/map-workspaces@3.0.6': resolution: { - integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==, + integrity: sha512-tkYs0OYnzQm6iIRdfy+LcLBjcKuQCeE5YLb8KnrIlutJfheNaPvPpgoFEyEFgbjzl5PLZ3IA/BWAwRU0eHuQDA==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - cssstyle@2.3.0: + '@npmcli/metavuln-calculator@5.0.1': resolution: { - integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==, + integrity: sha512-qb8Q9wIIlEPj3WeA1Lba91R4ZboPL0uspzV0F9uwP+9AYMVB2zOoa7Pbk12g6D2NHAinSbHh6QYmGuRyHZ874Q==, } - engines: { node: '>=8' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - cssstyle@3.0.0: + '@npmcli/move-file@2.0.1': resolution: { - integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==, + integrity: sha512-mJd2Z5TjYWq/ttPLLGqArdtnC74J6bOzg4rMDnN+p1xTacZ2yPRCk2y0oSWQtygLR9YVQXgOcONrwtnk3JupxQ==, } - engines: { node: '>=14' } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + deprecated: This functionality has been moved to @npmcli/fs - cssstyle@4.0.1: + '@npmcli/name-from-folder@2.0.0': resolution: { - integrity: sha512-8ZYiJ3A/3OkDd093CBT/0UKDWry7ak4BdPTFP2+QEP7cmhouyq/Up709ASSj2cK02BbZiMgk7kYjZNS4QP5qrQ==, + integrity: sha512-pwK+BfEBZJbKdNYpHHRTNBwBoqrN/iIMO0AiGvYsp3Hoaq0WbgGSWQR6SCldZovoDpY3yje5lkFUe6gsDgJ2vg==, } - engines: { node: '>=18' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - csstype@3.1.3: + '@npmcli/node-gyp@2.0.0': resolution: { - integrity: sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==, + integrity: sha512-doNI35wIe3bBaEgrlPfdJPaCpUR89pJWep4Hq3aRdh6gKazIVWfs0jHttvSSoq47ZXgC7h73kDsUl8AoIQUB+A==, } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - currently-unhandled@0.4.1: + '@npmcli/node-gyp@3.0.0': resolution: { - integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==, + integrity: sha512-gp8pRXC2oOxu0DUE1/M3bYtb1b3/DbJ5aM113+XJBgfXdussRAsX0YOrOhdd8WvnAR6auDBvJomGAkLKA5ydxA==, } - engines: { node: '>=0.10.0' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - custom-event@1.0.1: + '@npmcli/package-json@3.1.1': resolution: { - integrity: sha512-GAj5FOq0Hd+RsCGVJxZuKaIDXDf3h6GQoNEjFgbLLI/trgtavwUbSnZ5pVfg27DVCaWjIohryS0JFwIJyT2cMg==, + integrity: sha512-+UW0UWOYFKCkvszLoTwrYGrjNrT8tI5Ckeb/h+Z1y1fsNJEctl7HmerA5j2FgmoqFaLI2gsA1X9KgMFqx/bRmA==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - cyclist@1.0.2: + '@npmcli/package-json@5.2.1': resolution: { - integrity: sha512-0sVXIohTfLqVIW3kb/0n6IiWF3Ifj5nm2XaSrLq2DI6fKIGa2fYAZdk917rUneaeLVpYfFcyXE2ft0fe3remsA==, + integrity: sha512-f7zYC6kQautXHvNbLEWgD/uGu1+xCn9izgqBfgItWSx22U0ZDekxN08A1vM8cTxj/cRVe0Q94Ode+tdoYmIOOQ==, } + engines: { node: ^16.14.0 || >=18.0.0 } - dargs@7.0.0: + '@npmcli/promise-spawn@3.0.0': resolution: { - integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==, + integrity: sha512-s9SgS+p3a9Eohe68cSI3fi+hpcZUmXq5P7w0kMlAsWVtR7XbK3ptkZqKT2cK1zLDObJ3sR+8P59sJE0w/KTL1g==, } - engines: { node: '>=8' } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - dashdash@1.14.1: + '@npmcli/promise-spawn@6.0.2': resolution: { - integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==, + integrity: sha512-gGq0NJkIGSwdbUt4yhdF8ZrmkGKVz9vAdVzpOfnom+V8PLSmSOVhZwbNvZZS1EYcJN5hzzKBxmmVVAInM6HQLg==, } - engines: { node: '>=0.10' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - data-urls@2.0.0: + '@npmcli/promise-spawn@7.0.2': resolution: { - integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==, + integrity: sha512-xhfYPXoV5Dy4UkY0D+v2KkwvnDfiA/8Mt3sWCGI/hM03NsYIH8ZaG6QzS9x7pje5vHZBZJ2v6VRFVTWACnqcmQ==, } - engines: { node: '>=10' } + engines: { node: ^16.14.0 || >=18.0.0 } - data-urls@3.0.2: + '@npmcli/query@3.1.0': resolution: { - integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==, + integrity: sha512-C/iR0tk7KSKGldibYIB9x8GtO/0Bd0I2mhOaDb8ucQL/bQVTmGoeREaFj64Z5+iCBRf3dQfed0CjJL7I8iTkiQ==, } - engines: { node: '>=12' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - data-urls@4.0.0: + '@npmcli/redact@2.0.1': resolution: { - integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==, + integrity: sha512-YgsR5jCQZhVmTJvjduTOIHph0L73pK8xwMVaDY0PatySqVM9AZj93jpoXYSJqfHFxFkN9dmqTw6OiqExsS3LPw==, } - engines: { node: '>=14' } + engines: { node: ^16.14.0 || >=18.0.0 } - data-urls@5.0.0: + '@npmcli/run-script@4.1.7': resolution: { - integrity: sha512-ZYP5VBHshaDAiVZxjbRVcFJpc+4xGgT0bK3vzy1HLN8jTO975HEbuYzZJcHoQEY5K1a0z8YayJkyVETa08eNTg==, + integrity: sha512-WXr/MyM4tpKA4BotB81NccGAv8B48lNH0gRoILucbcAhTQXLCoi6HflMV3KdXubIqvP9SuLsFn68Z7r4jl+ppw==, } - engines: { node: '>=18' } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - data-view-buffer@1.0.1: + '@npmcli/run-script@6.0.2': resolution: { - integrity: sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==, + integrity: sha512-NCcr1uQo1k5U+SYlnIrbAh3cxy+OQT1VtqiAbxdymSlptbzBb62AjH2xXgjNCoP073hoa1CfCAcwoZ8k96C4nA==, } - engines: { node: '>= 0.4' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - data-view-byte-length@1.0.1: + '@npmcli/run-script@8.1.0': resolution: { - integrity: sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==, + integrity: sha512-y7efHHwghQfk28G2z3tlZ67pLG0XdfYbcVG26r7YIXALRsrVQcTq4/tdenSmdOrEsNahIYA/eh8aEVROWGFUDg==, } - engines: { node: '>= 0.4' } + engines: { node: ^16.14.0 || >=18.0.0 } - data-view-byte-offset@1.0.0: + '@nrwl/cli@15.9.7': resolution: { - integrity: sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==, + integrity: sha512-1jtHBDuJzA57My5nLzYiM372mJW0NY6rFKxlWt5a0RLsAZdPTHsd8lE3Gs9XinGC1jhXbruWmhhnKyYtZvX/zA==, } - engines: { node: '>= 0.4' } - date-format@4.0.14: + '@nrwl/devkit@15.9.7': resolution: { - integrity: sha512-39BOQLs9ZjKh0/patS9nrT8wc3ioX3/eA/zgbKNopnF2wCqJEoxywwwElATYvRsXdnOxA/OQeQoFZ3rFjVajhg==, + integrity: sha512-Sb7Am2TMT8AVq8e+vxOlk3AtOA2M0qCmhBzoM1OJbdHaPKc0g0UgSnWRml1kPGg5qfPk72tWclLoZJ5/ut0vTg==, } - engines: { node: '>=4.0' } + peerDependencies: + nx: '>= 14.1 <= 16' - date-time@3.1.0: + '@nrwl/nx-darwin-arm64@15.9.7': resolution: { - integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==, + integrity: sha512-aBUgnhlkrgC0vu0fK6eb9Vob7eFnkuknrK+YzTjmLrrZwj7FGNAeyGXSlyo1dVokIzjVKjJg2saZZ0WQbfuCJw==, } - engines: { node: '>=6' } + engines: { node: '>= 10' } + cpu: [arm64] + os: [darwin] - dateformat@3.0.3: + '@nrwl/nx-darwin-x64@15.9.7': resolution: { - integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==, + integrity: sha512-L+elVa34jhGf1cmn38Z0sotQatmLovxoASCIw5r1CBZZeJ5Tg7Y9nOwjRiDixZxNN56hPKXm6xl9EKlVHVeKlg==, } + engines: { node: '>= 10' } + cpu: [x64] + os: [darwin] - dayjs@1.10.7: + '@nrwl/nx-linux-arm-gnueabihf@15.9.7': resolution: { - integrity: sha512-P6twpd70BcPK34K26uJ1KT3wlhpuOAPoMwJzpsIWUxHZ7wpmbdZL/hQqBDfz7hGurYSa5PhzdhDHtt319hL3ig==, + integrity: sha512-pqmfqqEUGFu6PmmHKyXyUw1Al0Ki8PSaR0+ndgCAb1qrekVDGDfznJfaqxN0JSLeolPD6+PFtLyXNr9ZyPFlFg==, } + engines: { node: '>= 10' } + cpu: [arm] + os: [linux] - dayjs@1.11.11: + '@nrwl/nx-linux-arm64-gnu@15.9.7': resolution: { - integrity: sha512-okzr3f11N6WuqYtZSvm+F776mB41wRZMhKP+hc34YdW+KmtYYK9iqvHSwo2k9FEH3fhGXvOPV6yz2IcSrfRUDg==, + integrity: sha512-NYOa/eRrqmM+In5g3M0rrPVIS9Z+q6fvwXJYf/KrjOHqqan/KL+2TOfroA30UhcBrwghZvib7O++7gZ2hzwOnA==, } + engines: { node: '>= 10' } + cpu: [arm64] + os: [linux] - de-indent@1.0.2: + '@nrwl/nx-linux-arm64-musl@15.9.7': resolution: { - integrity: sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==, + integrity: sha512-zyStqjEcmbvLbejdTOrLUSEdhnxNtdQXlmOuymznCzYUEGRv+4f7OAepD3yRoR0a/57SSORZmmGQB7XHZoYZJA==, } + engines: { node: '>= 10' } + cpu: [arm64] + os: [linux] - debounce@1.2.1: + '@nrwl/nx-linux-x64-gnu@15.9.7': resolution: { - integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==, + integrity: sha512-saNK5i2A8pKO3Il+Ejk/KStTApUpWgCxjeUz9G+T8A+QHeDloZYH2c7pU/P3jA9QoNeKwjVO9wYQllPL9loeVg==, } + engines: { node: '>= 10' } + cpu: [x64] + os: [linux] - debug@2.6.9: + '@nrwl/nx-linux-x64-musl@15.9.7': resolution: { - integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==, + integrity: sha512-extIUThYN94m4Vj4iZggt6hhMZWQSukBCo8pp91JHnDcryBg7SnYmnikwtY1ZAFyyRiNFBLCKNIDFGkKkSrZ9Q==, } - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + engines: { node: '>= 10' } + cpu: [x64] + os: [linux] - debug@3.2.7: + '@nrwl/nx-win32-arm64-msvc@15.9.7': resolution: { - integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, + integrity: sha512-GSQ54hJ5AAnKZb4KP4cmBnJ1oC4ILxnrG1mekxeM65c1RtWg9NpBwZ8E0gU3xNrTv8ZNsBeKi/9UhXBxhsIh8A==, } - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + engines: { node: '>= 10' } + cpu: [arm64] + os: [win32] - debug@4.3.1: + '@nrwl/nx-win32-x64-msvc@15.9.7': resolution: { - integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==, + integrity: sha512-x6URof79RPd8AlapVbPefUD3ynJZpmah3tYaYZ9xZRMXojVtEHV8Qh5vysKXQ1rNYJiiB8Ah6evSKWLbAH60tw==, } - engines: { node: '>=6.0' } - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + engines: { node: '>= 10' } + cpu: [x64] + os: [win32] - debug@4.3.4: + '@nrwl/tao@15.9.7': resolution: { - integrity: sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==, + integrity: sha512-OBnHNvQf3vBH0qh9YnvBQQWyyFZ+PWguF6dJ8+1vyQYlrLVk/XZ8nJ4ukWFb+QfPv/O8VBmqaofaOI9aFC4yTw==, } - engines: { node: '>=6.0' } - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + hasBin: true - debug@4.3.7: + '@octokit/auth-token@3.0.4': resolution: { - integrity: sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==, + integrity: sha512-TWFX7cZF2LXoCvdmJWY7XVPi74aSY0+FfBZNSXEXFkMpjcqsQwDSYVv5FhRFaI0V1ECnwbz4j59T/G+rXNWaIQ==, } - engines: { node: '>=6.0' } - peerDependencies: - supports-color: '*' - peerDependenciesMeta: - supports-color: - optional: true + engines: { node: '>= 14' } - decamelize-keys@1.1.1: + '@octokit/core@4.2.4': resolution: { - integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==, + integrity: sha512-rYKilwgzQ7/imScn3M9/pFfUf4I1AZEH3KhyJmtPdE2zfaXAn2mFfUy4FbKewzc2We5y/LlKLj36fWJLKC2SIQ==, } - engines: { node: '>=0.10.0' } + engines: { node: '>= 14' } - decamelize@1.2.0: + '@octokit/endpoint@7.0.6': resolution: { - integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==, + integrity: sha512-5L4fseVRUsDFGR00tMWD/Trdeeihn999rTMGRMC1G/Ldi1uWlWJzI98H4Iak5DB/RVvQuyMYKqSK/R6mbSOQyg==, } - engines: { node: '>=0.10.0' } + engines: { node: '>= 14' } - decamelize@4.0.0: + '@octokit/graphql@5.0.6': resolution: { - integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==, + integrity: sha512-Fxyxdy/JH0MnIB5h+UQ3yCoh1FG4kWXfFKkpWqjZHw/p+Kc8Y44Hu/kCgNBT6nU1shNumEchmW/sUO1JuQnPcw==, } - engines: { node: '>=10' } + engines: { node: '>= 14' } - decimal.js@10.4.3: + '@octokit/openapi-types@12.11.0': resolution: { - integrity: sha512-VBBaLc1MgL5XpzgIP7ny5Z6Nx3UrRkIViUkPUdtl9aya5amy3De1gsUUSB1g3+3sExYNjCAsAznmukyxCb1GRA==, + integrity: sha512-VsXyi8peyRq9PqIz/tpqiL2w3w80OgVMwBHltTml3LmVvXiphgeqmY9mvBw9Wu7e0QWk/fqD37ux8yP5uVekyQ==, } - decode-uri-component@0.2.2: + '@octokit/openapi-types@14.0.0': resolution: { - integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==, + integrity: sha512-HNWisMYlR8VCnNurDU6os2ikx0s0VyEjDYHNS/h4cgb8DeOxQ0n72HyinUtdDVxJhFy3FWLGl0DJhfEWk3P5Iw==, } - engines: { node: '>=0.10' } - dedent@0.7.0: + '@octokit/openapi-types@18.1.1': resolution: { - integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==, + integrity: sha512-VRaeH8nCDtF5aXWnjPuEMIYf1itK/s3JYyJcWFJT8X9pSNnBtriDf7wlEWsGuhPLl4QIH4xM8fqTXDwJ3Mu6sw==, } - deep-eql@4.1.3: + '@octokit/plugin-enterprise-rest@6.0.1': resolution: { - integrity: sha512-WaEtAOpRA1MQ0eohqZjpGD8zdI0Ovsm8mmFhaDN8dvDZzyoUMcYDnf5Y6iu7HTXxf8JDS23qWa4a+hKCDyOPzw==, + integrity: sha512-93uGjlhUD+iNg1iWhUENAtJata6w5nE+V4urXOAlIXdco6xNZtUSfYY8dzp3Udy74aqO/B5UZL80x/YMa5PKRw==, } - engines: { node: '>=6' } - deep-is@0.1.4: + '@octokit/plugin-paginate-rest@3.1.0': resolution: { - integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, + integrity: sha512-+cfc40pMzWcLkoDcLb1KXqjX0jTGYXjKuQdFQDc6UAknISJHnZTiBqld6HDwRJvD4DsouDKrWXNbNV0lE/3AXA==, } + engines: { node: '>= 14' } + peerDependencies: + '@octokit/core': '>=4' - deepmerge@1.5.2: + '@octokit/plugin-request-log@1.0.4': resolution: { - integrity: sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==, + integrity: sha512-mLUsMkgP7K/cnFEw07kWqXGF5LKrOkD+lhCrKvPHXWDywAwuDUeDwWBpc69XK3pNX0uKiVt8g5z96PJ6z9xCFA==, } - engines: { node: '>=0.10.0' } + peerDependencies: + '@octokit/core': '>=3' - deepmerge@4.3.1: + '@octokit/plugin-rest-endpoint-methods@6.8.1': resolution: { - integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, + integrity: sha512-QrlaTm8Lyc/TbU7BL/8bO49vp+RZ6W3McxxmmQTgYxf2sWkO8ZKuj4dLhPNJD6VCUW1hetCmeIM0m6FTVpDiEg==, } - engines: { node: '>=0.10.0' } + engines: { node: '>= 14' } + peerDependencies: + '@octokit/core': '>=3' - default-browser-id@5.0.0: + '@octokit/request-error@3.0.3': resolution: { - integrity: sha512-A6p/pu/6fyBcA1TRz/GqWYPViplrftcW2gZC9q79ngNCKAeR/X3gcEdXQHl4KNXV+3wgIJ1CPkJQ3IHM6lcsyA==, + integrity: sha512-crqw3V5Iy2uOU5Np+8M/YexTlT8zxCfI+qu+LxUB7SZpje4Qmx3mub5DfEKSO8Ylyk0aogi6TYdf6kxzh2BguQ==, } - engines: { node: '>=18' } + engines: { node: '>= 14' } - default-browser@5.2.1: + '@octokit/request@6.2.8': resolution: { - integrity: sha512-WY/3TUME0x3KPYdRRxEJJvXRHV4PyPoUsxtZa78lwItwRQRHhd2U9xOscaT/YTf8uCXIAjeJOFBVEh/7FtD8Xg==, + integrity: sha512-ow4+pkVQ+6XVVsekSYBzJC0VTVvh/FCTUUgTsboGq+DTeWdyIFV8WSCdo0RIxk6wSkBTHqIK1mYuY7nOBXOchw==, } - engines: { node: '>=18' } + engines: { node: '>= 14' } - default-gateway@6.0.3: + '@octokit/rest@19.0.3': resolution: { - integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==, + integrity: sha512-5arkTsnnRT7/sbI4fqgSJ35KiFaN7zQm0uQiQtivNQLI8RQx8EHwJCajcTUwmaCMNDg7tdCvqAnc7uvHHPxrtQ==, } - engines: { node: '>= 10' } + engines: { node: '>= 14' } - default-require-extensions@3.0.1: + '@octokit/types@6.41.0': resolution: { - integrity: sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==, + integrity: sha512-eJ2jbzjdijiL3B4PrSQaSjuF2sPEQPVCPzBvTHJD9Nz+9dw2SGH4K4xeQJ77YfTq5bRQ+bD8wT11JbeDPmxmGg==, } - engines: { node: '>=8' } - defaults@1.0.4: + '@octokit/types@8.2.1': resolution: { - integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==, + integrity: sha512-8oWMUji8be66q2B9PmEIUyQm00VPDPun07umUWSaCwxmeaquFBro4Hcc3ruVoDo3zkQyZBlRvhIMEYS3pBhanw==, } - define-data-property@1.1.4: + '@octokit/types@9.3.2': resolution: { - integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==, + integrity: sha512-D4iHGTdAnEEVsB8fl95m1hiz7D5YiRdQ9b/OEb3BYRVwbLsGHcRVPz+u+BgRLNk0Q0/4iZCBqDN96j2XNxfXrA==, } - engines: { node: '>= 0.4' } - define-lazy-prop@2.0.0: + '@one-ini/wasm@0.1.1': resolution: { - integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==, + integrity: sha512-XuySG1E38YScSJoMlqovLru4KTUNSjgVTIjyh7qMX6aNN5HY5Ct5LhRJdxO79JtTzKfzV/bnWpz+zquYrISsvw==, } - engines: { node: '>=8' } - define-lazy-prop@3.0.0: + '@parcel/watcher@2.0.4': resolution: { - integrity: sha512-N+MeXYoqr3pOgn8xfyRPREN7gHakLYjhsHhWGT3fWAiL4IkAt0iDw14QiiEm2bE30c5XX5q0FtAA3CK5f9/BUg==, + integrity: sha512-cTDi+FUDBIUOBKEtj+nhiJ71AZVlkAsQFuGQTun5tV9mwQBQgZvhCzG+URPQc8myeN32yRVZEfVAPCs1RW+Jvg==, } - engines: { node: '>=12' } + engines: { node: '>= 10.0.0' } - define-properties@1.2.1: + '@pkgjs/parseargs@0.11.0': resolution: { - integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==, + integrity: sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==, } - engines: { node: '>= 0.4' } + engines: { node: '>=14' } - del@2.2.2: + '@polka/url@1.0.0-next.29': resolution: { - integrity: sha512-Z4fzpbIRjOu7lO5jCETSWoqUDVe0IPOlfugBsF6suen2LKDlVb4QZpKEM9P+buNJ4KI1eN7I083w/pbKUpsrWQ==, + integrity: sha512-wwQAWhWSuHaag8c4q/KN/vCoeOJYshAIvMQwD4GpSb3OiZklFfvAgmj0VCBBImRpuF/aFgIRzllXlVX93Jevww==, } - engines: { node: '>=0.10.0' } - del@6.1.1: + '@rollup/plugin-alias@3.1.9': resolution: { - integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==, + integrity: sha512-QI5fsEvm9bDzt32k39wpOwZhVzRcL5ydcffUHMyLVaVaLeC70I8TJZ17F1z1eMoLu4E/UOcH9BWVkKpIKdrfiw==, } - engines: { node: '>=10' } + engines: { node: '>=8.0.0' } + peerDependencies: + rollup: ^1.20.0||^2.0.0 - delayed-stream@1.0.0: + '@rollup/pluginutils@4.2.1': resolution: { - integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, + integrity: sha512-iKnFXr7NkdZAIHiIWE+BX5ULi/ucVFYWD6TbAV+rZctiRTY2PL6tsIKhoIOaoskiWAkgu+VsbXgUVDNLHf+InQ==, } - engines: { node: '>=0.4.0' } + engines: { node: '>= 8.0.0' } - delegates@1.0.0: + '@rollup/pluginutils@5.3.0': resolution: { - integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==, + integrity: sha512-5EdhGZtnu3V88ces7s53hhfK5KSASnJZv8Lulpc04cWO3REESroJXg73DFsOmgbU2BhwV0E20bu2IDZb3VKW4Q==, } + engines: { node: '>=14.0.0' } + peerDependencies: + rollup: ^1.20.0||^2.0.0||^3.0.0||^4.0.0 + peerDependenciesMeta: + rollup: + optional: true - depd@1.1.2: + '@rtsao/scc@1.1.0': resolution: { - integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==, + integrity: sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==, } - engines: { node: '>= 0.6' } - depd@2.0.0: + '@schematics/angular@18.2.21': resolution: { - integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==, + integrity: sha512-5Ai+NEflQZi67y4NsQ3o04iEp7zT0/BUFVCrJ3CueU3uYQGs8jrN1Lk6tvQ9c5HzGcTDrMXuTrCswyR9o6ecpA==, + } + engines: + { + node: ^18.19.1 || ^20.11.1 || >=22.0.0, + npm: ^6.11.0 || ^7.5.6 || >=8.0.0, + yarn: '>= 1.13.0', } - engines: { node: '>= 0.8' } - dependency-graph@1.0.0: + '@sideway/address@4.1.5': resolution: { - integrity: sha512-cW3gggJ28HZ/LExwxP2B++aiKxhJXMSIt9K48FOXQkm+vuG5gyatXnLsONRJdzO/7VfjDIiaOOa/bs4l464Lwg==, + integrity: sha512-IqO/DUQHUkPeixNQ8n0JA6102hT9CmaljNTPmQ1u8MEhBo/R4Q8eKLN/vGZxuebwOroDB4cbpjheD4+/sKFK4Q==, } - engines: { node: '>=4' } - deprecation@2.3.1: + '@sideway/formula@3.0.1': resolution: { - integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==, + integrity: sha512-/poHZJJVjx3L+zVD6g9KgHfYnb443oi7wLu/XKojDviHy6HOEOA6z1Trk5aR1dGcmPenJEgb2sK2I80LeS3MIg==, } - des.js@1.1.0: + '@sideway/pinpoint@2.0.0': resolution: { - integrity: sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==, + integrity: sha512-RNiOoTPkptFtSVzQevY/yWtZwf/RxyVnPy/OcA9HBM3MlGDnBEYL5B41H0MTn0Uec8Hi+2qUtTfG2WWZBmMejQ==, } - destroy@1.2.0: + '@sigstore/bundle@1.1.0': resolution: { - integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==, + integrity: sha512-PFutXEy0SmQxYI4texPw3dd2KewuNqv7OuK1ZFtY2fM754yhvG2KdgwIhRnoEE2uHdtdGNQ8s0lb94dW9sELog==, } - engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - detect-indent@5.0.0: + '@sigstore/bundle@2.3.2': resolution: { - integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==, + integrity: sha512-wueKWDk70QixNLB363yHc2D2ItTgYiMTdPwK8D9dKQMR3ZQ0c35IxP5xnwQ8cNLoCgCRcHf14kE+CLIvNX1zmA==, } - engines: { node: '>=4' } + engines: { node: ^16.14.0 || >=18.0.0 } - detect-libc@2.0.3: + '@sigstore/core@1.1.0': resolution: { - integrity: sha512-bwy0MGW55bG41VqxxypOsdSdGqLwXPI/focwgTYCFMbdUiBAxLg9CFzG08sz2aqzknwiX7Hkl0bQENjg8iLByw==, + integrity: sha512-JzBqdVIyqm2FRQCulY6nbQzMpJJpSiJ8XXWMhtOX9eKgaXXpfNOF53lzQEjIydlStnd/eFtuC1dW4VYdD93oRg==, } - engines: { node: '>=8' } + engines: { node: ^16.14.0 || >=18.0.0 } - detect-newline@3.1.0: + '@sigstore/protobuf-specs@0.2.1': resolution: { - integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==, + integrity: sha512-XTWVxnWJu+c1oCshMLwnKvz8ZQJJDVOlciMfgpJBQbThVjKTCG8dwyhgLngBD2KN0ap9F/gOV8rFDEx8uh7R2A==, } - engines: { node: '>=8' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - detect-node@2.1.0: + '@sigstore/protobuf-specs@0.3.3': resolution: { - integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==, + integrity: sha512-RpacQhBlwpBWd7KEJsRKcBQalbV28fvkxwTOJIqhIuDysMMaJW47V4OqW30iJB9uRpqOSxxEAQFdr8tTattReQ==, } + engines: { node: ^18.17.0 || >=20.5.0 } - dezalgo@1.0.4: + '@sigstore/sign@1.0.0': resolution: { - integrity: sha512-rXSP0bf+5n0Qonsb+SVVfNfIsimO4HEtmnIpPHY8Q1UCzKlQrDMfdobr8nJOOsRgWCyMRqeSBQzmWUMq7zvVig==, + integrity: sha512-INxFVNQteLtcfGmcoldzV6Je0sbbfh9I16DM4yJPw3j5+TFP8X6uIiA18mvpEa9yyeycAKgPmOA3X9hVdVTPUA==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - di@0.0.1: + '@sigstore/sign@2.3.2': resolution: { - integrity: sha512-uJaamHkagcZtHPqCIHZxnFrXlunQXgBOsZSUOWwFw31QJCAbyTBoHMW75YOTur5ZNx8pIeAKgf6GWIgaqqiLhA==, + integrity: sha512-5Vz5dPVuunIIvC5vBb0APwo7qKA4G9yM48kPWJT+OEERs40md5GoUR1yedwpekWZ4m0Hhw44m6zU+ObsON+iDA==, } + engines: { node: ^16.14.0 || >=18.0.0 } - diff-sequences@27.5.1: + '@sigstore/tuf@1.0.3': resolution: { - integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==, + integrity: sha512-2bRovzs0nJZFlCN3rXirE4gwxCn97JNjMmwpecqlbgV9WcxX7WRuIrgzx/X7Ib7MYRbyUTpBYE0s2x6AmZXnlg==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - diff-sequences@29.6.3: + '@sigstore/tuf@2.3.4': resolution: { - integrity: sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==, + integrity: sha512-44vtsveTPUpqhm9NCrbU8CWLe3Vck2HO1PNLw7RIajbB7xhtn5RBPm1VNSCMwqGYHhDsBJG8gDF0q4lgydsJvw==, } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + engines: { node: ^16.14.0 || >=18.0.0 } - diff@4.0.2: + '@sigstore/verify@1.2.1': resolution: { - integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==, + integrity: sha512-8iKx79/F73DKbGfRf7+t4dqrc0bRr0thdPrxAtCKWRm/F0tG71i6O1rvlnScncJLLBZHn3h8M3c1BSUAb9yu8g==, } - engines: { node: '>=0.3.1' } + engines: { node: ^16.14.0 || >=18.0.0 } - diff@5.0.0: + '@sinclair/typebox@0.27.8': resolution: { - integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==, + integrity: sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==, } - engines: { node: '>=0.3.1' } - diffie-hellman@5.0.3: + '@sindresorhus/merge-streams@2.3.0': resolution: { - integrity: sha512-kqag/Nl+f3GwyK25fhUMYj81BUOrZ9IuJsjIcDE5icNM9FJHAVm3VcUDxdLPoQtTuUylWm6ZIknYJwwaPxsUzg==, + integrity: sha512-LtoMMhxAlorcGhmFYI+LhPgbPZCkgP6ra1YL604EeF6U98pLlQ3iWIGMdWSC+vWmPBWBNgmDBAhnAobLROJmwg==, } + engines: { node: '>=18' } - dir-glob@2.2.2: + '@sinonjs/commons@1.8.6': resolution: { - integrity: sha512-f9LBi5QWzIW3I6e//uxZoLBlUt9kcp66qo0sSCxL6YZKc75R1c4MFCoe/LaZiBGmgujvQdxc5Bn3QhfyvK5Hsw==, + integrity: sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==, } - engines: { node: '>=4' } - dir-glob@3.0.1: + '@sinonjs/fake-timers@8.1.0': resolution: { - integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, + integrity: sha512-OAPJUAtgeINhh/TAlUID4QTs53Njm7xzddaVlEs/SXwgtiD1tW22zAB/W1wdqfrpmikgaWQ9Fw6Ws+hsiRm5Vg==, } - engines: { node: '>=8' } - discontinuous-range@1.0.0: + '@soda/friendly-errors-webpack-plugin@1.8.1': resolution: { - integrity: sha512-c68LpLbO+7kP/b1Hr1qs8/BJ09F5khZGTxqxZuhzxpmwJKOgRFHJWIb9/KmqnqHhLdO55aOxFH/EGBvUQbL/RQ==, + integrity: sha512-h2ooWqP8XuFqTXT+NyAFbrArzfQA7R6HTezADrvD9Re8fxMLTPPniLdqVTdDaO0eIoLaAwKT+d6w+5GeTk7Vbg==, } + engines: { node: '>=8.0.0' } + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 - dns-packet@5.6.1: + '@soda/get-current-script@1.0.2': resolution: { - integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==, + integrity: sha512-T7VNNlYVM1SgQ+VsMYhnDkcGmWhQdL0bDyGm5TlQ3GBXnJscEClUUOKduWTmm2zCnvNLC1hc3JpuXjs/nFOc5w==, } - engines: { node: '>=6' } - doctrine@2.1.0: + '@tootallnate/once@1.1.2': resolution: { - integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==, + integrity: sha512-RbzJvlNzmRq5c3O09UipeuXno4tA1FE6ikOjxZK0tuxVv3412l64l5t1W5pj4+rJq9vpkm/kwiR07aZXnsKPxw==, } - engines: { node: '>=0.10.0' } + engines: { node: '>= 6' } - doctrine@3.0.0: + '@tootallnate/once@2.0.0': resolution: { - integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==, + integrity: sha512-XCuKFP5PS55gnMVu3dty8KPatLqUoy/ZYzDzAGCQ8JNFCkLXzmI7vNHCR+XpbZaMWQK/vQubr7PkYq8g470J/A==, } - engines: { node: '>=6.0.0' } + engines: { node: '>= 10' } - document-register-element@1.14.10: + '@trysound/sax@0.2.0': resolution: { - integrity: sha512-w5UA37hEIrs+9pruo2yR5UD13c4UHDlkqqjt4qurnp7QsBI9b1IOi8WXUim+aCqKBsENX3Z/cso7XMOuwJH1Yw==, + integrity: sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==, } - deprecated: V0 is gone and the best V1 polyfill is now @ungap/custom-elements + engines: { node: '>=10.13.0' } - dom-converter@0.2.0: + '@tsconfig/node10@1.0.12': resolution: { - integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==, + integrity: sha512-UCYBaeFvM11aU2y3YPZ//O5Rhj+xKyzy7mvcIoAjASbigy8mHMryP5cK7dgjlz2hWxh1g5pLw084E0a/wlUSFQ==, } - dom-helpers@5.2.1: + '@tsconfig/node12@1.0.11': resolution: { - integrity: sha512-nRCa7CK3VTrM2NmGkIy4cbK7IZlgBE/PYMn55rrXefr5xXDP0LdtfPnblFDoVdcAfslJ7or6iqAUnx0CCGIWQA==, + integrity: sha512-cqefuRsh12pWyGsIoBKJA9luFu3mRxCA+ORZvA4ktLSzIuCUtWVxGIuXigEwO5/ywWFMZ2QEGKWvkZG1zDMTag==, } - dom-serialize@2.2.1: + '@tsconfig/node14@1.0.3': resolution: { - integrity: sha512-Yra4DbvoW7/Z6LBN560ZwXMjoNOSAN2wRsKFGc4iBeso+mpIA6qj1vfdf9HpMaKAqG6wXTy+1SYEzmNpKXOSsQ==, + integrity: sha512-ysT8mhdixWK6Hw3i1V2AeRqZ5WfXg1G43mqoYlM2nc6388Fq5jcXyr5mRsqViLx/GJYdoL0bfXD8nmF+Zn/Iow==, } - dom-serializer@1.4.1: + '@tsconfig/node16@1.0.4': resolution: { - integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==, + integrity: sha512-vxhUy4J8lyeyinH7Azl1pdd43GJhZH/tP2weN8TntQblOY+A0XbT8DJk1/oCPuOOyg/Ja757rG0CgHcWC8OfMA==, } - dom-serializer@2.0.0: + '@tufjs/canonical-json@1.0.0': resolution: { - integrity: sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==, + integrity: sha512-QTnf++uxunWvG2z3UFNzAoQPHxnSXOwtaI3iJ+AohhV+5vONuArPjJE7aPXPVXfXJsqrVbZBu9b81AJoSd09IQ==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - domain-browser@4.23.0: + '@tufjs/canonical-json@2.0.0': resolution: { - integrity: sha512-ArzcM/II1wCCujdCNyQjXrAFwS4mrLh4C7DZWlaI8mdh7h3BfKdNd3bKXITfl2PT9FtfQqaGvhi1vPRQPimjGA==, + integrity: sha512-yVtV8zsdo8qFHe+/3kw81dSLyF7D576A5cCFCi4X7B39tWT7SekaEFUnvnWJHz+9qO7qJTah1JbrDjWKqFtdWA==, } - engines: { node: '>=10' } + engines: { node: ^16.14.0 || >=18.0.0 } - domelementtype@2.3.0: + '@tufjs/models@1.0.4': resolution: { - integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==, + integrity: sha512-qaGV9ltJP0EO25YfFUPhxRVK0evXFIAGicsVXuRim4Ed9cjPxYhNnNJ49SFmbeLgtxpslIkX317IgpfcHPVj/A==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - domexception@2.0.1: + '@tufjs/models@2.0.1': resolution: { - integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==, + integrity: sha512-92F7/SFyufn4DXsha9+QfKnN03JGqtMFMXgSHbZOo8JG59WkTni7UzAouNQDf7AuP9OAMxVOPQcqG3sB7w+kkg==, } - engines: { node: '>=8' } - deprecated: Use your platform's native DOMException instead + engines: { node: ^16.14.0 || >=18.0.0 } - domexception@4.0.0: + '@types/babel__core@7.20.5': resolution: { - integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==, + integrity: sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==, } - engines: { node: '>=12' } - deprecated: Use your platform's native DOMException instead - domhandler@4.3.1: + '@types/babel__generator@7.27.0': resolution: { - integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==, + integrity: sha512-ufFd2Xi92OAVPYsy+P4n7/U7e68fex0+Ee8gSG9KX7eo084CWiQ4sdxktvdl0bOPupXtVJPY19zk6EwWqUQ8lg==, } - engines: { node: '>= 4' } - domhandler@5.0.3: + '@types/babel__template@7.4.4': resolution: { - integrity: sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==, + integrity: sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==, } - engines: { node: '>= 4' } - domutils@2.8.0: + '@types/babel__traverse@7.28.0': resolution: { - integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==, + integrity: sha512-8PvcXf70gTDZBgt9ptxJ8elBeBjcLOAcOtoO/mPJjtji1+CdGbHgm77om1GrsPxsiE+uXIpNSK64UYaIwQXd4Q==, } - domutils@3.1.0: + '@types/body-parser@1.19.6': resolution: { - integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==, + integrity: sha512-HLFeCYgz89uk22N5Qg3dvGvsv46B8GLvKKo1zKG4NybA8U2DiEO3w9lqGg29t/tfLRJpJ6iQxnVw4OnB7MoM9g==, } - dot-case@3.0.4: + '@types/bonjour@3.5.13': resolution: { - integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==, + integrity: sha512-z9fJ5Im06zvUL548KvYNecEVlA7cVDkGUi6kZusb04mpyEFKCIZJvloCcmpmLaIahDpOQGHaHmG6imtPMmPXGQ==, } - dot-prop@5.3.0: + '@types/chai@4.3.20': resolution: { - integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==, + integrity: sha512-/pC9HAB5I/xMlc5FP77qjCnI16ChlJfW0tGa0IUcFn38VJrTV6DeZ60NU5KZBtaOZqjdpwTWohz5HU1RrhiYxQ==, } - engines: { node: '>=8' } - dot-prop@6.0.1: + '@types/connect-history-api-fallback@1.5.4': resolution: { - integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==, + integrity: sha512-n6Cr2xS1h4uAulPRdlw6Jl6s1oG8KrVilPN2yUITEs+K48EzMJJ3W1xy8K5eWuFvjp3R74AOIGSmp2UfBJ8HFw==, } - engines: { node: '>=10' } - dotenv-expand@5.1.0: + '@types/connect@3.4.38': resolution: { - integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==, + integrity: sha512-K6uROf1LD88uDQqJCktA4yzL1YYAK6NgfsI0v/mTgyPKWsX1CnJ0XPSDhViejru1GcRkLWb8RlzFYJRqGUbaug==, } - dotenv@10.0.0: + '@types/eslint-scope@3.7.7': resolution: { - integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==, + integrity: sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==, } - engines: { node: '>=10' } - duplexer@0.1.2: + '@types/eslint@9.6.1': resolution: { - integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==, + integrity: sha512-FXx2pKgId/WyYo2jXw63kk7/+TY7u7AziEJxJAnSFzHlqTAS3Ync6SvgYAN/k4/PQpnnVuzoMuVnByKK2qp0ag==, } - duplexify@3.7.1: + '@types/estree@1.0.8': resolution: { - integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==, + integrity: sha512-dWHzHa2WqEXI/O1E9OjrocMTKJl2mSrEolh1Iomrv6U+JuNwaHXsXx9bLu5gG7BUWFIN0skIQJQ/L1rIex4X6w==, } - eastasianwidth@0.2.0: + '@types/express-serve-static-core@4.19.7': resolution: { - integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==, + integrity: sha512-FvPtiIf1LfhzsaIXhv/PHan/2FeQBbtBDtfX2QfvPxdUelMDEckK08SM6nqo1MIZY3RUlfA+HV8+hFUSio78qg==, } - easy-stack@1.0.1: + '@types/express-serve-static-core@5.1.0': resolution: { - integrity: sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==, + integrity: sha512-jnHMsrd0Mwa9Cf4IdOzbz543y4XJepXrbia2T4b6+spXC2We3t1y6K44D3mR8XMFSXMCf3/l7rCgddfx7UNVBA==, } - engines: { node: '>=6.0.0' } - ecc-jsbn@0.1.2: + '@types/express@4.17.25': resolution: { - integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==, + integrity: sha512-dVd04UKsfpINUnK0yBoYHDF3xu7xVH4BuDotC/xGuycx4CgbP48X/KF/586bcObxT0HENHXEU8Nqtu6NR+eKhw==, } - editorconfig@1.0.4: + '@types/glob@7.2.0': resolution: { - integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==, + integrity: sha512-ZUxbzKl0IfJILTS6t7ip5fQQM/J3TJYubDm3nMbgubNNYS62eXeUpoLUC8/7fJNiFYHTrGPQn7hspDUzIHX3UA==, } - engines: { node: '>=14' } - hasBin: true - ee-first@1.1.1: + '@types/graceful-fs@4.1.9': resolution: { - integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==, + integrity: sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==, } - ejs@3.1.10: + '@types/html-minifier-terser@6.1.0': resolution: { - integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==, + integrity: sha512-oh/6byDPnL1zeNXFrDXFLyZjkr1MsBG667IM792caf1L2UPOOMf65NFzjUH/ltyfwjAGfs1rsX1eftK0jC/KIg==, } - engines: { node: '>=0.10.0' } - hasBin: true - electron-to-chromium@1.4.779: + '@types/http-errors@2.0.5': resolution: { - integrity: sha512-oaTiIcszNfySXVJzKcjxd2YjPxziAd+GmXyb2HbidCeFo6Z88ygOT7EimlrEQhM2U08VhSrbKhLOXP0kKUCZ6g==, + integrity: sha512-r8Tayk8HJnX0FztbZN7oVqGccWgw98T/0neJphO91KkmOzug1KkofZURD4UaD5uH8AqcFLfdPErnBod0u71/qg==, } - electron-to-chromium@1.5.67: + '@types/http-proxy@1.17.17': resolution: { - integrity: sha512-nz88NNBsD7kQSAGGJyp8hS6xSPtWwqNogA0mjtc2nUYeEf3nURK9qpV18TuBdDmEDgVWotS8Wkzf+V52dSQ/LQ==, + integrity: sha512-ED6LB+Z1AVylNTu7hdzuBqOgMnvG/ld6wGCG8wFnAzKX5uyW2K3WD52v0gnLCTK/VLpXtKckgWuyScYK6cSPaw==, } - elliptic@6.5.7: + '@types/istanbul-lib-coverage@2.0.6': resolution: { - integrity: sha512-ESVCtTwiA+XhY3wyh24QqRGBoP3rEdDUl3EDUUo9tft074fi19IrdpH7hLCMMP3CIj7jb3W96rn8lt/BqIlt5Q==, + integrity: sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==, } - emittery@0.8.1: + '@types/istanbul-lib-report@3.0.3': resolution: { - integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==, + integrity: sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==, } - engines: { node: '>=10' } - emittery@1.0.3: + '@types/istanbul-reports@3.0.4': resolution: { - integrity: sha512-tJdCJitoy2lrC2ldJcqN4vkqJ00lT+tOWNT1hBJjO/3FDMJa5TTIiYGCKGkn/WfCyOzUMObeohbVTj00fhiLiA==, + integrity: sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==, } - engines: { node: '>=14.16' } - emoji-regex@10.3.0: + '@types/jest@27.5.2': resolution: { - integrity: sha512-QpLs9D9v9kArv4lfDEgg1X/gN5XLnf/A6l9cs8SPZLRZR3ZkY9+kwIQTxm+fsSej5UMYGE8fdoaZVIBlqG0XTw==, + integrity: sha512-mpT8LJJ4CMeeahobofYWIjFo0xonRS/HfxnVEPMPFSQdGUt1uHCnoPT7Zhb+sjDU2wz0oKV0OLUR0WzrHNgfeA==, } - emoji-regex@7.0.3: + '@types/json-schema@7.0.15': resolution: { - integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==, + integrity: sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==, } - emoji-regex@8.0.0: + '@types/json5@0.0.29': resolution: { - integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, + integrity: sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==, } - emoji-regex@9.2.2: + '@types/lodash@4.17.21': resolution: { - integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, + integrity: sha512-FOvQ0YPD5NOfPgMzJihoT+Za5pdkDJWcbpuj1DjaKZIr/gxodQjY/uWEFlTNqW2ugXHUiL8lRQgw63dzKHZdeQ==, } - emojis-list@3.0.0: + '@types/mime@1.3.5': resolution: { - integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==, + integrity: sha512-/pyBZWSLD2n0dcHE3hq8s8ZvcETHtEuF+3E7XVt0Ig2nvsVQXdghHVcEkIWjy9A0wKfTn97a/PSDYohKIlnP/w==, } - engines: { node: '>= 4' } - encodeurl@1.0.2: + '@types/minimatch@3.0.5': resolution: { - integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==, + integrity: sha512-Klz949h02Gz2uZCMGwDUSDS1YBlTdDDgbWHi+81l29tQALUtvz4rAYi5uoVhE5Lagoq6DeqAUlbrHvW/mXDgdQ==, } - engines: { node: '>= 0.8' } - encoding@0.1.13: + '@types/minimatch@6.0.0': resolution: { - integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==, + integrity: sha512-zmPitbQ8+6zNutpwgcQuLcsEpn/Cj54Kbn7L5pX0Os5kdWplB7xPgEh/g+SWOB/qmows2gpuCaPyduq8ZZRnxA==, } + deprecated: This is a stub types definition. minimatch provides its own type definitions, so you do not need this installed. - end-of-stream@1.4.4: + '@types/minimist@1.2.5': resolution: { - integrity: sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==, + integrity: sha512-hov8bUuiLiyFPGyFPE1lwWhmzYbirOXQNNo40+y3zow8aFVTeyn3VWL0VFFfdNddA8S4Vf0Tc062rzyNr7Paag==, } - engine.io-parser@5.2.2: + '@types/mocha@5.2.7': resolution: { - integrity: sha512-RcyUFKA93/CXH20l4SoVvzZfrSDMOTUS3bWVpTt2FuFP+XYrL8i8oonHP7WInRyVHXh0n/ORtoeiE1os+8qkSw==, + integrity: sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==, } - engines: { node: '>=10.0.0' } - engine.io@6.5.4: + '@types/mute-stream@0.0.4': resolution: { - integrity: sha512-KdVSDKhVKyOi+r5uEabrDLZw2qXStVvCsEB/LN3mw4WFi6Gx50jTyuxYVCwAAC0U46FdnzP/ScKRBTXb/NiEOg==, + integrity: sha512-CPM9nzrCPPJHQNA9keH9CVkVI+WR5kMa+7XEs5jcGQ0VoAGnLv242w8lIVgwAEfmE4oufJRaTc9PNLQl0ioAow==, } - engines: { node: '>=10.2.0' } - enhanced-resolve@5.16.1: + '@types/node-forge@1.3.14': resolution: { - integrity: sha512-4U5pNsuDl0EhuZpq46M5xPslstkviJuhrdobaRDBk2Jy2KO37FDAJl4lb2KlNabxT0m4MTK2UHNrsAcphE8nyw==, + integrity: sha512-mhVF2BnD4BO+jtOp7z1CdzaK4mbuK0LLQYAvdOLqHTavxFNq4zA1EmYkpnFjP8HOUzedfQkRnp0E2ulSAYSzAw==, } - engines: { node: '>=10.13.0' } - enhanced-resolve@5.17.1: + '@types/node@22.19.1': resolution: { - integrity: sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==, + integrity: sha512-LCCV0HdSZZZb34qifBsyWlUmok6W7ouER+oQIGBScS8EsZsQbrtFTUrDX4hOl+CS6p7cnNC4td+qrSVGSCTUfQ==, } - engines: { node: '>=10.13.0' } - enquirer@2.3.6: + '@types/normalize-package-data@2.4.4': resolution: { - integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==, + integrity: sha512-37i+OaWTh9qeK4LSHPsyRC7NahnGotNuZvjLSgcPzblpHB3rrCJxAOgI5gCdKm7coonsaX1Of0ILiTcnZjbfxA==, } - engines: { node: '>=8.6' } - ent@2.2.0: + '@types/parse-json@4.0.2': resolution: { - integrity: sha512-GHrMyVZQWvTIdDtpiEXdHZnFQKzeO09apj8Cbl4pKWy4i0Oprcq17usfDt5aO63swf0JOeMWjWQE/LzgSRuWpA==, + integrity: sha512-dISoDXWWQwUquiKsyZ4Ng+HX2KsPL7LyHKHQwgGFEA3IaKac4Obd+h2a/a6waisAoepJlBcx9paWqjA8/HVjCw==, } - entities@2.2.0: + '@types/prettier@2.7.3': resolution: { - integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==, + integrity: sha512-+68kP9yzs4LMp7VNh8gdzMSPZFL44MLGqiHWvttYJe+6qnuVr4Ek9wSBQoveqY/r+LwjCcU29kNVkidwim+kYA==, } - entities@4.5.0: + '@types/qs@6.14.0': resolution: { - integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, + integrity: sha512-eOunJqu0K1923aExK6y8p6fsihYEn/BYuQ4g0CxAAgFc4b/ZLN4CrsRZ55srTdqoiLzU2B2evC+apEIxprEzkQ==, } - engines: { node: '>=0.12' } - env-paths@2.2.1: + '@types/range-parser@1.2.7': resolution: { - integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==, + integrity: sha512-hKormJbkJqzQGhziax5PItDUTMAM9uE2XXQmM37dyd4hVM+5aVl7oVxMVUiVQn2oCQFN/LKCZdvSM0pFRqbSmQ==, } - engines: { node: '>=6' } - envinfo@7.13.0: + '@types/redux-mock-store@1.5.0': resolution: { - integrity: sha512-cvcaMr7KqXVh4nyzGTVqTum+gAiL265x5jUWQIDLq//zOGbW+gSW/C+OWLleY/rs9Qole6AZLMXPbtIFQbqu+Q==, + integrity: sha512-jcscBazm6j05Hs6xYCca6psTUBbFT2wqMxT7wZEHAYFxHB/I8jYk7d5msrHUlDiSL02HdTqTmkK2oIV8i3C8DA==, } - engines: { node: '>=4' } - hasBin: true - environment@1.1.0: + '@types/retry@0.12.0': resolution: { - integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==, + integrity: sha512-wWKOClTTiizcZhXnPY4wikVAwmdYHp8q6DmC+EJUzAMsycb7HB32Kh9RN4+0gExjmPmZSAQjgURXIGATPegAvA==, } - engines: { node: '>=18' } - enzyme-shallow-equal@1.0.7: + '@types/semver@7.7.1': resolution: { - integrity: sha512-/um0GFqUXnpM9SvKtje+9Tjoz3f1fpBC3eXRFrNs8kpYn69JljciYP7KZTqM/YQbUY9KUjvKB4jo/q+L6WGGvg==, + integrity: sha512-FmgJfu+MOcQ370SD0ev7EI8TlCAfKYU+B4m5T3yXc1CiRN94g/SZPtsCkk506aUDtlMnFZvasDwHHUcZUEaYuA==, } - enzyme@3.11.0: + '@types/send@0.17.6': resolution: { - integrity: sha512-Dw8/Gs4vRjxY6/6i9wU0V+utmQO9kvh9XLnz3LIudviOnVYDEe2ec+0k+NQoMamn1VrjKgCUOWj5jG/5M5M0Qw==, + integrity: sha512-Uqt8rPBE8SY0RK8JB1EzVOIZ32uqy8HwdxCnoCOsYrvnswqmFZ/k+9Ikidlk/ImhsdvBsloHbAlewb2IEBV/Og==, } - err-code@2.0.3: + '@types/send@1.2.1': resolution: { - integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==, + integrity: sha512-arsCikDvlU99zl1g69TcAB3mzZPpxgw0UQnaHeC1Nwb015xp8bknZv5rIfri9xTOcMuaVgvabfIRA7PSZVuZIQ==, } - errno@0.1.8: + '@types/serve-index@1.9.4': resolution: { - integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==, + integrity: sha512-qLpGZ/c2fhSs5gnYsQxtDEq3Oy8SXPClIXkW5ghvAvsNuVSA8k+gCONcUCS/UjLEYvYps+e8uBtfgXgvhwfNug==, } - hasBin: true - error-ex@1.3.2: + '@types/serve-static@1.15.10': resolution: { - integrity: sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==, + integrity: sha512-tRs1dB+g8Itk72rlSI2ZrW6vZg0YrLI81iQSTkMmOqnqCaNr/8Ek4VwWcN5vZgCYWbg/JJSGBlUaYGAOP73qBw==, } - error-stack-parser@2.1.4: + '@types/sockjs@0.3.36': resolution: { - integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==, + integrity: sha512-MK9V6NzAS1+Ud7JV9lJLFqW85VbC9dq3LmwZCuBe4wBDgKC0Kj/jd8Xl+nSviU+Qc3+m7umHHyHg//2KSa0a0Q==, } - es-abstract@1.23.3: + '@types/stack-utils@2.0.3': resolution: { - integrity: sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==, + integrity: sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==, } - engines: { node: '>= 0.4' } - es-array-method-boxes-properly@1.0.0: + '@types/strip-bom@3.0.0': resolution: { - integrity: sha512-wd6JXUmyHmt8T5a2xreUwKcGPq6f1f+WwIJkijUqiGcJz1qqnZgP6XIK+QyIWU5lT7imeNxUll48bziG+TSYcA==, + integrity: sha512-xevGOReSYGM7g/kUBZzPqCrR/KYAo+F0yiPc85WFTJa0MSLtyFTVTU6cJu/aV4mid7IffDIWqo69THF2o4JiEQ==, } - es-define-property@1.0.0: + '@types/strip-json-comments@0.0.30': resolution: { - integrity: sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==, + integrity: sha512-7NQmHra/JILCd1QqpSzl8+mJRc8ZHz3uDm8YV1Ks9IhK0epEiTw8aIErbvH9PI+6XbqhyIQy3462nEsn7UVzjQ==, } - engines: { node: '>= 0.4' } - es-errors@1.3.0: + '@types/webpack-env@1.18.8': resolution: { - integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==, + integrity: sha512-G9eAoJRMLjcvN4I08wB5I7YofOb/kaJNd5uoCMX+LbKXTPCF+ZIHuqTnFaK9Jz1rgs035f9JUPUhNFtqgucy/A==, } - engines: { node: '>= 0.4' } - es-iterator-helpers@1.0.19: + '@types/wrap-ansi@3.0.0': resolution: { - integrity: sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==, + integrity: sha512-ltIpx+kM7g/MLRZfkbL7EsCEjfzCcScLpkg37eXEtx5kmrAKBkTJwd1GIAjDSL8wTpM6Hzn5YO4pSb91BEwu1g==, } - engines: { node: '>= 0.4' } - es-module-lexer@1.5.3: + '@types/ws@8.18.1': resolution: { - integrity: sha512-i1gCgmR9dCl6Vil6UKPI/trA69s08g/syhiDK9TG0Nf1RJjjFI+AzoWW7sPufzkgYAn861skuCwJa0pIIHYxvg==, + integrity: sha512-ThVF6DCVhA8kUGy+aazFQ4kXQ7E1Ty7A3ypFOe0IcJV8O/M511G99AW24irKrW56Wt44yG9+ij8FaqoBGkuBXg==, } - es-object-atoms@1.0.0: + '@types/yargs-parser@21.0.3': resolution: { - integrity: sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==, + integrity: sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==, } - engines: { node: '>= 0.4' } - es-set-tostringtag@2.0.3: + '@types/yargs@16.0.11': resolution: { - integrity: sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==, + integrity: sha512-sbtvk8wDN+JvEdabmZExoW/HNr1cB7D/j4LT08rMiuikfA7m/JNJg7ATQcgzs34zHnoScDkY0ZRSl29Fkmk36g==, } - engines: { node: '>= 0.4' } - es-shim-unscopables@1.0.2: + '@typescript-eslint/eslint-plugin@5.62.0': resolution: { - integrity: sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==, + integrity: sha512-TiZzBSJja/LbhNPvk6yc0JrX9XqhQ0hdh6M2svYfsHGejaKFIAGd9MQ+ERIMzLGlN/kZoYIgdxFV0PuljTKXag==, } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + '@typescript-eslint/parser': ^5.0.0 + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - es-to-primitive@1.2.1: + '@typescript-eslint/parser@5.62.0': resolution: { - integrity: sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==, + integrity: sha512-VlJEV0fOQ7BExOsHYAGrgbEiZoi8D+Bl2+f6V2RrXerRSylnp+ZBHmPvaIa8cz0Ajx7WO7Z5RqfgYg7ED1nRhA==, } - engines: { node: '>= 0.4' } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - es6-error@4.1.1: + '@typescript-eslint/scope-manager@5.62.0': resolution: { - integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==, + integrity: sha512-VXuvVvZeQCQb5Zgf4HAxc04q5j+WrNAtNh9OwCsCgpKqESMTu3tF/jhZ3xG6T4NZwWl65Bg8KuS2uEvhSfLl0w==, } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - es6-promise@4.2.8: + '@typescript-eslint/type-utils@5.62.0': resolution: { - integrity: sha512-HJDGx5daxeIvxdBxvG2cb9g4tEvwIk3i8+nhX0yGrYmZUzbkdg8QbDevheDB8gd0//uPj4c1EQua8Q+MViT0/w==, + integrity: sha512-xsSQreu+VnfbqQpW5vnCJdq1Z3Q0U31qiWmRhr98ONQmcp/yhiPJFPq8MXiJVLiksmOKSjIldZzkebzHuCGzew==, } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: '*' + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - es6-promisify@5.0.0: + '@typescript-eslint/types@5.62.0': resolution: { - integrity: sha512-C+d6UdsYDk0lMebHNR4S2NybQMMngAOnOwYBQjTOiv0MkoJMP0Myw2mgpDLBcpfCmRLxyFqYhS/CfOENq4SJhQ==, + integrity: sha512-87NVngcbVXUahrRTqIK27gD2t5Cu1yuCXxbLcFtCzZGlfyVWWh8mLHkoxzjsB6DDNnvdL+fW8MiwPEJyGJQDgQ==, } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - es6-templates@0.2.3: + '@typescript-eslint/typescript-estree@5.62.0': resolution: { - integrity: sha512-sziUVwcvQ+lOsrTyUY0Q11ilAPj+dy7AQ1E1MgSaHTaaAFTffaa08QSlGNU61iyVaroyb6nYdBV6oD7nzn6i8w==, + integrity: sha512-CmcQ6uY7b9y694lKdRB8FEel7JbU/40iSAPomu++SjLMntB+2Leay2LO6i8VnJk58MtE9/nQSFIH6jpyRWyYzA==, } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - esbuild-wasm@0.23.0: + '@typescript-eslint/utils@5.62.0': resolution: { - integrity: sha512-6jP8UmWy6R6TUUV8bMuC3ZyZ6lZKI56x0tkxyCIqWwRRJ/DgeQKneh/Oid5EoGoPFLrGNkz47ZEtWAYuiY/u9g==, + integrity: sha512-n8oxjeb5aIbPFEtmQxQYOLI0i9n5ySBEY/ZEHHZqKQSFnxio1rv6dthascc9dLuwrL0RC5mPCxB7vnAVGAYWAQ==, } - engines: { node: '>=18' } - hasBin: true + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.0.0 || ^7.0.0 || ^8.0.0 - esbuild@0.21.5: + '@typescript-eslint/visitor-keys@5.62.0': resolution: { - integrity: sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==, + integrity: sha512-07ny+LHRzQXepkGg6w0mFY41fVUNBrL2Roj/++7V1txKugfjm/Ci/qSND03r2RhlJhJYMcTn9AhhSSqQp0Ysyw==, } - engines: { node: '>=12' } - hasBin: true + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - esbuild@0.23.0: + '@ungap/promise-all-settled@1.1.2': resolution: { - integrity: sha512-1lvV17H2bMYda/WaFb2jLPeHU3zml2k4/yagNMG8Q/YtfMjCwEUZa2eXXMgZTVSL5q1n4H7sQ0X6CdJDqqeCFA==, + integrity: sha512-sL/cEvJWAnClXw0wHk85/2L0G6Sj8UB0Ctc1TEMbKSsmpRosqhwj9gWgFRZSrBr2f9tiXISwNhCPmlfqUqyb9Q==, } - engines: { node: '>=18' } - hasBin: true - esbuild@0.23.1: + '@ungap/structured-clone@1.3.0': resolution: { - integrity: sha512-VVNz/9Sa0bs5SELtn3f7qhJCDPCF5oMEl5cO9/SSinpE9hbPVvxbd572HH5AKiP7WD8INO53GgfDDhRjkylHEg==, + integrity: sha512-WmoN8qaIAo7WTYWbAZuG8PYEhn5fkz7dZrqTBZ7dtt//lL2Gwms1IcnQ5yHqjDfX8Ft5j4YzDM23f87zBfDe9g==, } - engines: { node: '>=18' } - hasBin: true - escalade@3.1.2: + '@vercel/nft@0.29.4': resolution: { - integrity: sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==, + integrity: sha512-6lLqMNX3TuycBPABycx7A9F1bHQR7kiQln6abjFbPrf5C/05qHM9M5E4PeTE59c7z8g6vHnx1Ioihb2AQl7BTA==, } - engines: { node: '>=6' } + engines: { node: '>=18' } + hasBin: true - escalade@3.2.0: + '@vue/babel-helper-vue-jsx-merge-props@1.4.0': resolution: { - integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, + integrity: sha512-JkqXfCkUDp4PIlFdDQ0TdXoIejMtTHP67/pvxlgeY+u5k3LEdKuWZ3LK6xkxo52uDoABIVyRwqVkfLQJhk7VBA==, } - engines: { node: '>=6' } - escape-html@1.0.3: + '@vue/babel-helper-vue-transform-on@1.5.0': resolution: { - integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==, + integrity: sha512-0dAYkerNhhHutHZ34JtTl2czVQHUNWv6xEbkdF5W+Yrv5pCWsqjeORdOgbtW2I9gWlt+wBmVn+ttqN9ZxR5tzA==, } - escape-string-regexp@1.0.5: + '@vue/babel-plugin-jsx@1.5.0': resolution: { - integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, + integrity: sha512-mneBhw1oOqCd2247O0Yw/mRwC9jIGACAJUlawkmMBiNmL4dGA2eMzuNZVNqOUfYTa6vqmND4CtOPzmEEEqLKFw==, } - engines: { node: '>=0.8.0' } + peerDependencies: + '@babel/core': ^7.0.0-0 + peerDependenciesMeta: + '@babel/core': + optional: true - escape-string-regexp@2.0.0: + '@vue/babel-plugin-resolve-type@1.5.0': resolution: { - integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==, + integrity: sha512-Wm/60o+53JwJODm4Knz47dxJnLDJ9FnKnGZJbUUf8nQRAtt6P+undLUAVU3Ha33LxOJe6IPoifRQ6F/0RrU31w==, } - engines: { node: '>=8' } + peerDependencies: + '@babel/core': ^7.0.0-0 - escape-string-regexp@4.0.0: + '@vue/babel-plugin-transform-vue-jsx@1.4.0': resolution: { - integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, + integrity: sha512-Fmastxw4MMx0vlgLS4XBX0XiBbUFzoMGeVXuMV08wyOfXdikAFqBTuYPR0tlk+XskL19EzHc39SgjrPGY23JnA==, } - engines: { node: '>=10' } + peerDependencies: + '@babel/core': ^7.0.0-0 - escape-string-regexp@5.0.0: + '@vue/babel-preset-app@5.0.9': resolution: { - integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==, + integrity: sha512-0rKOF4s/AhaRMJLybxOCgXfwtYhO3pwDSL/q/W8wRs1LzmHAc77FyTXWlun6VyKiSKwSdtH7CvOiWqq+DfofdA==, } - engines: { node: '>=12' } + peerDependencies: + '@babel/core': '*' + core-js: ^3 + vue: ^2 || ^3.2.13 + peerDependenciesMeta: + core-js: + optional: true + vue: + optional: true - escodegen@2.1.0: + '@vue/babel-preset-jsx@1.4.0': resolution: { - integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==, + integrity: sha512-QmfRpssBOPZWL5xw7fOuHNifCQcNQC1PrOo/4fu6xlhlKJJKSA3HqX92Nvgyx8fqHZTUGMPHmFA+IDqwXlqkSA==, } - engines: { node: '>=6.0' } - hasBin: true + peerDependencies: + '@babel/core': ^7.0.0-0 + vue: '*' + peerDependenciesMeta: + vue: + optional: true - eslint-compat-utils@0.5.1: + '@vue/babel-sugar-composition-api-inject-h@1.4.0': resolution: { - integrity: sha512-3z3vFexKIEnjHE3zCMRo6fn/e44U7T1khUjg+Hp0ZQMCigh28rALD0nPFBcGZuiLC5rLZa2ubQHDRln09JfU2Q==, + integrity: sha512-VQq6zEddJHctnG4w3TfmlVp5FzDavUSut/DwR0xVoe/mJKXyMcsIibL42wPntozITEoY90aBV0/1d2KjxHU52g==, } - engines: { node: '>=12' } peerDependencies: - eslint: '>=6.0.0' + '@babel/core': ^7.0.0-0 - eslint-config-prettier@8.10.0: + '@vue/babel-sugar-composition-api-render-instance@1.4.0': resolution: { - integrity: sha512-SM8AMJdeQqRYT9O9zguiruQZaN7+z+E4eAP9oiLNGKMtomwaB1E9dcgUD6ZAn/eQAb52USbvezbiljfZUhbJcg==, + integrity: sha512-6ZDAzcxvy7VcnCjNdHJ59mwK02ZFuP5CnucloidqlZwVQv5CQLijc3lGpR7MD3TWFi78J7+a8J56YxbCtHgT9Q==, } - hasBin: true peerDependencies: - eslint: '>=7.0.0' + '@babel/core': ^7.0.0-0 - eslint-config-prettier@9.1.0: + '@vue/babel-sugar-functional-vue@1.4.0': resolution: { - integrity: sha512-NSWl5BFQWEPi1j4TjVNItzYV7dZXZ+wP6I6ZhrBGpChQhZRUaElihE9uRRkcbRnNb76UMKDF3r+WTmNcGPKsqw==, + integrity: sha512-lTEB4WUFNzYt2In6JsoF9sAYVTo84wC4e+PoZWSgM6FUtqRJz7wMylaEhSRgG71YF+wfLD6cc9nqVeXN2rwBvw==, } - hasBin: true peerDependencies: - eslint: '>=7.0.0' + '@babel/core': ^7.0.0-0 - eslint-import-resolver-node@0.3.9: + '@vue/babel-sugar-inject-h@1.4.0': resolution: { - integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==, + integrity: sha512-muwWrPKli77uO2fFM7eA3G1lAGnERuSz2NgAxuOLzrsTlQl8W4G+wwbM4nB6iewlKbwKRae3nL03UaF5ffAPMA==, } + peerDependencies: + '@babel/core': ^7.0.0-0 - eslint-module-utils@2.8.1: + '@vue/babel-sugar-v-model@1.4.0': resolution: { - integrity: sha512-rXDXR3h7cs7dy9RNpUlQf80nX31XWJEyGq1tRMo+6GsO5VmTe4UTwtmonAD4ZkAsrfMVDA2wlGJ3790Ys+D49Q==, + integrity: sha512-0t4HGgXb7WHYLBciZzN5s0Hzqan4Ue+p/3FdQdcaHAb7s5D9WZFGoSxEZHrR1TFVZlAPu1bejTKGeAzaaG3NCQ==, } - engines: { node: '>=4' } peerDependencies: - '@typescript-eslint/parser': '*' - eslint: '*' - eslint-import-resolver-node: '*' - eslint-import-resolver-typescript: '*' - eslint-import-resolver-webpack: '*' - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true - eslint: - optional: true - eslint-import-resolver-node: - optional: true - eslint-import-resolver-typescript: - optional: true - eslint-import-resolver-webpack: - optional: true + '@babel/core': ^7.0.0-0 - eslint-plugin-import@2.29.1: + '@vue/babel-sugar-v-on@1.4.0': resolution: { - integrity: sha512-BbPC0cuExzhiMo4Ff1BTVwHpjjv28C5R+btTOGaCRC7UEz801up0JadwkeSk5Ued6TG34uaczuVuH6qyy5YUxw==, + integrity: sha512-m+zud4wKLzSKgQrWwhqRObWzmTuyzl6vOP7024lrpeJM4x2UhQtRDLgYjXAw9xBXjCwS0pP9kXjg91F9ZNo9JA==, } - engines: { node: '>=4' } peerDependencies: - '@typescript-eslint/parser': '*' - eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 - peerDependenciesMeta: - '@typescript-eslint/parser': - optional: true + '@babel/core': ^7.0.0-0 - eslint-plugin-prettier-vue@4.2.0: + '@vue/cli-overlay@5.0.9': resolution: { - integrity: sha512-DA2oNRx+pZ6RM/EIHIPME4FQZifnkEROa55OWtTTUFGHpj53tcHomuxVP/kS/2MM+ul46GEK+jymK69STWDWoA==, + integrity: sha512-aBdZWrYKxLuFz1FDsk/muFD7GycrsW73Gi11yRc7R2W7Bm8mDRc9HKAI790gdg4NV+chkDFmfkegjg5iMDEpAA==, } - engines: { node: '>=14' } - eslint-plugin-prettier@4.2.1: + '@vue/cli-plugin-babel@5.0.9': resolution: { - integrity: sha512-f/0rXLXUt0oFYs8ra4w49wYZBG5GKZpAYsJSm6rnYL5uVDjd+zowwMwVZHnAjf4edNrKpCDYfXDgmRE/Ak7QyQ==, + integrity: sha512-oDZt1Kfe4KGNtig3/3zFo2pIeDJij2uS0M6S+tAqQno4Zpla2D8Hk/AR5PrstUd/HmhHZYJoGyF78MOfj3SbWg==, } - engines: { node: '>=12.0.0' } peerDependencies: - eslint: '>=7.28.0' - eslint-config-prettier: '*' - prettier: '>=2.0.0' - peerDependenciesMeta: - eslint-config-prettier: - optional: true + '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0 + + '@vue/cli-plugin-router@5.0.9': + resolution: + { + integrity: sha512-kopbO/8kIl5CAffwgptXEwV509i+M0FfwW4sSkgQ2RzpxOYBjQZvp+096mjZfFcWKSmryNP/ri/Mnu78vmhlhw==, + } + peerDependencies: + '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0 - eslint-plugin-prettier@5.2.1: + '@vue/cli-plugin-typescript@5.0.9': resolution: { - integrity: sha512-gH3iR3g4JfF+yYPaJYkN7jEl9QbweL/YfkoRlNnuIEHEz1vHVlCmWOS+eGGiRuzHQXdJFCOTxRgvju9b8VUmrw==, + integrity: sha512-68S9rtpLMZLOIjQ9UaLSPupiJlE6ySO68kDVraIkqeQNi0qfcnVOlXTsDd4UnobKv+v+qHnt593+8bt3mjXiyA==, } - engines: { node: ^14.18.0 || >=16.0.0 } peerDependencies: - '@types/eslint': '>=8.0.0' - eslint: '>=8.0.0' - eslint-config-prettier: '*' - prettier: '>=3.0.0' + '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0 + cache-loader: ^4.1.0 + typescript: '>=2' + vue: ^2 || ^3.2.13 + vue-template-compiler: ^2.0.0 peerDependenciesMeta: - '@types/eslint': + cache-loader: optional: true - eslint-config-prettier: + vue-template-compiler: optional: true - eslint-plugin-react@7.34.1: + '@vue/cli-plugin-unit-mocha@5.0.9': resolution: { - integrity: sha512-N97CxlouPT1AHt8Jn0mhhN2RrADlUAsk1/atcT2KyA/l9Q/E6ll7OIGwNumFmWfZ9skV3XXccYS19h80rHtgkw==, + integrity: sha512-zZm0z0al05ekbR5KmrcRuaSrNnDNWJSlOTvpN8OZdblRhPNkMqUm7JnTACEKp/nLDRVb+tIkTkGM4B+dE3celQ==, } - engines: { node: '>=4' } peerDependencies: - eslint: ^3 || ^4 || ^5 || ^6 || ^7 || ^8 + '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0 - eslint-plugin-vue-scoped-css@2.8.1: + '@vue/cli-plugin-vuex@5.0.9': resolution: { - integrity: sha512-V6B+zZE60ykYvHTDzdhJ3xa4C83ntmGXqFsylc8l1jdVR9PSgod2+bGFNL7OwRKgZj82ij/o904xa04z1bfCRA==, + integrity: sha512-AQhgGNFVd4Pu2crvS0a+hRckgrJv07gzOASdbLd3I72wkT43dd01MLRp8IBRRsu92t3MXenW86AZUCbQBz3//A==, } - engines: { node: ^12.22 || ^14.17 || >=16 } peerDependencies: - eslint: '>=5.0.0' - vue-eslint-parser: '>=7.1.0' + '@vue/cli-service': ^3.0.0 || ^4.0.0 || ^5.0.0-0 - eslint-plugin-vue@9.26.0: + '@vue/cli-service@5.0.9': resolution: { - integrity: sha512-eTvlxXgd4ijE1cdur850G6KalZqk65k1JKoOI2d1kT3hr8sPD07j1q98FRFdNnpxBELGPWxZmInxeHGF/GxtqQ==, + integrity: sha512-yTX7GVyM19tEbd+y5/gA6MkVKA6K61nVYHYAivD61Hx6odVFmQsaC3/R3cWAHM1P5oVKCevBbumPljbT+tFG2w==, } - engines: { node: ^14.17.0 || >=16.0.0 } + engines: { node: ^12.0.0 || >= 14.0.0 } + hasBin: true peerDependencies: - eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 + cache-loader: '*' + less-loader: '*' + pug-plain-loader: '*' + raw-loader: '*' + sass-loader: '*' + stylus-loader: '*' + vue-template-compiler: ^2.0.0 + webpack-sources: '*' + peerDependenciesMeta: + cache-loader: + optional: true + less-loader: + optional: true + pug-plain-loader: + optional: true + raw-loader: + optional: true + sass-loader: + optional: true + stylus-loader: + optional: true + vue-template-compiler: + optional: true + webpack-sources: + optional: true - eslint-scope@5.1.1: + '@vue/cli-shared-utils@5.0.9': resolution: { - integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==, + integrity: sha512-lf4KykiG8j9KwvNVi7fKtASmHuLsxCcCsflVU2b2CHMRuR4weOIV3zuuCrjWKjk0APn/MHJhgCjJGzHMbTtd5w==, } - engines: { node: '>=8.0.0' } - eslint-scope@7.2.2: + '@vue/compiler-core@3.5.25': resolution: { - integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==, + integrity: sha512-vay5/oQJdsNHmliWoZfHPoVZZRmnSWhug0BYT34njkYTPqClh3DNWLkZNJBVSjsNMrg0CCrBfoKkjZQPM/QVUw==, } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - eslint-scope@8.2.0: + '@vue/compiler-dom@3.5.25': resolution: { - integrity: sha512-PHlWUfG6lvPc3yvP5A4PNyBL1W8fkDUccmI21JUu/+GKZBoH/W5u6usENXUrWFRsyoW5ACUjFGgAFQp5gUlb/A==, + integrity: sha512-4We0OAcMZsKgYoGlMjzYvaoErltdFI2/25wqanuTu+S4gismOTRTBPi4IASOjxWdzIwrYSjnqONfKvuqkXzE2Q==, } - engines: { node: ^18.18.0 || ^20.9.0 || >=21.1.0 } - eslint-visitor-keys@3.4.3: + '@vue/compiler-sfc@3.5.25': resolution: { - integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==, + integrity: sha512-PUgKp2rn8fFsI++lF2sO7gwO2d9Yj57Utr5yEsDf3GNaQcowCLKL7sf+LvVFvtJDXUp/03+dC6f2+LCv5aK1ag==, } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - eslint@8.57.0: + '@vue/compiler-ssr@3.5.25': resolution: { - integrity: sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==, + integrity: sha512-ritPSKLBcParnsKYi+GNtbdbrIE1mtuFEJ4U1sWeuOMlIziK5GtOL85t5RhsNy4uWIXPgk+OUdpnXiTdzn8o3A==, } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - hasBin: true - espree@9.6.1: + '@vue/component-compiler-utils@3.3.0': resolution: { - integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==, + integrity: sha512-97sfH2mYNU+2PzGrmK2haqffDpVASuib9/w2/noxiFi31Z54hW+q3izKQXXQZSNhtiUpAI36uSuYepeBe4wpHQ==, } - engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - esprima@3.1.3: + '@vue/eslint-config-typescript@11.0.3': resolution: { - integrity: sha512-AWwVMNxwhN8+NIPQzAQZCm7RkLC4RbM3B1OobMuyp3i+w73X57KCKaVIxaRZb+DYCojq7rspo+fmuQfAboyhFg==, + integrity: sha512-dkt6W0PX6H/4Xuxg/BlFj5xHvksjpSlVjtkQCpaYJBIEuKj2hOVU7r+TIe+ysCwRYFz/lGqvklntRkCAibsbPw==, } - engines: { node: '>=4' } - hasBin: true + engines: { node: ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 + eslint-plugin-vue: ^9.0.0 + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - esprima@4.0.1: + '@vue/reactivity@3.5.25': resolution: { - integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, + integrity: sha512-5xfAypCQepv4Jog1U4zn8cZIcbKKFka3AgWHEFQeK65OW+Ys4XybP6z2kKgws4YB43KGpqp5D/K3go2UPPunLA==, } - engines: { node: '>=4' } - hasBin: true - esquery@1.5.0: + '@vue/runtime-core@3.5.25': resolution: { - integrity: sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==, + integrity: sha512-Z751v203YWwYzy460bzsYQISDfPjHTl+6Zzwo/a3CsAf+0ccEjQ8c+0CdX1WsumRTHeywvyUFtW6KvNukT/smA==, } - engines: { node: '>=0.10' } - esrecurse@4.3.0: + '@vue/runtime-dom@3.5.25': resolution: { - integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, + integrity: sha512-a4WrkYFbb19i9pjkz38zJBg8wa/rboNERq3+hRRb0dHiJh13c+6kAbgqCPfMaJ2gg4weWD3APZswASOfmKwamA==, } - engines: { node: '>=4.0' } - estraverse@4.3.0: + '@vue/server-renderer@3.5.25': resolution: { - integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==, + integrity: sha512-UJaXR54vMG61i8XNIzTSf2Q7MOqZHpp8+x3XLGtE3+fL+nQd+k7O5+X3D/uWrnQXOdMw5VPih+Uremcw+u1woQ==, } - engines: { node: '>=4.0' } + peerDependencies: + vue: 3.5.25 - estraverse@5.3.0: + '@vue/shared@3.5.25': resolution: { - integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, + integrity: sha512-AbOPdQQnAnzs58H2FrrDxYj/TJfmeS2jdfEEhgiKINy+bnOANmVizIEgq1r+C5zsbs6l1CCQxtcj71rwNQ4jWg==, } - engines: { node: '>=4.0' } - estree-walker@0.6.1: + '@vue/test-utils@2.4.6': resolution: { - integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==, + integrity: sha512-FMxEjOpYNYiFe0GkaHsnJPXFHxQ6m4t8vI/ElPGpMWxZKpmRvQ33OIrvRXemy6yha03RxhOlQuy+gZMC3CQSow==, } - estree-walker@2.0.2: + '@vue/vue3-jest@27.0.0': resolution: { - integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, + integrity: sha512-VL61CgZBoQqayXfzlZJHHpZuX4lsT8dmdZMJzADhdAJjKu26JBpypHr/2ppevxItljPiuALQW4MKhhCXZRXnLg==, } + peerDependencies: + '@babel/core': 7.x + babel-jest: 27.x + jest: 27.x + ts-jest: 27.x + typescript: '>= 3.x' + vue: ^3.0.0-0 + peerDependenciesMeta: + ts-jest: + optional: true + typescript: + optional: true - estree-walker@3.0.3: + '@vue/web-component-wrapper@1.3.0': resolution: { - integrity: sha512-7RUKfXgSMMkzt6ZuXmqapOurLGPPfgj6l9uRZ7lRGolvk0y2yocc35LdcxKC5PQZdn2DMqioAQ2NoWcrTKmm6g==, + integrity: sha512-Iu8Tbg3f+emIIMmI2ycSI8QcEuAUgPTgHwesDU1eKMLE4YC/c/sFbGc70QgMq31ijRftV0R7vCm9co6rldCeOA==, } - esutils@2.0.3: + '@webassemblyjs/ast@1.14.1': resolution: { - integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, + integrity: sha512-nuBEDgQfm1ccRp/8bCQrx1frohyufl4JlbMMZ4P1wpeOfDhF6FQkxZJ1b/e+PLwr6X1Nhw6OLme5usuBWYBvuQ==, } - engines: { node: '>=0.10.0' } - etag@1.8.1: + '@webassemblyjs/floating-point-hex-parser@1.13.2': resolution: { - integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==, + integrity: sha512-6oXyTOzbKxGH4steLbLNOu71Oj+C8Lg34n6CqRvqfS2O71BxY6ByfMDRhBytzknj9yGUPVJ1qIKhRlAwO1AovA==, } - engines: { node: '>= 0.6' } - event-pubsub@4.3.0: + '@webassemblyjs/helper-api-error@1.13.2': resolution: { - integrity: sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==, + integrity: sha512-U56GMYxy4ZQCbDZd6JuvvNV/WFildOjsaWD3Tzzvmw/mas3cXzRJPMjP83JqEsgSbyrmaGjBfDtV7KDXV9UzFQ==, } - engines: { node: '>=4.0.0' } - eventemitter3@4.0.7: + '@webassemblyjs/helper-buffer@1.14.1': resolution: { - integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==, + integrity: sha512-jyH7wtcHiKssDtFPRB+iQdxlDf96m0E39yb0k5uJVhFGleZFoNw1c4aeIcVUPPbXUVJ94wwnMOAqUHyzoEPVMA==, } - eventemitter3@5.0.1: + '@webassemblyjs/helper-numbers@1.13.2': resolution: { - integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==, + integrity: sha512-FE8aCmS5Q6eQYcV3gI35O4J789wlQA+7JrqTTpJqn5emA4U2hvwJmvFRC0HODS+3Ye6WioDklgd6scJ3+PLnEA==, } - events@3.3.0: + '@webassemblyjs/helper-wasm-bytecode@1.13.2': resolution: { - integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==, + integrity: sha512-3QbLKy93F0EAIXLh0ogEVR6rOubA9AoZ+WRYhNbFyuB70j3dRdwH9g+qXhLAO0kiYGlg3TxDV+I4rQTr/YNXkA==, } - engines: { node: '>=0.8.x' } - evp_bytestokey@1.0.3: + '@webassemblyjs/helper-wasm-section@1.14.1': resolution: { - integrity: sha512-/f2Go4TognH/KvCISP7OUsHn85hT9nUkxxA9BEWxFn+Oj9o8ZNLm/40hdlgSLyuOimsrTKLUMEorQexp/aPQeA==, + integrity: sha512-ds5mXEqTJ6oxRoqjhWDU83OgzAYjwsCV8Lo/N+oRsNDmx/ZDpqalmrtgOMkHwxsG0iI//3BwWAErYRHtgn0dZw==, } - execa@1.0.0: + '@webassemblyjs/ieee754@1.13.2': resolution: { - integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==, + integrity: sha512-4LtOzh58S/5lX4ITKxnAK2USuNEvpdVV9AlgGQb8rJDHaLeHciwG4zlGr0j/SNWlr7x3vO1lDEsuePvtcDNCkw==, } - engines: { node: '>=6' } - execa@5.0.0: + '@webassemblyjs/leb128@1.13.2': resolution: { - integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==, + integrity: sha512-Lde1oNoIdzVzdkNEAWZ1dZ5orIbff80YPdHx20mrHwHrVNNTjNr8E3xz9BdpcGqRQbAEa+fkrCb+fRFTl/6sQw==, } - engines: { node: '>=10' } - execa@5.1.1: + '@webassemblyjs/utf8@1.13.2': resolution: { - integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, + integrity: sha512-3NQWGjKTASY1xV5m7Hr0iPeXD9+RDobLll3T9d2AO+g3my8xy5peVyjSag4I50mR1bBSN/Ct12lo+R9tJk0NZQ==, } - engines: { node: '>=10' } - execa@8.0.1: + '@webassemblyjs/wasm-edit@1.14.1': resolution: { - integrity: sha512-VyhnebXciFV2DESc+p6B+y0LjSm0krU4OgJN44qFAhBY0TJ+1V61tYD2+wHusZ6F9n5K+vl8k0sTy7PEfV4qpg==, + integrity: sha512-RNJUIQH/J8iA/1NzlE4N7KtyZNHi3w7at7hDjvRNm5rcUXa00z1vRz3glZoULfJ5mpvYhLybmVcwcjGrC1pRrQ==, } - engines: { node: '>=16.17' } - exit@0.1.2: + '@webassemblyjs/wasm-gen@1.14.1': resolution: { - integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==, + integrity: sha512-AmomSIjP8ZbfGQhumkNvgC33AY7qtMCXnN6bL2u2Js4gVCg8fp735aEiMSBbDR7UQIj90n4wKAFUSEd0QN2Ukg==, } - engines: { node: '>= 0.8.0' } - expect@27.5.1: + '@webassemblyjs/wasm-opt@1.14.1': resolution: { - integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==, + integrity: sha512-PTcKLUNvBqnY2U6E5bdOQcSM+oVP/PmrDY9NzowJjislEjwP/C4an2303MCVS2Mg9d3AJpIGdUFIQQWbPds0Sw==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - exponential-backoff@3.1.1: + '@webassemblyjs/wasm-parser@1.14.1': resolution: { - integrity: sha512-dX7e/LHVJ6W3DE1MHWi9S1EYzDESENfLrYohG2G++ovZrYOkm4Knwa0mc1cn84xJOR4KEU0WSchhLbd0UklbHw==, + integrity: sha512-JLBl+KZ0R5qB7mCnud/yyX08jWFw5MsoalJ1pQ4EdFlgj9VdXKGuENGsiCIjegI1W7p91rUlcB/LB5yRJKNTcQ==, } - express@4.19.2: + '@webassemblyjs/wast-printer@1.14.1': resolution: { - integrity: sha512-5T6nhjsT+EOMzuck8JjBHARTHfMht0POzlA60WV2pMD3gyXw2LZnZ+ueGdNxG+0calOJcWKbpFcuzLZ91YWq9Q==, + integrity: sha512-kPSSXE6De1XOR820C90RIo2ogvZG+c3KiHzqUoO/F34Y2shGzesfqv7o57xrxovZJH/MetF5UjroJ/R/3isoiw==, } - engines: { node: '>= 0.10.0' } - extend@3.0.2: + '@xtuc/ieee754@1.2.0': resolution: { - integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==, + integrity: sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==, } - external-editor@3.1.0: + '@xtuc/long@4.2.2': resolution: { - integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==, + integrity: sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==, } - engines: { node: '>=4' } - extract-from-css@0.4.4: + '@yarnpkg/lockfile@1.1.0': resolution: { - integrity: sha512-41qWGBdtKp9U7sgBxAQ7vonYqSXzgW/SiAYzq4tdWSVhAShvpVCH1nyvPQgjse6EdgbW7Y7ERdT3674/lKr65A==, + integrity: sha512-GpSwvyXOcOOlV70vbnzjj4fW5xW/FdUF6nQEt1ENy7m4ZCczi1+/buVUPAqmGfqznsORNFzUMjctTIp8a9tuCQ==, } - engines: { node: '>=0.10.0', npm: '>=2.0.0' } - extsprintf@1.3.0: + '@yarnpkg/parsers@3.0.0-rc.46': resolution: { - integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==, + integrity: sha512-aiATs7pSutzda/rq8fnuPwTglyVwjM22bNnK2ZgjrpAjQHSSl3lztd2f9evst1W/qnC58DRz7T7QndUDumAR4Q==, } - engines: { '0': node >=0.6.0 } + engines: { node: '>=14.15.0' } - fast-deep-equal@3.1.3: + '@zkochan/js-yaml@0.0.6': resolution: { - integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, + integrity: sha512-nzvgl3VfhcELQ8LyVrYOru+UtAy1nrygk2+AGbTm8a5YcO6o8lSjAT+pfg3vJWxIoZKOUhrK6UU7xW/+00kQrg==, } + hasBin: true - fast-diff@1.3.0: + '@zkochan/rimraf@2.1.3': resolution: { - integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==, + integrity: sha512-mCfR3gylCzPC+iqdxEA6z5SxJeOgzgbwmyxanKriIne5qZLswDe/M43aD3p5MNzwzXRhbZg/OX+MpES6Zk1a6A==, } + engines: { node: '>=12.10' } - fast-glob@3.2.7: + JSONStream@1.3.5: resolution: { - integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==, + integrity: sha512-E+iruNOY8VV9s4JEbe1aNEm6MiszPRr/UfcHMz0TQh1BXSxHK+ASV1R6W4HpjBhSeS+54PIsAMCBmwD06LLsqQ==, } - engines: { node: '>=8' } + hasBin: true - fast-glob@3.3.2: + abab@2.0.6: resolution: { - integrity: sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==, + integrity: sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==, } - engines: { node: '>=8.6.0' } + deprecated: Use your platform's native atob() and btoa() methods instead - fast-json-stable-stringify@2.1.0: + abbrev@1.1.1: resolution: { - integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, + integrity: sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q==, } - fast-levenshtein@2.0.6: + abbrev@2.0.0: resolution: { - integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, + integrity: sha512-6/mh1E2u2YgEsCHdY0Yx5oW+61gZU+1vXaoiHHrpKeuRNNgFvS+/jrwHiQhB5apAf5oB7UB7E19ol2R2LKH8hQ==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - fast-safe-stringify@2.1.1: + abbrev@3.0.1: resolution: { - integrity: sha512-W+KJc2dmILlPplD/H4K9l9LcAHAfPtP6BY84uVLXQ6Evcz9Lcg33Y2z1IVblT6xdY54PXYVHEv+0Wpq8Io6zkA==, + integrity: sha512-AO2ac6pjRB3SJmGJo+v5/aK6Omggp6fsLrs6wN9bd35ulu4cCwaAU9+7ZhXjeqHVkaHThLuzH0nZr0YpCDhygg==, } + engines: { node: ^18.17.0 || >=20.5.0 } - fast-uri@3.0.3: + accepts@1.3.8: resolution: { - integrity: sha512-aLrHthzCjH5He4Z2H9YZ+v6Ujb9ocRuW6ZzkJQOrTxleEijANq4v1TsaPaVG1PZcuurEzrLcWRyYBYXD5cEiaw==, + integrity: sha512-PYAthTa2m2VKxuvSD3DPC/Gy+U+sOA1LAuT8mkmRuvw+NACSaeXEQ+NHcVF7rONl6qcaxV3Uuemwawk+7+SJLw==, } + engines: { node: '>= 0.6' } - fastest-levenshtein@1.0.16: + acorn-globals@6.0.0: resolution: { - integrity: sha512-eRnCtTTtGZFpQCwhJiUOuxPQWRXVKYDn0b2PeHfXL6/Zi53SLAzAHfVhVWK2AryC/WH05kGfxhFIPvTF0SXQzg==, + integrity: sha512-ZQl7LOWaF5ePqqcX4hLuv/bLXYQNfNWw2c0/yX/TsPRKamzHcTGQnlCjHT3TsmkOUVEPS3crCxiPfdzE/Trlhg==, } - engines: { node: '>= 4.9.1' } - fastparse@1.1.2: + acorn-import-attributes@1.9.5: resolution: { - integrity: sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==, + integrity: sha512-n02Vykv5uA3eHGM/Z2dQrcD56kL8TyDb2p1+0P83PClMnC/nc+anbQRhIOWnSq4Ke/KvDPrY3C9hDtC/A3eHnQ==, } + peerDependencies: + acorn: ^8 - fastq@1.17.1: + acorn-import-phases@1.0.4: resolution: { - integrity: sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==, + integrity: sha512-wKmbr/DDiIXzEOiWrTTUcDm24kQ2vGfZQvM2fwg2vXqR5uW6aapr7ObPtj1th32b9u90/Pf4AItvdTh42fBmVQ==, } + engines: { node: '>=10.13.0' } + peerDependencies: + acorn: ^8.14.0 - faye-websocket@0.11.4: + acorn-jsx@5.3.2: resolution: { - integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==, + integrity: sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==, } - engines: { node: '>=0.8.0' } + peerDependencies: + acorn: ^6.0.0 || ^7.0.0 || ^8.0.0 - fb-watchman@2.0.2: + acorn-walk@7.2.0: resolution: { - integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==, + integrity: sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==, } + engines: { node: '>=0.4.0' } - figgy-pudding@3.5.2: + acorn-walk@8.3.4: resolution: { - integrity: sha512-0btnI/H8f2pavGMN8w40mlSKOfTK2SVJmBfBeVIj3kNw0swwgzyRq0d5TJVOwodFmtvpPeWPN/MCcfuWF0Ezbw==, + integrity: sha512-ueEepnujpqee2o5aIYnvHU6C0A42MNdsIDeqy5BydrkuC5R1ZuUFnm27EeFJGoEHJQgn3uleRvmTXaJgfXbt4g==, } - deprecated: This module is no longer supported. + engines: { node: '>=0.4.0' } - figures@2.0.0: + acorn@7.4.1: resolution: { - integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==, + integrity: sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==, } - engines: { node: '>=4' } + engines: { node: '>=0.4.0' } + hasBin: true - figures@3.2.0: + acorn@8.15.0: resolution: { - integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==, + integrity: sha512-NZyJarBfL7nWwIq+FDL6Zp/yHEhePMNnnJ0y3qfieCrmNvYct8uvtiV41UvlSe6apAfk0fY1FbWx+NwfmpvtTg==, } - engines: { node: '>=8' } + engines: { node: '>=0.4.0' } + hasBin: true - figures@6.1.0: + add-stream@1.0.0: resolution: { - integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==, + integrity: sha512-qQLMr+8o0WC4FZGQTcJiKBVC59JylcPSrTtk6usvmIDFUOCKegapy1VHQwRbFMOFyb/inzUVqHs+eMYKDM1YeQ==, } - engines: { node: '>=18' } - file-entry-cache@6.0.1: + address@1.2.2: resolution: { - integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==, + integrity: sha512-4B/qKCfeE/ODUaAUpSwfzazo5x29WD4r3vXiWsB7I2mSDAihwEqKO+g8GELZUQSSAo5e1XTYh3ZVfLyxBc12nA==, } - engines: { node: ^10.12.0 || >=12.0.0 } + engines: { node: '>= 10.0.0' } - file-uri-to-path@1.0.0: + agent-base@6.0.2: resolution: { - integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==, + integrity: sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==, } + engines: { node: '>= 6.0.0' } - file-url@3.0.0: + agent-base@7.1.4: resolution: { - integrity: sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==, + integrity: sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==, } - engines: { node: '>=8' } + engines: { node: '>= 14' } - filelist@1.0.4: + agentkeepalive@4.6.0: resolution: { - integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==, + integrity: sha512-kja8j7PjmncONqaTsB8fQ+wE2mSU2DJ9D4XKoJ5PFWIdRMa6SLSN1ff4mOr4jCbfRSsxR4keIiySJU0N9T5hIQ==, } + engines: { node: '>= 8.0.0' } - fill-range@7.1.1: + aggregate-error@3.1.0: resolution: { - integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, + integrity: sha512-4I7Td01quW/RpocfNayFdFVk1qSuoh0E7JrbRJ16nH01HhKFQ88INq9Sd+nd72zqRySlr9BmDA8xlEJ6vJMrYA==, } engines: { node: '>=8' } - finalhandler@1.1.2: + ajv-formats@2.1.1: resolution: { - integrity: sha512-aAWcW57uxVNrQZqFXjITpW3sIUQmHGG3qSb9mUah9MgMC4NeWhNOlNjXEYq3HjRAvL6arUviZGGJsBg6z0zsWA==, + integrity: sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==, } - engines: { node: '>= 0.8' } + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true - finalhandler@1.2.0: + ajv-formats@3.0.1: resolution: { - integrity: sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==, + integrity: sha512-8iUql50EUR+uUcdRQ3HDqa6EVyo3docL8g5WJ3FNcWmu62IbkGUue/pEyLBW8VGKKucTPgqeks4fIU1DA4yowQ==, } - engines: { node: '>= 0.8' } + peerDependencies: + ajv: ^8.0.0 + peerDependenciesMeta: + ajv: + optional: true - find-cache-dir@2.1.0: + ajv-keywords@3.5.2: resolution: { - integrity: sha512-Tq6PixE0w/VMFfCgbONnkiQIVol/JJL7nRMi20fqzA4NRs9AfeqMGeRdPi3wIhYkxjeBaWh2rxwapn5Tu3IqOQ==, + integrity: sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==, } - engines: { node: '>=6' } + peerDependencies: + ajv: ^6.9.1 - find-cache-dir@3.3.2: + ajv-keywords@5.1.0: resolution: { - integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==, + integrity: sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==, } - engines: { node: '>=8' } + peerDependencies: + ajv: ^8.8.2 - find-cache-dir@4.0.0: + ajv@6.12.6: resolution: { - integrity: sha512-9ZonPT4ZAK4a+1pUPVPZJapbi7O5qbbJPdYw/NOQWZZbVLdDTYM3A4R9z/DpAM08IDaFGsvPgiGZ82WEwUDWjg==, + integrity: sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==, } - engines: { node: '>=14.16' } - find-root@1.1.0: + ajv@8.17.1: resolution: { - integrity: sha512-NKfW6bec6GfKc0SGx1e07QZY9PE99u0Bft/0rzSD5k3sO/vwkVUpDUKVm5Gpp5Ue3YfShPFTX2070tDs5kB9Ng==, + integrity: sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==, } - find-up-simple@1.0.0: + ansi-colors@4.1.1: resolution: { - integrity: sha512-q7Us7kcjj2VMePAa02hDAF6d+MzsdsAWEwYyOpwUtlerRBkOEPBCRZrAV4XfcSN8fHAgaD0hP7miwoay6DCprw==, + integrity: sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==, } - engines: { node: '>=18' } + engines: { node: '>=6' } - find-up@2.1.0: + ansi-colors@4.1.3: resolution: { - integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==, + integrity: sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==, } - engines: { node: '>=4' } + engines: { node: '>=6' } - find-up@3.0.0: + ansi-escapes@3.2.0: resolution: { - integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==, + integrity: sha512-cBhpre4ma+U0T1oM5fXg7Dy1Jw7zzwv7lt/GoCpr+hDQJoYnKVPLL4dCvSEFMmQurOQvSrwT7SL/DAlhBI97RQ==, } - engines: { node: '>=6' } + engines: { node: '>=4' } - find-up@4.1.0: + ansi-escapes@4.3.2: resolution: { - integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, + integrity: sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==, } engines: { node: '>=8' } - find-up@5.0.0: + ansi-escapes@7.2.0: resolution: { - integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, + integrity: sha512-g6LhBsl+GBPRWGWsBtutpzBYuIIdBkLEvad5C/va/74Db018+5TZiyA26cZJAr3Rft5lprVqOIPxf5Vid6tqAw==, } - engines: { node: '>=10' } + engines: { node: '>=18' } - find-up@6.3.0: + ansi-html-community@0.0.8: resolution: { - integrity: sha512-v2ZsoEuVHYy8ZIlYqwPe/39Cy+cFDzp4dXPaxNvkEuouymu+2Jbz0PxpKarJHYJTmv2HWT3O382qY8l4jMWthw==, + integrity: sha512-1APHAyr3+PCamwNw3bXCPp4HFLONZt/yIH0sZp0/469KWNTEy+qN5jQ3GVX6DMZ1UXAi34yVwtTeaG/HpBuuzw==, } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + engines: { '0': node >= 0.8.0 } + hasBin: true - flat-cache@3.2.0: + ansi-regex@3.0.1: resolution: { - integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==, + integrity: sha512-+O9Jct8wf++lXxxFc4hc8LsjaSq0HFzzL7cVsw8pRDIPdjKD2mT4ytDZlLuSBZ4cLKZFXIrMGO7DbQCtMJJMKw==, } - engines: { node: ^10.12.0 || >=12.0.0 } + engines: { node: '>=4' } - flat@5.0.2: + ansi-regex@4.1.1: resolution: { - integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==, + integrity: sha512-ILlv4k/3f6vfQ4OoP2AGvirOktlQ98ZEL1k9FaQjxa3L1abBgbuTDAdPOpvbGncC0BTVQrl+OM8xZGK6tWXt7g==, } - hasBin: true + engines: { node: '>=6' } - flatted@3.3.1: + ansi-regex@5.0.1: resolution: { - integrity: sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==, + integrity: sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==, } + engines: { node: '>=8' } - flush-write-stream@1.1.1: + ansi-regex@6.2.2: resolution: { - integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==, + integrity: sha512-Bq3SmSpyFHaWjPk8If9yc6svM8c56dB5BAtW4Qbw5jHTwwXXcTLoRMkpDJp6VL0XzlWaCHTXrkFURMYmD0sLqg==, } + engines: { node: '>=12' } - follow-redirects@1.15.6: + ansi-sequence-parser@1.1.3: resolution: { - integrity: sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==, + integrity: sha512-+fksAx9eG3Ab6LDnLs3ZqZa8KVJ/jYnX+D4Qe1azX+LFGFAXqynCQLOdLpNYN/l9e7l6hMWwZbrnctqr6eSQSw==, } - engines: { node: '>=4.0' } - peerDependencies: - debug: '*' - peerDependenciesMeta: - debug: - optional: true - for-each@0.3.3: + ansi-styles@3.2.1: resolution: { - integrity: sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==, + integrity: sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==, } + engines: { node: '>=4' } - foreground-child@2.0.0: + ansi-styles@4.3.0: resolution: { - integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==, + integrity: sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==, } - engines: { node: '>=8.0.0' } + engines: { node: '>=8' } - foreground-child@3.1.1: + ansi-styles@5.2.0: resolution: { - integrity: sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==, + integrity: sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==, } - engines: { node: '>=14' } + engines: { node: '>=10' } - forever-agent@0.6.1: + ansi-styles@6.2.3: resolution: { - integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==, + integrity: sha512-4Dj6M28JB+oAH8kFkTLUo+a2jwOFkuqb3yucU0CANcRRUbxS0cP0nZYCGjcc3BNXwRIsUVmDGgzawme7zvJHvg==, } + engines: { node: '>=12' } - fork-ts-checker-webpack-plugin@6.5.3: + any-promise@1.3.0: resolution: { - integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==, + integrity: sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==, } - engines: { node: '>=10', yarn: '>=1.0.0' } - peerDependencies: - eslint: '>= 6' - typescript: '>= 2.7' - vue-template-compiler: '*' - webpack: '>= 4' - peerDependenciesMeta: - eslint: - optional: true - vue-template-compiler: - optional: true - form-data@2.3.3: + anymatch@3.1.3: resolution: { - integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==, + integrity: sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==, } - engines: { node: '>= 0.12' } + engines: { node: '>= 8' } - form-data@3.0.1: + append-buffer@1.0.2: resolution: { - integrity: sha512-RHkBKtLWUVwd7SqRIvCZMEvAMoGUp0XU+seQiZejj0COz3RI3hWP4sCv3gZWWLjJTd7rGwcsF5eKZGii0r/hbg==, + integrity: sha512-WLbYiXzD3y/ATLZFufV/rZvWdZOs+Z/+5v1rBZ463Jn398pa6kcde27cvozYnBoxXblGZTFfoPpsaEw0orU5BA==, } - engines: { node: '>= 6' } + engines: { node: '>=0.10.0' } - form-data@4.0.0: + append-transform@2.0.0: resolution: { - integrity: sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==, + integrity: sha512-7yeyCEurROLQJFv5Xj4lEGTy0borxepjFv1g22oAdqFu//SrAlDl1O1Nxx15SH1RoliUml6p8dwJW9jvZughhg==, } - engines: { node: '>= 6' } + engines: { node: '>=8' } - formidable@2.1.2: + aproba@2.1.0: resolution: { - integrity: sha512-CM3GuJ57US06mlpQ47YcunuUZ9jpm8Vx+P2CGt2j7HpgkKZO/DJYQ0Bobim8G6PFQmK5lOqOOdUXboU+h73A4g==, + integrity: sha512-tLIEcj5GuR2RSTnxNKdkK0dJ/GrC7P38sUkiDmDuHfsHmbagTFAxDVIBltoklXEVIQ/f14IL8IMJ5pn9Hez1Ew==, } - forwarded@0.2.0: + arch@2.2.0: resolution: { - integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==, + integrity: sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==, } - engines: { node: '>= 0.6' } - fraction.js@4.3.7: + archy@1.0.0: resolution: { - integrity: sha512-ZsDfxO51wGAXREY55a7la9LScWpwv9RxIrYABrlvOFBlH/ShPnrtsXeuUIfXKKOVicNxQ+o8JTbJvjS4M89yew==, + integrity: sha512-Xg+9RwCg/0p32teKdGMPTPnVXKD0w3DfHnFTficozsAgsvq2XenPJq/MYpzzQ/v8zrOyJn6Ds39VA4JIDwFfqw==, } - fresh@0.5.2: + are-we-there-yet@3.0.1: resolution: { - integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==, + integrity: sha512-QZW4EDmGwlYur0Yyf/b2uGucHQMa8aFUP7eu9ddR73vvhFyt4V0Vl3QHPcTNJ8l6qYOBdxgXdnBXQrHilfRQBg==, } - engines: { node: '>= 0.6' } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + deprecated: This package is no longer supported. - from2@2.3.0: + are-we-there-yet@4.0.2: resolution: { - integrity: sha512-OMcX/4IC/uqEPVgGeyfN22LJk6AZrMkRZHxcHBMBvHScDGgwTm2GT2Wkgtocyd3JfZffjj2kYUDXXII0Fk9W0g==, + integrity: sha512-ncSWAawFhKMJDTdoAeOV+jyW1VCMj5QIAwULIBV0SSR7B/RLPPEQiknKcg/RIIZlUQrxELpsxMiTUoAQ4sIUyg==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + deprecated: This package is no longer supported. - fromentries@1.3.2: + arg@4.1.3: resolution: { - integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==, + integrity: sha512-58S9QDqG0Xx27YwPSt9fJxivjYl432YCwfDMfZ+71RAqUrZef7LrKQZ3LHLOwCS4FLNBplP533Zx895SeOCHvA==, } - fs-constants@1.0.0: + argparse@1.0.10: resolution: { - integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==, + integrity: sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==, } - fs-extra@10.1.0: + argparse@2.0.1: resolution: { - integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==, + integrity: sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==, } - engines: { node: '>=12' } - fs-extra@11.2.0: + array-buffer-byte-length@1.0.2: resolution: { - integrity: sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==, + integrity: sha512-LHE+8BuR7RYGDKvnrmcuSq3tDcKv9OFEXQt/HpbZhY7V6h0zlUXutnAD82GiFx9rdieCMjkvtcsPqBwgUl1Iiw==, } - engines: { node: '>=14.14' } + engines: { node: '>= 0.4' } - fs-extra@7.0.1: + array-differ@3.0.0: resolution: { - integrity: sha512-YJDaCJZEnBmcbw13fvdAM9AwNOJwOzrE4pqMqBq5nFiEqXUqHwlK4B+3pUw6JNvfSPtX05xFHtYy/1ni01eGCw==, + integrity: sha512-THtfYS6KtME/yIAhKjZ2ul7XI96lQGHRputJQHO80LAWQnuGP4iCIN8vdMRboGbIEYBwU33q8Tch1os2+X0kMg==, } - engines: { node: '>=6 <7 || >=8' } + engines: { node: '>=8' } - fs-extra@8.1.0: + array-find-index@1.0.2: resolution: { - integrity: sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==, + integrity: sha512-M1HQyIXcBGtVywBt8WVdim+lrNaK7VHp99Qt5pSNziXznKHViIBbXWtfRTpEFpF/c4FdfxNAsCCwPp5phBYJtw==, } - engines: { node: '>=6 <7 || >=8' } + engines: { node: '>=0.10.0' } - fs-extra@9.1.0: + array-flatten@1.1.1: resolution: { - integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==, + integrity: sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==, } - engines: { node: '>=10' } - fs-minipass@2.1.0: + array-ify@1.0.0: resolution: { - integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==, + integrity: sha512-c5AMf34bKdvPhQ7tBGhqkgKNUzMr4WUs+WDtC2ZUGOUncbxKMTvqxYctiseW3+L4bA8ec+GcZ6/A/FW4m8ukng==, } - engines: { node: '>= 8' } - fs-minipass@3.0.3: + array-includes@3.1.9: resolution: { - integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==, + integrity: sha512-FmeCCAenzH0KH381SPT5FZmiA/TmpndpcaShhfgEN9eCVjnFBqq3l1xrI42y8+PPLI6hypzou4GXw00WHmPBLQ==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>= 0.4' } - fs-mkdirp-stream@1.0.0: + array-union@2.1.0: resolution: { - integrity: sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==, + integrity: sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==, } - engines: { node: '>= 0.10' } + engines: { node: '>=8' } - fs-monkey@1.0.6: + array.prototype.findlastindex@1.2.6: resolution: { - integrity: sha512-b1FMfwetIKymC0eioW7mTywihSQE4oLzQn1dB6rZB5fx/3NpNEdAWeCSMB+60/AeT0TCXsxzAlcYVEFCTAksWg==, + integrity: sha512-F/TKATkzseUExPlfvmwQKGITM3DGTK+vkAsCZoDc5daVygbJBnjEUCbgkAvVFsgfXfX4YIqZ/27G3k3tdXrTxQ==, } + engines: { node: '>= 0.4' } - fs-write-stream-atomic@1.0.10: + array.prototype.flat@1.3.3: resolution: { - integrity: sha512-gehEzmPn2nAwr39eay+x3X34Ra+M2QlVUTLhkXPjWdeO8RF9kszk116avgBJM3ZyNHgHXBNx+VmPaFC36k0PzA==, + integrity: sha512-rwG/ja1neyLqCuGZ5YYrznA62D4mZXg0i1cIskIUKSiqF3Cje9/wXAls9B9s1Wa2fomMsIv8czB8jZcPmxCXFg==, } - deprecated: This package is no longer supported. + engines: { node: '>= 0.4' } - fs.realpath@1.0.0: + array.prototype.flatmap@1.3.3: resolution: { - integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, + integrity: sha512-Y7Wt51eKJSyi80hFrJCePGGNo5ktJCslFuboqJsbf57CCPcm5zztluPlc4/aD8sWsKvlwatezpV4U1efk8kpjg==, } + engines: { node: '>= 0.4' } - fsevents@2.3.3: + arraybuffer.prototype.slice@1.0.4: resolution: { - integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, + integrity: sha512-BNoCY6SXXPQ7gF2opIP4GBE+Xw7U+pHMYKuzjgCN3GwiaIR09UUeKfheyIry77QtrCBlC0KK0q5/TER/tYh3PQ==, } - engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } - os: [darwin] + engines: { node: '>= 0.4' } - function-bind@1.1.2: + arrgv@1.0.2: resolution: { - integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, + integrity: sha512-a4eg4yhp7mmruZDQFqVMlxNRFGi/i1r87pt8SDHy0/I8PqSXoUTlWZRdAZo0VXgvEARcujbtTk8kiZRi1uDGRw==, } + engines: { node: '>=8.0.0' } - function.prototype.name@1.1.6: + arrify@1.0.1: resolution: { - integrity: sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==, + integrity: sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==, } - engines: { node: '>= 0.4' } + engines: { node: '>=0.10.0' } - functions-have-names@1.2.3: + arrify@2.0.1: resolution: { - integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==, + integrity: sha512-3duEwti880xqi4eAMN8AyR4a0ByT90zoYdLlevfrvU43vb0YZwZVfxOgxWrLXXXpyugL0hNZc9G6BiB5B3nUug==, } + engines: { node: '>=8' } - gauge@3.0.2: + arrify@3.0.0: resolution: { - integrity: sha512-+5J6MS/5XksCuXq++uFRsnUd7Ovu1XenbeuIuNRJxYWjgQbPuFhT14lAvsWfqfAmnwluf1OwMjz39HjfLPci0Q==, + integrity: sha512-tLkvA81vQG/XqE2mjDkGQHoOINtMHtysSnemrmoGe6PydDPMRbVugqyk4A6V/WDWEfm3l+0d8anA9r8cv/5Jaw==, } - engines: { node: '>=10' } - deprecated: This package is no longer supported. + engines: { node: '>=12' } - gauge@4.0.4: + asn1@0.2.6: resolution: { - integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==, + integrity: sha512-ix/FxPn0MDjeyJ7i/yoHGFt/EX6LyNbxSEhPPXODPL+KB0VPk86UYfL0lMdy+KCnv+fmvIzySwaK5COwqVbWTQ==, } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - deprecated: This package is no longer supported. - gauge@5.0.2: + assert-plus@1.0.0: resolution: { - integrity: sha512-pMaFftXPtiGIHCJHdcUUx9Rby/rFT/Kkt3fIIGCs+9PMDIljSyRiqraTlxNtBReJRDfUefpa263RQ3vnp5G/LQ==, + integrity: sha512-NfJ4UzBCcQGLDlQq7nHxH+tv3kyZ0hHQqF5BO6J7tNJeP5do1llPr8dZ8zHonfhAu0PHAdMkSo+8o0wxg9lZWw==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - deprecated: This package is no longer supported. + engines: { node: '>=0.8' } - generic-names@4.0.0: + assertion-error@1.1.0: resolution: { - integrity: sha512-ySFolZQfw9FoDb3ed9d80Cm9f0+r7qj+HJkWjeD9RBfpxEVTlVhol+gvaQB/78WbwYfbnNh8nWHHBSlg072y6A==, + integrity: sha512-jgsaNduz+ndvGyFt3uSuWqvy4lCnIJiovtouQN5JZHOKCS2QuhEdbcQHFhVksz2N2U9hXJo8odG7ETyWlEeuDw==, } - gensync@1.0.0-beta.2: + async-function@1.0.0: resolution: { - integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, + integrity: sha512-hsU18Ae8CDTR6Kgu9DYf0EbCr/a5iGL0rytQDobUcdpYOKokk8LEjVphnXkDkgpi0wYVsqrXuP0bZxJaTqdgoA==, } - engines: { node: '>=6.9.0' } + engines: { node: '>= 0.4' } - get-caller-file@2.0.5: + async-sema@3.1.1: resolution: { - integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, + integrity: sha512-tLRNUXati5MFePdAk8dw7Qt7DpxPB60ofAgn8WRhW6a2rcimZnYBP9oxHiv0OHy+Wz7kPMG+t4LGdt31+4EmGg==, } - engines: { node: 6.* || 8.* || >= 10.* } - get-east-asian-width@1.2.0: + async@2.6.4: resolution: { - integrity: sha512-2nk+7SIVb14QrgXFHcm84tD4bKQz0RxPuMT8Ag5KPOq7J5fEmAg0UbXdTOSHqNuHSU28k55qnceesxXRZGzKWA==, + integrity: sha512-mzo5dfJYwAn29PeiJ0zvwTo04zj8HDJj0Mn8TD7sno7q12prdbnasKJHhkm2c1LgrhlJ0teaea8860oxi51mGA==, } - engines: { node: '>=18' } - get-func-name@2.0.2: + async@3.2.6: resolution: { - integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==, + integrity: sha512-htCUDlxyyCLMgaM3xXg0C0LW2xqfuQ6p05pCEIsXuyQ+a1koYKTuBMzRNwmybfLgvJDMd0r1LTn4+E0Ti6C2AA==, } - get-intrinsic@1.2.4: + asynckit@0.4.0: resolution: { - integrity: sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==, + integrity: sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==, } - engines: { node: '>= 0.4' } - get-package-type@0.1.0: + at-least-node@1.0.0: resolution: { - integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==, + integrity: sha512-+q/t7Ekv1EDY2l6Gda6LLiX14rU9TV20Wa3ofeQmwPFZbOMo9DXrLbOjFaaclkXKWidIaopwAObQDqwWtGUjqg==, } - engines: { node: '>=8.0.0' } + engines: { node: '>= 4.0.0' } - get-pkg-repo@4.2.1: + atob@2.1.2: resolution: { - integrity: sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==, + integrity: sha512-Wm6ukoaOGJi/73p/cl2GvLjTI5JM1k/O14isD73YML8StrH/7/lRFgmg8nICZgD3bZZvjwCGxtMOD3wWNAu8cg==, } - engines: { node: '>=6.9.0' } + engines: { node: '>= 4.5.0' } hasBin: true - get-port@5.1.1: + autoprefixer@10.4.22: resolution: { - integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==, + integrity: sha512-ARe0v/t9gO28Bznv6GgqARmVqcWOV3mfgUPn9becPHMiD3o9BwlRgaeccZnwTpZ7Zwqrm+c1sUSsMxIzQzc8Xg==, } - engines: { node: '>=8' } + engines: { node: ^10 || ^12 || >=14 } + hasBin: true + peerDependencies: + postcss: ^8.1.0 - get-stream@4.1.0: + ava@6.4.1: resolution: { - integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==, + integrity: sha512-vxmPbi1gZx9zhAjHBgw81w/iEDKcrokeRk/fqDTyA2DQygZ0o+dUGRHFOtX8RA5N0heGJTTsIk7+xYxitDb61Q==, } - engines: { node: '>=6' } + engines: { node: ^18.18 || ^20.8 || ^22 || ^23 || >=24 } + hasBin: true + peerDependencies: + '@ava/typescript': '*' + peerDependenciesMeta: + '@ava/typescript': + optional: true - get-stream@6.0.0: + available-typed-arrays@1.0.7: resolution: { - integrity: sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==, + integrity: sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==, } - engines: { node: '>=10' } + engines: { node: '>= 0.4' } - get-stream@6.0.1: + aws-sign2@0.7.0: resolution: { - integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, + integrity: sha512-08kcGqnYf/YmjoRhfxyu+CLxBjUtHLXLXX/vUfx9l2LYzG3c1m61nrpyFUZI6zeS+Li/wWMMidD9KgrqtGq3mA==, } - engines: { node: '>=10' } - get-stream@8.0.1: + aws4@1.13.2: resolution: { - integrity: sha512-VaUJspBffn/LMCJVoMvSAdmscJyS1auj5Zulnn5UoYcY531UWmdwhRWkcGKnGU93m5HSXP9LP2usOryrBtQowA==, + integrity: sha512-lHe62zvbTB5eEABUVi/AwVh0ZKY9rMMDhmm+eeyuuUQbQ3+J+fONVQOZyj+DdrvD4BY33uYniyRJ4UJIaSKAfw==, } - engines: { node: '>=16' } - get-symbol-description@1.0.2: + axios@1.13.2: resolution: { - integrity: sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==, + integrity: sha512-VPk9ebNqPcy5lRGuSlKx752IlDatOjT9paPlm8A7yOuW2Fbvp4X3JznJtT4f0GzGLLiWE9W8onz51SqLYwzGaA==, } - engines: { node: '>= 0.4' } - getpass@0.1.7: + babel-jest@27.5.1: resolution: { - integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==, + integrity: sha512-cdQ5dXjGRd0IBRATiQ4mZGlGlRE8kJpjPOixdNRdT+m3UcNqmYWN6rK6nvtXYfY3D76cb8s/O1Ss8ea24PIwcg==, } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + peerDependencies: + '@babel/core': ^7.8.0 - git-raw-commits@2.0.11: + babel-loader@8.4.1: resolution: { - integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==, + integrity: sha512-nXzRChX+Z1GoE6yWavBQg6jDslyFF3SDjl2paADuoQtQW10JqShJt62R6eJQ5m/pjJFDT8xgKIWSP85OY8eXeA==, } - engines: { node: '>=10' } - hasBin: true + engines: { node: '>= 8.9' } + peerDependencies: + '@babel/core': ^7.0.0 + webpack: '>=2' - git-remote-origin-url@2.0.0: + babel-plugin-dynamic-import-node@2.3.3: resolution: { - integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==, + integrity: sha512-jZVI+s9Zg3IqA/kdi0i6UDCybUI3aSBLnglhYbSSjKlV7yF1F/5LWv8MakQmvYpnbJDS6fcBL2KzHSxNCMtWSQ==, } - engines: { node: '>=4' } - git-semver-tags@4.1.1: + babel-plugin-istanbul@6.1.1: resolution: { - integrity: sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==, + integrity: sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==, } - engines: { node: '>=10' } - hasBin: true + engines: { node: '>=8' } - git-up@7.0.0: + babel-plugin-jest-hoist@27.5.1: resolution: { - integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==, + integrity: sha512-50wCwD5EMNW4aRpOwtqzyZHIewTYNxLA4nhB+09d8BIssfNfzBRhkBIHiaPv1Si226TQSvp8gxAJm2iY2qs2hQ==, } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - git-url-parse@13.1.0: + babel-plugin-polyfill-corejs2@0.4.14: resolution: { - integrity: sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==, + integrity: sha512-Co2Y9wX854ts6U8gAAPXfn0GmAyctHuK8n0Yhfjd6t30g7yvKjspvvOo9yG+z52PZRgFErt7Ka2pYnXCjLKEpg==, } + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - gitconfiglocal@1.0.0: + babel-plugin-polyfill-corejs3@0.13.0: resolution: { - integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==, + integrity: sha512-U+GNwMdSFgzVmfhNm8GJUX88AadB3uo9KpJqS3FaqNIPKgySuvMb+bHPsOmmuWyIcuqZj/pzt1RUIUZns4y2+A==, } + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - glob-parent@3.1.0: + babel-plugin-polyfill-regenerator@0.6.5: resolution: { - integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==, + integrity: sha512-ISqQ2frbiNU9vIJkzg7dlPpznPZ4jOiUQ1uSmB0fEHeowtN3COYRsXr/xexn64NpU13P06jc/L5TgiJXOgrbEg==, } + peerDependencies: + '@babel/core': ^7.4.0 || ^8.0.0-0 <8.0.0 - glob-parent@5.1.2: + babel-preset-current-node-syntax@1.2.0: resolution: { - integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, + integrity: sha512-E/VlAEzRrsLEb2+dv8yp3bo4scof3l9nR4lrld+Iy5NyVqgVYUJnDAmunkhPMisRI32Qc4iRiz425d8vM++2fg==, } - engines: { node: '>= 6' } + peerDependencies: + '@babel/core': ^7.0.0 || ^8.0.0-0 - glob-parent@6.0.2: + babel-preset-jest@27.5.1: resolution: { - integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, + integrity: sha512-Nptf2FzlPCWYuJg41HBqXVT8ym6bXOevuCTbhxlUpjwtysGaIWFvDEjp4y+G7fl13FgOdjs7P/DmErqH7da0Ag==, } - engines: { node: '>=10.13.0' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + peerDependencies: + '@babel/core': ^7.0.0 - glob-stream@6.1.0: + balanced-match@1.0.2: resolution: { - integrity: sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==, + integrity: sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==, } - engines: { node: '>= 0.10' } - glob-to-regexp@0.4.1: + base64-js@1.5.1: resolution: { - integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==, + integrity: sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==, } - glob@10.3.16: + baseline-browser-mapping@2.8.31: resolution: { - integrity: sha512-JDKXl1DiuuHJ6fVS2FXjownaavciiHNUU4mOvV/B793RLh05vZL1rcPnCSaOgv1hDT6RDlY7AB7ZUvFYAtPgAw==, + integrity: sha512-a28v2eWrrRWPpJSzxc+mKwm0ZtVx/G8SepdQZDArnXYU/XS+IF6mp8aB/4E+hH1tyGCoDo3KlUCdlSxGDsRkAw==, } - engines: { node: '>=16 || 14 >=14.18' } hasBin: true - glob@7.1.4: + batch@0.6.1: resolution: { - integrity: sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==, + integrity: sha512-x+VAiMRL6UPkx+kudNvxTl6hB2XNNCG2r+7wixVfIYwu/2HKRXimwQyaumLjMveWvT2Hkd/cAJw+QBMfJ/EKVw==, } - deprecated: Glob versions prior to v9 are no longer supported - glob@7.1.6: + bcrypt-pbkdf@1.0.2: resolution: { - integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==, + integrity: sha512-qeFIXtP4MSoi6NLqO12WfqARWWuCKi2Rn/9hJLEmtB5yTNr9DqFWkJRCf2qShWzPeAMRnOgCrq0sg/KLv5ES9w==, } - glob@7.2.3: + before-after-hook@2.2.3: resolution: { - integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, + integrity: sha512-NzUnlZexiaH/46WDhANlyR2bXRopNg4F/zuSA3OpZnllCUgRaOF2znDioDWrmbNVsuZk6l9pMquQB38cfBZwkQ==, } - glob@8.1.0: + better-path-resolve@1.0.0: resolution: { - integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==, + integrity: sha512-pbnl5XzGBdrFU/wT4jqmJVPn2B6UHPBOhzMQkY/SPUPB6QtUXtmBHBIwCbXJol93mOpGMnQyP/+BB19q04xj7g==, } - engines: { node: '>=12' } + engines: { node: '>=4' } - glob@9.3.5: + big.js@5.2.2: resolution: { - integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==, + integrity: sha512-vyL2OymJxmarO8gxMr0mhChsO9QGwhynfuu4+MHTAW6czfq9humCB7rKpUjDd9YUiDPU4mzpyupFSvOClAwbmQ==, } - engines: { node: '>=16 || 14 >=14.17' } - globals@11.12.0: + bin-links@4.0.4: resolution: { - integrity: sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==, + integrity: sha512-cMtq4W5ZsEwcutJrVId+a/tjt8GSbS+h0oNkdl6+6rBuEv8Ot33Bevj5KPm40t309zuhVic8NjpuL42QCiJWWA==, } - engines: { node: '>=4' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - globals@13.24.0: + binary-extensions@2.3.0: resolution: { - integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==, + integrity: sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==, } engines: { node: '>=8' } - globalthis@1.0.4: + bindings@1.5.0: resolution: { - integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==, + integrity: sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==, } - engines: { node: '>= 0.4' } - globby@10.0.1: + bl@4.1.0: resolution: { - integrity: sha512-sSs4inE1FB2YQiymcmTv6NWENryABjUNPeWhOvmn4SjtKybglsyPZxFB3U1/+L1bYi0rNZDqCLlHyLYDl1Pq5A==, + integrity: sha512-1W07cM9gS6DcLperZfFSj+bWLtaPGSOHWhPiGzXmvVJbRLdG82sH/Kn8EtW1VqWVA54AKf2h5k5BbnIbwF3h6w==, } - engines: { node: '>=8' } - globby@10.0.2: + bluebird@3.7.2: resolution: { - integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==, + integrity: sha512-XpNj6GDQzdfW+r2Wnn7xiSAd7TM3jzkxGXBGTtWKuSXv1xUV+azxAm8jdWZN06QTQk+2N2XB9jRDkvbmQmcRtg==, } - engines: { node: '>=8' } - globby@11.1.0: + blueimp-md5@2.19.0: resolution: { - integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, + integrity: sha512-DRQrD6gJyy8FbiE4s+bDoXS9hiW3Vbx5uCdwvcCf3zLHL+Iv7LtGHLpr+GZV8rHG8tK766FGYBwRbu8pELTt+w==, } - engines: { node: '>=10' } - globby@13.2.2: + body-parser@1.20.3: resolution: { - integrity: sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==, + integrity: sha512-7rAxByjUMqQ3/bHJy7D6OGXvx/MMc4IqBn/X0fcM1QUcAItpZrBEYhWGem+tzXH90c+G01ypMcYJBO9Y30203g==, } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 } - globby@14.0.1: + bonjour-service@1.3.0: resolution: { - integrity: sha512-jOMLD2Z7MAhyG8aJpNOpmziMOP4rPLcc95oQPKXBazW82z+CEgPFBQvEpRUa1KeIMUJo4Wsm+q6uzO/Q/4BksQ==, + integrity: sha512-3YuAUiSkWykd+2Azjgyxei8OWf8thdn8AITIog2M4UICzoqfjlqr64WIjEXZllf/W6vK1goqleSR6brGomxQqA==, } - engines: { node: '>=18' } - globby@5.0.0: + boolbase@1.0.0: resolution: { - integrity: sha512-HJRTIH2EeH44ka+LWig+EqT2ONSYpVlNfx6pyd592/VF1TbfljJ7elwie7oSwcViLGqOdWocSdu2txwBF9bjmQ==, + integrity: sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==, } - engines: { node: '>=0.10.0' } - globby@7.1.1: + brace-expansion@1.1.12: resolution: { - integrity: sha512-yANWAN2DUcBtuus5Cpd+SKROzXHs2iVXFZt/Ykrfz6SAXqacLX25NZpltE+39ceMexYF4TtEadjuSTw8+3wX4g==, + integrity: sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==, } - engines: { node: '>=4' } - gopd@1.0.1: + brace-expansion@2.0.2: resolution: { - integrity: sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==, + integrity: sha512-Jt0vHyM+jmUBqojB7E1NIYadt0vI0Qxjxd2TErW94wDz+E2LAm5vKMXXwg6ZZBTHPuUlDgQHKXvjGBdfcF1ZDQ==, } - graceful-fs@4.2.10: + braces@3.0.3: resolution: { - integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==, + integrity: sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==, } + engines: { node: '>=8' } - graceful-fs@4.2.11: + browser-process-hrtime@1.0.0: resolution: { - integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, + integrity: sha512-9o5UecI3GhkpM6DrXr69PblIuWxPKk9Y0jHBRhdocZ2y7YECBFCsHm79Pr3OyR2AvjhDkabFJaDJMYRazHgsow==, } - graphemer@1.4.0: + browser-stdout@1.3.1: resolution: { - integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==, + integrity: sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==, } - graphlib@2.1.8: + browserslist@4.28.0: resolution: { - integrity: sha512-jcLLfkpoVGmH7/InMC/1hIvOPSUh38oJtGhvrOFGzioE1DZ+0YW16RgmOJhHiuWTvGiJQ9Z1Ik43JvkRPRvE+A==, + integrity: sha512-tbydkR/CxfMwelN0vwdP/pLkDwyAASZ+VfWm4EOwlB6SWhx1sYnWLqo8N5j0rAzPfzfRaxt0mM/4wPU/Su84RQ==, } + engines: { node: ^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7 } + hasBin: true - growl@1.10.5: + bs-logger@0.2.6: resolution: { - integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==, + integrity: sha512-pd8DCoxmbgc7hyPKOvxtqNcjYoOsABPQdcCUjGp3d42VR2CX1ORhk2A87oqqu5R1kk+76nsxZupkmyd+MVtCog==, } - engines: { node: '>=4.x' } + engines: { node: '>= 6' } - growly@1.3.0: + bser@2.1.1: resolution: { - integrity: sha512-+xGQY0YyAWCnqy7Cd++hc2JqMYzlm0dG30Jd0beaA64sROr8C4nt8Yc9V5Ro3avlSUDTN0ulqP/VBKi1/lLygw==, + integrity: sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==, } - gzip-size@6.0.0: + buffer-equal@1.0.1: resolution: { - integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==, + integrity: sha512-QoV3ptgEaQpvVwbXdSO39iqPQTCxSF7A5U99AxbHYqUdCizL/lH2Z0A2y6nbZucxMEOtNyZfG2s6gsVugGpKkg==, } - engines: { node: '>=10' } + engines: { node: '>=0.4' } - hammerjs@2.0.8: + buffer-from@1.1.2: resolution: { - integrity: sha512-tSQXBXS/MWQOn/RKckawJ61vvsDpCom87JgxiYdGwHdOa0ht0vzUWDlfioofFCRU0L+6NGDt6XzbgoJvZkMeRQ==, + integrity: sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==, } - engines: { node: '>=0.8.0' } - handle-thing@2.0.1: + buffer@5.7.1: resolution: { - integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==, + integrity: sha512-EHcyIPBQ4BSGlvjB16k5KgAJ27CIsHY/2JBmCRReo48y9rQ3MaUzWX3KVlBa4U7MyX02HdVj0K7C3WaB3ju7FQ==, } - handlebars@4.7.8: + builtins@1.0.3: resolution: { - integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==, + integrity: sha512-uYBjakWipfaO/bXI7E8rq6kpwHRZK5cNYrUv2OzZSI/FvmdMyXJ2tG9dKcjEC5YHmHpUAwsargWIZNWdxb/bnQ==, } - engines: { node: '>=0.4.7' } - hasBin: true - har-schema@2.0.0: + builtins@5.1.0: resolution: { - integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==, + integrity: sha512-SW9lzGTLvWTP1AY8xeAMZimqDrIaSdLQUcVr9DMef51niJ022Ri87SwRRKYm4A6iHfkPaiVUu/Duw2Wc4J7kKg==, } - engines: { node: '>=4' } - har-validator@5.1.5: + byte-size@7.0.0: resolution: { - integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==, + integrity: sha512-NNiBxKgxybMBtWdmvx7ZITJi4ZG+CYUgwOSZTfqB1qogkRHrhbQE/R2r5Fh94X+InN5MCYz6SvB/ejHMj/HbsQ==, } - engines: { node: '>=6' } - deprecated: this library is no longer supported + engines: { node: '>=10' } - hard-rejection@2.1.0: + bytes@3.1.2: resolution: { - integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==, + integrity: sha512-/Nf7TyzTx6S3yRJObOAV7956r8cr2+Oj8AC5dt8wSP3BQAoeX58NoHyCU8P8zGkNXStjTSi6fzO6F0pBdcYbEg==, } - engines: { node: '>=6' } + engines: { node: '>= 0.8' } - has-ansi@2.0.0: + cacache@16.1.3: resolution: { - integrity: sha512-C8vBJ8DwUCx19vhm7urhTuUsr4/IyP6l4VzNQDv+ryHQObW3TTTp9yB68WpYgRe2bbaGuZ/se74IqFeVnMnLZg==, + integrity: sha512-/+Emcj9DAXxX4cwlLmRI9c166RuL3w30zp4R7Joiv2cQTtTtA+jeuCAjH3ZlGnYS3tKENSrKhAzVVP9GVyzeYQ==, } - engines: { node: '>=0.10.0' } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - has-bigints@1.0.2: + cacache@17.1.4: resolution: { - integrity: sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==, + integrity: sha512-/aJwG2l3ZMJ1xNAnqbMpA40of9dj/pIH3QfiuQSqjfPJF747VR0J/bHn+/KdNnHKc6XQcWt/AfRSBft82W1d2A==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - has-flag@3.0.0: + cacache@18.0.4: resolution: { - integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, + integrity: sha512-B+L5iIa9mgcjLbliir2th36yEwPftrzteHYujzsx3dFP/31GCHcIeS8f5MGd80odLOjaOvSpU3EEAmRQptkxLQ==, } - engines: { node: '>=4' } + engines: { node: ^16.14.0 || >=18.0.0 } - has-flag@4.0.0: + caching-transform@4.0.0: resolution: { - integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, + integrity: sha512-kpqOvwXnjjN44D89K5ccQC+RUrsy7jB/XLlRrx0D7/2HNcTPqzsb6XgYoErwko6QsV184CA2YgS1fxDiiDZMWA==, } engines: { node: '>=8' } - has-property-descriptors@1.0.2: + call-bind-apply-helpers@1.0.2: resolution: { - integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==, + integrity: sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==, } + engines: { node: '>= 0.4' } - has-proto@1.0.3: + call-bind@1.0.8: resolution: { - integrity: sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==, + integrity: sha512-oKlSFMcMwpUg2ednkhQ454wfWiU/ul3CkJe/PEHcTKuiX6RpbehUiFMXu13HalGZxfUwCQzZG747YXBn1im9ww==, } engines: { node: '>= 0.4' } - has-symbols@1.0.3: + call-bound@1.0.4: resolution: { - integrity: sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==, + integrity: sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==, } engines: { node: '>= 0.4' } - has-tostringtag@1.0.2: + callsites@3.1.0: resolution: { - integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==, + integrity: sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==, } - engines: { node: '>= 0.4' } + engines: { node: '>=6' } - has-unicode@2.0.1: + callsites@4.2.0: + resolution: + { + integrity: sha512-kfzR4zzQtAE9PC7CzZsjl3aBNbXWuXiSeOCdLcPpBfGW8YuCqQHcRPFDbr/BPVmd3EEPVpuFzLyuT/cUhPr4OQ==, + } + engines: { node: '>=12.20' } + + camel-case@4.1.2: + resolution: + { + integrity: sha512-gxGWBrTT1JuMx6R+o5PTXMmUnhnVzLQ9SNutD4YqKtI6ap897t3tKECYla6gCWEkplXnlNybEkZg9GEGxKFCgw==, + } + + camelcase-keys@6.2.2: resolution: { - integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==, + integrity: sha512-YrwaA0vEKazPBkn0ipTiMpSajYDSe+KjQfrjhcBMxJt/znbvlHd8Pw/Vamaz5EB4Wfhs3SUR3Z9mwRu/P3s3Yg==, } + engines: { node: '>=8' } - has@1.0.4: + camelcase@5.3.1: resolution: { - integrity: sha512-qdSAmqLF6209RFj4VVItywPMbm3vWylknmB3nvNiUIs72xAimcM8nVYxYr7ncvZq5qzk9MKIZR8ijqD/1QuYjQ==, + integrity: sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==, } - engines: { node: '>= 0.4.0' } + engines: { node: '>=6' } - hash-base@3.0.4: + camelcase@6.3.0: resolution: { - integrity: sha512-EeeoJKjTyt868liAlVmcv2ZsUfGHlE3Q+BICOXcZiwN3osr5Q/zFGYmTJpoIzuaSTAwndFy+GqhEwlU4L3j4Ow==, + integrity: sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==, } - engines: { node: '>=4' } + engines: { node: '>=10' } - hash-base@3.1.0: + caniuse-api@3.0.0: resolution: { - integrity: sha512-1nmYp/rhMDiE7AYkDw+lLwlAzz0AntGIe51F3RfFfEqyQ3feY2eI/NcwC6umIQVOASPMsWJLJScWKSSvzL9IVA==, + integrity: sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==, } - engines: { node: '>=4' } - hash-sum@1.0.2: + caniuse-lite@1.0.30001757: resolution: { - integrity: sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==, + integrity: sha512-r0nnL/I28Zi/yjk1el6ilj27tKcdjLsNqAOZr0yVjWPrSQyHgKI2INaEWw21bAQSv2LXRt1XuCS/GomNpWOxsQ==, } - hash-sum@2.0.0: + case-sensitive-paths-webpack-plugin@2.4.0: resolution: { - integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==, + integrity: sha512-roIFONhcxog0JSSWbvVAh3OocukmSgpqOH6YpMkCvav/ySIV3JKg4Dc8vYtQjYi/UxpNE36r/9v+VqTQqgkYmw==, } + engines: { node: '>=4' } - hash.js@1.1.7: + caseless@0.12.0: resolution: { - integrity: sha512-taOaskGt4z4SOANNseOviYDvjEJinIkRgmp7LbKP2YTTmVxWBl87s/uzK9r+44BclBSp2X7K1hqeNfz9JbBeXA==, + integrity: sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==, } - hasha@5.2.2: + cbor@10.0.11: resolution: { - integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==, + integrity: sha512-vIwORDd/WyB8Nc23o2zNN5RrtFGlR6Fca61TtjkUXueI3Jf2DOZDl1zsshvBntZ3wZHBM9ztjnkXSmzQDaq3WA==, } - engines: { node: '>=8' } + engines: { node: '>=20' } - hasown@2.0.2: + chai@4.5.0: resolution: { - integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, + integrity: sha512-RITGBfijLkBddZvnn8jdqoTypxvqbOLYQkGGxXzeFjVHvudaPw0HNFD9x928/eUwYWd2dPCugVqspGALTZZQKw==, } - engines: { node: '>= 0.4' } + engines: { node: '>=4' } - he@1.2.0: + chalk@2.4.2: resolution: { - integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==, + integrity: sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==, } - hasBin: true + engines: { node: '>=4' } - hexoid@1.0.0: + chalk@3.0.0: resolution: { - integrity: sha512-QFLV0taWQOZtvIRIAdBChesmogZrtuXvVWsFHZTk2SU+anspqZ2vMnoLg7IE1+Uk16N19APic1BuF8bC8c2m5g==, + integrity: sha512-4D3B6Wf41KOYRFdszmDqMCGq5VV/uMAB273JILmO+3jAlh8X4qDtdtgCR3fxtbLEMzSx22QdhnDcJvu2u1fVwg==, } engines: { node: '>=8' } - highlight.js@10.7.3: + chalk@4.1.0: resolution: { - integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==, + integrity: sha512-qwx12AxXe2Q5xQ43Ac//I6v5aXTipYrSESdOgzrN+9XjgEpyjpKuvSGaN4qE93f7TQTlerQQ8S+EQ0EyDoVL1A==, } + engines: { node: '>=10' } - highlight.js@11.9.0: + chalk@4.1.2: resolution: { - integrity: sha512-fJ7cW7fQGCYAkgv4CPfwFHrfd/cLS4Hau96JuJ+ZTOWhjnhoeN1ub1tFmALm/+lW5z4WCAuAV9bm05AP0mS6Gw==, + integrity: sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==, } - engines: { node: '>=12.0.0' } + engines: { node: '>=10' } - hmac-drbg@1.0.1: + chalk@5.6.2: resolution: { - integrity: sha512-Tti3gMqLdZfhOQY1Mzf/AanLiqh1WTiJgEj26ZuYQ9fbkLomzGchCws4FyrSd4VkpBfiNhaE1On+lOz894jvXg==, + integrity: sha512-7NzBL0rN6fMUW+f7A6Io4h40qQlG+xGmtMxfbnH/K7TAtt8JQWVQK+6g0UXKMeVJoyV5EkkNsErQ8pVD3bLHbA==, } + engines: { node: ^12.17.0 || ^14.13 || >=16.0.0 } - hoist-non-react-statics@3.3.2: + char-regex@1.0.2: resolution: { - integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==, + integrity: sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==, } + engines: { node: '>=10' } - hosted-git-info@2.8.9: + chardet@0.7.0: resolution: { - integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==, + integrity: sha512-mT8iDcrh03qDGRRmoA2hmBJnxpllMR+0/0qlzjqZES6NdiWDcZkCNAk4rPFZ9Q85r27unkiNNg8ZOiwZXBHwcA==, } - hosted-git-info@3.0.8: + chardet@2.1.1: resolution: { - integrity: sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==, + integrity: sha512-PsezH1rqdV9VvyNhxxOW32/d75r01NY7TQCmOqomRo15ZSOKbpTFVsfjghxo6JloQUCGnH4k1LGu0R4yCLlWQQ==, } - engines: { node: '>=10' } - hosted-git-info@4.1.0: + check-error@1.0.3: resolution: { - integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==, + integrity: sha512-iKEoDYaRmd1mxM90a2OEfWhjsjPpYPuQ+lMYsoxB126+t8fw7ySEO48nmDg5COTjxDI65/Y2OWpeEHk3ZOe8zg==, } - engines: { node: '>=10' } - hosted-git-info@5.2.1: + chokidar@3.5.1: resolution: { - integrity: sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==, + integrity: sha512-9+s+Od+W0VJJzawDma/gvBNQqkTiqYTWLuZoyAsivsI4AaWTCzHG06/TMjsf1cYe9Cb97UCEhjz7HvnPk2p/tw==, } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + engines: { node: '>= 8.10.0' } - hosted-git-info@6.1.1: + chokidar@3.6.0: resolution: { - integrity: sha512-r0EI+HBMcXadMrugk0GCQ+6BQV39PiWAZVfq7oIckeGiN7sjRGyQxPdft3nQekFTCQbYxLBH+/axZMeH8UX6+w==, + integrity: sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>= 8.10.0' } - hosted-git-info@7.0.2: + chownr@2.0.0: resolution: { - integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==, + integrity: sha512-bIomtDF5KGpdogkLd9VspvFzk9KfpyyGlS8YFVZl7TGPBHL5snIOnxeshwVgPteQ9b4Eydl+pVbIyE1DcvCWgQ==, } - engines: { node: ^16.14.0 || >=18.0.0 } + engines: { node: '>=10' } - hpack.js@2.1.6: + chownr@3.0.0: resolution: { - integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==, + integrity: sha512-+IxzY9BZOQd/XuYPRmrvEVjF/nqj5kgT4kEq7VofrDoM1MxoRjEWkrCC3EtLi59TVawxTAn+orJwFQcrqEN1+g==, } + engines: { node: '>=18' } - html-element-map@1.3.1: + chrome-trace-event@1.0.4: resolution: { - integrity: sha512-6XMlxrAFX4UEEGxctfFnmrFaaZFNf9i5fNuV5wZ3WWQ4FVaNP1aX1LkX9j2mfEx1NpjeE/rL3nmgEn23GdFmrg==, + integrity: sha512-rNjApaLzuwaOTjCiT8lSDdGN1APCiqkChLMJxJPWLunPAt5fy8xgU9/jNOchV84wfIxrA0lRQB7oCT8jrn/wrQ==, } + engines: { node: '>=6.0' } - html-encoding-sniffer@2.0.1: + chunkd@2.0.1: resolution: { - integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==, + integrity: sha512-7d58XsFmOq0j6el67Ug9mHf9ELUXsQXYJBkyxhH/k+6Ke0qXRnv0kbemx+Twc6fRJ07C49lcbdgm9FL1Ei/6SQ==, } - engines: { node: '>=10' } - html-encoding-sniffer@3.0.0: + ci-info@2.0.0: resolution: { - integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==, + integrity: sha512-5tK7EtrZ0N+OLFMthtqOj4fI2Jeb88C4CAZPu25LDVUgXJ0A3Js4PMGqrn0JU1W0Mh1/Z8wZzYPxqUrXeBboCQ==, } - engines: { node: '>=12' } - html-encoding-sniffer@4.0.0: + ci-info@3.9.0: resolution: { - integrity: sha512-Y22oTqIU4uuPgEemfz7NDJz6OeKf12Lsu+QC+s3BVpda64lTiMYCyGwg5ki4vFxkMwQdeZDl2adZoqUgdFuTgQ==, + integrity: sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==, } - engines: { node: '>=18' } + engines: { node: '>=8' } - html-entities@2.5.2: + ci-info@4.3.1: resolution: { - integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==, + integrity: sha512-Wdy2Igu8OcBpI2pZePZ5oWjPC38tmDVx5WKUXKwlLYkA0ozo85sLsLvkBbBn/sZaSCMFOGZJ14fvW9t5/d7kdA==, } + engines: { node: '>=8' } - html-escaper@2.0.2: + ci-parallel-vars@1.0.1: resolution: { - integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==, + integrity: sha512-uvzpYrpmidaoxvIQHM+rKSrigjOe9feHYbw4uOI2gdfe1C3xIlxO+kVXq83WQWNniTf8bAxVpy+cQeFQsMERKg==, } - html-loader@0.5.5: + cjs-module-lexer@1.4.3: resolution: { - integrity: sha512-7hIW7YinOYUpo//kSYcPB6dCKoceKLmOwjEMmhIobHuWGDVl0Nwe4l68mdG/Ru0wcUxQjVMEoZpkalZ/SE7zog==, + integrity: sha512-9z8TZaGM1pfswYeXrUpzPrkx8UnWYdhJclsiYMm6x/w5+nN+8Tf/LnAgfLGQCm59qAOxU8WwHEq2vNwF6i4j+Q==, } - html-minifier-terser@6.1.0: + clean-css@5.3.3: resolution: { - integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==, + integrity: sha512-D5J+kHaVb/wKSFcyyV75uCn8fiY4sV38XJoe4CUyGQ+mOU/fMVYUdH1hJC+CJQ5uY3EnW27SbJYS4X8BiLrAFg==, } - engines: { node: '>=12' } - hasBin: true + engines: { node: '>= 10.0' } - html-minifier@3.5.21: + clean-stack@2.2.0: resolution: { - integrity: sha512-LKUKwuJDhxNa3uf/LPR/KVjm/l3rBqtYeCOAekvG8F1vItxMUpueGd94i/asDDr8/1u7InxzFA5EeGjhhG5mMA==, + integrity: sha512-4diC9HaTE+KRAMWhDhrGOECgWZxoevMc5TlkObMqNSsVU62PYzXZ/SMTjzyGAFF1YusgxGcSWTEXBhp0CPwQ1A==, } - engines: { node: '>=4' } - hasBin: true + engines: { node: '>=6' } - html-tags@2.0.0: + cli-cursor@2.1.0: resolution: { - integrity: sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==, + integrity: sha512-8lgKz8LmCRYZZQDpRyT2m5rKJ08TnU4tR9FFFW2rxpxR1FzWi4PQ/NfyODchAatHaUgnSPVcx/R5w6NuTBzFiw==, } engines: { node: '>=4' } - html-tags@3.3.1: + cli-cursor@3.1.0: resolution: { - integrity: sha512-ztqyC3kLto0e9WbNp0aeP+M3kTt+nbaIveGmUxAtZa+8iFgKLUOD4YKM5j+f3QD89bra7UeumolZHKuOXnTmeQ==, + integrity: sha512-I/zHAwsKf9FqGoXM4WWRACob9+SNukZTd94DWF57E4toouRulbCxcUh6RKUEOQlYTHJnzkPMySvPNaaSLNfLZw==, } engines: { node: '>=8' } - html-webpack-plugin@5.6.0: + cli-cursor@5.0.0: resolution: { - integrity: sha512-iwaY4wzbe48AfKLZ/Cc8k0L+FKG6oSNRaZ8x5A/T/IVDGyXcbHncM9TdDa93wn0FsSm82FhTKW7f3vS61thXAw==, + integrity: sha512-aCj4O5wKyszjMmDT4tZj93kxyydN/K5zPWSCe6/0AV/AA1pqe5ZBIw0a2ZfPQV7lL5/yb5HsUreJ6UFAF1tEQw==, } - engines: { node: '>=10.13.0' } - peerDependencies: - '@rspack/core': 0.x || 1.x - webpack: ^5.20.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true + engines: { node: '>=18' } - htmlparser2@6.1.0: + cli-highlight@2.1.11: resolution: { - integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==, + integrity: sha512-9KDcoEVwyUXrjcJNvHD0NFc/hiwe/WPVYIleQh2O1N2Zro5gWJZ/K+3DGn8w8P/F6FxOgzyC5bxDyHIgCSPhGg==, } + engines: { node: '>=8.0.0', npm: '>=5.0.0' } + hasBin: true - htmlparser2@8.0.2: + cli-spinners@2.6.1: resolution: { - integrity: sha512-GYdjWKDkbRLkZ5geuHs5NY1puJ+PXwP7+fHPRz06Eirsb9ugf6d8kkXav6ADhcODhFFPMIXyxkxSuMf3D6NCFA==, + integrity: sha512-x/5fWmGMnbKQAaNwN+UZlV79qBLM9JFnJuJ03gIi5whrob0xV0ofNVHy9DhwGdsMJQc2OKv0oGmLzvaqvAVv+g==, } + engines: { node: '>=6' } - http-cache-semantics@4.1.1: + cli-spinners@2.9.2: resolution: { - integrity: sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==, + integrity: sha512-ywqV+5MmyL4E7ybXgKys4DugZbX0FC6LnwrhjuykIjnK9k8OQacQ7axGKnjDXWNhns0xot3bZI5h55H8yo9cJg==, } + engines: { node: '>=6' } - http-deceiver@1.2.7: + cli-truncate@4.0.0: resolution: { - integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==, + integrity: sha512-nPdaFdQ0h/GEigbPClz11D0v/ZJEwxmeVZGeMo3Z5StPtUTkA9o1lD6QwoirYiSDzbcwn2XcjwmCp68W1IS4TA==, } + engines: { node: '>=18' } - http-errors@1.6.3: + cli-width@3.0.0: resolution: { - integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==, + integrity: sha512-FxqpkPPwu1HjuN93Omfm4h8uIanXofW0RxVEW3k5RKx+mJJYSthzNhp32Kzxxy3YAEZ/Dc/EWN1vZRY0+kOhbw==, } - engines: { node: '>= 0.6' } + engines: { node: '>= 10' } - http-errors@2.0.0: + cli-width@4.1.0: resolution: { - integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==, + integrity: sha512-ouuZd4/dm2Sw5Gmqy6bGyNNNe1qt9RpmxveLSO7KcgsTnU7RXfsw+/bukWGo1abgBiMAic068rclZsO4IWmmxQ==, } - engines: { node: '>= 0.8' } + engines: { node: '>= 12' } - http-parser-js@0.5.8: + clipboardy@2.3.0: resolution: { - integrity: sha512-SGeBX54F94Wgu5RH3X5jsDtf4eHyRogWX1XGT3b4HuW3tQPM4AaBzoUji/4AAJNXCEOWZ5O0DgZmJw1947gD5Q==, + integrity: sha512-mKhiIL2DrQIsuXMgBgnfEHOZOryC7kY7YO//TN6c63wlEm3NG5tz+YgY5rVi29KCmq/QQjKYvM7a19+MDOTHOQ==, } + engines: { node: '>=8' } - http-proxy-agent@4.0.1: + cliui@5.0.0: resolution: { - integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==, + integrity: sha512-PYeGSEmmHM6zvoef2w8TPzlrnNpXIjTipYK780YswmIP9vjxmd6Y2a3CB2Ks6/AU8NHjZugXvo8w3oWM2qnwXA==, } - engines: { node: '>= 6' } - http-proxy-agent@5.0.0: + cliui@6.0.0: resolution: { - integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==, + integrity: sha512-t6wbgtoCXvAzst7QgXxJYqPt0usEfbgQdftEPbLL/cvv6HPE5VgvqCuAIDR0NgU52ds6rFwqrgakNLrHEjCbrQ==, } - engines: { node: '>= 6' } - http-proxy-agent@7.0.2: + cliui@7.0.4: resolution: { - integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==, + integrity: sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==, } - engines: { node: '>= 14' } - http-proxy-middleware@2.0.6: + cliui@8.0.1: resolution: { - integrity: sha512-ya/UeJ6HVBYxrgYotAZo1KvPWlgB48kUJLDePFeneHsVujFaW5WNj2NgWCAE//B1Dl02BIfYlpNgBy8Kf8Rjmw==, + integrity: sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==, } - engines: { node: '>=12.0.0' } - peerDependencies: - '@types/express': ^4.17.13 - peerDependenciesMeta: - '@types/express': - optional: true + engines: { node: '>=12' } - http-proxy-middleware@3.0.3: + clone-buffer@1.0.0: resolution: { - integrity: sha512-usY0HG5nyDUwtqpiZdETNbmKtw3QQ1jwYFZ9wi5iHzX2BcILwQKtYDJPo7XHTsu5Z0B2Hj3W9NNnbd+AjFWjqg==, + integrity: sha512-KLLTJWrvwIP+OPfMn0x2PheDEP20RPUcGXj/ERegTgdmPEZylALQldygiqrPPu8P45uNuPs7ckmReLY6v/iA5g==, } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + engines: { node: '>= 0.10' } - http-proxy@1.18.1: + clone-deep@4.0.1: resolution: { - integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==, + integrity: sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==, } - engines: { node: '>=8.0.0' } + engines: { node: '>=6' } - http-server@14.1.1: + clone-stats@1.0.0: resolution: { - integrity: sha512-+cbxadF40UXd9T01zUHgA+rlo2Bg1Srer4+B4NwIHdaGxAGGv59nYRnGGDJ9LBk7alpS0US+J+bLLdQOOkJq4A==, + integrity: sha512-au6ydSpg6nsrigcZ4m8Bc9hxjeW+GJ8xh5G3BJCMt4WXe1H10UNaVOamqQTmrx1kjVuxAHIQSNU6hY4Nsn9/ag==, } - engines: { node: '>=12' } - hasBin: true - http-signature@1.2.0: + clone@1.0.4: resolution: { - integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==, + integrity: sha512-JQHZ2QMW6l3aH/j6xCqQThY/9OH4D/9ls34cgkUBiEeocRTU04tHfKPBsUK1PqZCUQM7GiA0IIXJSuXHI64Kbg==, } - engines: { node: '>=0.8', npm: '>=1.3.7' } + engines: { node: '>=0.8' } - https-browserify@1.0.0: + clone@2.1.2: resolution: { - integrity: sha512-J+FkSdyD+0mA0N+81tMotaRMfSL9SGi+xpD3T6YApKsc3bGSXJlfXri3VyFOeYkfLRQisDk1W+jIFFKBeUBbBg==, + integrity: sha512-3Pe/CF1Nn94hyhIYpjtiLhdCoEoz0DqQ+988E9gmeEdQZlojxnOb74wctFyuwWQHzqyf9X7C7MG8juUpqBJT8w==, } + engines: { node: '>=0.8' } - https-proxy-agent@2.2.4: + cloneable-readable@1.1.3: resolution: { - integrity: sha512-OmvfoQ53WLjtA9HeYP9RNrWMJzzAz1JGaSFr1nijg0PVR1JaD/xbJq1mdEIIlxGpXp9eSe/O2LgU9DJmTPd0Eg==, + integrity: sha512-2EF8zTQOxYq70Y4XKtorQupqF0m49MBz2/yf5Bj+MHjvpG3Hy7sImifnqD6UA+TKYxeSV+u6qqQPawN5UvnpKQ==, } - engines: { node: '>= 4.5.0' } - https-proxy-agent@5.0.1: + cmd-shim@5.0.0: resolution: { - integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==, + integrity: sha512-qkCtZ59BidfEwHltnJwkyVZn+XQojdAySM1D1gSeh11Z4pW1Kpolkyo53L5noc0nrxmIvyFwTmJRo4xs7FFLPw==, } - engines: { node: '>= 6' } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - https-proxy-agent@7.0.5: + cmd-shim@6.0.3: resolution: { - integrity: sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==, + integrity: sha512-FMabTRlc5t5zjdenF6mS0MBeFZm0XqHqeOkcskKFb/LYCcRQ5fVgLOHVc4Lq9CqABd9zhjwPjMBCJvMCziSVtA==, } - engines: { node: '>= 14' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - human-signals@2.1.0: + co@4.6.0: resolution: { - integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, + integrity: sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==, } - engines: { node: '>=10.17.0' } + engines: { iojs: '>= 1.0.0', node: '>= 0.12.0' } - human-signals@5.0.0: + code-excerpt@4.0.0: resolution: { - integrity: sha512-AXcZb6vzzrFAUE61HnN4mpLqd/cSIwNQjtNWR0euPm6y0iqx3G4gOXaIDdtdDwZmhwe82LA6+zinmW4UBWVePQ==, + integrity: sha512-xxodCmBen3iy2i0WtAK8FlFNrRzjUqjRsMfho58xT/wvZU1YTM3fCnRjcy1gJPMepaRlgm/0e6w8SpWHpn3/cA==, } - engines: { node: '>=16.17.0' } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - humanize-ms@1.2.1: + collect-v8-coverage@1.0.3: resolution: { - integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==, + integrity: sha512-1L5aqIkwPfiodaMgQunkF1zRhNqifHBmtbbbxcr6yVxxBnliw4TDOW6NxpO8DJLgJ16OT+Y4ztZqP6p/FtXnAw==, } - hyperdyperid@1.2.0: + color-convert@1.9.3: resolution: { - integrity: sha512-Y93lCzHYgGWdrJ66yIktxiaGULYc6oGiABxhcO5AufBeOyoIdZF7bIfLaOrbM0iGIOXQQgxxRrFEnb+Y6w1n4A==, + integrity: sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==, } - engines: { node: '>=10.18' } - iconv-lite@0.4.24: + color-convert@2.0.1: resolution: { - integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==, + integrity: sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==, } - engines: { node: '>=0.10.0' } + engines: { node: '>=7.0.0' } - iconv-lite@0.6.3: + color-name@1.1.3: resolution: { - integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, + integrity: sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==, } - engines: { node: '>=0.10.0' } - icss-replace-symbols@1.1.0: + color-name@1.1.4: resolution: { - integrity: sha512-chIaY3Vh2mh2Q3RGXttaDIzeiPvaVXJ+C4DAh/w3c37SKZ/U6PGMmuicR2EQQp9bKG8zLMCl7I+PtIoOOPp8Gg==, + integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==, } - icss-utils@4.1.1: + color-support@1.1.3: resolution: { - integrity: sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==, + integrity: sha512-qiBjkpbMLO/HL68y+lh4q0/O1MZFj2RX6X/KmMa3+gJD3z+WwI1ZzDHysvqHGS3mP6mznPckpXmw1nI9cJjyRg==, } - engines: { node: '>= 6' } + hasBin: true - icss-utils@5.1.0: + colord@2.9.3: resolution: { - integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==, + integrity: sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==, } - engines: { node: ^10 || ^12 || >= 14 } - peerDependencies: - postcss: ^8.1.0 - ieee754@1.2.1: + colorette@2.0.20: resolution: { - integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, + integrity: sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==, } - iferr@0.1.5: + columnify@1.6.0: resolution: { - integrity: sha512-DUNFN5j7Tln0D+TxzloUjKB+CtVu6myn0JEFak6dG18mNt9YkQ6lzGCdafwofISZ1lLF3xRHJ98VKy9ynkcFaA==, + integrity: sha512-lomjuFZKfM6MSAnV9aCZC9sc0qGbmZdfygNv+nCpqVkSKdCxCklLtd16O0EILGkImHw9ZpHkAnHaB+8Zxq5W6Q==, } + engines: { node: '>=8.0.0' } - ignore-by-default@2.1.0: + combined-stream@1.0.8: resolution: { - integrity: sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==, + integrity: sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==, } - engines: { node: '>=10 <11 || >=12 <13 || >=14' } + engines: { node: '>= 0.8' } - ignore-walk@5.0.1: + commander@10.0.1: resolution: { - integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==, + integrity: sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==, } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + engines: { node: '>=14' } - ignore-walk@6.0.5: + commander@2.20.3: resolution: { - integrity: sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==, + integrity: sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - ignore@3.3.10: + commander@7.2.0: resolution: { - integrity: sha512-Pgs951kaMm5GXP7MOvxERINe3gsaVjUWFm+UZPSq9xYriQAksyhg0csnS0KXSNRD5NmNdapXEpjxG49+AKh/ug==, + integrity: sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==, } + engines: { node: '>= 10' } - ignore@5.3.1: + commander@8.3.0: resolution: { - integrity: sha512-5Fytz/IraMjqpwfd34ke28PTVMjZjJG2MPn5t7OE4eUCUNf8BAa7b5WUS9/Qvr6mwOQS7Mk6vdsMno5he+T8Xw==, + integrity: sha512-OkTL9umf+He2DZkUq8f8J9of7yL6RJKI24dVITBmNfZBmri9zYZQrKkuXiKhyfPSu8tUhnVBB1iKXevvnlR4Ww==, } - engines: { node: '>= 4' } + engines: { node: '>= 12' } - ignore@6.0.2: + common-ancestor-path@1.0.1: resolution: { - integrity: sha512-InwqeHHN2XpumIkMvpl/DCJVrAHgCsG5+cn1XlnLWGwtZBm8QJfSusItfrwx81CTp5agNZqpKU2J/ccC5nGT4A==, + integrity: sha512-L3sHRo1pXXEqX8VU28kfgUY+YGsk09hPqZiZmLacNib6XNTCM8ubYeT7ryXQw8asB1sKgcU5lkB7ONug08aB8w==, } - engines: { node: '>= 4' } - image-size@0.5.5: + common-path-prefix@3.0.0: resolution: { - integrity: sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==, + integrity: sha512-QE33hToZseCH3jS0qN96O/bSh3kaw/h+Tq7ngyY9eWDUnTlTNUyqfqvCXioLe5Na5jFsL78ra/wuBU4iuEgd4w==, } - engines: { node: '>=0.10.0' } - hasBin: true - immediate@3.0.6: + commondir@1.0.1: resolution: { - integrity: sha512-XXOFtyqDjNDAQxVfYxuF7g9Il/IbWmmlQg2MYKOH8ExIT1qg6xc4zyS3HaEEATgs1btfzxq15ciUiY7gjSXRGQ==, + integrity: sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==, } - immutable@4.3.6: + compare-func@2.0.0: resolution: { - integrity: sha512-Ju0+lEMyzMVZarkTn/gqRpdqd5dOPaz1mCZ0SH3JV6iFw81PldE/PEB1hWVEA288HPt4WXW8O7AWxB10M+03QQ==, + integrity: sha512-zHig5N+tPWARooBnb0Zx1MFcdfpyJrfTJ3Y5L+IFvUm8rM74hHz66z0gw0x4tijh5CorKkKUCnW82R2vmpeCRA==, } - import-cwd@3.0.0: + compressible@2.0.18: resolution: { - integrity: sha512-4pnzH16plW+hgvRECbDWpQl3cqtvSofHWh44met7ESfZ8UZOWWddm8hEyDTqREJ9RbYHY8gi8DqmaelApoOGMg==, + integrity: sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==, } - engines: { node: '>=8' } + engines: { node: '>= 0.6' } - import-fresh@3.3.0: + compression@1.8.1: resolution: { - integrity: sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==, + integrity: sha512-9mAqGPHLakhCLeNyxPkK4xVo746zQ/czLH1Ky+vkitMnWfWZps8r0qXuwhwizagCRttsL4lfG4pIOvaWLpAP0w==, } - engines: { node: '>=6' } + engines: { node: '>= 0.8.0' } - import-from@3.0.0: + concat-map@0.0.1: resolution: { - integrity: sha512-CiuXOFFSzkU5x/CR0+z7T91Iht4CXgfCxVOFRhh2Zyhg5wOpWvvDLQUsWl+gcN+QscYBjez8hDCt85O7RLDttQ==, + integrity: sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==, } - engines: { node: '>=8' } - import-lazy@4.0.0: + concat-stream@2.0.0: resolution: { - integrity: sha512-rKtvo6a868b5Hu3heneU+L4yEQ4jYKLtjpnPeUdK7h0yzXGmyBTypknlkCvHFBqfX9YlorEiMM6Dnq/5atfHkw==, + integrity: sha512-MWufYdFw53ccGjCA+Ol7XJYpAlW6/prSMzuPOTRnJGcGzuhLn4Scrz7qf6o8bROZ514ltazcIFJZevcfbo0x7A==, } - engines: { node: '>=8' } + engines: { '0': node >= 6.0 } - import-local@3.1.0: + concordance@5.0.4: resolution: { - integrity: sha512-ASB07uLtnDs1o6EHjKpX34BKYDSqnFerfTOJL2HvMqF70LnxpjkzDB8J44oT9pu4AMPkQwf8jl6szgvNd2tRIg==, + integrity: sha512-OAcsnTEYu1ARJqWVGwf4zh4JDfHZEaSNlNccFmt8YjB2l/n19/PF2viLINHc57vO4FKIAFl2FWASIGZZWZ2Kxw==, } - engines: { node: '>=8' } - hasBin: true + engines: { node: '>=10.18.0 <11 || >=12.14.0 <13 || >=14' } - imurmurhash@0.1.4: + config-chain@1.1.12: resolution: { - integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, + integrity: sha512-a1eOIcu8+7lUInge4Rpf/n4Krkf3Dd9lqhljRzII1/Zno/kRtUWnznPO3jOKBmTEktkt3fkxisUcivoj0ebzoA==, } - engines: { node: '>=0.8.19' } - indent-string@4.0.0: + config-chain@1.1.13: resolution: { - integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, + integrity: sha512-qj+f8APARXHrM0hraqXYb2/bOVSV4PvJQlNZ/DVj0QrmNM2q2euizkeuVckQ57J+W0mRH6Hvi+k50M4Jul2VRQ==, } - engines: { node: '>=8' } - indent-string@5.0.0: + connect-history-api-fallback@2.0.0: resolution: { - integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==, + integrity: sha512-U73+6lQFmfiNPrYbXqr6kZ1i1wiRqXnp2nhMsINseWXO8lDau0LGEffJ8kQi4EjLZympVgRdvqjAgiZ1tgzDDA==, } - engines: { node: '>=12' } + engines: { node: '>=0.8' } - infer-owner@1.0.4: + consola@3.4.2: resolution: { - integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==, + integrity: sha512-5IKcdX0nnYavi6G7TtOhwkYzyjfJlatbjMjuLSfE2kYT5pMDOilZ4OvMhi637CcDICTmz3wARPoyhqyX1Y+XvA==, } + engines: { node: ^14.18.0 || >=16.10.0 } - inflight@1.0.6: + console-control-strings@1.1.0: resolution: { - integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, + integrity: sha512-ty/fTekppD2fIwRvnZAVdeOiGd1c7YXEixbgJTNzqcxJWKQnjJ/V1bNEEE6hygpM3WjwHFUVK6HTjWSzV4a8sQ==, } - deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - inherits@2.0.3: + consolidate@0.15.1: resolution: { - integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==, + integrity: sha512-DW46nrsMJgy9kqAbPt5rKaCr7uFtpo4mSUvLHIUbJEjm0vo+aY5QLwBUq3FK4tRnJr/X0Psc0C4jf/h+HtXSMw==, } + engines: { node: '>= 0.10.0' } + deprecated: Please upgrade to consolidate v1.0.0+ as it has been modernized with several long-awaited fixes implemented. Maintenance is supported by Forward Email at https://forwardemail.net ; follow/watch https://github.com/ladjs/consolidate for updates and release changelog + peerDependencies: + arc-templates: ^0.5.3 + atpl: '>=0.7.6' + babel-core: ^6.26.3 + bracket-template: ^1.1.5 + coffee-script: ^1.12.7 + dot: ^1.1.3 + dust: ^0.3.0 + dustjs-helpers: ^1.7.4 + dustjs-linkedin: ^2.7.5 + eco: ^1.1.0-rc-3 + ect: ^0.5.9 + ejs: ^3.1.5 + haml-coffee: ^1.14.1 + hamlet: ^0.3.3 + hamljs: ^0.6.2 + handlebars: ^4.7.6 + hogan.js: ^3.0.2 + htmling: ^0.0.8 + jade: ^1.11.0 + jazz: ^0.0.18 + jqtpl: ~1.1.0 + just: ^0.1.8 + liquid-node: ^3.0.1 + liquor: ^0.0.5 + lodash: ^4.17.20 + marko: ^3.14.4 + mote: ^0.2.0 + mustache: ^3.0.0 + nunjucks: ^3.2.2 + plates: ~0.4.11 + pug: ^3.0.0 + qejs: ^3.0.5 + ractive: ^1.3.12 + razor-tmpl: ^1.3.1 + react: ^16.13.1 + react-dom: ^16.13.1 + slm: ^2.0.0 + squirrelly: ^5.1.0 + swig: ^1.4.2 + swig-templates: ^2.0.3 + teacup: ^2.0.0 + templayed: '>=0.2.3' + then-jade: '*' + then-pug: '*' + tinyliquid: ^0.2.34 + toffee: ^0.3.6 + twig: ^1.15.2 + twing: ^5.0.2 + underscore: ^1.11.0 + vash: ^0.13.0 + velocityjs: ^2.0.1 + walrus: ^0.10.1 + whiskers: ^0.4.0 + peerDependenciesMeta: + arc-templates: + optional: true + atpl: + optional: true + babel-core: + optional: true + bracket-template: + optional: true + coffee-script: + optional: true + dot: + optional: true + dust: + optional: true + dustjs-helpers: + optional: true + dustjs-linkedin: + optional: true + eco: + optional: true + ect: + optional: true + ejs: + optional: true + haml-coffee: + optional: true + hamlet: + optional: true + hamljs: + optional: true + handlebars: + optional: true + hogan.js: + optional: true + htmling: + optional: true + jade: + optional: true + jazz: + optional: true + jqtpl: + optional: true + just: + optional: true + liquid-node: + optional: true + liquor: + optional: true + lodash: + optional: true + marko: + optional: true + mote: + optional: true + mustache: + optional: true + nunjucks: + optional: true + plates: + optional: true + pug: + optional: true + qejs: + optional: true + ractive: + optional: true + razor-tmpl: + optional: true + react: + optional: true + react-dom: + optional: true + slm: + optional: true + squirrelly: + optional: true + swig: + optional: true + swig-templates: + optional: true + teacup: + optional: true + templayed: + optional: true + then-jade: + optional: true + then-pug: + optional: true + tinyliquid: + optional: true + toffee: + optional: true + twig: + optional: true + twing: + optional: true + underscore: + optional: true + vash: + optional: true + velocityjs: + optional: true + walrus: + optional: true + whiskers: + optional: true - inherits@2.0.4: + content-disposition@0.5.4: resolution: { - integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, + integrity: sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==, } + engines: { node: '>= 0.6' } - ini@1.3.8: + content-type@1.0.5: resolution: { - integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, + integrity: sha512-nTjqfcBFEipKdXCv4YDQWCfmcLZKm81ldF0pAopTvyrFGVbcR6P/VAAd5G7N+0tTr8QqiU0tFadD6FK4NtJwOA==, } + engines: { node: '>= 0.6' } - ini@4.1.3: + conventional-changelog-angular@5.0.12: resolution: { - integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==, + integrity: sha512-5GLsbnkR/7A89RyHLvvoExbiGbd9xKdKqDTrArnPbOqBqG/2wIosu0fHwpeIRI8Tl94MhVNBXcLJZl92ZQ5USw==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>=10' } - init-package-json@3.0.2: + conventional-changelog-core@4.2.4: resolution: { - integrity: sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A==, + integrity: sha512-gDVS+zVJHE2v4SLc6B0sLsPiloR0ygU7HaDW14aNJE1v4SlqJPILPl/aJC7YdtRE4CybBf8gDwObBvKha8Xlyg==, } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + engines: { node: '>=10' } - injection-js@2.4.0: + conventional-changelog-preset-loader@2.3.4: resolution: { - integrity: sha512-6jiJt0tCAo9zjHbcwLiPL+IuNe9SQ6a9g0PEzafThW3fOQi0mrmiJGBJvDD6tmhPh8cQHIQtCOrJuBfQME4kPA==, + integrity: sha512-GEKRWkrSAZeTq5+YjUZOYxdHq+ci4dNwHvpaBC3+ENalzFWuCWa9EZXSuZBpkr72sMdKB+1fyDV4takK1Lf58g==, } + engines: { node: '>=10' } - inquirer@8.2.4: + conventional-changelog-writer@5.0.1: resolution: { - integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==, + integrity: sha512-5WsuKUfxW7suLblAbFnxAcrvf6r+0b7GvNaWUwUIk0bXMnENP/PEieGKVUQrjPqwPT4o3EPAASBXiY6iHooLOQ==, } - engines: { node: '>=12.0.0' } + engines: { node: '>=10' } + hasBin: true - inquirer@8.2.6: + conventional-commits-filter@2.0.7: resolution: { - integrity: sha512-M1WuAmb7pn9zdFRtQYk26ZBoY043Sse0wVDdk4Bppr+JOXyQYybdtvK+l9wUibhtjdjvtoiNy8tk+EgsYIUqKg==, + integrity: sha512-ASS9SamOP4TbCClsRHxIHXRfcGCnIoQqkvAzCSbZzTFLfcTqJVugB0agRgsEELsqaeWgsXv513eS116wnlSSPA==, } - engines: { node: '>=12.0.0' } + engines: { node: '>=10' } - internal-slot@1.0.7: + conventional-commits-parser@3.2.4: resolution: { - integrity: sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==, + integrity: sha512-nK7sAtfi+QXbxHCYfhpZsfRtaitZLIA6889kFIouLvz6repszQDgxBu7wf2WbU+Dco7sAnNCJYERCwt54WPC2Q==, } - engines: { node: '>= 0.4' } + engines: { node: '>=10' } + hasBin: true - interpret@1.4.0: + conventional-recommended-bump@6.1.0: resolution: { - integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==, + integrity: sha512-uiApbSiNGM/kkdL9GTOLAqC4hbptObFo4wW2QRyHsKciGAfQuLU1ShZ1BIVI/+K2BE/W1AWYQMCXAsv4dyKPaw==, } - engines: { node: '>= 0.10' } + engines: { node: '>=10' } + hasBin: true - interpret@3.1.1: + convert-source-map@1.9.0: resolution: { - integrity: sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==, + integrity: sha512-ASFBup0Mz1uyiIjANan1jzLQami9z1PoYSZCiiYW2FczPbenXc45FZdBZLzOT+r6+iciuEModtmCti+hjaAk0A==, } - engines: { node: '>=10.13.0' } - ip-address@9.0.5: + convert-source-map@2.0.0: resolution: { - integrity: sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==, + integrity: sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==, } - engines: { node: '>= 12' } - ipaddr.js@1.9.1: + convert-to-spaces@2.0.1: resolution: { - integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==, + integrity: sha512-rcQ1bsQO9799wq24uE5AM2tAILy4gXGIK/njFWcVQkGNZ96edlpY+A7bjwvzjYvLDyzmG1MmMLZhpcsb+klNMQ==, } - engines: { node: '>= 0.10' } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - ipaddr.js@2.2.0: + cookie-signature@1.0.6: resolution: { - integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==, + integrity: sha512-QADzlaHc8icV8I7vbaJXJwod9HWYp8uCqf1xa4OfNu1T7JVxQIrUgOWtHdNDtPiywmFbiS12VjotIXLrKM3orQ==, } - engines: { node: '>= 10' } - irregular-plurals@3.5.0: + cookie@0.7.1: resolution: { - integrity: sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==, + integrity: sha512-6DnInpx7SJ2AK3+CTUE/ZM0vWTUboZCegxhC2xiIydHR9jNuTAASBrfEpHhiGOZw/nX51bHt6YQl8jsGo4y/0w==, } - engines: { node: '>=8' } + engines: { node: '>= 0.6' } - is-absolute@1.0.0: + copy-webpack-plugin@9.1.0: resolution: { - integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==, + integrity: sha512-rxnR7PaGigJzhqETHGmAcxKnLZSR5u1Y3/bcIv/1FnqXedcL/E2ewK7ZCNrArJKCiSv8yVXhTqetJh8inDvfsA==, } - engines: { node: '>=0.10.0' } + engines: { node: '>= 12.13.0' } + peerDependencies: + webpack: ^5.1.0 - is-arguments@1.1.1: + core-js-compat@3.47.0: resolution: { - integrity: sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==, + integrity: sha512-IGfuznZ/n7Kp9+nypamBhvwdwLsW6KC8IOaURw2doAK5e98AG3acVLdh0woOnEqCfUtS+Vu882JE4k/DAm3ItQ==, } - engines: { node: '>= 0.4' } - is-array-buffer@3.0.4: + core-js-pure@3.47.0: resolution: { - integrity: sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==, + integrity: sha512-BcxeDbzUrRnXGYIVAGFtcGQVNpFcUhVjr6W7F8XktvQW2iJP9e66GP6xdKotCRFlrxBvNIBrhwKteRXqMV86Nw==, } - engines: { node: '>= 0.4' } - is-arrayish@0.2.1: + core-js@3.47.0: resolution: { - integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, + integrity: sha512-c3Q2VVkGAUyupsjRnaNX6u8Dq2vAdzm9iuPj5FW0fRxzlxgq9Q39MDq10IvmQSpLgHQNyQzQmOo6bgGHmH3NNg==, } - is-async-function@2.0.0: + core-util-is@1.0.2: resolution: { - integrity: sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==, + integrity: sha512-3lqz5YjWTYnW6dlDa5TLaTCcShfar1e40rmcJVwCBJC6mWlFuj0eCHIElmG1g5kyuJ/GD+8Wn4FFCcz4gJPfaQ==, } - engines: { node: '>= 0.4' } - is-bigint@1.0.4: + core-util-is@1.0.3: resolution: { - integrity: sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==, + integrity: sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==, } - is-binary-path@2.1.0: + cosmiconfig@6.0.0: resolution: { - integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, + integrity: sha512-xb3ZL6+L8b9JLLCx3ZdoZy4+2ECphCMo2PwqgP1tlfVq6M6YReyzBJtvWWtbDSpNr9hn96pkCiZqUcFEc+54Qg==, } engines: { node: '>=8' } - is-boolean-object@1.1.2: + cosmiconfig@7.0.0: resolution: { - integrity: sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==, + integrity: sha512-pondGvTuVYDk++upghXJabWzL6Kxu6f26ljFw64Swq9v6sQPUL3EUlVDV56diOjpCayKihL6hVe8exIACU4XcA==, } - engines: { node: '>= 0.4' } + engines: { node: '>=10' } - is-buffer@1.1.6: + cosmiconfig@7.1.0: resolution: { - integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==, + integrity: sha512-AdmX6xUzdNASswsFtmwSt7Vj8po9IuqXm0UXz7QKPuEUmPB4XyjGfaAr2PSuELMwkRMVH1EpIkX5bTZGRB3eCA==, } + engines: { node: '>=10' } - is-builtin-module@3.2.1: + coveralls@3.1.1: resolution: { - integrity: sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==, + integrity: sha512-+dxnG2NHncSD1NrqbSM3dn/lE57O6Qf/koe9+I7c+wzkqRmEvcp0kgJdxKInzYzkICKkFMZsX3Vct3++tsF9ww==, } engines: { node: '>=6' } - - is-callable@1.2.7: - resolution: - { - integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==, - } - engines: { node: '>= 0.4' } - - is-ci@2.0.0: - resolution: - { - integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==, - } hasBin: true - is-core-module@2.13.1: - resolution: - { - integrity: sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==, - } - - is-data-view@1.0.1: - resolution: - { - integrity: sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==, - } - engines: { node: '>= 0.4' } - - is-date-object@1.0.5: - resolution: - { - integrity: sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==, - } - engines: { node: '>= 0.4' } - - is-docker@2.2.1: + create-require@1.1.1: resolution: { - integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==, + integrity: sha512-dcKFX3jn0MpIaXjisoRvexIJVEKzaq7z2rZKxf+MSr9TkdmHmsU4m2lcLojrj/FHl8mk5VxMmYA+ftRkP/3oKQ==, } - engines: { node: '>=8' } - hasBin: true - is-docker@3.0.0: + cross-env@7.0.3: resolution: { - integrity: sha512-eljcgEDlEns/7AXFosB5K/2nCM4P7FQPkGc/DWLy5rmFEWvZayGrik1d9/QIY5nJ4f9YsVvBkA6kJpHn9rISdQ==, + integrity: sha512-+/HKd6EgcQCJGh2PSjZuUitQBQynKor4wrFbRg4DtAgS1aWO+gU52xpH7M9ScGgXSYmAVS9bIJ8EzuaGw0oNAw==, } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + engines: { node: '>=10.14', npm: '>=6', yarn: '>=1' } hasBin: true - is-extglob@2.1.1: - resolution: - { - integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, - } - engines: { node: '>=0.10.0' } - - is-file-esm@1.0.0: - resolution: - { - integrity: sha512-rZlaNKb4Mr8WlRu2A9XdeoKgnO5aA53XdPHgCKVyCrQ/rWi89RET1+bq37Ru46obaQXeiX4vmFIm1vks41hoSA==, - } - - is-finalizationregistry@1.0.2: - resolution: - { - integrity: sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==, - } - - is-fullwidth-code-point@2.0.0: - resolution: - { - integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==, - } - engines: { node: '>=4' } - - is-fullwidth-code-point@3.0.0: - resolution: - { - integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, - } - engines: { node: '>=8' } - - is-fullwidth-code-point@4.0.0: - resolution: - { - integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==, - } - engines: { node: '>=12' } - - is-fullwidth-code-point@5.0.0: - resolution: - { - integrity: sha512-OVa3u9kkBbw7b8Xw5F9P+D/T9X+Z4+JruYVNapTjPYZYUznQ5YfWeFkOj606XYYW8yugTfC8Pj0hYqvi4ryAhA==, - } - engines: { node: '>=18' } - - is-generator-fn@2.1.0: - resolution: - { - integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==, - } - engines: { node: '>=6' } - - is-generator-function@1.0.10: - resolution: - { - integrity: sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==, - } - engines: { node: '>= 0.4' } - - is-glob@3.1.0: - resolution: - { - integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==, - } - engines: { node: '>=0.10.0' } - - is-glob@4.0.3: + cross-spawn@6.0.6: resolution: { - integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, + integrity: sha512-VqCUuhcd1iB+dsv8gxPttb5iZh/D0iubSP21g36KXdEuf6I5JiioesUVjpCdHV9MZRUfVFlvwtIUyPfxo5trtw==, } - engines: { node: '>=0.10.0' } + engines: { node: '>=4.8' } - is-inside-container@1.0.0: + cross-spawn@7.0.6: resolution: { - integrity: sha512-KIYLCCJghfHZxqjYBE7rEy0OBuTd5xCHS7tHVgvCLkx7StIoaxwNW3hCALgEUjFfeRk+MG/Qxmp/vtETEF3tRA==, + integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==, } - engines: { node: '>=14.16' } - hasBin: true + engines: { node: '>= 8' } - is-interactive@1.0.0: + crypto-random-string@2.0.0: resolution: { - integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==, + integrity: sha512-v1plID3y9r/lPhviJ1wrXpLeyUIGAZ2SHNYTEapm7/8A9nLPoyvVp3RK/EPFqn5kEznyWgYZNsRtYYIWbuG8KA==, } engines: { node: '>=8' } - is-lambda@1.0.1: - resolution: - { - integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==, - } - - is-map@2.0.3: - resolution: - { - integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==, - } - engines: { node: '>= 0.4' } - - is-module@1.0.0: - resolution: - { - integrity: sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==, - } - - is-nan@1.3.2: - resolution: - { - integrity: sha512-E+zBKpQ2t6MEo1VsonYmluk9NxGrbzpeeLC2xIViuO2EjU2xsXsBPwTr3Ykv9l08UYEVEdWeRZNouaZqF6RN0w==, - } - engines: { node: '>= 0.4' } - - is-negated-glob@1.0.0: - resolution: - { - integrity: sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==, - } - engines: { node: '>=0.10.0' } - - is-negative-zero@2.0.3: - resolution: - { - integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==, - } - engines: { node: '>= 0.4' } - - is-network-error@1.1.0: + css-declaration-sorter@6.4.1: resolution: { - integrity: sha512-tUdRRAnhT+OtCZR/LxZelH/C7QtjtFrTu5tXCA8pl55eTUElUHT+GPYV8MBMBvea/j+NxQqVt3LbWMRir7Gx9g==, + integrity: sha512-rtdthzxKuyq6IzqX6jEcIzQF/YqccluefyCYheovBOLhFT/drQA9zj/UbRAa9J7C0o6EG6u3E6g+vKkay7/k3g==, } - engines: { node: '>=16' } + engines: { node: ^10 || ^12 || >=14 } + peerDependencies: + postcss: ^8.0.9 - is-number-object@1.0.7: + css-loader@3.6.0: resolution: { - integrity: sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==, + integrity: sha512-M5lSukoWi1If8dhQAUCvj4H8vUt3vOnwbQBH9DdTm/s4Ym2B/3dPMtYZeJmq7Q3S3Pa+I94DcZ7pc9bP14cWIQ==, } - engines: { node: '>= 0.4' } + engines: { node: '>= 8.9.0' } + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 - is-number@7.0.0: + css-loader@6.11.0: resolution: { - integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, + integrity: sha512-CTJ+AEQJjq5NzLga5pE39qdiSV56F8ywCIsqNIRF0r7BDgWsN25aazToqAFg7ZrtA/U016xudB3ffgweORxX7g==, } - engines: { node: '>=0.12.0' } + engines: { node: '>= 12.13.0' } + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.0.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true - is-obj@2.0.0: + css-minimizer-webpack-plugin@3.4.1: resolution: { - integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==, + integrity: sha512-1u6D71zeIfgngN2XNRJefc/hY7Ybsxd74Jm4qngIXyUEk7fss3VUzuHxLAq/R8NAba4QU9OUSaMZlbpRc7bM4Q==, } - engines: { node: '>=8' } + engines: { node: '>= 12.13.0' } + peerDependencies: + '@parcel/css': '*' + clean-css: '*' + csso: '*' + esbuild: '*' + webpack: ^5.0.0 + peerDependenciesMeta: + '@parcel/css': + optional: true + clean-css: + optional: true + csso: + optional: true + esbuild: + optional: true - is-path-cwd@1.0.0: + css-select@4.3.0: resolution: { - integrity: sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==, + integrity: sha512-wPpOYtnsVontu2mODhA19JrqWxNsfdatRKd64kmpRbQgh1KtItko5sTnEpPdpSaJszTOhEMlF/RPz28qj4HqhQ==, } - engines: { node: '>=0.10.0' } - is-path-cwd@2.2.0: + css-tree@1.1.3: resolution: { - integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==, + integrity: sha512-tRpdppF7TRazZrjJ6v3stzv93qxRcSsFmW6cX0Zm2NVKpxE1WV1HblnghVv9TreireHkqI/VDEsfolRF1p6y7Q==, } - engines: { node: '>=6' } + engines: { node: '>=8.0.0' } - is-path-in-cwd@1.0.1: + css-tree@2.3.1: resolution: { - integrity: sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==, + integrity: sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==, } - engines: { node: '>=0.10.0' } + engines: { node: ^10 || ^12.20.0 || ^14.13.0 || >=15.0.0 } - is-path-inside@1.0.1: + css-what@6.2.2: resolution: { - integrity: sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==, + integrity: sha512-u/O3vwbptzhMs3L1fQE82ZSLHQQfto5gyZzwteVIEyeaY5Fc7R4dapF/BvRoSYFeqfBk4m0V1Vafq5Pjv25wvA==, } - engines: { node: '>=0.10.0' } + engines: { node: '>= 6' } - is-path-inside@3.0.3: + css@2.2.4: resolution: { - integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==, + integrity: sha512-oUnjmWpy0niI3x/mPL8dVEI1l7MnG3+HHyRPHf+YFSbK+svOhXpmSOcDURUh2aOCgl2grzrOPt1nHLuCVFULLw==, } - engines: { node: '>=8' } - is-plain-obj@1.1.0: + cssesc@3.0.0: resolution: { - integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==, + integrity: sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==, } - engines: { node: '>=0.10.0' } + engines: { node: '>=4' } + hasBin: true - is-plain-obj@2.1.0: + cssnano-preset-default@5.2.14: resolution: { - integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==, + integrity: sha512-t0SFesj/ZV2OTylqQVOrFgEh5uanxbO6ZAdeCrNsUQ6fVuXwYTxJPNAGvGTxHbD68ldIJNec7PyYZDBrfDQ+6A==, } - engines: { node: '>=8' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - is-plain-obj@3.0.0: + cssnano-utils@3.1.0: resolution: { - integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==, + integrity: sha512-JQNR19/YZhz4psLX/rQ9M83e3z2Wf/HdJbryzte4a3NSuafyp9w/I4U+hx5C2S9g41qlstH7DEWnZaaj83OuEA==, } - engines: { node: '>=10' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - is-plain-object@2.0.4: + cssnano@5.1.15: resolution: { - integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==, + integrity: sha512-j+BKgDcLDQA+eDifLx0EO4XSA56b7uut3BQFH+wbSaSTuGLuiyTa/wbRYthUXX8LC9mLg+WWKe8h+qJuwTAbHw==, } - engines: { node: '>=0.10.0' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - is-plain-object@3.0.1: + csso@4.2.0: resolution: { - integrity: sha512-Xnpx182SBMrr/aBik8y+GuR4U1L9FqMSojwDQwPMmxyC6bvEqly9UBCxhauBF5vNh2gwWJNX6oDV7O+OM4z34g==, + integrity: sha512-wvlcdIbf6pwKEk7vHj8/Bkc0B4ylXZruLvOgs9doS5eOsOpuodOV2zJChSpkp+pRpYQLQMeF04nr3Z68Sta9jA==, } - engines: { node: '>=0.10.0' } + engines: { node: '>=8.0.0' } - is-plain-object@5.0.0: + cssom@0.3.8: resolution: { - integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==, + integrity: sha512-b0tGHbfegbhPJpxpiBPU2sCkigAqtM9O121le6bbOlgyV+NyGyCmVfJ6QW9eRjz8CpNfWEOYBIMIGRYkLwsIYg==, } - engines: { node: '>=0.10.0' } - is-potential-custom-element-name@1.0.1: + cssom@0.4.4: resolution: { - integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==, + integrity: sha512-p3pvU7r1MyyqbTk+WbNJIgJjG2VmTIaB10rI93LzVPrmDJKkzKYMtxxyAvQXR/NS6otuzveI7+7BBq3SjBS2mw==, } - is-promise@4.0.0: + cssom@0.5.0: resolution: { - integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==, + integrity: sha512-iKuQcq+NdHqlAcwUY0o/HL69XQrUaQdMjmStJ8JFmUaiiQErlhrmuigkg/CU4E2J0IyUKUrMAgl36TvN67MqTw==, } - is-reference@1.2.1: + cssstyle@2.3.0: resolution: { - integrity: sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==, + integrity: sha512-AZL67abkUzIuvcHqk7c09cezpGNcxUxU4Ioi/05xHk4DQeTkWmGYftIE6ctU6AEt+Gn4n1lDStOtj7FKycP71A==, } + engines: { node: '>=8' } - is-regex@1.1.4: + cssstyle@3.0.0: resolution: { - integrity: sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==, + integrity: sha512-N4u2ABATi3Qplzf0hWbVCdjenim8F3ojEXpBDF5hBpjzW182MjNGLqfmQ0SkSPeQ+V86ZXgeH8aXj6kayd4jgg==, } - engines: { node: '>= 0.4' } + engines: { node: '>=14' } - is-relative@1.0.0: + csstype@3.2.3: resolution: { - integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==, + integrity: sha512-z1HGKcYy2xA8AGQfwrn0PAy+PB7X/GSj3UVJW9qKyn43xWa+gl5nXmU4qqLMRzWVLFC8KusUX8T/0kCiOYpAIQ==, } - engines: { node: '>=0.10.0' } - is-set@2.0.3: + currently-unhandled@0.4.1: resolution: { - integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==, + integrity: sha512-/fITjgjGU50vjQ4FH6eUoYu+iUoUKIXws2hL15JJpIR+BbTxaXQsMuuyjtNh2WqsSBS5nsaZHFsFecyw5CCAng==, } - engines: { node: '>= 0.4' } + engines: { node: '>=0.10.0' } - is-shared-array-buffer@1.0.3: + dargs@7.0.0: resolution: { - integrity: sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==, + integrity: sha512-2iy1EkLdlBzQGvbweYRFxmFath8+K7+AKB0TlhHWkNuH+TmovaMH/Wp7V7R4u7f4SnX3OgLsU9t1NI9ioDnUpg==, } - engines: { node: '>= 0.4' } + engines: { node: '>=8' } - is-ssh@1.4.0: + dashdash@1.14.1: resolution: { - integrity: sha512-x7+VxdxOdlV3CYpjvRLBv5Lo9OJerlYanjwFrPR9fuGPjCiNiCzFgAWpiLAohSbsnH4ZAys3SBh+hq5rJosxUQ==, + integrity: sha512-jRFi8UDGo6j+odZiEpjazZaWqEal3w/basFjQHQEwVtZJGDpxbH1MeYluwCS8Xq5wmLJooDlMgvVarmWfGM44g==, } + engines: { node: '>=0.10' } - is-stream@1.1.0: + data-urls@2.0.0: resolution: { - integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==, + integrity: sha512-X5eWTSXO/BJmpdIKCRuKUgSCgAN0OwliVK3yPKbwIWU1Tdw5BRajxlzMidvh+gwko9AfQ9zIj52pzF91Q3YAvQ==, } - engines: { node: '>=0.10.0' } + engines: { node: '>=10' } - is-stream@2.0.0: + data-urls@3.0.2: resolution: { - integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==, + integrity: sha512-Jy/tj3ldjZJo63sVAvg6LHt2mHvl4V6AgRAmNDtLdm7faqtsx+aJG42rsyCo9JCoRVKwPFzKlIPx3DIibwSIaQ==, } - engines: { node: '>=8' } + engines: { node: '>=12' } - is-stream@2.0.1: + data-urls@4.0.0: resolution: { - integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, + integrity: sha512-/mMTei/JXPqvFqQtfyTowxmJVwr2PVAeCcDxyFf6LhoOu/09TX2OX3kb2wzi4DMXcfj4OItwDOnhl5oziPnT6g==, } - engines: { node: '>=8' } + engines: { node: '>=14' } - is-stream@3.0.0: + data-view-buffer@1.0.2: resolution: { - integrity: sha512-LnQR4bZ9IADDRSkvpqMGvt/tEJWclzklNgSw48V5EAaAeDd6qGvN8ei6k5p0tvxSR171VmGyHuTiAOfxAbr8kA==, + integrity: sha512-EmKO5V3OLXh1rtK2wgXRansaK1/mtVdTUEiEI0W8RkvgT05kfxaH29PliLnpLP73yYO6142Q72QNa8Wx/A5CqQ==, } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + engines: { node: '>= 0.4' } - is-string@1.0.7: + data-view-byte-length@1.0.2: resolution: { - integrity: sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==, + integrity: sha512-tuhGbE6CfTM9+5ANGf+oQb72Ky/0+s3xKUpHvShfiz2RxMFgFPjsXuRLBVMtvMs15awe45SRb83D6wH4ew6wlQ==, } engines: { node: '>= 0.4' } - is-subset@0.1.1: + data-view-byte-offset@1.0.1: resolution: { - integrity: sha512-6Ybun0IkarhmEqxXCNw/C0bna6Zb/TkfUX9UbwJtK6ObwAVCxmAP308WWTHviM/zAqXk05cdhYsUsZeGQh99iw==, + integrity: sha512-BS8PfmtDGnrgYdOonGZQdLZslWIeCGFP9tpan0hi1Co2Zr2NKADsvGYA8XxuG/4UWgJ6Cjtv+YJnB6MM69QGlQ==, } + engines: { node: '>= 0.4' } - is-symbol@1.0.4: + date-time@3.1.0: resolution: { - integrity: sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==, + integrity: sha512-uqCUKXE5q1PNBXjPqvwhwJf9SwMoAHBgWJ6DcrnS5o+W2JOiIILl0JEdVD8SGujrNS02GGxgwAg2PN2zONgtjg==, } - engines: { node: '>= 0.4' } + engines: { node: '>=6' } - is-text-path@1.0.1: + dateformat@3.0.3: resolution: { - integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==, + integrity: sha512-jyCETtSl3VMZMWeRo7iY1FL19ges1t55hMo5yaam4Jrsm5EPL89UQkoQRyiI+Yf4k8r2ZpdngkV8hr1lIdjb3Q==, } - engines: { node: '>=0.10.0' } - is-typed-array@1.1.13: + debounce@1.2.1: resolution: { - integrity: sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==, + integrity: sha512-XRRe6Glud4rd/ZGQfiV1ruXSfbvfJedlV9Y6zOlP+2K04vBYiJEte6stfFkCP03aMnY5tsipamumUjL14fofug==, } - engines: { node: '>= 0.4' } - is-typedarray@1.0.0: + debug@2.6.9: resolution: { - integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==, + integrity: sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==, } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true - is-unc-path@1.0.0: + debug@3.2.7: resolution: { - integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==, + integrity: sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==, } - engines: { node: '>=0.10.0' } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true - is-unicode-supported@0.1.0: + debug@4.3.1: resolution: { - integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==, + integrity: sha512-doEwdvm4PCeK4K3RQN2ZC2BYUBaxwLARCqZmMjtF8a51J2Rb0xpVloFRnCODwqjpwnAoao4pelN8l3RJdv3gRQ==, } - engines: { node: '>=10' } + engines: { node: '>=6.0' } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true - is-unicode-supported@2.0.0: + debug@4.4.3: resolution: { - integrity: sha512-FRdAyx5lusK1iHG0TWpVtk9+1i+GjrzRffhDg4ovQ7mcidMQ6mj+MhKPmvh7Xwyv5gIS06ns49CA7Sqg7lC22Q==, + integrity: sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==, } - engines: { node: '>=18' } + engines: { node: '>=6.0' } + peerDependencies: + supports-color: '*' + peerDependenciesMeta: + supports-color: + optional: true - is-utf8@0.2.1: + decamelize-keys@1.1.1: resolution: { - integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==, + integrity: sha512-WiPxgEirIV0/eIOMcnFBA3/IJZAZqKnwAwWyvvdi4lsr1WCN22nhdf/3db3DoZcUjTV2SqfzIwNyp6y2xs3nmg==, } + engines: { node: '>=0.10.0' } - is-valid-glob@1.0.0: + decamelize@1.2.0: resolution: { - integrity: sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==, + integrity: sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==, } engines: { node: '>=0.10.0' } - is-weakmap@2.0.2: + decamelize@4.0.0: resolution: { - integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==, + integrity: sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==, } - engines: { node: '>= 0.4' } + engines: { node: '>=10' } - is-weakref@1.0.2: + decimal.js@10.6.0: resolution: { - integrity: sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==, + integrity: sha512-YpgQiITW3JXGntzdUmyUR1V812Hn8T1YVXhCu+wO3OpS4eU9l4YdD3qjyiKdV6mvV29zapkMeD390UVEf2lkUg==, } - is-weakset@2.0.3: + decode-uri-component@0.2.2: resolution: { - integrity: sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==, + integrity: sha512-FqUYQ+8o158GyGTrMFJms9qh3CqTKvAqgqsTnkLI8sKu0028orqBhxNMFkFen0zGyg6epACD32pjVk58ngIErQ==, } - engines: { node: '>= 0.4' } + engines: { node: '>=0.10' } - is-what@3.14.1: + dedent@0.7.0: resolution: { - integrity: sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==, + integrity: sha512-Q6fKUPqnAHAyhiUgFU7BUzLiv0kd8saH9al7tnu5Q/okj6dnupxyTgFIBjVzJATdfIAm9NAsvXNzjaKa+bxVyA==, } - is-windows@1.0.2: + deep-eql@4.1.4: resolution: { - integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==, + integrity: sha512-SUwdGfqdKOwxCPeVYjwSyRpJ7Z+fhpwIAtmCUdZIWZ/YP5R9WAsyuSgpLVDi9bjWoN2LXHNss/dk3urXtdQxGg==, } - engines: { node: '>=0.10.0' } + engines: { node: '>=6' } - is-wsl@2.2.0: + deep-is@0.1.4: resolution: { - integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==, + integrity: sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==, } - engines: { node: '>=8' } - is-wsl@3.1.0: + deepmerge@1.5.2: resolution: { - integrity: sha512-UcVfVfaK4Sc4m7X3dUSoHoozQGBEFeDC+zVo06t98xe8CzHSZZBekNXH+tu0NalHolcJ/QAGqS46Hef7QXBIMw==, + integrity: sha512-95k0GDqvBjZavkuvzx/YqVLv/6YYa17fz6ILMSf7neqQITCPbnfEnQvEgMPNjH4kgobe7+WIL0yJEHku+H3qtQ==, } - engines: { node: '>=16' } + engines: { node: '>=0.10.0' } - isarray@1.0.0: + deepmerge@4.3.1: resolution: { - integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==, + integrity: sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==, } + engines: { node: '>=0.10.0' } - isarray@2.0.5: + default-gateway@6.0.3: resolution: { - integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==, + integrity: sha512-fwSOJsbbNzZ/CUFpqFBqYfYNLj1NbMPm8MMCIzHjC83iSJRBEGmDUxU+WP661BaBQImeC2yHwXtz+P/O9o+XEg==, } + engines: { node: '>= 10' } - isbinaryfile@4.0.10: + default-require-extensions@3.0.1: resolution: { - integrity: sha512-iHrqe5shvBUcFbmZq9zOQHBoeOhZJu6RQGrDpBgenUm/Am+F3JM2MgQj+rK3Z601fzrL5gLZWtAPH2OBaSVcyw==, + integrity: sha512-eXTJmRbm2TIt9MgWTsOH1wEuhew6XGZcMeGKCtLedIg/NCsg1iBePXkceTdK4Fii7pzmN9tGsZhKzZ4h7O/fxw==, } - engines: { node: '>= 8.0.0' } + engines: { node: '>=8' } - isexe@2.0.0: + defaults@1.0.4: resolution: { - integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, + integrity: sha512-eFuaLoy/Rxalv2kr+lqMlUnrDWV+3j4pljOIJgLIhI058IQfWJ7vXhyEIHu+HtC738klGALYxOKDO0bQP3tg8A==, } - isexe@3.1.1: + define-data-property@1.1.4: resolution: { - integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==, + integrity: sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==, } - engines: { node: '>=16' } + engines: { node: '>= 0.4' } - isobject@3.0.1: + define-lazy-prop@2.0.0: resolution: { - integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==, + integrity: sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==, } - engines: { node: '>=0.10.0' } + engines: { node: '>=8' } - isomorphic-timers-promises@1.0.1: + define-properties@1.2.1: resolution: { - integrity: sha512-u4sej9B1LPSxTGKB/HiuzvEQnXH0ECYkSVQU39koSwmFAxhlEAFl9RdTvLv4TOTQUgBS5O3O5fwUxk6byBZ+IQ==, + integrity: sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==, } - engines: { node: '>=10' } + engines: { node: '>= 0.4' } - isstream@0.1.2: + del@6.1.1: resolution: { - integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==, + integrity: sha512-ua8BhapfP0JUJKC/zV9yHHDW/rDoDxP4Zhn3AkA6/xT6gY7jYXJiaeyBZznYVujhZZET+UgcbZiQ7sN3WqcImg==, } + engines: { node: '>=10' } - istanbul-lib-coverage@3.2.2: + delayed-stream@1.0.0: resolution: { - integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==, + integrity: sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==, } - engines: { node: '>=8' } + engines: { node: '>=0.4.0' } - istanbul-lib-hook@3.0.0: + delegates@1.0.0: resolution: { - integrity: sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==, + integrity: sha512-bd2L678uiWATM6m5Z1VzNCErI3jiGzt6HGY8OVICs40JQq/HALfbyNJmp0UDakEY4pMMaN0Ly5om/B1VI/+xfQ==, } - engines: { node: '>=8' } - istanbul-lib-instrument@4.0.3: + depd@1.1.2: resolution: { - integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==, + integrity: sha512-7emPTl6Dpo6JRXOXjLRxck+FlLRX5847cLKEn00PLAgc3g2hTZZgr+e4c2v6QpSmLeFP3n5yUo7ft6avBK/5jQ==, } - engines: { node: '>=8' } + engines: { node: '>= 0.6' } - istanbul-lib-instrument@5.2.1: + depd@2.0.0: resolution: { - integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==, + integrity: sha512-g7nH6P6dyDioJogAAGprGpCtVImJhpPk/roCzdb3fIh61/s/nPsfR6onyMwkCAR/OlC3yBC0lESvUoQEAssIrw==, } - engines: { node: '>=8' } + engines: { node: '>= 0.8' } - istanbul-lib-instrument@6.0.3: + deprecation@2.3.1: resolution: { - integrity: sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==, + integrity: sha512-xmHIy4F3scKVwMsQ4WnVaS8bHOx0DmVwRywosKhaILI0ywMDWPtBSku2HNxRvF7jtwDRsoEwYQSfbxj8b7RlJQ==, } - engines: { node: '>=10' } - istanbul-lib-processinfo@2.0.3: + destroy@1.2.0: resolution: { - integrity: sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==, + integrity: sha512-2sJGJTaXIIaR1w4iJSNoN0hnMY7Gpc/n8D4qSCJw8QqFWXf7cuAgnEHxBpweaVcPevC2l3KpjYCx3NypQQgaJg==, } - engines: { node: '>=8' } + engines: { node: '>= 0.8', npm: 1.2.8000 || >= 1.4.16 } - istanbul-lib-report@3.0.1: + detect-indent@5.0.0: resolution: { - integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==, + integrity: sha512-rlpvsxUtM0PQvy9iZe640/IWwWYyBsTApREbA1pHOpmOUIl9MkP/U4z7vTtg4Oaojvqhxt7sdufnT0EzGaR31g==, } - engines: { node: '>=10' } + engines: { node: '>=4' } - istanbul-lib-source-maps@4.0.1: + detect-libc@2.1.2: resolution: { - integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==, + integrity: sha512-Btj2BOOO83o3WyH59e8MgXsxEQVcarkUOpEYrubB0urwnN10yQ364rsiByU11nZlqWYZm05i/of7io4mzihBtQ==, } - engines: { node: '>=10' } + engines: { node: '>=8' } - istanbul-lib-source-maps@5.0.6: + detect-newline@3.1.0: resolution: { - integrity: sha512-yg2d+Em4KizZC5niWhQaIomgf5WlL4vOOjZ5xGCmF8SnPE/mDWWXgvRExdcpCgh9lLRRa1/fSYp2ymmbJ1pI+A==, + integrity: sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==, } - engines: { node: '>=10' } + engines: { node: '>=8' } - istanbul-reports@3.1.7: + detect-node@2.1.0: resolution: { - integrity: sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==, + integrity: sha512-T0NIuQpnTvFDATNuHN5roPwSBG83rFsuO+MXXH9/3N1eFbn4wcPjttvjMLEPWJ0RGUYgQE7cGgS3tNxbqCGM7g==, } - engines: { node: '>=8' } - iterator.prototype@1.1.2: + diff-sequences@27.5.1: resolution: { - integrity: sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==, + integrity: sha512-k1gCAXAsNgLwEL+Y8Wvl+M6oEFj5bgazfZULpS5CneoPPXRaCCW7dm+q21Ky2VEE5X+VeRDBVg1Pcvvsr4TtNQ==, } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - jackspeak@3.1.2: + diff@4.0.2: resolution: { - integrity: sha512-kWmLKn2tRtfYMF/BakihVVRzBKOxz4gJMiL2Rj91WnAB5TPZumSH99R/Yf1qE1u4uRimvCSJfm6hnxohXeEXjQ==, + integrity: sha512-58lmxKSA4BNyLz+HHMUzlOEpg09FV+ev6ZMe3vJihgdxzgcwZ8VoEEPmALCZG9LmqfVoNMMKpttIYTVG6uDY7A==, } - engines: { node: '>=14' } + engines: { node: '>=0.3.1' } - jake@10.9.1: + diff@5.0.0: resolution: { - integrity: sha512-61btcOHNnLnsOdtLgA5efqQWjnSi/vow5HbI7HMdKKWqvrKR1bLK3BPlJn9gcSaP2ewuamUSMB5XEy76KUIS2w==, + integrity: sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==, } - engines: { node: '>=10' } - hasBin: true + engines: { node: '>=0.3.1' } - jasmine-core@2.8.0: + dir-glob@3.0.1: resolution: { - integrity: sha512-SNkOkS+/jMZvLhuSx1fjhcNWUC/KG6oVyFUGkSBEr9n1axSNduWU8GlI7suaHXr4yxjet6KjrUZxUTE5WzzWwQ==, + integrity: sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==, } + engines: { node: '>=8' } - jasmine-core@3.99.1: + dns-packet@5.6.1: resolution: { - integrity: sha512-Hu1dmuoGcZ7AfyynN3LsfruwMbxMALMka+YtZeGoLuDEySVmVAPaonkNoBRIw/ectu8b9tVQCJNgp4a4knp+tg==, + integrity: sha512-l4gcSouhcgIKRvyy99RNVOgxXiicE+2jZoNmaNmZ6JXiGajBOJAesk1OBlJuM5k2c+eudGdLxDqXuPCKIj6kpw==, } + engines: { node: '>=6' } - jasmine-core@5.1.2: + doctrine@2.1.0: resolution: { - integrity: sha512-2oIUMGn00FdUiqz6epiiJr7xcFyNYj3rDcfmnzfkBnHyBQ3cBQUs4mmyGsOb7TTLb9kxk7dBcmEmqhDKkBoDyA==, + integrity: sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==, } + engines: { node: '>=0.10.0' } - jasmine-spec-reporter@4.2.1: + doctrine@3.0.0: resolution: { - integrity: sha512-FZBoZu7VE5nR7Nilzy+Np8KuVIOxF4oXDPDknehCYBDE080EnlPu0afdZNmpGDBRCUBv3mj5qgqCRmk6W/K8vg==, + integrity: sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==, } + engines: { node: '>=6.0.0' } - jasmine@2.8.0: + document-register-element@1.14.10: resolution: { - integrity: sha512-KbdGQTf5jbZgltoHs31XGiChAPumMSY64OZMWLNYnEnMfG5uwGBhffePwuskexjT+/Jea/gU3qAU8344hNohSw==, + integrity: sha512-w5UA37hEIrs+9pruo2yR5UD13c4UHDlkqqjt4qurnp7QsBI9b1IOi8WXUim+aCqKBsENX3Z/cso7XMOuwJH1Yw==, } - hasBin: true + deprecated: V0 is gone and the best V1 polyfill is now @ungap/custom-elements - jasmine@3.99.0: + dom-converter@0.2.0: resolution: { - integrity: sha512-YIThBuHzaIIcjxeuLmPD40SjxkEcc8i//sGMDKCgkRMVgIwRJf5qyExtlJpQeh7pkeoBSOe6lQEdg+/9uKg9mw==, + integrity: sha512-gd3ypIPfOMr9h5jIKq8E3sHOTCjeirnl0WK5ZdS1AW0Odt0b1PaWaHdJ4Qk4klv+YB9aJBS7mESXjFoDQPu6DA==, } - hasBin: true - jasminewd2@2.2.0: + dom-serializer@1.4.1: resolution: { - integrity: sha512-Rn0nZe4rfDhzA63Al3ZGh0E+JTmM6ESZYXJGKuqKGZObsAB9fwXPD03GjtIEvJBDOhN94T5MzbwZSqzFHSQPzg==, + integrity: sha512-VHwB3KfrcOOkelEG2ZOfxqLZdfkil8PtJi4P8N2MMXucZq2yLp75ClViUlOVwyoHEDjYU433Aq+5zWP61+RGag==, } - engines: { node: '>= 6.9.x' } - javascript-stringify@2.1.0: + domelementtype@2.3.0: resolution: { - integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==, + integrity: sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==, } - jest-changed-files@27.5.1: + domexception@2.0.1: resolution: { - integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==, + integrity: sha512-yxJ2mFy/sibVQlu5qHjOkf9J3K6zgmCxgJ94u2EdvDOV09H+32LtRswEcUsmUWN72pVLOEnTSRaIVVzVQgS0dg==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + engines: { node: '>=8' } + deprecated: Use your platform's native DOMException instead - jest-circus@27.5.1: + domexception@4.0.0: resolution: { - integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==, + integrity: sha512-A2is4PLG+eeSfoTMA95/s4pvAoSo2mKtiM5jlHkAVewmiO8ISFTFKZjH7UAM1Atli/OT/7JHOrJRJiMKUZKYBw==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + engines: { node: '>=12' } + deprecated: Use your platform's native DOMException instead - jest-cli@27.5.1: + domhandler@4.3.1: resolution: { - integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==, + integrity: sha512-GrwoxYN+uWlzO8uhUXRl0P+kHE4GtVPfYzVLcUxPL7KNdHKj66vvlhiweIHqYYXWlw+T8iLMp42Lm67ghw4WMQ==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true + engines: { node: '>= 4' } - jest-config@27.5.1: + domutils@2.8.0: resolution: { - integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==, + integrity: sha512-w96Cjofp72M5IIhpjgobBimYEfoPjx1Vx0BSX9P30WBdZW2WIKU0T1Bd0kz2eNZ9ikjKgHbEyKx8BB6H1L3h3A==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - peerDependencies: - ts-node: '>=9.0.0' - peerDependenciesMeta: - ts-node: - optional: true - jest-diff@27.5.1: + dot-case@3.0.4: resolution: { - integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==, + integrity: sha512-Kv5nKlh6yRrdrGvxeJ2e5y2eRUpkUosIW4A2AS38zwSz27zu7ufDwQPi5Jhs3XAlGNetl3bmnGhQsMtkKJnj3w==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - jest-docblock@27.5.1: + dot-prop@5.3.0: resolution: { - integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==, + integrity: sha512-QM8q3zDe58hqUqjraQOmzZ1LIH9SWQJTlEKCH4kJ2oQvLZk7RbQXvtDM2XEq3fwkV9CCvvH4LA0AV+ogFsBM2Q==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + engines: { node: '>=8' } - jest-each@27.5.1: + dot-prop@6.0.1: resolution: { - integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==, + integrity: sha512-tE7ztYzXHIeyvc7N+hR3oi7FIbf/NIjVP9hmAt3yMXzrQ072/fpjGLx2GxNxGxUl5V73MEqYzioOMoVhGMJ5cA==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + engines: { node: '>=10' } - jest-environment-jsdom@27.5.1: + dotenv-expand@5.1.0: resolution: { - integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==, + integrity: sha512-YXQl1DSa4/PQyRfgrv6aoNjhasp/p4qs9FjJ4q4cQk+8m4r6k4ZSiEyytKG8f8W9gi8WsQtIObNmKd+tMzNTmA==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - jest-environment-node@27.5.1: + dotenv@10.0.0: resolution: { - integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==, + integrity: sha512-rlBi9d8jpv9Sf1klPjNfFAuWDjKLwTIJJ/VxtoTwIR6hnZxcEOQCZg2oIL3MWBYw5GpUDKOEnND7LXTbIpQ03Q==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + engines: { node: '>=10' } - jest-get-type@27.5.1: + dunder-proto@1.0.1: resolution: { - integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==, + integrity: sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + engines: { node: '>= 0.4' } - jest-haste-map@27.5.1: + duplexer@0.1.2: resolution: { - integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==, + integrity: sha512-jtD6YG370ZCIi/9GTaJKQxWTZD045+4R4hTk/x1UyoqadyJ9x9CgSi1RlVDQF8U2sxLLSnFkCaMihqljHIWgMg==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - jest-jasmine2@27.5.1: + duplexify@3.7.1: resolution: { - integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==, + integrity: sha512-07z8uv2wMyS51kKhD1KsdXJg5WQ6t93RneqRxUHnskXVtlYYkLqM0gqStQZ3pj073g687jPCHrqNfCzawLYh5g==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - jest-leak-detector@27.5.1: + eastasianwidth@0.2.0: resolution: { - integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==, + integrity: sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - jest-matcher-utils@27.5.1: + easy-stack@1.0.1: resolution: { - integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==, + integrity: sha512-wK2sCs4feiiJeFXn3zvY0p41mdU5VUgbgs1rNsc/y5ngFUijdWd+iIN8eoyuZHKB8xN6BL4PdWmzqFmxNg6V2w==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + engines: { node: '>=6.0.0' } - jest-message-util@27.5.1: + ecc-jsbn@0.1.2: resolution: { - integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==, + integrity: sha512-eh9O+hwRHNbG4BLTjEl3nw044CkGm5X6LoaCf7LPp7UU8Qrt47JYNi6nPX8xjW97TKGKm1ouctg0QSpZe9qrnw==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - jest-mock@27.5.1: + editorconfig@1.0.4: resolution: { - integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==, + integrity: sha512-L9Qe08KWTlqYMVvMcTIvMAdl1cDUubzRNYL+WfA4bLDMHe4nemKkpmYzkznE1FwLKu0EEmy6obgQKzMJrg4x9Q==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + engines: { node: '>=14' } + hasBin: true - jest-pnp-resolver@1.2.3: + ee-first@1.1.1: resolution: { - integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==, + integrity: sha512-WMwm9LhRUo+WUaRN+vRuETqG89IgZphVSNkdFgeb6sS/E4OrDIN7t48CAewSHXc6C8lefD8KKfr5vY61brQlow==, } - engines: { node: '>=6' } - peerDependencies: - jest-resolve: '*' - peerDependenciesMeta: - jest-resolve: - optional: true - jest-regex-util@27.5.1: + ejs@3.1.10: resolution: { - integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==, + integrity: sha512-UeJmFfOrAQS8OJWPZ4qtgHyWExa088/MtK5UEyoJGFH67cDEXkZSviOiKRCZ4Xij0zxI3JECgYs3oKx+AizQBA==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + engines: { node: '>=0.10.0' } + hasBin: true - jest-resolve-dependencies@27.5.1: + electron-to-chromium@1.5.260: resolution: { - integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==, + integrity: sha512-ov8rBoOBhVawpzdre+Cmz4FB+y66Eqrk6Gwqd8NGxuhv99GQ8XqMAr351KEkOt7gukXWDg6gJWEMKgL2RLMPtA==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - jest-resolve@27.5.1: + emittery@0.8.1: resolution: { - integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==, + integrity: sha512-uDfvUjVrfGJJhymx/kz6prltenw1u7WrCg1oa94zYY8xxVpLLUu045LAT0dhDZdXG58/EpPL/5kA180fQ/qudg==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + engines: { node: '>=10' } - jest-runner@27.5.1: + emittery@1.2.0: resolution: { - integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==, + integrity: sha512-KxdRyyFcS85pH3dnU8Y5yFUm2YJdaHwcBZWrfG8o89ZY9a13/f9itbN+YG3ELbBo9Pg5zvIozstmuV8bX13q6g==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + engines: { node: '>=14.16' } - jest-runtime@27.5.1: + emoji-regex@10.6.0: resolution: { - integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==, + integrity: sha512-toUI84YS5YmxW219erniWD0CIVOo46xGKColeNQRgOzDorgBi1v4D71/OFzgD9GO2UGKIv1C3Sp8DAn0+j5w7A==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - jest-serializer@27.5.1: + emoji-regex@7.0.3: resolution: { - integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==, + integrity: sha512-CwBLREIQ7LvYFB0WyRvwhq5N5qPhc6PMjD6bYggFlI5YyDgl+0vxq5VHbMOFqLg7hfWzmu8T5Z1QofhmTIhItA==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - jest-snapshot@27.5.1: + emoji-regex@8.0.0: resolution: { - integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==, + integrity: sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - jest-util@27.5.1: + emoji-regex@9.2.2: resolution: { - integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==, + integrity: sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - jest-validate@27.5.1: + emojis-list@3.0.0: resolution: { - integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==, + integrity: sha512-/kyM18EfinwXZbno9FyUGeFh87KC8HRQBQGildHZbEuRyWFOmv1U10o9BBp8XVZDVNNuQKyIGIu5ZYAAXJ0V2Q==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + engines: { node: '>= 4' } - jest-watcher@27.5.1: + encodeurl@1.0.2: resolution: { - integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==, + integrity: sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + engines: { node: '>= 0.8' } - jest-worker@27.5.1: + encodeurl@2.0.0: resolution: { - integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==, + integrity: sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==, } - engines: { node: '>= 10.13.0' } + engines: { node: '>= 0.8' } - jest@27.5.1: + encoding@0.1.13: resolution: { - integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==, + integrity: sha512-ETBauow1T35Y/WZMkio9jiM0Z5xjHHmJ4XmjZOq1l/dXz3lr2sRn87nJy20RupqSh1F2m3HHPSp8ShIPQJrJ3A==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - hasBin: true - peerDependencies: - node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 - peerDependenciesMeta: - node-notifier: - optional: true - jiti@1.21.0: + end-of-stream@1.4.5: resolution: { - integrity: sha512-gFqAIbuKyyso/3G2qhiO2OM6shY6EPP/R0+mkDbyspxKazh8BXDC5FiFsUjlczgdNz/vfra0da2y+aHrusLG/Q==, + integrity: sha512-ooEGc6HP26xXq/N+GCGOT0JKCLDGrq2bQUZrQ7gyrJiZANJ/8YDTxTpQBXGMn+WbIQXNVpyWymm7KYVICQnyOg==, } - hasBin: true - jju@1.4.0: + enhanced-resolve@5.18.3: resolution: { - integrity: sha512-8wb9Yw966OSxApiCt0K3yNJL8pnNeIv+OEq2YMidz4FKP6nonSRoOXc80iXY4JaN2FC11B9qsNmDsm+ZOfMROA==, + integrity: sha512-d4lC8xfavMeBjzGr2vECC3fsGXziXZQyJxD868h2M/mBI3PwAuODxAkLkq5HYuvrPYcUtiLzsTo8U3PgX3Ocww==, } + engines: { node: '>=10.13.0' } - joi@17.13.1: + enquirer@2.3.6: resolution: { - integrity: sha512-vaBlIKCyo4FCUtCm7Eu4QZd/q02bWcxfUO6YSXAZOWF6gzcLBeba8kwotUdYJjDLW8Cz8RywsSOqiNJZW0mNvg==, + integrity: sha512-yjNnPr315/FjS4zIsUxYguYUPP2e1NK4d7E7ZOLiyYCcbFBiTMyID+2wvm2w6+pZ/odMA7cRkjhsPbltwBOrLg==, } + engines: { node: '>=8.6' } - js-beautify@1.15.1: + entities@2.2.0: resolution: { - integrity: sha512-ESjNzSlt/sWE8sciZH8kBF8BPlwXPwhR6pWKAw8bw4Bwj+iZcnKW6ONWUutJ7eObuBZQpiIb8S7OYspWrKt7rA==, + integrity: sha512-p92if5Nz619I0w+akJrLZH0MX0Pb5DX39XOwQTtXSdQQOaYH03S1uIQp4mhOZtAXrxq4ViO67YTiLBo2638o9A==, } - engines: { node: '>=14' } - hasBin: true - js-cleanup@1.2.0: + entities@4.5.0: resolution: { - integrity: sha512-JeDD0yiiSt80fXzAVa/crrS0JDPQljyBG/RpOtaSbyDq03VHa9szJWMaWOYU/bcTn412uMN2MxApXq8v79cUiQ==, + integrity: sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==, } - engines: { node: ^10.14.2 || >=12.0.0 } + engines: { node: '>=0.12' } - js-cookie@3.0.5: + entities@6.0.1: resolution: { - integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==, + integrity: sha512-aN97NXWF6AWBTahfVOIrB/NShkzi5H7F9r1s9mD3cDj4Ko5f2qhhVoYMibXF7GlLveb/D2ioWay8lxI97Ven3g==, } - engines: { node: '>=14' } + engines: { node: '>=0.12' } - js-message@1.0.7: + env-paths@2.2.1: resolution: { - integrity: sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==, + integrity: sha512-+h1lkLKhZMTYjog1VEpJNG7NZJWcuc2DDk/qsqSTRRCOXiLjeQ1d1/udrUGhqMxUgAlwKNZ0cf2uqan5GLuS2A==, } - engines: { node: '>=0.6.0' } + engines: { node: '>=6' } - js-string-escape@1.0.1: + envinfo@7.20.0: resolution: { - integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==, + integrity: sha512-+zUomDcLXsVkQ37vUqWBvQwLaLlj8eZPSi61llaEFAVBY5mhcXdaSw1pSJVl4yTYD5g/gEfpNl28YYk4IPvrrg==, } - engines: { node: '>= 0.8' } + engines: { node: '>=4' } + hasBin: true - js-tokens@4.0.0: + environment@1.1.0: resolution: { - integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, + integrity: sha512-xUtoPkMggbz0MPyPiIWr1Kp4aeWJjDZ6SMvURhimjdZgsRuDplF5/s9hcgGhyXMhs+6vpnuoiZ2kFiu3FMnS8Q==, } + engines: { node: '>=18' } - js-tokens@9.0.0: + err-code@2.0.3: resolution: { - integrity: sha512-WriZw1luRMlmV3LGJaR6QOJjWwgLUTf89OwT2lUOyjX2dJGBwgmIkbcz+7WFZjrZM635JOIR517++e/67CP9dQ==, + integrity: sha512-2bmlRpNKBxT/CRmPOlyISQpNj+qSeYvcym/uT0Jx2bMOlKLtSy1ZmLuVxSEKKyor/N5yhvp/ZiG1oE3DEYMSFA==, } - js-yaml@3.14.1: + errno@0.1.8: resolution: { - integrity: sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==, + integrity: sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==, } hasBin: true - js-yaml@4.0.0: + error-ex@1.3.4: resolution: { - integrity: sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==, + integrity: sha512-sqQamAnR14VgCr1A618A3sGrygcpK+HEbenA/HiEAkkUwcZIIB/tgWqHFxWgOyDh4nB4JCRimh79dR5Ywc9MDQ==, } - hasBin: true - js-yaml@4.1.0: + error-stack-parser@2.1.4: resolution: { - integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, + integrity: sha512-Sk5V6wVazPhq5MhpO+AUxJn5x7XSXGl1R93Vn7i+zS15KDVxQijejNCrz8340/2bgLBjR9GtEG8ZVKONDjcqGQ==, } - hasBin: true - jsbn@0.1.1: + es-abstract@1.24.0: resolution: { - integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==, + integrity: sha512-WSzPgsdLtTcQwm4CROfS5ju2Wa1QQcVeT37jFjYzdFz1r9ahadC8B8/a4qxJxM+09F18iumCdRmlr96ZYkQvEg==, } + engines: { node: '>= 0.4' } - jsbn@1.1.0: + es-define-property@1.0.1: resolution: { - integrity: sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==, + integrity: sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==, } + engines: { node: '>= 0.4' } - jsdom-global@3.0.2: + es-errors@1.3.0: resolution: { - integrity: sha512-t1KMcBkz/pT5JrvcJbpUR2u/w1kO9jXctaaGJ0vZDzwFnIvGWw9IDSRciT83kIs8Bnw4qpOl8bQK08V01YgMPg==, + integrity: sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==, } - peerDependencies: - jsdom: '>=10.0.0' + engines: { node: '>= 0.4' } - jsdom@16.7.0: + es-module-lexer@1.7.0: resolution: { - integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==, + integrity: sha512-jEQoCwk8hyb2AZziIOLhDqpm5+2ww5uIE6lkO/6jcOCusfk6LhMHpXXfBLXTZ7Ydyt0j4VoUQv6uGNYbdW+kBA==, } - engines: { node: '>=10' } - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true - jsdom@18.1.1: + es-object-atoms@1.1.1: resolution: { - integrity: sha512-NmJQbjQ/gpS/1at/ce3nCx89HbXL/f5OcenBe8wU1Eik0ROhyUc3LtmG3567dEHAGXkN8rmILW/qtCOPxPHQJw==, + integrity: sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==, } - engines: { node: '>=12' } - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true + engines: { node: '>= 0.4' } - jsdom@22.1.0: + es-set-tostringtag@2.1.0: resolution: { - integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==, + integrity: sha512-j6vWzfrGVfyXxge+O0x5sh6cvxAog0a/4Rdd2K36zCMV5eJ+/+tOAngRO8cODMNWbVRdVlmGZQL2YS3yR8bIUA==, } - engines: { node: '>=16' } - peerDependencies: - canvas: ^2.5.0 - peerDependenciesMeta: - canvas: - optional: true + engines: { node: '>= 0.4' } - jsdom@24.1.1: + es-shim-unscopables@1.1.0: resolution: { - integrity: sha512-5O1wWV99Jhq4DV7rCLIoZ/UIhyQeDR7wHVyZAHAshbrvZsLs+Xzz7gtwnlJTJDjleiTKh54F4dXrX70vJQTyJQ==, + integrity: sha512-d9T8ucsEhh8Bi1woXCf+TIKDIROLG5WCkxg8geBCbvk22kzwC5G2OnXVMO6FUsvQlgUUXQ2itephWDLqDzbeCw==, } - engines: { node: '>=18' } - peerDependencies: - canvas: ^2.11.2 - peerDependenciesMeta: - canvas: - optional: true + engines: { node: '>= 0.4' } - jsesc@0.5.0: + es-to-primitive@1.3.0: resolution: { - integrity: sha512-uZz5UnB7u4T9LvwmFqXii7pZSouaRPorGs5who1Ip7VO0wxanFvBL7GkM6dTHlgX+jhBApRetaWpnDabOeTcnA==, + integrity: sha512-w+5mJ3GuFL+NjVtJlvydShqE1eN3h3PbI7/5LAsYJP/2qtuMXjfL2LpHSRqo4b4eSF5K/DH1JXKUAHSB2UW50g==, } - hasBin: true + engines: { node: '>= 0.4' } - jsesc@2.5.2: + es6-error@4.1.1: resolution: { - integrity: sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==, + integrity: sha512-Um/+FxMr9CISWh0bi5Zv0iOD+4cFh5qLeks1qhAopKVAJw3drgKbKySikp7wGhDL0HPeaja0P5ULZrxLkniUVg==, } - engines: { node: '>=4' } - hasBin: true - jsesc@3.0.2: + escalade@3.2.0: resolution: { - integrity: sha512-xKqzzWXDttJuOcawBt4KnKHHIf5oQ/Cxax+0PWFG+DFDgHNAdi+TXECADI+RYiFUMmx8792xsMbbgXj4CwnP4g==, + integrity: sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==, } engines: { node: '>=6' } - hasBin: true - json-buffer@3.0.1: + escape-html@1.0.3: resolution: { - integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, + integrity: sha512-NiSupZ4OeuGwr68lGIeym/ksIZMJodUGOSCZ/FSnTxcrekbvqrgdUxlJOMpijaKZVjAJrWrGs/6Jy8OMuyj9ow==, } - json-parse-better-errors@1.0.2: + escape-string-regexp@1.0.5: resolution: { - integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==, + integrity: sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==, } + engines: { node: '>=0.8.0' } - json-parse-even-better-errors@2.3.1: + escape-string-regexp@2.0.0: resolution: { - integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, + integrity: sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==, } + engines: { node: '>=8' } - json-parse-even-better-errors@3.0.2: + escape-string-regexp@4.0.0: resolution: { - integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==, + integrity: sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>=10' } + + escape-string-regexp@5.0.0: + resolution: + { + integrity: sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==, + } + engines: { node: '>=12' } - json-refs@3.0.15: + escodegen@2.1.0: resolution: { - integrity: sha512-0vOQd9eLNBL18EGl5yYaO44GhixmImes2wiYn9Z3sag3QnehWrYWlB9AFtMxCL2Bj3fyxgDYkxGFEU/chlYssw==, + integrity: sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==, } - engines: { node: '>=0.8' } + engines: { node: '>=6.0' } hasBin: true - json-schema-traverse@0.4.1: + eslint-config-prettier@8.10.2: resolution: { - integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, + integrity: sha512-/IGJ6+Dka158JnP5n5YFMOszjDWrXggGz1LaK/guZq9vZTmniaKlHcsscvkAhn9y4U+BU3JuUdYvtAMcv30y4A==, } + hasBin: true + peerDependencies: + eslint: '>=7.0.0' - json-schema-traverse@1.0.0: + eslint-import-resolver-node@0.3.9: resolution: { - integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==, + integrity: sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==, } - json-schema@0.4.0: + eslint-module-utils@2.12.1: resolution: { - integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==, + integrity: sha512-L8jSWTze7K2mTg0vos/RuLRS5soomksDPoJLXIslC7c8Wmut3bx7CPpJijDcBZtxQ5lrbUdM+s0OlNbz0DCDNw==, } + engines: { node: '>=4' } + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: '*' + eslint-import-resolver-node: '*' + eslint-import-resolver-typescript: '*' + eslint-import-resolver-webpack: '*' + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true + eslint: + optional: true + eslint-import-resolver-node: + optional: true + eslint-import-resolver-typescript: + optional: true + eslint-import-resolver-webpack: + optional: true - json-stable-stringify-without-jsonify@1.0.1: + eslint-plugin-import@2.32.0: resolution: { - integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, + integrity: sha512-whOE1HFo/qJDyX4SnXzP4N6zOWn79WhnCUY/iDR0mPfQZO8wcYE4JClzI2oZrhBnnMUCBCHZhO6VQyoBU95mZA==, } + engines: { node: '>=4' } + peerDependencies: + '@typescript-eslint/parser': '*' + eslint: ^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8 || ^9 + peerDependenciesMeta: + '@typescript-eslint/parser': + optional: true - json-stringify-nice@1.1.4: + eslint-plugin-prettier-vue@4.2.0: resolution: { - integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==, + integrity: sha512-DA2oNRx+pZ6RM/EIHIPME4FQZifnkEROa55OWtTTUFGHpj53tcHomuxVP/kS/2MM+ul46GEK+jymK69STWDWoA==, } + engines: { node: '>=14' } - json-stringify-safe@5.0.1: + eslint-plugin-prettier@4.2.5: resolution: { - integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==, + integrity: sha512-9Ni+xgemM2IWLq6aXEpP2+V/V30GeA/46Ar629vcMqVPodFFWC9skHu/D1phvuqtS8bJCFnNf01/qcmqYEwNfg==, } + engines: { node: '>=12.0.0' } + peerDependencies: + eslint: '>=7.28.0' + eslint-config-prettier: '*' + prettier: '>=2.0.0' + peerDependenciesMeta: + eslint-config-prettier: + optional: true - json5@1.0.2: + eslint-plugin-vue@9.33.0: resolution: { - integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==, + integrity: sha512-174lJKuNsuDIlLpjeXc5E2Tss8P44uIimAfGD0b90k0NoirJqpG7stLuU9Vp/9ioTOrQdWVREc4mRd1BD+CvGw==, } - hasBin: true + engines: { node: ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: ^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 - json5@2.2.3: + eslint-scope@5.1.1: resolution: { - integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, + integrity: sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==, } - engines: { node: '>=6' } - hasBin: true + engines: { node: '>=8.0.0' } - jsonc-parser@3.2.0: + eslint-scope@7.2.2: resolution: { - integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==, + integrity: sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==, } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - jsonc-parser@3.2.1: + eslint-visitor-keys@3.4.3: resolution: { - integrity: sha512-AilxAyFOAcK5wA1+LeaySVBrHsGQvUFCDWXKpZjzaL0PqW+xfBOttn8GNtWKFWqneyMZj41MWF9Kl6iPWLwgOA==, + integrity: sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==, } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - jsonc-parser@3.3.1: + eslint@8.57.1: resolution: { - integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==, + integrity: sha512-ypowyDxpVSYpkXr9WPv2PAZCtNip1Mv5KTW0SCurXv/9iOpcrH9PaqUElksqEB6pChqHGDRCFTyrZlGhnLNGiA==, } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } + deprecated: This version is no longer supported. Please see https://eslint.org/version-support for other options. + hasBin: true - jsonfile@4.0.0: + espree@9.6.1: resolution: { - integrity: sha512-m6F1R3z8jjlf2imQHS2Qez5sjKWQzbuuhuJ/FKYFRZvPE3PuHcSMVZzfsLhGVOkfd20obL5SWEBew5ShlquNxg==, + integrity: sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==, } + engines: { node: ^12.22.0 || ^14.17.0 || >=16.0.0 } - jsonfile@6.1.0: + esprima@4.0.1: resolution: { - integrity: sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==, + integrity: sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==, } + engines: { node: '>=4' } + hasBin: true - jsonparse@1.3.1: + esquery@1.6.0: resolution: { - integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==, + integrity: sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==, } - engines: { '0': node >= 0.2.0 } + engines: { node: '>=0.10' } - jsprim@1.4.2: + esrecurse@4.3.0: resolution: { - integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==, + integrity: sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==, } - engines: { node: '>=0.6.0' } + engines: { node: '>=4.0' } - jsx-ast-utils@3.3.5: + estraverse@4.3.0: resolution: { - integrity: sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==, + integrity: sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==, } engines: { node: '>=4.0' } - jszip@3.10.1: + estraverse@5.3.0: resolution: { - integrity: sha512-xXDvecyTpGLrqFrvkrUSoxxfJI5AH7U8zxxtVclpsUtMCq4JQ290LY8AW5c7Ggnr/Y/oK+bQMbqK2qmtk3pN4g==, + integrity: sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==, } + engines: { node: '>=4.0' } - just-diff-apply@5.5.0: + estree-walker@0.6.1: resolution: { - integrity: sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==, + integrity: sha512-SqmZANLWS0mnatqbSfRP5g8OXZC12Fgg1IwNtLsyHDzJizORW4khDfjPqJZsemPWBB2uqykUah5YpQ6epsqC/w==, } - just-diff@6.0.2: + estree-walker@2.0.2: resolution: { - integrity: sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==, + integrity: sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==, } - karma-chrome-launcher@3.2.0: + esutils@2.0.3: resolution: { - integrity: sha512-rE9RkUPI7I9mAxByQWkGJFXfFD6lE4gC5nPuZdobf/QdTEJI6EU4yIay/cfU/xV4ZxlM5JiTv7zWYgA64NpS5Q==, + integrity: sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==, } + engines: { node: '>=0.10.0' } - karma-coverage@2.0.3: + etag@1.8.1: resolution: { - integrity: sha512-atDvLQqvPcLxhED0cmXYdsPMCQuh6Asa9FMZW1bhNqlVEhJoB9qyZ2BY1gu7D/rr5GLGb5QzYO4siQskxaWP/g==, + integrity: sha512-aIL5Fx7mawVa300al2BnEE4iNvo1qETxLrPI/o05L7z6go7fCw1J6EQmbK4FmJ2AS7kgVF/KEZWufBfdClMcPg==, } - engines: { node: '>=10.0.0' } + engines: { node: '>= 0.6' } - karma-jasmine-html-reporter@1.7.0: + event-pubsub@4.3.0: resolution: { - integrity: sha512-pzum1TL7j90DTE86eFt48/s12hqwQuiD+e5aXx2Dc9wDEn2LfGq6RoAxEZZjFiN0RDSCOnosEKRZWxbQ+iMpQQ==, + integrity: sha512-z7IyloorXvKbFx9Bpie2+vMJKKx1fH1EN5yiTfp8CiLOTptSYy1g8H4yDpGlEdshL1PBiFtBHepF2cNsqeEeFQ==, } - peerDependencies: - jasmine-core: '>=3.8' - karma: '>=0.9' - karma-jasmine: '>=1.1' + engines: { node: '>=4.0.0' } - karma-jasmine@2.0.1: + eventemitter3@4.0.7: resolution: { - integrity: sha512-iuC0hmr9b+SNn1DaUD2QEYtUxkS1J+bSJSn7ejdEexs7P8EYvA1CWkEdrDQ+8jVH3AgWlCNwjYsT1chjcNW9lA==, + integrity: sha512-8guHBZCwKnFhYdHr2ysuRWErTwhoN2X8XELRlrRwpmfeY2jjuUN4taQMsULKUVo1K4DvZl+0pgfyoysHxvmvEw==, } - engines: { node: '>= 6' } - peerDependencies: - karma: '*' - karma-source-map-support@1.4.0: + eventemitter3@5.0.1: resolution: { - integrity: sha512-RsBECncGO17KAoJCYXjv+ckIz+Ii9NCi+9enk+rq6XC81ezYkb4/RHE6CTXdA7IOJqoF3wcaLfVG0CPmE5ca6A==, + integrity: sha512-GWkBvjiSZK87ELrYOSESUYeVIc9mvLLf/nXalMOS5dYrgZq9o5OVkbZAVM06CVxYsCwH9BDZFPlQTlPA1j4ahA==, } - karma-sourcemap-loader@0.3.8: + events@3.3.0: resolution: { - integrity: sha512-zorxyAakYZuBcHRJE+vbrK2o2JXLFWK8VVjiT/6P+ltLBUGUvqTEkUiQ119MGdOrK7mrmxXHZF1/pfT6GgIZ6g==, + integrity: sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==, } + engines: { node: '>=0.8.x' } - karma-webpack@5.0.1: + execa@1.0.0: resolution: { - integrity: sha512-oo38O+P3W2mSPCSUrQdySSPv1LvPpXP+f+bBimNomS5sW+1V4SuhCuW8TfJzV+rDv921w2fDSDw0xJbPe6U+kQ==, + integrity: sha512-adbxcyWV46qiHyvSp50TKt05tB4tK3HcmF7/nxfAdhnox83seTDbwnaqKO4sXRy7roHAIFqJP/Rw/AuEbX61LA==, } - engines: { node: '>= 18' } - peerDependencies: - webpack: ^5.0.0 + engines: { node: '>=6' } - karma@6.4.3: + execa@5.0.0: resolution: { - integrity: sha512-LuucC/RE92tJ8mlCwqEoRWXP38UMAqpnq98vktmS9SznSoUPPUJQbc91dHcxcunROvfQjdORVA/YFviH+Xci9Q==, + integrity: sha512-ov6w/2LCiuyO4RLYGdpFGjkcs0wMTgGE8PrkTHikeUy5iJekXyPIKUjifk5CsE0pt7sMCrMZ3YNqoCj6idQOnQ==, } - engines: { node: '>= 10' } - hasBin: true + engines: { node: '>=10' } - keyv@4.5.4: + execa@5.1.1: resolution: { - integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, + integrity: sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==, } + engines: { node: '>=10' } - kind-of@6.0.3: + exit@0.1.2: resolution: { - integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==, + integrity: sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==, } - engines: { node: '>=0.10.0' } + engines: { node: '>= 0.8.0' } - kleur@3.0.3: + expect@27.5.1: resolution: { - integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==, + integrity: sha512-E1q5hSUG2AmYQwQJ041nvgpkODHQvB+RKlB4IYdru6uJsyFTRyZAP463M+1lINorwbqAmUggi6+WwkD8lCS/Dw==, } - engines: { node: '>=6' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - klona@2.0.6: + exponential-backoff@3.1.3: resolution: { - integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==, + integrity: sha512-ZgEeZXj30q+I0EN+CbSSpIyPaJ5HVQD18Z1m+u1FXbAeT94mr1zw50q4q6jiiC447Nl/YTcIYSAftiGqetwXCA==, } - engines: { node: '>= 8' } - kolorist@1.8.0: + express@4.21.2: resolution: { - integrity: sha512-Y+60/zizpJ3HRH8DCss+q95yr6145JXZo46OTpFvDZWLfRCE4qChOyk1b26nMaNpfHHgxagk9dXT5OP0Tfe+dQ==, + integrity: sha512-28HqgMZAmih1Czt9ny7qr6ek2qddF4FclbMzwhCREB6OFfH+rXAnuNCwo1/wFvrtbgsQDb4kSbX9de9lFbrXnA==, } + engines: { node: '>= 0.10.0' } - launch-editor-middleware@2.6.1: + extend@3.0.2: resolution: { - integrity: sha512-Fg/xYhf7ARmRp40n18wIfJyuAMEjXo67Yull7uF7d0OJ3qA4EYJISt1XfPPn69IIJ5jKgQwzcg6DqHYo95LL/g==, + integrity: sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==, } - launch-editor@2.6.1: + external-editor@3.1.0: resolution: { - integrity: sha512-eB/uXmFVpY4zezmGp5XtU21kwo7GBbKB+EQ+UZeWtGb9yAM5xt/Evk+lYH3eRNAtId+ej4u7TYPFZ07w4s7rRw==, + integrity: sha512-hMQ4CX1p1izmuLYyZqLMO/qGNw10wSv9QDCPfzXfyFrOaCSSoRfqE1Kf1s5an66J5JZC62NewG+mK49jOCtQew==, } + engines: { node: '>=4' } - lazystream@1.0.1: + extract-from-css@0.4.4: resolution: { - integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==, + integrity: sha512-41qWGBdtKp9U7sgBxAQ7vonYqSXzgW/SiAYzq4tdWSVhAShvpVCH1nyvPQgjse6EdgbW7Y7ERdT3674/lKr65A==, } - engines: { node: '>= 0.6.3' } + engines: { node: '>=0.10.0', npm: '>=2.0.0' } - lcov-parse@1.0.0: + extsprintf@1.3.0: resolution: { - integrity: sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==, + integrity: sha512-11Ndz7Nv+mvAC1j0ktTa7fAb0vLyGGX+rMHNBYQviQDGU0Hw7lhctJANqbPhu9nV9/izT/IntTgZ7Im/9LJs9g==, } - hasBin: true + engines: { '0': node >=0.6.0 } - lcov-result-merger@3.3.0: + fast-deep-equal@3.1.3: resolution: { - integrity: sha512-Krg9p24jGaIT93RBMA8b5qLHDEiAXTavaTiEdMAZaJS93PsBKIcg/89cw/8rgeSfRuQX+I9x7h73SHFjCZ6cHg==, + integrity: sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==, } - engines: { node: '>=10' } - hasBin: true - lead@1.0.0: + fast-diff@1.3.0: resolution: { - integrity: sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==, + integrity: sha512-VxPP4NqbUjj6MaAOafWeUn2cXWLcCtljklUtZf0Ind4XQ+QPtmA0b18zZy0jIQx+ExRVCR/ZQpBmik5lXshNsw==, } - engines: { node: '>= 0.10' } - lerna@6.6.2: + fast-glob@3.2.7: resolution: { - integrity: sha512-W4qrGhcdutkRdHEaDf9eqp7u4JvI+1TwFy5woX6OI8WPe4PYBdxuILAsvhp614fUG41rKSGDKlOh+AWzdSidTg==, + integrity: sha512-rYGMRwip6lUMvYD3BTScMwT1HtAs2d71SMv66Vrxs0IekGZEjhM0pcMfjQPnknBt2zeCwQMEupiN02ZP4DiT1Q==, } - engines: { node: ^14.17.0 || >=16.0.0 } - hasBin: true + engines: { node: '>=8' } - less-loader@12.2.0: + fast-glob@3.3.3: resolution: { - integrity: sha512-MYUxjSQSBUQmowc0l5nPieOYwMzGPUaTzB6inNW/bdPEG9zOL3eAAD1Qw5ZxSPk7we5dMojHwNODYMV1hq4EVg==, + integrity: sha512-7MptL8U0cqcFdzIzwOTHoilX9x5BrNqye7Z/LuC7kCMRio1EMSyqRK3BEAUD7sXRq4iT4AzTVuZdhgQ2TCvYLg==, } - engines: { node: '>= 18.12.0' } - peerDependencies: - '@rspack/core': 0.x || 1.x - less: ^3.5.0 || ^4.0.0 - webpack: ^5.0.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true + engines: { node: '>=8.6.0' } - less@4.2.0: + fast-json-stable-stringify@2.1.0: resolution: { - integrity: sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==, + integrity: sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==, } - engines: { node: '>=6' } - hasBin: true - leven@3.1.0: + fast-levenshtein@2.0.6: resolution: { - integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, + integrity: sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==, } - engines: { node: '>=6' } - levn@0.4.1: + fast-uri@3.1.0: resolution: { - integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, + integrity: sha512-iPeeDKJSWf4IEOasVVrknXpaBV0IApz/gp7S2bb7Z4Lljbl2MGJRqInZiUrQwV16cpzw/D3S5j5Julj/gT52AA==, } - engines: { node: '>= 0.8.0' } - libnpmaccess@6.0.4: + fastq@1.19.1: resolution: { - integrity: sha512-qZ3wcfIyUoW0+qSFkMBovcTrSGJ3ZeyvpR7d5N9pEYv/kXs8sHP2wiqEIXBKLFrZlmM0kR0RJD7mtfLngtlLag==, + integrity: sha512-GwLTyxkCXjXbxqIhTsMI2Nui8huMPtnxg7krajPJAjnEG/iiOS7i+zCtWGZR9G0NBKbXKh6X9m9UIsYX/N6vvQ==, } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - libnpmpublish@7.1.4: + faye-websocket@0.11.4: resolution: { - integrity: sha512-mMntrhVwut5prP4rJ228eEbEyvIzLWhqFuY90j5QeXBCTT2pWSMno7Yo2S2qplPUr02zPurGH4heGLZ+wORczg==, + integrity: sha512-CzbClwlXAuiRQAlUyfqPgvPoNKTckTPGfwZV4ZdAhVcP2lh9KUxJg2b5GkE7XbjKQ3YJnQ9z6D9ntLAlB+tP8g==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>=0.8.0' } - license-webpack-plugin@4.0.2: + fb-watchman@2.0.2: resolution: { - integrity: sha512-771TFWFD70G1wLTC4oU2Cw4qvtmNrIw+wRvBtn+okgHl7slJVi7zfNcdmqDL72BojM30VNJ2UHylr1o77U37Jw==, + integrity: sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==, } - peerDependencies: - webpack: '*' - peerDependenciesMeta: - webpack: - optional: true - lie@3.3.0: + figures@2.0.0: resolution: { - integrity: sha512-UaiMJzeWRlEujzAuw5LokY1L5ecNQYZKfmyZ9L7wDHb/p5etKaxXhohBcrw0EYby+G/NA52vRSN4N39dxHAIwQ==, + integrity: sha512-Oa2M9atig69ZkfwiApY8F2Yy+tzMbazyvqv21R0NsSC8floSOC09BbT1ITWAdoMGQvJ/aZnR1KMwdx9tvHnTNA==, } + engines: { node: '>=4' } - lilconfig@2.1.0: + figures@3.2.0: resolution: { - integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==, + integrity: sha512-yaduQFRKLXYOGgEn6AZau90j3ggSOyiqXU0F9JZfeXYhNa+Jk4X+s45A2zg5jns87GAFa34BBm2kXw4XpNcbdg==, } - engines: { node: '>=10' } + engines: { node: '>=8' } - lines-and-columns@1.2.4: + figures@6.1.0: resolution: { - integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, + integrity: sha512-d+l3qxjSesT4V7v2fh+QnmFnUWv9lSpjarhShNTgBOfA0ttejbQUAlHLitbjkoRiDulW0OPoQPYIGhIC8ohejg==, } + engines: { node: '>=18' } - lines-and-columns@2.0.4: + file-entry-cache@6.0.1: resolution: { - integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==, + integrity: sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==, } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + engines: { node: ^10.12.0 || >=12.0.0 } - listr2@8.2.4: + file-uri-to-path@1.0.0: resolution: { - integrity: sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==, + integrity: sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==, } - engines: { node: '>=18.0.0' } - lmdb@3.0.13: + file-url@3.0.0: resolution: { - integrity: sha512-UGe+BbaSUQtAMZobTb4nHvFMrmvuAQKSeaqAX2meTEQjfsbpl5sxdHD8T72OnwD4GU9uwNhYXIVe4QGs8N9Zyw==, + integrity: sha512-g872QGsHexznxkIAdK8UiZRe7SkE6kvylShU4Nsj8NvfvZag7S0QuQ4IgvPDkk75HxgjIVDwycFTDAgIiO4nDA==, } - hasBin: true + engines: { node: '>=8' } - load-json-file@4.0.0: + filelist@1.0.4: resolution: { - integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==, + integrity: sha512-w1cEuf3S+DrLCQL7ET6kz+gmlJdbq9J7yXCSjK/OZCPA+qEN1WyF4ZAf0YYJa4/shHJra2t/d/r8SV4Ji+x+8Q==, } - engines: { node: '>=4' } - load-json-file@6.2.0: + fill-range@7.1.1: resolution: { - integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==, + integrity: sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==, } engines: { node: '>=8' } - load-json-file@7.0.1: + finalhandler@1.3.1: resolution: { - integrity: sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==, + integrity: sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==, } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + engines: { node: '>= 0.8' } - loader-runner@4.3.0: + find-cache-dir@3.3.2: resolution: { - integrity: sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==, + integrity: sha512-wXZV5emFEjrridIgED11OoUKLxiYjAcqot/NJdAkOhlJ+vGzwhOAfcG5OX1jP+S0PcjEn8bdMJv+g2jwQ3Onig==, } - engines: { node: '>=6.11.5' } + engines: { node: '>=8' } - loader-utils@1.4.2: + find-up-simple@1.0.1: resolution: { - integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==, + integrity: sha512-afd4O7zpqHeRyg4PfDQsXmlDe2PfdHtJt6Akt8jOWaApLOZk5JXs6VMR29lz03pRe9mpykrRCYIYxaJYcfpncQ==, } - engines: { node: '>=4.0.0' } + engines: { node: '>=18' } - loader-utils@2.0.4: + find-up@2.1.0: resolution: { - integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==, + integrity: sha512-NWzkk0jSJtTt08+FBFMvXoeZnOJD+jTtsRmBYbAIzJdX6l7dLgR7CTubCM5/eDdPUBvLCeVasP1brfVR/9/EZQ==, } - engines: { node: '>=8.9.0' } + engines: { node: '>=4' } - loader-utils@3.3.1: + find-up@3.0.0: resolution: { - integrity: sha512-FMJTLMXfCLMLfJxcX9PFqX5qD88Z5MRGaZCVzfuqeZSPsyiBzs+pahDQjbIWz2QIzPZz0NX9Zy4FX3lmK6YHIg==, + integrity: sha512-1yD6RmLI1XBfxugvORwlck6f75tYL+iR0jqwsOrOxMZyGYqUuDhJ0l4AXdO1iX/FTs9cBAMEk1gWSEx1kSbylg==, } - engines: { node: '>= 12.13.0' } + engines: { node: '>=6' } - local-pkg@0.5.0: + find-up@4.1.0: resolution: { - integrity: sha512-ok6z3qlYyCDS4ZEU27HaU6x/xZa9Whf8jD4ptH5UZTQYZVYeb9bnZ3ojVhiJNLiXK1Hfc0GNbLXcmZ5plLDDBg==, + integrity: sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==, } - engines: { node: '>=14' } + engines: { node: '>=8' } - locate-path@2.0.0: + find-up@5.0.0: resolution: { - integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==, + integrity: sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==, } - engines: { node: '>=4' } + engines: { node: '>=10' } - locate-path@3.0.0: + flat-cache@3.2.0: resolution: { - integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==, + integrity: sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==, } - engines: { node: '>=6' } + engines: { node: ^10.12.0 || >=12.0.0 } - locate-path@5.0.0: + flat@5.0.2: resolution: { - integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, + integrity: sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==, } - engines: { node: '>=8' } + hasBin: true - locate-path@6.0.0: + flatted@3.3.3: resolution: { - integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, + integrity: sha512-GX+ysw4PBCz0PzosHDepZGANEuFCMLrnRTiEy9McGjmkCQYwRq4A/X786G/fjM/+OjsWSU1ZrY5qyARZmO/uwg==, } - engines: { node: '>=10' } - locate-path@7.2.0: + flush-write-stream@1.1.1: resolution: { - integrity: sha512-gvVijfZvn7R+2qyPX8mAuKcFGDf6Nc61GdvGafQsHL0sBIxfKzA+usWn4GFC/bk+QdwPUD4kWFJLhElipq+0VA==, + integrity: sha512-3Z4XhFZ3992uIq0XOqb9AreonueSYphE6oYbpt5+3u06JWklbsPkNv3ZKkP9Bz/r+1MWCaMoSQ28P85+1Yc77w==, } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - lodash.camelcase@4.3.0: + follow-redirects@1.15.11: resolution: { - integrity: sha512-TwuEnCnxbc3rAvhf/LbG7tJUDzhqXyFnv3dtzLOPgCG/hODL7WFnsbwktkD7yUV0RrreP/l1PALq/YSg6VvjlA==, + integrity: sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==, } + engines: { node: '>=4.0' } + peerDependencies: + debug: '*' + peerDependenciesMeta: + debug: + optional: true - lodash.debounce@4.0.8: + for-each@0.3.5: resolution: { - integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==, + integrity: sha512-dKx12eRCVIzqCxFGplyFKJMPvLEWgmNtUrpTiJIR5u97zEhRG8ySrtboPHZXx7daLxQVrl643cTzbab2tkQjxg==, } + engines: { node: '>= 0.4' } - lodash.defaultsdeep@4.6.1: + foreground-child@2.0.0: resolution: { - integrity: sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==, + integrity: sha512-dCIq9FpEcyQyXKCkyzmlPTFNgrCzPudOe+mhvJU5zAtlBnGVy2yKxtfsxK2tQBThwq225jcvBjpw1Gr40uzZCA==, } + engines: { node: '>=8.0.0' } - lodash.escape@4.0.1: + foreground-child@3.3.1: resolution: { - integrity: sha512-nXEOnb/jK9g0DYMr1/Xvq6l5xMD7GDG55+GSYIYmS0G4tBk/hURD4JR9WCavs04t33WmJx9kCyp9vJ+mr4BOUw==, + integrity: sha512-gIXjKqtFuWEgzFRJA9WCQeSJLZDjgJUOMCMzxtvFq/37KojM1BFGufqsCy0r4qSQmYLsZYMeyRqzIWOMup03sw==, } + engines: { node: '>=14' } - lodash.flattendeep@4.4.0: + forever-agent@0.6.1: resolution: { - integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==, + integrity: sha512-j0KLYPhm6zeac4lz3oJ3o65qvgQCcPubiyotZrXqEaG4hNagNYO8qdlUrX5vwqv9ohqeT/Z3j6+yW067yWWdUw==, } - lodash.get@4.4.2: + fork-ts-checker-webpack-plugin@6.5.3: resolution: { - integrity: sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==, + integrity: sha512-SbH/l9ikmMWycd5puHJKTkZJKddF4iRLyW3DeZ08HTI7NGyLS38MXd/KGgeWumQO7YNQbW2u/NtPT2YowbPaGQ==, } + engines: { node: '>=10', yarn: '>=1.0.0' } + peerDependencies: + eslint: '>= 6' + typescript: '>= 2.7' + vue-template-compiler: '*' + webpack: '>= 4' + peerDependenciesMeta: + eslint: + optional: true + vue-template-compiler: + optional: true - lodash.isequal@4.5.0: + form-data@2.3.3: resolution: { - integrity: sha512-pDo3lu8Jhfjqls6GkMgpahsF9kCyayhgykjyLMNFTKWrpVdAQtYyB4muAMWozBB4ig/dtWAmsMxLEI8wuz+DYQ==, + integrity: sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==, } + engines: { node: '>= 0.12' } - lodash.ismatch@4.4.0: + form-data@3.0.4: resolution: { - integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==, + integrity: sha512-f0cRzm6dkyVYV3nPoooP8XlccPQukegwhAnpoLcXy+X+A8KfpGOoXwDr9FLZd3wzgLaBGQBE3lY93Zm/i1JvIQ==, } + engines: { node: '>= 6' } - lodash.isplainobject@4.0.6: + form-data@4.0.5: resolution: { - integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==, + integrity: sha512-8RipRLol37bNs2bhoV67fiTEvdTrbMUYcFTiy3+wuuOnUog2QBHCZWXDRijWQfAkhBj2Uf5UnVaiWwA5vdd82w==, } + engines: { node: '>= 6' } - lodash.kebabcase@4.1.1: + forwarded@0.2.0: resolution: { - integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==, + integrity: sha512-buRG0fpBtRHSTCOASe6hD258tEubFoRLb4ZNA6NxMVHNw2gOcwHo9wyablzMzOA5z9xA9L1KNjk/Nt6MT9aYow==, } + engines: { node: '>= 0.6' } - lodash.mapvalues@4.6.0: + fraction.js@5.3.4: resolution: { - integrity: sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==, + integrity: sha512-1X1NTtiJphryn/uLQz3whtY6jK3fTqoE3ohKs0tT+Ujr1W59oopxmoEh7Lu5p6vBaPbgoM0bzveAW4Qi5RyWDQ==, } - lodash.memoize@4.1.2: + fresh@0.5.2: resolution: { - integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==, + integrity: sha512-zJ2mQYM18rEFOudeV4GShTGIQ7RbzA7ozbU9I/XBpm7kqgMywgmylMwXHxZJmkVoYkna9d2pVXVXPdYTP9ej8Q==, } + engines: { node: '>= 0.6' } - lodash.merge@4.6.2: + fromentries@1.3.2: resolution: { - integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, + integrity: sha512-cHEpEQHUg0f8XdtZCc2ZAhrHzKzT0MrFUTcvx+hfxYu7rGMDc5SKoXFh+n4YigxsHXRzc6OrCshdR1bWH6HHyg==, } - lodash.sortedlastindex@4.1.0: + fs-constants@1.0.0: resolution: { - integrity: sha512-s8xEQdsp2Tu5zUqVdFSe9C0kR8YlnAJYLqMdkh+pIRBRxF6/apWseLdHl3/+jv2I61dhPwtI/Ff+EqvCpc+N8w==, + integrity: sha512-y6OAwoSIf7FyjMIv94u+b5rdheZEjzR63GTyZJm5qh4Bi+2YgwLCcI/fPFZkL5PSixOt6ZNKm+w+Hfp/Bciwow==, } - lodash.uniq@4.5.0: + fs-extra@10.1.0: resolution: { - integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==, + integrity: sha512-oRXApq54ETRj4eMiFzGnHWGy+zo5raudjuxN0b8H7s/RU2oW0Wvsx9O0ACRN/kRq9E8Vu/ReskGB5o3ji+FzHQ==, } + engines: { node: '>=12' } - lodash@4.17.21: + fs-extra@11.3.2: resolution: { - integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, + integrity: sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==, } + engines: { node: '>=14.14' } - log-driver@1.2.7: + fs-extra@9.1.0: resolution: { - integrity: sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==, + integrity: sha512-hcg3ZmepS30/7BSFqRvoo3DOMQu7IjqxO5nCDt+zM9XWjb33Wg7ziNT+Qvqbuc3+gWpzO02JubVyk2G4Zvo1OQ==, } - engines: { node: '>=0.8.6' } + engines: { node: '>=10' } - log-symbols@4.0.0: + fs-minipass@2.1.0: resolution: { - integrity: sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==, + integrity: sha512-V/JgOLFCS+R6Vcq0slCuaeWEdNC3ouDlJMNIsacH2VtALiu9mV4LPrHc5cDl8k5aw6J8jwgWWpiTo5RYhmIzvg==, } - engines: { node: '>=10' } + engines: { node: '>= 8' } - log-symbols@4.1.0: + fs-minipass@3.0.3: resolution: { - integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==, + integrity: sha512-XUBA9XClHbnJWSfBzjkm6RvPsyg3sryZt06BEQoXcF7EK/xpGaQYJgQKDJSUH5SGZ76Y7pFx1QBnXz09rU5Fbw==, } - engines: { node: '>=10' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - log-update@2.3.0: + fs-mkdirp-stream@1.0.0: resolution: { - integrity: sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==, + integrity: sha512-+vSd9frUnapVC2RZYfL3FCB2p3g4TBhaUmrsWlSudsGdnxIuUvBB2QM1VZeBtc49QFwrp+wQLrDs3+xxDgI5gQ==, } - engines: { node: '>=4' } + engines: { node: '>= 0.10' } - log-update@6.1.0: + fs-monkey@1.1.0: resolution: { - integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==, + integrity: sha512-QMUezzXWII9EV5aTFXW1UBVUO77wYPpjqIF8/AviUCThNeSYZykpoTixUeaNNBwmCev0AMDWMAni+f8Hxb1IFw==, } - engines: { node: '>=18' } - log4js@6.9.1: + fs.realpath@1.0.0: resolution: { - integrity: sha512-1somDdy9sChrr9/f4UlzhdaGfDR2c/SaD2a4T7qEkG4jTS57/B3qmnjLYePwQ8cqWnUHZI0iAKxMBpCZICiZ2g==, + integrity: sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==, } - engines: { node: '>=8.0' } - loose-envify@1.4.0: + fsevents@2.3.3: resolution: { - integrity: sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==, + integrity: sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==, } - hasBin: true + engines: { node: ^8.16.0 || ^10.6.0 || >=11.0.0 } + os: [darwin] - loupe@2.3.7: + function-bind@1.1.2: resolution: { - integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==, + integrity: sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==, } - lower-case@1.1.4: + function.prototype.name@1.1.8: resolution: { - integrity: sha512-2Fgx1Ycm599x+WGpIYwJOvsjmXFzTSc34IwDWALRA/8AopUKAVPwfJ+h5+f85BCp0PWmmJcWzEpxOpoXycMpdA==, + integrity: sha512-e5iwyodOHhbMr/yNrc7fDYG4qlbIvI5gajyzPnb5TCwyhjApznQh1BMFou9b30SevY43gCJKXycoCBjMbsuW0Q==, } + engines: { node: '>= 0.4' } - lower-case@2.0.2: + functions-have-names@1.2.3: resolution: { - integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==, + integrity: sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==, } - lru-cache@10.2.2: + gauge@4.0.4: resolution: { - integrity: sha512-9hp3Vp2/hFQUiIwKo8XCeFVnrg8Pk3TYNPIR7tJADKi5YfcF7vEaK7avFHTlSy3kOKYaJQaalfEo6YuXdceBOQ==, + integrity: sha512-f9m+BEN5jkg6a0fZjleidjN51VE1X+mPFQ2DJ0uv1V39oCLCbsGe6yjbBnp7eK7z/+GAon99a3nHuqbuuthyPg==, } - engines: { node: 14 || >=16.14 } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + deprecated: This package is no longer supported. - lru-cache@4.1.5: + gauge@5.0.2: resolution: { - integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==, + integrity: sha512-pMaFftXPtiGIHCJHdcUUx9Rby/rFT/Kkt3fIIGCs+9PMDIljSyRiqraTlxNtBReJRDfUefpa263RQ3vnp5G/LQ==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + deprecated: This package is no longer supported. - lru-cache@5.1.1: + generator-function@2.0.1: resolution: { - integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, + integrity: sha512-SFdFmIJi+ybC0vjlHN0ZGVGHc3lgE0DxPAT0djjVg+kjOnSqclqmj0KQ7ykTOLP6YxoqOvuAODGdcHJn+43q3g==, } + engines: { node: '>= 0.4' } - lru-cache@6.0.0: + gensync@1.0.0-beta.2: resolution: { - integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, + integrity: sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==, } - engines: { node: '>=10' } + engines: { node: '>=6.9.0' } - lru-cache@7.18.3: + get-caller-file@2.0.5: resolution: { - integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==, + integrity: sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==, } - engines: { node: '>=12' } + engines: { node: 6.* || 8.* || >= 10.* } - lunr@2.3.9: + get-east-asian-width@1.4.0: resolution: { - integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==, + integrity: sha512-QZjmEOC+IT1uk6Rx0sX22V6uHWVwbdbxf1faPqJ1QhLdGgsRGCZoyaQBm/piRdJy/D2um6hM1UP7ZEeQ4EkP+Q==, } + engines: { node: '>=18' } - magic-string@0.25.9: + get-func-name@2.0.2: resolution: { - integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==, + integrity: sha512-8vXOvuE167CtIc3OyItco7N/dpRtBbYOsPsXCz7X/PMnlGjYjSGuZJgM1Y7mmew7BKf9BqvLX2tnOVy1BBUsxQ==, } - magic-string@0.27.0: + get-intrinsic@1.3.0: resolution: { - integrity: sha512-8UnnX2PeRAPZuN12svgR9j7M1uWMovg/CEnIwIG0LFkXSJJe4PdfUGiTGl8V9bsBHFUtfVINcSyYxd7q+kx9fA==, + integrity: sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==, } - engines: { node: '>=12' } + engines: { node: '>= 0.4' } - magic-string@0.30.10: + get-package-type@0.1.0: resolution: { - integrity: sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==, + integrity: sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==, } + engines: { node: '>=8.0.0' } - magic-string@0.30.11: + get-pkg-repo@4.2.1: resolution: { - integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==, + integrity: sha512-2+QbHjFRfGB74v/pYWjd5OhU3TDIC2Gv/YKUTk/tCvAz0pkn/Mz6P3uByuBimLOcPvN2jYdScl3xGFSrx0jEcA==, } + engines: { node: '>=6.9.0' } + hasBin: true - magicast@0.3.4: + get-port@5.1.1: resolution: { - integrity: sha512-TyDF/Pn36bBji9rWKHlZe+PZb6Mx5V8IHCSxk7X4aljM4e/vyDvZZYwHewdVaqiA0nb3ghfHU/6AUpDxWoER2Q==, + integrity: sha512-g/Q1aTSDOxFpchXC4i8ZWvxA1lnPqx/JHqcpIw0/LX9T8x/GBbi6YnlN5nhaKIFkT8oFsscUKgDJYxfwfS6QsQ==, } + engines: { node: '>=8' } - make-dir@2.1.0: + get-proto@1.0.1: resolution: { - integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==, + integrity: sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==, } - engines: { node: '>=6' } + engines: { node: '>= 0.4' } - make-dir@3.1.0: + get-stream@4.1.0: resolution: { - integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==, + integrity: sha512-GMat4EJ5161kIy2HevLlr4luNjBgvmj413KaQA7jt4V8B4RDsfpHk7WQ9GVqfYyyx8OS/L66Kox+rJRNklLK7w==, } - engines: { node: '>=8' } + engines: { node: '>=6' } - make-dir@4.0.0: + get-stream@6.0.0: resolution: { - integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==, + integrity: sha512-A1B3Bh1UmL0bidM/YX2NsCOTnGJePL9rO/M+Mw3m9f2gUpfokS0hi5Eah0WSUEWZdZhIZtMjkIYS7mDfOqNHbg==, } engines: { node: '>=10' } - make-error@1.3.6: + get-stream@6.0.1: resolution: { - integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==, + integrity: sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==, } + engines: { node: '>=10' } - make-fetch-happen@10.2.1: + get-symbol-description@1.1.0: resolution: { - integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==, + integrity: sha512-w9UMqWwJxHNOvoNzSJ2oPF5wvYcvP7jUvYzhp67yEhTi17ZDBBC1z9pTdGuzjD+EFIqLSYRweZjqfiPzQ06Ebg==, } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + engines: { node: '>= 0.4' } - make-fetch-happen@11.1.1: + getpass@0.1.7: resolution: { - integrity: sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==, + integrity: sha512-0fzj9JxOLfJ+XGLhR8ze3unN0KZCgZwiSSDz168VERjK8Wl8kVSdcu2kspd4s4wtAa1y/qrVRiAA0WclVsu0ng==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - make-fetch-happen@13.0.1: + git-raw-commits@2.0.11: resolution: { - integrity: sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==, + integrity: sha512-VnctFhw+xfj8Va1xtfEqCUD2XDrbAPSJx+hSrE5K7fGdjZruW7XV+QOrN7LF/RJyvspRiD2I0asWsxFp0ya26A==, } - engines: { node: ^16.14.0 || >=18.0.0 } + engines: { node: '>=10' } + hasBin: true - makeerror@1.0.12: + git-remote-origin-url@2.0.0: resolution: { - integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==, + integrity: sha512-eU+GGrZgccNJcsDH5LkXR3PB9M958hxc7sbA8DFJjrv9j4L2P/eZfKhM+QD6wyzpiv+b1BpK0XrYCxkovtjSLw==, } + engines: { node: '>=4' } - map-obj@1.0.1: + git-semver-tags@4.1.1: resolution: { - integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==, + integrity: sha512-OWyMt5zBe7xFs8vglMmhM9lRQzCWL3WjHtxNNfJTMngGym7pC1kh8sP6jevfydJ6LP3ZvGxfb6ABYgPUM0mtsA==, } - engines: { node: '>=0.10.0' } + engines: { node: '>=10' } + hasBin: true - map-obj@4.3.0: + git-up@7.0.0: resolution: { - integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==, + integrity: sha512-ONdIrbBCFusq1Oy0sC71F5azx8bVkvtZtMJAsv+a6lz5YAmbNnLD6HAB4gptHZVLPR8S2/kVN6Gab7lryq5+lQ==, } - engines: { node: '>=8' } - marked@4.3.0: + git-url-parse@13.1.0: resolution: { - integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==, + integrity: sha512-5FvPJP/70WkIprlUZ33bm4UAaFdjcLkJLpWft1BeZKqwR0uhhNGoKwlUaPtVb4LxCSQ++erHapRak9kWGj+FCA==, } - engines: { node: '>= 12' } - hasBin: true - maska@2.1.11: + gitconfiglocal@1.0.0: resolution: { - integrity: sha512-IGqWjBnKxMYcVa06pb4mPfag9sJjnR2T15CdGfQ2llR3gajiSd4AxXCvNqHMEq9W3UBhjjTazgWumsP3sWrUSg==, + integrity: sha512-spLUXeTAVHxDtKsJc8FkFVgFtMdEN9qPGpL23VfSHx4fP4+Ds097IXLvymbnDH8FnmxX5Nr9bPw3A+AQ6mWEaQ==, } - matcher@5.0.0: + glob-parent@3.1.0: resolution: { - integrity: sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==, + integrity: sha512-E8Ak/2+dZY6fnzlR7+ueWvhsH1SjHr4jjss4YS/h4py44jY9MhK/VFdaZJAWDz6BbL21KeteKxFSFpq8OS5gVA==, } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - md5-hex@3.0.1: + glob-parent@5.1.2: resolution: { - integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==, + integrity: sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==, } - engines: { node: '>=8' } + engines: { node: '>= 6' } - md5.js@1.3.5: + glob-parent@6.0.2: resolution: { - integrity: sha512-xitP+WxNPcTTOgnTJcrhM0xvdPepipPSf3I8EIpGKeFLjt3PlJLIDG3u8EX53ZIubkb+5U2+3rELYpEhHhzdkg==, + integrity: sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==, } + engines: { node: '>=10.13.0' } - mdn-data@2.0.14: + glob-stream@6.1.0: resolution: { - integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==, + integrity: sha512-uMbLGAP3S2aDOHUDfdoYcdIePUCfysbAd0IAoWVZbeGU/oNQ8asHVSshLDJUPWxfzj8zsCG7/XeHPHTtow0nsw==, } + engines: { node: '>= 0.10' } - mdn-data@2.0.30: + glob-to-regexp@0.4.1: resolution: { - integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==, + integrity: sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==, } - media-typer@0.3.0: + glob@10.5.0: resolution: { - integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==, + integrity: sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==, } - engines: { node: '>= 0.6' } + hasBin: true - memfs@3.5.3: + glob@7.1.4: resolution: { - integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==, + integrity: sha512-hkLPepehmnKk41pUGm3sYxoFs/umurYfYJCerbXEyFIWcAzvpipAgVkBqqT9RBKMGjnq6kMuyYwha6csxbiM1A==, } - engines: { node: '>= 4.0.0' } + deprecated: Glob versions prior to v9 are no longer supported - memfs@4.14.1: + glob@7.1.6: resolution: { - integrity: sha512-Fq5CMEth+2iprLJ5mNizRcWuiwRZYjNkUD0zKk224jZunE9CRacTRDK8QLALbMBlNX2y3nY6lKZbesCwDwacig==, + integrity: sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==, } - engines: { node: '>= 4.0.0' } + deprecated: Glob versions prior to v9 are no longer supported - memoize@10.0.0: + glob@7.2.3: resolution: { - integrity: sha512-H6cBLgsi6vMWOcCpvVCdFFnl3kerEXbrYh9q+lY6VXvQSmM6CkmV08VOwT+WE2tzIEqRPFfAq3fm4v/UIW6mSA==, + integrity: sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==, } - engines: { node: '>=18' } + deprecated: Glob versions prior to v9 are no longer supported - memory-fs@0.4.1: + glob@8.1.0: resolution: { - integrity: sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==, + integrity: sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==, } + engines: { node: '>=12' } + deprecated: Glob versions prior to v9 are no longer supported - memorystream@0.3.1: + glob@9.3.5: resolution: { - integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==, + integrity: sha512-e1LleDykUz2Iu+MTYdkSsuWX8lvAjAcs0Xef0lNIu0S2wOAzuTxCJtcd9S3cijlwYF18EsU3rzb8jPVobxDh9Q==, } - engines: { node: '>= 0.10.0' } + engines: { node: '>=16 || 14 >=14.17' } - meow@8.1.2: + globals@13.24.0: resolution: { - integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==, + integrity: sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==, } - engines: { node: '>=10' } + engines: { node: '>=8' } - merge-descriptors@1.0.1: + globalthis@1.0.4: resolution: { - integrity: sha512-cCi6g3/Zr1iqQi6ySbseM1Xvooa98N0w31jzUYrXPX2xqObmFGHJ0tQ5u74H3mVh7wLouTseZyYIq39g8cNp1w==, + integrity: sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==, } + engines: { node: '>= 0.4' } - merge-source-map@1.1.0: + globby@10.0.2: resolution: { - integrity: sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==, + integrity: sha512-7dUi7RvCoT/xast/o/dLN53oqND4yk0nsHkhRgn9w65C4PofCLOoJ39iSOg+qVDdWQPIEj+eszMHQ+aLVwwQSg==, } + engines: { node: '>=8' } - merge-stream@2.0.0: + globby@11.1.0: resolution: { - integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, + integrity: sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==, } + engines: { node: '>=10' } - merge2@1.4.1: + globby@14.1.0: resolution: { - integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, + integrity: sha512-0Ia46fDOaT7k4og1PDW4YbodWWr3scS2vAr2lTbsplOt2WkKp0vQbkI9wKis/T5LV/dqPjO3bpS/z6GTJB82LA==, } - engines: { node: '>= 8' } + engines: { node: '>=18' } - methods@1.1.2: + gopd@1.2.0: resolution: { - integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==, + integrity: sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==, } - engines: { node: '>= 0.6' } + engines: { node: '>= 0.4' } - micromatch@4.0.7: + graceful-fs@4.2.10: resolution: { - integrity: sha512-LPP/3KorzCwBxfeUuZmaR6bG2kdeHSbe0P2tY3FLRU4vYrjYz5hI4QZwV0njUx3jeuKe67YukQ1LSPZBKDqO/Q==, + integrity: sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==, } - engines: { node: '>=8.6' } - micromatch@4.0.8: + graceful-fs@4.2.11: resolution: { - integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==, + integrity: sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==, } - engines: { node: '>=8.6' } - miller-rabin@4.0.1: + graphemer@1.4.0: resolution: { - integrity: sha512-115fLhvZVqWwHPbClyntxEVfVDfl9DLLTuJvq3g2O/Oxi8AiNouAHvDSzHS0viUJc+V5vm3eq91Xwqn9dp4jRA==, + integrity: sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==, } - hasBin: true - mime-db@1.52.0: + growl@1.10.5: resolution: { - integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, + integrity: sha512-qBr4OuELkhPenW6goKVXiv47US3clb3/IbuWF9KNKEijAy9oeHxU9IgzjvJhHkUzhaj7rOUD7+YGWqUjLp5oSA==, } - engines: { node: '>= 0.6' } + engines: { node: '>=4.x' } - mime-types@2.1.35: + gzip-size@6.0.0: resolution: { - integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, + integrity: sha512-ax7ZYomf6jqPTQ4+XCpUGyXKHk5WweS+e05MBO4/y3WJ5RkmPXNKvX+bx1behVILVwr6JSQvZAku021CHPXG3Q==, } - engines: { node: '>= 0.6' } + engines: { node: '>=10' } - mime@1.6.0: + handle-thing@2.0.1: resolution: { - integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, + integrity: sha512-9Qn4yBxelxoh2Ow62nP+Ka/kMnOXRi8BXnRaUwezLNhqelnN49xKz4F/dPP8OYLxLxq6JDtZb2i9XznUQbNPTg==, } - engines: { node: '>=4' } - hasBin: true - mime@2.6.0: + handlebars@4.7.8: resolution: { - integrity: sha512-USPkMeET31rOMiarsBNIHZKLGgvKc/LrjofAnBlOttf5ajRvqiRA8QsenbcooctK6d6Ts6aqZXBA+XbkKthiQg==, + integrity: sha512-vafaFqs8MZkRrSX7sFVUdo3ap/eNiLnb4IakshzvP56X5Nr1iGKAIqdX6tMlm6HcNRIkr6AxO5jFEoJzzpT8aQ==, } - engines: { node: '>=4.0.0' } + engines: { node: '>=0.4.7' } hasBin: true - mimic-fn@1.2.0: + har-schema@2.0.0: resolution: { - integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==, + integrity: sha512-Oqluz6zhGX8cyRaTQlFMPw80bSJVG2x/cFb8ZPhUILGgHka9SsokCCOQgpveePerqidZOrT14ipqfJb7ILcW5Q==, } engines: { node: '>=4' } - mimic-fn@2.1.0: + har-validator@5.1.5: resolution: { - integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, + integrity: sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==, } engines: { node: '>=6' } + deprecated: this library is no longer supported - mimic-fn@4.0.0: + hard-rejection@2.1.0: resolution: { - integrity: sha512-vqiC06CuhBTUdZH+RYl8sFrL096vA45Ok5ISO6sE/Mr1jRbGH4Csnhi8f3wKVl7x8mO4Au7Ir9D3Oyv1VYMFJw==, + integrity: sha512-VIZB+ibDhx7ObhAe7OVtoEbuP4h/MuOTHJ+J8h/eBXotJYl0fBgR72xDFCKgIh22OJZIOVNxBMWuhAr10r8HdA==, } - engines: { node: '>=12' } + engines: { node: '>=6' } - mimic-function@5.0.1: + has-bigints@1.1.0: resolution: { - integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==, + integrity: sha512-R3pbpkcIqv2Pm3dUwgjclDRVmWpTJW2DcMzcIhEXEx1oh/CEMObMm3KLmRJOdvhM7o4uQBnwr8pzRK2sJWIqfg==, } - engines: { node: '>=18' } + engines: { node: '>= 0.4' } - min-indent@1.0.1: + has-flag@3.0.0: resolution: { - integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==, + integrity: sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==, } engines: { node: '>=4' } - mini-css-extract-plugin@2.9.0: + has-flag@4.0.0: resolution: { - integrity: sha512-Zs1YsZVfemekSZG+44vBsYTLQORkPMwnlv+aehcxK/NLKC+EGhDB39/YePYYqx/sTk6NnYpuqikhSn7+JIevTA==, + integrity: sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==, } - engines: { node: '>= 12.13.0' } - peerDependencies: - webpack: ^5.0.0 + engines: { node: '>=8' } - minimalistic-assert@1.0.1: + has-property-descriptors@1.0.2: resolution: { - integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==, + integrity: sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==, } - minimalistic-crypto-utils@1.0.1: + has-proto@1.2.0: resolution: { - integrity: sha512-JIYlbt6g8i5jKfJ3xz7rF0LXmv2TkDxBLUkiBeZ7bAx4GnnNMr8xFpGnOxn6GhTEHx3SjRrZEoU+j04prX1ktg==, + integrity: sha512-KIL7eQPfHQRC8+XluaIw7BHUwwqL19bQn4hzNgdr+1wXoU0KKj6rufu47lhY7KbJR2C6T6+PfyN0Ea7wkSS+qQ==, } + engines: { node: '>= 0.4' } - minimatch@3.0.4: + has-symbols@1.1.0: resolution: { - integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==, + integrity: sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==, } + engines: { node: '>= 0.4' } - minimatch@3.0.5: + has-tostringtag@1.0.2: resolution: { - integrity: sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==, + integrity: sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==, } + engines: { node: '>= 0.4' } - minimatch@3.1.2: + has-unicode@2.0.1: resolution: { - integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, + integrity: sha512-8Rf9Y83NBReMnx0gFzA8JImQACstCYWUplepDa9xprwwtmgEZUF0h/i5xSA625zB/I37EtrswSST6OXxwaaIJQ==, } - minimatch@5.1.6: + hash-sum@1.0.2: resolution: { - integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==, + integrity: sha512-fUs4B4L+mlt8/XAtSOGMUO1TXmAelItBPtJG7CyHJfYTdDjwisntGO2JQz7oUsatOY9o68+57eziUVNw/mRHmA==, } - engines: { node: '>=10' } - minimatch@6.2.0: + hash-sum@2.0.0: resolution: { - integrity: sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==, + integrity: sha512-WdZTbAByD+pHfl/g9QSsBIIwy8IT+EsPiKDs0KNX+zSHhdDLFKdZu0BQHljvO+0QI/BasbMSUa8wYNCZTvhslg==, } - engines: { node: '>=10' } - minimatch@8.0.4: + hasha@5.2.2: resolution: { - integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==, + integrity: sha512-Hrp5vIK/xr5SkeN2onO32H0MgNZ0f17HRNH39WfL0SYUNOTZ5Lz1TJ8Pajo/87dYGEFlLMm7mIc/k/s6Bvz9HQ==, } - engines: { node: '>=16 || 14 >=14.17' } + engines: { node: '>=8' } - minimatch@9.0.1: + hasown@2.0.2: resolution: { - integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==, + integrity: sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==, } - engines: { node: '>=16 || 14 >=14.17' } + engines: { node: '>= 0.4' } - minimatch@9.0.4: + he@1.2.0: resolution: { - integrity: sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==, + integrity: sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==, } - engines: { node: '>=16 || 14 >=14.17' } + hasBin: true - minimist-options@4.1.0: + highlight.js@10.7.3: resolution: { - integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==, + integrity: sha512-tzcUFauisWKNHaRkN4Wjl/ZA07gENAjFl3J/c480dprkGTg5EQstgaNFqBfUqCq54kZRIEcreTsAgF/m2quD7A==, } - engines: { node: '>= 6' } - minimist@1.2.8: + hosted-git-info@2.8.9: resolution: { - integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, + integrity: sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==, } - minipass-collect@1.0.2: + hosted-git-info@3.0.8: resolution: { - integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==, + integrity: sha512-aXpmwoOhRBrw6X3j0h5RloK4x1OzsxMPyxqIHyNfSe2pypkVTZFpEiRoSipPEPlMrh0HW/XsjkJ5WgnCirpNUw==, } - engines: { node: '>= 8' } + engines: { node: '>=10' } - minipass-collect@2.0.1: + hosted-git-info@4.1.0: resolution: { - integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==, + integrity: sha512-kyCuEOWjJqZuDbRHzL8V93NzQhwIB71oFWSyzVo+KPZI+pnQPPxucdkrOZvkLRnrf5URsQM+IJ09Dw29cRALIA==, } - engines: { node: '>=16 || 14 >=14.17' } + engines: { node: '>=10' } - minipass-fetch@2.1.2: + hosted-git-info@5.2.1: resolution: { - integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==, + integrity: sha512-xIcQYMnhcx2Nr4JTjsFmwwnr9vldugPy9uVm0o87bjqqWMv9GaqsTeT+i99wTl0mk1uLxJtHxLb8kymqTENQsw==, } engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - minipass-fetch@3.0.5: + hosted-git-info@6.1.3: resolution: { - integrity: sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==, + integrity: sha512-HVJyzUrLIL1c0QmviVh5E8VGyUS7xCFPS6yydaVd1UegW+ibV/CohqTH9MkOLDp5o+rb82DMo77PTuc9F/8GKw==, } engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - minipass-flush@1.0.5: + hosted-git-info@7.0.2: resolution: { - integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==, + integrity: sha512-puUZAUKT5m8Zzvs72XWy3HtvVbTWljRE66cP60bxJzAqf2DgICo7lYTY2IHUmLnNpjYvw5bvmoHvPc0QO2a62w==, } - engines: { node: '>= 8' } + engines: { node: ^16.14.0 || >=18.0.0 } - minipass-json-stream@1.0.1: + hpack.js@2.1.6: resolution: { - integrity: sha512-ODqY18UZt/I8k+b7rl2AENgbWE8IDYam+undIJONvigAz8KR5GWblsFTEfQs0WODsjbSXWlm+JHEv8Gr6Tfdbg==, + integrity: sha512-zJxVehUdMGIKsRaNt7apO2Gqp0BdqW5yaiGHXXmbpvxgBYVZnAql+BJb4RO5ad2MgpbZKn5G6nMnegrH1FcNYQ==, } - minipass-pipeline@1.2.4: + html-encoding-sniffer@2.0.1: resolution: { - integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==, + integrity: sha512-D5JbOMBIR/TVZkubHT+OyT2705QvogUW4IBn6nHd756OwieSF9aDYFj4dv6HHEVGYbHaLETa3WggZYWWMyy3ZQ==, } - engines: { node: '>=8' } + engines: { node: '>=10' } - minipass-sized@1.0.3: + html-encoding-sniffer@3.0.0: resolution: { - integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==, + integrity: sha512-oWv4T4yJ52iKrufjnyZPkrN0CH3QnrUqdB6In1g5Fe1mia8GmF36gnfNySxoZtxD5+NmYw1EElVXiBk93UeskA==, } - engines: { node: '>=8' } + engines: { node: '>=12' } - minipass@3.3.6: + html-entities@2.6.0: resolution: { - integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==, + integrity: sha512-kig+rMn/QOVRvr7c86gQ8lWXq+Hkv6CbAH1hLu+RG338StTpE8Z0b44SDVaqVu7HGKf27frdmUYEs9hTUX/cLQ==, } - engines: { node: '>=8' } - minipass@4.2.8: + html-escaper@2.0.2: resolution: { - integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==, + integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==, } - engines: { node: '>=8' } - minipass@5.0.0: + html-minifier-terser@6.1.0: resolution: { - integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==, + integrity: sha512-YXxSlJBZTP7RS3tWnQw74ooKa6L9b9i9QYXY21eUEvhZ3u9XLfv6OnFsQq6RxkhHygsaUMvYsZRV5rU/OVNZxw==, } - engines: { node: '>=8' } + engines: { node: '>=12' } + hasBin: true - minipass@7.1.1: + html-tags@2.0.0: resolution: { - integrity: sha512-UZ7eQ+h8ywIRAW1hIEl2AqdwzJucU/Kp59+8kkZeSvafXhZjul247BvIJjEVFVeON6d7lM46XX1HXCduKAS8VA==, + integrity: sha512-+Il6N8cCo2wB/Vd3gqy/8TZhTD3QvcVeQLCnZiGkGCH3JP28IgGAY41giccp2W4R3jfyJPAP318FQTa1yU7K7g==, } - engines: { node: '>=16 || 14 >=14.17' } + engines: { node: '>=4' } - minizlib@2.1.2: + html-webpack-plugin@5.6.5: resolution: { - integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==, + integrity: sha512-4xynFbKNNk+WlzXeQQ+6YYsH2g7mpfPszQZUi3ovKlj+pDmngQ7vRXjrrmGROabmKwyQkcgcX5hqfOwHbFmK5g==, } - engines: { node: '>= 8' } + engines: { node: '>=10.13.0' } + peerDependencies: + '@rspack/core': 0.x || 1.x + webpack: ^5.20.0 + peerDependenciesMeta: + '@rspack/core': + optional: true + webpack: + optional: true - mississippi@3.0.0: + htmlparser2@6.1.0: resolution: { - integrity: sha512-x471SsVjUtBRtcvd4BzKE9kFC+/2TeWgKCgw0bZcw1b9l2X3QX5vCWgF+KaZaYm87Ss//rHnWryupDrgLvmSkA==, + integrity: sha512-gyyPk6rgonLFEDGoeRgQNaEUvdJ4ktTmmUh/h2t7s+M8oPpIPxgNACWa+6ESR57kXstwqPiCut0V8NRpcwgU7A==, } - engines: { node: '>=4.0.0' } - mkdirp-infer-owner@2.0.0: + http-cache-semantics@4.2.0: resolution: { - integrity: sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==, + integrity: sha512-dTxcvPXqPvXBQpq5dUr6mEMJX4oIEFv6bwom3FDwKRDsuIjjJGANqhBuoAn9c1RQJIdAKav33ED65E2ys+87QQ==, } - engines: { node: '>=10' } - mkdirp@0.5.6: + http-deceiver@1.2.7: resolution: { - integrity: sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==, + integrity: sha512-LmpOGxTfbpgtGVxJrj5k7asXHCgNZp5nLfp+hWc8QQRqtb7fUy6kRY3BO1h9ddF6yIPYUARgxGOwB42DnxIaNw==, } - hasBin: true - mkdirp@1.0.4: + http-errors@1.6.3: resolution: { - integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==, + integrity: sha512-lks+lVC8dgGyh97jxvxeYTWQFvh4uw4yC12gVl63Cg30sjPX4wuGcdkICVXDAESr6OJGjqGA8Iz5mkeN6zlD7A==, } - engines: { node: '>=10' } - hasBin: true + engines: { node: '>= 0.6' } - mlly@1.7.1: + http-errors@2.0.0: resolution: { - integrity: sha512-rrVRZRELyQzrIUAVMHxP97kv+G786pHmOKzuFII8zDYahFBS7qnHh2AlYSl1GAHhaMPCz6/oHjVMcfFYgFYHgA==, + integrity: sha512-FtwrG/euBzaEjYeRqOgly7G0qviiXoJWnvEH2Z1plBdXgbyjv34pHTSb9zoeHMyDy33+DWy5Wt9Wo+TURtOYSQ==, } + engines: { node: '>= 0.8' } - mocha@8.4.0: + http-parser-js@0.5.10: resolution: { - integrity: sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==, + integrity: sha512-Pysuw9XpUq5dVc/2SMHpuTY01RFl8fttgcyunjL7eEMhGM3cI4eOmiCycJDVCo/7O7ClfQD3SaI6ftDzqOXYMA==, } - engines: { node: '>= 10.12.0' } - hasBin: true - mochapack@2.1.4: + http-proxy-agent@4.0.1: resolution: { - integrity: sha512-qoZYT8ibht6z35e936P6Y/3nynFX843Jm+2l/pNWB3Sue63IHBfqZeAnF6Ypez85kUll7HtapMogfO2hGb2N2Q==, + integrity: sha512-k0zdNgqWTGA6aeIRVpvfVob4fL52dTfaehylg0Y4UvSySvOq/Y+BOyPrgpUrA7HylqvU8vIZGsRuXmspskV0Tg==, } - hasBin: true - peerDependencies: - mocha: '>=6' - webpack: ^4.0.0 || ^5.0.0 + engines: { node: '>= 6' } - modify-values@1.0.1: + http-proxy-agent@5.0.0: resolution: { - integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==, + integrity: sha512-n2hY8YdoRE1i7r6M0w9DIw5GgZN0G25P8zLCRQ8rjXtTU3vsNFBI/vWK/UIeE6g5MUUz6avwAPXmL6Fy9D/90w==, } - engines: { node: '>=0.10.0' } + engines: { node: '>= 6' } - module-alias@2.2.3: + http-proxy-agent@7.0.2: resolution: { - integrity: sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q==, + integrity: sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==, + } + engines: { node: '>= 14' } + + http-proxy-middleware@2.0.9: + resolution: + { + integrity: sha512-c1IyJYLYppU574+YI7R4QyX2ystMtVXZwIdzazUIPIJsHuWNd+mho2j+bKoHftndicGj9yh+xjd+l0yj7VeT1Q==, } + engines: { node: '>=12.0.0' } + peerDependencies: + '@types/express': ^4.17.13 + peerDependenciesMeta: + '@types/express': + optional: true - monaco-editor@0.49.0: + http-proxy@1.18.1: resolution: { - integrity: sha512-2I8/T3X/hLxB2oPHgqcNYUVdA/ZEFShT7IAujifIPMfKkNbLOqY8XCoyHCXrsdjb36dW9MwoTwBCFpXKMwNwaQ==, + integrity: sha512-7mz/721AbnJwIVbnaSv1Cz3Am0ZLT/UBwkC92VlxhXv/k/BBQfM2fXElQNC27BVGr0uwUpplYPQM9LnaBMR5NQ==, } + engines: { node: '>=8.0.0' } - moo@0.5.2: + http-signature@1.2.0: resolution: { - integrity: sha512-iSAJLHYKnX41mKcJKjqvnAN9sf0LMDTXDEvFv+ffuRR9a1MIuXLjMNL6EsnDHSkKLTWNqQQ5uo61P4EbU4NU+Q==, + integrity: sha512-CAbnr6Rz4CYQkLYUtSNXxQPUH2gK8f3iWexVlsnMeD+GjlsQ0Xsy1cOX+mN3dtxYomRy21CiOzU8Uhw6OwncEQ==, } + engines: { node: '>=0.8', npm: '>=1.3.7' } - move-concurrently@1.0.1: + https-proxy-agent@5.0.1: resolution: { - integrity: sha512-hdrFxZOycD/g6A6SoI2bB5NA/5NEqD0569+S47WZhPvm46sD50ZHdYaFmnua5lndde9rCHGjmfK7Z8BuCt/PcQ==, + integrity: sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==, } - deprecated: This package is no longer supported. + engines: { node: '>= 6' } - mrmime@2.0.0: + https-proxy-agent@7.0.6: resolution: { - integrity: sha512-eu38+hdgojoyq63s+yTpN4XMBdt5l8HhMhc4VKLO9KM5caLIBvUm4thi7fFaxyTmCKeNnXZ5pAlBwCUnhA09uw==, + integrity: sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==, } - engines: { node: '>=10' } + engines: { node: '>= 14' } - ms@2.0.0: + human-signals@2.1.0: resolution: { - integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==, + integrity: sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==, } + engines: { node: '>=10.17.0' } - ms@2.1.2: + humanize-ms@1.2.1: resolution: { - integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, + integrity: sha512-Fl70vYtsAFb/C06PTS9dZBo7ihau+Tu/DNCk/OyHhea07S+aeMWpFFkUaXRa8fI+ScZbEI8dfSxwY7gxZ9SAVQ==, } - ms@2.1.3: + iconv-lite@0.4.24: resolution: { - integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, + integrity: sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==, } + engines: { node: '>=0.10.0' } - msgpackr-extract@3.0.3: + iconv-lite@0.6.3: resolution: { - integrity: sha512-P0efT1C9jIdVRefqjzOQ9Xml57zpOXnIuS+csaB4MdZbTdmGDLo8XhzBG1N7aO11gKDDkJvBLULeFTo46wwreA==, + integrity: sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==, } - hasBin: true + engines: { node: '>=0.10.0' } - msgpackr@1.11.2: + iconv-lite@0.7.0: resolution: { - integrity: sha512-F9UngXRlPyWCDEASDpTf6c9uNhGPTqnTeLVt7bN+bU1eajoR/8V9ys2BRaV5C/e5ihE6sJ9uPIKaYt6bFuO32g==, + integrity: sha512-cf6L2Ds3h57VVmkZe+Pn+5APsT7FpqJtEhhieDCvrE2MK5Qk9MyffgQyuxQTm6BChfeZNtcOLHp9IcWRVcIcBQ==, } + engines: { node: '>=0.10.0' } - muggle-string@0.3.1: + icss-utils@4.1.1: resolution: { - integrity: sha512-ckmWDJjphvd/FvZawgygcUeQCxzvohjFO5RxTjj4eq8kw359gFF3E1brjfI+viLMxss5JrHTDRHZvu2/tuy0Qg==, + integrity: sha512-4aFq7wvWyMHKgxsH8QQtGpvbASCf+eM3wPRLI6R+MgAnTCZ6STYsRvttLvRWK0Nfif5piF394St3HeJDaljGPA==, } + engines: { node: '>= 6' } - muggle-string@0.4.1: + icss-utils@5.1.0: resolution: { - integrity: sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==, + integrity: sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==, } + engines: { node: ^10 || ^12 || >= 14 } + peerDependencies: + postcss: ^8.1.0 - multicast-dns@7.2.5: + ieee754@1.2.1: resolution: { - integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==, + integrity: sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==, } - hasBin: true - multimatch@5.0.0: + ignore-by-default@2.1.0: resolution: { - integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==, + integrity: sha512-yiWd4GVmJp0Q6ghmM2B/V3oZGRmjrKLXvHR3TE1nfoXsmoggllfZUQe74EN0fJdPFZu2NIvNdrMMLm3OsV7Ohw==, } - engines: { node: '>=10' } + engines: { node: '>=10 <11 || >=12 <13 || >=14' } - mute-stream@0.0.8: + ignore-walk@5.0.1: resolution: { - integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==, + integrity: sha512-yemi4pMf51WKT7khInJqAvsIGzoqYXblnsz0ql8tM+yi1EKYTY1evX4NAbJrLL/Aanr2HyZeluqU+Oi7MGHokw==, } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - mute-stream@1.0.0: + ignore-walk@6.0.5: resolution: { - integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==, + integrity: sha512-VuuG0wCnjhnylG1ABXT3dAuIpTNDs/G8jlpmwXY03fXoXy/8ZK8/T+hMzt8L4WnrLCJgdybqgPagnF/f97cg3A==, } engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - mz@2.7.0: + ignore@5.3.2: resolution: { - integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, + integrity: sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==, } + engines: { node: '>= 4' } - nan@2.19.0: + ignore@7.0.5: resolution: { - integrity: sha512-nO1xXxfh/RWNxfd/XPfbIfFk5vgLsAxUR9y5O0cHMJu/AW9U95JLXqthYHjEp+8gQ5p96K9jUp8nbVOxCdRbtw==, + integrity: sha512-Hs59xBNfUIunMFgWAbGX5cq6893IbWg4KnrjbYwX3tx0ztorVgTDA6B2sxf8ejHJ4wz8BqGUMYlnzNBer5NvGg==, } + engines: { node: '>= 4' } - nanoid@3.1.20: + import-fresh@3.3.1: resolution: { - integrity: sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==, + integrity: sha512-TR3KfrTZTYLPB6jUjfx6MF9WcWrHL9su5TObK4ZkYgBdWKPOFoSoQIdEuTuR82pmtxH2spWG9h6etwfr1pLBqQ==, } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } - hasBin: true + engines: { node: '>=6' } - nanoid@3.3.7: + import-local@3.2.0: resolution: { - integrity: sha512-eSRppjcPIatRIMC1U6UngP8XFcz8MQWGQdt1MTBQ7NaAmvXDfvNxbvWV3x2y6CdEUciCSsDHDQZbhYaB8QEo2g==, + integrity: sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==, } - engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + engines: { node: '>=8' } hasBin: true - native-promise-only@0.8.1: + imurmurhash@0.1.4: resolution: { - integrity: sha512-zkVhZUA3y8mbz652WrL5x0fB0ehrBkulWT3TomAQ9iDtyXZvzKeEA6GPxAItBYeNYl5yngKRX612qHOhvMkDeg==, + integrity: sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==, } + engines: { node: '>=0.8.19' } - natural-compare-lite@1.4.0: + indent-string@4.0.0: resolution: { - integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==, + integrity: sha512-EdDDZu4A2OyIK7Lr/2zG+w5jmbuk1DVBnEwREQvBzspBJkCEbRa8GxU1lghYcaGJCnRWibjDXlq779X1/y5xwg==, } + engines: { node: '>=8' } - natural-compare@1.4.0: + indent-string@5.0.0: resolution: { - integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, + integrity: sha512-m6FAo/spmsW2Ab2fU35JTYwtOKa2yAwXSwgjSv1TJzh4Mh7mC3lzAOVLBprb72XsTrgkEIsl7YrFNAiDiRhIGg==, } + engines: { node: '>=12' } - nearley@2.20.1: + infer-owner@1.0.4: resolution: { - integrity: sha512-+Mc8UaAebFzgV+KpI5n7DasuuQCHA89dmwm7JXw3TV43ukfNQ9DnBH3Mdb2g/I4Fdxc26pwimBWvjIw0UAILSQ==, + integrity: sha512-IClj+Xz94+d7irH5qRyfJonOdfTzuDaifE6ZPWfx0N0+/ATZCbuTPq2prFl526urkQd90WyUKIh1DfBQ2hMz9A==, } - hasBin: true - needle@3.3.1: + inflight@1.0.6: resolution: { - integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==, + integrity: sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==, } - engines: { node: '>= 4.4.x' } - hasBin: true + deprecated: This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful. - negotiator@0.6.3: + inherits@2.0.3: resolution: { - integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==, + integrity: sha512-x00IRNXNy63jwGkJmzPigoySHbaqpNuzKbBOmzK+g2OdZpQ9w+sxCN+VSB3ja7IAge2OP2qpfxTjeNcyjmW1uw==, } - engines: { node: '>= 0.6' } - neo-async@2.6.2: + inherits@2.0.4: resolution: { - integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==, + integrity: sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==, } - ng-packagr@18.2.1: + ini@1.3.8: resolution: { - integrity: sha512-dy9ZDpZb3QpAz+Y/m8VAu7ctr2VrnRU3gmQwJagnNybVJtCsKn3lZA3IW7Z7GTLoG5IALSPouiCgiB/C8ozv7w==, + integrity: sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew==, } - engines: { node: ^18.19.1 || >=20.11.1 } - hasBin: true - peerDependencies: - '@angular/compiler-cli': ^18.0.0 || ^18.2.0-next.0 - tailwindcss: ^2.0.0 || ^3.0.0 - tslib: ^2.3.0 - typescript: '>=5.4 <5.6' - peerDependenciesMeta: - tailwindcss: - optional: true - nice-napi@1.0.2: + ini@4.1.3: resolution: { - integrity: sha512-px/KnJAJZf5RuBGcfD+Sp2pAKq0ytz8j+1NehvgIGFkvtvFrDM3T8E4x/JJODXK9WZow8RRGrbA9QQ3hs+pDhA==, + integrity: sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==, } - os: ['!win32'] + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - nice-try@1.0.5: + init-package-json@3.0.2: resolution: { - integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==, + integrity: sha512-YhlQPEjNFqlGdzrBfDNRLhvoSgX7iQRgSxgsNknRQ9ITXFT7UMfVMWhBTOh2Y+25lRnGrv5Xz8yZwQ3ACR6T3A==, } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - no-case@2.3.2: + inquirer@8.2.4: resolution: { - integrity: sha512-rmTZ9kz+f3rCvK2TD1Ue/oZlns7OGoIWP4fc3llxxRXlOkHKoWPPWJOfFYpITabSow43QJbRIoHQXtt10VldyQ==, + integrity: sha512-nn4F01dxU8VeKfq192IjLsxu0/OmMZ4Lg3xKAns148rCaXP6ntAoEkVYZThWjwON8AlzdZZi6oqnhNbxUG9hVg==, } + engines: { node: '>=12.0.0' } - no-case@3.0.4: + inquirer@8.2.7: resolution: { - integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==, + integrity: sha512-UjOaSel/iddGZJ5xP/Eixh6dY1XghiBw4XK13rCCIJcJfyhhoul/7KhLLUGtebEj6GDYM6Vnx/mVsjx2L/mFIA==, } + engines: { node: '>=12.0.0' } - node-addon-api@3.2.1: + internal-slot@1.1.0: resolution: { - integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==, + integrity: sha512-4gd7VpWNQNB4UKKCFFVcp1AVv+FMOgs9NKzjHKusc8jTMhd5eL1NqQqOpE0KzMds804/yHlglp3uxgluOqAPLw==, } + engines: { node: '>= 0.4' } - node-addon-api@6.1.0: + interpret@1.4.0: resolution: { - integrity: sha512-+eawOlIgy680F0kBzPUNFhMZGtJ1YmqM6l4+Crf4IkImjYrO/mqPwRMh352g23uIaQKFItcQ64I7KMaJxHgAVA==, + integrity: sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==, } + engines: { node: '>= 0.10' } - node-fetch@2.6.7: + ip-address@10.1.0: resolution: { - integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==, + integrity: sha512-XXADHxXmvT9+CRxhXg56LJovE+bmWnEWB78LB83VZTprKTmaC5QfruXocxzTZ2Kl0DNwKuBdlIhjL8LeY8Sf8Q==, } - engines: { node: 4.x || >=6.0.0 } - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + engines: { node: '>= 12' } - node-fetch@2.7.0: + ipaddr.js@1.9.1: resolution: { - integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==, + integrity: sha512-0KI/607xoxSToH7GjN1FfSbLoU0+btTicjsQSWQlh/hZykN8KpmMf7uYwPW3R+akZ6R/w18ZlXSHBYXiYUPO3g==, } - engines: { node: 4.x || >=6.0.0 } - peerDependencies: - encoding: ^0.1.0 - peerDependenciesMeta: - encoding: - optional: true + engines: { node: '>= 0.10' } - node-forge@1.3.1: + ipaddr.js@2.2.0: resolution: { - integrity: sha512-dPEtOeMvF9VMcYV/1Wb8CPoVAXtp6MKMlcbAt4ddqmGqUJ6fQZFXkNZNkNlfevtNkGtaSoXf/vNNNSvgrdXwtA==, + integrity: sha512-Ag3wB2o37wslZS19hZqorUnrnzSkpOVy+IiiDEiTqNubEYpYuHWIf6K4psgN2ZWKExS4xhVCrRVfb/wfW8fWJA==, } - engines: { node: '>= 6.13.0' } + engines: { node: '>= 10' } - node-gyp-build-optional-packages@5.2.2: + irregular-plurals@3.5.0: resolution: { - integrity: sha512-s+w+rBWnpTMwSFbaE0UXsRlg7hU4FjekKU4eyAih5T8nJuNZT1nNsskXpxmeqSK9UzkBl6UgRlnKc8hz8IEqOw==, + integrity: sha512-1ANGLZ+Nkv1ptFb2pa8oG8Lem4krflKuX/gINiHJHjJUKaJHk/SXk5x6K3J+39/p0h1RQ2saROclJJ+QLvETCQ==, } - hasBin: true + engines: { node: '>=8' } - node-gyp-build@4.8.1: + is-absolute@1.0.0: resolution: { - integrity: sha512-OSs33Z9yWr148JZcbZd5WiAXhh/n9z8TxQcdMhIOlpN9AhWpLfvVFO73+m77bBABQMaY9XSvIa+qk0jlI7Gcaw==, + integrity: sha512-dOWoqflvcydARa360Gvv18DZ/gRuHKi2NU/wU5X1ZFzdYfH29nkiNZsF3mp4OJ3H4yo9Mx8A/uAGNzpzPN3yBA==, } - hasBin: true + engines: { node: '>=0.10.0' } - node-gyp@10.1.0: + is-array-buffer@3.0.5: resolution: { - integrity: sha512-B4J5M1cABxPc5PwfjhbV5hoy2DP9p8lFXASnEN6hugXOa61416tnTZ29x9sSwAd0o99XNIcpvDDy1swAExsVKA==, + integrity: sha512-DDfANUiiG2wC1qawP66qlTugJeL5HyzMpfr8lLK+jMQirGzNod0B12cFB/9q838Ru27sBwfw78/rdoU7RERz6A==, } - engines: { node: ^16.14.0 || >=18.0.0 } - hasBin: true + engines: { node: '>= 0.4' } - node-gyp@9.4.1: + is-arrayish@0.2.1: resolution: { - integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==, + integrity: sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==, } - engines: { node: ^12.13 || ^14.13 || >=16 } - hasBin: true - node-int64@0.4.0: + is-async-function@2.1.1: resolution: { - integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==, + integrity: sha512-9dgM/cZBnNvjzaMYHVoxxfPj2QXt22Ev7SuuPrs+xav0ukGB0S6d4ydZdEiM48kLx5kDV+QBPrpVnFyefL8kkQ==, } + engines: { node: '>= 0.4' } - node-notifier@8.0.2: + is-bigint@1.1.0: resolution: { - integrity: sha512-oJP/9NAdd9+x2Q+rfphB2RJCHjod70RcRLjosiPMMu5gjIfwVnOUGq2nbTjTUbmy0DJ/tFIVT30+Qe3nzl4TJg==, + integrity: sha512-n4ZT37wG78iz03xPRKJrHTdZbe3IicyucEtdRsV5yglwc3GyUfbAfpSeD0FJ41NbUNSt5wbhqfp1fS+BgnvDFQ==, } + engines: { node: '>= 0.4' } - node-preload@0.2.1: + is-binary-path@2.1.0: resolution: { - integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==, + integrity: sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==, } engines: { node: '>=8' } - node-releases@2.0.14: + is-boolean-object@1.2.2: resolution: { - integrity: sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==, + integrity: sha512-wa56o2/ElJMYqjCjGkXri7it5FbebW5usLw/nPmCMs5DeZ7eziSYZhSmPRn0txqeW4LnAmQQU7FgqLpsEFKM4A==, } + engines: { node: '>= 0.4' } - node-releases@2.0.18: + is-buffer@1.1.6: resolution: { - integrity: sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==, + integrity: sha512-NcdALwpXkTm5Zvvbk7owOUSvVvBKDgKP5/ewfXEznmQFfs4ZRmanOeKBTjRVjka3QFoN6XJ+9F3USqfHqTaU5w==, } - node-stdlib-browser@1.2.0: + is-callable@1.2.7: resolution: { - integrity: sha512-VSjFxUhRhkyed8AtLwSCkMrJRfQ3e2lGtG3sP6FEgaLKBBbxM/dLfjRe1+iLhjvyLFW3tBQ8+c0pcOtXGbAZJg==, + integrity: sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==, } - engines: { node: '>=10' } + engines: { node: '>= 0.4' } - nodent-runtime@3.2.1: + is-ci@2.0.0: resolution: { - integrity: sha512-7Ws63oC+215smeKJQCxzrK21VFVlCFBkwl0MOObt0HOpVQXs3u483sAmtkF33nNqZ5rSOQjB76fgyPBmAUrtCA==, + integrity: sha512-YfJT7rkpQB0updsdHLGWrvhBJfcfzNNawYDNIyQXJz0IViGf75O8EBPKSdvw2rF+LGCsX4FZ8tcr3b19LcZq4w==, } + hasBin: true - nofilter@3.1.0: + is-core-module@2.16.1: resolution: { - integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==, + integrity: sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==, } - engines: { node: '>=12.19' } + engines: { node: '>= 0.4' } - nopt@5.0.0: + is-data-view@1.0.2: resolution: { - integrity: sha512-Tbj67rffqceeLpcRXrT7vKAN8CwfPeIBgM7E6iBkmKLV7bEMwpGgYLGv0jACUsECaa/vuxP0IjEont6umdMgtQ==, + integrity: sha512-RKtWF8pGmS87i2D6gqQu/l7EYRlVdfzemCJN/P3UOs//x1QE7mfhvzHIApBTRf7axvT6DMGwSwBXYCT0nfB9xw==, } - engines: { node: '>=6' } - hasBin: true + engines: { node: '>= 0.4' } - nopt@6.0.0: + is-date-object@1.1.0: resolution: { - integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==, + integrity: sha512-PwwhEakHVKTdRNVOw+/Gyh0+MzlCl4R6qKvkhuvLtPMggI1WAHt9sOwZxQLSGpUaDnrdyDsomoRgNnCfKNSXXg==, } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - hasBin: true + engines: { node: '>= 0.4' } - nopt@7.2.1: + is-docker@2.2.1: resolution: { - integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==, + integrity: sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>=8' } hasBin: true - normalize-package-data@2.5.0: - resolution: - { - integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==, - } - - normalize-package-data@3.0.3: + is-extglob@2.1.1: resolution: { - integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==, + integrity: sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==, } - engines: { node: '>=10' } + engines: { node: '>=0.10.0' } - normalize-package-data@4.0.1: + is-file-esm@1.0.0: resolution: { - integrity: sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==, + integrity: sha512-rZlaNKb4Mr8WlRu2A9XdeoKgnO5aA53XdPHgCKVyCrQ/rWi89RET1+bq37Ru46obaQXeiX4vmFIm1vks41hoSA==, } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - normalize-package-data@5.0.0: + is-finalizationregistry@1.1.1: resolution: { - integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==, + integrity: sha512-1pC6N8qWJbWoPtEjgcL2xyhQOP491EQjeUo3qTKcmV8YSDDJrOepfG8pcC7h/QgnQHYSv0mJ3Z/ZWxmatVrysg==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>= 0.4' } - normalize-package-data@6.0.1: + is-fullwidth-code-point@2.0.0: resolution: { - integrity: sha512-6rvCfeRW+OEZagAB4lMLSNuTNYZWLVtKccK79VSTf//yTY5VOCgcpH80O+bZK8Neps7pUnd5G+QlMg1yV/2iZQ==, + integrity: sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==, } - engines: { node: ^16.14.0 || >=18.0.0 } + engines: { node: '>=4' } - normalize-path@2.1.1: + is-fullwidth-code-point@3.0.0: resolution: { - integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==, + integrity: sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==, } - engines: { node: '>=0.10.0' } + engines: { node: '>=8' } - normalize-path@3.0.0: + is-fullwidth-code-point@4.0.0: resolution: { - integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, + integrity: sha512-O4L094N2/dZ7xqVdrXhh9r1KODPJpFms8B5sGdJLPy664AgvXsreZUyCQQNItZRDlYug4xStLjNp/sz3HvBowQ==, } - engines: { node: '>=0.10.0' } + engines: { node: '>=12' } - normalize-range@0.1.2: + is-fullwidth-code-point@5.1.0: resolution: { - integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==, + integrity: sha512-5XHYaSyiqADb4RnZ1Bdad6cPp8Toise4TzEjcOYDHZkTCbKgiUl7WTUCpNWHuxmDt91wnsZBc9xinNzopv3JMQ==, } - engines: { node: '>=0.10.0' } + engines: { node: '>=18' } - normalize-url@6.1.0: + is-generator-fn@2.1.0: resolution: { - integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==, + integrity: sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==, } - engines: { node: '>=10' } + engines: { node: '>=6' } - now-and-later@2.0.1: + is-generator-function@1.1.2: resolution: { - integrity: sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==, + integrity: sha512-upqt1SkGkODW9tsGNG5mtXTXtECizwtS2kA161M+gJPc1xdb/Ax629af6YrTwcOeQHbewrPNlE5Dx7kzvXTizA==, } - engines: { node: '>= 0.10' } + engines: { node: '>= 0.4' } - npm-bundled@1.1.2: + is-glob@3.1.0: resolution: { - integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==, + integrity: sha512-UFpDDrPgM6qpnFNI+rh/p3bUaq9hKLZN8bMUWzxmcnZVS3omf4IPK+BrewlnWjO1WmUsMYuSjKh4UJuV4+Lqmw==, } + engines: { node: '>=0.10.0' } - npm-bundled@3.0.1: + is-glob@4.0.3: resolution: { - integrity: sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==, + integrity: sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>=0.10.0' } - npm-install-checks@6.3.0: + is-interactive@1.0.0: resolution: { - integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==, + integrity: sha512-2HvIEKRoqS62guEC+qBjpvRubdX910WCMuJTZ+I9yvqKU2/12eSL549HMwtabb4oupdj2sMP50k+XJfB/8JE6w==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>=8' } - npm-normalize-package-bin@1.0.1: + is-lambda@1.0.1: resolution: { - integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==, + integrity: sha512-z7CMFGNrENq5iFB9Bqo64Xk6Y9sg+epq1myIcdHaGnbMTYOxvzsEtdYqQUylB7LxfkvgrrjP32T6Ywciio9UIQ==, } - npm-normalize-package-bin@3.0.1: + is-map@2.0.3: resolution: { - integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==, + integrity: sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>= 0.4' } - npm-package-arg@10.1.0: + is-negated-glob@1.0.0: resolution: { - integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==, + integrity: sha512-czXVVn/QEmgvej1f50BZ648vUI+em0xqMq2Sn+QncCLN4zj1UAxlT+kw/6ggQTOaZPd1HqKQGEqbpQVtJucWug==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>=0.10.0' } - npm-package-arg@11.0.3: + is-negative-zero@2.0.3: resolution: { - integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==, + integrity: sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==, } - engines: { node: ^16.14.0 || >=18.0.0 } + engines: { node: '>= 0.4' } - npm-package-arg@8.1.1: + is-number-object@1.1.1: resolution: { - integrity: sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==, + integrity: sha512-lZhclumE1G6VYD8VHe35wFaIif+CTy5SJIi5+3y4psDgWu4wPDoBhF8NxUOinEc7pHgiTsT6MaBb92rKhhD+Xw==, } - engines: { node: '>=10' } + engines: { node: '>= 0.4' } - npm-package-arg@9.1.2: + is-number@7.0.0: resolution: { - integrity: sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==, + integrity: sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==, } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + engines: { node: '>=0.12.0' } - npm-packlist@5.1.1: + is-obj@2.0.0: resolution: { - integrity: sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==, + integrity: sha512-drqDG3cbczxxEJRoOXcOjtdp1J/lyp1mNn0xaznRs8+muBhgQcrnbspox5X5fOw0HnMnbfDzvnEMEtqDEJEo8w==, } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - hasBin: true + engines: { node: '>=8' } - npm-packlist@7.0.4: + is-path-cwd@2.2.0: resolution: { - integrity: sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==, + integrity: sha512-w942bTcih8fdJPJmQHFzkS76NEP8Kzzvmw92cXsazb8intwLqPibPPdXf4ANdKV3rYMuuQYGIWtvz9JilB3NFQ==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>=6' } - npm-packlist@8.0.2: + is-path-inside@3.0.3: resolution: { - integrity: sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==, + integrity: sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>=8' } - npm-pick-manifest@8.0.2: + is-plain-obj@1.1.0: resolution: { - integrity: sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==, + integrity: sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>=0.10.0' } - npm-pick-manifest@9.1.0: + is-plain-obj@2.1.0: resolution: { - integrity: sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==, + integrity: sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==, } - engines: { node: ^16.14.0 || >=18.0.0 } + engines: { node: '>=8' } - npm-registry-fetch@13.3.1: + is-plain-obj@3.0.0: resolution: { - integrity: sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==, + integrity: sha512-gwsOE28k+23GP1B6vFl1oVh/WOzmawBrKwo5Ev6wMKzPkaXaCDIQKzLnvsA42DRlbVTWorkgTKIviAKCWkfUwA==, } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + engines: { node: '>=10' } - npm-registry-fetch@14.0.3: + is-plain-object@2.0.4: resolution: { - integrity: sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==, + integrity: sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>=0.10.0' } - npm-registry-fetch@14.0.5: + is-plain-object@5.0.0: resolution: { - integrity: sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==, + integrity: sha512-VRSzKkbMm5jMDoKLbltAkFQ5Qr7VDiTFGXxYFXXowVj387GeGNOCsOH6Msy00SGZ3Fp84b1Naa1psqgcCIEP5Q==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>=0.10.0' } - npm-registry-fetch@17.1.0: + is-potential-custom-element-name@1.0.1: resolution: { - integrity: sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==, + integrity: sha512-bCYeRA2rVibKZd+s2625gGnGF/t7DSqDs4dP7CrLA1m7jKWz6pps0LpYLJN8Q64HtmPKJ1hrN3nzPNKFEKOUiQ==, } - engines: { node: ^16.14.0 || >=18.0.0 } - npm-run-all2@6.2.2: + is-promise@4.0.0: resolution: { - integrity: sha512-Q+alQAGIW7ZhKcxLt8GcSi3h3ryheD6xnmXahkMRVM5LYmajcUrSITm8h+OPC9RYWMV2GR0Q1ntTUCfxaNoOJw==, + integrity: sha512-hvpoI6korhJMnej285dSg6nu1+e6uxs7zG3BYAm5byqDsgJNWwxzM6z6iZiAgQR4TJ30JmBTOwqZUw3WlyH3AQ==, } - engines: { node: ^14.18.0 || ^16.13.0 || >=18.0.0, npm: '>= 8' } - hasBin: true - npm-run-all@4.1.5: + is-regex@1.2.1: resolution: { - integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==, + integrity: sha512-MjYsKHO5O7mCsmRGxWcLWheFqN9DJ/2TmngvjKXihe6efViPqc274+Fx/4fYj/r03+ESvBdTXK0V6tA3rgez1g==, } - engines: { node: '>= 4' } - hasBin: true + engines: { node: '>= 0.4' } - npm-run-path@2.0.2: + is-relative@1.0.0: resolution: { - integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==, + integrity: sha512-Kw/ReK0iqwKeu0MITLFuj0jbPAmEiOsIwyIXvvbfa6QfmN9pkD1M+8pdk7Rl/dTKbH34/XBFMbgD4iMJhLQbGA==, } - engines: { node: '>=4' } + engines: { node: '>=0.10.0' } - npm-run-path@4.0.1: + is-set@2.0.3: resolution: { - integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, + integrity: sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==, } - engines: { node: '>=8' } + engines: { node: '>= 0.4' } - npm-run-path@5.3.0: + is-shared-array-buffer@1.0.4: resolution: { - integrity: sha512-ppwTtiJZq0O/ai0z7yfudtBpWIoxM8yE6nHi1X47eFR2EWORqfbu6CnPlNsjeN683eT0qG6H/Pyf9fCcvjnnnQ==, + integrity: sha512-ISWac8drv4ZGfwKl5slpHG9OwPNty4jOWPRIhBpxOoD+hqITiwuipOQ2bNthAzwA3B4fIjO4Nln74N0S9byq8A==, } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + engines: { node: '>= 0.4' } - npmlog@5.0.1: + is-ssh@1.4.1: resolution: { - integrity: sha512-AqZtDUWOMKs1G/8lwylVjrdYgqA4d9nu8hc+0gzRxlDb1I10+FHBGMXs6aiQHFdCUUlqH99MUMuLfzWDNDtfxw==, + integrity: sha512-JNeu1wQsHjyHgn9NcWTaXq6zWSR6hqE0++zhfZlkFBbScNkyvxCdeV8sRkSBaeLKxmbpR21brail63ACNxJ0Tg==, } - deprecated: This package is no longer supported. - npmlog@6.0.2: + is-stream@1.1.0: resolution: { - integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==, + integrity: sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==, } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - deprecated: This package is no longer supported. + engines: { node: '>=0.10.0' } - npmlog@7.0.1: + is-stream@2.0.0: resolution: { - integrity: sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg==, + integrity: sha512-XCoy+WlUr7d1+Z8GgSuXmpuUFC9fOhRXglJMx+dwLKTkL44Cjd4W1Z5P+BQZpr+cR93aGP4S/s7Ftw6Nd/kiEw==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - deprecated: This package is no longer supported. + engines: { node: '>=8' } - nth-check@2.1.1: + is-stream@2.0.1: resolution: { - integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==, + integrity: sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==, } + engines: { node: '>=8' } - null-loader@0.1.1: + is-string@1.1.1: resolution: { - integrity: sha512-F3qrYC3mFAUEx3TxX/y6xbRmt3S7EVuVqOV00xPBB/oIJNjtTMZUN5Z9pxY10oL5dhuyHuOY96A5JoxPdY3Myg==, + integrity: sha512-BtEeSsoaQjlSPBemMQIrY1MY0uM6vnS1g5fmufYOtnxLGUZM2178PKbhsk7Ffv58IX+ZtcvoGwccYsh0PglkAA==, } + engines: { node: '>= 0.4' } - nwsapi@2.2.10: + is-symbol@1.1.1: resolution: { - integrity: sha512-QK0sRs7MKv0tKe1+5uZIQk/C8XGza4DAnztJG8iD+TpJIORARrCxczA738awHrZoHeTjSSoHqao2teO0dC/gFQ==, + integrity: sha512-9gGx6GTtCQM73BgmHQXfDmLtfjjTUDSyoxTCbp5WtoixAhfgsDirWIcVQ/IHpvI5Vgd5i/J5F7B9cN/WlVbC/w==, } + engines: { node: '>= 0.4' } - nwsapi@2.2.12: + is-text-path@1.0.1: resolution: { - integrity: sha512-qXDmcVlZV4XRtKFzddidpfVP4oMSGhga+xdMc25mv8kaLUHtgzCDhUxkrN8exkGdTlLNaXj7CV3GtON7zuGZ+w==, + integrity: sha512-xFuJpne9oFz5qDaodwmmG08e3CawH/2ZV8Qqza1Ko7Sk8POWbkRdwIoAWVhqvq0XeUzANEhKo2n0IXUGBm7A/w==, } + engines: { node: '>=0.10.0' } - nx@15.9.7: + is-typed-array@1.1.15: resolution: { - integrity: sha512-1qlEeDjX9OKZEryC8i4bA+twNg+lB5RKrozlNwWx/lLJHqWPUfvUTvxh+uxlPYL9KzVReQjUuxMLFMsHNqWUrA==, + integrity: sha512-p3EcsicXjit7SaskXHs1hA91QxgTw46Fv6EFKKGS5DRFLD8yKnohjF3hxoju94b/OcMZoQukzpPpBE9uLVKzgQ==, } - hasBin: true - peerDependencies: - '@swc-node/register': ^1.4.2 - '@swc/core': ^1.2.173 - peerDependenciesMeta: - '@swc-node/register': - optional: true - '@swc/core': - optional: true + engines: { node: '>= 0.4' } - nyc@15.1.0: + is-typedarray@1.0.0: resolution: { - integrity: sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==, + integrity: sha512-cyA56iCMHAh5CdzjJIa4aohJyeO1YbwLi3Jc35MmRU6poroFjIGZzUzupGiRPOjgHg9TLu43xbpwXk523fMxKA==, } - engines: { node: '>=8.9' } - hasBin: true - oauth-sign@0.9.0: + is-unc-path@1.0.0: resolution: { - integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==, + integrity: sha512-mrGpVd0fs7WWLfVsStvgF6iEJnbjDFZh9/emhRDcGWTduTfNHd9CHeUwH3gYIjdbwo4On6hunkztwOaAw0yllQ==, } + engines: { node: '>=0.10.0' } - object-assign@4.1.1: + is-unicode-supported@0.1.0: resolution: { - integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, + integrity: sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==, } - engines: { node: '>=0.10.0' } + engines: { node: '>=10' } - object-inspect@1.13.1: + is-unicode-supported@2.1.0: resolution: { - integrity: sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==, + integrity: sha512-mE00Gnza5EEB3Ds0HfMyllZzbBrmLOX3vfWoj9A9PEnTfratQ/BcaJOuMhnkhjXvb2+FkY3VuHqtAGpTPmglFQ==, } + engines: { node: '>=18' } - object-is@1.1.6: + is-utf8@0.2.1: resolution: { - integrity: sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==, + integrity: sha512-rMYPYvCzsXywIsldgLaSoPlw5PfoB/ssr7hY4pLfcodrA5M/eArza1a9VmTiNIBNMjOGr1Ow9mTyU2o69U6U9Q==, } - engines: { node: '>= 0.4' } - object-keys@1.1.1: + is-valid-glob@1.0.0: resolution: { - integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==, + integrity: sha512-AhiROmoEFDSsjx8hW+5sGwgKVIORcXnrlAx/R0ZSeaPw70Vw0CqkGBBhHGL58Uox2eXnU1AnvXJl1XlyedO5bA==, } - engines: { node: '>= 0.4' } + engines: { node: '>=0.10.0' } - object.assign@4.1.5: + is-weakmap@2.0.2: resolution: { - integrity: sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==, + integrity: sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==, } engines: { node: '>= 0.4' } - object.entries@1.1.8: + is-weakref@1.1.1: resolution: { - integrity: sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==, + integrity: sha512-6i9mGWSlqzNMEqpCp93KwRS1uUOodk2OJ6b+sq7ZPDSy2WuI5NFIxp/254TytR8ftefexkWn5xNiHUNpPOfSew==, } engines: { node: '>= 0.4' } - object.fromentries@2.0.8: + is-weakset@2.0.4: resolution: { - integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==, + integrity: sha512-mfcwb6IzQyOKTs84CQMrOwW4gQcaTOAWJ0zzJCl2WSPDrWk/OzDaImWFH3djXhb24g4eudZfLRozAvPGw4d9hQ==, } engines: { node: '>= 0.4' } - object.groupby@1.0.3: + is-windows@1.0.2: resolution: { - integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==, + integrity: sha512-eXK1UInq2bPmjyX6e3VHIzMLobc4J94i4AWn+Hpq3OU5KkrRC96OAcR3PRJ/pGu6m8TRnBHP9dkXQVsT/COVIA==, } - engines: { node: '>= 0.4' } + engines: { node: '>=0.10.0' } - object.hasown@1.1.4: + is-wsl@2.2.0: resolution: { - integrity: sha512-FZ9LZt9/RHzGySlBARE3VF+gE26TxR38SdmqOqliuTnl9wrKulaQs+4dee1V+Io8VfxqzAfHu6YuRgUy8OHoTg==, + integrity: sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==, } - engines: { node: '>= 0.4' } + engines: { node: '>=8' } - object.values@1.2.0: + isarray@1.0.0: resolution: { - integrity: sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==, + integrity: sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==, } - engines: { node: '>= 0.4' } - obuf@1.1.2: + isarray@2.0.5: resolution: { - integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==, + integrity: sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==, } - on-finished@2.3.0: + isexe@2.0.0: resolution: { - integrity: sha512-ikqdkGAAyf/X/gPhXGvfgAytDZtDbr+bkNUJ0N9h5MI/dmdgCs3l6hoHrcUv41sRKew3jIwrp4qQDXiK99Utww==, + integrity: sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==, } - engines: { node: '>= 0.8' } - on-finished@2.4.1: + isexe@3.1.1: resolution: { - integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==, + integrity: sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==, } - engines: { node: '>= 0.8' } + engines: { node: '>=16' } - on-headers@1.0.2: + isobject@3.0.1: resolution: { - integrity: sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==, + integrity: sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==, } - engines: { node: '>= 0.8' } + engines: { node: '>=0.10.0' } - once@1.4.0: + isstream@0.1.2: resolution: { - integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, + integrity: sha512-Yljz7ffyPbrLpLngrMtZ7NduUgVvi6wG9RJ9IUcyCd59YQ911PBJphODUcbOVbqYfxe1wuYf/LJ8PauMRwsM/g==, } - onetime@2.0.1: + istanbul-lib-coverage@3.2.2: resolution: { - integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==, + integrity: sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==, } - engines: { node: '>=4' } + engines: { node: '>=8' } - onetime@5.1.2: + istanbul-lib-hook@3.0.0: resolution: { - integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, + integrity: sha512-Pt/uge1Q9s+5VAZ+pCo16TYMWPBIl+oaNIjgLQxcX0itS6ueeaA+pEfThZpH8WxhFgCiEb8sAJY6MdUKgiIWaQ==, } - engines: { node: '>=6' } + engines: { node: '>=8' } - onetime@6.0.0: + istanbul-lib-instrument@4.0.3: resolution: { - integrity: sha512-1FlR+gjXK7X+AsAHso35MnyN5KqGwJRi/31ft6x0M194ht7S+rWAvd7PHss9xSKMzE0asv1pyIHaJYq+BbacAQ==, + integrity: sha512-BXgQl9kf4WTCPCCpmFGoJkz/+uhvm7h7PFKUYxh7qarQd3ER33vHG//qaE8eN25l07YqZPpHXU9I09l/RD5aGQ==, } - engines: { node: '>=12' } + engines: { node: '>=8' } - onetime@7.0.0: + istanbul-lib-instrument@5.2.1: resolution: { - integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==, + integrity: sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==, } - engines: { node: '>=18' } + engines: { node: '>=8' } - open@10.1.0: + istanbul-lib-processinfo@2.0.3: resolution: { - integrity: sha512-mnkeQ1qP5Ue2wd+aivTD3NHd/lZ96Lu0jgf0pwktLPtx6cTZiH7tyeGRRHs0zX0rbrahXPnXlUnbeXyaBBuIaw==, + integrity: sha512-NkwHbo3E00oybX6NGJi6ar0B29vxyvNwoC7eJ4G4Yq28UfY758Hgn/heV8VRFhevPED4LXfFz0DQ8z/0kw9zMg==, } - engines: { node: '>=18' } + engines: { node: '>=8' } - open@8.4.2: + istanbul-lib-report@3.0.1: resolution: { - integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==, + integrity: sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==, } - engines: { node: '>=12' } + engines: { node: '>=10' } - opener@1.5.2: + istanbul-lib-source-maps@4.0.1: resolution: { - integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==, + integrity: sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==, } - hasBin: true + engines: { node: '>=10' } - optionator@0.9.4: + istanbul-reports@3.2.0: resolution: { - integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, + integrity: sha512-HGYWWS/ehqTV3xN10i23tkPkpH46MLCIMFNCaaKNavAXTF1RkqxawEPtnjnGZ6XKSInBKkiOA5BKS+aZiY3AvA==, } - engines: { node: '>= 0.8.0' } + engines: { node: '>=8' } - ora@5.4.1: + jackspeak@3.4.3: resolution: { - integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==, + integrity: sha512-OGlZQpz2yfahA/Rd1Y8Cd9SIEsqvXkLVoSw/cgwhnhFMDbsQFeZYoJJ7bIZBS9BcamUW96asq/npPWugM+RQBw==, } - engines: { node: '>=10' } - ordered-binary@1.5.3: + jake@10.9.4: resolution: { - integrity: sha512-oGFr3T+pYdTGJ+YFEILMpS3es+GiIbs9h/XQrclBXUtd44ey7XwfsMzM31f64I1SQOawDoDr/D823kNCADI8TA==, + integrity: sha512-wpHYzhxiVQL+IV05BLE2Xn34zW1S223hvjtqk0+gsPrwd/8JNLXJgZZM/iPFsYc1xyphF+6M6EvdE5E9MBGkDA==, } + engines: { node: '>=10' } + hasBin: true - ordered-read-streams@1.0.1: + javascript-stringify@2.1.0: resolution: { - integrity: sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==, + integrity: sha512-JVAfqNPTvNq3sB/VHQJAFxN/sPgKnsKrCwyRt15zwNCdrMMJDdcEOdubuy+DuJYYdm0ox1J4uzEuYKkN+9yhVg==, } - os-browserify@0.3.0: + jest-changed-files@27.5.1: resolution: { - integrity: sha512-gjcpUc3clBf9+210TRaDWbf+rZZZEshZ+DlXMRCeAjp0xhTrnQsKHypIy1J3d5hKdUzj69t708EHtU8P6bUn0A==, + integrity: sha512-buBLMiByfWGCoMsLLzGUUSpAmIAGnbR2KJoMN10ziLhOLvP4e0SlypHnAel8iqQXTrcbmfEY9sSqae5sgUsTvw==, } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - os-tmpdir@1.0.2: + jest-circus@27.5.1: resolution: { - integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==, + integrity: sha512-D95R7x5UtlMA5iBYsOHFFbMD/GVA4R/Kdq15f7xYWUfWHBto9NYRsOvnSauTgdF+ogCpJ4tyKOXhUifxS65gdw==, } - engines: { node: '>=0.10.0' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - p-finally@1.0.0: + jest-cli@27.5.1: resolution: { - integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==, + integrity: sha512-Hc6HOOwYq4/74/c62dEE3r5elx8wjYqxY0r0G/nFrLDPMFRu6RA/u8qINOIkvhxG7mMQ5EJsOGfRpI8L6eFUVw==, } - engines: { node: '>=4' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true - p-limit@1.3.0: + jest-config@27.5.1: resolution: { - integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==, + integrity: sha512-5sAsjm6tGdsVbW9ahcChPAFCk4IlkQUknH5AvKjuLTSlcO/wCZKyFdn7Rg0EkC+OGgWODEy2hDpWB1PgzH0JNA==, } - engines: { node: '>=4' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + peerDependencies: + ts-node: '>=9.0.0' + peerDependenciesMeta: + ts-node: + optional: true - p-limit@2.3.0: + jest-diff@27.5.1: resolution: { - integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, + integrity: sha512-m0NvkX55LDt9T4mctTEgnZk3fmEg3NRYutvMPWM/0iPnkFj2wIeF45O1718cMSOFO1vINkqmxqD8vE37uTEbqw==, } - engines: { node: '>=6' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - p-limit@3.1.0: + jest-docblock@27.5.1: resolution: { - integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, + integrity: sha512-rl7hlABeTsRYxKiUfpHrQrG4e2obOiTQWfMEH3PxPjOtdsfLQO4ReWSZaQ7DETm4xu07rl4q/h4zcKXyU0/OzQ==, } - engines: { node: '>=10' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - p-limit@4.0.0: + jest-each@27.5.1: resolution: { - integrity: sha512-5b0R4txpzjPWVw/cXXUResoD4hb6U/x9BH08L7nw+GN1sezDzPdxeRvpc9c433fZhBan/wusjbCsqwqm4EIBIQ==, + integrity: sha512-1Ff6p+FbhT/bXQnEouYy00bkNSY7OUpfIcmdl8vZ31A1UUaurOLPA8a8BbJOF2RDUElwJhmeaV7LnagI+5UwNQ==, } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - p-limit@5.0.0: + jest-environment-jsdom@27.5.1: resolution: { - integrity: sha512-/Eaoq+QyLSiXQ4lyYV23f14mZRQcXnxfHrN0vCai+ak9G0pp9iEQukIIZq5NccEvwRB8PUnZT0KsOoDCINS1qQ==, + integrity: sha512-TFBvkTC1Hnnnrka/fUb56atfDtJ9VMZ94JkjTbggl1PEpwrYtUBKMezB3inLmWqQsXYLcMwNoDQwoBTAvFfsfw==, } - engines: { node: '>=18' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - p-locate@2.0.0: + jest-environment-node@27.5.1: resolution: { - integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==, + integrity: sha512-Jt4ZUnxdOsTGwSRAfKEnE6BcwsSPNOijjwifq5sDFSA2kesnXTvNqKHYgM0hDq3549Uf/KzdXNYn4wMZJPlFLw==, } - engines: { node: '>=4' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - p-locate@3.0.0: + jest-get-type@27.5.1: resolution: { - integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==, + integrity: sha512-2KY95ksYSaK7DMBWQn6dQz3kqAf3BB64y2udeG+hv4KfSOb9qwcYQstTJc1KCbsix+wLZWZYN8t7nwX3GOBLRw==, } - engines: { node: '>=6' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - p-locate@4.1.0: + jest-haste-map@27.5.1: resolution: { - integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, + integrity: sha512-7GgkZ4Fw4NFbMSDSpZwXeBiIbx+t/46nJ2QitkOjvwPYyZmqttu2TDSimMHP1EkPOi4xUZAN1doE5Vd25H4Jng==, } - engines: { node: '>=8' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - p-locate@5.0.0: + jest-jasmine2@27.5.1: resolution: { - integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, + integrity: sha512-jtq7VVyG8SqAorDpApwiJJImd0V2wv1xzdheGHRGyuT7gZm6gG47QEskOlzsN1PG/6WNaCo5pmwMHDf3AkG2pQ==, } - engines: { node: '>=10' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - p-locate@6.0.0: + jest-leak-detector@27.5.1: resolution: { - integrity: sha512-wPrq66Llhl7/4AGC6I+cqxT07LhXvWL08LNXz1fENOw0Ap4sRZZ/gZpTTJ5jpurzzzfS2W/Ge9BY3LgLjCShcw==, + integrity: sha512-POXfWAMvfU6WMUXftV4HolnJfnPOGEu10fscNCA76KBpRRhcMN2c8d3iT2pxQS3HLbA+5X4sOUPzYO2NUyIlHQ==, } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - p-map-series@2.1.0: + jest-matcher-utils@27.5.1: resolution: { - integrity: sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==, + integrity: sha512-z2uTx/T6LBaCoNWNFWwChLBKYxTMcGBRjAt+2SbP929/Fflb9aa5LGma654Rz8z9HLxsrUaYzxE9T/EFIL/PAw==, } - engines: { node: '>=8' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - p-map@3.0.0: + jest-message-util@27.5.1: resolution: { - integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==, + integrity: sha512-rMyFe1+jnyAAf+NHwTclDz0eAaLkVDdKVHHBFWsBWHnnh5YeJMNWWsv7AbFYXfK3oTqvL7VTWkhNLu1jX24D+g==, } - engines: { node: '>=8' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - p-map@4.0.0: + jest-mock@27.5.1: resolution: { - integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==, + integrity: sha512-K4jKbY1d4ENhbrG2zuPWaQBvDly+iZ2yAW+T1fATN78hc0sInwn7wZB8XtlNnvHug5RMwV897Xm4LqmPM4e2Og==, } - engines: { node: '>=10' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - p-map@7.0.2: + jest-pnp-resolver@1.2.3: resolution: { - integrity: sha512-z4cYYMMdKHzw4O5UkWJImbZynVIo0lSGTXc7bzB1e/rrDqkgGUNysK/o4bTr+0+xKvvLoTyGqYC4Fgljy9qe1Q==, + integrity: sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==, } - engines: { node: '>=18' } + engines: { node: '>=6' } + peerDependencies: + jest-resolve: '*' + peerDependenciesMeta: + jest-resolve: + optional: true - p-pipe@3.1.0: + jest-regex-util@27.5.1: resolution: { - integrity: sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==, + integrity: sha512-4bfKq2zie+x16okqDXjXn9ql2B0dScQu+vcwe4TvFVhkVyuWLqpZrZtXxLLWoXYgn0E87I6r6GRYHF7wFZBUvg==, } - engines: { node: '>=8' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - p-queue@6.6.2: + jest-resolve-dependencies@27.5.1: resolution: { - integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==, + integrity: sha512-QQOOdY4PE39iawDn5rzbIePNigfe5B9Z91GDD1ae/xNDlu9kaat8QQ5EKnNmVWPV54hUdxCVwwj6YMgR2O7IOg==, } - engines: { node: '>=8' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - p-reduce@2.1.0: + jest-resolve@27.5.1: resolution: { - integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==, + integrity: sha512-FFDy8/9E6CV83IMbDpcjOhumAQPDyETnU2KZ1O98DwTnz8AOBsW/Xv3GySr1mOZdItLR+zDZ7I/UdTFbgSOVCw==, } - engines: { node: '>=8' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - p-retry@4.6.2: + jest-runner@27.5.1: resolution: { - integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==, + integrity: sha512-g4NPsM4mFCOwFKXO4p/H/kWGdJp9V8kURY2lX8Me2drgXqG7rrZAx5kv+5H7wtt/cdFIjhqYx1HrlqWHaOvDaQ==, } - engines: { node: '>=8' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - p-retry@6.2.1: + jest-runtime@27.5.1: resolution: { - integrity: sha512-hEt02O4hUct5wtwg4H4KcWgDdm+l1bOaEy/hWzd8xtXB9BqxTWBBhb+2ImAtH4Cv4rPjV76xN3Zumqk3k3AhhQ==, + integrity: sha512-o7gxw3Gf+H2IGt8fv0RiyE1+r83FJBRruoA+FXrlHw6xEyBsU8ugA6IPfTdVyA0w8HClpbK+DGJxH59UrNMx8A==, } - engines: { node: '>=16.17' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - p-timeout@3.2.0: + jest-serializer@27.5.1: resolution: { - integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==, + integrity: sha512-jZCyo6iIxO1aqUxpuBlwTDMkzOAJS4a3eYz3YzgxxVQFwLeSA7Jfq5cbqCY+JLvTDrWirgusI/0KwxKMgrdf7w==, } - engines: { node: '>=8' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - p-try@1.0.0: + jest-snapshot@27.5.1: resolution: { - integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==, + integrity: sha512-yYykXI5a0I31xX67mgeLw1DZ0bJB+gpq5IpSuCAoyDi0+BhgU/RIrL+RTzDmkNTchvDFWKP8lp+w/42Z3us5sA==, } - engines: { node: '>=4' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - p-try@2.2.0: + jest-util@27.5.1: resolution: { - integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, + integrity: sha512-Kv2o/8jNvX1MQ0KGtw480E/w4fBCDOnH6+6DmeKi6LZUIlKA5kwY0YNdlzaWTiVgxqAqik11QyxDOKk543aKXw==, } - engines: { node: '>=6' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - p-waterfall@2.1.1: + jest-validate@27.5.1: resolution: { - integrity: sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==, + integrity: sha512-thkNli0LYTmOI1tDB3FI1S1RTp/Bqyd9pTarJwL87OIBFuqEb5Apv5EaApEudYg4g86e3CT6kM0RowkhtEnCBQ==, } - engines: { node: '>=8' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - package-config@5.0.0: + jest-watcher@27.5.1: resolution: { - integrity: sha512-GYTTew2slBcYdvRHqjhwaaydVMvn/qrGC323+nKclYioNSLTDUM/lGgtGTgyHVtYcozb+XkE8CNhwcraOmZ9Mg==, + integrity: sha512-z676SuD6Z8o8qbmEGhoEUFOM1+jfEiL3DXHK/xgEiG2EyNYfFG60jluWcupY6dATjfEsKQuibReS1djInQnoVw==, } - engines: { node: '>=18' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - package-hash@4.0.0: + jest-worker@27.5.1: resolution: { - integrity: sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==, + integrity: sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==, } - engines: { node: '>=8' } + engines: { node: '>= 10.13.0' } - pacote@15.1.1: + jest@27.5.1: resolution: { - integrity: sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ==, + integrity: sha512-Yn0mADZB89zTtjkPJEXwrac3LHudkQMR+Paqa8uxJHCBr9agxztUifWCyiYrjhMPBoUVBjyny0I7XH6ozDr7QQ==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } hasBin: true + peerDependencies: + node-notifier: ^8.0.1 || ^9.0.0 || ^10.0.0 + peerDependenciesMeta: + node-notifier: + optional: true - pacote@18.0.6: + joi@17.13.3: resolution: { - integrity: sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==, + integrity: sha512-otDA4ldcIx+ZXsKHWmp0YizCweVRZG96J10b0FevjfuncLO1oX59THoAmHkNubYJ+9gWsYsp5k8v4ib6oDv1fA==, } - engines: { node: ^16.14.0 || >=18.0.0 } - hasBin: true - pako@1.0.11: + js-beautify@1.15.4: resolution: { - integrity: sha512-4hLB8Py4zZce5s4yd9XzopqwVv/yGNhV1Bl8NTmCq1763HeK2+EwVTv+leGeL13Dnh2wfbqowVPXCIO0z4taYw==, + integrity: sha512-9/KXeZUKKJwqCXUdBxFJ3vPh467OCckSBmYDwSK/EtV090K+iMJ7zx2S3HLVDIWFQdqMIsZWbnaGiba18aWhaA==, } + engines: { node: '>=14' } + hasBin: true - parallel-transform@1.2.0: + js-cleanup@1.2.0: resolution: { - integrity: sha512-P2vSmIu38uIlvdcU7fDkyrxj33gTUy/ABO5ZUbGowxNCopBq/OoD42bP4UmMrJoPyk4Uqf0mu3mtWBhHCZD8yg==, + integrity: sha512-JeDD0yiiSt80fXzAVa/crrS0JDPQljyBG/RpOtaSbyDq03VHa9szJWMaWOYU/bcTn412uMN2MxApXq8v79cUiQ==, } + engines: { node: ^10.14.2 || >=12.0.0 } - param-case@2.1.1: + js-cookie@3.0.5: resolution: { - integrity: sha512-eQE845L6ot89sk2N8liD8HAuH4ca6Vvr7VWAWwt7+kvvG5aBcPmmphQ68JsEG2qa9n1TykS2DLeMt363AAH8/w==, + integrity: sha512-cEiJEAEoIbWfCZYKWhVwFuvPX1gETRYPw6LlaTKoxD3s2AkXzkCjnp6h0V77ozyqj0jakteJ4YqDJT830+lVGw==, } + engines: { node: '>=14' } - param-case@3.0.4: + js-message@1.0.7: resolution: { - integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==, + integrity: sha512-efJLHhLjIyKRewNS9EGZ4UpI8NguuL6fKkhRxVuMmrGV2xN/0APGdQYwLFky5w9naebSZ0OwAGp0G6/2Cg90rA==, } + engines: { node: '>=0.6.0' } - parent-module@1.0.1: + js-string-escape@1.0.1: resolution: { - integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, + integrity: sha512-Smw4xcfIQ5LVjAOuJCvN/zIodzA/BBSsluuoSykP+lUvScIi4U6RJLfwHet5cxFnCswUjISV8oAXaqaJDY3chg==, } - engines: { node: '>=6' } + engines: { node: '>= 0.8' } - parse-asn1@5.1.7: + js-tokens@4.0.0: resolution: { - integrity: sha512-CTM5kuWR3sx9IFamcl5ErfPl6ea/N8IYwiJ+vpeB2g+1iknv7zBl5uPwbMbRVznRVbrNY6lGuDoE5b30grmbqg==, + integrity: sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==, } - engines: { node: '>= 0.10' } - parse-conflict-json@3.0.1: + js-yaml@3.14.2: resolution: { - integrity: sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw==, + integrity: sha512-PMSmkqxr106Xa156c2M265Z+FTrPl+oxd/rgOQy2tijQeK5TxQ43psO1ZCwhVOSdnn+RzkzlRz/eY4BgJBYVpg==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + hasBin: true - parse-json@4.0.0: + js-yaml@4.0.0: resolution: { - integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==, + integrity: sha512-pqon0s+4ScYUvX30wxQi3PogGFAlUyH0awepWvwkj4jD4v+ova3RiYw8bmA6x2rDrEaj8i/oWKoRxpVNW+Re8Q==, } - engines: { node: '>=4' } + hasBin: true - parse-json@5.2.0: + js-yaml@4.1.0: resolution: { - integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, + integrity: sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==, } - engines: { node: '>=8' } + hasBin: true - parse-ms@4.0.0: + js-yaml@4.1.1: resolution: { - integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==, + integrity: sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==, } - engines: { node: '>=18' } + hasBin: true - parse-node-version@1.0.1: + jsbn@0.1.1: resolution: { - integrity: sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==, + integrity: sha512-UVU9dibq2JcFWxQPA6KCqj5O42VOmAY3zQUfEKxU0KpTGXwNoCjkX1e13eHNvw/xPynt6pU0rZ1htjWTNTSXsg==, } - engines: { node: '>= 0.10' } - parse-path@7.0.0: + jsdom-global@3.0.2: resolution: { - integrity: sha512-Euf9GG8WT9CdqwuWJGdf3RkUcTBArppHABkO7Lm8IzRQp0e2r/kkFnmhu4TSK30Wcu5rVAZLmfPKSBBi9tWFog==, + integrity: sha512-t1KMcBkz/pT5JrvcJbpUR2u/w1kO9jXctaaGJ0vZDzwFnIvGWw9IDSRciT83kIs8Bnw4qpOl8bQK08V01YgMPg==, } + peerDependencies: + jsdom: '>=10.0.0' - parse-url@8.1.0: + jsdom@16.7.0: resolution: { - integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==, + integrity: sha512-u9Smc2G1USStM+s/x1ru5Sxrl6mPYCbByG1U/hUmqaVsm4tbNyS7CicOSRyuGQYZhTu0h84qkZZQ/I+dzizSVw==, } + engines: { node: '>=10' } + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true - parse5-html-rewriting-stream@7.0.0: + jsdom@18.1.1: resolution: { - integrity: sha512-mazCyGWkmCRWDI15Zp+UiCqMp/0dgEmkZRvhlsqqKYr4SsVm/TvnSpD9fCvqCA2zoWJcfRym846ejWBBHRiYEg==, + integrity: sha512-NmJQbjQ/gpS/1at/ce3nCx89HbXL/f5OcenBe8wU1Eik0ROhyUc3LtmG3567dEHAGXkN8rmILW/qtCOPxPHQJw==, } + engines: { node: '>=12' } + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true - parse5-htmlparser2-tree-adapter@6.0.1: + jsdom@22.1.0: resolution: { - integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==, + integrity: sha512-/9AVW7xNbsBv6GfWho4TTNjEo9fe6Zhf9O7s0Fhhr3u+awPwAJMKwAMXnkk5vBxflqLW9hTHX/0cs+P3gW+cQw==, } + engines: { node: '>=16' } + peerDependencies: + canvas: ^2.5.0 + peerDependenciesMeta: + canvas: + optional: true - parse5-htmlparser2-tree-adapter@7.0.0: + jsesc@3.1.0: resolution: { - integrity: sha512-B77tOZrqqfUfnVcOrUvfdLbz4pu4RopLD/4vmu3HUPswwTA8OH0EMW9BlWR2B0RCoiZRAHEUu7IxeP1Pd1UU+g==, + integrity: sha512-/sM3dO2FOzXjKQhJuo0Q173wf2KOo8t4I8vHy6lF9poUp7bKT0/NHE8fPX23PwfhnykfqnC2xRxOnVw5XuGIaA==, } + engines: { node: '>=6' } + hasBin: true - parse5-sax-parser@7.0.0: + json-buffer@3.0.1: resolution: { - integrity: sha512-5A+v2SNsq8T6/mG3ahcz8ZtQ0OUFTatxPbeidoMB7tkJSGDY3tdfl4MHovtLQHkEn5CGxijNWRQHhRQ6IRpXKg==, + integrity: sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==, } - parse5@5.1.1: + json-parse-better-errors@1.0.2: resolution: { - integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==, + integrity: sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==, } - parse5@6.0.1: + json-parse-even-better-errors@2.3.1: resolution: { - integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==, + integrity: sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==, } - parse5@7.1.2: + json-parse-even-better-errors@3.0.2: resolution: { - integrity: sha512-Czj1WaSVpaoj0wbhMzLmWD69anp2WH7FXMB9n1Sy8/ZFF9jolSQVMu1Ij5WIyGmcBmhk7EOndpO4mIpihVqAXw==, + integrity: sha512-fi0NG4bPjCHunUJffmLd0gxssIgkNmArMvis4iNah6Owg1MCJjWhEcDLmsK6iGkJq3tHwbDkTlce70/tmXN4cQ==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - parseurl@1.3.3: + json-schema-traverse@0.4.1: resolution: { - integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==, + integrity: sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==, } - engines: { node: '>= 0.8' } - pascal-case@3.1.2: + json-schema-traverse@1.0.0: resolution: { - integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==, + integrity: sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==, } - path-browserify@1.0.1: + json-schema@0.4.0: resolution: { - integrity: sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==, + integrity: sha512-es94M3nTIfsEPisRafak+HDLfHXnKBhV3vU5eqPcS3flIWqcxJWgXHXiey3YrpaNsanY5ei1VoYEbOzijuq9BA==, } - path-dirname@1.0.2: + json-stable-stringify-without-jsonify@1.0.1: resolution: { - integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==, + integrity: sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==, } - path-exists@3.0.0: + json-stringify-nice@1.1.4: resolution: { - integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==, + integrity: sha512-5Z5RFW63yxReJ7vANgW6eZFGWaQvnPE3WNmZoOJrSkGju2etKA2L5rrOa1sm877TVTFt57A80BH1bArcmlLfPw==, } - engines: { node: '>=4' } - path-exists@4.0.0: + json-stringify-safe@5.0.1: resolution: { - integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, + integrity: sha512-ZClg6AaYvamvYEE82d3Iyd3vSSIjQ+odgjaTzRuO3s7toCdFKczob2i0zCh7JE8kWn17yvAWhUVxvqGwUalsRA==, } - engines: { node: '>=8' } - path-exists@5.0.0: + json5@1.0.2: resolution: { - integrity: sha512-RjhtfwJOxzcFmNOi6ltcbcu4Iu+FL3zEj83dk4kAS+fVpTxXLO1b38RvJgT/0QwvV/L3aY9TAnyv0EOqW4GoMQ==, + integrity: sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==, } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + hasBin: true - path-is-absolute@1.0.1: + json5@2.2.3: resolution: { - integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, + integrity: sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==, } - engines: { node: '>=0.10.0' } + engines: { node: '>=6' } + hasBin: true - path-is-inside@1.0.2: + jsonc-parser@3.2.0: resolution: { - integrity: sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==, + integrity: sha512-gfFQZrcTc8CnKXp6Y4/CBT3fTc0OVuDofpre4aEeEpSBPV5X5v4+Vmx+8snU7RLPrNHPKSgLxGo9YuQzz20o+w==, } - path-key@2.0.1: + jsonc-parser@3.3.1: resolution: { - integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==, + integrity: sha512-HUgH65KyejrUFPvHFPbqOY0rsFip3Bo5wb4ngvdi1EpCYWUQDC5V+Y7mZws+DLkr4M//zQJoanu1SP+87Dv1oQ==, } - engines: { node: '>=4' } - path-key@3.1.1: + jsonfile@6.2.0: resolution: { - integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, + integrity: sha512-FGuPw30AdOIUTRMC2OMRtQV+jkVj2cfPqSeWXv1NEAJ1qZ5zb1X6z1mFhbfOB/iy3ssJCD+3KuZ8r8C3uVFlAg==, } - engines: { node: '>=8' } - path-key@4.0.0: + jsonparse@1.3.1: resolution: { - integrity: sha512-haREypq7xkM7ErfgIyA0z+Bj4AGKlMSdlQE2jvJo6huWD1EdkKYV+G/T4nq0YEF2vgTT8kqMFKo1uHn950r4SQ==, + integrity: sha512-POQXvpdL69+CluYsillJ7SUhKvytYjW9vG/GKpnf+xP8UWgYEM/RaMzHHofbALDiKbbP1W8UEYmgGl39WkPZsg==, } - engines: { node: '>=12' } + engines: { '0': node >= 0.2.0 } - path-loader@1.0.12: + jsprim@1.4.2: resolution: { - integrity: sha512-n7oDG8B+k/p818uweWrOixY9/Dsr89o2TkCm6tOTex3fpdo2+BFDgR+KpB37mGKBRsBAlR8CIJMFN0OEy/7hIQ==, + integrity: sha512-P2bSOMAc/ciLz6DzgjVlGJP9+BrJWu5UDGK70C2iweC5QBIeFf0ZXRvGjEj2uYgrY2MkAAhsSWHDWlFtEroZWw==, } + engines: { node: '>=0.6.0' } - path-parse@1.0.7: + just-diff-apply@5.5.0: resolution: { - integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, + integrity: sha512-OYTthRfSh55WOItVqwpefPtNt2VdKsq5AnAK6apdtR6yCH8pr0CmSr710J0Mf+WdQy7K/OzMy7K2MgAfdQURDw==, } - path-scurry@1.11.1: + just-diff@6.0.2: resolution: { - integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==, + integrity: sha512-S59eriX5u3/QhMNq3v/gm8Kd0w8OS6Tz2FS1NG4blv+z0MuQcBRJyFWjdovM0Rad4/P4aUPFtnkNjMjyMlMSYA==, } - engines: { node: '>=16 || 14 >=14.18' } - path-to-regexp@0.1.7: + keyv@4.5.4: resolution: { - integrity: sha512-5DFkuoqlv1uYQKxy8omFBeJPQcdoE07Kv2sferDCrAq1ohOU+MSDswDIbnx3YAM60qIOnYa53wBhXW0EbMonrQ==, + integrity: sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==, } - path-type@3.0.0: + kind-of@6.0.3: resolution: { - integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==, + integrity: sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==, } - engines: { node: '>=4' } + engines: { node: '>=0.10.0' } - path-type@4.0.0: + kleur@3.0.3: resolution: { - integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, + integrity: sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==, } - engines: { node: '>=8' } + engines: { node: '>=6' } - path-type@5.0.0: + klona@2.0.6: resolution: { - integrity: sha512-5HviZNaZcfqP95rwpv+1HDgUamezbqdSYTyzjTvwtJSnIH+3vnbmWsItli8OFEndS984VT55M3jduxZbX351gg==, + integrity: sha512-dhG34DXATL5hSxJbIexCft8FChFXtmskoZYnoPWjXQuebWYCNkVeV3KkGegCK9CP1oswI/vQibS2GY7Em/sJJA==, } - engines: { node: '>=12' } + engines: { node: '>= 8' } - pathe@1.1.2: + launch-editor-middleware@2.12.0: resolution: { - integrity: sha512-whLdWMYL2TwI08hn8/ZqAbrVemu0LNaNNJZX73O6qaIdCTfXutsLhMkjdENX0qhsQ9uIimo4/aQOmXkoon2nDQ==, + integrity: sha512-SgU5QWoR+Grq1sQedvS/RlfoyO6bdvrztpP+2RRg8UzE7Jz2Yup5J4jiFfm2J9dYBCQYD26AbJVbjnvgwdL6Pw==, } - pathval@1.1.1: + launch-editor@2.12.0: resolution: { - integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==, + integrity: sha512-giOHXoOtifjdHqUamwKq6c49GzBdLjvxrd2D+Q4V6uOHopJv7p9VJxikDsQ/CBXZbEITgUqSVHXLTG3VhPP1Dg==, } - pbkdf2@3.1.2: + lazystream@1.0.1: resolution: { - integrity: sha512-iuh7L6jA7JEGu2WxDwtQP1ddOpaJNC4KlDEFfdQajSGgGPNi4OyDc2R7QnbY2bR9QjBVGwgvTdNJZoE7RaxUMA==, + integrity: sha512-b94GiNHQNy6JNTrt5w6zNyffMrNkXZb3KTkCZJb2V1xaEGCk093vkZ2jk3tpaeP33/OiXC+WvK9AxUebnf5nbw==, } - engines: { node: '>=0.12' } + engines: { node: '>= 0.6.3' } - perf-regexes@1.0.1: + lcov-parse@1.0.0: resolution: { - integrity: sha512-L7MXxUDtqr4PUaLFCDCXBfGV/6KLIuSEccizDI7JxT+c9x1G1v04BQ4+4oag84SHaCdrBgQAIs/Cqn+flwFPng==, + integrity: sha512-aprLII/vPzuQvYZnDRU78Fns9I2Ag3gi4Ipga/hxnVMCZC8DnR2nI7XBqrPoywGfxqIx/DgarGvDJZAD3YBTgQ==, } - engines: { node: '>=6.14' } + hasBin: true - performance-now@2.1.0: + lcov-result-merger@3.3.0: resolution: { - integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==, + integrity: sha512-Krg9p24jGaIT93RBMA8b5qLHDEiAXTavaTiEdMAZaJS93PsBKIcg/89cw/8rgeSfRuQX+I9x7h73SHFjCZ6cHg==, } + engines: { node: '>=10' } + hasBin: true - picocolors@0.2.1: + lead@1.0.0: resolution: { - integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==, + integrity: sha512-IpSVCk9AYvLHo5ctcIXxOBpMWUe+4TKN3VPWAKUbJikkmsGp0VrSM8IttVc32D6J4WUsiPE6aEFRNmIoF/gdow==, } + engines: { node: '>= 0.10' } - picocolors@1.0.1: + lerna@6.6.2: resolution: { - integrity: sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==, + integrity: sha512-W4qrGhcdutkRdHEaDf9eqp7u4JvI+1TwFy5woX6OI8WPe4PYBdxuILAsvhp614fUG41rKSGDKlOh+AWzdSidTg==, } + engines: { node: ^14.17.0 || >=16.0.0 } + hasBin: true - picocolors@1.1.1: + leven@3.1.0: resolution: { - integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, + integrity: sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==, } + engines: { node: '>=6' } - picomatch@2.3.1: + levn@0.4.1: resolution: { - integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, + integrity: sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==, } - engines: { node: '>=8.6' } + engines: { node: '>= 0.8.0' } - picomatch@3.0.1: + libnpmaccess@6.0.4: resolution: { - integrity: sha512-I3EurrIQMlRc9IaAZnqRR044Phh2DXY+55o7uJ0V+hYZAcQYSuFWsc9q5PvyDHUSCe1Qxn/iBz+78s86zWnGag==, + integrity: sha512-qZ3wcfIyUoW0+qSFkMBovcTrSGJ3ZeyvpR7d5N9pEYv/kXs8sHP2wiqEIXBKLFrZlmM0kR0RJD7mtfLngtlLag==, } - engines: { node: '>=10' } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - picomatch@4.0.2: + libnpmpublish@7.1.4: resolution: { - integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==, + integrity: sha512-mMntrhVwut5prP4rJ228eEbEyvIzLWhqFuY90j5QeXBCTT2pWSMno7Yo2S2qplPUr02zPurGH4heGLZ+wORczg==, } - engines: { node: '>=12' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - pidtree@0.3.1: + lilconfig@2.1.0: resolution: { - integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==, + integrity: sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==, } - engines: { node: '>=0.10' } - hasBin: true + engines: { node: '>=10' } - pidtree@0.6.0: + lines-and-columns@1.2.4: resolution: { - integrity: sha512-eG2dWTVw5bzqGRztnHExczNxt5VGsE6OwTeCG3fdUf9KBsZzO3R5OIIIzWR+iZA0NtZ+RDVdaoE2dK1cn6jH4g==, + integrity: sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==, } - engines: { node: '>=0.10' } - hasBin: true - pify@2.3.0: + lines-and-columns@2.0.4: resolution: { - integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==, + integrity: sha512-wM1+Z03eypVAVUCE7QdSqpVIvelbOakn1M0bPDoA4SGWPx3sNDVUiMo3L6To6WWGClB7VyXnhQ4Sn7gxiJbE6A==, } - engines: { node: '>=0.10.0' } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - pify@3.0.0: + listr2@8.2.4: resolution: { - integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==, + integrity: sha512-opevsywziHd3zHCVQGAj8zu+Z3yHNkkoYhWIGnq54RrCVwLz0MozotJEDnKsIBLvkfLGN6BLOyAeRrYI0pKA4g==, } - engines: { node: '>=4' } + engines: { node: '>=18.0.0' } - pify@4.0.1: + load-json-file@4.0.0: resolution: { - integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==, + integrity: sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==, } - engines: { node: '>=6' } + engines: { node: '>=4' } - pify@5.0.0: + load-json-file@6.2.0: resolution: { - integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==, + integrity: sha512-gUD/epcRms75Cw8RT1pUdHugZYM5ce64ucs2GEISABwkRsOQr0q2wm/MV2TKThycIe5e0ytRweW2RZxclogCdQ==, } - engines: { node: '>=10' } + engines: { node: '>=8' } - pinkie-promise@2.0.1: + load-json-file@7.0.1: resolution: { - integrity: sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==, + integrity: sha512-Gnxj3ev3mB5TkVBGad0JM6dmLiQL+o0t23JPBZ9sd+yvSLk05mFoqKBw5N8gbbkU4TNXyqCgIrl/VM17OgUIgQ==, } - engines: { node: '>=0.10.0' } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - pinkie@2.0.4: + loader-runner@4.3.1: resolution: { - integrity: sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==, + integrity: sha512-IWqP2SCPhyVFTBtRcgMHdzlf9ul25NwaFx4wCEH/KjAXuuHY4yNjvPXsBokp8jCB936PyWRaPKUNh8NvylLp2Q==, } - engines: { node: '>=0.10.0' } + engines: { node: '>=6.11.5' } - pirates@4.0.6: + loader-utils@1.4.2: resolution: { - integrity: sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==, + integrity: sha512-I5d00Pd/jwMD2QCduo657+YM/6L3KZu++pmX9VFncxaxvHcru9jx1lBaFft+r4Mt2jK0Yhp41XlRAihzPxHNCg==, } - engines: { node: '>= 6' } + engines: { node: '>=4.0.0' } - piscina@4.5.1: + loader-utils@2.0.4: resolution: { - integrity: sha512-DVhySLPfqAW+uRH9dF0bjA2xEWr5ANLAzkYXx5adSLMFnwssSIVJYhg0FlvgYsnT/khILQJ3WkjqbAlBvt+maw==, + integrity: sha512-xXqpXoINfFhgua9xiqD8fPFHgkoq1mmmpE92WlDbm9rNRd/EbRb+Gqf908T2DMfuHjjJlksiK2RbHVOdD/MqSw==, } + engines: { node: '>=8.9.0' } - piscina@4.6.1: + locate-path@2.0.0: resolution: { - integrity: sha512-z30AwWGtQE+Apr+2WBZensP2lIvwoaMcOPkQlIEmSGMJNUvaYACylPYrQM6wSdUNJlnDVMSpLv7xTMJqlVshOA==, + integrity: sha512-NCI2kiDkyR7VeEKm27Kda/iQHyKJe1Bu0FlTbYp3CqJu+9IFe9bLyAjMxf5ZDDbEg+iMPzB5zYyUTSm8wVTKmA==, } + engines: { node: '>=4' } - pkg-dir@3.0.0: + locate-path@3.0.0: resolution: { - integrity: sha512-/E57AYkoeQ25qkxMj5PBOVgF8Kiu/h7cYS30Z5+R7WaiCCBfLq58ZI/dSeaEKb9WVJV5n/03QwrN3IeWIFllvw==, + integrity: sha512-7AO748wWnIhNqAuaty2ZWHkQHRSNfPVIsPIfwEOWO22AmaoVrWavlOcMR5nzTLNYvp36X220/maaRsrec1G65A==, } engines: { node: '>=6' } - pkg-dir@4.2.0: + locate-path@5.0.0: resolution: { - integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==, + integrity: sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==, } engines: { node: '>=8' } - pkg-dir@5.0.0: + locate-path@6.0.0: resolution: { - integrity: sha512-NPE8TDbzl/3YQYY7CSS228s3g2ollTFnc+Qi3tqmqJp9Vg2ovUpixcJEo2HJScN2Ez+kEaal6y70c0ehqJBJeA==, + integrity: sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==, } engines: { node: '>=10' } - pkg-dir@7.0.0: - resolution: - { - integrity: sha512-Ie9z/WINcxxLp27BKOCHGde4ITq9UklYKDzVo1nhk5sqGEXU3FpkwP5GM2voTGJkGd9B3Otl+Q4uwSOeSUtOBA==, - } - engines: { node: '>=14.16' } - - pkg-types@1.1.3: + lodash.debounce@4.0.8: resolution: { - integrity: sha512-+JrgthZG6m3ckicaOB74TwQ+tBWsFl3qVQg7mN8ulwSOElJ7gBhKzj2VkCPnZ4NlF6kEquYU+RIYNVAvzd54UA==, + integrity: sha512-FT1yDzDYEoYWhnSGnpE/4Kj1fLZkDFyqRb7fNt6FdYOSxlUWAtp42Eh6Wb0rGIv/m9Bgo7x4GhQbm5Ys4SG5ow==, } - plur@5.1.0: + lodash.defaultsdeep@4.6.1: resolution: { - integrity: sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==, + integrity: sha512-3j8wdDzYuWO3lM3Reg03MuQR957t287Rpcxp1njpEa8oDrikb+FwGdW3n+FELh/A6qib6yPit0j/pv9G/yeAqA==, } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - portfinder@1.0.32: + lodash.flattendeep@4.4.0: resolution: { - integrity: sha512-on2ZJVVDXRADWE6jnQaX0ioEylzgBpQk8r55NE4wjXW1ZxO+BgDlY6DXwj20i0V8eB4SenDQ00WEaxfiIQPcxg==, + integrity: sha512-uHaJFihxmJcEX3kT4I23ABqKKalJ/zDrDg0lsFtc1h+3uw49SIJ5beyhx5ExVRti3AvKoOJngIj7xz3oylPdWQ==, } - engines: { node: '>= 0.12.0' } - possible-typed-array-names@1.0.0: + lodash.ismatch@4.4.0: resolution: { - integrity: sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==, + integrity: sha512-fPMfXjGQEV9Xsq/8MTSgUf255gawYRbjwMyDbcvDhXgV7enSZA0hynz6vMPnpAb5iONEzBHBPsT+0zes5Z301g==, } - engines: { node: '>= 0.4' } - postcss-calc@8.2.4: + lodash.isplainobject@4.0.6: resolution: { - integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==, + integrity: sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==, } - peerDependencies: - postcss: ^8.2.2 - postcss-colormin@5.3.1: + lodash.kebabcase@4.1.1: resolution: { - integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==, + integrity: sha512-N8XRTIMMqqDgSy4VLKPnJ/+hpGZN+PHQiJnSenYqPaVV/NCqEogTnAdZLQiGKhxX+JCs8waWq2t1XHWKOmlY8g==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - postcss-convert-values@5.1.3: + lodash.mapvalues@4.6.0: resolution: { - integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==, + integrity: sha512-JPFqXFeZQ7BfS00H58kClY7SPVeHertPE0lNuCyZ26/XlN8TvakYD7b9bGyNmXbT/D3BbtPAAmq90gPWqLkxlQ==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - postcss-discard-comments@5.1.2: + lodash.memoize@4.1.2: resolution: { - integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==, + integrity: sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - postcss-discard-duplicates@5.1.0: + lodash.merge@4.6.2: resolution: { - integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==, + integrity: sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - postcss-discard-empty@5.1.1: + lodash.uniq@4.5.0: resolution: { - integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==, + integrity: sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - postcss-discard-overridden@5.1.0: + lodash@4.17.21: resolution: { - integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==, + integrity: sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - postcss-load-config@3.1.4: + log-driver@1.2.7: resolution: { - integrity: sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==, + integrity: sha512-U7KCmLdqsGHBLeWqYlFA0V0Sl6P08EE1ZrmA9cxjUE0WVqT9qnyVDPz1kzpFEP0jdJuFnasWIfSd7fsaNXkpbg==, } - engines: { node: '>= 10' } - peerDependencies: - postcss: '>=8.0.9' - ts-node: '>=9.0.0' - peerDependenciesMeta: - postcss: - optional: true - ts-node: - optional: true + engines: { node: '>=0.8.6' } - postcss-loader@6.2.1: + log-symbols@4.0.0: resolution: { - integrity: sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==, + integrity: sha512-FN8JBzLx6CzeMrB0tg6pqlGU1wCrXW+ZXGH481kfsBqer0hToTIiHdjH4Mq8xJUbvATujKCvaREGWpGUionraA==, } - engines: { node: '>= 12.13.0' } - peerDependencies: - postcss: ^7.0.0 || ^8.0.1 - webpack: ^5.0.0 + engines: { node: '>=10' } - postcss-loader@8.1.1: + log-symbols@4.1.0: resolution: { - integrity: sha512-0IeqyAsG6tYiDRCYKQJLAmgQr47DX6N7sFSWvQxt6AcupX8DIdmykuk/o/tx0Lze3ErGHJEp5OSRxrelC6+NdQ==, + integrity: sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==, } - engines: { node: '>= 18.12.0' } - peerDependencies: - '@rspack/core': 0.x || 1.x - postcss: ^7.0.0 || ^8.0.1 - webpack: ^5.0.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - webpack: - optional: true + engines: { node: '>=10' } - postcss-media-query-parser@0.2.3: + log-update@2.3.0: resolution: { - integrity: sha512-3sOlxmbKcSHMjlUXQZKQ06jOswE7oVkXPxmZdoB1r5l0q6gTFTQSHxNxOrCccElbW7dxNytifNEo8qidX2Vsig==, + integrity: sha512-vlP11XfFGyeNQlmEn9tJ66rEW1coA/79m5z6BCkudjbAGE83uhAcGYrBFwfs3AdLiLzGRusRPAbSPK9xZteCmg==, } + engines: { node: '>=4' } - postcss-merge-longhand@5.1.7: + log-update@6.1.0: resolution: { - integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==, + integrity: sha512-9ie8ItPR6tjY5uYJh8K/Zrv/RMZ5VOlOWvtZdEHYSTFKZfIBPQa9tOAEeAWhd+AnIneLJ22w5fjOYtoutpWq5w==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + engines: { node: '>=18' } - postcss-merge-rules@5.1.4: + loupe@2.3.7: resolution: { - integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==, + integrity: sha512-zSMINGVYkdpYSOBmLi0D1Uo7JU9nVdQKrHxC8eYlV+9YKK9WePqAlL7lSlorG/U2Fw1w0hTBmaa/jrQ3UbPHtA==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - postcss-minify-font-values@5.1.0: + lower-case@2.0.2: resolution: { - integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==, + integrity: sha512-7fm3l3NAF9WfN6W3JOmf5drwpVqX78JtoGJ3A6W0a6ZnldM41w2fV5D490psKFTpMds8TJse/eHLFFsNHHjHgg==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - postcss-minify-gradients@5.1.1: + lru-cache@10.4.3: resolution: { - integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==, + integrity: sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - postcss-minify-params@5.1.4: + lru-cache@4.1.5: resolution: { - integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==, + integrity: sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - postcss-minify-selectors@5.2.1: + lru-cache@5.1.1: resolution: { - integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==, + integrity: sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - postcss-modules-extract-imports@2.0.0: + lru-cache@6.0.0: resolution: { - integrity: sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==, + integrity: sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==, } - engines: { node: '>= 6' } + engines: { node: '>=10' } - postcss-modules-extract-imports@3.1.0: + lru-cache@7.18.3: resolution: { - integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==, + integrity: sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==, } - engines: { node: ^10 || ^12 || >= 14 } - peerDependencies: - postcss: ^8.1.0 + engines: { node: '>=12' } - postcss-modules-local-by-default@3.0.3: + lunr@2.3.9: resolution: { - integrity: sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==, + integrity: sha512-zTU3DaZaF3Rt9rhN3uBMGQD3dD2/vFQqnvZCDv4dl5iOzq2IZQqTxu90r4E5J+nP70J3ilqVCrbho2eWaeW8Ow==, } - engines: { node: '>= 6' } - postcss-modules-local-by-default@4.0.5: + magic-string@0.25.9: resolution: { - integrity: sha512-6MieY7sIfTK0hYfafw1OMEG+2bg8Q1ocHCpoWLqOKj3JXlKu4G7btkmM/B7lFubYkYWmRSPLZi5chid63ZaZYw==, + integrity: sha512-RmF0AsMzgt25qzqqLc1+MbHmhdx0ojF2Fvs4XnOqz2ZOBXzzkEwc/dJQZCYHAn7v1jbVOjAZfK8msRn4BxO4VQ==, } - engines: { node: ^10 || ^12 || >= 14 } - peerDependencies: - postcss: ^8.1.0 - postcss-modules-scope@2.2.0: + magic-string@0.30.11: resolution: { - integrity: sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==, + integrity: sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==, } - engines: { node: '>= 6' } - postcss-modules-scope@3.2.0: + magic-string@0.30.21: resolution: { - integrity: sha512-oq+g1ssrsZOsx9M96c5w8laRmvEu9C3adDSjI8oTcbfkrTE8hx/zfyobUoWIxaKPO8bt6S62kxpw5GqypEw1QQ==, + integrity: sha512-vd2F4YUyEXKGcLHoq+TEyCjxueSeHnFxyyjNp80yg0XV4vUhnDer/lvvlqM/arB5bXQN5K2/3oinyCRyx8T2CQ==, } - engines: { node: ^10 || ^12 || >= 14 } - peerDependencies: - postcss: ^8.1.0 - postcss-modules-values@3.0.0: + make-dir@2.1.0: resolution: { - integrity: sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==, + integrity: sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==, } + engines: { node: '>=6' } - postcss-modules-values@4.0.0: + make-dir@3.1.0: resolution: { - integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==, + integrity: sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==, } - engines: { node: ^10 || ^12 || >= 14 } - peerDependencies: - postcss: ^8.1.0 + engines: { node: '>=8' } - postcss-modules@4.3.1: + make-dir@4.0.0: resolution: { - integrity: sha512-ItUhSUxBBdNamkT3KzIZwYNNRFKmkJrofvC2nWab3CPKhYBQ1f27XXh1PAPE27Psx58jeelPsxWB/+og+KEH0Q==, + integrity: sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==, } - peerDependencies: - postcss: ^8.0.0 + engines: { node: '>=10' } - postcss-normalize-charset@5.1.0: + make-error@1.3.6: resolution: { - integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==, + integrity: sha512-s8UhlNe7vPKomQhC1qFelMokr/Sc3AgNbso3n74mVPA5LTZwkB9NlXf4XPamLxJE8h0gh73rM94xvwRT2CVInw==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - postcss-normalize-display-values@5.1.0: + make-fetch-happen@10.2.1: resolution: { - integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==, + integrity: sha512-NgOPbRiaQM10DYXvN3/hhGVI2M5MtITFryzBGxHM5p4wnFxsVCbxkrBrDsk+EZ5OB4jEOT7AjDxtdF+KVEFT7w==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - postcss-normalize-positions@5.1.1: + make-fetch-happen@11.1.1: resolution: { - integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==, + integrity: sha512-rLWS7GCSTcEujjVBs2YqG7Y4643u8ucvCJeSRqiLYhesrDuzeuFIk37xREzAsfQaqzl8b9rNCE4m6J8tvX4Q8w==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - postcss-normalize-repeat-style@5.1.1: + make-fetch-happen@13.0.1: resolution: { - integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==, + integrity: sha512-cKTUFc/rbKUd/9meOvgrpJ2WrNzymt6jfRDdwg5UCnVzv9dTpEj9JS5m3wtziXVCjluIXyL8pcaukYqezIzZQA==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + engines: { node: ^16.14.0 || >=18.0.0 } - postcss-normalize-string@5.1.0: + makeerror@1.0.12: resolution: { - integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==, + integrity: sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - postcss-normalize-timing-functions@5.1.0: + map-obj@1.0.1: resolution: { - integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==, + integrity: sha512-7N/q3lyZ+LVCp7PzuxrJr4KMbBE2hW7BT7YNia330OFxIf4d3r5zVpicP2650l7CPN6RM9zOJRl3NGpqSiw3Eg==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + engines: { node: '>=0.10.0' } - postcss-normalize-unicode@5.1.1: + map-obj@4.3.0: resolution: { - integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==, + integrity: sha512-hdN1wVrZbb29eBGiGjJbeP8JbKjq1urkHJ/LIP/NY48MZ1QVXUsQBV1G1zvYFHn1XE06cwjBsOI2K3Ulnj1YXQ==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + engines: { node: '>=8' } - postcss-normalize-url@5.1.0: + marked@4.3.0: resolution: { - integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==, + integrity: sha512-PRsaiG84bK+AMvxziE/lCFss8juXjNaWzVbN5tXAm4XjeaS9NAHhop+PjQxz2A9h8Q4M/xGmzP8vqNwy6JeK0A==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + engines: { node: '>= 12' } + hasBin: true - postcss-normalize-whitespace@5.1.1: + matcher@5.0.0: resolution: { - integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==, + integrity: sha512-s2EMBOWtXFc8dgqvoAzKJXxNHibcdJMV0gwqKUaw9E2JBJuGUK7DrNKrA6g/i+v72TT16+6sVm5mS3thaMLQUw==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - postcss-ordered-values@5.1.3: + math-intrinsics@1.1.0: resolution: { - integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==, + integrity: sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + engines: { node: '>= 0.4' } - postcss-reduce-initial@5.1.2: + md5-hex@3.0.1: resolution: { - integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==, + integrity: sha512-BUiRtTtV39LIJwinWBjqVsU9xhdnz7/i889V859IBFpuqGAj6LuOvHv5XLbgZ2R7ptJoJaEcxkv88/h25T7Ciw==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + engines: { node: '>=8' } - postcss-reduce-transforms@5.1.0: + mdn-data@2.0.14: resolution: { - integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==, + integrity: sha512-dn6wd0uw5GsdswPFfsgMp5NSB0/aDe6fK94YJV/AJDYXL6HVLWBsxeq7js7Ad+mU2K9LAlwpk6kN2D5mwCPVow==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - postcss-safe-parser@6.0.0: + mdn-data@2.0.30: resolution: { - integrity: sha512-FARHN8pwH+WiS2OPCxJI8FuRJpTVnn6ZNFiqAM2aeW2LwTHWWmWgIyKC6cUo0L8aeKiF/14MNvnpls6R2PBeMQ==, + integrity: sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==, } - engines: { node: '>=12.0' } - peerDependencies: - postcss: ^8.3.3 - postcss-scss@4.0.9: + media-typer@0.3.0: resolution: { - integrity: sha512-AjKOeiwAitL/MXxQW2DliT28EKukvvbEWx3LBmJIRN8KfBGZbRTxNYW0kSqi1COiTZ57nZ9NW06S6ux//N1c9A==, + integrity: sha512-dq+qelQ9akHpcOl/gUVRTxVIOkAJ1wR3QAvb4RsVjS8oVoFjDGTc679wJYmUmknUF5HwMLOgb5O+a3KxfWapPQ==, } - engines: { node: '>=12.0' } - peerDependencies: - postcss: ^8.4.29 + engines: { node: '>= 0.6' } - postcss-selector-parser@6.1.0: + memfs@3.5.3: resolution: { - integrity: sha512-UMz42UD0UY0EApS0ZL9o1XnLhSTtvvvLe5Dc2H2O56fvRZi+KulDyf5ctDhhtYJBGKStV2FL1fy6253cmLgqVQ==, + integrity: sha512-UERzLsxzllchadvbPs5aolHh65ISpKpM+ccLbOJ8/vvpBKmAWf+la7dXFy7Mr0ySHbdHrFv5kGFCUHHe6GFEmw==, } - engines: { node: '>=4' } + engines: { node: '>= 4.0.0' } - postcss-styl@0.12.3: + memoize@10.2.0: resolution: { - integrity: sha512-8I7Cd8sxiEITIp32xBK4K/Aj1ukX6vuWnx8oY/oAH35NfQI4OZaY5nd68Yx8HeN5S49uhQ6DL0rNk0ZBu/TaLg==, + integrity: sha512-DeC6b7QBrZsRs3Y02A6A7lQyzFbsQbqgjI6UW0GigGWV+u1s25TycMr0XHZE4cJce7rY/vyw2ctMQqfDkIhUEA==, } - engines: { node: ^8.10.0 || ^10.13.0 || ^11.10.1 || >=12.13.0 } + engines: { node: '>=18' } - postcss-svgo@5.1.0: + memory-fs@0.4.1: resolution: { - integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==, + integrity: sha512-cda4JKCxReDXFXRqOHPQscuIYg1PvxbE2S2GP45rnwfEK+vZaXC8C1OFvdHIbgw0DLzowXGVoxLaAmlgRy14GQ==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 - postcss-unique-selectors@5.1.1: + memorystream@0.3.1: resolution: { - integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==, - } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + integrity: sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==, + } + engines: { node: '>= 0.10.0' } - postcss-value-parser@4.2.0: + meow@8.1.2: resolution: { - integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==, + integrity: sha512-r85E3NdZ+mpYk1C6RjPFEMSE+s1iZMuHtsHAqY0DT3jZczl0diWUZ8g6oU7h0M9cD2EL+PzaYghhCLzR0ZNn5Q==, } + engines: { node: '>=10' } - postcss@7.0.39: + merge-descriptors@1.0.3: resolution: { - integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==, + integrity: sha512-gaNvAS7TZ897/rVaZ0nMtAyxNyi/pdbjbAwUpFQpN70GqnVfOiXpeUUMKRBmzXaSQ8DdTX4/0ms62r2K+hE6mQ==, } - engines: { node: '>=6.0.0' } - postcss@8.4.38: + merge-source-map@1.1.0: resolution: { - integrity: sha512-Wglpdk03BSfXkHoQa3b/oulrotAkwrlLDRSOb9D0bN86FdRyE9lppSp33aHNPgBa0JKCoB+drFLZkQoRRYae5A==, + integrity: sha512-Qkcp7P2ygktpMPh2mCQZaf3jhN6D3Z/qVZHSdWvQ+2Ef5HgRAPBO57A77+ENm0CPx2+1Ce/MYKi3ymqdfuqibw==, } - engines: { node: ^10 || ^12 || >=14 } - postcss@8.4.41: + merge-stream@2.0.0: resolution: { - integrity: sha512-TesUflQ0WKZqAvg52PWL6kHgLKP6xB6heTOdoYM0Wt2UHyxNa4K25EZZMgKns3BH1RLVbZCREPpLY0rhnNoHVQ==, + integrity: sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==, } - engines: { node: ^10 || ^12 || >=14 } - postcss@8.4.49: + merge2@1.4.1: resolution: { - integrity: sha512-OCVPnIObs4N29kxTjzLfUryOkvZEq+pf8jTF0lg8E7uETuWHA+v7j3c/xJmiqpX450191LlmZfUKkXxkTry7nA==, + integrity: sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==, } - engines: { node: ^10 || ^12 || >=14 } + engines: { node: '>= 8' } - prelude-ls@1.2.1: + methods@1.1.2: resolution: { - integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, + integrity: sha512-iclAHeNqNm68zFtnZ0e+1L2yUIdvzNoauKU4WBA3VvH/vPFieF7qfRlwUZU+DA9P9bPXIS90ulxoUoCH23sV2w==, } - engines: { node: '>= 0.8.0' } + engines: { node: '>= 0.6' } - prettier-linter-helpers@1.0.0: + micromatch@4.0.8: resolution: { - integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==, + integrity: sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==, } - engines: { node: '>=6.0.0' } + engines: { node: '>=8.6' } - prettier@2.8.8: + mime-db@1.52.0: resolution: { - integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==, + integrity: sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==, } - engines: { node: '>=10.13.0' } - hasBin: true + engines: { node: '>= 0.6' } - prettier@3.3.3: + mime-db@1.54.0: resolution: { - integrity: sha512-i2tDNA0O5IrMO757lfrdQZCc2jPNDVntV0m/+4whiDfWaTKfMNgR7Qz0NAeGz/nRqF4m5/6CLzbP4/liHt12Ew==, + integrity: sha512-aU5EJuIN2WDemCcAp2vFBfp/m4EAhWJnUNSSw0ixs7/kXbd6Pg64EmwJkNdFhB8aWt1sH2CTXrLxo/iAGV3oPQ==, } - engines: { node: '>=14' } - hasBin: true + engines: { node: '>= 0.6' } - pretty-error@4.0.0: + mime-types@2.1.35: resolution: { - integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==, + integrity: sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==, } + engines: { node: '>= 0.6' } - pretty-format@27.5.1: + mime@1.6.0: resolution: { - integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==, + integrity: sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } + engines: { node: '>=4' } + hasBin: true - pretty-format@29.4.3: + mimic-fn@1.2.0: resolution: { - integrity: sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==, + integrity: sha512-jf84uxzwiuiIVKiOLpfYk7N46TSy8ubTonmneY9vrpHNAnp0QBt2BxWV9dO3/j+BoVAb+a5G6YDPW3M5HOdMWQ==, } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + engines: { node: '>=4' } - pretty-format@29.7.0: + mimic-fn@2.1.0: resolution: { - integrity: sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==, + integrity: sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==, } - engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } + engines: { node: '>=6' } - pretty-ms@9.0.0: + mimic-function@5.0.1: resolution: { - integrity: sha512-E9e9HJ9R9NasGOgPaPE8VMeiPKAyWR5jcFpNnwIejslIhWqdqOrb2wShBsncMPUb+BcCd2OPYfh7p2W6oemTng==, + integrity: sha512-VP79XUPxV2CigYP3jWwAUFSku2aKqBH7uTAapFWCBqutsbmDo96KY5o8uh6U+/YSIn5OxJnXp73beVkpqMIGhA==, } engines: { node: '>=18' } - private@0.1.8: + min-indent@1.0.1: resolution: { - integrity: sha512-VvivMrbvd2nKkiG38qjULzlc+4Vx4wm/whI9pQD35YrARNnhxeiRktSOhSukRLFNlzg6Br/cJPet5J/u19r/mg==, + integrity: sha512-I9jwMn07Sy/IwOj3zVkVik2JTvgpaykDZEigL6Rx6N9LbMywwUSMtxET+7lVoDLLd3O3IXwJwvuuns8UB/HeAg==, } - engines: { node: '>= 0.6' } + engines: { node: '>=4' } - proc-log@2.0.1: + mini-css-extract-plugin@2.9.4: resolution: { - integrity: sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==, + integrity: sha512-ZWYT7ln73Hptxqxk2DxPU9MmapXRhxkJD6tkSR04dnQxm8BGu2hzgKLugK5yySD97u/8yy7Ma7E76k9ZdvtjkQ==, } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + engines: { node: '>= 12.13.0' } + peerDependencies: + webpack: ^5.0.0 - proc-log@3.0.0: + minimalistic-assert@1.0.1: resolution: { - integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==, + integrity: sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - proc-log@4.2.0: + minimatch@3.0.4: resolution: { - integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==, + integrity: sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - process-nextick-args@2.0.1: + minimatch@3.0.5: resolution: { - integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==, + integrity: sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==, } - process-on-spawn@1.0.0: + minimatch@3.1.2: resolution: { - integrity: sha512-1WsPDsUSMmZH5LeMLegqkPDrsGgsWwk1Exipy2hvB0o/F0ASzbpIctSCcZIK1ykJvtTJULEH+20WOFjMvGnCTg==, + integrity: sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==, } - engines: { node: '>=8' } - process@0.11.10: + minimatch@5.1.6: resolution: { - integrity: sha512-cdGef/drWFoydD1JsMzuFf8100nZl+GT+yacc2bEced5f9Rjk4z+WtFUTBu9PhOi9j/jfmBPu0mMEY4wIdAF8A==, + integrity: sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==, } - engines: { node: '>= 0.6.0' } + engines: { node: '>=10' } - progress-webpack-plugin@1.0.16: + minimatch@6.2.0: resolution: { - integrity: sha512-sdiHuuKOzELcBANHfrupYo+r99iPRyOnw15qX+rNlVUqXGfjXdH4IgxriKwG1kNJwVswKQHMdj1hYZMcb9jFaA==, + integrity: sha512-sauLxniAmvnhhRjFwPNnJKaPFYyddAgbYdeUpHULtCT/GhzdCx/MDNy+Y40lBxTQUrMzDE8e0S43Z5uqfO0REg==, } - engines: { node: '>= 10.13.0' } - peerDependencies: - webpack: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + engines: { node: '>=10' } - progress@2.0.3: + minimatch@8.0.4: resolution: { - integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==, + integrity: sha512-W0Wvr9HyFXZRGIDgCicunpQ299OKXs9RgZfaukz4qAW/pJhcpUfupc9c+OObPOFueNy8VSrZgEmDtk6Kh4WzDA==, } - engines: { node: '>=0.4.0' } + engines: { node: '>=16 || 14 >=14.17' } - promise-all-reject-late@1.0.1: + minimatch@9.0.1: resolution: { - integrity: sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==, + integrity: sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==, } + engines: { node: '>=16 || 14 >=14.17' } - promise-call-limit@1.0.2: + minimatch@9.0.5: resolution: { - integrity: sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==, + integrity: sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==, } + engines: { node: '>=16 || 14 >=14.17' } - promise-inflight@1.0.1: + minimist-options@4.1.0: resolution: { - integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==, + integrity: sha512-Q4r8ghd80yhO/0j1O3B2BjweX3fiHg9cdOwjJd2J76Q135c+NDxGCqdYKQ1SKBuFfgWbAUzBfvYjPUEeNgqN1A==, } - peerDependencies: - bluebird: '*' - peerDependenciesMeta: - bluebird: - optional: true + engines: { node: '>= 6' } - promise-retry@2.0.1: + minimist@1.2.8: resolution: { - integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==, + integrity: sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==, } - engines: { node: '>=10' } - promise.series@0.2.0: + minipass-collect@1.0.2: resolution: { - integrity: sha512-VWQJyU2bcDTgZw8kpfBpB/ejZASlCrzwz5f2hjb/zlujOEB4oeiAhHygAWq8ubsX2GVkD4kCU5V2dwOTaCY5EQ==, + integrity: sha512-6T6lH0H8OG9kITm/Jm6tdooIbogG9e0tLgpY6mphXSm/A9u8Nq1ryBG+Qspiub9LjWlBPsPS3tWQ/Botq4FdxA==, } - engines: { node: '>=0.12' } + engines: { node: '>= 8' } - prompts@2.4.2: + minipass-collect@2.0.1: resolution: { - integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==, + integrity: sha512-D7V8PO9oaz7PWGLbCACuI1qEOsq7UKfLotx/C0Aet43fCUB/wfQ7DYeq2oR/svFJGYDHPr38SHATeaj/ZoKHKw==, } - engines: { node: '>= 6' } + engines: { node: '>=16 || 14 >=14.17' } - promzard@0.3.0: + minipass-fetch@2.1.2: resolution: { - integrity: sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==, + integrity: sha512-LT49Zi2/WMROHYoqGgdlQIZh8mLPZmOrN2NdJjMXxYe4nkN6FUyuPuOAOedNJDrx0IRGg9+4guZewtp8hE6TxA==, } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - prop-types@15.8.1: + minipass-fetch@3.0.5: resolution: { - integrity: sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==, + integrity: sha512-2N8elDQAtSnFV0Dk7gt15KHsS0Fyz6CbYZ360h0WTYV1Ty46li3rAXVOQj1THMNLdmrD9Vt5pBPtWtVkpwGBqg==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - proto-list@1.2.4: + minipass-flush@1.0.5: resolution: { - integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==, + integrity: sha512-JmQSYYpPUqX5Jyn1mXaRwOda1uQ8HP5KAT/oDSLCzt1BYRhQU0/hDtsB1ufZfEEzMZ9aAVmsBw8+FWsIXlClWw==, } + engines: { node: '>= 8' } - protocols@2.0.1: + minipass-json-stream@1.0.2: resolution: { - integrity: sha512-/XJ368cyBJ7fzLMwLKv1e4vLxOju2MNAIokcr7meSaNcVbWz/CPcW22cP04mwxOErdA5mwjA8Q6w/cdAQxVn7Q==, + integrity: sha512-myxeeTm57lYs8pH2nxPzmEEg8DGIgW+9mv6D4JZD2pa81I/OBjeU7PtICXV6c9eRGTA5JMDsuIPUZRCyBMYNhg==, } - protractor@7.0.0: + minipass-pipeline@1.2.4: resolution: { - integrity: sha512-UqkFjivi4GcvUQYzqGYNe0mLzfn5jiLmO8w9nMhQoJRLhy2grJonpga2IWhI6yJO30LibWXJJtA4MOIZD2GgZw==, + integrity: sha512-xuIq7cIOt09RPRJ19gdi4b+RiNvDFYe5JH+ggNvBqGqpQXcru3PcRmOZuHBKWK1Txf9+cQ+HMVN4d6z46LZP7A==, } - engines: { node: '>=10.13.x' } - deprecated: We have news to share - Protractor is deprecated and will reach end-of-life by Summer 2023. To learn more and find out about other options please refer to this post on the Angular blog. Thank you for using and contributing to Protractor. https://goo.gle/state-of-e2e-in-angular - hasBin: true + engines: { node: '>=8' } - proxy-addr@2.0.7: + minipass-sized@1.0.3: resolution: { - integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==, + integrity: sha512-MbkQQ2CTiBMlA2Dm/5cY+9SWFEN8pzzOXi6rlM5Xxq0Yqbda5ZQy9sU75a673FE9ZK0Zsbr6Y5iP6u9nktfg2g==, } - engines: { node: '>= 0.10' } + engines: { node: '>=8' } - proxy-from-env@1.1.0: + minipass@3.3.6: resolution: { - integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, + integrity: sha512-DxiNidxSEK+tHG6zOIklvNOwm3hvCrbUrdtzY74U6HKTJxvIDfOUL5W5P2Ghd3DTkhhKPYGqeNUIh5qcM4YBfw==, } + engines: { node: '>=8' } - prr@1.0.1: + minipass@4.2.8: resolution: { - integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==, + integrity: sha512-fNzuVyifolSLFL4NzpF+wEF4qrgqaaKX0haXPQEdQ7NKAN+WecoKMHV09YcuL/DHxrUsYQOK3MiuDf7Ip2OXfQ==, } + engines: { node: '>=8' } - pseudomap@1.0.2: + minipass@5.0.0: resolution: { - integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==, + integrity: sha512-3FnjYuehv9k6ovOEbyOswadCDPX1piCfhV8ncmYtHOjuPwylVWsghTLo7rabjC3Rx5xD4HDx8Wm1xnMF7S5qFQ==, } + engines: { node: '>=8' } - psl@1.9.0: + minipass@7.1.2: resolution: { - integrity: sha512-E/ZsdU4HLs/68gYzgGTkMicWTLPdAftJLfJFlLUAAKZGkStNU72sZjT66SnMDVOfOWY/YAoiD7Jxa9iHvngcag==, + integrity: sha512-qOOzS1cBTWYF4BH8fVePDBOO9iptMnGUEZwNc/cMWnTV2nVLZ7VoNWEPHkYczZA0pdoA7dl6e7FL659nX9S2aw==, } + engines: { node: '>=16 || 14 >=14.17' } - public-encrypt@4.0.3: + minizlib@2.1.2: resolution: { - integrity: sha512-zVpa8oKZSz5bTMTFClc1fQOnyyEzpl5ozpi1B5YcvBrdohMjH2rfsBtyXcuNuwjsDIXmBYlF2N5FlJYhR29t8Q==, + integrity: sha512-bAxsR8BVfj60DWXHE3u30oHzfl4G7khkSuPW+qvpd7jFRHm7dLxOjUk1EHACJ/hxLY8phGJ0YhYHZo7jil7Qdg==, } + engines: { node: '>= 8' } - pump@2.0.1: + minizlib@3.1.0: resolution: { - integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==, + integrity: sha512-KZxYo1BUkWD2TVFLr0MQoM8vUUigWD3LlD83a/75BqC+4qE0Hb1Vo5v1FgcfaNXvfXzr+5EhQ6ing/CaBijTlw==, } + engines: { node: '>= 18' } - pump@3.0.0: + mkdirp-infer-owner@2.0.0: resolution: { - integrity: sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==, + integrity: sha512-sdqtiFt3lkOaYvTXSRIUjkIdPTcxgv5+fgqYE/5qgwdw12cOrAuzzgzvVExIkH/ul1oeHN3bCLOWSG3XOqbKKw==, } + engines: { node: '>=10' } - pumpify@1.5.1: + mkdirp@1.0.4: resolution: { - integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==, + integrity: sha512-vVqVZQyf3WLx2Shd0qJ9xuvqgAyKPLAiqITEtqW0oIUjzo3PePDd6fW9iFz30ef7Ysp/oiWqbhszeGWW2T6Gzw==, } + engines: { node: '>=10' } + hasBin: true - punycode@1.4.1: + mocha@8.4.0: resolution: { - integrity: sha512-jmYNElW7yvO7TV33CjSmvSiE2yco3bV2czu/OzDKdMNVZQWfxCblURLhf+47syQRBntjfLdd/H0egrzIG+oaFQ==, + integrity: sha512-hJaO0mwDXmZS4ghXsvPVriOhsxQ7ofcpQdm8dE+jISUOKopitvnXFQmpRR7jd2K6VBG6E26gU3IAbXXGIbu4sQ==, } + engines: { node: '>= 10.12.0' } + hasBin: true - punycode@2.3.1: + mochapack@2.1.5: resolution: { - integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, + integrity: sha512-vy9Z2om/BsCaJACaChh9zjhe/g48z6nrJJKBUzke/p3nKg+e20TNDaCifxJIN8fjWYZ608A6QUeg/2JNRQBI5A==, } - engines: { node: '>=6' } + hasBin: true + peerDependencies: + mocha: '>=6' + webpack: ^4.0.0 || ^5.0.0 - q@1.4.1: + modify-values@1.0.1: resolution: { - integrity: sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==, + integrity: sha512-xV2bxeN6F7oYjZWTe/YPAy6MN2M+sL4u/Rlm2AHCIVGfo2p1yGmBHQ6vHehl4bRTZBdHu3TSkWdYgkwpYzAGSw==, } - engines: { node: '>=0.6.0', teleport: '>=0.2.0' } + engines: { node: '>=0.10.0' } - q@1.5.1: + module-alias@2.2.3: resolution: { - integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==, + integrity: sha512-23g5BFj4zdQL/b6tor7Ji+QY4pEfNH784BMslY9Qb0UnJWRAt+lQGLYmRaM0KDBwIG23ffEBELhZDP2rhi9f/Q==, } - engines: { node: '>=0.6.0', teleport: '>=0.2.0' } - qjobs@1.2.0: + mrmime@2.0.1: resolution: { - integrity: sha512-8YOJEHtxpySA3fFDyCRxA+UUV+fA+rTWnuWvylOK/NCjhY+b4ocCtmu8TtsWb+mYeU+GCHf/S66KZF/AsteKHg==, + integrity: sha512-Y3wQdFg2Va6etvQ5I82yUhGdsKrcYox6p7FfL1LbK2J4V01F9TGlepTIhnK24t7koZibmg82KGglhA1XK5IsLQ==, } - engines: { node: '>=0.9' } + engines: { node: '>=10' } - qs@6.11.0: + ms@2.0.0: resolution: { - integrity: sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==, + integrity: sha512-Tpp60P6IUJDTuOq/5Z8cdskzJujfwqfOTkrwIwj7IRISpnkJnT6SyJ4PCPnGMoFjC9ddhal5KVIYtAt97ix05A==, } - engines: { node: '>=0.6' } - qs@6.12.1: + ms@2.1.2: resolution: { - integrity: sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==, + integrity: sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==, } - engines: { node: '>=0.6' } - qs@6.13.0: + ms@2.1.3: resolution: { - integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==, + integrity: sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==, } - engines: { node: '>=0.6' } - qs@6.5.3: + multicast-dns@7.2.5: resolution: { - integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==, + integrity: sha512-2eznPJP8z2BFLX50tf0LuODrpINqP1RVIm/CObbTcBRITQgmC/TjcREF1NeTBzIcR5XO/ukWo+YHOjBbFwIupg==, } - engines: { node: '>=0.6' } + hasBin: true - querystring-es3@0.2.1: + multimatch@5.0.0: resolution: { - integrity: sha512-773xhDQnZBMFobEiztv8LIl70ch5MSF/jUQVlhwFyBILqq96anmoctVIYz+ZRp0qbCKATTn6ev02M3r7Ga5vqA==, + integrity: sha512-ypMKuglUrZUD99Tk2bUQ+xNQj43lPEfAeX2o9cTteAmShXy2VHDJpuwu1o0xqoKCt9jLVAvwyFKdLTPXKAfJyA==, } - engines: { node: '>=0.4.x' } + engines: { node: '>=10' } - querystringify@2.2.0: + mute-stream@0.0.8: resolution: { - integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==, + integrity: sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==, } - queue-microtask@1.2.3: + mute-stream@1.0.0: resolution: { - integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, + integrity: sha512-avsJQhyd+680gKXyG/sQc0nXaC6rBkPOfyHYcFb9+hdkqQkR9bdnkJ0AMZhke0oesPqIO+mFFJ+IdBc7mst4IA==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - quick-lru@4.0.1: + mz@2.7.0: resolution: { - integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==, + integrity: sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==, } - engines: { node: '>=8' } - raf@3.4.1: + nan@2.23.1: resolution: { - integrity: sha512-Sq4CW4QhwOHE8ucn6J34MqtZCeWFP2aQSmrlroYgqAV1PjStIhJXxYuTgUIfkEk7zTLjmIjLmU5q+fbD1NnOJA==, + integrity: sha512-r7bBUGKzlqk8oPBDYxt6Z0aEdF1G1rwlMcLk8LCOMbOzf0mG+JUfUzG4fIMWwHWP0iyaLWEQZJmtB7nOHEm/qw==, } - railroad-diagrams@1.0.0: + nanoid@3.1.20: resolution: { - integrity: sha512-cz93DjNeLY0idrCNOH6PviZGRN9GJhsdm9hpn1YCS879fj4W+x5IFJhhkRZcwVgMmFF7R82UA/7Oh+R8lLZg6A==, + integrity: sha512-a1cQNyczgKbLX9jwbS/+d7W8fX/RfgYR7lVWwWOGIPNgK2m0MWvrGF6/m4kk6U3QcFMnZf3RIhL0v2Jgh/0Uxw==, } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + hasBin: true - randexp@0.4.6: + nanoid@3.3.11: resolution: { - integrity: sha512-80WNmd9DA0tmZrw9qQa62GPPWfuXJknrmVmLcxvq4uZBdYqb1wYoKTmnlGUchvVWe0XiLupYkBoXVOxz3C8DYQ==, + integrity: sha512-N8SpfPUnUp1bK+PMYW8qSWdl9U+wwNWI4QKxOYDy9JAro3WMX7p2OeVRF9v+347pnakNevPmiHhNmZ2HbFA76w==, } - engines: { node: '>=0.12' } + engines: { node: ^10 || ^12 || ^13.7 || ^14 || >=15.0.1 } + hasBin: true - randombytes@2.1.0: + natural-compare-lite@1.4.0: resolution: { - integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==, + integrity: sha512-Tj+HTDSJJKaZnfiuw+iaF9skdPpTo2GtEly5JHnWV/hfv2Qj/9RKsGISQtLh2ox3l5EAGw487hnBee0sIJ6v2g==, } - randomfill@1.0.4: + natural-compare@1.4.0: resolution: { - integrity: sha512-87lcbR8+MhcWcUiQ+9e+Rwx8MyR2P7qnt15ynUlbm3TU/fjbgz4GsvfSUDTemtCCtVCqb4ZcEFlyPNTh9bBTLw==, + integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==, } - range-parser@1.2.1: + negotiator@0.6.3: resolution: { - integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==, + integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==, } engines: { node: '>= 0.6' } - raw-body@2.5.2: + negotiator@0.6.4: resolution: { - integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==, + integrity: sha512-myRT3DiWPHqho5PrJaIRyaMv2kgYf0mUVgBNOYMuCH5Ki1yEiQaf/ZJuQ62nvpc44wL5WDbTX7yGJi1Neevw8w==, } - engines: { node: '>= 0.8' } + engines: { node: '>= 0.6' } - react-dom@17.0.2: + neo-async@2.6.2: resolution: { - integrity: sha512-s4h96KtLDUQlsENhMn1ar8t2bEa+q/YAtj8pPPdIjPDGBDIVNsrD9aXNWqspUe6AzKCIG0C1HZZLqLV7qpOBGA==, + integrity: sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==, } - peerDependencies: - react: 17.0.2 - react-highlight@0.14.0: + nice-try@1.0.5: resolution: { - integrity: sha512-kWE+KXOXidS7SABhVopOgMnowbI3RAfeGZbnrduLNlWrYAED8sycL9l/Fvw3w0PFpIIawB7mRDnyhDcM/cIIGA==, + integrity: sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==, } - peerDependencies: - react: ^15.0.0 || ^16.0.0 || ^17.0.0 - react-dom: ^15.0.0 || ^16.0.0 || ^17.0.0 - react-is@16.13.1: + no-case@3.0.4: resolution: { - integrity: sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==, + integrity: sha512-fgAN3jGAh+RoxUGZHTSOLJIqUc2wmoBwGR4tbpNAKmmovFoWq0OdRkb0VkldReO2a2iBT/OEulG9XSUc10r3zg==, } - react-is@17.0.2: + node-addon-api@3.2.1: resolution: { - integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==, + integrity: sha512-mmcei9JghVNDYydghQmeDX8KoAm0FAiYyIcUt/N4nhyAipB17pllZQDOJD2fotxABnt4Mdz+dKTO7eftLg4d0A==, } - react-is@18.3.1: + node-fetch@2.6.7: resolution: { - integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==, + integrity: sha512-ZjMPFEfVx5j+y2yF35Kzx5sF7kDzxuDj6ziH4FFbOp87zKDZNx8yExJIb05OGF4Nlt9IHFIMBkRl41VdvcNdbQ==, } + engines: { node: 4.x || >=6.0.0 } + peerDependencies: + encoding: ^0.1.0 + peerDependenciesMeta: + encoding: + optional: true - react-redux@7.2.9: + node-fetch@2.7.0: resolution: { - integrity: sha512-Gx4L3uM182jEEayZfRbI/G11ZpYdNAnBs70lFVMNdHJI76XYtR+7m0MN+eAs7UHBPhWXcnFPaS+9owSCJQHNpQ==, + integrity: sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==, } + engines: { node: 4.x || >=6.0.0 } peerDependencies: - react: ^16.8.3 || ^17 || ^18 - react-dom: '*' - react-native: '*' + encoding: ^0.1.0 peerDependenciesMeta: - react-dom: - optional: true - react-native: + encoding: optional: true - react-shallow-renderer@16.15.0: + node-forge@1.3.2: resolution: { - integrity: sha512-oScf2FqQ9LFVQgA73vr86xl2NaOIX73rh+YFqcOp68CWj56tSfgtGKrEbyhCj0rSijyG9M1CYprTh39fBi5hzA==, + integrity: sha512-6xKiQ+cph9KImrRh0VsjH2d8/GXA4FIMlgU4B757iI1ApvcyA9VlouP0yZJha01V+huImO+kKMU7ih+2+E14fw==, } - peerDependencies: - react: ^16.0.0 || ^17.0.0 || ^18.0.0 + engines: { node: '>= 6.13.0' } - react-tabs@3.2.3: + node-gyp-build@4.8.4: resolution: { - integrity: sha512-jx325RhRVnS9DdFbeF511z0T0WEqEoMl1uCE3LoZ6VaZZm7ytatxbum0B8bCTmaiV0KsU+4TtLGTGevCic7SWg==, + integrity: sha512-LA4ZjwlnUblHVgq0oBF3Jl/6h/Nvs5fzBLwdEF4nuxnFdsfajde4WfxtJr3CaiH+F6ewcIB/q4jQ4UzPyid+CQ==, } - peerDependencies: - react: ^16.3.0 || ^17.0.0-0 + hasBin: true - react-test-renderer@17.0.2: + node-gyp@10.3.1: resolution: { - integrity: sha512-yaQ9cB89c17PUb0x6UfWRs7kQCorVdHlutU1boVPEsB8IDZH6n9tHxMacc3y0JoXOJUsZb/t/Mb8FUWMKaM7iQ==, + integrity: sha512-Pp3nFHBThHzVtNY7U6JfPjvT/DTE8+o/4xKsLQtBoU+j2HLsGlhcfzflAoUreaJbNmYnX+LlLi0qjV8kpyO6xQ==, } - peerDependencies: - react: 17.0.2 + engines: { node: ^16.14.0 || >=18.0.0 } + hasBin: true - react-transition-group@4.4.5: + node-gyp@9.4.1: resolution: { - integrity: sha512-pZcd1MCJoiKiBR2NRxeCRg13uCXbydPnmB4EOeRrY7480qNWO8IIgQG6zlDkm6uRMsURXPuKq0GWtiM59a5Q6g==, + integrity: sha512-OQkWKbjQKbGkMf/xqI1jjy3oCTgMKJac58G2+bjZb3fza6gW2YrCSdMQYaoTb70crvE//Gngr4f0AgVHmqHvBQ==, } - peerDependencies: - react: '>=16.6.0' - react-dom: '>=16.6.0' + engines: { node: ^12.13 || ^14.13 || >=16 } + hasBin: true - react@17.0.2: + node-int64@0.4.0: resolution: { - integrity: sha512-gnhPt75i/dq/z3/6q/0asP78D0u592D5L1pd7M8P+dck6Fu/jJeL6iVVK23fptSUZj8Vjf++7wXA8UNclGQcbA==, + integrity: sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==, } - engines: { node: '>=0.10.0' } - read-cmd-shim@3.0.0: + node-preload@0.2.1: resolution: { - integrity: sha512-KQDVjGqhZk92PPNRj9ZEXEuqg8bUobSKRw+q0YQ3TKI5xkce7bUJobL4Z/OtiEbAAv70yEpYIXp4iQ9L8oPVog==, + integrity: sha512-RM5oyBy45cLEoHqCeh+MNuFAxO0vTFBLskvQbOKnEE7YTTSN4tbN8QWDIPQ6L+WvKsB/qLEGpYe2ZZ9d4W9OIQ==, } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + engines: { node: '>=8' } - read-cmd-shim@4.0.0: + node-releases@2.0.27: resolution: { - integrity: sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==, + integrity: sha512-nmh3lCkYZ3grZvqcCH+fjmQ7X+H0OeZgP40OierEaAptX4XofMh5kwNbWh7lBduUzCcV/8kZ+NDLCwm2iorIlA==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - read-package-json-fast@2.0.3: + nodent-runtime@3.2.1: resolution: { - integrity: sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==, + integrity: sha512-7Ws63oC+215smeKJQCxzrK21VFVlCFBkwl0MOObt0HOpVQXs3u483sAmtkF33nNqZ5rSOQjB76fgyPBmAUrtCA==, } - engines: { node: '>=10' } - read-package-json-fast@3.0.2: + nofilter@3.1.0: resolution: { - integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==, + integrity: sha512-l2NNj07e9afPnhAhvgVrCD/oy2Ai1yfLpuo3EpiO1jFTsB4sFz6oIfAfSZyQzVpkZQ9xS8ZS5g1jCBgq4Hwo0g==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>=12.19' } - read-package-json@5.0.1: + nopt@6.0.0: resolution: { - integrity: sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==, + integrity: sha512-ZwLpbTgdhuZUnZzjd7nb1ZV+4DoiC6/sfiVKok72ym/4Tlf+DFdlHYmT2JPmcNNWV6Pi3SDf1kT+A4r9RTuT9g==, } engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + hasBin: true - read-package-json@6.0.4: + nopt@7.2.1: resolution: { - integrity: sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==, + integrity: sha512-taM24ViiimT/XntxbPyJQzCG+p4EKOpgD3mxFwW38mGjVUrfERQOeY4EDHjdnptttfHuHQXFx+lTP08Q+mLa/w==, } engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - deprecated: This package is no longer supported. Please use @npmcli/package-json instead. + hasBin: true - read-pkg-up@3.0.0: + nopt@8.1.0: resolution: { - integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==, + integrity: sha512-ieGu42u/Qsa4TFktmaKEwM6MQH0pOWnaB3htzh0JRtx84+Mebc0cbZYN5bC+6WTZ4+77xrL9Pn5m7CV6VIkV7A==, } - engines: { node: '>=4' } + engines: { node: ^18.17.0 || >=20.5.0 } + hasBin: true - read-pkg-up@7.0.1: + normalize-package-data@2.5.0: resolution: { - integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==, + integrity: sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==, } - engines: { node: '>=8' } - read-pkg@3.0.0: + normalize-package-data@3.0.3: resolution: { - integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==, + integrity: sha512-p2W1sgqij3zMMyRC067Dg16bfzVH+w7hyegmpIvZ4JNjqtGOVAIvLmjBx3yP7YTe9vKJgkoNOPjwQGogDoMXFA==, } - engines: { node: '>=4' } + engines: { node: '>=10' } - read-pkg@5.2.0: + normalize-package-data@4.0.1: resolution: { - integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==, + integrity: sha512-EBk5QKKuocMJhB3BILuKhmaPjI8vNRSpIfO9woLC6NyHVkKKdVEdAO1mrT0ZfxNR1lKwCcTkuZfmGIFdizZ8Pg==, } - engines: { node: '>=8' } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - read@1.0.7: + normalize-package-data@5.0.0: resolution: { - integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==, + integrity: sha512-h9iPVIfrVZ9wVYQnxFgtw1ugSvGEMOlyPWWtm8BMJhnwyEL/FLbYbTY3V3PpjI/BUK67n9PEWDu6eHzu1fB15Q==, } - engines: { node: '>=0.8' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - readable-stream@2.3.8: + normalize-package-data@6.0.2: resolution: { - integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==, + integrity: sha512-V6gygoYb/5EmNI+MEGrWkC+e6+Rr7mTmfHrxDbLzxQogBkgzo76rkok0Am6thgSF7Mv2nLOajAJj5vDJZEFn7g==, } + engines: { node: ^16.14.0 || >=18.0.0 } - readable-stream@3.6.2: + normalize-path@2.1.1: resolution: { - integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, + integrity: sha512-3pKJwH184Xo/lnH6oyP1q2pMd7HcypqqmRs91/6/i2CGtWwIKGCkOOMTm/zXbgTEWHw1uNpNi/igc3ePOYHb6w==, } - engines: { node: '>= 6' } + engines: { node: '>=0.10.0' } - readdirp@3.5.0: + normalize-path@3.0.0: resolution: { - integrity: sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==, + integrity: sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==, } - engines: { node: '>=8.10.0' } + engines: { node: '>=0.10.0' } - readdirp@3.6.0: + normalize-range@0.1.2: resolution: { - integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, + integrity: sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==, } - engines: { node: '>=8.10.0' } + engines: { node: '>=0.10.0' } - readdirp@4.0.2: + normalize-url@6.1.0: resolution: { - integrity: sha512-yDMz9g+VaZkqBYS/ozoBJwaBhTbZo3UNYQHNRw1D3UFQB8oHB4uS/tAODO+ZLjGWmUbKnIlOWO+aaIiAxrUWHA==, + integrity: sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==, } - engines: { node: '>= 14.16.0' } + engines: { node: '>=10' } - recast@0.11.23: + now-and-later@2.0.1: resolution: { - integrity: sha512-+nixG+3NugceyR8O1bLU45qs84JgI3+8EauyRZafLgC9XbdAOIVgwV1Pe2da0YzGo62KzWoZwUpVEQf6qNAXWA==, + integrity: sha512-KGvQ0cB70AQfg107Xvs/Fbu+dGmZoTRJp2TaPwcwQm3/7PteUyN2BCgk8KBMPGBUXZdVwyWS8fDCGFygBm19UQ==, } - engines: { node: '>= 0.8' } + engines: { node: '>= 0.10' } - rechoir@0.8.0: + npm-bundled@1.1.2: resolution: { - integrity: sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==, + integrity: sha512-x5DHup0SuyQcmL3s7Rx/YQ8sbw/Hzg0rj48eN0dV7hf5cmQq5PXIeioroH3raV1QC1yh3uTYuMThvEQF3iKgGQ==, } - engines: { node: '>= 10.13.0' } - redent@3.0.0: + npm-bundled@3.0.1: resolution: { - integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==, + integrity: sha512-+AvaheE/ww1JEwRHOrn4WHNzOxGtVp+adrg2AeZS/7KuxGUYFuBta98wYpfHBbJp6Tg6j1NKSEVHNcfZzJHQwQ==, } - engines: { node: '>=8' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - redux-mock-store@1.5.3: + npm-install-checks@6.3.0: resolution: { - integrity: sha512-ryhkkb/4D4CUGpAV2ln1GOY/uh51aczjcRz9k2L2bPx/Xja3c5pSGJJPyR25GNVRXtKIExScdAgFdiXp68GmJA==, + integrity: sha512-W29RiK/xtpCGqn6f3ixfRYGk+zRyr+Ew9F2E20BfXxT5/euLdA/Nm7fO7OeTGuAmTs30cpgInyJ0cYe708YTZw==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - redux@4.2.1: + npm-normalize-package-bin@1.0.1: resolution: { - integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==, + integrity: sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA==, } - reflect-metadata@0.2.2: + npm-normalize-package-bin@3.0.1: resolution: { - integrity: sha512-urBwgfrvVP/eAyXx4hluJivBKzuEbSQs9rKWCrCkbSxNv8mxPcUZKeuoF3Uy4mJl3Lwprp6yy5/39VWigZ4K6Q==, + integrity: sha512-dMxCf+zZ+3zeQZXKxmyuCKlIDPGuv8EF940xbkC4kQVDTtqoh6rJFO+JTKSA6/Rwi0getWmtuy4Itup0AMcaDQ==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - reflect.getprototypeof@1.0.6: + npm-package-arg@10.1.0: resolution: { - integrity: sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==, + integrity: sha512-uFyyCEmgBfZTtrKk/5xDfHp6+MdrqGotX/VoOyEEl3mBwiEE5FlBaePanazJSVMPT7vKepcjYBY2ztg9A3yPIA==, } - engines: { node: '>= 0.4' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - regenerate-unicode-properties@10.1.1: + npm-package-arg@11.0.3: resolution: { - integrity: sha512-X007RyZLsCJVVrjgEFVpLUTZwyOZk3oiL75ZcuYjlIWd6rNJtOjkBwQc5AsRrpbKVkxN6sklw/k/9m2jJYOf8Q==, + integrity: sha512-sHGJy8sOC1YraBywpzQlIKBE4pBbGbiF95U6Auspzyem956E0+FtDtsx1ZxlOJkQCZ1AFXAY/yuvtFYrOxF+Bw==, } - engines: { node: '>=4' } + engines: { node: ^16.14.0 || >=18.0.0 } - regenerate-unicode-properties@10.2.0: + npm-package-arg@8.1.1: resolution: { - integrity: sha512-DqHn3DwbmmPVzeKj9woBadqmXxLvQoQIwu7nopMc72ztvxVmVk2SBhSnx67zuye5TP+lJsb/TBQsjLKhnDf3MA==, + integrity: sha512-CsP95FhWQDwNqiYS+Q0mZ7FAEDytDZAkNxQqea6IaAFJTAY9Lhhqyl0irU/6PMc7BGfUmnsbHcqxJD7XuVM/rg==, } - engines: { node: '>=4' } + engines: { node: '>=10' } - regenerate@1.4.2: + npm-package-arg@9.1.2: resolution: { - integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==, + integrity: sha512-pzd9rLEx4TfNJkovvlBSLGhq31gGu2QDexFPWT19yCDh0JgnRhlBLNo5759N0AJmBk+kQ9Y/hXoLnlgFD+ukmg==, } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - regenerator-runtime@0.14.1: + npm-packlist@5.1.1: resolution: { - integrity: sha512-dYnhHh0nJoMfnkZs6GmmhFknAGRrLznOu5nc9ML+EJxGvrx6H7teuevqVqCuPcPK//3eDrrjQhehXVx9cnkGdw==, + integrity: sha512-UfpSvQ5YKwctmodvPPkK6Fwk603aoVsf8AEbmVKAEECrfvL8SSe1A2YIwrJ6xmTHAITKPwwZsWo7WwEbNk0kxw==, } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + hasBin: true - regenerator-transform@0.15.2: + npm-packlist@7.0.4: resolution: { - integrity: sha512-hfMp2BoF0qOk3uc5V20ALGDS2ddjQaLrdl7xrGXvAIow7qeWRM2VA2HuCHkUKk9slq3VwEwLNK3DFBqDfPGYtg==, + integrity: sha512-d6RGEuRrNS5/N84iglPivjaJPxhDbZmlbTwTDX2IbcRHG5bZCdtysYMhwiPvcF4GisXHGn7xsxv+GQ7T/02M5Q==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - regex-parser@2.3.0: + npm-packlist@8.0.2: resolution: { - integrity: sha512-TVILVSz2jY5D47F4mA4MppkBrafEaiUWJO/TcZHEIuI13AqoZMkK1WMA4Om1YkYbTx+9Ki1/tSUXbceyr9saRg==, + integrity: sha512-shYrPFIS/JLP4oQmAwDyk5HcyysKW8/JLTEA32S0Z5TzvpaeeX2yMFfoK1fjEBnCBvVyIB/Jj/GBFdm0wsgzbA==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - regexp.prototype.flags@1.5.2: + npm-pick-manifest@8.0.2: resolution: { - integrity: sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==, + integrity: sha512-1dKY+86/AIiq1tkKVD3l0WI+Gd3vkknVGAggsFeBkTvbhMQ1OND/LKkYv4JtXPKUJ8bOTCyLiqEg2P6QNdK+Gg==, } - engines: { node: '>= 0.4' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - regexpu-core@5.3.2: + npm-pick-manifest@9.1.0: resolution: { - integrity: sha512-RAM5FlZz+Lhmo7db9L298p2vHP5ZywrVXmVXpmAD9GuL5MPH6t9ROw1iA/wfHkQ76Qe7AaPF0nGuim96/IrQMQ==, + integrity: sha512-nkc+3pIIhqHVQr085X9d2JzPzLyjzQS96zbruppqC9aZRm/x8xx6xhI98gHtsfELP2bE+loHq8ZaHFHhe+NauA==, } - engines: { node: '>=4' } + engines: { node: ^16.14.0 || >=18.0.0 } - regexpu-core@6.2.0: + npm-registry-fetch@13.3.1: resolution: { - integrity: sha512-H66BPQMrv+V16t8xtmq+UC0CBpiTBA60V8ibS1QVReIp8T1z8hwFxqcGzm9K6lgsN7sB5edVH8a+ze6Fqm4weA==, + integrity: sha512-eukJPi++DKRTjSBRcDZSDDsGqRK3ehbxfFUcgaRd0Yp6kRwOwh2WVn0r+8rMB4nnuzvAk6rQVzl6K5CkYOmnvw==, } - engines: { node: '>=4' } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - regjsgen@0.8.0: + npm-registry-fetch@14.0.3: resolution: { - integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==, + integrity: sha512-YaeRbVNpnWvsGOjX2wk5s85XJ7l1qQBGAp724h8e2CZFFhMSuw9enom7K1mWVUtvXO1uUSFIAPofQK0pPN0ZcA==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - regjsparser@0.12.0: + npm-registry-fetch@14.0.5: resolution: { - integrity: sha512-cnE+y8bz4NhMjISKbgeVJtqNbtf5QpjZP+Bslo+UqkIt9QPnX9q095eiRRASJG1/tz6dlNr6Z5NsBiWYokp6EQ==, + integrity: sha512-kIDMIo4aBm6xg7jOttupWZamsZRkAqMqwqqbVXnUqstY5+tapvv6bkH/qMR76jdgV+YljEUCyWx3hRYMrJiAgA==, } - hasBin: true + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - regjsparser@0.9.1: + npm-registry-fetch@17.1.0: resolution: { - integrity: sha512-dQUtn90WanSNl+7mQKcXAgZxvUe7Z0SqXlgzv0za4LwiUhyzBC58yQO3liFoUgu8GiJVInAhJjkj1N0EtQ5nkQ==, + integrity: sha512-5+bKQRH0J1xG1uZ1zMNvxW0VEyoNWgJpY9UDuluPFLKDfJ9u2JmmjmTJV1srBGQOROfdBMiVvnH2Zvpbm+xkVA==, } - hasBin: true + engines: { node: ^16.14.0 || >=18.0.0 } - relateurl@0.2.7: + npm-run-all@4.1.5: resolution: { - integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==, + integrity: sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==, } - engines: { node: '>= 0.10' } + engines: { node: '>= 4' } + hasBin: true - release-zalgo@1.0.0: + npm-run-path@2.0.2: resolution: { - integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==, + integrity: sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==, } engines: { node: '>=4' } - remove-bom-buffer@3.0.0: - resolution: - { - integrity: sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==, - } - engines: { node: '>=0.10.0' } - - remove-bom-stream@1.2.0: + npm-run-path@4.0.1: resolution: { - integrity: sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==, + integrity: sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==, } - engines: { node: '>= 0.10' } + engines: { node: '>=8' } - remove-trailing-separator@1.1.0: + npmlog@6.0.2: resolution: { - integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==, + integrity: sha512-/vBvz5Jfr9dT/aFWd0FIRf+T/Q2WBsLENygUaFUqstqsycmZAP/t5BvFJTK0viFmSUxiUKTUplWy5vt+rvKIxg==, } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + deprecated: This package is no longer supported. - rename-overwrite@5.0.0: + npmlog@7.0.1: resolution: { - integrity: sha512-vSxE5Ww7Jnyotvaxi3Dj0vOMoojH8KMkBfs9xYeW/qNfJiLTcC1fmwTjrbGUq3mQSOCxkG0DbdcvwTUrpvBN4w==, + integrity: sha512-uJ0YFk/mCQpLBt+bxN88AKd+gyqZvZDbtiNxk6Waqcj2aPRyfVx8ITawkyQynxUagInjdYT1+qj4NfA5KJJUxg==, } - engines: { node: '>=12.10' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + deprecated: This package is no longer supported. - renderkid@3.0.0: + nth-check@2.1.1: resolution: { - integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==, + integrity: sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==, } - replace-ext@1.0.1: + nwsapi@2.2.22: resolution: { - integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==, + integrity: sha512-ujSMe1OWVn55euT1ihwCI1ZcAaAU3nxUiDwfDQldc51ZXaB9m2AyOn6/jh1BLe2t/G8xd6uKG1UBF2aZJeg2SQ==, } - engines: { node: '>= 0.10' } - request@2.88.2: + nx@15.9.7: resolution: { - integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==, + integrity: sha512-1qlEeDjX9OKZEryC8i4bA+twNg+lB5RKrozlNwWx/lLJHqWPUfvUTvxh+uxlPYL9KzVReQjUuxMLFMsHNqWUrA==, } - engines: { node: '>= 6' } - deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 + hasBin: true + peerDependencies: + '@swc-node/register': ^1.4.2 + '@swc/core': ^1.2.173 + peerDependenciesMeta: + '@swc-node/register': + optional: true + '@swc/core': + optional: true - require-directory@2.1.1: + nyc@15.1.0: resolution: { - integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, + integrity: sha512-jMW04n9SxKdKi1ZMGhvUTHBN0EICCRkHemEoE5jm6mTYcqcdas0ATzgUgejlQUHMvpnOZqGB5Xxsv9KxJW1j8A==, } - engines: { node: '>=0.10.0' } + engines: { node: '>=8.9' } + hasBin: true - require-from-string@2.0.2: + oauth-sign@0.9.0: resolution: { - integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==, + integrity: sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==, } - engines: { node: '>=0.10.0' } - require-main-filename@2.0.0: + object-assign@4.1.1: resolution: { - integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==, + integrity: sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==, } + engines: { node: '>=0.10.0' } - requires-port@1.0.0: + object-inspect@1.13.4: resolution: { - integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==, + integrity: sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==, } + engines: { node: '>= 0.4' } - resize-observer-polyfill@1.5.1: + object-keys@1.1.1: resolution: { - integrity: sha512-LwZrotdHOo12nQuZlHEmtuXdqGoOD0OhaxopaNFxWzInpEgaLWoVuAMbTzixuosCx2nEG58ngzW3vxdWoxIgdg==, + integrity: sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==, } + engines: { node: '>= 0.4' } - resolve-cwd@3.0.0: + object.assign@4.1.7: resolution: { - integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==, + integrity: sha512-nK28WOo+QIjBkDduTINE4JkF/UJJKyf2EJxvJKfblDpyg0Q+pkOHNTL0Qwy6NP6FhE/EnzV73BxxqcJaXY9anw==, } - engines: { node: '>=8' } + engines: { node: '>= 0.4' } - resolve-from@4.0.0: + object.fromentries@2.0.8: resolution: { - integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, + integrity: sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==, } - engines: { node: '>=4' } + engines: { node: '>= 0.4' } - resolve-from@5.0.0: + object.groupby@1.0.3: resolution: { - integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, + integrity: sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==, } - engines: { node: '>=8' } + engines: { node: '>= 0.4' } - resolve-options@1.1.0: + object.values@1.2.1: resolution: { - integrity: sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==, + integrity: sha512-gXah6aZrcUxjWg2zR2MwouP2eHlCBzdV4pygudehaKXSGW4v2AsRQUK+lwwXhii6KFZcunEnmSUoYp5CXibxtA==, } - engines: { node: '>= 0.10' } + engines: { node: '>= 0.4' } - resolve-url-loader@5.0.0: + obuf@1.1.2: resolution: { - integrity: sha512-uZtduh8/8srhBoMx//5bwqjQ+rfYOUq8zC9NrMUGtjBiGTtFJM42s58/36+hTqeqINcnYe08Nj3LkK9lW4N8Xg==, + integrity: sha512-PX1wu0AmAdPqOL1mWhqmlOd8kOIZQwGZw6rh7uby9fTc5lhaOWFLX3I6R1hrF9k3zUY40e6igsLGkDXK92LJNg==, } - engines: { node: '>=12' } - resolve-url@0.2.1: + on-finished@2.4.1: resolution: { - integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==, + integrity: sha512-oVlzkg3ENAhCk2zdv7IJwd/QUD4z2RxRwpkcGY8psCVcCYZNq4wYnVWALHM+brtuJjePWiYF/ClmuDr8Ch5+kg==, } - deprecated: https://github.com/lydell/resolve-url#deprecated + engines: { node: '>= 0.8' } - resolve.exports@1.1.1: + on-headers@1.1.0: resolution: { - integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==, + integrity: sha512-737ZY3yNnXy37FHkQxPzt4UZ2UWPWiCZWLvFZ4fu5cueciegX0zGPnrlY6bwRg4FdQOe9YU8MkmJwGhoMybl8A==, } - engines: { node: '>=10' } + engines: { node: '>= 0.8' } - resolve@1.19.0: + once@1.4.0: resolution: { - integrity: sha512-rArEXAgsBG4UgRGcynxWIWKFvh/XZCcS8UJdHhwy91zwAvCZIbcs+vAbflgBnNjYMs/i/i+/Ux6IZhML1yPvxg==, + integrity: sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==, } - resolve@1.22.8: + onetime@2.0.1: resolution: { - integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==, + integrity: sha512-oyyPpiMaKARvvcgip+JV+7zci5L8D1W9RZIz2l1o08AM3pfspitVWnPt3mzHcBPp12oYMTy0pqrFs/C+m3EwsQ==, } - hasBin: true + engines: { node: '>=4' } - resolve@2.0.0-next.5: + onetime@5.1.2: resolution: { - integrity: sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==, + integrity: sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==, } - hasBin: true + engines: { node: '>=6' } - restore-cursor@2.0.0: + onetime@7.0.0: resolution: { - integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==, + integrity: sha512-VXJjc87FScF88uafS3JllDgvAm+c/Slfz06lorj2uAY34rlUu0Nt+v8wreiImcrgAjjIHp1rXpTDlLOGw29WwQ==, } - engines: { node: '>=4' } + engines: { node: '>=18' } - restore-cursor@3.1.0: + open@8.4.2: resolution: { - integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==, + integrity: sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==, } - engines: { node: '>=8' } + engines: { node: '>=12' } - restore-cursor@5.1.0: + opener@1.5.2: resolution: { - integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==, + integrity: sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==, } - engines: { node: '>=18' } + hasBin: true - ret@0.1.15: + optionator@0.9.4: resolution: { - integrity: sha512-TTlYpa+OL+vMMNG24xSlQGEJ3B/RzEfUlLct7b5G/ytav+wPrplCpVMFuwzXbkecJrb6IYo1iFb0S9v37754mg==, + integrity: sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==, } - engines: { node: '>=0.12' } + engines: { node: '>= 0.8.0' } - retry@0.12.0: + ora@5.4.1: resolution: { - integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==, + integrity: sha512-5b6Y85tPxZZ7QytO+BQzysW31HJku27cRIlkbAXaNx+BdcVi+LlRFmVXzeF6a7JCwJpyw5c4b+YSVImQIrBpuQ==, } - engines: { node: '>= 4' } + engines: { node: '>=10' } - retry@0.13.1: + ordered-read-streams@1.0.1: resolution: { - integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==, + integrity: sha512-Z87aSjx3r5c0ZB7bcJqIgIRX5bxR7A4aSzvIbaxd0oTkWBCOoKfuGHiKj60CHVUgg1Phm5yMZzBdt8XqRs73Mw==, } - engines: { node: '>= 4' } - reusify@1.0.4: + os-tmpdir@1.0.2: resolution: { - integrity: sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==, + integrity: sha512-D2FR03Vir7FIu45XBY20mTb+/ZSWB00sjU9jdQXt83gDrI4Ztz5Fs7/yy74g2N5SVQY4xY1qDr4rNddwYRVX0g==, } - engines: { iojs: '>=1.0.0', node: '>=0.10.0' } + engines: { node: '>=0.10.0' } - rfdc@1.3.1: + own-keys@1.0.1: resolution: { - integrity: sha512-r5a3l5HzYlIC68TpmYKlxWjmOP6wiPJ1vWv2HeLhNsRZMrCkxeqxiHlQ21oXmQ4F3SiryXBHhAD7JZqvOJjFmg==, + integrity: sha512-qFOyK5PjiWZd+QQIh+1jhdb9LpxTF0qs7Pm8o5QHYZ0M3vKqSqzsZaEB6oWlxZ+q2sJBMI/Ktgd2N5ZwQoRHfg==, } + engines: { node: '>= 0.4' } - rfdc@1.4.1: + p-finally@1.0.0: resolution: { - integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==, + integrity: sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==, } + engines: { node: '>=4' } - rimraf@2.7.1: + p-limit@1.3.0: resolution: { - integrity: sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==, + integrity: sha512-vvcXsLAJ9Dr5rQOPk7toZQZJApBl2K4J6dANSsEuh6QI41JYcsS/qhTGa9ErIUUgK3WNQoJYvylxvjqmiqEA9Q==, } - deprecated: Rimraf versions prior to v4 are no longer supported - hasBin: true + engines: { node: '>=4' } - rimraf@3.0.2: + p-limit@2.3.0: resolution: { - integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==, + integrity: sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==, } - hasBin: true + engines: { node: '>=6' } - rimraf@4.4.1: + p-limit@3.1.0: resolution: { - integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==, + integrity: sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==, } - engines: { node: '>=14' } - hasBin: true + engines: { node: '>=10' } - rimraf@5.0.10: + p-locate@2.0.0: resolution: { - integrity: sha512-l0OE8wL34P4nJH/H2ffoaniAokM2qSmrtXHmlpvYr5AVVX8msAyW0l8NVJFDxlSK4u3Uh/f41cQheDVdnYijwQ==, + integrity: sha512-nQja7m7gSKuewoVRen45CtVfODR3crN3goVQ0DDZ9N3yHxgpkuBhZqsaiotSQRrADUrne346peY7kT3TSACykg==, } - hasBin: true + engines: { node: '>=4' } - ripemd160@2.0.2: + p-locate@3.0.0: resolution: { - integrity: sha512-ii4iagi25WusVoiC4B4lq7pbXfAp3D9v5CwfkY33vffw2+pkDjY1D8GaN7spsxvCSx8dkPqOZCEZyfxcmJG2IA==, + integrity: sha512-x+12w/To+4GFfgJhBEpiDcLozRJGegY+Ei7/z0tSLkMmxGZNybVMSfWj9aJn8Z5Fc7dBUNJOOVgPv2H7IwulSQ==, } + engines: { node: '>=6' } - rollup-plugin-babel@4.4.0: + p-locate@4.1.0: resolution: { - integrity: sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==, + integrity: sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==, } - deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-babel. - peerDependencies: - '@babel/core': 7 || ^7.0.0-rc.2 - rollup: '>=0.60.0 <3' + engines: { node: '>=8' } - rollup-plugin-cleanup@3.2.1: + p-locate@5.0.0: resolution: { - integrity: sha512-zuv8EhoO3TpnrU8MX8W7YxSbO4gmOR0ny06Lm3nkFfq0IVKdBUtHwhVzY1OAJyNCIAdLiyPnOrU0KnO0Fri1GQ==, + integrity: sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==, } - engines: { node: ^10.14.2 || >=12.0.0 } - peerDependencies: - rollup: '>=2.0' + engines: { node: '>=10' } - rollup-plugin-copy@3.5.0: + p-map-series@2.1.0: resolution: { - integrity: sha512-wI8D5dvYovRMx/YYKtUNt3Yxaw4ORC9xo6Gt9t22kveWz1enG9QrhVlagzwrxSC455xD1dHMKhIJkbsQ7d48BA==, + integrity: sha512-RpYIIK1zXSNEOdwxcfe7FdvGcs7+y5n8rifMhMNWvaxRNMPINJHF5GDeuVxWqnfrcHPSCnp7Oo5yNXHId9Av2Q==, } - engines: { node: '>=8.3' } + engines: { node: '>=8' } - rollup-plugin-import-css@3.5.0: + p-map@3.0.0: resolution: { - integrity: sha512-JOVow6n00qt2C/NnsqPmIjFOfxIAudwWqC5SaC84CodMGiMFaP1gPAdgnJ8g8hcG+P85TCYp2kI98grYCEt5pg==, + integrity: sha512-d3qXVTF/s+W+CdJ5A29wywV2n8CQQYahlgz2bFiA+4eVNJbHJodPZ+/gXwPGh0bOqA+j8S+6+ckmvLGPk1QpxQ==, } - engines: { node: '>=16' } - peerDependencies: - rollup: ^2.x.x || ^3.x.x || ^4.x.x + engines: { node: '>=8' } - rollup-plugin-postcss@4.0.2: + p-map@4.0.0: resolution: { - integrity: sha512-05EaY6zvZdmvPUDi3uCcAQoESDcYnv8ogJJQRp6V5kZ6J6P7uAVJlrTZcaaA20wTH527YTnKfkAoPxWI/jPp4w==, + integrity: sha512-/bjOqmgETBYB5BoEeGVea8dmvHb2m9GLy1E9W43yeyfP6QQCZGFNa+XRceJEuDB6zqr+gKpIAmlLebMpykw/MQ==, } engines: { node: '>=10' } - peerDependencies: - postcss: 8.x - rollup-plugin-typescript2@0.34.1: + p-map@7.0.4: resolution: { - integrity: sha512-P4cHLtGikESmqi1CA+tdMDUv8WbQV48mzPYt77TSTOPJpERyZ9TXdDgjSDix8Fkqce6soYz3+fa4lrC93IEkcw==, + integrity: sha512-tkAQEw8ysMzmkhgw8k+1U/iPhWNhykKnSk4Rd5zLoPJCuJaGRPo6YposrZgaxHKzDHdDWWZvE/Sk7hsL2X/CpQ==, } - peerDependencies: - rollup: '>=1.26.3' - typescript: '>=2.4.0' + engines: { node: '>=18' } - rollup-plugin-visualizer@5.12.0: + p-pipe@3.1.0: resolution: { - integrity: sha512-8/NU9jXcHRs7Nnj07PF2o4gjxmm9lXIrZ8r175bT9dK8qoLlvKTwRMArRCMgpMGlq8CTLugRvEmyMeMXIU2pNQ==, + integrity: sha512-08pj8ATpzMR0Y80x50yJHn37NF6vjrqHutASaX5LiH5npS9XPvrUmscd9MF5R4fuYRHOxQR1FfMIlF7AzwoPqw==, } - engines: { node: '>=14' } - hasBin: true - peerDependencies: - rollup: 2.x || 3.x || 4.x - peerDependenciesMeta: - rollup: - optional: true + engines: { node: '>=8' } - rollup-plugin-vue@6.0.0: + p-queue@6.6.2: resolution: { - integrity: sha512-oVvUd84d5u73M2HYM3XsMDLtZRIA/tw2U0dmHlXU2UWP5JARYHzh/U9vcxaN/x/9MrepY7VH3pHFeOhrWpxs/Q==, + integrity: sha512-RwFpb72c/BhQLEXIZ5K2e+AhgNVmIejGlTgiB9MzZ0e93GRvqZ7uSi0dvRF7/XIXDeNkra2fNHBxTyPDGySpjQ==, } - peerDependencies: - '@vue/compiler-sfc': '*' + engines: { node: '>=8' } - rollup-pluginutils@2.8.2: + p-reduce@2.1.0: resolution: { - integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==, + integrity: sha512-2USApvnsutq8uoxZBGbbWM0JIYLiEMJ9RlaN7fAzVNb9OZN0SHjjTTfIcb667XynS5Y1VhwDJVDa72TnPzAYWw==, } + engines: { node: '>=8' } - rollup@2.79.1: + p-retry@4.6.2: resolution: { - integrity: sha512-uKxbd0IhMZOhjAiD5oAFp7BqvkA4Dv47qpOCtaNvng4HBwdbWtdOh8f5nZNuk2rp51PMGk3bzfWu5oayNEuYnw==, + integrity: sha512-312Id396EbJdvRONlngUx0NydfrIQ5lsYu0znKVUzVvArzEIt08V1qhtyESbGVd1FGX7UKtiFp5uwKZdM8wIuQ==, } - engines: { node: '>=10.0.0' } - hasBin: true + engines: { node: '>=8' } - rollup@4.21.0: + p-timeout@3.2.0: resolution: { - integrity: sha512-vo+S/lfA2lMS7rZ2Qoubi6I5hwZwzXeUIctILZLbHI+laNtvhhOIon2S1JksA5UEDQ7l3vberd0fxK44lTYjbQ==, + integrity: sha512-rhIwUycgwwKcP9yTOOFK/AKsAopjjCakVqLHePO3CC6Mir1Z99xT+R63jZxAT5lFZLa2inS5h+ZS2GvR99/FBg==, } - engines: { node: '>=18.0.0', npm: '>=8.0.0' } - hasBin: true + engines: { node: '>=8' } - rollup@4.22.4: + p-try@1.0.0: resolution: { - integrity: sha512-vD8HJ5raRcWOyymsR6Z3o6+RzfEPCnVLMFJ6vRslO1jt4LO6dUo5Qnpg7y4RkZFM2DMe3WUirkI5c16onjrc6A==, + integrity: sha512-U1etNYuMJoIz3ZXSrrySFjsXQTWOx2/jdi86L+2pRvph/qMKL6sbcCYdH23fqsbm8TH2Gn0OybpT4eSFlCVHww==, } - engines: { node: '>=18.0.0', npm: '>=8.0.0' } - hasBin: true + engines: { node: '>=4' } - rrweb-cssom@0.6.0: + p-try@2.2.0: resolution: { - integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==, + integrity: sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==, } + engines: { node: '>=6' } - rrweb-cssom@0.7.1: + p-waterfall@2.1.1: resolution: { - integrity: sha512-TrEMa7JGdVm0UThDJSx7ddw5nVm3UJS9o9CCIZ72B1vSyEZoziDqBYP3XIoi/12lKrJR8rE3jeFHMok2F/Mnsg==, + integrity: sha512-RRTnDb2TBG/epPRI2yYXsimO0v3BXC8Yd3ogr1545IaqKK17VGhbWVeGGN+XfCm/08OK8635nH31c8bATkHuSw==, } + engines: { node: '>=8' } - rst-selector-parser@2.2.3: + package-config@5.0.0: resolution: { - integrity: sha512-nDG1rZeP6oFTLN6yNDV/uiAvs1+FS/KlrEwh7+y7dpuApDBy6bI2HTBcc0/V8lv9OTqfyD34eF7au2pm8aBbhA==, + integrity: sha512-GYTTew2slBcYdvRHqjhwaaydVMvn/qrGC323+nKclYioNSLTDUM/lGgtGTgyHVtYcozb+XkE8CNhwcraOmZ9Mg==, } + engines: { node: '>=18' } - run-applescript@7.0.0: + package-hash@4.0.0: resolution: { - integrity: sha512-9by4Ij99JUr/MCFBUkDKLWK3G9HVXmabKz9U5MlIAIuvuzkiOicRYs8XJLxX+xahD+mLiiCYDqF9dKAgtzKP1A==, + integrity: sha512-whdkPIooSu/bASggZ96BWVvZTRMOFxnyUG5PnTSGKoJE2gd5mbVNmR2Nj20QFzxYYgAXpoqC+AiXzl+UMRh7zQ==, } - engines: { node: '>=18' } + engines: { node: '>=8' } - run-async@2.4.1: + package-json-from-dist@1.0.1: resolution: { - integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==, + integrity: sha512-UEZIS3/by4OC8vL3P2dTXRETpebLI2NiI5vIrjaD/5UtrkFX/tNbwjTSRAGC/+7CAo2pIcBaRgWmcBBHcsaCIw==, } - engines: { node: '>=0.12.0' } - run-parallel@1.2.0: + pacote@15.1.1: resolution: { - integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, + integrity: sha512-eeqEe77QrA6auZxNHIp+1TzHQ0HBKf5V6c8zcaYZ134EJe1lCi+fjXATkNiEEfbG+e50nu02GLvUtmZcGOYabQ==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + hasBin: true - run-queue@1.0.3: + pacote@18.0.6: resolution: { - integrity: sha512-ntymy489o0/QQplUDnpYAYUsO50K9SBrIVaKCWDOJzYJts0f9WH9RFJkyagebkw5+y1oi00R7ynNW/d12GBumg==, + integrity: sha512-+eK3G27SMwsB8kLIuj4h1FUhHtwiEUo21Tw8wNjmvdlpOEr613edv+8FUsTj/4F/VN5ywGE19X18N7CC2EJk6A==, } + engines: { node: ^16.14.0 || >=18.0.0 } + hasBin: true - rxjs@6.6.7: + param-case@3.0.4: resolution: { - integrity: sha512-hTdwr+7yYNIT5n4AMYp85KA6yw2Va0FLa3Rguvbpa4W3I5xynaBZo41cM3XM+4Q6fRMj3sBYIR1VAmZMXYJvRQ==, + integrity: sha512-RXlj7zCYokReqWpOPH9oYivUzLYZ5vAPIfEmCTNViosC78F8F0H9y7T7gG2M39ymgutxF5gcFEsyZQSph9Bp3A==, } - engines: { npm: '>=2.0.0' } - rxjs@7.8.1: + parent-module@1.0.1: resolution: { - integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==, + integrity: sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==, } + engines: { node: '>=6' } - safe-array-concat@1.1.2: + parse-conflict-json@3.0.1: resolution: { - integrity: sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==, + integrity: sha512-01TvEktc68vwbJOtWZluyWeVGWjP+bZwXtPDMQVbBKzbJ/vZBif0L69KH1+cHv1SZ6e0FKLvjyHe8mqsIqYOmw==, } - engines: { node: '>=0.4' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - safe-buffer@5.1.2: + parse-json@4.0.0: resolution: { - integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==, + integrity: sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==, } + engines: { node: '>=4' } - safe-buffer@5.2.1: + parse-json@5.2.0: resolution: { - integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, + integrity: sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==, } + engines: { node: '>=8' } - safe-identifier@0.4.2: + parse-ms@4.0.0: resolution: { - integrity: sha512-6pNbSMW6OhAi9j+N8V+U715yBQsaWJ7eyEUaOrawX+isg5ZxhUlV1NipNtgaKHmFGiABwt+ZF04Ii+3Xjkg+8w==, + integrity: sha512-TXfryirbmq34y8QBwgqCVLi+8oA3oWx2eAnSn62ITyEhEYaWRlVZ2DvMM9eZbMs/RfxPu/PK/aBLyGj4IrqMHw==, } + engines: { node: '>=18' } - safe-regex-test@1.0.3: + parse-path@7.1.0: resolution: { - integrity: sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==, + integrity: sha512-EuCycjZtfPcjWk7KTksnJ5xPMvWGA/6i4zrLYhRG0hGvC3GPU/jGUj3Cy+ZR0v30duV3e23R95T1lE2+lsndSw==, } - engines: { node: '>= 0.4' } - safer-buffer@2.1.2: + parse-url@8.1.0: resolution: { - integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, + integrity: sha512-xDvOoLU5XRrcOZvnI6b8zA6n9O9ejNk/GExuz1yBuWUGn9KA97GI6HTs6u02wKara1CeVmZhH+0TZFdWScR89w==, } - sass-loader@16.0.0: + parse5-htmlparser2-tree-adapter@6.0.1: resolution: { - integrity: sha512-n13Z+3rU9A177dk4888czcVFiC8CL9dii4qpXWUg3YIIgZEvi9TCFKjOQcbK0kJM7DJu9VucrZFddvNfYCPwtw==, + integrity: sha512-qPuWvbLgvDGilKc5BoicRovlT4MtYT6JfJyBOMDsKoiT+GiuP5qyrPCnR9HcPECIJJmZh5jRndyNThnhhb/vlA==, } - engines: { node: '>= 18.12.0' } - peerDependencies: - '@rspack/core': 0.x || 1.x - node-sass: ^4.0.0 || ^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0 - sass: ^1.3.0 - sass-embedded: '*' - webpack: ^5.0.0 - peerDependenciesMeta: - '@rspack/core': - optional: true - node-sass: - optional: true - sass: - optional: true - sass-embedded: - optional: true - webpack: - optional: true - sass@1.77.2: + parse5@5.1.1: resolution: { - integrity: sha512-eb4GZt1C3avsX3heBNlrc7I09nyT00IUuo4eFhAbeXWU2fvA7oXI53SxODVAA+zgZCk9aunAZgO+losjR3fAwA==, + integrity: sha512-ugq4DFI0Ptb+WWjAdOK16+u/nHfiIrcE+sh8kZMaM0WllQKLI9rOUq6c2b7cwPkXdzfQESqvoqK6ug7U/Yyzug==, } - engines: { node: '>=14.0.0' } - hasBin: true - sass@1.77.6: + parse5@6.0.1: resolution: { - integrity: sha512-ByXE1oLD79GVq9Ht1PeHWCPMPB8XHpBuz1r85oByKHjZY6qV6rWnQovQzXJXuQ/XyE1Oj3iPk3lo28uzaRA2/Q==, + integrity: sha512-Ofn/CTFzRGTTxwpNEs9PP93gXShHcTq255nzRYSKe8AkVpZY7e1fpmTfOyoIvjP5HG7Z2ZM7VS9PPhQGW2pOpw==, } - engines: { node: '>=14.0.0' } - hasBin: true - saucelabs@1.5.0: + parse5@7.3.0: resolution: { - integrity: sha512-jlX3FGdWvYf4Q3LFfFWS1QvPg3IGCGWxIc8QBFdPTbpTJnt/v17FHXYVAn7C8sHf1yUXo2c7yIM0isDryfYtHQ==, + integrity: sha512-IInvU7fabl34qmi9gY8XOVxhYyMyuH2xUNpb2q8/Y+7552KlejkRvqvD19nMoUW/uQGGbqNpA6Tufu5FL5BZgw==, } - sax@1.2.4: + parseurl@1.3.3: resolution: { - integrity: sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==, + integrity: sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==, } + engines: { node: '>= 0.8' } - sax@1.3.0: + pascal-case@3.1.2: resolution: { - integrity: sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==, + integrity: sha512-uWlGT3YSnK9x3BQJaOdcZwrnV6hPpd8jFH1/ucpiLRPh/2zCVJKS19E4GvYHvaCcACn3foXZ0cLB9Wrx1KGe5g==, } - saxes@5.0.1: + path-dirname@1.0.2: resolution: { - integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==, + integrity: sha512-ALzNPpyNq9AqXMBjeymIjFDAkAFH06mHJH/cSBHAgU0s4vfpBn6b2nf8tiRLvagKD8RbTpq2FKTBg7cl9l3c7Q==, } - engines: { node: '>=10' } - saxes@6.0.0: + path-exists@3.0.0: resolution: { - integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==, + integrity: sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==, } - engines: { node: '>=v12.22.7' } + engines: { node: '>=4' } - scheduler@0.20.2: + path-exists@4.0.0: resolution: { - integrity: sha512-2eWfGgAqqWFGqtdMmcL5zCMK1U8KlXv8SQFGglL3CEtd0aDVDWgeF/YoCmvln55m5zSk3J/20hTaSBeSObsQDQ==, + integrity: sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==, } + engines: { node: '>=8' } - schema-utils@1.0.0: + path-is-absolute@1.0.1: resolution: { - integrity: sha512-i27Mic4KovM/lnGsy8whRCHhc7VicJajAjTrYg11K9zfZXnYIt4k5F+kZkwjnrhKzLic/HLU4j11mjsz2G/75g==, + integrity: sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==, } - engines: { node: '>= 4' } + engines: { node: '>=0.10.0' } - schema-utils@2.7.0: + path-key@2.0.1: resolution: { - integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==, + integrity: sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==, } - engines: { node: '>= 8.9.0' } + engines: { node: '>=4' } - schema-utils@2.7.1: + path-key@3.1.1: resolution: { - integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==, + integrity: sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==, } - engines: { node: '>= 8.9.0' } + engines: { node: '>=8' } - schema-utils@3.3.0: + path-parse@1.0.7: resolution: { - integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==, + integrity: sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==, } - engines: { node: '>= 10.13.0' } - schema-utils@4.2.0: + path-scurry@1.11.1: resolution: { - integrity: sha512-L0jRsrPpjdckP3oPug3/VxNKt2trR8TcabrM6FOAAlvC/9Phcmm+cuAgTlxBqdBR1WJx7Naj9WHw+aOmheSVbw==, + integrity: sha512-Xa4Nw17FS9ApQFJ9umLiJS4orGjm7ZzwUrwamcGQuHSzDyth9boKDaycYdDcZDuqYATXw4HFXgaqWTctW/v1HA==, } - engines: { node: '>= 12.13.0' } + engines: { node: '>=16 || 14 >=14.18' } - secure-compare@3.0.1: + path-to-regexp@0.1.12: resolution: { - integrity: sha512-AckIIV90rPDcBcglUwXPF3kg0P0qmPsPXAj6BBEENQE1p5yA1xfmDJzfi1Tappj37Pv2mVbKpL3Z1T+Nn7k1Qw==, + integrity: sha512-RA1GjUVMnvYFxuqovrEqZoxxW5NUZqbwKtYz/Tt7nXerk0LbLblQmrsgdeOxV5SFHf0UDggjS/bSeOZwt1pmEQ==, } - select-hose@2.0.0: + path-type@3.0.0: resolution: { - integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==, + integrity: sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==, } + engines: { node: '>=4' } - selenium-webdriver@3.6.0: + path-type@4.0.0: resolution: { - integrity: sha512-WH7Aldse+2P5bbFBO4Gle/nuQOdVwpHMTL6raL3uuBj/vPG07k6uzt3aiahu352ONBr5xXh0hDlM3LhtXPOC4Q==, + integrity: sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==, } - engines: { node: '>= 6.9.0' } + engines: { node: '>=8' } - selfsigned@2.4.1: + path-type@6.0.0: resolution: { - integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==, + integrity: sha512-Vj7sf++t5pBD637NSfkxpHSMfWaeig5+DKWLhcqIYx6mWQz5hdJTGDVMQiJcw1ZYkhs7AazKDGpRVji1LJCZUQ==, } - engines: { node: '>=10' } + engines: { node: '>=18' } - semver@5.7.2: + pathval@1.1.1: resolution: { - integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==, + integrity: sha512-Dp6zGqpTdETdR63lehJYPeIOqpiNBNtc7BpWSLrOje7UaIsE5aY92r/AunQA7rsXvet3lrJ3JnZX29UPTKXyKQ==, } - hasBin: true - semver@6.3.1: + perf-regexes@1.0.1: resolution: { - integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, + integrity: sha512-L7MXxUDtqr4PUaLFCDCXBfGV/6KLIuSEccizDI7JxT+c9x1G1v04BQ4+4oag84SHaCdrBgQAIs/Cqn+flwFPng==, } - hasBin: true + engines: { node: '>=6.14' } - semver@7.3.8: + performance-now@2.1.0: resolution: { - integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==, + integrity: sha512-7EAHlyLHI56VEIdK57uwHdHKIaAGbnXPiw0yWbarQZOKaKpvUIgW0jWRVLiatnM+XXlSwsanIBH/hzGMJulMow==, } - engines: { node: '>=10' } - hasBin: true - semver@7.5.4: + picocolors@0.2.1: resolution: { - integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==, + integrity: sha512-cMlDqaLEqfSaW8Z7N5Jw+lyIW869EzT73/F5lhtY9cLGoVxSXznfgfXMO0Z5K0o0Q2TkTXq+0KFsdnSe3jDViA==, } - engines: { node: '>=10' } - hasBin: true - semver@7.6.2: + picocolors@1.1.1: resolution: { - integrity: sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==, + integrity: sha512-xceH2snhtb5M9liqDsmEw56le376mTZkEX/jEb/RxNFyegNul7eNslCXP9FDj/Lcu0X8KEyMceP2ntpaHrDEVA==, } - engines: { node: '>=10' } - hasBin: true - semver@7.6.3: + picomatch@2.3.1: resolution: { - integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==, + integrity: sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==, } - engines: { node: '>=10' } - hasBin: true + engines: { node: '>=8.6' } - send@0.18.0: + picomatch@4.0.2: resolution: { - integrity: sha512-qqWzuOjSFOuqPjFe4NOsMLafToQQwBSOEpS+FwEt3A2V3vKubTquT3vmLTQpFgMXp8AlFWFuP1qKaJZOtPpVXg==, + integrity: sha512-M7BAV6Rlcy5u+m6oPhAPFgJTzAioX/6B0DxyvDlo9l8+T3nLKbrczg2WLUyzd45L8RqfUMyGPzekbMvX2Ldkwg==, } - engines: { node: '>= 0.8.0' } + engines: { node: '>=12' } - serialize-error@7.0.1: + picomatch@4.0.3: resolution: { - integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==, + integrity: sha512-5gTmgEY/sqK6gFXLIsQNH19lWb4ebPDLA4SdLP7dsWkIXHWlG66oPuVvXSGFPppYZz8ZDZq0dYYrbHfBCVUb1Q==, } - engines: { node: '>=10' } + engines: { node: '>=12' } - serialize-javascript@4.0.0: + pidtree@0.3.1: resolution: { - integrity: sha512-GaNA54380uFefWghODBWEGisLZFj00nS5ACs6yHa9nLqlLpVLO8ChDGeKRjZnV4Nh4n0Qi7nhYZD/9fCPzEqkw==, + integrity: sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==, } + engines: { node: '>=0.10' } + hasBin: true - serialize-javascript@5.0.1: + pify@2.3.0: resolution: { - integrity: sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==, + integrity: sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==, } + engines: { node: '>=0.10.0' } - serialize-javascript@6.0.2: + pify@3.0.0: resolution: { - integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==, + integrity: sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==, } + engines: { node: '>=4' } - serve-index@1.9.1: + pify@4.0.1: resolution: { - integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==, + integrity: sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==, } - engines: { node: '>= 0.8.0' } + engines: { node: '>=6' } - serve-static@1.15.0: + pify@5.0.0: resolution: { - integrity: sha512-XGuRDNjXUijsUL0vl6nSD7cwURuzEgglbOaFuZM9g3kwDXOWVTck0jLzjPzGD+TazWbboZYu52/9/XPdUgne9g==, + integrity: sha512-eW/gHNMlxdSP6dmG6uJip6FXN0EQBwm2clYYd8Wul42Cwu/DK8HEftzsapcNdYe2MfLiIwZqsDk2RDEsTE79hA==, } - engines: { node: '>= 0.8.0' } + engines: { node: '>=10' } - set-blocking@2.0.0: + pirates@4.0.7: resolution: { - integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==, + integrity: sha512-TfySrs/5nm8fQJDcBDuUng3VOUKsd7S+zqvbOTiGXHfxX4wK31ard+hoNuvkicM/2YFzlpDgABOevKSsB4G/FA==, } + engines: { node: '>= 6' } - set-function-length@1.2.2: + pkg-dir@4.2.0: resolution: { - integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==, + integrity: sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==, } - engines: { node: '>= 0.4' } + engines: { node: '>=8' } - set-function-name@2.0.2: + plur@5.1.0: resolution: { - integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==, + integrity: sha512-VP/72JeXqak2KiOzjgKtQen5y3IZHn+9GOuLDafPv0eXa47xq0At93XahYBs26MsifCQ4enGKwbjBTKgb9QJXg==, } - engines: { node: '>= 0.4' } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - setimmediate@1.0.5: + portfinder@1.0.38: resolution: { - integrity: sha512-MATJdZp8sLqDl/68LfQmbP8zKPLQNV6BIZoIgrscFDQ+RsvK/BxeDQOgyxKKoh0y/8h3BqVFnCqQ/gd+reiIXA==, + integrity: sha512-rEwq/ZHlJIKw++XtLAO8PPuOQA/zaPJOZJ37BVuN97nLpMJeuDVLVGRwbFoBgLudgdTMP2hdRJP++H+8QOA3vg==, } + engines: { node: '>= 10.12' } - setprototypeof@1.1.0: + possible-typed-array-names@1.1.0: resolution: { - integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==, + integrity: sha512-/+5VFTchJDoVj3bhoqi6UeymcD00DAwb1nJwamzPvHEszJ4FpF6SNNbUbOS8yI56qHzdV8eK0qEfOSiodkTdxg==, } + engines: { node: '>= 0.4' } - setprototypeof@1.2.0: + postcss-calc@8.2.4: resolution: { - integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==, + integrity: sha512-SmWMSJmB8MRnnULldx0lQIyhSNvuDl9HfrZkaqqE/WHAhToYsAvDq+yAsA/kIyINDszOp3Rh0GFoNuH5Ypsm3Q==, } + peerDependencies: + postcss: ^8.2.2 - sha.js@2.4.11: + postcss-colormin@5.3.1: resolution: { - integrity: sha512-QMEp5B7cftE7APOjk5Y6xgrbWu+WkLVQwk8JNjZ8nKRciZaByEW6MubieAiToS7+dwvrjGhH8jRXz3MVd0AYqQ==, + integrity: sha512-UsWQG0AqTFQmpBegeLLc1+c3jIqBNB0zlDGRWR+dQ3pRKJL1oeMzyqmH3o2PIfn9MBdNrVPWhDbT769LxCTLJQ==, } - hasBin: true + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - shallow-clone@3.0.1: + postcss-convert-values@5.1.3: resolution: { - integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==, + integrity: sha512-82pC1xkJZtcJEfiLw6UXnXVXScgtBrjlO5CBmuDQc+dlb88ZYheFsjTn40+zBVi3DkfF7iezO0nJUPLcJK3pvA==, } - engines: { node: '>=8' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - shebang-command@1.2.0: + postcss-discard-comments@5.1.2: resolution: { - integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==, + integrity: sha512-+L8208OVbHVF2UQf1iDmRcbdjJkuBF6IS29yBDSiWUIzpYaAhtNl6JYnYm12FnkeCwQqF5LeklOu6rAqgfBZqQ==, } - engines: { node: '>=0.10.0' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - shebang-command@2.0.0: + postcss-discard-duplicates@5.1.0: resolution: { - integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, + integrity: sha512-zmX3IoSI2aoenxHV6C7plngHWWhUOV3sP1T8y2ifzxzbtnuhk1EdPwm0S1bIUNaJ2eNbWeGLEwzw8huPD67aQw==, } - engines: { node: '>=8' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - shebang-regex@1.0.0: + postcss-discard-empty@5.1.1: resolution: { - integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==, + integrity: sha512-zPz4WljiSuLWsI0ir4Mcnr4qQQ5e1Ukc3i7UfE2XcrwKK2LIPIqE5jxMRxO6GbI3cv//ztXDsXwEWT3BHOGh3A==, } - engines: { node: '>=0.10.0' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - shebang-regex@3.0.0: + postcss-discard-overridden@5.1.0: resolution: { - integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, + integrity: sha512-21nOL7RqWR1kasIVdKs8HNqQJhFxLsyRfAnUDm4Fe4t4mCWL9OJiHvlHPjcd8zc5Myu89b/7wZDnOSjFgeWRtw==, } - engines: { node: '>=8' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - shell-quote@1.8.1: + postcss-loader@6.2.1: resolution: { - integrity: sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==, + integrity: sha512-WbbYpmAaKcux/P66bZ40bpWsBucjx/TTgVVzRZ9yUO8yQfVBlameJ0ZGVaPfH64hNSBh63a+ICP5nqOpBA0w+Q==, } + engines: { node: '>= 12.13.0' } + peerDependencies: + postcss: ^7.0.0 || ^8.0.1 + webpack: ^5.0.0 - shellwords@0.1.1: + postcss-merge-longhand@5.1.7: resolution: { - integrity: sha512-vFwSUfQvqybiICwZY5+DAWIPLKsWO31Q91JSKl3UYv+K5c2QRPzn0qzec6QPu1Qc9eHYItiP3NdJqNVqetYAww==, + integrity: sha512-YCI9gZB+PLNskrK0BB3/2OzPnGhPkBEwmwhfYk1ilBHYVAZB7/tkTHFBAnCrvBBOmeYyMYw3DMjT55SyxMBzjQ==, } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - shiki@0.14.7: + postcss-merge-rules@5.1.4: resolution: { - integrity: sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==, + integrity: sha512-0R2IuYpgU93y9lhVbO/OylTtKMVcHb67zjWIfCiKR9rWL3GUk1677LAqD/BcHizukdZEjT8Ru3oHRoAYoJy44g==, } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - side-channel@1.0.6: + postcss-minify-font-values@5.1.0: resolution: { - integrity: sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==, + integrity: sha512-el3mYTgx13ZAPPirSVsHqFzl+BBBDrXvbySvPGFnQcTI4iNslrPaFq4muTkLZmKlGk4gyFAYUBMH30+HurREyA==, } - engines: { node: '>= 0.4' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - siginfo@2.0.0: + postcss-minify-gradients@5.1.1: resolution: { - integrity: sha512-ybx0WO1/8bSBLEWXZvEd7gMW3Sn3JFlW3TvX1nREbDLRNQNaeNN8WK0meBwPdAaOI7TtRRRJn/Es1zhrrCHu7g==, + integrity: sha512-VGvXMTpCEo4qHTNSa9A0a3D+dxGFZCYwR6Jokk+/3oB6flu2/PnPXAh2x7x52EkY5xlIHLm+Le8tJxe/7TNhzw==, } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - signal-exit@3.0.7: + postcss-minify-params@5.1.4: resolution: { - integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, + integrity: sha512-+mePA3MgdmVmv6g+30rn57USjOGSAyuxUmkfiWpzalZ8aiBkdPYjXWtHuwJGm1v5Ojy0Z0LaSYhHaLJQB0P8Jw==, } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - signal-exit@4.1.0: + postcss-minify-selectors@5.2.1: resolution: { - integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, + integrity: sha512-nPJu7OjZJTsVUmPdm2TcaiohIwxP+v8ha9NehQ2ye9szv4orirRU3SDdtUmKH+10nzn0bAyOXZ0UEr7OpvLehg==, } - engines: { node: '>=14' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - sigstore@1.9.0: + postcss-modules-extract-imports@2.0.0: resolution: { - integrity: sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==, + integrity: sha512-LaYLDNS4SG8Q5WAWqIJgdHPJrDDr/Lv775rMBFUbgjTz6j34lUznACHcdRWroPvXANP2Vj7yNK57vp9eFqzLWQ==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - hasBin: true + engines: { node: '>= 6' } - sigstore@2.3.1: + postcss-modules-extract-imports@3.1.0: resolution: { - integrity: sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==, + integrity: sha512-k3kNe0aNFQDAZGbin48pL2VNidTF0w4/eASDsxlyspobzU3wZQLOGj7L9gfRe0Jo9/4uud09DsjFNH7winGv8Q==, } - engines: { node: ^16.14.0 || >=18.0.0 } + engines: { node: ^10 || ^12 || >= 14 } + peerDependencies: + postcss: ^8.1.0 - sirv@2.0.4: + postcss-modules-local-by-default@3.0.3: resolution: { - integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==, + integrity: sha512-e3xDq+LotiGesympRlKNgaJ0PCzoUIdpH0dj47iWAui/kyTgh3CiAr1qP54uodmJhl6p9rN6BoNcdEDVJx9RDw==, } - engines: { node: '>= 10' } + engines: { node: '>= 6' } - sisteransi@1.0.5: + postcss-modules-local-by-default@4.2.0: resolution: { - integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==, + integrity: sha512-5kcJm/zk+GJDSfw+V/42fJ5fhjL5YbFDl8nVdXkJPLLW+Vf9mTD5Xe0wqIaDnLuL2U6cDNpTr+UQ+v2HWIBhzw==, } + engines: { node: ^10 || ^12 || >= 14 } + peerDependencies: + postcss: ^8.1.0 - skip-regex@1.0.2: + postcss-modules-scope@2.2.0: resolution: { - integrity: sha512-pEjMUbwJ5Pl/6Vn6FsamXHXItJXSRftcibixDmNCWbWhic0hzHrwkMZo0IZ7fMRH9KxcWDFSkzhccB4285PutA==, + integrity: sha512-YyEgsTMRpNd+HmyC7H/mh3y+MeFWevy7V1evVhJWewmMbjDHIbZbOXICC2y+m1xI1UVfIT1HMW/O04Hxyu9oXQ==, } - engines: { node: '>=4.2' } + engines: { node: '>= 6' } - slash@1.0.0: + postcss-modules-scope@3.2.1: resolution: { - integrity: sha512-3TYDR7xWt4dIqV2JauJr+EJeW356RXijHeUlO+8djJ+uBXPn8/2dpzBc8yQhh583sVvc9CvFAeQVgijsH+PNNg==, + integrity: sha512-m9jZstCVaqGjTAuny8MdgE88scJnCiQSlSrOWcTQgM2t32UBe+MUmFSO5t7VMSfAf/FJKImAxBav8ooCHJXCJA==, } - engines: { node: '>=0.10.0' } + engines: { node: ^10 || ^12 || >= 14 } + peerDependencies: + postcss: ^8.1.0 - slash@3.0.0: + postcss-modules-values@3.0.0: resolution: { - integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, + integrity: sha512-1//E5jCBrZ9DmRX+zCtmQtRSV6PV42Ix7Bzj9GbwJceduuf7IqP8MgeTXuRDHOWj2m0VzZD5+roFWDuU8RQjcg==, } - engines: { node: '>=8' } - slash@4.0.0: + postcss-modules-values@4.0.0: resolution: { - integrity: sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==, + integrity: sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==, } - engines: { node: '>=12' } + engines: { node: ^10 || ^12 || >= 14 } + peerDependencies: + postcss: ^8.1.0 - slash@5.1.0: + postcss-normalize-charset@5.1.0: resolution: { - integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==, + integrity: sha512-mSgUJ+pd/ldRGVx26p2wz9dNZ7ji6Pn8VWBajMXFf8jk7vUoSrZ2lt/wZR7DtlZYKesmZI680qjr2CeFF2fbUg==, } - engines: { node: '>=14.16' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - slice-ansi@5.0.0: + postcss-normalize-display-values@5.1.0: resolution: { - integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==, + integrity: sha512-WP4KIM4o2dazQXWmFaqMmcvsKmhdINFblgSeRgn8BJ6vxaMyaJkwAzpPpuvSIoG/rmX3M+IrRZEz2H0glrQNEA==, } - engines: { node: '>=12' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - slice-ansi@7.1.0: + postcss-normalize-positions@5.1.1: resolution: { - integrity: sha512-bSiSngZ/jWeX93BqeIAbImyTbEihizcwNjFoRUIY/T1wWQsfsm2Vw1agPKylXvQTU7iASGdHhyqRlqQzfz+Htg==, + integrity: sha512-6UpCb0G4eofTCQLFVuI3EVNZzBNPiIKcA1AKVka+31fTVySphr3VUgAIULBhxZkKgwLImhzMR2Bw1ORK+37INg==, } - engines: { node: '>=18' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - smart-buffer@4.2.0: + postcss-normalize-repeat-style@5.1.1: resolution: { - integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==, + integrity: sha512-mFpLspGWkQtBcWIRFLmewo8aC3ImN2i/J3v8YCFUwDnPu3Xz4rLohDO26lGjwNsQxB3YF0KKRwspGzE2JEuS0g==, } - engines: { node: '>= 6.0.0', npm: '>= 3.0.0' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - socket.io-adapter@2.5.4: + postcss-normalize-string@5.1.0: resolution: { - integrity: sha512-wDNHGXGewWAjQPt3pyeYBtpWSq9cLE5UW1ZUPL/2eGK9jtse/FpXib7epSTsz0Q0m+6sg6Y4KtcFTlah1bdOVg==, + integrity: sha512-oYiIJOf4T9T1N4i+abeIc7Vgm/xPCGih4bZz5Nm0/ARVJ7K6xrDlLwvwqOydvyL3RHNf8qZk6vo3aatiw/go3w==, } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - socket.io-parser@4.2.4: + postcss-normalize-timing-functions@5.1.0: resolution: { - integrity: sha512-/GbIKmo8ioc+NIWIhwdecY0ge+qVBSMdgxGygevmdHj24bsfgtCmcUUcQ5ZzcylGFHsN3k4HB4Cgkl96KVnuew==, + integrity: sha512-DOEkzJ4SAXv5xkHl0Wa9cZLF3WCBhF3o1SKVxKQAa+0pYKlueTpCgvkFAHfk+Y64ezX9+nITGrDZeVGgITJXjg==, } - engines: { node: '>=10.0.0' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - socket.io@4.7.5: + postcss-normalize-unicode@5.1.1: resolution: { - integrity: sha512-DmeAkF6cwM9jSfmp6Dr/5/mfMwb5Z5qRrSXLpo3Fq5SqyU8CMF15jIN4ZhfSwu35ksM1qmHZDQ/DK5XTccSTvA==, + integrity: sha512-qnCL5jzkNUmKVhZoENp1mJiGNPcsJCs1aaRmURmeJGES23Z/ajaln+EPTD+rBeNkSryI+2WTdW+lwcVdOikrpA==, } - engines: { node: '>=10.2.0' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - sockjs@0.3.24: + postcss-normalize-url@5.1.0: resolution: { - integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==, + integrity: sha512-5upGeDO+PVthOxSmds43ZeMeZfKH+/DKgGRD7TElkkyS46JXAUhMzIKiCa7BabPeIy3AQcTkXwVVN7DbqsiCew==, } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - socks-proxy-agent@7.0.0: + postcss-normalize-whitespace@5.1.1: resolution: { - integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==, + integrity: sha512-83ZJ4t3NUDETIHTa3uEg6asWjSBYL5EdkVB0sDncx9ERzOKBVJIUeDO9RyA9Zwtig8El1d79HBp0JEi8wvGQnA==, } - engines: { node: '>= 10' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - socks-proxy-agent@8.0.3: + postcss-ordered-values@5.1.3: resolution: { - integrity: sha512-VNegTZKhuGq5vSD6XNKlbqWhyt/40CgoEw8XxD6dhnm8Jq9IEa3nIa4HwnM8XOqU0CdB0BwWVXusqiFXfHB3+A==, + integrity: sha512-9UO79VUhPwEkzbb3RNpqqghc6lcYej1aveQteWY+4POIwlqkYE21HKWaLDF6lWNuqCobEAyTovVhtI32Rbv2RQ==, } - engines: { node: '>= 14' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - socks@2.8.3: + postcss-reduce-initial@5.1.2: resolution: { - integrity: sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==, + integrity: sha512-dE/y2XRaqAi6OvjzD22pjTUQ8eOfc6m/natGHgKFBK9DxFmIm69YmaRVQrGgFlEfc1HePIurY0TmDeROK05rIg==, } - engines: { node: '>= 10.0.0', npm: '>= 3.0.0' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - sort-keys@2.0.0: + postcss-reduce-transforms@5.1.0: resolution: { - integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==, + integrity: sha512-2fbdbmgir5AvpW9RLtdONx1QoYG2/EtqpNQbFASDlixBbAYuTcJ0dECwlqNqH7VbaUnEnh8SrxOe2sRIn24XyQ==, } - engines: { node: '>=4' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - source-map-js@1.2.0: + postcss-selector-parser@6.1.2: resolution: { - integrity: sha512-itJW8lvSA0TXEphiRoawsCksnlf8SyvmFzIhltqAHluXd88pkCd+cXJVHTDwdCr0IzwptSm035IHQktUu1QUMg==, + integrity: sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==, } - engines: { node: '>=0.10.0' } + engines: { node: '>=4' } - source-map-js@1.2.1: + postcss-selector-parser@7.1.0: resolution: { - integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==, + integrity: sha512-8sLjZwK0R+JlxlYcTuVnyT2v+htpdrjDOKuMcOVdYjt52Lh8hWRYpxBPoKx/Zg+bcjc3wx6fmQevMmUztS/ccA==, } - engines: { node: '>=0.10.0' } + engines: { node: '>=4' } - source-map-loader@0.2.4: + postcss-svgo@5.1.0: resolution: { - integrity: sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==, + integrity: sha512-D75KsH1zm5ZrHyxPakAxJWtkyXew5qwS70v56exwvw542d9CRtTo78K0WeFxZB4G7JXKKMbEZtZayTGdIky/eA==, } - engines: { node: '>= 6' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - source-map-loader@5.0.0: + postcss-unique-selectors@5.1.1: resolution: { - integrity: sha512-k2Dur7CbSLcAH73sBcIkV5xjPV4SzqO1NJ7+XaQl8if3VODDUj3FNchNGpqgJSKbvUfJuhVdv8K2Eu8/TNl2eA==, + integrity: sha512-5JiODlELrz8L2HwxfPnhOWZYWDxVHWL83ufOv84NrcgipI7TaeRsatAhK4Tr2/ZiYldpK/wBvw5BD3qfaK96GA==, } - engines: { node: '>= 18.12.0' } + engines: { node: ^10 || ^12 || >=14.0 } peerDependencies: - webpack: ^5.72.1 + postcss: ^8.2.15 - source-map-resolve@0.5.3: + postcss-value-parser@4.2.0: resolution: { - integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==, + integrity: sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==, } - deprecated: See https://github.com/lydell/source-map-resolve#deprecated - source-map-resolve@0.6.0: + postcss@7.0.39: resolution: { - integrity: sha512-KXBr9d/fO/bWo97NXsPIAW1bFSBOuCnjbNTBMO7N59hsv5i9yzRDfcYwwt0l04+VqnKC+EwzvJZIP/qkuMgR/w==, + integrity: sha512-yioayjNbHn6z1/Bywyb2Y4s3yvDAeXGOyxqD+LnVOinq6Mdmd++SW2wUNVzavyyHxd6+DxzWGIuosg6P1Rj8uA==, } - deprecated: See https://github.com/lydell/source-map-resolve#deprecated + engines: { node: '>=6.0.0' } - source-map-support@0.4.18: + postcss@8.5.6: resolution: { - integrity: sha512-try0/JqxPLF9nOjvSta7tVondkP5dwgyLDjVoyMDlmjugT2lRZ1OfsrYTkCd2hkDnJTKRbO/Rl3orm8vlsUzbA==, + integrity: sha512-3Ybi1tAuwAP9s0r1UQ2J4n5Y0G05bJkpUIO0/bI9MhwmD70S5aTWbXGBwxHrelT+XM1k6dM0pk+SwNkpTRN7Pg==, } + engines: { node: ^10 || ^12 || >=14 } - source-map-support@0.5.21: + prelude-ls@1.2.1: resolution: { - integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, + integrity: sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==, } + engines: { node: '>= 0.8.0' } - source-map-url@0.4.1: + prettier-linter-helpers@1.0.0: resolution: { - integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==, + integrity: sha512-GbK2cP9nraSSUF9N2XwUwqfzlAFlMNYYl+ShE/V+H8a9uNl/oUqB1w2EL54Jh0OlyRSd8RfWYJ3coVS4TROP2w==, } - deprecated: See https://github.com/lydell/source-map-url#deprecated + engines: { node: '>=6.0.0' } - source-map@0.5.6: + prettier@2.8.8: resolution: { - integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==, + integrity: sha512-tdN8qQGvNjw4CHbY+XXk0JgCXn9QiF21a55rBe5LJAU+kDyC4WQn4+awm2Xfk2lQMk5fKup9XgzTZtGkjBdP9Q==, } - engines: { node: '>=0.10.0' } + engines: { node: '>=10.13.0' } + hasBin: true - source-map@0.5.7: + pretty-error@4.0.0: resolution: { - integrity: sha512-LbrmJOMUSdEVxIKvdcJzQC+nQhe8FUZQTXQy6+I75skNgn3OoQ0DZA8YnFa7gp8tqtL3KPf1kmo0R5DoApeSGQ==, + integrity: sha512-AoJ5YMAcXKYxKhuJGdcvse+Voc6v1RgnsR3nWcYU7q4t6z0Q6T86sv5Zq8VIRbOWWFpvdGE83LtdSMNd+6Y0xw==, } - engines: { node: '>=0.10.0' } - source-map@0.6.1: + pretty-format@27.5.1: resolution: { - integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, + integrity: sha512-Qb1gy5OrP5+zDf2Bvnzdl3jsTf1qXVMazbvCoKhtKqVs4/YK4ozX4gKQJJVyNe+cajNPn0KoC0MC3FUmaHWEmQ==, } - engines: { node: '>=0.10.0' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - source-map@0.7.4: + pretty-format@29.4.3: resolution: { - integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==, + integrity: sha512-cvpcHTc42lcsvOOAzd3XuNWTcvk1Jmnzqeu+WsOuiPmxUJTnkbAcFNsRKvEpBEUFVUgy/GTZLulZDcDEi+CIlA==, } - engines: { node: '>= 8' } + engines: { node: ^14.15.0 || ^16.10.0 || >=18.0.0 } - sourcemap-codec@1.4.8: + pretty-ms@9.3.0: resolution: { - integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==, + integrity: sha512-gjVS5hOP+M3wMm5nmNOucbIrqudzs9v/57bWRHQWLYklXqoXKrVfYW2W9+glfGsqtPgpiz5WwyEEB+ksXIx3gQ==, } - deprecated: Please use @jridgewell/sourcemap-codec instead + engines: { node: '>=18' } - spawn-wrap@2.0.0: + proc-log@2.0.1: resolution: { - integrity: sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==, + integrity: sha512-Kcmo2FhfDTXdcbfDH76N7uBYHINxc/8GW7UAVuVP9I+Va3uHSerrnKV6dLooga/gh7GlgzuCCr/eoldnL1muGw==, } - engines: { node: '>=8' } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - spdx-correct@3.2.0: + proc-log@3.0.0: resolution: { - integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==, + integrity: sha512-++Vn7NS4Xf9NacaU9Xq3URUuqZETPsf8L4j5/ckhaRYsfPeRyzGw+iDjFhV/Jr3uNmTvvddEJFWh5R1gRgUH8A==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - spdx-exceptions@2.5.0: + proc-log@4.2.0: resolution: { - integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==, + integrity: sha512-g8+OnU/L2v+wyiVK+D5fA34J7EH8jZ8DDlvwhRCMxmMj7UCBvxiO1mGeN+36JXIKF4zevU4kRBd8lVgG9vLelA==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - spdx-expression-parse@3.0.1: + process-nextick-args@2.0.1: resolution: { - integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==, + integrity: sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==, } - spdx-license-ids@3.0.17: + process-on-spawn@1.1.0: resolution: { - integrity: sha512-sh8PWc/ftMqAAdFiBu6Fy6JUOYjqDJBJvIhpfDMyHrr0Rbp5liZqd4TjtQ/RgfLjKFZb+LMx5hpml5qOWy0qvg==, + integrity: sha512-JOnOPQ/8TZgjs1JIH/m9ni7FfimjNa/PRx7y/Wb5qdItsnhO0jE4AT7fC0HjC28DUQWDr50dwSYZLdRMlqDq3Q==, } + engines: { node: '>=8' } - spdy-transport@3.0.0: + progress-webpack-plugin@1.0.16: resolution: { - integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==, + integrity: sha512-sdiHuuKOzELcBANHfrupYo+r99iPRyOnw15qX+rNlVUqXGfjXdH4IgxriKwG1kNJwVswKQHMdj1hYZMcb9jFaA==, } + engines: { node: '>= 10.13.0' } + peerDependencies: + webpack: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 - spdy@4.0.2: + progress@2.0.3: resolution: { - integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==, + integrity: sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==, } - engines: { node: '>=6.0.0' } + engines: { node: '>=0.4.0' } - split2@3.2.2: + promise-all-reject-late@1.0.1: resolution: { - integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==, + integrity: sha512-vuf0Lf0lOxyQREH7GDIOUMLS7kz+gs8i6B+Yi8dC68a2sychGrHTJYghMBD6k7eUcH0H5P73EckCA48xijWqXw==, } - split@1.0.1: + promise-call-limit@1.0.2: resolution: { - integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==, + integrity: sha512-1vTUnfI2hzui8AEIixbdAJlFY4LFDXqQswy/2eOlThAscXCY4It8FdVuI0fMJGAB2aWGbdQf/gv0skKYXmdrHA==, } - splitpanes@3.1.5: + promise-inflight@1.0.1: resolution: { - integrity: sha512-r3Mq2ITFQ5a2VXLOy4/Sb2Ptp7OfEO8YIbhVJqJXoFc9hc5nTXXkCvtVDjIGbvC0vdE7tse+xTM9BMjsszP6bw==, + integrity: sha512-6zWPyEOFaQBJYcGMHBKTKJ3u6TBsnMFOIZSa6ce1e/ZrrsOlnHRHbabMjLiBYKp+n44X9eUI6VUPaukCXHuG4g==, } + peerDependencies: + bluebird: '*' + peerDependenciesMeta: + bluebird: + optional: true - sprintf-js@1.0.3: + promise-retry@2.0.1: resolution: { - integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, + integrity: sha512-y+WKFlBR8BGXnsNlIHFGPZmyDf3DFMoLhaflAnyZgV6rG6xu+JwesTo2Q9R6XwYmtmwAFCkAk3e35jEdoeh/3g==, } + engines: { node: '>=10' } - sprintf-js@1.1.3: + prompts@2.4.2: resolution: { - integrity: sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==, + integrity: sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==, } + engines: { node: '>= 6' } - sshpk@1.18.0: + promzard@0.3.0: resolution: { - integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==, + integrity: sha512-JZeYqd7UAcHCwI+sTOeUDYkvEU+1bQ7iE0UT1MgB/tERkAPkesW46MrpIySzODi+owTjZtiF8Ay5j9m60KmMBw==, } - engines: { node: '>=0.10.0' } - hasBin: true - ssri@10.0.6: + proto-list@1.2.4: resolution: { - integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==, + integrity: sha512-vtK/94akxsTMhe0/cbfpR+syPuszcuwhqVjJq26CuNDgFGj682oRBXOP5MJpv2r7JtE8MsiepGIqvvOTBwn2vA==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - ssri@6.0.2: + protocols@2.0.2: resolution: { - integrity: sha512-cepbSq/neFK7xB6A50KHN0xHDotYzq58wWCa5LeWqnPrHG8GzfEjO/4O8kpmcGW+oaxkvhEJCWgbgNk4/ZV93Q==, + integrity: sha512-hHVTzba3wboROl0/aWRRG9dMytgH6ow//STBZh43l/wQgmMhYhOFi0EHWAPtoCz9IAUymsyP0TSBHkhgMEGNnQ==, } - ssri@8.0.1: + proxy-addr@2.0.7: resolution: { - integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==, + integrity: sha512-llQsMLSUDUPT44jdrU/O37qlnifitDP+ZwrmmZcoSKyLKvtZxpyV0n2/bD/N4tBAAZ/gJEdZU7KMraoK1+XYAg==, } - engines: { node: '>= 8' } + engines: { node: '>= 0.10' } - ssri@9.0.1: + proxy-from-env@1.1.0: resolution: { - integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==, + integrity: sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==, } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - stable@0.1.8: + prr@1.0.1: resolution: { - integrity: sha512-ji9qxRnOVfcuLDySj9qzhGSEFVobyt1kIOSkj1qZzYLzq7Tos/oUUWvotUPQLlrsidqsK6tBH89Bc9kL5zHA6w==, + integrity: sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==, } - 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' - stack-utils@2.0.6: + pseudomap@1.0.2: resolution: { - integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==, + integrity: sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==, } - engines: { node: '>=10' } - stackback@0.0.2: + psl@1.15.0: resolution: { - integrity: sha512-1XMJE5fQo1jGH6Y/7ebnwPOBEkIEnT4QF32d5R1+VXdXveM0IBMJt8zfaxX1P3QhVwrYe+576+jkANtSS2mBbw==, + integrity: sha512-JZd3gMVBAVQkSs6HdNZo9Sdo0LNcQeMNP3CozBJb3JYC/QUYZTnKxP+f8oWRX4rHP5EurWxqAHTSwUCjlNKa1w==, } - stackframe@1.3.4: + pump@2.0.1: resolution: { - integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==, + integrity: sha512-ruPMNRkN3MHP1cWJc9OWr+T/xDP0jhXYCLfJcBuX54hhfIBnaQmAUMfDcG4DM5UMWByBbJY69QSphm3jtDKIkA==, } - statuses@1.5.0: + pump@3.0.3: resolution: { - integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==, + integrity: sha512-todwxLMY7/heScKmntwQG8CXVkWUOdYxIvY2s0VWAAMh/nd8SoYiRaKjlr7+iCs984f2P8zvrfWcDDYVb73NfA==, } - engines: { node: '>= 0.6' } - statuses@2.0.1: + pumpify@1.5.1: resolution: { - integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==, + integrity: sha512-oClZI37HvuUJJxSKKrC17bZ9Cu0ZYhEAGPsPUy9KlMUmv9dKX2o77RUmq7f3XjIxbwyGwYzbzQ1L2Ks8sIradQ==, } - engines: { node: '>= 0.8' } - std-env@3.7.0: + punycode@2.3.1: resolution: { - integrity: sha512-JPbdCEQLj1w5GilpiHAx3qJvFndqybBysA3qUOnznweH4QbNYUsW/ea8QzSrnh0vNsezMMw5bcVool8lM0gwzg==, + integrity: sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==, } + engines: { node: '>=6' } - stream-browserify@3.0.0: + q@1.5.1: resolution: { - integrity: sha512-H73RAHsVBapbim0tU2JwwOiXUj+fikfiaoYAKHF3VJfA0pe2BCzkhAHBlLG6REzE+2WNZcxOXjK7lkso+9euLA==, + integrity: sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==, } + engines: { node: '>=0.6.0', teleport: '>=0.2.0' } + deprecated: |- + You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other. + + (For a CapTP with native promises, see @endo/eventual-send and @endo/captp) - stream-each@1.2.3: + qs@6.13.0: resolution: { - integrity: sha512-vlMC2f8I2u/bZGqkdfLQW/13Zihpej/7PmSiMQsbYddxuTsJp8vRe2x2FvVExZg7FaOds43ROAuFJwPR4MTZLw==, + integrity: sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==, } + engines: { node: '>=0.6' } - stream-http@3.2.0: + qs@6.5.3: resolution: { - integrity: sha512-Oq1bLqisTyK3TSCXpPbT4sdeYNdmyZJv1LxpEm2vu1ZhK89kSE5YXwZc3cWk0MagGaKriBh9mCFbVGtO+vY29A==, + integrity: sha512-qxXIEh4pCGfHICj1mAJQ2/2XVZkjCDTcEgfoSQxc/fYivUZxTkk7L3bDBJSoNrEzXI17oUO5Dp07ktqE5KzczA==, } + engines: { node: '>=0.6' } - stream-shift@1.0.3: + querystringify@2.2.0: resolution: { - integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==, + integrity: sha512-FIqgj2EUvTa7R50u0rGsyTftzjYmv/a3hO345bZNrqabNqjtgiDMgmo4mkUjd+nzU5oF3dClKqFIPUKybUyqoQ==, } - streamroller@3.1.5: + queue-microtask@1.2.3: resolution: { - integrity: sha512-KFxaM7XT+irxvdqSP1LGLgNWbYN7ay5owZ3r/8t77p+EtSUAfUgtl7be3xtqtOmGUl9K9YPO2ca8133RlTjvKw==, + integrity: sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==, } - engines: { node: '>=8.0' } - string-argv@0.3.2: + quick-lru@4.0.1: resolution: { - integrity: sha512-aqD2Q0144Z+/RqG52NeHEkZauTAUWJO8c6yTftGJKO3Tja5tUgIfmIl6kExvhtxSDP7fXB6DvzkfMpCd/F3G+Q==, + integrity: sha512-ARhCpm70fzdcvNQfPoy49IaanKkTlRWF2JMzqhcJbhSFRZv7nPTvZJdcY7301IPmvW+/p0RgIWnQDLJxifsQ7g==, } - engines: { node: '>=0.6.19' } + engines: { node: '>=8' } - string-hash@1.1.3: + randombytes@2.1.0: resolution: { - integrity: sha512-kJUvRUFK49aub+a7T1nNE66EJbZBMnBgoC1UbCZ5n6bsZKBRga4KgBRTMn/pFkeCZSYtNeSyMxPDM0AXWELk2A==, + integrity: sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==, } - string-length@4.0.2: + range-parser@1.2.1: resolution: { - integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==, + integrity: sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==, } - engines: { node: '>=10' } + engines: { node: '>= 0.6' } - string-width@2.1.1: + raw-body@2.5.2: resolution: { - integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==, + integrity: sha512-8zGqypfENjCIqGhgXToC8aB2r7YrBX+AQAfIPs/Mlk+BtPTztOvTS01NRW/3Eh60J+a48lt8qsCzirQ6loCVfA==, } - engines: { node: '>=4' } + engines: { node: '>= 0.8' } - string-width@3.1.0: + react-is@17.0.2: resolution: { - integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==, + integrity: sha512-w2GsyukL62IJnlaff/nRegPQR94C/XXamvMWmSHRJ4y7Ts/4ocGRmTHvOs8PSE6pB3dWOrD/nueuU5sduBsQ4w==, } - engines: { node: '>=6' } - string-width@4.2.3: + react-is@18.3.1: resolution: { - integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, + integrity: sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==, } - engines: { node: '>=8' } - string-width@5.1.2: + read-cmd-shim@3.0.0: resolution: { - integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==, + integrity: sha512-KQDVjGqhZk92PPNRj9ZEXEuqg8bUobSKRw+q0YQ3TKI5xkce7bUJobL4Z/OtiEbAAv70yEpYIXp4iQ9L8oPVog==, } - engines: { node: '>=12' } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - string-width@7.1.0: + read-cmd-shim@4.0.0: resolution: { - integrity: sha512-SEIJCWiX7Kg4c129n48aDRwLbFb2LJmXXFrWBG4NGaRtMQ3myKPKbwrD1BKqQn74oCoNMBVrfDEr5M9YxCsrkw==, + integrity: sha512-yILWifhaSEEytfXI76kB9xEEiG1AiozaCJZ83A87ytjRiN+jVibXjedjCRNjoZviinhG+4UkalO3mWTd8u5O0Q==, } - engines: { node: '>=18' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - string.prototype.matchall@4.0.11: + read-package-json-fast@2.0.3: resolution: { - integrity: sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==, + integrity: sha512-W/BKtbL+dUjTuRL2vziuYhp76s5HZ9qQhd/dKfWIZveD0O40453QNyZhC0e63lqZrAQ4jiOapVoeJ7JrszenQQ==, } - engines: { node: '>= 0.4' } + engines: { node: '>=10' } - string.prototype.padend@3.1.6: + read-package-json-fast@3.0.2: resolution: { - integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==, + integrity: sha512-0J+Msgym3vrLOUB3hzQCuZHII0xkNGCtz/HJH9xZshwv9DbDwkw1KaE3gx/e2J5rpEY5rtOy6cyhKOPrkP7FZw==, } - engines: { node: '>= 0.4' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - string.prototype.trim@1.2.9: + read-package-json@5.0.1: resolution: { - integrity: sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==, + integrity: sha512-MALHuNgYWdGW3gKzuNMuYtcSSZbGQm94fAp16xt8VsYTLBjUSc55bLMKe6gzpWue0Tfi6CBgwCSdDAqutGDhMg==, } - engines: { node: '>= 0.4' } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + deprecated: This package is no longer supported. Please use @npmcli/package-json instead. - string.prototype.trimend@1.0.8: + read-package-json@6.0.4: resolution: { - integrity: sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==, + integrity: sha512-AEtWXYfopBj2z5N5PbkAOeNHRPUg5q+Nen7QLxV8M2zJq1ym6/lCz3fYNTCXe19puu2d06jfHhrP7v/S2PtMMw==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + deprecated: This package is no longer supported. Please use @npmcli/package-json instead. - string.prototype.trimstart@1.0.8: + read-pkg-up@3.0.0: resolution: { - integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==, + integrity: sha512-YFzFrVvpC6frF1sz8psoHDBGF7fLPc+llq/8NB43oagqWkx8ar5zYtsTORtOjw9W2RHLpWP+zTWwBvf1bCmcSw==, } - engines: { node: '>= 0.4' } + engines: { node: '>=4' } - string_decoder@1.1.1: + read-pkg-up@7.0.1: resolution: { - integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==, + integrity: sha512-zK0TB7Xd6JpCLmlLmufqykGE+/TlOePD6qKClNW7hHDKFh/J7/7gCWGR7joEQEW1bKq3a3yUZSObOoWLFQ4ohg==, } + engines: { node: '>=8' } - string_decoder@1.3.0: + read-pkg@3.0.0: resolution: { - integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, + integrity: sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==, } + engines: { node: '>=4' } - strip-ansi@3.0.1: + read-pkg@5.2.0: resolution: { - integrity: sha512-VhumSSbBqDTP8p2ZLKj40UjBCV4+v8bUSEpUb4KjRgWk9pbqGF4REFj6KEagidb2f/M6AzC0EmFyDNGaw9OCzg==, + integrity: sha512-Ug69mNOpfvKDAc2Q8DRpMjjzdtrnv9HcSMX+4VsZxD1aZ6ZzrIE7rlzXBtWTyhULSMKg076AW6WR5iZpD0JiOg==, } - engines: { node: '>=0.10.0' } + engines: { node: '>=8' } - strip-ansi@4.0.0: + read@1.0.7: resolution: { - integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==, + integrity: sha512-rSOKNYUmaxy0om1BNjMN4ezNT6VKK+2xF4GBhc81mkH7L60i6dp8qPYrkndNLT3QPphoII3maL9PVC9XmhHwVQ==, } - engines: { node: '>=4' } + engines: { node: '>=0.8' } - strip-ansi@5.2.0: + readable-stream@2.3.8: resolution: { - integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==, + integrity: sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==, } - engines: { node: '>=6' } - strip-ansi@6.0.1: + readable-stream@3.6.2: resolution: { - integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, + integrity: sha512-9u/sniCrY3D5WdsERHzHE4G2YCXqoG5FTHUiCC4SIbr6XcLZBY05ya9EKjYek9O5xOAwjGq+1JdGBAS7Q9ScoA==, } - engines: { node: '>=8' } + engines: { node: '>= 6' } - strip-ansi@7.1.0: + readdirp@3.5.0: resolution: { - integrity: sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==, + integrity: sha512-cMhu7c/8rdhkHXWsY+osBhfSy0JikwpHK/5+imo+LpeasTF8ouErHrlYkwT0++njiyuDvc7OFY5T3ukvZ8qmFQ==, } - engines: { node: '>=12' } + engines: { node: '>=8.10.0' } - strip-bom@3.0.0: + readdirp@3.6.0: resolution: { - integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, + integrity: sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==, } - engines: { node: '>=4' } + engines: { node: '>=8.10.0' } - strip-bom@4.0.0: + redent@3.0.0: resolution: { - integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==, + integrity: sha512-6tDA8g98We0zd0GvVeMT9arEOnTw9qM03L9cJXaCjrip1OO764RDBLBfrB4cwzNGDj5OA5ioymC9GkizgWJDUg==, } engines: { node: '>=8' } - strip-eof@1.0.0: + redux-mock-store@1.5.3: resolution: { - integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==, + integrity: sha512-ryhkkb/4D4CUGpAV2ln1GOY/uh51aczjcRz9k2L2bPx/Xja3c5pSGJJPyR25GNVRXtKIExScdAgFdiXp68GmJA==, } - engines: { node: '>=0.10.0' } - strip-final-newline@2.0.0: + redux@4.2.1: resolution: { - integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, + integrity: sha512-LAUYz4lc+Do8/g7aeRa8JkyDErK6ekstQaqWQrNRW//MY1TvCEpMtpTWvlQ+FPbWCx+Xixu/6SHt5N0HR+SB4w==, } - engines: { node: '>=6' } - strip-final-newline@3.0.0: + reflect.getprototypeof@1.0.10: resolution: { - integrity: sha512-dOESqjYr96iWYylGObzd39EuNTa5VJxyvVAEm5Jnh7KGo75V43Hk1odPQkNDyXNmUR6k+gEiDVXnjB8HJ3crXw==, + integrity: sha512-00o4I+DVrefhv+nX0ulyi3biSHCPDe+yLv5o/p6d/UVlirijB8E16FtfwSAi4g3tcqrQ4lRAqQSoFEZJehYEcw==, } - engines: { node: '>=12' } + engines: { node: '>= 0.4' } - strip-indent@3.0.0: + regenerate-unicode-properties@10.2.2: resolution: { - integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==, + integrity: sha512-m03P+zhBeQd1RGnYxrGyDAPpWX/epKirLrp8e3qevZdVkKtnCrjjWczIbYc8+xd6vcTStVlqfycTx1KR4LOr0g==, } - engines: { node: '>=8' } + engines: { node: '>=4' } - strip-json-comments@2.0.1: + regenerate@1.4.2: resolution: { - integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==, + integrity: sha512-zrceR/XhGYU/d/opr2EKO7aRHUeiBI8qjtfHqADTwZd6Szfy16la6kqD0MIUs5z5hx6AaKa+PixpPrR289+I0A==, } - engines: { node: '>=0.10.0' } - strip-json-comments@3.1.1: + regexp.prototype.flags@1.5.4: resolution: { - integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, + integrity: sha512-dYqgNSZbDwkaJ2ceRd9ojCGjBq+mOm9LmtXnAnEGyHhN/5R7iDW2TRw3h+o/jCFxus3P2LfWIIiwowAjANm7IA==, } - engines: { node: '>=8' } + engines: { node: '>= 0.4' } - strip-literal@2.1.0: + regexpu-core@6.4.0: resolution: { - integrity: sha512-Op+UycaUt/8FbN/Z2TWPBLge3jWrP3xj10f3fnYxf052bKuS3EKs1ZQcVGjnEMdsNVAM+plXRdmjrZ/KgG3Skw==, + integrity: sha512-0ghuzq67LI9bLXpOX/ISfve/Mq33a4aFRzoQYhnnok1JOFpmE/A2TBGkNVenOGEeSBCjIiWcc6MVOG5HEQv0sA==, } + engines: { node: '>=4' } - strong-log-transformer@2.1.0: + regjsgen@0.8.0: resolution: { - integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==, + integrity: sha512-RvwtGe3d7LvWiDQXeQw8p5asZUmfU1G/l6WbUXeHta7Y2PEIvBTwH6E2EfmYUK8pxcxEdEmaomqyp0vZZ7C+3Q==, } - engines: { node: '>=4' } - hasBin: true - style-inject@0.3.0: + regjsparser@0.13.0: resolution: { - integrity: sha512-IezA2qp+vcdlhJaVm5SOdPPTUu0FCEqfNSli2vRuSIBbu5Nq5UvygTk/VzeCqfLz2Atj3dVII5QBKGZRZ0edzw==, + integrity: sha512-NZQZdC5wOE/H3UT28fVGL+ikOZcEzfMGk/c3iN9UGxzWHMa1op7274oyiUVrAG4B2EuFhus8SvkaYnhvW92p9Q==, } + hasBin: true - style-loader@1.3.0: + relateurl@0.2.7: resolution: { - integrity: sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==, + integrity: sha512-G08Dxvm4iDN3MLM0EsP62EDV9IuhXPR6blNz6Utcp7zyV3tr4HVNINt6MpaRWbxoOHT3Q7YN2P+jaHX8vUbgog==, } - engines: { node: '>= 8.9.0' } - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 + engines: { node: '>= 0.10' } - stylehacks@5.1.1: + release-zalgo@1.0.0: resolution: { - integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==, + integrity: sha512-gUAyHVHPPC5wdqX/LG4LWtRYtgjxyX78oanFNTMMyFEfOqdC54s3eE82imuWKbOeqYht2CrNf64Qb8vgmmtZGA==, } - engines: { node: ^10 || ^12 || >=14.0 } - peerDependencies: - postcss: ^8.2.15 + engines: { node: '>=4' } - stylis@4.2.0: + remove-bom-buffer@3.0.0: resolution: { - integrity: sha512-Orov6g6BB1sDfYgzWfTHDOxamtX1bE/zo104Dh9e6fqJ3PooipYyfJ0pUmrZO2wAvO8YbEyeFrkV91XTsGMSrw==, + integrity: sha512-8v2rWhaakv18qcvNeli2mZ/TMTL2nEyAKRvzo1WtnZBl15SHyEhrCu2/xKlJyUFKHiHgfXIyuY6g2dObJJycXQ==, } + engines: { node: '>=0.10.0' } - stylus@0.57.0: + remove-bom-stream@1.2.0: resolution: { - integrity: sha512-yOI6G8WYfr0q8v8rRvE91wbxFU+rJPo760Va4MF6K0I6BZjO4r+xSynkvyPBP9tV1CIEUeRsiidjIs2rzb1CnQ==, + integrity: sha512-wigO8/O08XHb8YPzpDDT+QmRANfW6vLqxfaXm1YXhnFf3AkSLyjfG3GEFg4McZkmgL7KvCj5u2KczkvSP6NfHA==, } - hasBin: true + engines: { node: '>= 0.10' } - superagent@7.1.6: + remove-trailing-separator@1.1.0: resolution: { - integrity: sha512-gZkVCQR1gy/oUXr+kxJMLDjla434KmSOKbx5iGD30Ql+AkJQ/YlPKECJy2nhqOsHLjGHzoDTXNSjhnvWhzKk7g==, + integrity: sha512-/hS+Y0u3aOfIETiaiirUFwDBDzmXPvO+jAfKTitUngIPzdKc6Z0LoFjM/CK5PL4C+eKwHohlHAb6H0VFfmmUsw==, } - engines: { node: '>=6.4.0 <13 || >=14' } - deprecated: Please upgrade to v9.0.0+ as we have fixed a public vulnerability with formidable dependency. Note that v9.0.0+ requires Node.js v14.18.0+. See https://github.com/ladjs/superagent/pull/1800 for insight. This project is supported and maintained by the team at Forward Email @ https://forwardemail.net - supertap@3.0.1: + rename-overwrite@5.0.4: resolution: { - integrity: sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==, + integrity: sha512-BOR/6Zr3F0vmTzwvkiCZaPrzv1NJZQVRhrWA4w2IQtj33owmh5Y4LRajsR4QrqdIgLlAqOLEEc1PiUf15ku9hQ==, } - engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } + engines: { node: '>=12.10' } - supports-color@2.0.0: + renderkid@3.0.0: resolution: { - integrity: sha512-KKNVtd6pCYgPIKU4cp2733HWYCpplQhddZLBUryaAHou723x+FRzQ5Df824Fj+IyyuiQTRoub4SnIFfIcrp70g==, + integrity: sha512-q/7VIQA8lmM1hF+jn+sFSPWGlMkSAeNYcPLmDQx2zzuiDfaLrOmumR8iaUKlenFgh0XRPIUeSPlH3A+AW3Z5pg==, } - engines: { node: '>=0.8.0' } - supports-color@5.5.0: + replace-ext@1.0.1: resolution: { - integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, + integrity: sha512-yD5BHCe7quCgBph4rMQ+0KkIRKwWCrHDOX1p1Gp6HwjPM5kVoCdKGNhN7ydqqsX6lJEnQDKZ/tFMiEdQ1dvPEw==, } - engines: { node: '>=4' } + engines: { node: '>= 0.10' } - supports-color@7.2.0: + request@2.88.2: resolution: { - integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, + integrity: sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==, } - engines: { node: '>=8' } + engines: { node: '>= 6' } + deprecated: request has been deprecated, see https://github.com/request/request/issues/3142 - supports-color@8.1.1: + require-directory@2.1.1: resolution: { - integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, + integrity: sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==, } - engines: { node: '>=10' } + engines: { node: '>=0.10.0' } - supports-hyperlinks@2.3.0: + require-from-string@2.0.2: resolution: { - integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==, + integrity: sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==, } - engines: { node: '>=8' } + engines: { node: '>=0.10.0' } - supports-preserve-symlinks-flag@1.0.0: + require-main-filename@2.0.0: resolution: { - integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, + integrity: sha512-NKN5kMDylKuldxYLSUfrbo5Tuzh4hd+2E8NPPX02mZtn1VuREQToYe/ZdlJy+J3uCpfaiGF05e7B8W0iXbQHmg==, } - engines: { node: '>= 0.4' } - svg-tags@1.0.0: + requires-port@1.0.0: resolution: { - integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==, + integrity: sha512-KigOCHcocU3XODJxsu8i/j8T9tzT4adHiecwORRQ0ZZFcp7ahwXuRU1m+yuO90C5ZUyGeGfocHDI14M3L3yDAQ==, } - svgo@2.8.0: + resolve-cwd@3.0.0: resolution: { - integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==, + integrity: sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==, } - engines: { node: '>=10.13.0' } - hasBin: true + engines: { node: '>=8' } - symbol-observable@4.0.0: + resolve-from@4.0.0: resolution: { - integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==, + integrity: sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==, } - engines: { node: '>=0.10' } + engines: { node: '>=4' } - symbol-tree@3.2.4: + resolve-from@5.0.0: resolution: { - integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==, + integrity: sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==, } + engines: { node: '>=8' } - symlink-dir@5.2.1: + resolve-options@1.1.0: resolution: { - integrity: sha512-HfqqI7BoCx3+482BUfoR1sXAFx5G90KrWImT5/J/a+HZWvzMTTA/hYKh2030WFYn7OwRRUAoMCQvqlwBMnhBUw==, + integrity: sha512-NYDgziiroVeDC29xq7bp/CacZERYsA9bXYd1ZmcJlF3BcrZv5pTb4NG7SjdyKDnXZ84aC4vo2u6sNKIA1LCu/A==, } - engines: { node: '>=12.10' } - hasBin: true + engines: { node: '>= 0.10' } - synckit@0.9.1: + resolve-url@0.2.1: resolution: { - integrity: sha512-7gr8p9TQP6RAHusBOSLs46F4564ZrjV8xFmw5zCmgmhGUcw2hxsShhJ6CEiHQMgPDwAQ1fWHPM0ypc4RMAig4A==, + integrity: sha512-ZuF55hVUQaaczgOIwqWzkEcEidmlD/xl44x1UZnhOXcYuFN2S6+rcxpG+C1N3So0wvNI3DmJICUFfu2SxhBmvg==, } - engines: { node: ^14.18.0 || >=16.0.0 } + deprecated: https://github.com/lydell/resolve-url#deprecated - tapable@1.1.3: + resolve.exports@1.1.1: resolution: { - integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==, + integrity: sha512-/NtpHNDN7jWhAaQ9BvBUYZ6YTXsRBgfqWFWP7BZBaoMJO/I3G5OFzvTuWNlZC3aPjins1F+TNrLKsGbH4rfsRQ==, } - engines: { node: '>=6' } + engines: { node: '>=10' } - tapable@2.2.1: + resolve@1.22.11: resolution: { - integrity: sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==, + integrity: sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==, } - engines: { node: '>=6' } + engines: { node: '>= 0.4' } + hasBin: true - tar-stream@2.2.0: + resolve@1.22.8: resolution: { - integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==, + integrity: sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==, } - engines: { node: '>=6' } + hasBin: true - tar@6.1.11: + restore-cursor@2.0.0: resolution: { - integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==, + integrity: sha512-6IzJLuGi4+R14vwagDHX+JrXmPVtPpn4mffDJ1UdR7/Edm87fl6yi8mMBIVvFtJaNTUvjughmW4hwLhRG7gC1Q==, } - engines: { node: '>= 10' } + engines: { node: '>=4' } - tar@6.2.1: + restore-cursor@3.1.0: resolution: { - integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==, + integrity: sha512-l+sSefzHpj5qimhFSE5a8nufZYAM3sBSVMAPtYkmC+4EH2anSGaEMXSD0izRQbu9nfyQ9y5JrVmp7E8oZrUjvA==, } - engines: { node: '>=10' } + engines: { node: '>=8' } - temp-dir@1.0.0: + restore-cursor@5.1.0: resolution: { - integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==, + integrity: sha512-oMA2dcrw6u0YfxJQXm342bFKX/E4sG9rbTzO9ptUcR/e8A33cHuvStiYOwH7fszkZlZ1z/ta9AAoPk2F4qIOHA==, } - engines: { node: '>=4' } + engines: { node: '>=18' } - temp-dir@2.0.0: + retry@0.12.0: resolution: { - integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==, + integrity: sha512-9LkiTwjUh6rT555DtE9rTX+BKByPfrMzEAtnlEtdEwr3Nkffwiihqe2bWADg+OQRjt9gl6ICdmB/ZFDCGAtSow==, } - engines: { node: '>=8' } + engines: { node: '>= 4' } - temp-dir@3.0.0: + retry@0.13.1: resolution: { - integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==, + integrity: sha512-XQBQ3I8W1Cge0Seh+6gjj03LbmRFWuoszgK9ooCpwYIrhhoO80pfq4cUkU5DkknwfOfFteRwlZ56PYOGYyFWdg==, } - engines: { node: '>=14.16' } + engines: { node: '>= 4' } - tempy@1.0.0: + reusify@1.1.0: resolution: { - integrity: sha512-eLXG5B1G0mRPHmgH2WydPl5v4jH35qEn3y/rA/aahKhIa91Pn119SsU7n7v/433gtT9ONzC8ISvNHIh2JSTm0w==, + integrity: sha512-g6QUff04oZpHs0eG5p83rFLhHeV00ug/Yf9nZM6fLeUrPguBTkTQOdpAWWspMh55TZfVQDPaN3NQJfbVRAxdIw==, } - engines: { node: '>=10' } + engines: { iojs: '>=1.0.0', node: '>=0.10.0' } - terminal-link@2.1.1: + rfdc@1.4.1: resolution: { - integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==, + integrity: sha512-q1b3N5QkRUWUl7iyylaaj3kOpIT0N2i9MqIEQXP73GVsN9cw3fdx8X63cEmWhJGi2PPCF23Ijp7ktmd39rawIA==, } - engines: { node: '>=8' } - terser-webpack-plugin@5.3.10: + rimraf@3.0.2: resolution: { - integrity: sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==, + integrity: sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==, } - engines: { node: '>= 10.13.0' } - peerDependencies: - '@swc/core': '*' - esbuild: '*' - uglify-js: '*' - webpack: ^5.1.0 - peerDependenciesMeta: - '@swc/core': - optional: true - esbuild: - optional: true - uglify-js: - optional: true + deprecated: Rimraf versions prior to v4 are no longer supported + hasBin: true - terser@5.31.0: + rimraf@4.4.1: resolution: { - integrity: sha512-Q1JFAoUKE5IMfI4Z/lkE/E6+SwgzO+x4tq4v1AyBLRj8VSYvRO6A/rQrPg1yud4g0En9EKI1TvFRF2tQFcoUkg==, + integrity: sha512-Gk8NlF062+T9CqNGn6h4tls3k6T1+/nXdOcSZVikNVtlRdYpA7wRJJMoXmuvOnLW844rPjdQ7JgXCYM6PPC/og==, } - engines: { node: '>=10' } + engines: { node: '>=14' } hasBin: true - terser@5.31.6: + rollup-plugin-babel@4.4.0: resolution: { - integrity: sha512-PQ4DAriWzKj+qgehQ7LK5bQqCFNMmlhjR2PFFLuqGCpuCAauxemVBWwWOxo3UIwWQx8+Pr61Df++r76wDmkQBg==, + integrity: sha512-Lek/TYp1+7g7I+uMfJnnSJ7YWoD58ajo6Oarhlex7lvUce+RCKRuGRSgztDO3/MF/PuGKmUL5iTHKf208UNszw==, } - engines: { node: '>=10' } - hasBin: true + deprecated: This package has been deprecated and is no longer maintained. Please use @rollup/plugin-babel. + peerDependencies: + '@babel/core': 7 || ^7.0.0-rc.2 + rollup: '>=0.60.0 <3' - test-exclude@6.0.0: + rollup-plugin-cleanup@3.2.1: resolution: { - integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==, + integrity: sha512-zuv8EhoO3TpnrU8MX8W7YxSbO4gmOR0ny06Lm3nkFfq0IVKdBUtHwhVzY1OAJyNCIAdLiyPnOrU0KnO0Fri1GQ==, } - engines: { node: '>=8' } + engines: { node: ^10.14.2 || >=12.0.0 } + peerDependencies: + rollup: '>=2.0' - text-extensions@1.9.0: + rollup-plugin-typescript2@0.34.1: resolution: { - integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==, + integrity: sha512-P4cHLtGikESmqi1CA+tdMDUv8WbQV48mzPYt77TSTOPJpERyZ9TXdDgjSDix8Fkqce6soYz3+fa4lrC93IEkcw==, } - engines: { node: '>=0.10' } + peerDependencies: + rollup: '>=1.26.3' + typescript: '>=2.4.0' - text-table@0.2.0: + rollup-plugin-visualizer@5.14.0: resolution: { - integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, + integrity: sha512-VlDXneTDaKsHIw8yzJAFWtrzguoJ/LnQ+lMpoVfYJ3jJF4Ihe5oYLAqLklIK/35lgUY+1yEzCkHyZ1j4A5w5fA==, } + engines: { node: '>=18' } + hasBin: true + peerDependencies: + rolldown: 1.x + rollup: 2.x || 3.x || 4.x + peerDependenciesMeta: + rolldown: + optional: true + rollup: + optional: true - thenify-all@1.6.0: + rollup-plugin-vue@6.0.0: resolution: { - integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==, + integrity: sha512-oVvUd84d5u73M2HYM3XsMDLtZRIA/tw2U0dmHlXU2UWP5JARYHzh/U9vcxaN/x/9MrepY7VH3pHFeOhrWpxs/Q==, } - engines: { node: '>=0.8' } + peerDependencies: + '@vue/compiler-sfc': '*' - thenify@3.3.1: + rollup-pluginutils@2.8.2: resolution: { - integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==, + integrity: sha512-EEp9NhnUkwY8aif6bxgovPHMoMoNr2FulJziTndpt5H9RdwC47GSGuII9XxpSdzVGM0GWrNPHV6ie1LTNJPaLQ==, } - thingies@1.21.0: + rollup@2.79.2: resolution: { - integrity: sha512-hsqsJsFMsV+aD4s3CWKk85ep/3I9XzYV/IXaSouJMYIoDlgyi11cBhsqYe9/geRfB0YIikBQg6raRaM+nIMP9g==, + integrity: sha512-fS6iqSPZDs3dr/y7Od6y5nha8dW1YnbgtsyotCVvoFGKbERG++CVRFv1meyGDE1SNItQA8BrnCw7ScdAhRJ3XQ==, } - engines: { node: '>=10.18' } - peerDependencies: - tslib: ^2 + engines: { node: '>=10.0.0' } + hasBin: true - thread-loader@3.0.4: + rrweb-cssom@0.6.0: resolution: { - integrity: sha512-ByaL2TPb+m6yArpqQUZvP+5S1mZtXsEP7nWKKlAUTm7fCml8kB5s1uI3+eHRP2bk5mVYfRSBI7FFf+tWEyLZwA==, + integrity: sha512-APM0Gt1KoXBz0iIkkdB/kfvGOwC4UuJFeG/c+yV7wSc7q96cG/kJ0HiYCnzivD9SB53cLV1MlHFNfOuPaadYSw==, } - engines: { node: '>= 10.13.0' } - peerDependencies: - webpack: ^4.27.0 || ^5.0.0 - throat@6.0.2: + run-async@2.4.1: resolution: { - integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==, + integrity: sha512-tvVnVv01b8c1RrA6Ep7JkStj85Guv/YrMcwqYQnwjsAS2cTmmPGBBjAjpCW7RrSodNSoE2/qg9O4bceNvUuDgQ==, } + engines: { node: '>=0.12.0' } - through2-filter@3.0.0: + run-parallel@1.2.0: resolution: { - integrity: sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==, + integrity: sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==, } - through2@2.0.5: + rxjs@7.8.1: resolution: { - integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==, + integrity: sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==, } - through2@4.0.2: + rxjs@7.8.2: resolution: { - integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==, + integrity: sha512-dhKf903U/PQZY6boNNtAGdWbG85WAbjT/1xYoZIC7FAY0yWapOBQVsVrDl58W86//e1VpMNBtRV4MaXfdMySFA==, } - through@2.3.8: + safe-array-concat@1.1.3: resolution: { - integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==, + integrity: sha512-AURm5f0jYEOydBj7VQlVvDrjeFgthDdEF5H1dP+6mNpoXOMo1quQqJ4wvJDyRZ9+pO3kGWoOdmV08cSv2aJV6Q==, } + engines: { node: '>=0.4' } - thunky@1.1.0: + safe-buffer@5.1.2: resolution: { - integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==, + integrity: sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==, } - time-zone@1.0.0: + safe-buffer@5.2.1: resolution: { - integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==, + integrity: sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==, } - engines: { node: '>=4' } - timers-browserify@2.0.12: + safe-push-apply@1.0.0: resolution: { - integrity: sha512-9phl76Cqm6FhSX9Xe1ZUAMLtm1BLkKj2Qd5ApyWkXzsMRaA7dgr81kf4wJmQf/hAvg8EEyJxDo3du/0KlhPiKQ==, + integrity: sha512-iKE9w/Z7xCzUMIZqdBsp6pEQvwuEebH4vdpjcDWnyzaI6yl6O9FHvVpmGelvEHNsoY6wGblkxR6Zty/h00WiSA==, } - engines: { node: '>=0.6.0' } + engines: { node: '>= 0.4' } - tinybench@2.9.0: + safe-regex-test@1.1.0: resolution: { - integrity: sha512-0+DUvqWMValLmha6lr4kD8iAMK1HzV0/aKnCtWb9v9641TnP/MFb7Pc2bxoxQjTXAErryXVgUOfv2YqNllqGeg==, + integrity: sha512-x/+Cz4YrimQxQccJf5mKEbIa1NzeCRNI5Ecl/ekmlYaampdNLPalVyIcCZNNH3MvmqBugV5TMYZXv0ljslUlaw==, } + engines: { node: '>= 0.4' } - tinypool@0.8.4: + safer-buffer@2.1.2: resolution: { - integrity: sha512-i11VH5gS6IFeLY3gMBQ00/MmLncVP7JLXOw1vlgkytLmJK7QnEr7NXf0LBdxfmNPAeyetukOk0bOYrJrFGjYJQ==, + integrity: sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==, } - engines: { node: '>=14.0.0' } - tinyspy@2.2.1: + saxes@5.0.1: resolution: { - integrity: sha512-KYad6Vy5VDWV4GH3fjpseMQ/XU2BhIYP7Vzd0LG44qRWm/Yt2WCOTicFdvmgo6gWaqooMQCawTtILVQJupKu7A==, + integrity: sha512-5LBh1Tls8c9xgGjw3QrMwETmTMVk0oFgvrFSvWx62llR2hcEInrKNZ2GZCCuuy2lvWrdl5jhbpeqc5hRYKFOcw==, } - engines: { node: '>=14.0.0' } + engines: { node: '>=10' } - tmp@0.0.30: + saxes@6.0.0: resolution: { - integrity: sha512-HXdTB7lvMwcb55XFfrTM8CPr/IYREk4hVBFaQ4b/6nInrluSL86hfHm7vu0luYKCfyBZp2trCjpc8caC3vVM3w==, + integrity: sha512-xAg7SOnEhrm5zI3puOOKyy1OMcMlIJZYNJY7xLBwSze0UjhPLnWfj2GF2EpT0jmzaJKIWKHLsaSSajf35bcYnA==, } - engines: { node: '>=0.4.0' } + engines: { node: '>=v12.22.7' } - tmp@0.0.33: + schema-utils@2.7.0: resolution: { - integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==, + integrity: sha512-0ilKFI6QQF5nxDZLFn2dMjvc4hjg/Wkg7rHd3jK6/A4a1Hl9VFdQWvgB1UMGoU94pad1P/8N7fMcEnLnSiju8A==, } - engines: { node: '>=0.6.0' } + engines: { node: '>= 8.9.0' } - tmp@0.2.3: + schema-utils@2.7.1: resolution: { - integrity: sha512-nZD7m9iCPC5g0pYmcaxogYKggSfLsdxl8of3Q/oIbqCqLLIO9IAF0GWjX1z9NZRHPiXv8Wex4yDCaZsgEw0Y8w==, + integrity: sha512-SHiNtMOUGWBQJwzISiVYKu82GiV4QYGePp3odlY1tuKO7gPtphAT5R/py0fA6xtbgLL/RvtJZnU9b8s0F1q0Xg==, } - engines: { node: '>=14.14' } + engines: { node: '>= 8.9.0' } - tmpl@1.0.5: + schema-utils@3.3.0: resolution: { - integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==, + integrity: sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==, } + engines: { node: '>= 10.13.0' } - to-absolute-glob@2.0.2: + schema-utils@4.3.3: resolution: { - integrity: sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==, + integrity: sha512-eflK8wEtyOE6+hsaRVPxvUKYCpRgzLqDTb8krvAsRIwOGlHoSgYLgBXoubGgLd2fT41/OUYdb48v4k4WWHQurA==, } - engines: { node: '>=0.10.0' } + engines: { node: '>= 10.13.0' } - to-fast-properties@2.0.0: + select-hose@2.0.0: resolution: { - integrity: sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==, + integrity: sha512-mEugaLK+YfkijB4fx0e6kImuJdCIt2LxCRcbEYPqRGCs4F2ogyfZU5IAZRdjCP8JPq2AtdNoC/Dux63d9Kiryg==, } - engines: { node: '>=4' } - to-regex-range@5.0.1: + selfsigned@2.4.1: resolution: { - integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, + integrity: sha512-th5B4L2U+eGLq1TVh7zNRGBapioSORUeymIydxgFpwww9d2qyKvtuPU2jJuHvYAwwqi2Y596QBL3eEqcPEYL8Q==, } - engines: { node: '>=8.0' } + engines: { node: '>=10' } - to-through@2.0.0: + semver@5.7.2: resolution: { - integrity: sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==, + integrity: sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==, } - engines: { node: '>= 0.10' } + hasBin: true - toidentifier@1.0.1: + semver@6.3.1: resolution: { - integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==, + integrity: sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==, } - engines: { node: '>=0.6' } + hasBin: true - toposort@2.0.2: + semver@7.3.8: resolution: { - integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==, + integrity: sha512-NB1ctGL5rlHrPJtFDVIVzTyQylMLu9N9VICA6HSFJo8MCGVTMW6gfpicwKmmK/dAjTOrqu5l63JJOpDSrAis3A==, } + engines: { node: '>=10' } + hasBin: true - totalist@3.0.1: + semver@7.5.4: resolution: { - integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==, + integrity: sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==, } - engines: { node: '>=6' } + engines: { node: '>=10' } + hasBin: true - tough-cookie@2.5.0: + semver@7.6.3: resolution: { - integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==, + integrity: sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==, } - engines: { node: '>=0.8' } + engines: { node: '>=10' } + hasBin: true - tough-cookie@4.1.4: + semver@7.7.3: resolution: { - integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==, + integrity: sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==, } - engines: { node: '>=6' } + engines: { node: '>=10' } + hasBin: true - tr46@0.0.3: + send@0.19.0: resolution: { - integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, + integrity: sha512-dW41u5VfLXu8SJh5bwRmyYUbAoSB3c9uQh6L8h/KtsFREPWpbX1lrljJo186Jc4nmci/sGUZ9a0a0J2zgfq2hw==, } + engines: { node: '>= 0.8.0' } - tr46@2.1.0: + serialize-error@7.0.1: resolution: { - integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==, + integrity: sha512-8I8TjW5KMOKsZQTvoxjuSIa7foAwPWGOts+6o7sgjz41/qMD9VQHEDxi6PBvK2l0MXUmqZyNpUK+T2tQaaElvw==, } - engines: { node: '>=8' } + engines: { node: '>=10' } - tr46@3.0.0: + serialize-javascript@5.0.1: resolution: { - integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==, + integrity: sha512-SaaNal9imEO737H2c05Og0/8LUXG7EnsZyMa8MzkmuHoELfT6txuj0cMqRj6zfPKnmQ1yasR4PCJc8x+M4JSPA==, } - engines: { node: '>=12' } - tr46@4.1.1: + serialize-javascript@6.0.2: resolution: { - integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==, + integrity: sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==, } - engines: { node: '>=14' } - tr46@5.0.0: + serve-index@1.9.1: resolution: { - integrity: sha512-tk2G5R2KRwBd+ZN0zaEXpmzdKyOYksXwywulIX95MBODjSzMIuQnQ3m8JxgbhnL1LeVo7lqQKsYa1O3Htl7K5g==, + integrity: sha512-pXHfKNP4qujrtteMrSBb0rc8HJ9Ms/GrXwcUtUtD5s4ewDJI8bT3Cz2zTVRMKtri49pLx2e0Ya8ziP5Ya2pZZw==, } - engines: { node: '>=18' } + engines: { node: '>= 0.8.0' } - tree-dump@1.0.2: + serve-static@1.16.2: resolution: { - integrity: sha512-dpev9ABuLWdEubk+cIaI9cHwRNNDjkBBLXTwI4UCUFdQ5xXKqNXoK4FEciw/vxf+NQ7Cb7sGUyeUtORvHIdRXQ==, + integrity: sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==, } - engines: { node: '>=10.0' } - peerDependencies: - tslib: '2' + engines: { node: '>= 0.8.0' } - tree-kill@1.2.2: + set-blocking@2.0.0: resolution: { - integrity: sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==, + integrity: sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==, } - hasBin: true - treeverse@3.0.0: + set-function-length@1.2.2: resolution: { - integrity: sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==, + integrity: sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>= 0.4' } - trim-newlines@3.0.1: + set-function-name@2.0.2: resolution: { - integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==, + integrity: sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==, } - engines: { node: '>=8' } + engines: { node: '>= 0.4' } - ts-api-utils@1.3.0: + set-proto@1.0.0: resolution: { - integrity: sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==, + integrity: sha512-RJRdvCo6IAnPdsvP/7m6bsQqNnn1FCBX5ZNtFL98MmFF/4xAIJTIg1YbHW5DC2W5SKZanrC6i4HsJqlajw/dZw==, } - engines: { node: '>=16' } - peerDependencies: - typescript: '>=4.2.0' + engines: { node: '>= 0.4' } - ts-jest@27.1.5: + setprototypeof@1.1.0: resolution: { - integrity: sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==, + integrity: sha512-BvE/TwpZX4FXExxOxZyRGQQv651MSwmWKZGqvmPcRIjDqWub67kTKuIMx43cZZrS/cBBzwBcNDWoFxt2XEFIpQ==, } - engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } - hasBin: true - peerDependencies: - '@babel/core': '>=7.0.0-beta.0 <8' - '@types/jest': ^27.0.0 - babel-jest: '>=27.0.0 <28' - esbuild: '*' - jest: ^27.0.0 - typescript: '>=3.8 <5.0' - peerDependenciesMeta: - '@babel/core': - optional: true - '@types/jest': - optional: true - babel-jest: - optional: true - esbuild: - optional: true - ts-loader@9.5.1: + setprototypeof@1.2.0: resolution: { - integrity: sha512-rNH3sK9kGZcH9dYzC7CewQm4NtxJTjSEVRJ2DyBZR7f8/wcta+iV44UPCXc5+nzDzivKtlzV6c9P4e+oFhDLYg==, + integrity: sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==, } - engines: { node: '>=12.0.0' } - peerDependencies: - typescript: '*' - webpack: ^5.0.0 - ts-node@10.9.2: + shallow-clone@3.0.1: resolution: { - integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==, + integrity: sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==, } - hasBin: true - peerDependencies: - '@swc/core': '>=1.2.50' - '@swc/wasm': '>=1.2.50' - '@types/node': '*' - typescript: '>=2.7' - peerDependenciesMeta: - '@swc/core': - optional: true - '@swc/wasm': - optional: true + engines: { node: '>=8' } - tsconfig-paths@3.15.0: + shebang-command@1.2.0: resolution: { - integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==, + integrity: sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==, } + engines: { node: '>=0.10.0' } - tsconfig-paths@4.2.0: + shebang-command@2.0.0: resolution: { - integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==, + integrity: sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==, } - engines: { node: '>=6' } + engines: { node: '>=8' } - tsconfig@7.0.0: + shebang-regex@1.0.0: resolution: { - integrity: sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==, + integrity: sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==, } + engines: { node: '>=0.10.0' } - tslib@1.14.1: + shebang-regex@3.0.0: resolution: { - integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==, + integrity: sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==, } + engines: { node: '>=8' } - tslib@2.6.2: + shell-quote@1.8.3: resolution: { - integrity: sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==, + integrity: sha512-ObmnIF4hXNg1BqhnHmgbDETF8dLPCggZWBjkQfhZpbszZnYur5DUljTcCHii5LC3J5E0yeO/1LIMyH+UvHQgyw==, } + engines: { node: '>= 0.4' } - tslib@2.6.3: + shiki@0.14.7: resolution: { - integrity: sha512-xNvxJEOUiWPGhUuUdQgAJPKOOJfGnIyKySOc09XkKsgdUV/3E2zvwZYdejjmRgPCgcym1juLH3226yA7sEFJKQ==, + integrity: sha512-dNPAPrxSc87ua2sKJ3H5dQ/6ZaY8RNnaAqK+t0eG7p0Soi2ydiqbGOTaZCqaYvA/uZYfS1LJnemt3Q+mSfcPCg==, } - tsutils@3.21.0: + side-channel-list@1.0.0: resolution: { - integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==, + integrity: sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==, } - engines: { node: '>= 6' } - peerDependencies: - typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' + engines: { node: '>= 0.4' } - tty-browserify@0.0.1: + side-channel-map@1.0.1: resolution: { - integrity: sha512-C3TaO7K81YvjCgQH9Q1S3R3P3BtN3RIM8n+OvX4il1K1zgE8ZhI0op7kClgkxtutIE8hQrcrHBXvIheqKUUCxw==, + integrity: sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==, } + engines: { node: '>= 0.4' } - tuf-js@1.1.7: + side-channel-weakmap@1.0.2: resolution: { - integrity: sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==, + integrity: sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>= 0.4' } - tuf-js@2.2.1: + side-channel@1.1.0: resolution: { - integrity: sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==, + integrity: sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==, } - engines: { node: ^16.14.0 || >=18.0.0 } + engines: { node: '>= 0.4' } - tunnel-agent@0.6.0: + signal-exit@3.0.7: resolution: { - integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==, + integrity: sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==, } - tweetnacl@0.14.5: + signal-exit@4.1.0: resolution: { - integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==, + integrity: sha512-bzyZ1e88w9O1iNJbKnOlvYTrWPDl46O1bG0D3XInv+9tkPrxrN8jUUTiFlDkkmKWgn1M6CfIA13SuGqOa9Korw==, } + engines: { node: '>=14' } - type-check@0.4.0: + sigstore@1.9.0: resolution: { - integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, + integrity: sha512-0Zjz0oe37d08VeOtBIuB6cRriqXse2e8w+7yIy2XSXjshRKxbc2KkhXjL229jXSxEm7UbcjS76wcJDGQddVI9A==, } - engines: { node: '>= 0.8.0' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + hasBin: true - type-detect@4.0.8: + sigstore@2.3.1: resolution: { - integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==, + integrity: sha512-8G+/XDU8wNsJOQS5ysDVO0Etg9/2uA5gR9l4ZwijjlwxBcrU6RPfwi2+jJmbP+Ap1Hlp/nVAaEO4Fj22/SL2gQ==, } - engines: { node: '>=4' } + engines: { node: ^16.14.0 || >=18.0.0 } - type-fest@0.13.1: + sirv@2.0.4: resolution: { - integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==, + integrity: sha512-94Bdh3cC2PKrbgSOUqTiGPWVZeSiXfKOVZNJniWoqrWrRkB1CJzBU3NEbiTsPcYy1lDsANA/THzS+9WBiy5nfQ==, } - engines: { node: '>=10' } + engines: { node: '>= 10' } - type-fest@0.16.0: + sisteransi@1.0.5: resolution: { - integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==, + integrity: sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==, } - engines: { node: '>=10' } - type-fest@0.18.1: + skip-regex@1.0.2: resolution: { - integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==, + integrity: sha512-pEjMUbwJ5Pl/6Vn6FsamXHXItJXSRftcibixDmNCWbWhic0hzHrwkMZo0IZ7fMRH9KxcWDFSkzhccB4285PutA==, } - engines: { node: '>=10' } + engines: { node: '>=4.2' } - type-fest@0.20.2: + slash@3.0.0: resolution: { - integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==, + integrity: sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==, } - engines: { node: '>=10' } + engines: { node: '>=8' } - type-fest@0.21.3: + slash@5.1.0: resolution: { - integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, + integrity: sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==, } - engines: { node: '>=10' } + engines: { node: '>=14.16' } - type-fest@0.4.1: + slice-ansi@5.0.0: resolution: { - integrity: sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==, + integrity: sha512-FC+lgizVPfie0kkhqUScwRu1O/lF6NOgJmlCgK+/LYxDCTk8sGelYaHDhFcDN+Sn3Cv+3VSa4Byeo+IMCzpMgQ==, } - engines: { node: '>=6' } + engines: { node: '>=12' } - type-fest@0.6.0: + slice-ansi@7.1.2: resolution: { - integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==, + integrity: sha512-iOBWFgUX7caIZiuutICxVgX1SdxwAVFFKwt1EvMYYec/NWO5meOJ6K5uQxhrYBdQJne4KxiqZc+KptFOWFSI9w==, } - engines: { node: '>=8' } + engines: { node: '>=18' } - type-fest@0.8.1: + smart-buffer@4.2.0: resolution: { - integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==, + integrity: sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==, } - engines: { node: '>=8' } + engines: { node: '>= 6.0.0', npm: '>= 3.0.0' } - type-is@1.6.18: + sockjs@0.3.24: resolution: { - integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==, + integrity: sha512-GJgLTZ7vYb/JtPSSZ10hsOYIvEYsjbNU+zPdIHcUaWVNUEPivzxku31865sSSud0Da0W4lEeOPlmw93zLQchuQ==, } - engines: { node: '>= 0.6' } - typed-array-buffer@1.0.2: + socks-proxy-agent@7.0.0: resolution: { - integrity: sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==, + integrity: sha512-Fgl0YPZ902wEsAyiQ+idGd1A7rSFx/ayC1CQVMw5P+EQx2V0SgpGtf6OKFhVjPflPUl9YMmEOnmfjCdMUsygww==, } - engines: { node: '>= 0.4' } + engines: { node: '>= 10' } - typed-array-byte-length@1.0.1: + socks-proxy-agent@8.0.5: resolution: { - integrity: sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==, + integrity: sha512-HehCEsotFqbPW9sJ8WVYB6UbmIMv7kUUORIF2Nncq4VQvBfNBLibW9YZR5dlYCSUhwcD628pRllm7n+E+YTzJw==, } - engines: { node: '>= 0.4' } + engines: { node: '>= 14' } - typed-array-byte-offset@1.0.2: + socks@2.8.7: resolution: { - integrity: sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==, + integrity: sha512-HLpt+uLy/pxB+bum/9DzAgiKS8CX1EvbWxI4zlmgGCExImLdiad2iCwXT5Z4c9c3Eq8rP2318mPW2c+QbtjK8A==, } - engines: { node: '>= 0.4' } + engines: { node: '>= 10.0.0', npm: '>= 3.0.0' } - typed-array-length@1.0.6: + sort-keys@2.0.0: resolution: { - integrity: sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==, + integrity: sha512-/dPCrG1s3ePpWm6yBbxZq5Be1dXGLyLn9Z791chDC3NFrpkVbWGzkBwPN1knaciexFXgRJ7hzdnwZ4stHSDmjg==, } - engines: { node: '>= 0.4' } + engines: { node: '>=4' } - typed-assert@1.0.9: + source-map-js@1.2.1: resolution: { - integrity: sha512-KNNZtayBCtmnNmbo5mG47p1XsCyrx6iVqomjcZnec/1Y5GGARaxPs6r49RnSPeUP3YjNYiU9sQHAtY4BBvnZwg==, + integrity: sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==, } + engines: { node: '>=0.10.0' } - typedarray-to-buffer@3.1.5: + source-map-loader@0.2.4: resolution: { - integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==, + integrity: sha512-OU6UJUty+i2JDpTItnizPrlpOIBLmQbWMuBg9q5bVtnHACqw1tn9nNwqJLbv0/00JjnJb/Ee5g5WS5vrRv7zIQ==, } + engines: { node: '>= 6' } - typedarray@0.0.6: + source-map-resolve@0.5.3: resolution: { - integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==, + integrity: sha512-Htz+RnsXWk5+P2slx5Jh3Q66vhQj1Cllm0zvnaY98+NFx+Dv2CF/f5O/t8x+KaNdrdIAsruNzoh/KpialbqAnw==, } + deprecated: See https://github.com/lydell/source-map-resolve#deprecated - typedoc@0.25.13: + source-map-support@0.5.21: resolution: { - integrity: sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ==, + integrity: sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==, } - engines: { node: '>= 16' } - hasBin: true - peerDependencies: - typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x - typescript@4.9.5: + source-map-url@0.4.1: resolution: { - integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==, + integrity: sha512-cPiFOTLUKvJFIg4SKVScy4ilPPW6rFgMgfuZJPNoDuMs3nC1HbMUycBoJw77xFIp6z1UJQJOfx6C9GMH80DiTw==, } - engines: { node: '>=4.2.0' } - hasBin: true + deprecated: See https://github.com/lydell/source-map-url#deprecated - typescript@5.4.2: + source-map@0.5.6: resolution: { - integrity: sha512-+2/g0Fds1ERlP6JsakQQDXjZdZMM+rqpamFZJEKh4kwTIn3iDkgKtby0CeNd5ATNZ4Ry1ax15TMx0W2V+miizQ==, + integrity: sha512-MjZkVp0NHr5+TPihLcadqnlVoGIoWo4IBHptutGh9wI3ttUYvCG26HkSuDi+K6lsZ25syXJXcctwgyVCt//xqA==, } - engines: { node: '>=14.17' } - hasBin: true + engines: { node: '>=0.10.0' } - typescript@5.4.5: + source-map@0.6.1: resolution: { - integrity: sha512-vcI4UpRgg81oIRUFwR0WSIHKt11nJ7SAVlYNIu+QpqeyXP+gpQJy/Z4+F0aGxSE4MqwjyXvW/TzgkLAx2AGHwQ==, + integrity: sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==, } - engines: { node: '>=14.17' } - hasBin: true + engines: { node: '>=0.10.0' } - typescript@5.5.4: + source-map@0.7.4: resolution: { - integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==, + integrity: sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==, } - engines: { node: '>=14.17' } - hasBin: true + engines: { node: '>= 8' } - ua-parser-js@0.7.37: + source-map@0.7.6: resolution: { - integrity: sha512-xV8kqRKM+jhMvcHWUKthV9fNebIzrNy//2O9ZwWcfiBFR5f25XVZPLlEajk/sf3Ra15V92isyQqnIEXRDaZWEA==, + integrity: sha512-i5uvt8C3ikiWeNZSVZNWcfZPItFQOsYTUAOkcUPGd8DqDy1uOUikjt5dG+uRlwyvR108Fb9DOd4GvXfT0N2/uQ==, } + engines: { node: '>= 12' } - ufo@1.5.4: + sourcemap-codec@1.4.8: resolution: { - integrity: sha512-UsUk3byDzKd04EyoZ7U4DOlxQaD14JUKQl6/P7wiX4FNvUfm3XL246n9W5AmqwW5RSFJ27NAuM0iLscAOYUiGQ==, + integrity: sha512-9NykojV5Uih4lgo5So5dtw+f0JgJX30KCNI8gwhz2J9A15wD0Ml6tjHKwf6fTSa6fAdVBdZeNOs9eJ71qCk8vA==, } + deprecated: Please use @jridgewell/sourcemap-codec instead - uglify-js@3.17.4: + spawn-wrap@2.0.0: resolution: { - integrity: sha512-T9q82TJI9e/C1TAxYvfb16xO120tMVFZrGA3f9/P4424DNu6ypK103y0GPFVa17yotwSyZW5iYXgjYHkGrJW/g==, + integrity: sha512-EeajNjfN9zMnULLwhZZQU3GWBoFNkbngTUPfaawT4RkMiviTxcX0qfhVbGey39mfctfDHkWtuecgQ8NJcyQWHg==, } - engines: { node: '>=0.8.0' } - hasBin: true + engines: { node: '>=8' } - uglify-js@3.4.10: + spdx-correct@3.2.0: resolution: { - integrity: sha512-Y2VsbPVs0FIshJztycsO2SfPk7/KAF/T72qzv9u5EpQ4kB2hQoHlhNQTsNyy6ul7lQtqJN/AoWeS23OzEiEFxw==, + integrity: sha512-kN9dJbvnySHULIluDHy32WHRUu3Og7B9sbY7tsFLctQkIqnMh3hErYgdMjTYuqmcXX+lK5T1lnUt3G7zNswmZA==, } - engines: { node: '>=0.8.0' } - hasBin: true - unbox-primitive@1.0.2: + spdx-exceptions@2.5.0: resolution: { - integrity: sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==, + integrity: sha512-PiU42r+xO4UbUS1buo3LPJkjlO7430Xn5SVAhdpzzsPHsjbYVflnnFdATgabnLude+Cqu25p6N+g2lw/PFsa4w==, } - unc-path-regex@0.1.2: + spdx-expression-parse@3.0.1: resolution: { - integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==, + integrity: sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==, } - engines: { node: '>=0.10.0' } - undici-types@6.20.0: + spdx-license-ids@3.0.22: resolution: { - integrity: sha512-Ny6QZ2Nju20vw1SRHe3d9jVu6gJ+4e3+MMpqu7pqE5HT6WsTSlce++GQmK5UXS8mzV8DSYHrQH+Xrf2jVcuKNg==, + integrity: sha512-4PRT4nh1EImPbt2jASOKHX7PB7I+e4IWNLvkKFDxNhJlfjbYlleYQh285Z/3mPTHSAK/AvdMmw5BNNuYH8ShgQ==, } - unicode-canonical-property-names-ecmascript@2.0.0: + spdy-transport@3.0.0: resolution: { - integrity: sha512-yY5PpDlfVIU5+y/BSCxAJRBIS1Zc2dDG3Ujq+sR0U+JjUevW2JhocOF+soROYDSaAezOzOKuyyixhD6mBknSmQ==, + integrity: sha512-hsLVFE5SjA6TCisWeJXFKniGGOpBgMLmerfO2aCyCU5s7nJ/rpAepqmFifv/GCbSbueEeAJJnmSQ2rKC/g8Fcw==, } - engines: { node: '>=4' } - unicode-match-property-ecmascript@2.0.0: + spdy@4.0.2: resolution: { - integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==, + integrity: sha512-r46gZQZQV+Kl9oItvl1JZZqJKGr+oEkB08A6BzkiR7593/7IbtuncXHd2YoYeTsG4157ZssMu9KYvUHLcjcDoA==, } - engines: { node: '>=4' } + engines: { node: '>=6.0.0' } - unicode-match-property-value-ecmascript@2.1.0: + split2@3.2.2: resolution: { - integrity: sha512-qxkjQt6qjg/mYscYMC0XKRn3Rh0wFPlfxB0xkt9CfyTvpX1Ra0+rAmdX2QyAobptSEvuy4RtpPRui6XkV+8wjA==, + integrity: sha512-9NThjpgZnifTkJpzTZ7Eue85S49QwpNhZTq6GRJwObb6jnLFNGB7Qm73V5HewTROPyxD0C29xqmaI68bQtV+hg==, } - engines: { node: '>=4' } - unicode-property-aliases-ecmascript@2.1.0: + split@1.0.1: resolution: { - integrity: sha512-6t3foTQI9qne+OZoVQB/8x8rk2k1eVy1gRXhV3oFQ5T6R1dqQ1xtin3XqSlx3+ATBkliTaR/hHyJBm+LVPNM8w==, + integrity: sha512-mTyOoPbrivtXnwnIxZRFYRrPNtEFKlpB2fvjSnCQUiAA6qAZzqwna5envK4uk6OIeP17CsdF3rSBGYVBsU0Tkg==, } - engines: { node: '>=4' } - unicorn-magic@0.1.0: + sprintf-js@1.0.3: resolution: { - integrity: sha512-lRfVq8fE8gz6QMBuDM6a+LO3IAzTi05H6gCVaUpir2E1Rwpo4ZUog45KpNXKC/Mn3Yb9UDuHumeFTo9iV/D9FQ==, + integrity: sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==, } - engines: { node: '>=18' } - union@0.5.0: + sshpk@1.18.0: resolution: { - integrity: sha512-N6uOhuW6zO95P3Mel2I2zMsbsanvvtgn6jVqJv4vbVcz/JN0OkL9suomjQGmWtxJQXOCqUJvquc1sMeNz/IwlA==, + integrity: sha512-2p2KJZTSqQ/I3+HX42EpYOa2l3f8Erv8MWKsy2I9uf4wA7yFIkXRffYdsx86y6z4vHtV8u7g+pPlr8/4ouAxsQ==, } - engines: { node: '>= 0.8.0' } + engines: { node: '>=0.10.0' } + hasBin: true - unique-filename@1.1.1: + ssri@10.0.6: resolution: { - integrity: sha512-Vmp0jIp2ln35UTXuryvjzkjGdRyf9b2lTXuSYUiPmzRcl3FDtYqAwOnTJkAngD9SWhnoJzDbTKwaOrZ+STtxNQ==, + integrity: sha512-MGrFH9Z4NP9Iyhqn16sDtBpRRNJ0Y2hNa6D65h736fVSaPCHr4DM4sWUNvVaSuC+0OBGhwsrydQwmgfg5LncqQ==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - unique-filename@2.0.1: + ssri@8.0.1: resolution: { - integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==, + integrity: sha512-97qShzy1AiyxvPNIkLWoGua7xoQzzPjQ0HAH4B0rWKo7SZ6USuPcrUiAFrws0UH8RrbWmgq3LMTObhPIHbbBeQ==, } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + engines: { node: '>= 8' } - unique-filename@3.0.0: + ssri@9.0.1: resolution: { - integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==, + integrity: sha512-o57Wcn66jMQvfHG1FlYbWeZWW/dHZhJXjpIcTfXldXEk5nz5lStPo3mK0OJQfGR3RbZUlbISexbljkJzuEj/8Q==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - unique-slug@2.0.2: + stable@0.1.8: resolution: { - integrity: sha512-zoWr9ObaxALD3DOPfjPSqxt4fnZiWblxHIgeWqW8x7UqDzEtHEQLzji2cuJYQFCU6KmoJikOYAZlrTHHebjx2w==, + 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' - unique-slug@3.0.0: + stack-utils@2.0.6: resolution: { - integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==, + integrity: sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==, } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + engines: { node: '>=10' } - unique-slug@4.0.0: + stackframe@1.3.4: resolution: { - integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==, + integrity: sha512-oeVtt7eWQS+Na6F//S4kJ2K2VbRlS9D43mAlMyVpVWovy9o+jfgH8O9agzANzaiLjclA0oYzUXEM4PurhSUChw==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - unique-stream@2.3.1: + statuses@1.5.0: resolution: { - integrity: sha512-2nY4TnBE70yoxHkDli7DMazpWiP7xMdCYqU2nBRO0UB+ZpEkGsSija7MvmvnZFUeC+mrgiUfcHSr3LmRFIg4+A==, + integrity: sha512-OpZ3zP+jT1PI7I8nemJX4AKmAX070ZkYPVWV/AaKTJl+tXCTGyVdC1a4SL8RUQYEwk/f34ZX8UTykN68FwrqAA==, } + engines: { node: '>= 0.6' } - unique-string@2.0.0: + statuses@2.0.1: resolution: { - integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==, + integrity: sha512-RwNA9Z/7PrK06rYLIzFMlaF+l73iwpzsqRIFgbMLbTcLD6cOao82TaWefPXQvB2fOC4AjuYSEndS7N/mTCbkdQ==, } - engines: { node: '>=8' } + engines: { node: '>= 0.8' } - universal-user-agent@6.0.1: + stop-iteration-iterator@1.1.0: resolution: { - integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==, + integrity: sha512-eLoXW/DHyl62zxY4SCaIgnRhuMr6ri4juEYARS8E6sCEqzKpOiE521Ucofdx+KnDZl5xmvGYaaKCk5FEOxJCoQ==, } + engines: { node: '>= 0.4' } - universalify@0.1.2: + stream-shift@1.0.3: resolution: { - integrity: sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==, + integrity: sha512-76ORR0DO1o1hlKwTbi/DM3EXWGf3ZJYO8cXX5RJwnul2DEg2oyoZyjLNoQM8WsvZiFKCRfC1O0J7iCvie3RZmQ==, } - engines: { node: '>= 4.0.0' } - universalify@0.2.0: + string-length@4.0.2: resolution: { - integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==, + integrity: sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==, } - engines: { node: '>= 4.0.0' } + engines: { node: '>=10' } - universalify@2.0.1: + string-width@2.1.1: resolution: { - integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==, + integrity: sha512-nOqH59deCq9SRHlxq1Aw85Jnt4w6KvLKqWVik6oA9ZklXLNIOlqg4F2yrT1MVaTjAqvVwdfeZ7w7aCvJD7ugkw==, } - engines: { node: '>= 10.0.0' } + engines: { node: '>=4' } - unpipe@1.0.0: + string-width@3.1.0: resolution: { - integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==, + integrity: sha512-vafcv6KjVZKSgz06oM/H6GDBrAtz8vdhQakGjFIvNrHA6y3HCF1CInLy+QLq8dTJPQ1b+KDUqDFctkdRW44e1w==, } - engines: { node: '>= 0.8' } + engines: { node: '>=6' } - upath@2.0.1: + string-width@4.2.3: resolution: { - integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==, + integrity: sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==, } - engines: { node: '>=4' } + engines: { node: '>=8' } - update-browserslist-db@1.0.16: + string-width@5.1.2: resolution: { - integrity: sha512-KVbTxlBYlckhF5wgfyZXTWnMn7MMZjMu9XG8bPlliUOP9ThaF4QnhP8qrjrH7DRzHfSk0oQv1wToW+iA5GajEQ==, + integrity: sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==, } - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + engines: { node: '>=12' } - update-browserslist-db@1.1.1: + string-width@7.2.0: resolution: { - integrity: sha512-R8UzCaa9Az+38REPiJ1tXlImTJXlVfgHZsglwBD/k6nj76ctsH1E3q4doGrukiLQd3sGQYu56r5+lo5r94l29A==, + integrity: sha512-tsaTIkKW9b4N+AEj+SVA+WhJzV7/zMhcSu78mLKWSk7cXMOSHsBKFWUs0fWwq8QyK3MgJBQRX6Gbi4kYbdvGkQ==, } - hasBin: true - peerDependencies: - browserslist: '>= 4.21.0' + engines: { node: '>=18' } - upper-case@1.1.3: + string.prototype.padend@3.1.6: resolution: { - integrity: sha512-WRbjgmYzgXkCV7zNVpy5YgrHgbBv126rMALQQMrmzOVC4GM2waQ9x7xtm8VU+1yF2kWyPzI9zbZ48n4vSxwfSA==, + integrity: sha512-XZpspuSB7vJWhvJc9DLSlrXl1mcA2BdoY5jjnS135ydXqLoqhs96JjDtCkjJEQHvfqZIp9hBuBMgI589peyx9Q==, } + engines: { node: '>= 0.4' } - uri-js@4.4.1: + string.prototype.trim@1.2.10: resolution: { - integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, + integrity: sha512-Rs66F0P/1kedk5lyYyH9uBzuiI/kNRmwJAR9quK6VOtIpZ2G+hMZd+HQbbv25MgCA6gEffoMZYxlTod4WcdrKA==, } + engines: { node: '>= 0.4' } - urix@0.1.0: + string.prototype.trimend@1.0.9: resolution: { - integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==, + integrity: sha512-G7Ok5C6E/j4SGfyLCloXTrngQIQU3PWtXGst3yM7Bea9FRURf1S42ZHlZZtsNque2FN2PoUhfZXYLNWwEr4dLQ==, } - deprecated: Please see https://github.com/lydell/urix#deprecated + engines: { node: '>= 0.4' } - url-join@4.0.1: + string.prototype.trimstart@1.0.8: resolution: { - integrity: sha512-jk1+QP6ZJqyOiuEI9AEWQfju/nB2Pw466kbA0LEZljHwKeMgd9WrAEgEGxjPDD2+TNbbb37rTyhEfrCXfuKXnA==, + integrity: sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==, } + engines: { node: '>= 0.4' } - url-parse@1.5.10: + string_decoder@1.1.1: resolution: { - integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==, + integrity: sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==, } - url@0.11.4: + string_decoder@1.3.0: resolution: { - integrity: sha512-oCwdVC7mTuWiPyjLUz/COz5TLk6wgp0RCsN+wHZ2Ekneac9w8uuV0njcbbie2ME+Vs+d6duwmYuR3HgQXs1fOg==, + integrity: sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==, } - engines: { node: '>= 0.4' } - util-deprecate@1.0.2: + strip-ansi@4.0.0: resolution: { - integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, + integrity: sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==, } + engines: { node: '>=4' } - util@0.12.5: + strip-ansi@5.2.0: resolution: { - integrity: sha512-kZf/K6hEIrWHI6XqOFUiiMa+79wE/D8Q+NCNAWclkyg3b4d2k7s0QGepNjiABc+aR3N1PAyHL7p6UcLY6LmrnA==, + integrity: sha512-DuRs1gKbBqsMKIZlrffwlug8MHkcnpjs5VPmL1PAh+mA30U0DTotfDZ0d2UUsXpPmPmMMJ6W773MaA3J+lbiWA==, } + engines: { node: '>=6' } - utila@0.4.0: + strip-ansi@6.0.1: resolution: { - integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==, + integrity: sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==, } + engines: { node: '>=8' } - utils-merge@1.0.1: + strip-ansi@7.1.2: resolution: { - integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==, + integrity: sha512-gmBGslpoQJtgnMAvOVqGZpEz9dyoKTCzy2nfz/n8aIFhN/jCE/rCmcxabB6jOOHV+0WNnylOxaxBQPSvcWklhA==, } - engines: { node: '>= 0.4.0' } + engines: { node: '>=12' } - uuid@3.4.0: + strip-bom@3.0.0: resolution: { - integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==, + integrity: sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==, } - deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. - hasBin: true + engines: { node: '>=4' } - uuid@8.3.2: + strip-bom@4.0.0: resolution: { - integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==, + integrity: sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==, } - hasBin: true + engines: { node: '>=8' } - v8-compile-cache-lib@3.0.1: + strip-eof@1.0.0: resolution: { - integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==, + integrity: sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==, } + engines: { node: '>=0.10.0' } - v8-compile-cache@2.3.0: + strip-final-newline@2.0.0: resolution: { - integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==, + integrity: sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==, } + engines: { node: '>=6' } - v8-to-istanbul@8.1.1: + strip-indent@3.0.0: resolution: { - integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==, + integrity: sha512-laJTa3Jb+VQpaC6DseHhF7dXVqHTfJPCRDaEbid/drOhgitgYku/letMUqOXFoWV0zIIUbjpdH2t+tYj4bQMRQ==, } - engines: { node: '>=10.12.0' } + engines: { node: '>=8' } - validate-npm-package-license@3.0.4: + strip-json-comments@2.0.1: resolution: { - integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, + integrity: sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==, } + engines: { node: '>=0.10.0' } - validate-npm-package-name@3.0.0: + strip-json-comments@3.1.1: resolution: { - integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==, + integrity: sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==, } + engines: { node: '>=8' } - validate-npm-package-name@4.0.0: + strong-log-transformer@2.1.0: resolution: { - integrity: sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==, + integrity: sha512-B3Hgul+z0L9a236FAUC9iZsL+nVHgoCJnqCbN588DjYxvGXaXaaFbfmQ/JhvKjZwsOukuR72XbHv71Qkug0HxA==, } - engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } + engines: { node: '>=4' } + hasBin: true - validate-npm-package-name@5.0.1: + style-loader@1.3.0: resolution: { - integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==, + integrity: sha512-V7TCORko8rs9rIqkSrlMfkqA63DfoGBBJmK1kKGCcSi+BWb4cqz0SRsnp4l6rU5iwOEd0/2ePv68SV22VXon4Q==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>= 8.9.0' } + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 - validator@13.12.0: + stylehacks@5.1.1: resolution: { - integrity: sha512-c1Q0mCiPlgdTVVVIJIrBuxNicYE+t/7oKeI9MWLj3fh/uq2Pxh/3eeWbVZ4OcGW1TUf53At0njHw5SMdA3tmMg==, + integrity: sha512-sBpcd5Hx7G6seo7b1LkpttvTz7ikD0LlH5RmdcBNb6fFR0Fl7LQwHDFr300q4cwUqi+IYrFGmsIHieMBfnN/Bw==, } - engines: { node: '>= 0.10' } + engines: { node: ^10 || ^12 || >=14.0 } + peerDependencies: + postcss: ^8.2.15 - value-or-function@3.0.0: + supertap@3.0.1: resolution: { - integrity: sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==, + integrity: sha512-u1ZpIBCawJnO+0QePsEiOknOfCRq0yERxiAchT0i4li0WHNUJbf0evXXSXOcCAR4M8iMDoajXYmstm/qO81Isw==, } - engines: { node: '>= 0.10' } + engines: { node: ^12.20.0 || ^14.13.1 || >=16.0.0 } - vary@1.1.2: + supports-color@5.5.0: resolution: { - integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==, + integrity: sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==, } - engines: { node: '>= 0.8' } + engines: { node: '>=4' } - verror@1.10.0: + supports-color@7.2.0: resolution: { - integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==, + integrity: sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==, } - engines: { '0': node >=0.6.0 } + engines: { node: '>=8' } - vinyl-fs@3.0.3: + supports-color@8.1.1: resolution: { - integrity: sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==, + integrity: sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==, } - engines: { node: '>= 0.10' } + engines: { node: '>=10' } - vinyl-sourcemap@1.1.0: + supports-hyperlinks@2.3.0: resolution: { - integrity: sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==, + integrity: sha512-RpsAZlpWcDwOPQA22aCH4J0t7L8JmAvsCxfOSEwm7cQs3LshN36QaTkwd70DnBOXDWGssw2eUoc8CaRWT0XunA==, } - engines: { node: '>= 0.10' } + engines: { node: '>=8' } - vinyl@2.2.1: + supports-preserve-symlinks-flag@1.0.0: resolution: { - integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==, + integrity: sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==, } - engines: { node: '>= 0.10' } + engines: { node: '>= 0.4' } - vite-node@1.6.0: + svg-tags@1.0.0: resolution: { - integrity: sha512-de6HJgzC+TFzOu0NTC4RAIsyf/DY/ibWDYQUcuEA84EMHhcefTUGkjFHKKEJhQN4A+6I0u++kr3l36ZF2d7XRw==, + integrity: sha512-ovssysQTa+luh7A5Weu3Rta6FJlFBBbInjOh722LIt6klpU2/HtdUbszju/G4devcvk8PGt7FCLv5wftu3THUA==, } - engines: { node: ^18.0.0 || >=20.0.0 } - hasBin: true - vite-plugin-dts@3.9.1: + svgo@2.8.0: resolution: { - integrity: sha512-rVp2KM9Ue22NGWB8dNtWEr+KekN3rIgz1tWD050QnRGlriUCmaDwa7qA5zDEjbXg5lAXhYMSBJtx3q3hQIJZSg==, + integrity: sha512-+N/Q9kV1+F+UeWYoSiULYo4xYSDQlTgb+ayMobAXPwMnLvop7oxKMo9OzIrX5x3eS4L4f2UHhc9axXwY8DpChg==, } - engines: { node: ^14.18.0 || >=16.0.0 } - peerDependencies: - typescript: '*' - vite: '*' - peerDependenciesMeta: - vite: - optional: true + engines: { node: '>=10.13.0' } + hasBin: true - vite-plugin-node-polyfills@0.21.0: + symbol-observable@4.0.0: resolution: { - integrity: sha512-Sk4DiKnmxN8E0vhgEhzLudfJQfaT8k4/gJ25xvUPG54KjLJ6HAmDKbr4rzDD/QWEY+Lwg80KE85fGYBQihEPQA==, + integrity: sha512-b19dMThMV4HVFynSAM1++gBHAbk2Tc/osgLIBZMKsyqh34jb2e8Os7T6ZW/Bt3pJFdBTd2JwAnAAEQV7rSNvcQ==, } - peerDependencies: - vite: ^2.0.0 || ^3.0.0 || ^4.0.0 || ^5.0.0 + engines: { node: '>=0.10' } - vite-plugin-static-copy@1.0.6: + symbol-tree@3.2.4: resolution: { - integrity: sha512-3uSvsMwDVFZRitqoWHj0t4137Kz7UynnJeq1EZlRW7e25h2068fyIZX4ORCCOAkfp1FklGxJNVJBkBOD+PZIew==, + integrity: sha512-9QNk5KwDF+Bvz+PyObkmSYjI5ksVUYtjW7AU22r2NKcfLJcXp96hkDWU3+XndOsUb+AQ9QhfzfCT2O+CNWT5Tw==, } - engines: { node: ^18.0.0 || >=20.0.0 } - peerDependencies: - vite: ^5.0.0 - vite-plugin-vuetify@2.0.4: + symlink-dir@5.2.1: resolution: { - integrity: sha512-A4cliYUoP/u4AWSRVRvAPKgpgR987Pss7LpFa7s1GvOe8WjgDq92Rt3eVXrvgxGCWvZsPKziVqfHHdCMqeDhfw==, + integrity: sha512-HfqqI7BoCx3+482BUfoR1sXAFx5G90KrWImT5/J/a+HZWvzMTTA/hYKh2030WFYn7OwRRUAoMCQvqlwBMnhBUw==, } - engines: { node: ^18.0.0 || >=20.0.0 } - peerDependencies: - vite: '>=5' - vue: ^3.0.0 - vuetify: ^3.0.0 + engines: { node: '>=12.10' } + hasBin: true - vite@5.4.2: + tapable@1.1.3: resolution: { - integrity: sha512-dDrQTRHp5C1fTFzcSaMxjk6vdpKvT+2/mIdE07Gw2ykehT49O0z/VHS3zZ8iV/Gh8BJJKHWOe5RjaNrW5xf/GA==, + integrity: sha512-4WK/bYZmj8xLr+HUCODHGF1ZFzsYffasLUgEiMBY4fgtltdO6B4WJtlSbPaDTLpYTcGVwM2qLnFTICEcNxs3kA==, } - engines: { node: ^18.0.0 || >=20.0.0 } - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true + engines: { node: '>=6' } - vite@5.4.6: + tapable@2.3.0: resolution: { - integrity: sha512-IeL5f8OO5nylsgzd9tq4qD2QqI0k2CQLGrWD0rCN0EQJZpBK5vJAx0I+GDkMOXxQX/OfFHMuLIx6ddAxGX/k+Q==, + integrity: sha512-g9ljZiwki/LfxmQADO3dEY1CbpmXT5Hm2fJ+QaGKwSXUylMybePR7/67YW7jOrrvjEgL1Fmz5kzyAjWVWLlucg==, } - engines: { node: ^18.0.0 || >=20.0.0 } - hasBin: true - peerDependencies: - '@types/node': ^18.0.0 || >=20.0.0 - less: '*' - lightningcss: ^1.21.0 - sass: '*' - sass-embedded: '*' - stylus: '*' - sugarss: '*' - terser: ^5.4.0 - peerDependenciesMeta: - '@types/node': - optional: true - less: - optional: true - lightningcss: - optional: true - sass: - optional: true - sass-embedded: - optional: true - stylus: - optional: true - sugarss: - optional: true - terser: - optional: true + engines: { node: '>=6' } - vitest@1.6.0: + tar-stream@2.2.0: resolution: { - integrity: sha512-H5r/dN06swuFnzNFhq/dnz37bPXnq8xB2xB5JOVk8K09rUtoeNN+LHWkoQ0A/i3hvbUKKcCei9KpbxqHMLhLLA==, + integrity: sha512-ujeqbceABgwMZxEJnk2HDY2DlnUZ+9oEcb1KzTVfYHio0UE6dG71n60d8D2I4qNvleWrrXpmjpt7vZeF1LnMZQ==, } - engines: { node: ^18.0.0 || >=20.0.0 } - hasBin: true - peerDependencies: - '@edge-runtime/vm': '*' - '@types/node': ^18.0.0 || >=20.0.0 - '@vitest/browser': 1.6.0 - '@vitest/ui': 1.6.0 - happy-dom: '*' - jsdom: '*' - peerDependenciesMeta: - '@edge-runtime/vm': - optional: true - '@types/node': - optional: true - '@vitest/browser': - optional: true - '@vitest/ui': - optional: true - happy-dom: - optional: true - jsdom: - optional: true + engines: { node: '>=6' } - vm-browserify@1.1.2: + tar@6.1.11: resolution: { - integrity: sha512-2ham8XPWTONajOR0ohOKOHXkm3+gaBmGut3SRuu75xLd/RRaY6vqgh8NBYYk7+RW3u5AtzPQZG8F10LHkl0lAQ==, + integrity: sha512-an/KZQzQUkZCkuoAA64hM92X0Urb6VpRhAFllDzz44U2mcD5scmT3zBc4VgVpkugF580+DQn8eAFSyoQt0tznA==, } + engines: { node: '>= 10' } - void-elements@2.0.1: + tar@6.2.1: resolution: { - integrity: sha512-qZKX4RnBzH2ugr8Lxa7x+0V6XD9Sb/ouARtiasEQCHB1EVU4NXtmHsDDrx1dO4ne5fc3J6EW05BP1Dl0z0iung==, + integrity: sha512-DZ4yORTwrbTj/7MZYq2w+/ZFdI6OZ/f9SFHR+71gIVUZhOQPHzVCLpvRnPgyaMpfWxxk/4ONva3GQSyNIKRv6A==, } - engines: { node: '>=0.10.0' } + engines: { node: '>=10' } - vscode-oniguruma@1.7.0: + tar@7.5.2: resolution: { - integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==, + integrity: sha512-7NyxrTE4Anh8km8iEy7o0QYPs+0JKBTj5ZaqHg6B39erLg0qYXN3BijtShwbsNSvQ+LN75+KV+C4QR/f6Gwnpg==, } + engines: { node: '>=18' } - vscode-textmate@8.0.0: + temp-dir@1.0.0: resolution: { - integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==, + integrity: sha512-xZFXEGbG7SNC3itwBzI3RYjq/cEhBkx2hJuKGIUOcEULmkQExXiHat2z/qkISYsuR+IKumhEfKKbV5qXmhICFQ==, } + engines: { node: '>=4' } - vscode-uri@3.0.8: + temp-dir@2.0.0: resolution: { - integrity: sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==, + integrity: sha512-aoBAniQmmwtcKp/7BzsH8Cxzv8OL736p7v1ihGb5e9DJ9kTwGWHrQrVB5+lfVDzfGrdRzXch+ig7LHaY1JTOrg==, } + engines: { node: '>=8' } - vue-component-type-helpers@2.0.19: + temp-dir@3.0.0: resolution: { - integrity: sha512-cN3f1aTxxKo4lzNeQAkVopswuImUrb5Iurll9Gaw5cqpnbTAxtEMM1mgi6ou4X79OCyqYv1U1mzBHJkzmiK82w==, + integrity: sha512-nHc6S/bwIilKHNRgK/3jlhDoIHcp45YgyiwcAk46Tr0LfEqGBVpmiAyuiuxeVE44m3mXnEeVhaipLOEWmH+Njw==, } + engines: { node: '>=14.16' } - vue-eslint-parser@9.4.2: + tempy@1.0.0: resolution: { - integrity: sha512-Ry9oiGmCAK91HrKMtCrKFWmSFWvYkpGglCeFAIqDdr9zdXmMMpJOmUJS7WWsW7fX81h6mwHmUZCQQ1E0PkSwYQ==, + integrity: sha512-eLXG5B1G0mRPHmgH2WydPl5v4jH35qEn3y/rA/aahKhIa91Pn119SsU7n7v/433gtT9ONzC8ISvNHIh2JSTm0w==, } - engines: { node: ^14.17.0 || >=16.0.0 } - peerDependencies: - eslint: '>=6.0.0' + engines: { node: '>=10' } - vue-hot-reload-api@2.3.4: + terminal-link@2.1.1: resolution: { - integrity: sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==, + integrity: sha512-un0FmiRUQNr5PJqy9kP7c40F5BOfpGlYTrxonDChEZB7pzZxRNp/bt+ymiy9/npwXya9KH99nJ/GXFIiUkYGFQ==, } + engines: { node: '>=8' } - vue-jest@5.0.0-alpha.10: + terser-webpack-plugin@5.3.14: resolution: { - integrity: sha512-iN62cTi4AL0UsgxEyVeJtHG6qXEv+8Ci2wX1vP3b/dAZvyBRmqy5aJHQrP6VCEuio+HgHQ1LAZ+ccM2pouBmlg==, + integrity: sha512-vkZjpUjb6OMS7dhV+tILUW6BhpDR7P2L/aQSAv+Uwk+m8KATX9EccViHTJR2qDtACKPIYndLGCyl3FMo+r2LMw==, } + engines: { node: '>= 10.13.0' } peerDependencies: - '@babel/core': 7.x - babel-jest: '>= 24 < 27' - jest: '>= 24 < 27 ' - ts-jest: '>= 24 < 27 ' - typescript: '>= 3.x' - vue: ^3.0.0-0 + '@swc/core': '*' + esbuild: '*' + uglify-js: '*' + webpack: ^5.1.0 peerDependenciesMeta: - ts-jest: + '@swc/core': optional: true - typescript: + esbuild: + optional: true + uglify-js: optional: true - vue-loader@15.11.1: + terser@5.44.1: resolution: { - integrity: sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==, + integrity: sha512-t/R3R/n0MSwnnazuPpPNVO60LX0SKL45pyl9YlvxIdkH0Of7D5qM2EVe+yASRIlY5pZ73nclYJfNANGWPwFDZw==, } - peerDependencies: - '@vue/compiler-sfc': ^3.0.8 - cache-loader: '*' - css-loader: '*' - prettier: '*' - vue-template-compiler: '*' - webpack: ^3.0.0 || ^4.1.0 || ^5.0.0-0 - peerDependenciesMeta: - '@vue/compiler-sfc': - optional: true - cache-loader: - optional: true - prettier: - optional: true - vue-template-compiler: - optional: true + engines: { node: '>=10' } + hasBin: true - vue-loader@17.4.2: + test-exclude@6.0.0: resolution: { - integrity: sha512-yTKOA4R/VN4jqjw4y5HrynFL8AK0Z3/Jt7eOJXEitsm0GMRHDBjCfCiuTiLP7OESvsZYo2pATCWhDqxC5ZrM6w==, + integrity: sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==, } - peerDependencies: - '@vue/compiler-sfc': '*' - vue: '*' - webpack: ^4.1.0 || ^5.0.0-0 - peerDependenciesMeta: - '@vue/compiler-sfc': - optional: true - vue: - optional: true + engines: { node: '>=8' } - vue-style-loader@4.1.3: + text-extensions@1.9.0: resolution: { - integrity: sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==, + integrity: sha512-wiBrwC1EhBelW12Zy26JeOUkQ5mRu+5o8rpsJk5+2t+Y5vE7e842qtZDQ2g1NpX/29HdyFeJ4nSIhI47ENSxlQ==, } + engines: { node: '>=0.10' } - vue-template-compiler@2.7.16: + text-table@0.2.0: resolution: { - integrity: sha512-AYbUWAJHLGGQM7+cNTELw+KsOG9nl2CnSv467WobS5Cv9uk3wFcnr1Etsz2sEIHEZvw1U+o9mRlEO6QbZvUPGQ==, + integrity: sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==, } - vue-template-es2015-compiler@1.9.1: + thenify-all@1.6.0: resolution: { - integrity: sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==, + integrity: sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==, } + engines: { node: '>=0.8' } - vue-tsc@1.8.27: + thenify@3.3.1: resolution: { - integrity: sha512-WesKCAZCRAbmmhuGl3+VrdWItEvfoFIPXOvUJkjULi+x+6G/Dy69yO3TBRJDr9eUlmsNAwVmxsNZxvHKzbkKdg==, + integrity: sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==, } - hasBin: true - peerDependencies: - typescript: '*' - vue-tsc@2.0.29: + thread-loader@3.0.4: resolution: { - integrity: sha512-MHhsfyxO3mYShZCGYNziSbc63x7cQ5g9kvijV7dRe1TTXBRLxXyL0FnXWpUF1xII2mJ86mwYpYsUmMwkmerq7Q==, + integrity: sha512-ByaL2TPb+m6yArpqQUZvP+5S1mZtXsEP7nWKKlAUTm7fCml8kB5s1uI3+eHRP2bk5mVYfRSBI7FFf+tWEyLZwA==, } - hasBin: true + engines: { node: '>= 10.13.0' } peerDependencies: - typescript: '>=5.0.0' + webpack: ^4.27.0 || ^5.0.0 - vue@2.7.16: + throat@6.0.2: resolution: { - integrity: sha512-4gCtFXaAA3zYZdTp5s4Hl2sozuySsgz4jy1EnpBHNfpMa9dK1ZCG7viqBPCwXtmgc8nHqUsAu3G4gtmXkkY3Sw==, + integrity: sha512-WKexMoJj3vEuK0yFEapj8y64V0A6xcuPuK9Gt1d0R+dzCSJc0lHqQytAbSB4cDAK0dWh4T0E2ETkoLE2WZ41OQ==, } - deprecated: Vue 2 has reached EOL and is no longer actively maintained. See https://v2.vuejs.org/eol/ for more details. - vue@3.4.27: + through2-filter@3.0.0: resolution: { - integrity: sha512-8s/56uK6r01r1icG/aEOHqyMVxd1bkYcSe9j8HcKtr/xTOFWvnzIVTehNW+5Yt89f+DLBe4A569pnZLS5HzAMA==, + integrity: sha512-jaRjI2WxN3W1V8/FMZ9HKIBXixtiqs3SQSX4/YGIiP3gL6djW48VoZq9tDqeCWs3MT8YY5wb/zli8VW8snY1CA==, + } + + through2@2.0.5: + resolution: + { + integrity: sha512-/mrRod8xqpA+IHSLyGCQ2s8SPHiCDEeQJSep1jqLYeEUClOFG2Qsh+4FU6G9VeqpZnGW/Su8LQGc4YKni5rYSQ==, } - peerDependencies: - typescript: '*' - peerDependenciesMeta: - typescript: - optional: true - vuetify@3.7.0: + through2@4.0.2: resolution: { - integrity: sha512-x+UaU4SPYNcJSE/voCTBFrNn0q9Spzx2EMfDdUj0NYgHGKb59OqnZte+AjaJaoOXy1AHYIGEpm5Ryk2BEfgWuw==, + integrity: sha512-iOqSav00cVxEEICeD7TjLB1sueEL+81Wpzp2bY17uZjZN0pWZPuo4suZ/61VujxmqSGFfgOcNuTZ85QJwNZQpw==, } - engines: { node: ^12.20 || >=14.13 } - peerDependencies: - typescript: '>=4.7' - vite-plugin-vuetify: '>=1.0.0' - vue: ^3.3.0 - vue-i18n: ^9.0.0 - webpack-plugin-vuetify: '>=2.0.0' - peerDependenciesMeta: - typescript: - optional: true - vite-plugin-vuetify: - optional: true - vue-i18n: - optional: true - webpack-plugin-vuetify: - optional: true - w3c-hr-time@1.0.2: + through@2.3.8: resolution: { - integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==, + integrity: sha512-w89qg7PI8wAdvX60bMDP+bFoD5Dvhm9oLheFp5O4a2QF0cSBGsBX4qZmadPMvVqlLJBBci+WqGGOAPvcDeNSVg==, } - deprecated: Use your platform's native performance.now() and performance.timeOrigin. - w3c-xmlserializer@2.0.0: + thunky@1.1.0: resolution: { - integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==, + integrity: sha512-eHY7nBftgThBqOyHGVN+l8gF0BucP09fMo0oO/Lb0w1OF80dJv+lDVpXG60WMQvkcxAkNybKsrEIE3ZtKGmPrA==, } - engines: { node: '>=10' } - w3c-xmlserializer@3.0.0: + time-zone@1.0.0: + resolution: + { + integrity: sha512-TIsDdtKo6+XrPtiTm1ssmMngN1sAhyKnTO2kunQWqNPWIVvCm15Wmw4SWInwTVgJ5u/Tr04+8Ei9TNcw4x4ONA==, + } + engines: { node: '>=4' } + + tmp@0.0.33: resolution: { - integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==, + integrity: sha512-jRCJlojKnZ3addtTOjdIqoRuPEKBvNXcGYqzO6zWZX8KfKEpnGY5jfggJQ3EjKuu8D4bJRr0y+cYJFmYbImXGw==, } - engines: { node: '>=12' } + engines: { node: '>=0.6.0' } - w3c-xmlserializer@4.0.0: + tmp@0.2.5: resolution: { - integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==, + integrity: sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==, } - engines: { node: '>=14' } + engines: { node: '>=14.14' } - w3c-xmlserializer@5.0.0: + tmpl@1.0.5: resolution: { - integrity: sha512-o8qghlI8NZHU1lLPrpi2+Uq7abh4GGPpYANlalzWxyWteJOCsr/P+oPBA49TOLu5FTZO4d3F9MnWJfiMo4BkmA==, + integrity: sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==, } - engines: { node: '>=18' } - walk-up-path@1.0.0: + to-absolute-glob@2.0.2: resolution: { - integrity: sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==, + integrity: sha512-rtwLUQEwT8ZeKQbyFJyomBRYXyE16U5VKuy0ftxLMK/PZb2fkOsg5r9kHdauuVDbsNdIBoC/HCthpidamQFXYA==, } + engines: { node: '>=0.10.0' } - walker@1.0.8: + to-regex-range@5.0.1: resolution: { - integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==, + integrity: sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==, } + engines: { node: '>=8.0' } - watchpack@2.4.1: + to-through@2.0.0: resolution: { - integrity: sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==, + integrity: sha512-+QIz37Ly7acM4EMdw2PRN389OneM5+d844tirkGp4dPKzI5OE72V9OsbFp+CIYJDahZ41ZV05hNtcPAQUAm9/Q==, } - engines: { node: '>=10.13.0' } + engines: { node: '>= 0.10' } - wbuf@1.7.3: + toidentifier@1.0.1: resolution: { - integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==, + integrity: sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==, } + engines: { node: '>=0.6' } - wcwidth@1.0.1: + toposort@2.0.2: resolution: { - integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, + integrity: sha512-0a5EOkAUp8D4moMi2W8ZF8jcga7BgZd91O/yabJCFY8az+XSzeGyTKs0Aoo897iV1Nj6guFq8orWDS96z91oGg==, } - weak-lru-cache@1.2.2: + totalist@3.0.1: resolution: { - integrity: sha512-DEAoo25RfSYMuTGc9vPJzZcZullwIqRDSI9LOy+fkCJPi6hykCnfKaXTuPBDuXAUcqHXyOgFtHNp/kB2FjYHbw==, + integrity: sha512-sf4i37nQ2LBx4m3wB74y+ubopq6W/dIzXg0FDGjsYnZHVa1Da8FH853wlL2gtUhg+xJXjfk3kUZS3BRoQeoQBQ==, } + engines: { node: '>=6' } - webdriver-js-extender@2.1.0: + tough-cookie@2.5.0: resolution: { - integrity: sha512-lcUKrjbBfCK6MNsh7xaY2UAUmZwe+/ib03AjVOpFobX4O7+83BUveSrLfU0Qsyb1DaKJdQRbuU+kM9aZ6QUhiQ==, + integrity: sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==, } - engines: { node: '>=6.9.x' } + engines: { node: '>=0.8' } - webdriver-manager@12.1.9: + tough-cookie@4.1.4: resolution: { - integrity: sha512-Yl113uKm8z4m/KMUVWHq1Sjtla2uxEBtx2Ue3AmIlnlPAKloDn/Lvmy6pqWCUersVISpdMeVpAaGbNnvMuT2LQ==, + integrity: sha512-Loo5UUvLD9ScZ6jh8beX1T6sO1w2/MpCRpEP7V280GKMVUQ0Jzar2U3UJPsrdbziLEMMhu3Ujnq//rhiFuIeag==, } - engines: { node: '>=6.9.x' } - hasBin: true + engines: { node: '>=6' } - webidl-conversions@3.0.1: + tr46@0.0.3: resolution: { - integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, + integrity: sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==, } - webidl-conversions@5.0.0: + tr46@2.1.0: resolution: { - integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==, + integrity: sha512-15Ih7phfcdP5YxqiB+iDtLoaTz4Nd35+IiAv0kQ5FNKHzXgdWqPoTIqEDDJmXceQt4JZk6lVPT8lnDlPpGDppw==, } engines: { node: '>=8' } - webidl-conversions@6.1.0: + tr46@3.0.0: resolution: { - integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==, + integrity: sha512-l7FvfAHlcmulp8kr+flpQZmVwtu7nfRV7NZujtN0OqES8EL4O4e0qqzL0DC5gAvx/ZC/9lk6rhcUwYvkBnBnYA==, } - engines: { node: '>=10.4' } + engines: { node: '>=12' } - webidl-conversions@7.0.0: + tr46@4.1.1: resolution: { - integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==, + integrity: sha512-2lv/66T7e5yNyhAAC4NaKe5nVavzuGJQVVtRYLyQ2OI8tsJ61PMLlelehb0wi2Hx6+hT/OJUWZcw8MjlSRnxvw==, } - engines: { node: '>=12' } + engines: { node: '>=14' } - webpack-bundle-analyzer@4.10.2: + treeverse@3.0.0: resolution: { - integrity: sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==, + integrity: sha512-gcANaAnd2QDZFmHFEOF4k7uc1J/6a6z3DJMd/QwEyxLoKGiptJRwid582r7QIsFlFMIZ3SnxfS52S4hm2DHkuQ==, } - engines: { node: '>= 10.13.0' } - hasBin: true + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - webpack-chain@6.5.1: + trim-newlines@3.0.1: resolution: { - integrity: sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==, + integrity: sha512-c1PTsA3tYrIsLGkJkzHF+w9F2EyxfXGo4UyJc4pFL++FMjnq0HJS69T3M7d//gKrFKwy429bouPescbjecU+Zw==, } engines: { node: '>=8' } - deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - webpack-cli@5.1.4: + ts-jest@27.1.5: resolution: { - integrity: sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==, + integrity: sha512-Xv6jBQPoBEvBq/5i2TeSG9tt/nqkbpcurrEG1b+2yfBrcJelOZF9Ml6dmyMh7bcW9JyFbRYpR5rxROSlBLTZHA==, } - engines: { node: '>=14.15.0' } + engines: { node: ^10.13.0 || ^12.13.0 || ^14.15.0 || >=15.0.0 } hasBin: true peerDependencies: - '@webpack-cli/generators': '*' - webpack: 5.x.x - webpack-bundle-analyzer: '*' - webpack-dev-server: '*' + '@babel/core': '>=7.0.0-beta.0 <8' + '@types/jest': ^27.0.0 + babel-jest: '>=27.0.0 <28' + esbuild: '*' + jest: ^27.0.0 + typescript: '>=3.8 <5.0' peerDependenciesMeta: - '@webpack-cli/generators': + '@babel/core': optional: true - webpack-bundle-analyzer: + '@types/jest': optional: true - webpack-dev-server: + babel-jest: optional: true - - webpack-dev-middleware@5.3.4: - resolution: - { - integrity: sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==, - } - engines: { node: '>= 12.13.0' } - peerDependencies: - webpack: ^4.0.0 || ^5.0.0 - - webpack-dev-middleware@7.4.2: - resolution: - { - integrity: sha512-xOO8n6eggxnwYpy1NlzUKpvrjfJTvae5/D6WOK0S2LSo7vjmo5gCM1DbLUmFqrMTJP+W/0YZNctm7jasWvLuBA==, - } - engines: { node: '>= 18.12.0' } - peerDependencies: - webpack: ^5.0.0 - peerDependenciesMeta: - webpack: + esbuild: optional: true - webpack-dev-server@4.15.2: + ts-loader@9.5.4: resolution: { - integrity: sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==, + integrity: sha512-nCz0rEwunlTZiy6rXFByQU1kVVpCIgUpc/psFiKVrUwrizdnIbRFu8w7bxhUF0X613DYwT4XzrZHpVyMe758hQ==, } - engines: { node: '>= 12.13.0' } - hasBin: true + engines: { node: '>=12.0.0' } peerDependencies: - webpack: ^4.37.0 || ^5.0.0 - webpack-cli: '*' - peerDependenciesMeta: - webpack: - optional: true - webpack-cli: - optional: true + typescript: '*' + webpack: ^5.0.0 - webpack-dev-server@5.0.4: + ts-node@10.9.2: resolution: { - integrity: sha512-dljXhUgx3HqKP2d8J/fUMvhxGhzjeNVarDLcbO/EWMSgRizDkxHQDZQaLFL5VJY9tRBj2Gz+rvCEYYvhbqPHNA==, + integrity: sha512-f0FFpIdcHgn8zcPSbf1dRevwt047YMnaiJM3u2w2RewrB+fob/zePZcrOyQoLMMO7aBIddLcQIEK5dYjkLnGrQ==, } - engines: { node: '>= 18.12.0' } hasBin: true peerDependencies: - webpack: ^5.0.0 - webpack-cli: '*' + '@swc/core': '>=1.2.50' + '@swc/wasm': '>=1.2.50' + '@types/node': '*' + typescript: '>=2.7' peerDependenciesMeta: - webpack: + '@swc/core': optional: true - webpack-cli: + '@swc/wasm': optional: true - webpack-log@2.0.0: - resolution: - { - integrity: sha512-cX8G2vR/85UYG59FgkoMamwHUIkSSlV3bBMRsbxVXVUk2j6NleCKjQ/WE9eYg9WY4w25O9w8wKP4rzNZFmUcUg==, - } - engines: { node: '>= 6' } - - webpack-merge@4.2.2: - resolution: - { - integrity: sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==, - } - - webpack-merge@5.10.0: - resolution: - { - integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==, - } - engines: { node: '>=10.0.0' } - - webpack-merge@6.0.1: + tsconfig-paths@3.15.0: resolution: { - integrity: sha512-hXXvrjtx2PLYx4qruKl+kyRSLc52V+cCvMxRjmKwoA+CBbbF5GfIBtR6kCvl0fYGqTUPKB+1ktVmTHqMOzgCBg==, + integrity: sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==, } - engines: { node: '>=18.0.0' } - webpack-sources@3.2.3: + tsconfig-paths@4.2.0: resolution: { - integrity: sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==, + integrity: sha512-NoZ4roiN7LnbKn9QqE1amc9DJfzvZXxF4xDavcOWt1BPkdx+m+0gJuPM+S0vCe7zTJMYUP0R8pO2XMr+Y8oLIg==, } - engines: { node: '>=10.13.0' } + engines: { node: '>=6' } - webpack-subresource-integrity@5.1.0: + tsconfig@7.0.0: resolution: { - integrity: sha512-sacXoX+xd8r4WKsy9MvH/q/vBtEHr86cpImXwyg74pFIpERKt6FmB8cXpeuh0ZLgclOlHI4Wcll7+R5L02xk9Q==, + integrity: sha512-vZXmzPrL+EmC4T/4rVlT2jNVMWCi/O4DIiSj3UHg1OE5kCKbk4mfrXc6dZksLgRM/TZlKnousKH9bbTazUWRRw==, } - engines: { node: '>= 12' } - peerDependencies: - html-webpack-plugin: '>= 5.0.0-beta.1 < 6' - webpack: ^5.12.0 - peerDependenciesMeta: - html-webpack-plugin: - optional: true - webpack-virtual-modules@0.4.6: + tslib@1.14.1: resolution: { - integrity: sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==, + integrity: sha512-Xni35NKzjgMrwevysHTCArtLDpPvye8zV/0E4EyYn43P7/7qvQwPh9BGkHewbMulVntbigmcT7rdX3BNo9wRJg==, } - webpack@5.91.0: + tslib@2.8.1: resolution: { - integrity: sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==, + integrity: sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==, } - engines: { node: '>=10.13.0' } - hasBin: true - peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - webpack@5.94.0: + tsutils@3.21.0: resolution: { - integrity: sha512-KcsGn50VT+06JH/iunZJedYGUJS5FGjow8wb9c0v5n1Om8O1g4L6LjtfxwlXIATopoQu+vOXXa7gYisWxCoPyg==, + integrity: sha512-mHKK3iUXL+3UF6xL5k0PEhKRUBKPBCv/+RkEOpjRWxxx27KKRBmmA60A9pgOUvMi8GKhRMPEmjBRPzs2W7O1OA==, } - engines: { node: '>=10.13.0' } - hasBin: true + engines: { node: '>= 6' } peerDependencies: - webpack-cli: '*' - peerDependenciesMeta: - webpack-cli: - optional: true - - websocket-driver@0.7.4: - resolution: - { - integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==, - } - engines: { node: '>=0.8.0' } + typescript: '>=2.8.0 || >= 3.2.0-dev || >= 3.3.0-dev || >= 3.4.0-dev || >= 3.5.0-dev || >= 3.6.0-dev || >= 3.6.0-beta || >= 3.7.0-dev || >= 3.7.0-beta' - websocket-extensions@0.1.4: + tuf-js@1.1.7: resolution: { - integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==, + integrity: sha512-i3P9Kgw3ytjELUfpuKVDNBJvk4u5bXL6gskv572mcevPbSKCV3zt3djhmlEQ65yERjIbOSncy7U4cQJaB1CBCg==, } - engines: { node: '>=0.8.0' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - well-known-symbols@2.0.0: + tuf-js@2.2.1: resolution: { - integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==, + integrity: sha512-GwIJau9XaA8nLVbUXsN3IlFi7WmQ48gBUrl3FTkkL/XLu/POhBzfmX9hd33FNMX1qAsfl6ozO1iMmW9NC8YniA==, } - engines: { node: '>=6' } + engines: { node: ^16.14.0 || >=18.0.0 } - whatwg-encoding@1.0.5: + tunnel-agent@0.6.0: resolution: { - integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==, + integrity: sha512-McnNiV1l8RYeY8tBgEpuodCC1mLUdbSN+CYBL7kJsJNInOP8UjDDEwdk6Mw60vdLLrr5NHKZhMAOSrR2NZuQ+w==, } - whatwg-encoding@2.0.0: + tweetnacl@0.14.5: resolution: { - integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==, + integrity: sha512-KXXFFdAbFXY4geFIwoyNK+f5Z1b7swfXABfL7HXCmoIWMKU3dmS26672A4EeQtDzLKy7SXmfBu51JolvEKwtGA==, } - engines: { node: '>=12' } - whatwg-encoding@3.1.1: + type-check@0.4.0: resolution: { - integrity: sha512-6qN4hJdMwfYBtE3YBTTHhoeuUrDBPZmbQaxWAqSALV/MeEnR5z1xd8UKud2RAkFoPkmB+hli1TZSnyi84xz1vQ==, + integrity: sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==, } - engines: { node: '>=18' } + engines: { node: '>= 0.8.0' } - whatwg-fetch@3.6.20: + type-detect@4.0.8: resolution: { - integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==, + integrity: sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==, } + engines: { node: '>=4' } - whatwg-mimetype@2.3.0: + type-detect@4.1.0: resolution: { - integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==, + integrity: sha512-Acylog8/luQ8L7il+geoSxhEkazvkslg7PSNKOX59mbB9cOveP5aq9h74Y7YU8yDpJwetzQQrfIwtf4Wp4LKcw==, } + engines: { node: '>=4' } - whatwg-mimetype@3.0.0: + type-fest@0.13.1: resolution: { - integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==, + integrity: sha512-34R7HTnG0XIJcBSn5XhDd7nNFPRcXYRZrBB2O2jdKqYODldSzBAqzsWoZYYvduky73toYS/ESqxPvkDf/F0XMg==, } - engines: { node: '>=12' } + engines: { node: '>=10' } - whatwg-mimetype@4.0.0: + type-fest@0.16.0: resolution: { - integrity: sha512-QaKxh0eNIi2mE9p2vEdzfagOKHCcj1pJ56EEHGQOVxp8r9/iszLUUV7v89x9O1p/T+NlTM5W7jW6+cz4Fq1YVg==, + integrity: sha512-eaBzG6MxNzEn9kiwvtre90cXaNLkmadMWa1zQMs3XORCXNbsH/OewwbxC5ia9dCxIxnTAsSxXJaa/p5y8DlvJg==, } - engines: { node: '>=18' } + engines: { node: '>=10' } - whatwg-url@10.0.0: + type-fest@0.18.1: resolution: { - integrity: sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==, + integrity: sha512-OIAYXk8+ISY+qTOwkHtKqzAuxchoMiD9Udx+FSGQDuiRR+PJKJHc2NJAXlbhkGwTt/4/nKZxELY1w3ReWOL8mw==, } - engines: { node: '>=12' } + engines: { node: '>=10' } - whatwg-url@11.0.0: + type-fest@0.20.2: resolution: { - integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==, + integrity: sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==, } - engines: { node: '>=12' } + engines: { node: '>=10' } - whatwg-url@12.0.1: + type-fest@0.21.3: resolution: { - integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==, + integrity: sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==, } - engines: { node: '>=14' } + engines: { node: '>=10' } - whatwg-url@14.0.0: + type-fest@0.4.1: resolution: { - integrity: sha512-1lfMEm2IEr7RIV+f4lUNPOqfFL+pO+Xw3fJSqmjX9AbXcXcYOkCe1P6+9VBZB6n94af16NfZf+sSk0JCBZC9aw==, + integrity: sha512-IwzA/LSfD2vC1/YDYMv/zHP4rDF1usCwllsDpbolT3D4fUepIO7f9K70jjmUewU/LmGUKJcwcVtDCpnKk4BPMw==, } - engines: { node: '>=18' } + engines: { node: '>=6' } - whatwg-url@5.0.0: + type-fest@0.6.0: resolution: { - integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, + integrity: sha512-q+MB8nYR1KDLrgr4G5yemftpMC7/QLqVndBmEEdqzmNj5dcFOO4Oo8qlwZE3ULT3+Zim1F8Kq4cBnikNhlCMlg==, } + engines: { node: '>=8' } - whatwg-url@8.7.0: + type-fest@0.8.1: resolution: { - integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==, + integrity: sha512-4dbzIzqvjtgiM5rw1k5rEHtBANKmdudhGyBEajN01fEyhaAIhsoKNy6y7+IN93IfpFtwY9iqi7kD+xwKhQsNJA==, } - engines: { node: '>=10' } + engines: { node: '>=8' } - which-boxed-primitive@1.0.2: + type-is@1.6.18: resolution: { - integrity: sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==, + integrity: sha512-TkRKr9sUTxEH8MdfuCSP7VizJyzRNMjj2J2do2Jr3Kym598JVdEksuzPQCnlFPW4ky9Q+iA+ma9BGm06XQBy8g==, } + engines: { node: '>= 0.6' } - which-builtin-type@1.1.3: + typed-array-buffer@1.0.3: resolution: { - integrity: sha512-YmjsSMDBYsM1CaFiayOVT06+KJeXf0o5M/CAd4o1lTadFAtacTUM49zoYxr/oroopFDfhvN6iEcBxUyc3gvKmw==, + integrity: sha512-nAYYwfY3qnzX30IkA6AQZjVbtK6duGontcQm1WSG1MD94YLqK0515GNApXkoxKOWMusVssAHWLh9SeaoefYFGw==, } engines: { node: '>= 0.4' } - which-collection@1.0.2: + typed-array-byte-length@1.0.3: resolution: { - integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==, + integrity: sha512-BaXgOuIxz8n8pIq3e7Atg/7s+DpiYrxn4vdot3w9KbnBhcRQq6o3xemQdIfynqSeXeDrF32x+WvfzmOjPiY9lg==, } engines: { node: '>= 0.4' } - which-module@2.0.1: + typed-array-byte-offset@1.0.4: resolution: { - integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==, + integrity: sha512-bTlAFB/FBYMcuX81gbL4OcpH5PmlFHqlCCpAl8AlEzMz5k53oNDvN8p1PNOWLEmI2x4orp3raOFB51tv9X+MFQ==, } + engines: { node: '>= 0.4' } - which-typed-array@1.1.15: + typed-array-length@1.0.7: resolution: { - integrity: sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==, + integrity: sha512-3KS2b+kL7fsuk/eJZ7EQdnEmQoaho/r6KUef7hxvltNA5DR8NAUM+8wJMbJyZ4G9/7i3v5zPBIMN5aybAh2/Jg==, } engines: { node: '>= 0.4' } - which@1.3.1: + typedarray-to-buffer@3.1.5: resolution: { - integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==, + integrity: sha512-zdu8XMNEDepKKR+XYOXAVPtWui0ly0NtohUscw+UmaHiAWT8hrV1rr//H6V+0DvJ3OQ19S979M0laLfX8rm82Q==, } - hasBin: true - which@2.0.2: + typedarray@0.0.6: resolution: { - integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, + integrity: sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==, } - engines: { node: '>= 8' } - hasBin: true - which@3.0.1: + typedoc@0.25.13: resolution: { - integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==, + integrity: sha512-pQqiwiJ+Z4pigfOnnysObszLiU3mVLWAExSPf+Mu06G/qsc3wzbuM56SZQvONhHLncLUhYzOVkjFFpFfL5AzhQ==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + engines: { node: '>= 16' } hasBin: true + peerDependencies: + typescript: 4.6.x || 4.7.x || 4.8.x || 4.9.x || 5.0.x || 5.1.x || 5.2.x || 5.3.x || 5.4.x - which@4.0.0: + typescript@4.9.5: resolution: { - integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==, + integrity: sha512-1FXk9E2Hm+QzZQ7z+McJiHL4NW1F2EzMu9Nq9i3zAaGqibafqYwCVU6WyWAuyQRRzOlxou8xZSyXLEN8oKj24g==, } - engines: { node: ^16.13.0 || >=18.0.0 } + engines: { node: '>=4.2.0' } hasBin: true - why-is-node-running@2.3.0: + typescript@5.5.4: resolution: { - integrity: sha512-hUrmaWBdVDcxvYqnyh09zunKzROWjbZTiNy8dBEjkS7ehEDQibXJ7XvlmtbwuTclUiIyN+CyXQD4Vmko8fNm8w==, + integrity: sha512-Mtq29sKDAEYP7aljRgtPOpTvOfbwRWlS6dPRzwjdE+C0R4brX/GUyhHSecbHMFLNBLcJIPt9nl9yG5TZ1weH+Q==, } - engines: { node: '>=8' } + engines: { node: '>=14.17' } hasBin: true - wide-align@1.1.3: - resolution: - { - integrity: sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==, - } - - wide-align@1.1.5: + uglify-js@3.19.3: resolution: { - integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==, + integrity: sha512-v3Xu+yuwBXisp6QYTcH4UbH+xYJXqnq2m/LtQVWKWzYc1iehYnLixoQDN9FH6/j9/oybfd6W9Ghwkl8+UMKTKQ==, } + engines: { node: '>=0.8.0' } + hasBin: true - wildcard@2.0.1: + unbox-primitive@1.1.0: resolution: { - integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==, + integrity: sha512-nWJ91DjeOkej/TA8pXQ3myruKpKEYgqvpw9lz4OPHj/NWFNluYrjbz9j01CJ8yKQd2g4jFoOkINCTW2I5LEEyw==, } + engines: { node: '>= 0.4' } - word-wrap@1.2.5: + unc-path-regex@0.1.2: resolution: { - integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==, + integrity: sha512-eXL4nmJT7oCpkZsHZUOJo8hcX3GbsiDOa0Qu9F646fi8dT3XuSVopVqAcEiVzSKKH7UoDti23wNX3qGFxcW5Qg==, } engines: { node: '>=0.10.0' } - wordwrap@1.0.0: - resolution: - { - integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==, - } - - workerpool@6.1.0: + undici-types@6.21.0: resolution: { - integrity: sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==, + integrity: sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==, } - wrap-ansi@3.0.1: + unicode-canonical-property-names-ecmascript@2.0.1: resolution: { - integrity: sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==, + integrity: sha512-dA8WbNeb2a6oQzAQ55YlT5vQAWGV9WXOsi3SskE3bcCdM0P4SDd+24zS/OCacdRq5BkdsRj9q3Pg6YyQoxIGqg==, } engines: { node: '>=4' } - wrap-ansi@5.1.0: - resolution: - { - integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==, - } - engines: { node: '>=6' } - - wrap-ansi@6.2.0: + unicode-match-property-ecmascript@2.0.0: resolution: { - integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==, + integrity: sha512-5kaZCrbp5mmbz5ulBkDkbY0SsPOjKqVS35VpL9ulMPfSl0J0Xsm+9Evphv9CoIZFwre7aJoa94AY6seMKGVN5Q==, } - engines: { node: '>=8' } + engines: { node: '>=4' } - wrap-ansi@7.0.0: + unicode-match-property-value-ecmascript@2.2.1: resolution: { - integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, + integrity: sha512-JQ84qTuMg4nVkx8ga4A16a1epI9H6uTXAknqxkGF/aFfRLw1xC/Bp24HNLaZhHSkWd3+84t8iXnp1J0kYcZHhg==, } - engines: { node: '>=10' } + engines: { node: '>=4' } - wrap-ansi@8.1.0: + unicode-property-aliases-ecmascript@2.2.0: resolution: { - integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==, + integrity: sha512-hpbDzxUY9BFwX+UeBnxv3Sh1q7HFxj48DTmXchNgRa46lO8uj3/1iEn3MiNUYTg1g9ctIqXCCERn8gYZhHC5lQ==, } - engines: { node: '>=12' } + engines: { node: '>=4' } - wrap-ansi@9.0.0: + unicorn-magic@0.3.0: resolution: { - integrity: sha512-G8ura3S+3Z2G+mkgNRq8dqaFZAuxfsxpBB8OCTGRTCtp+l/v9nbFNmCUP1BZMts3G1142MsZfn6eeUKrr4PD1Q==, + integrity: sha512-+QBBXBCvifc56fsbuxZQ6Sic3wqqc3WWaqxs58gvJrcOuN83HGTCwz3oS5phzU9LthRNE9VrJCFCLUgHeeFnfA==, } engines: { node: '>=18' } - wrappy@1.0.2: + unique-filename@2.0.1: resolution: { - integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, + integrity: sha512-ODWHtkkdx3IAR+veKxFV+VBkUMcN+FaqzUUd7IZzt+0zhDZFPFxhlqwPF3YQvMHx1TD0tdgYl+kuPnJ8E6ql7A==, } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - write-file-atomic@2.4.3: + unique-filename@3.0.0: resolution: { - integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==, + integrity: sha512-afXhuC55wkAmZ0P18QsVE6kp8JaxrEokN2HGIoIVv2ijHQd419H0+6EigAFcIzXeMIkcIkNBpB3L/DXB3cTS/g==, } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - write-file-atomic@3.0.3: + unique-slug@3.0.0: resolution: { - integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==, + integrity: sha512-8EyMynh679x/0gqE9fT9oilG+qEt+ibFyqjuVTsZn1+CMxH+XLlpvr2UZx4nVcCwTpx81nICr2JQFkM+HPLq4w==, } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - write-file-atomic@4.0.1: + unique-slug@4.0.0: resolution: { - integrity: sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==, + integrity: sha512-WrcA6AyEfqDX5bWige/4NQfPZMtASNVxdmWR76WESYQVAACSgWcR6e9i0mofqqBxYFtL4oAxPIptY73/0YE1DQ==, } - engines: { node: ^12.13.0 || ^14.15.0 || >=16 } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - write-file-atomic@5.0.1: + unique-stream@2.4.0: resolution: { - integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==, + integrity: sha512-V6QarSfeSgDipGA9EZdoIzu03ZDlOFkk+FbEP5cwgrZXN3iIkYR91IjU2EnM6rB835kGQsqHX8qncObTXV+6KA==, } - engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - write-json-file@3.2.0: + unique-string@2.0.0: resolution: { - integrity: sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==, + integrity: sha512-uNaeirEPvpZWSgzwsPGtU2zVSTrn/8L5q/IexZmH0eH6SA73CmAA5U4GwORTxQAZs95TAXLNqeLoPPNO5gZfWg==, } - engines: { node: '>=6' } + engines: { node: '>=8' } - write-pkg@4.0.0: + universal-user-agent@6.0.1: resolution: { - integrity: sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==, + integrity: sha512-yCzhz6FN2wU1NiiQRogkTQszlQSlpWaw8SvVegAc+bDxbzHgh1vX8uIe8OYyMH6DwH+sdTJsgMl36+mSMdRJIQ==, } - engines: { node: '>=8' } - ws@7.5.9: + universalify@0.2.0: resolution: { - integrity: sha512-F+P9Jil7UiSKSkppIiD94dN07AwvFixvLIj1Og1Rl9GGMuNipJnV9JzjD6XuqmAeiswGvUmNLjr5cFuXwNS77Q==, + integrity: sha512-CJ1QgKmNg3CwvAv/kOFmtnEN05f0D/cn9QntgNOQlQF9dgvVTHj3t+8JPdjqawCHk7V/KA+fbUqzZ9XWhcqPUg==, } - engines: { node: '>=8.3.0' } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true + engines: { node: '>= 4.0.0' } - ws@8.11.0: + universalify@2.0.1: resolution: { - integrity: sha512-HPG3wQd9sNQoT9xHyNCXoDUa+Xw/VevmY9FoHyQ+g+rrMn4j6FB4np7Z0OhdTgjx6MgQLK7jwSy1YecU1+4Asg==, + integrity: sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==, } - engines: { node: '>=10.0.0' } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: ^5.0.2 - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true + engines: { node: '>= 10.0.0' } - ws@8.17.0: + unpipe@1.0.0: resolution: { - integrity: sha512-uJq6108EgZMAl20KagGkzCKfMEjxmKvZHG7Tlq0Z6nOky7YF7aq4mOx6xK8TJ/i1LeK4Qus7INktacctDgY8Ow==, + integrity: sha512-pjy2bYhSsufwWlKwPc+l3cN7+wuJlK6uz0YdJEOlQDbl6jo/YlPi4mb8agUkVC8BF7V8NuzeyPNqRksA3hztKQ==, } - engines: { node: '>=10.0.0' } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true + engines: { node: '>= 0.8' } - ws@8.18.0: + upath@2.0.1: resolution: { - integrity: sha512-8VbfWfHLbbwu3+N6OKsOMpBdT4kXPDDB9cJk2bJ6mh9ucxdlnNvH1e+roYkKmN9Nxw2yjz7VzeO9oOz2zJ04Pw==, + integrity: sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==, } - engines: { node: '>=10.0.0' } - peerDependencies: - bufferutil: ^4.0.1 - utf-8-validate: '>=5.0.2' - peerDependenciesMeta: - bufferutil: - optional: true - utf-8-validate: - optional: true + engines: { node: '>=4' } - xml-name-validator@3.0.0: + update-browserslist-db@1.1.4: resolution: { - integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==, + integrity: sha512-q0SPT4xyU84saUX+tomz1WLkxUbuaJnR1xWt17M7fJtEJigJeWUNGUqrauFXsHnqev9y9JTRGwk13tFBuKby4A==, } + hasBin: true + peerDependencies: + browserslist: '>= 4.21.0' - xml-name-validator@4.0.0: + uri-js@4.4.1: resolution: { - integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==, + integrity: sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==, } - engines: { node: '>=12' } - xml-name-validator@5.0.0: + urix@0.1.0: resolution: { - integrity: sha512-EvGK8EJ3DhaHfbRlETOWAS5pO9MZITeauHKJyb8wyajUfQUenkIg2MvLDTZ4T/TgIcm3HU0TFBgWWboAZ30UHg==, + integrity: sha512-Am1ousAhSLBeB9cG/7k7r2R0zj50uDRlZHPGbazid5s9rlF1F/QKYObEKSIunSjIOkJZqwRRLpvewjEkM7pSqg==, } - engines: { node: '>=18' } + deprecated: Please see https://github.com/lydell/urix#deprecated - xml2js@0.4.23: + url-parse@1.5.10: resolution: { - integrity: sha512-ySPiMjM0+pLDftHgXY4By0uswI3SPKLDw/i3UXbnO8M/p28zqexCUoPmQFrYD+/1BzhGJSs2i1ERWKJAtiLrug==, + integrity: sha512-WypcfiRhfeUP9vvF0j6rw0J3hrWrw6iZv3+22h6iRMJ/8z1Tj6XfLP4DsUix5MhMPnXpiHDoKyoZ/bdCkwBCiQ==, } - engines: { node: '>=4.0.0' } - xmlbuilder@11.0.1: + util-deprecate@1.0.2: resolution: { - integrity: sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==, + integrity: sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==, } - engines: { node: '>=4.0' } - xmlchars@2.2.0: + utila@0.4.0: resolution: { - integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==, + integrity: sha512-Z0DbgELS9/L/75wZbro8xAnT50pBVFQZ+hUEueGDU5FN51YSCYM+jdxsfCiHjwNP/4LCDD0i/graKpeBnOXKRA==, } - xtend@4.0.2: + utils-merge@1.0.1: resolution: { - integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==, + integrity: sha512-pMZTvIkT1d+TFGvDOqodOclx0QWkkgi6Tdoa8gC8ffGAAqz9pzPTZWAybbsHHoED/ztMtkv/VoYTYyShUn81hA==, } - engines: { node: '>=0.4' } + engines: { node: '>= 0.4.0' } - y18n@4.0.3: + uuid@3.4.0: resolution: { - integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==, + integrity: sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==, } + deprecated: Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details. + hasBin: true - y18n@5.0.8: + uuid@8.3.2: resolution: { - integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, + integrity: sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==, } - engines: { node: '>=10' } + hasBin: true - yallist@2.1.2: + v8-compile-cache-lib@3.0.1: resolution: { - integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==, + integrity: sha512-wa7YjyUGfNZngI/vtK0UHAN+lgDCxBPCylVXGp0zu59Fz5aiGtNXaq3DhIov063MorB+VfufLh3JlF2KdTK3xg==, } - yallist@3.1.1: + v8-compile-cache@2.3.0: resolution: { - integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, + integrity: sha512-l8lCEmLcLYZh4nbunNZvQCJc5pv7+RCwa8q/LdUx8u7lsWvPDKmpodJAJNwkAhJC//dFY48KuIEmjtd4RViDrA==, } - yallist@4.0.0: + v8-to-istanbul@8.1.1: resolution: { - integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, + integrity: sha512-FGtKtv3xIpR6BYhvgH8MI/y78oT7d8Au3ww4QIxymrCtZEh5b8gCw2siywE+puhEmuWKDtmfrvF5UlB298ut3w==, } + engines: { node: '>=10.12.0' } - yaml@1.10.2: + validate-npm-package-license@3.0.4: resolution: { - integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==, + integrity: sha512-DpKm2Ui/xN7/HQKCtpZxoRWBhZ9Z0kqtygG8XCgNQ8ZlDnxuQmWhj566j8fN4Cu3/JmbhsDo7fcAJq4s9h27Ew==, } - engines: { node: '>= 6' } - yargs-parser@13.1.2: + validate-npm-package-name@3.0.0: resolution: { - integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==, + integrity: sha512-M6w37eVCMMouJ9V/sdPGnC5H4uDr73/+xdq0FBLO3TFFX1+7wiUY6Es328NN+y43tmY+doUdN9g9J21vqB7iLw==, } - yargs-parser@18.1.3: + validate-npm-package-name@4.0.0: resolution: { - integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==, + integrity: sha512-mzR0L8ZDktZjpX4OB46KT+56MAhl4EIazWP/+G/HPGuvfdaqg4YsCdtOm6U9+LOFyYDoh4dpnpxZRB9MQQns5Q==, } - engines: { node: '>=6' } + engines: { node: ^12.13.0 || ^14.15.0 || >=16.0.0 } - yargs-parser@20.2.4: + validate-npm-package-name@5.0.1: resolution: { - integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==, + integrity: sha512-OljLrQ9SQdOUqTaQxqL5dEfZWrXExyyWsozYlAWFawPVNuD83igl7uJD2RTkNMbniIYgt8l81eCJGIdQF7avLQ==, } - engines: { node: '>=10' } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - yargs-parser@20.2.9: + value-or-function@3.0.0: resolution: { - integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==, + integrity: sha512-jdBB2FrWvQC/pnPtIqcLsMaQgjhdb6B7tk1MMyTKapox+tQZbdRP4uLxu/JY0t7fbfDCUMnuelzEYv5GsxHhdg==, } - engines: { node: '>=10' } + engines: { node: '>= 0.10' } - yargs-parser@21.1.1: + vary@1.1.2: resolution: { - integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, + integrity: sha512-BNGbWLfd0eUPabhkXUVm0j8uuvREyTh5ovRa/dyow/BqAbZJyC+5fU+IzQOzmAKzYqYRAISoRhdQr3eIZ/PXqg==, } - engines: { node: '>=12' } + engines: { node: '>= 0.8' } - yargs-unparser@2.0.0: + verror@1.10.0: resolution: { - integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==, + integrity: sha512-ZZKSmDAEFOijERBLkmYfJ+vmk3w+7hOLYDNkRCuRuMJGEmqYNCNLyBBFwWKVMhfwaEF3WOd0Zlw86U/WC/+nYw==, } - engines: { node: '>=10' } + engines: { '0': node >=0.6.0 } - yargs@14.0.0: + vinyl-fs@3.0.3: resolution: { - integrity: sha512-ssa5JuRjMeZEUjg7bEL99AwpitxU/zWGAGpdj0di41pOEmJti8NR6kyUIJBkR78DTYNPZOU08luUo0GTHuB+ow==, + integrity: sha512-vIu34EkyNyJxmP0jscNzWBSygh7VWhqun6RmqVfXePrOwi9lhvRs//dOaGOTRUQr4tx7/zd26Tk5WeSVZitgng==, } + engines: { node: '>= 0.10' } - yargs@15.4.1: + vinyl-sourcemap@1.1.0: resolution: { - integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==, + integrity: sha512-NiibMgt6VJGJmyw7vtzhctDcfKch4e4n9TBeoWlirb7FMg9/1Ov9k+A5ZRAtywBpRPiyECvQRQllYM8dECegVA==, } - engines: { node: '>=8' } + engines: { node: '>= 0.10' } - yargs@16.2.0: + vinyl@2.2.1: resolution: { - integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==, + integrity: sha512-LII3bXRFBZLlezoG5FfZVcXflZgWP/4dCwKtxd5ky9+LOtM4CS3bIRQsmR1KMnMW07jpE8fqR2lcxPZ+8sJIcw==, } - engines: { node: '>=10' } + engines: { node: '>= 0.10' } - yargs@17.7.2: + vscode-oniguruma@1.7.0: resolution: { - integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, + integrity: sha512-L9WMGRfrjOhgHSdOYgCt/yRMsXzLDJSL7BPrOZt73gU0iWO4mpqzqQzOz5srxqTvMBaR0XZTSrVWo4j55Rc6cA==, } - engines: { node: '>=12' } - yn@3.1.1: + vscode-textmate@8.0.0: resolution: { - integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==, + integrity: sha512-AFbieoL7a5LMqcnOF04ji+rpXadgOXnZsxQr//r83kLPr7biP7am3g9zbaZIaBGwBRWeSvoMD4mgPdX3e4NWBg==, } - engines: { node: '>=6' } - yocto-queue@0.1.0: + vue-component-type-helpers@2.2.12: resolution: { - integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, + integrity: sha512-YbGqHZ5/eW4SnkPNR44mKVc6ZKQoRs/Rux1sxC6rdwXb4qpbOSYfDr9DsTHolOTGmIKgM9j141mZbBeg05R1pw==, } - engines: { node: '>=10' } - yocto-queue@1.0.0: + vue-eslint-parser@9.4.3: resolution: { - integrity: sha512-9bnSc/HEW2uRy67wc+T8UwauLuPJVn28jb+GtJY16iiKWyvmYJRXVT4UamsAEGQfPohgr2q4Tq0sQbQlxTfi1g==, + integrity: sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==, } - engines: { node: '>=12.20' } + engines: { node: ^14.17.0 || >=16.0.0 } + peerDependencies: + eslint: '>=6.0.0' - yoctocolors-cjs@2.1.2: + vue-hot-reload-api@2.3.4: resolution: { - integrity: sha512-cYVsTjKl8b+FrnidjibDWskAv7UKOfcwaVZdp/it9n1s9fU3IkgDbhdIRKCW4JDsAlECJY0ytoVPT3sK6kideA==, + integrity: sha512-BXq3jwIagosjgNVae6tkHzzIk6a8MHFtzAdwhnV5VlvPTFxDCvIttgSiHWjdGoTJvXtmRu5HacExfdarRcFhog==, } - engines: { node: '>=18' } - z-schema@5.0.5: + vue-jest@5.0.0-alpha.10: resolution: { - integrity: sha512-D7eujBWkLa3p2sIpJA0d1pr7es+a7m0vFAnZLlCEKq/Ij2k0MLi9Br2UPxoxdYystm5K1yeBGzub0FlYUEWj2Q==, + integrity: sha512-iN62cTi4AL0UsgxEyVeJtHG6qXEv+8Ci2wX1vP3b/dAZvyBRmqy5aJHQrP6VCEuio+HgHQ1LAZ+ccM2pouBmlg==, } - engines: { node: '>=8.0.0' } - hasBin: true + peerDependencies: + '@babel/core': 7.x + babel-jest: '>= 24 < 27' + jest: '>= 24 < 27 ' + ts-jest: '>= 24 < 27 ' + typescript: '>= 3.x' + vue: ^3.0.0-0 + peerDependenciesMeta: + ts-jest: + optional: true + typescript: + optional: true - zone.js@0.14.10: + vue-loader@15.11.1: resolution: { - integrity: sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ==, + integrity: sha512-0iw4VchYLePqJfJu9s62ACWUXeSqM30SQqlIftbYWM3C+jpPcEHKSPUZBLjSF9au4HTHQ/naF6OGnO3Q/qGR3Q==, } + peerDependencies: + '@vue/compiler-sfc': ^3.0.8 + cache-loader: '*' + css-loader: '*' + prettier: '*' + vue-template-compiler: '*' + webpack: ^3.0.0 || ^4.1.0 || ^5.0.0-0 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + cache-loader: + optional: true + prettier: + optional: true + vue-template-compiler: + optional: true -snapshots: - '@achrinza/node-ipc@9.2.8': - dependencies: - '@node-ipc/js-queue': 2.0.3 - event-pubsub: 4.3.0 - js-message: 1.0.7 - - '@ampproject/remapping@2.3.0': - dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - - '@angular-devkit/architect@0.1802.12(chokidar@3.6.0)': - dependencies: - '@angular-devkit/core': 18.2.12(chokidar@3.6.0) - rxjs: 7.8.1 - transitivePeerDependencies: - - chokidar - - '@angular-devkit/build-angular@18.2.12(@angular/compiler-cli@18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4))(@types/node@22.13.8)(chokidar@3.6.0)(html-webpack-plugin@5.6.0(webpack@5.91.0))(karma@6.4.3)(ng-packagr@18.2.1(@angular/compiler-cli@18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4))(protractor@7.0.0)(stylus@0.57.0)(typescript@5.5.4)': - dependencies: - '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.1802.12(chokidar@3.6.0) - '@angular-devkit/build-webpack': 0.1802.12(chokidar@3.6.0)(webpack-dev-server@5.0.4(webpack@5.94.0(esbuild@0.23.0)))(webpack@5.94.0(esbuild@0.23.0)) - '@angular-devkit/core': 18.2.12(chokidar@3.6.0) - '@angular/build': 18.2.12(@angular/compiler-cli@18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4))(@types/node@22.13.8)(chokidar@3.6.0)(less@4.2.0)(postcss@8.4.41)(stylus@0.57.0)(terser@5.31.6)(typescript@5.5.4) - '@angular/compiler-cli': 18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4) - '@babel/core': 7.25.2 - '@babel/generator': 7.25.0 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 - '@babel/plugin-transform-async-generator-functions': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-runtime': 7.24.7(@babel/core@7.25.2) - '@babel/preset-env': 7.25.3(@babel/core@7.25.2) - '@babel/runtime': 7.25.0 - '@discoveryjs/json-ext': 0.6.1 - '@ngtools/webpack': 18.2.12(@angular/compiler-cli@18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4))(typescript@5.5.4)(webpack@5.94.0(esbuild@0.23.0)) - '@vitejs/plugin-basic-ssl': 1.1.0(vite@5.4.6(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6)) - ansi-colors: 4.1.3 - autoprefixer: 10.4.20(postcss@8.4.41) - babel-loader: 9.1.3(@babel/core@7.25.2)(webpack@5.94.0(esbuild@0.23.0)) - browserslist: 4.23.0 - copy-webpack-plugin: 12.0.2(webpack@5.94.0(esbuild@0.23.0)) - critters: 0.0.24 - css-loader: 7.1.2(webpack@5.94.0(esbuild@0.23.0)) - esbuild-wasm: 0.23.0 - fast-glob: 3.3.2 - http-proxy-middleware: 3.0.3 - https-proxy-agent: 7.0.5 - istanbul-lib-instrument: 6.0.3 - jsonc-parser: 3.3.1 - karma-source-map-support: 1.4.0 - less: 4.2.0 - less-loader: 12.2.0(less@4.2.0)(webpack@5.94.0(esbuild@0.23.0)) - license-webpack-plugin: 4.0.2(webpack@5.94.0(esbuild@0.23.0)) - loader-utils: 3.3.1 - magic-string: 0.30.11 - mini-css-extract-plugin: 2.9.0(webpack@5.94.0(esbuild@0.23.0)) - mrmime: 2.0.0 - open: 10.1.0 - ora: 5.4.1 - parse5-html-rewriting-stream: 7.0.0 - picomatch: 4.0.2 - piscina: 4.6.1 - postcss: 8.4.41 - postcss-loader: 8.1.1(postcss@8.4.41)(typescript@5.5.4)(webpack@5.94.0(esbuild@0.23.0)) - resolve-url-loader: 5.0.0 - rxjs: 7.8.1 - sass: 1.77.6 - sass-loader: 16.0.0(sass@1.77.6)(webpack@5.94.0(esbuild@0.23.0)) - semver: 7.6.3 - source-map-loader: 5.0.0(webpack@5.94.0(esbuild@0.23.0)) - source-map-support: 0.5.21 - terser: 5.31.6 - tree-kill: 1.2.2 - tslib: 2.6.3 - typescript: 5.5.4 - vite: 5.4.6(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6) - watchpack: 2.4.1 - webpack: 5.94.0(esbuild@0.23.0) - webpack-dev-middleware: 7.4.2(webpack@5.94.0(esbuild@0.23.0)) - webpack-dev-server: 5.0.4(webpack@5.94.0(esbuild@0.23.0)) - webpack-merge: 6.0.1 - webpack-subresource-integrity: 5.1.0(html-webpack-plugin@5.6.0(webpack@5.91.0))(webpack@5.94.0(esbuild@0.23.0)) - optionalDependencies: - esbuild: 0.23.0 - karma: 6.4.3 - ng-packagr: 18.2.1(@angular/compiler-cli@18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4) - protractor: 7.0.0 - transitivePeerDependencies: - - '@rspack/core' - - '@swc/core' - - '@types/node' - - bufferutil - - chokidar - - debug - - html-webpack-plugin - - lightningcss - - node-sass - - sass-embedded - - stylus - - sugarss - - supports-color - - uglify-js - - utf-8-validate - - webpack-cli - - '@angular-devkit/build-webpack@0.1802.12(chokidar@3.6.0)(webpack-dev-server@5.0.4(webpack@5.94.0(esbuild@0.23.0)))(webpack@5.94.0(esbuild@0.23.0))': - dependencies: - '@angular-devkit/architect': 0.1802.12(chokidar@3.6.0) - rxjs: 7.8.1 - webpack: 5.94.0(esbuild@0.23.0) - webpack-dev-server: 5.0.4(webpack@5.94.0(esbuild@0.23.0)) - transitivePeerDependencies: - - chokidar - - '@angular-devkit/core@18.2.12(chokidar@3.6.0)': - dependencies: - ajv: 8.17.1 - ajv-formats: 3.0.1(ajv@8.17.1) - jsonc-parser: 3.3.1 - picomatch: 4.0.2 - rxjs: 7.8.1 - source-map: 0.7.4 - optionalDependencies: - chokidar: 3.6.0 - - '@angular-devkit/schematics@18.2.12(chokidar@3.6.0)': - dependencies: - '@angular-devkit/core': 18.2.12(chokidar@3.6.0) - jsonc-parser: 3.3.1 - magic-string: 0.30.11 - ora: 5.4.1 - rxjs: 7.8.1 - transitivePeerDependencies: - - chokidar - - '@angular-eslint/bundled-angular-compiler@18.4.3': {} - - '@angular-eslint/eslint-plugin-template@18.4.3(@typescript-eslint/types@7.18.0)(@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': - dependencies: - '@angular-eslint/bundled-angular-compiler': 18.4.3 - '@angular-eslint/utils': 18.4.3(@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - aria-query: 5.3.2 - axobject-query: 4.1.0 - eslint: 8.57.0 - typescript: 5.5.4 - - '@angular-eslint/eslint-plugin@18.4.3(@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': - dependencies: - '@angular-eslint/bundled-angular-compiler': 18.4.3 - '@angular-eslint/utils': 18.4.3(@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - eslint: 8.57.0 - typescript: 5.5.4 - - '@angular-eslint/schematics@18.4.3(@typescript-eslint/types@7.18.0)(@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4))(chokidar@3.6.0)(eslint@8.57.0)(typescript@5.5.4)': - dependencies: - '@angular-devkit/core': 18.2.12(chokidar@3.6.0) - '@angular-devkit/schematics': 18.2.12(chokidar@3.6.0) - '@angular-eslint/eslint-plugin': 18.4.3(@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@angular-eslint/eslint-plugin-template': 18.4.3(@typescript-eslint/types@7.18.0)(@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - ignore: 6.0.2 - semver: 7.6.3 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - '@typescript-eslint/types' - - '@typescript-eslint/utils' - - chokidar - - eslint - - typescript - - '@angular-eslint/template-parser@18.4.3(eslint@8.57.0)(typescript@5.5.4)': - dependencies: - '@angular-eslint/bundled-angular-compiler': 18.4.3 - eslint: 8.57.0 - eslint-scope: 8.2.0 - typescript: 5.5.4 - - '@angular-eslint/utils@18.4.3(@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': - dependencies: - '@angular-eslint/bundled-angular-compiler': 18.4.3 - '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.5.4) - eslint: 8.57.0 - typescript: 5.5.4 - - '@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))': - dependencies: - '@angular/core': 18.2.13(rxjs@6.6.7)(zone.js@0.14.10) - tslib: 2.6.2 - - '@angular/build@18.2.12(@angular/compiler-cli@18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4))(@types/node@22.13.8)(chokidar@3.6.0)(less@4.2.0)(postcss@8.4.41)(stylus@0.57.0)(terser@5.31.6)(typescript@5.5.4)': - dependencies: - '@ampproject/remapping': 2.3.0 - '@angular-devkit/architect': 0.1802.12(chokidar@3.6.0) - '@angular/compiler-cli': 18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4) - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.24.7 - '@babel/helper-split-export-declaration': 7.24.7 - '@babel/plugin-syntax-import-attributes': 7.24.7(@babel/core@7.25.2) - '@inquirer/confirm': 3.1.22 - '@vitejs/plugin-basic-ssl': 1.1.0(vite@5.4.6(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6)) - browserslist: 4.23.0 - critters: 0.0.24 - esbuild: 0.23.0 - fast-glob: 3.3.2 - https-proxy-agent: 7.0.5 - listr2: 8.2.4 - lmdb: 3.0.13 - magic-string: 0.30.11 - mrmime: 2.0.0 - parse5-html-rewriting-stream: 7.0.0 - picomatch: 4.0.2 - piscina: 4.6.1 - rollup: 4.22.4 - sass: 1.77.6 - semver: 7.6.3 - typescript: 5.5.4 - vite: 5.4.6(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6) - watchpack: 2.4.1 - optionalDependencies: - less: 4.2.0 - postcss: 8.4.41 - transitivePeerDependencies: - - '@types/node' - - chokidar - - lightningcss - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - '@angular/cdk@18.2.14(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7)': - dependencies: - '@angular/common': 18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7) - '@angular/core': 18.2.13(rxjs@6.6.7)(zone.js@0.14.10) - rxjs: 6.6.7 - tslib: 2.6.2 - optionalDependencies: - parse5: 7.1.2 - - '@angular/cli@18.2.12(chokidar@3.6.0)': - dependencies: - '@angular-devkit/architect': 0.1802.12(chokidar@3.6.0) - '@angular-devkit/core': 18.2.12(chokidar@3.6.0) - '@angular-devkit/schematics': 18.2.12(chokidar@3.6.0) - '@inquirer/prompts': 5.3.8 - '@listr2/prompt-adapter-inquirer': 2.0.15(@inquirer/prompts@5.3.8) - '@schematics/angular': 18.2.12(chokidar@3.6.0) - '@yarnpkg/lockfile': 1.1.0 - ini: 4.1.3 - jsonc-parser: 3.3.1 - listr2: 8.2.4 - npm-package-arg: 11.0.3 - npm-pick-manifest: 9.1.0 - pacote: 18.0.6 - resolve: 1.22.8 - semver: 7.6.3 - symbol-observable: 4.0.0 - yargs: 17.7.2 - transitivePeerDependencies: - - bluebird - - chokidar - - supports-color - - '@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7)': - dependencies: - '@angular/core': 18.2.13(rxjs@6.6.7)(zone.js@0.14.10) - rxjs: 6.6.7 - tslib: 2.6.2 - - '@angular/compiler-cli@18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4)': - dependencies: - '@angular/compiler': 18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)) - '@babel/core': 7.25.2 - '@jridgewell/sourcemap-codec': 1.4.15 - chokidar: 4.0.1 - convert-source-map: 1.9.0 - reflect-metadata: 0.2.2 - semver: 7.6.2 - tslib: 2.6.2 - typescript: 5.5.4 - yargs: 17.7.2 - transitivePeerDependencies: - - supports-color - - '@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))': - dependencies: - tslib: 2.6.2 - optionalDependencies: - '@angular/core': 18.2.13(rxjs@6.6.7)(zone.js@0.14.10) - - '@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)': - dependencies: - rxjs: 6.6.7 - tslib: 2.6.2 - zone.js: 0.14.10 - - '@angular/core@18.2.13(rxjs@7.8.1)(zone.js@0.14.10)': - dependencies: - rxjs: 7.8.1 - tslib: 2.6.2 - zone.js: 0.14.10 - - '@angular/forms@18.2.13(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(@angular/platform-browser@18.2.13(@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(rxjs@6.6.7)': - dependencies: - '@angular/common': 18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7) - '@angular/core': 18.2.13(rxjs@6.6.7)(zone.js@0.14.10) - '@angular/platform-browser': 18.2.13(@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)) - rxjs: 6.6.7 - tslib: 2.6.2 - - '@angular/material@18.2.14(72f5cb6cebd09c53f429f73267659db8)': - dependencies: - '@angular/animations': 18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)) - '@angular/cdk': 18.2.14(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7) - '@angular/common': 18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7) - '@angular/core': 18.2.13(rxjs@6.6.7)(zone.js@0.14.10) - '@angular/forms': 18.2.13(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(@angular/platform-browser@18.2.13(@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(rxjs@6.6.7) - '@angular/platform-browser': 18.2.13(@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)) - rxjs: 6.6.7 - tslib: 2.6.2 - - '@angular/platform-browser-dynamic@18.2.13(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(@angular/platform-browser@18.2.13(@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))': - dependencies: - '@angular/common': 18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7) - '@angular/compiler': 18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)) - '@angular/core': 18.2.13(rxjs@6.6.7)(zone.js@0.14.10) - '@angular/platform-browser': 18.2.13(@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)) - tslib: 2.6.2 - - '@angular/platform-browser@18.2.13(@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))': - dependencies: - '@angular/common': 18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7) - '@angular/core': 18.2.13(rxjs@6.6.7)(zone.js@0.14.10) - tslib: 2.6.2 - optionalDependencies: - '@angular/animations': 18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)) - - '@angular/router@18.2.13(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(@angular/platform-browser@18.2.13(@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(rxjs@6.6.7)': - dependencies: - '@angular/common': 18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7) - '@angular/core': 18.2.13(rxjs@6.6.7)(zone.js@0.14.10) - '@angular/platform-browser': 18.2.13(@angular/animations@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(@angular/common@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10))(rxjs@6.6.7))(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)) - rxjs: 6.6.7 - tslib: 2.6.2 - - '@babel/code-frame@7.24.2': - dependencies: - '@babel/highlight': 7.24.5 - picocolors: 1.0.1 - - '@babel/code-frame@7.26.2': - dependencies: - '@babel/helper-validator-identifier': 7.25.9 - js-tokens: 4.0.0 - picocolors: 1.0.1 - - '@babel/compat-data@7.24.4': {} - - '@babel/compat-data@7.26.2': {} - - '@babel/core@7.24.5': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helpers': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/core@7.25.2': - dependencies: - '@ampproject/remapping': 2.3.0 - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.25.2) - '@babel/helpers': 7.26.0 - '@babel/parser': 7.26.2 - '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - convert-source-map: 2.0.0 - debug: 4.3.4 - gensync: 1.0.0-beta.2 - json5: 2.2.3 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color - - '@babel/generator@7.24.5': - dependencies: - '@babel/types': 7.24.5 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - - '@babel/generator@7.25.0': - dependencies: - '@babel/types': 7.26.0 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 2.5.2 - - '@babel/generator@7.26.2': - dependencies: - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 - jsesc: 3.0.2 - - '@babel/helper-annotate-as-pure@7.22.5': - dependencies: - '@babel/types': 7.26.0 - - '@babel/helper-annotate-as-pure@7.24.7': - dependencies: - '@babel/types': 7.26.0 - - '@babel/helper-annotate-as-pure@7.25.9': - dependencies: - '@babel/types': 7.26.0 - - '@babel/helper-builder-binary-assignment-operator-visitor@7.22.15': - dependencies: - '@babel/types': 7.24.5 - - '@babel/helper-builder-binary-assignment-operator-visitor@7.25.9': - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color - - '@babel/helper-compilation-targets@7.23.6': - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/helper-validator-option': 7.23.5 - browserslist: 4.23.0 - lru-cache: 5.1.1 - semver: 6.3.1 + vue-loader@17.4.2: + resolution: + { + integrity: sha512-yTKOA4R/VN4jqjw4y5HrynFL8AK0Z3/Jt7eOJXEitsm0GMRHDBjCfCiuTiLP7OESvsZYo2pATCWhDqxC5ZrM6w==, + } + peerDependencies: + '@vue/compiler-sfc': '*' + vue: '*' + webpack: ^4.1.0 || ^5.0.0-0 + peerDependenciesMeta: + '@vue/compiler-sfc': + optional: true + vue: + optional: true - '@babel/helper-compilation-targets@7.25.9': - dependencies: - '@babel/compat-data': 7.26.2 - '@babel/helper-validator-option': 7.25.9 - browserslist: 4.24.2 - lru-cache: 5.1.1 - semver: 6.3.1 + vue-style-loader@4.1.3: + resolution: + { + integrity: sha512-sFuh0xfbtpRlKfm39ss/ikqs9AbKCoXZBpHeVZ8Tx650o0k0q/YCM7FRvigtxpACezfq6af+a7JeqVTWvncqDg==, + } - '@babel/helper-create-class-features-plugin@7.24.5(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-member-expression-to-functions': 7.24.5 - '@babel/helper-optimise-call-expression': 7.22.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/helper-split-export-declaration': 7.24.5 - semver: 6.3.1 + vue-template-es2015-compiler@1.9.1: + resolution: + { + integrity: sha512-4gDntzrifFnCEvyoO8PqyJDmguXgVPxKiIxrBKjIowvL9l+N66196+72XVYR8BBf1Uv1Fgt3bGevJ+sEmxfZzw==, + } - '@babel/helper-create-class-features-plugin@7.25.9(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-member-expression-to-functions': 7.25.9 - '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/helper-replace-supers': 7.25.9(@babel/core@7.25.2) - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/traverse': 7.25.9 - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + vue@3.5.25: + resolution: + { + integrity: sha512-YLVdgv2K13WJ6n+kD5owehKtEXwdwXuj2TTyJMsO7pSeKw2bfRNZGjhB7YzrpbMYj5b5QsUebHpOqR3R3ziy/g==, + } + peerDependencies: + typescript: '*' + peerDependenciesMeta: + typescript: + optional: true - '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 6.3.1 + w3c-hr-time@1.0.2: + resolution: + { + integrity: sha512-z8P5DvDNjKDoFIHK7q8r8lackT6l+jo/Ye3HOle7l9nICP9lf1Ci25fy9vHd0JOWewkIFzXIEig3TdKT7JQ5fQ==, + } + deprecated: Use your platform's native performance.now() and performance.timeOrigin. - '@babel/helper-create-regexp-features-plugin@7.22.15(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.22.5 - regexpu-core: 5.3.2 - semver: 6.3.1 + w3c-xmlserializer@2.0.0: + resolution: + { + integrity: sha512-4tzD0mF8iSiMiNs30BiLO3EpfGLZUT2MSX/G+o7ZywDzliWQ3OPtTZ0PTC3B3ca1UAf4cJMHB+2Bf56EriJuRA==, + } + engines: { node: '>=10' } - '@babel/helper-create-regexp-features-plugin@7.25.9(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.25.9 - regexpu-core: 6.2.0 - semver: 6.3.1 + w3c-xmlserializer@3.0.0: + resolution: + { + integrity: sha512-3WFqGEgSXIyGhOmAFtlicJNMjEps8b1MG31NCA0/vOF9+nKMUW1ckhi9cnNHmf88Rzw5V+dwIwsm2C7X8k9aQg==, + } + engines: { node: '>=12' } - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - debug: 4.3.7 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color + w3c-xmlserializer@4.0.0: + resolution: + { + integrity: sha512-d+BFHzbiCx6zGfz0HyQ6Rg69w9k19nviJspaj4yNscGjrHu94sVP+aRm75yEbCh+r2/yR+7q6hux9LVtbuTGBw==, + } + engines: { node: '>=14' } - '@babel/helper-define-polyfill-provider@0.6.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - debug: 4.3.7 - lodash.debounce: 4.0.8 - resolve: 1.22.8 - transitivePeerDependencies: - - supports-color + walk-up-path@1.0.0: + resolution: + { + integrity: sha512-hwj/qMDUEjCU5h0xr90KGCf0tg0/LgJbmOWgrWKYlcJZM7XvquvUJZ0G/HMGr7F7OQMOUuPHWP9JpriinkAlkg==, + } - '@babel/helper-environment-visitor@7.22.20': {} + walker@1.0.8: + resolution: + { + integrity: sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==, + } - '@babel/helper-function-name@7.23.0': - dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.5 + watchpack@2.4.4: + resolution: + { + integrity: sha512-c5EGNOiyxxV5qmTtAB7rbiXxi1ooX1pQKMLX/MIabJjRA0SJBQOjKF+KSVfHkr9U1cADPon0mRiVe/riyaiDUA==, + } + engines: { node: '>=10.13.0' } - '@babel/helper-hoist-variables@7.22.5': - dependencies: - '@babel/types': 7.24.5 + wbuf@1.7.3: + resolution: + { + integrity: sha512-O84QOnr0icsbFGLS0O3bI5FswxzRr8/gHwWkDlQFskhSPryQXvrTMxjxGP4+iWYoauLoBvfDpkrOauZ+0iZpDA==, + } - '@babel/helper-member-expression-to-functions@7.24.5': - dependencies: - '@babel/types': 7.24.5 + wcwidth@1.0.1: + resolution: + { + integrity: sha512-XHPEwS0q6TaxcvG85+8EYkbiCux2XtWG2mkc47Ng2A77BQu9+DqIOJldST4HgPkuea7dvKSj5VgX3P1d4rW8Tg==, + } - '@babel/helper-member-expression-to-functions@7.25.9': - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color + webidl-conversions@3.0.1: + resolution: + { + integrity: sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==, + } - '@babel/helper-module-imports@7.22.15': - dependencies: - '@babel/types': 7.24.5 + webidl-conversions@5.0.0: + resolution: + { + integrity: sha512-VlZwKPCkYKxQgeSbH5EyngOmRp7Ww7I9rQLERETtf5ofd9pGeswWiOtogpEO850jziPRarreGxn5QIiTqpb2wA==, + } + engines: { node: '>=8' } - '@babel/helper-module-imports@7.24.3': - dependencies: - '@babel/types': 7.24.5 + webidl-conversions@6.1.0: + resolution: + { + integrity: sha512-qBIvFLGiBpLjfwmYAaHPXsn+ho5xZnGvyGvsarywGNc8VyQJUMHJ8OBKGGrPER0okBeMDaan4mNBlgBROxuI8w==, + } + engines: { node: '>=10.4' } - '@babel/helper-module-imports@7.25.9': - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color + webidl-conversions@7.0.0: + resolution: + { + integrity: sha512-VwddBukDzu71offAQR975unBIGqfKZpM+8ZX6ySk8nYhVoo5CYaZyzt3YBvYtRtO+aoGlqxPg/B87NGVZ/fu6g==, + } + engines: { node: '>=12' } - '@babel/helper-module-transforms@7.24.5(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-simple-access': 7.24.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/helper-validator-identifier': 7.24.5 + webpack-bundle-analyzer@4.10.2: + resolution: + { + integrity: sha512-vJptkMm9pk5si4Bv922ZbKLV8UTT4zib4FPgXMhgzUny0bfDDkLXAVQs3ly3fS4/TN9ROFtb0NFrm04UXFE/Vw==, + } + engines: { node: '>= 10.13.0' } + hasBin: true - '@babel/helper-module-transforms@7.26.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color + webpack-chain@6.5.1: + resolution: + { + integrity: sha512-7doO/SRtLu8q5WM0s7vPKPWX580qhi0/yBHkOxNkv50f6qB76Zy9o2wRTrrPULqYTvQlVHuvbA8v+G5ayuUDsA==, + } + engines: { node: '>=8' } + deprecated: Package no longer supported. Contact Support at https://www.npmjs.com/support for more info. - '@babel/helper-optimise-call-expression@7.22.5': - dependencies: - '@babel/types': 7.24.5 + webpack-dev-middleware@5.3.4: + resolution: + { + integrity: sha512-BVdTqhhs+0IfoeAf7EoH5WE+exCmqGerHfDM0IL096Px60Tq2Mn9MAbnaGUe6HiMa41KMCYF19gyzZmBcq/o4Q==, + } + engines: { node: '>= 12.13.0' } + peerDependencies: + webpack: ^4.0.0 || ^5.0.0 - '@babel/helper-optimise-call-expression@7.25.9': - dependencies: - '@babel/types': 7.26.0 + webpack-dev-server@4.15.2: + resolution: + { + integrity: sha512-0XavAZbNJ5sDrCbkpWL8mia0o5WPOd2YGtxrEiZkBK9FjLppIUK2TgxK6qGD2P3hUXTJNNPVibrerKcx5WkR1g==, + } + engines: { node: '>= 12.13.0' } + hasBin: true + peerDependencies: + webpack: ^4.37.0 || ^5.0.0 + webpack-cli: '*' + peerDependenciesMeta: + webpack: + optional: true + webpack-cli: + optional: true - '@babel/helper-plugin-utils@7.24.5': {} + webpack-merge@5.10.0: + resolution: + { + integrity: sha512-+4zXKdx7UnO+1jaN4l2lHVD+mFvnlZQP/6ljaJVb4SZiwIKeUnrT5l0gkT8z+n4hKpC+jpOv6O9R+gLtag7pSA==, + } + engines: { node: '>=10.0.0' } - '@babel/helper-plugin-utils@7.25.9': {} + webpack-sources@3.3.3: + resolution: + { + integrity: sha512-yd1RBzSGanHkitROoPFd6qsrxt+oFhg/129YzheDGqeustzX0vTZJZsSsQjVQC4yzBQ56K55XU8gaNCtIzOnTg==, + } + engines: { node: '>=10.13.0' } - '@babel/helper-remap-async-to-generator@7.22.20(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-wrap-function': 7.24.5 + webpack-virtual-modules@0.4.6: + resolution: + { + integrity: sha512-5tyDlKLqPfMqjT3Q9TAqf2YqjwmnUleZwzJi1A5qXnlBCdj2AtOJ6wAWdglTIDOPgOiOrXeBeFcsQ8+aGQ6QbA==, + } - '@babel/helper-remap-async-to-generator@7.25.9(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-wrap-function': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color + webpack@5.103.0: + resolution: + { + integrity: sha512-HU1JOuV1OavsZ+mfigY0j8d1TgQgbZ6M+J75zDkpEAwYeXjWSqrGJtgnPblJjd/mAyTNQ7ygw0MiKOn6etz8yw==, + } + engines: { node: '>=10.13.0' } + hasBin: true + peerDependencies: + webpack-cli: '*' + peerDependenciesMeta: + webpack-cli: + optional: true - '@babel/helper-replace-supers@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-member-expression-to-functions': 7.24.5 - '@babel/helper-optimise-call-expression': 7.22.5 + websocket-driver@0.7.4: + resolution: + { + integrity: sha512-b17KeDIQVjvb0ssuSDF2cYXSg2iztliJ4B9WdsuB6J952qCPKmnVq4DyW5motImXHDC1cBT/1UezrJVsKw5zjg==, + } + engines: { node: '>=0.8.0' } - '@babel/helper-replace-supers@7.25.9(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-member-expression-to-functions': 7.25.9 - '@babel/helper-optimise-call-expression': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color + websocket-extensions@0.1.4: + resolution: + { + integrity: sha512-OqedPIGOfsDlo31UNwYbCFMSaO9m9G/0faIHj5/dZFDMFqPTcx6UwqyOy3COEaEOg/9VsGIpdqn62W5KhoKSpg==, + } + engines: { node: '>=0.8.0' } - '@babel/helper-simple-access@7.24.5': - dependencies: - '@babel/types': 7.24.5 + well-known-symbols@2.0.0: + resolution: + { + integrity: sha512-ZMjC3ho+KXo0BfJb7JgtQ5IBuvnShdlACNkKkdsqBmYw3bPAaJfPeYUo6tLUaT5tG/Gkh7xkpBhKRQ9e7pyg9Q==, + } + engines: { node: '>=6' } - '@babel/helper-simple-access@7.25.9': - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color + whatwg-encoding@1.0.5: + resolution: + { + integrity: sha512-b5lim54JOPN9HtzvK9HFXvBma/rnfFeqsic0hSpjtDbVxR3dJKLc+KB4V6GgiGOvl7CY/KNh8rxSo9DKQrnUEw==, + } - '@babel/helper-skip-transparent-expression-wrappers@7.22.5': - dependencies: - '@babel/types': 7.24.5 + whatwg-encoding@2.0.0: + resolution: + { + integrity: sha512-p41ogyeMUrw3jWclHWTQg1k05DSVXPLcVxRTYsXUk+ZooOCZLcoYgPZ/HL/D/N+uQPOtcp1me1WhBEaX02mhWg==, + } + engines: { node: '>=12' } - '@babel/helper-skip-transparent-expression-wrappers@7.25.9': - dependencies: - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color + whatwg-fetch@3.6.20: + resolution: + { + integrity: sha512-EqhiFU6daOA8kpjOWTL0olhVOF3i7OrFzSYiGsEMB8GcXS+RrzauAERX65xMeNWVqxA6HXH2m69Z9LaKKdisfg==, + } - '@babel/helper-split-export-declaration@7.24.5': - dependencies: - '@babel/types': 7.26.0 + whatwg-mimetype@2.3.0: + resolution: + { + integrity: sha512-M4yMwr6mAnQz76TbJm914+gPpB/nCwvZbJU28cUD6dR004SAxDLOOSUaB1JDRqLtaOV/vi0IC5lEAGFgrjGv/g==, + } - '@babel/helper-split-export-declaration@7.24.7': - dependencies: - '@babel/types': 7.26.0 + whatwg-mimetype@3.0.0: + resolution: + { + integrity: sha512-nt+N2dzIutVRxARx1nghPKGv1xHikU7HKdfafKkLNLindmPU/ch3U31NOCGGA/dmPcmb1VlofO0vnKAcsm0o/Q==, + } + engines: { node: '>=12' } - '@babel/helper-string-parser@7.24.1': {} + whatwg-url@10.0.0: + resolution: + { + integrity: sha512-CLxxCmdUby142H5FZzn4D8ikO1cmypvXVQktsgosNy4a4BHrDHeciBBGZhb0bNoR5/MltoCatso+vFjjGx8t0w==, + } + engines: { node: '>=12' } - '@babel/helper-string-parser@7.25.9': {} + whatwg-url@11.0.0: + resolution: + { + integrity: sha512-RKT8HExMpoYx4igMiVMY83lN6UeITKJlBQ+vR/8ZJ8OCdSiN3RwCq+9gH0+Xzj0+5IrM6i4j/6LuvzbZIQgEcQ==, + } + engines: { node: '>=12' } - '@babel/helper-validator-identifier@7.24.5': {} + whatwg-url@12.0.1: + resolution: + { + integrity: sha512-Ed/LrqB8EPlGxjS+TrsXcpUond1mhccS3pchLhzSgPCnTimUCKj3IZE75pAs5m6heB2U2TMerKFUXheyHY+VDQ==, + } + engines: { node: '>=14' } - '@babel/helper-validator-identifier@7.25.9': {} + whatwg-url@5.0.0: + resolution: + { + integrity: sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==, + } - '@babel/helper-validator-option@7.23.5': {} + whatwg-url@8.7.0: + resolution: + { + integrity: sha512-gAojqb/m9Q8a5IV96E3fHJM70AzCkgt4uXYX2O7EmuyOnLrViCQlsEBmF9UQIu3/aeAIp2U17rtbpZWNntQqdg==, + } + engines: { node: '>=10' } - '@babel/helper-validator-option@7.25.9': {} + which-boxed-primitive@1.1.1: + resolution: + { + integrity: sha512-TbX3mj8n0odCBFVlY8AxkqcHASw3L60jIuF8jFP78az3C2YhmGvqbHBpAjTRH2/xqYunrJ9g1jSyjCjpoWzIAA==, + } + engines: { node: '>= 0.4' } - '@babel/helper-wrap-function@7.24.5': - dependencies: - '@babel/helper-function-name': 7.23.0 - '@babel/template': 7.24.0 - '@babel/types': 7.24.5 + which-builtin-type@1.2.1: + resolution: + { + integrity: sha512-6iBczoX+kDQ7a3+YJBnh3T+KZRxM/iYNPXicqk66/Qfm1b93iu+yOImkg0zHbj5LNOcNv1TEADiZ0xa34B4q6Q==, + } + engines: { node: '>= 0.4' } - '@babel/helper-wrap-function@7.25.9': - dependencies: - '@babel/template': 7.25.9 - '@babel/traverse': 7.25.9 - '@babel/types': 7.26.0 - transitivePeerDependencies: - - supports-color + which-collection@1.0.2: + resolution: + { + integrity: sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==, + } + engines: { node: '>= 0.4' } - '@babel/helpers@7.24.5': - dependencies: - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - transitivePeerDependencies: - - supports-color + which-module@2.0.1: + resolution: + { + integrity: sha512-iBdZ57RDvnOR9AGBhML2vFZf7h8vmBjhoaZqODJBFWHVtKkDmKuHai3cx5PgVMrX5YDNp27AofYbAwctSS+vhQ==, + } - '@babel/helpers@7.26.0': - dependencies: - '@babel/template': 7.25.9 - '@babel/types': 7.26.0 + which-typed-array@1.1.19: + resolution: + { + integrity: sha512-rEvr90Bck4WZt9HHFC4DJMsjvu7x+r6bImz0/BrbWb7A2djJ8hnZMrWnHo9F8ssv0OMErasDhftrfROTyqSDrw==, + } + engines: { node: '>= 0.4' } - '@babel/highlight@7.24.5': - dependencies: - '@babel/helper-validator-identifier': 7.24.5 - chalk: 2.4.2 - js-tokens: 4.0.0 - picocolors: 1.0.1 + which@1.3.1: + resolution: + { + integrity: sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==, + } + hasBin: true - '@babel/parser@7.24.5': - dependencies: - '@babel/types': 7.26.0 + which@2.0.2: + resolution: + { + integrity: sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==, + } + engines: { node: '>= 8' } + hasBin: true - '@babel/parser@7.26.2': - dependencies: - '@babel/types': 7.26.0 + which@3.0.1: + resolution: + { + integrity: sha512-XA1b62dzQzLfaEOSQFTCOd5KFf/1VSzZo7/7TUjnya6u0vGGKzU96UQBZTAThCb2j4/xjBAyii1OhRLJEivHvg==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } + hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.24.5(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 + which@4.0.0: + resolution: + { + integrity: sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==, + } + engines: { node: ^16.13.0 || >=18.0.0 } + hasBin: true - '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.25.9(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color + wide-align@1.1.3: + resolution: + { + integrity: sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==, + } - '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.25.9(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + wide-align@1.1.5: + resolution: + { + integrity: sha512-eDMORYaPNZ4sQIuuYPDHdQvf4gyCF9rEEV/yPxGfwPkRodwEgiMUUXTx/dex+Me0wxx53S+NgUHaP7y3MGlDmg==, + } - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + wildcard@2.0.1: + resolution: + { + integrity: sha512-CC1bOL87PIWSBhDcTrdeLo6eGT7mCFtrg0uIJtqJUFyK+eJnzl8A1niH56uu7KMa5XFrtiV+AQuHO3n7DsHnLQ==, + } - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.25.9(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + word-wrap@1.2.5: + resolution: + { + integrity: sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==, + } + engines: { node: '>=0.10.0' } - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) + wordwrap@1.0.0: + resolution: + { + integrity: sha512-gvVzJFlPycKc5dZN4yPkP8w7Dc37BtP1yczEneOb4uq34pXZcvrtRTmWV8W+Ume+XCxKgbjM+nevkyFPMybd4Q==, + } - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.25.9(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 - '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.25.2) - transitivePeerDependencies: - - supports-color + workerpool@6.1.0: + resolution: + { + integrity: sha512-toV7q9rWNYha963Pl/qyeZ6wG+3nnsyvolaNUS8+R5Wtw6qJPTxIlOP1ZSvcGhEJw+l3HMMmtiNo9Gl61G4GVg==, + } - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 + wrap-ansi@3.0.1: + resolution: + { + integrity: sha512-iXR3tDXpbnTpzjKSylUJRkLuOrEC7hwEB221cgn6wtF8wpmz28puFXAEfPT5zrjM3wahygB//VuWEr1vTkDcNQ==, + } + engines: { node: '>=4' } - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.25.9(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color + wrap-ansi@5.1.0: + resolution: + { + integrity: sha512-QC1/iN/2/RPVJ5jYK8BGttj5z83LmSKmvbvrXPNCLZSEb32KKVDJDl/MOt2N01qU2H/FkzEa9PKto1BqDjtd7Q==, + } + engines: { node: '>=6' } - '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + wrap-ansi@6.2.0: + resolution: + { + integrity: sha512-r6lPcBGxZXlIcymEu7InxDMhdW0KDxpLgoFLcguasxCaJ/SOIZwINatK9KY/tf+ZrlywOKU0UDj3ATXUBfxJXA==, + } + engines: { node: '>=8' } - '@babel/plugin-proposal-decorators@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-decorators': 7.24.1(@babel/core@7.24.5) + wrap-ansi@7.0.0: + resolution: + { + integrity: sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==, + } + engines: { node: '>=10' } - '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) + wrap-ansi@8.1.0: + resolution: + { + integrity: sha512-si7QWI6zUMq56bESFvagtmzMdGOtoxfR+Sez11Mobfc7tm+VkUckk9bW2UeffTGVUbOksxmSw0AA2gs8g71NCQ==, + } + engines: { node: '>=12' } - '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) + wrap-ansi@9.0.2: + resolution: + { + integrity: sha512-42AtmgqjV+X1VpdOfyTGOYRi0/zsoLqtXQckTmqTeybT+BDIbM/Guxo7x3pE2vtpr1ok6xRqM9OpBe+Jyoqyww==, + } + engines: { node: '>=18' } - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 + wrappy@1.0.2: + resolution: + { + integrity: sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==, + } - '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 + write-file-atomic@2.4.3: + resolution: + { + integrity: sha512-GaETH5wwsX+GcnzhPgKcKjJ6M2Cq3/iZp1WyY/X1CSqrW+jVNM9Y7D8EC2sM4ZG/V8wZlSniJnCKWPmBYAucRQ==, + } - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + write-file-atomic@3.0.3: + resolution: + { + integrity: sha512-AvHcyZ5JnSfq3ioSyjrBkH9yW4m7Ayk8/9My/DD9onKeu/94fwrMocemO2QAJFAlnnDN+ZDS+ZjAR5ua1/PV/Q==, + } - '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + write-file-atomic@4.0.1: + resolution: + { + integrity: sha512-nSKUxgAbyioruk6hU87QzVbY279oYT6uiwgDoujth2ju4mJ+TZau7SQBhtbTmUyuNYTuXnSyRn66FV0+eCgcrQ==, + } + engines: { node: ^12.13.0 || ^14.15.0 || >=16 } - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + write-file-atomic@5.0.1: + resolution: + { + integrity: sha512-+QU2zd6OTD8XWIJCbffaiQeH9U73qIqafo1x6V1snCWYGJf6cVE0cDR4D8xRzcEnfI21IFrUPzPGtcPf8AC+Rw==, + } + engines: { node: ^14.17.0 || ^16.13.0 || >=18.0.0 } - '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - optional: true + write-file-atomic@6.0.0: + resolution: + { + integrity: sha512-GmqrO8WJ1NuzJ2DrziEI2o57jKAVIQNf8a18W3nCYU3H7PNWqCCVTeH6/NQE93CIllIgQS98rrmVkYgTX9fFJQ==, + } + engines: { node: ^18.17.0 || >=20.5.0 } - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + write-json-file@3.2.0: + resolution: + { + integrity: sha512-3xZqT7Byc2uORAatYiP3DHUUAVEkNOswEWNs9H5KXiicRTvzYzYqKjYc4G7p+8pltvAw641lVByKVtMpf+4sYQ==, + } + engines: { node: '>=6' } - '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + write-pkg@4.0.0: + resolution: + { + integrity: sha512-v2UQ+50TNf2rNHJ8NyWttfm/EJUBWMJcx6ZTYZr6Qp52uuegWw/lBkCtCbnYZEmPRNL61m+u67dAmGxo+HTULA==, + } + engines: { node: '>=8' } - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + ws@7.5.10: + resolution: + { + integrity: sha512-+dbF1tHwZpXcbOJdVOkzLDxZP1ailvSxM6ZweXTegylPny803bFhA+vqBYw4s31NSAk4S2Qz+AKXK9a4wkdjcQ==, + } + engines: { node: '>=8.3.0' } + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: ^5.0.2 + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + ws@8.18.3: + resolution: + { + integrity: sha512-PEIGCY5tSlUt50cqyMXfCzX+oOPqN0vuGqWzbcJ2xvnkzkq46oOpz7dQaTDBdfICb4N14+GARUDw2XV2N4tvzg==, + } + engines: { node: '>=10.0.0' } + peerDependencies: + bufferutil: ^4.0.1 + utf-8-validate: '>=5.0.2' + peerDependenciesMeta: + bufferutil: + optional: true + utf-8-validate: + optional: true - '@babel/plugin-syntax-decorators@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + xml-name-validator@3.0.0: + resolution: + { + integrity: sha512-A5CUptxDsvxKJEU3yO6DuWBSJz/qizqzJKOMIfUJHETbBw/sFaDxgd6fxm1ewUaM0jZ444Fc5vC5ROYurg/4Pw==, + } - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + xml-name-validator@4.0.0: + resolution: + { + integrity: sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==, + } + engines: { node: '>=12' } - '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + xmlchars@2.2.0: + resolution: + { + integrity: sha512-JZnDKK8B0RCDw84FNdDAIpZK+JuJw+s7Lz8nksI7SIuU3UXJJslUthsi+uWBUYOwPFwW7W7PRLRfUKpxjtjFCw==, + } - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + xtend@4.0.2: + resolution: + { + integrity: sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==, + } + engines: { node: '>=0.4' } - '@babel/plugin-syntax-export-namespace-from@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + y18n@4.0.3: + resolution: + { + integrity: sha512-JKhqTOwSrqNA1NY5lSztJ1GrBiUodLMmIZuLiDaMRJ+itFd+ABVE8XBjOvIWL+rSqNDC74LCSFmlb/U4UZ4hJQ==, + } - '@babel/plugin-syntax-import-assertions@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + y18n@5.0.8: + resolution: + { + integrity: sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==, + } + engines: { node: '>=10' } - '@babel/plugin-syntax-import-assertions@7.26.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + yallist@2.1.2: + resolution: + { + integrity: sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==, + } - '@babel/plugin-syntax-import-attributes@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + yallist@3.1.1: + resolution: + { + integrity: sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==, + } - '@babel/plugin-syntax-import-attributes@7.24.7(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + yallist@4.0.0: + resolution: + { + integrity: sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==, + } - '@babel/plugin-syntax-import-attributes@7.26.0(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + yallist@5.0.0: + resolution: + { + integrity: sha512-YgvUTfwqyc7UXVMrB+SImsVYSmTS8X/tSrtdNZMImM+n7+QTriRXyXim0mBrTXNeqzVF0KWGgHPeiyViFFrNDw==, + } + engines: { node: '>=18' } - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + yaml@1.10.2: + resolution: + { + integrity: sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==, + } + engines: { node: '>= 6' } - '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + yargs-parser@13.1.2: + resolution: + { + integrity: sha512-3lbsNRf/j+A4QuSZfDRA7HRSfWrzO0YjqTJd5kjAq37Zep1CEgaYmrH9Q3GwPiB9cHyd1Y1UwggGhJGoxipbzg==, + } - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + yargs-parser@18.1.3: + resolution: + { + integrity: sha512-o50j0JeToy/4K6OZcaQmW6lyXXKhq7csREXcDwk2omFPJEwUNOVtJKvmDr9EI1fAJZUyZcRF7kxGBWmRXudrCQ==, + } + engines: { node: '>=6' } - '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + yargs-parser@20.2.4: + resolution: + { + integrity: sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==, + } + engines: { node: '>=10' } - '@babel/plugin-syntax-jsx@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + yargs-parser@20.2.9: + resolution: + { + integrity: sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==, + } + engines: { node: '>=10' } - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + yargs-parser@21.1.1: + resolution: + { + integrity: sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==, + } + engines: { node: '>=12' } - '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + yargs-unparser@2.0.0: + resolution: + { + integrity: sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==, + } + engines: { node: '>=10' } - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + yargs@14.0.0: + resolution: + { + integrity: sha512-ssa5JuRjMeZEUjg7bEL99AwpitxU/zWGAGpdj0di41pOEmJti8NR6kyUIJBkR78DTYNPZOU08luUo0GTHuB+ow==, + } - '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + yargs@15.4.1: + resolution: + { + integrity: sha512-aePbxDmcYW++PaqBsJ+HYUFwCdv4LVvdnhBy78E57PIor8/OVvhMrADFFEDh8DHDFRv/O9i3lPhsENjO7QX0+A==, + } + engines: { node: '>=8' } - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + yargs@16.2.0: + resolution: + { + integrity: sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==, + } + engines: { node: '>=10' } - '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + yargs@17.7.2: + resolution: + { + integrity: sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==, + } + engines: { node: '>=12' } - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + yn@3.1.1: + resolution: + { + integrity: sha512-Ux4ygGWsu2c7isFWe8Yu1YluJmqVhxqK2cLXNQA5AcC3QfbGNpM7fu0Y8b/z16pXLnFxZYvWhd3fhBY9DLmC6Q==, + } + engines: { node: '>=6' } - '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + yocto-queue@0.1.0: + resolution: + { + integrity: sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==, + } + engines: { node: '>=10' } - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + yoctocolors-cjs@2.1.3: + resolution: + { + integrity: sha512-U/PBtDf35ff0D8X8D0jfdzHYEPFxAI7jJlxZXwCSez5M3190m+QobIfh+sWDWSHMCWWJN2AWamkegn6vr6YBTw==, + } + engines: { node: '>=18' } - '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + zone.js@0.14.10: + resolution: + { + integrity: sha512-YGAhaO7J5ywOXW6InXNlLmfU194F8lVgu7bRntUF3TiG8Y3nBK0x1UJJuHUP/e8IyihkjCYqhCScpSwnlaSRkQ==, + } - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.24.5)': +snapshots: + '@achrinza/node-ipc@9.2.9': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@node-ipc/js-queue': 2.0.3 + event-pubsub: 4.3.0 + js-message: 1.0.7 - '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.25.2)': + '@angular-devkit/architect@0.1802.21(chokidar@3.6.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + '@angular-devkit/core': 18.2.21(chokidar@3.6.0) + rxjs: 7.8.1 + transitivePeerDependencies: + - chokidar - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.24.5)': + '@angular-devkit/core@18.2.21(chokidar@3.6.0)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + ajv: 8.17.1 + ajv-formats: 3.0.1(ajv@8.17.1) + jsonc-parser: 3.3.1 + picomatch: 4.0.2 + rxjs: 7.8.1 + source-map: 0.7.4 + optionalDependencies: + chokidar: 3.6.0 - '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.25.2)': + '@angular-devkit/schematics@18.2.21(chokidar@3.6.0)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + '@angular-devkit/core': 18.2.21(chokidar@3.6.0) + jsonc-parser: 3.3.1 + magic-string: 0.30.11 + ora: 5.4.1 + rxjs: 7.8.1 + transitivePeerDependencies: + - chokidar - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.24.5)': + '@angular/cli@18.2.21(chokidar@3.6.0)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@angular-devkit/architect': 0.1802.21(chokidar@3.6.0) + '@angular-devkit/core': 18.2.21(chokidar@3.6.0) + '@angular-devkit/schematics': 18.2.21(chokidar@3.6.0) + '@inquirer/prompts': 5.3.8 + '@listr2/prompt-adapter-inquirer': 2.0.15(@inquirer/prompts@5.3.8) + '@schematics/angular': 18.2.21(chokidar@3.6.0) + '@yarnpkg/lockfile': 1.1.0 + ini: 4.1.3 + jsonc-parser: 3.3.1 + listr2: 8.2.4 + npm-package-arg: 11.0.3 + npm-pick-manifest: 9.1.0 + pacote: 18.0.6 + resolve: 1.22.8 + semver: 7.6.3 + symbol-observable: 4.0.0 + yargs: 17.7.2 + transitivePeerDependencies: + - bluebird + - chokidar + - supports-color - '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.25.2)': + '@angular/core@18.2.14(rxjs@7.8.2)(zone.js@0.14.10)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 + rxjs: 7.8.2 + tslib: 2.8.1 + zone.js: 0.14.10 - '@babel/plugin-syntax-typescript@7.24.1(@babel/core@7.24.5)': + '@babel/code-frame@7.27.1': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-validator-identifier': 7.28.5 + js-tokens: 4.0.0 + picocolors: 1.1.1 - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/compat-data@7.28.5': {} - '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.25.2)': + '@babel/core@7.28.5': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) + '@babel/helpers': 7.28.4 + '@babel/parser': 7.28.5 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/remapping': 2.3.5 + convert-source-map: 2.0.0 + debug: 4.4.3 + gensync: 1.0.0-beta.2 + json5: 2.2.3 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-arrow-functions@7.24.1(@babel/core@7.24.5)': + '@babel/generator@7.28.5': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 + jsesc: 3.1.0 - '@babel/plugin-transform-arrow-functions@7.25.9(@babel/core@7.25.2)': + '@babel/helper-annotate-as-pure@7.27.3': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/types': 7.28.5 - '@babel/plugin-transform-async-generator-functions@7.24.3(@babel/core@7.24.5)': + '@babel/helper-compilation-targets@7.27.2': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) + '@babel/compat-data': 7.28.5 + '@babel/helper-validator-option': 7.27.1 + browserslist: 4.28.0 + lru-cache: 5.1.1 + semver: 6.3.1 - '@babel/plugin-transform-async-generator-functions@7.25.0(@babel/core@7.25.2)': + '@babel/helper-create-class-features-plugin@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/traverse': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/traverse': 7.28.5 + semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-async-to-generator@7.24.1(@babel/core@7.24.5)': + '@babel/helper-create-regexp-features-plugin@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-remap-async-to-generator': 7.22.20(@babel/core@7.24.5) + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + regexpu-core: 6.4.0 + semver: 6.3.1 - '@babel/plugin-transform-async-to-generator@7.24.7(@babel/core@7.25.2)': + '@babel/helper-define-polyfill-provider@0.6.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-remap-async-to-generator': 7.25.9(@babel/core@7.25.2) + '@babel/core': 7.28.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + debug: 4.4.3 + lodash.debounce: 4.0.8 + resolve: 1.22.11 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-block-scoped-functions@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-block-scoped-functions@7.25.9(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-block-scoping@7.24.5(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-block-scoping@7.25.9(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-class-properties@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-globals@7.28.0': {} - '@babel/plugin-transform-class-properties@7.25.9(@babel/core@7.25.2)': + '@babel/helper-member-expression-to-functions@7.28.5': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-class-static-block@7.24.4(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) - - '@babel/plugin-transform-class-static-block@7.26.0(@babel/core@7.25.2)': + '@babel/helper-module-imports@7.27.1': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-classes@7.24.5(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) - '@babel/helper-split-export-declaration': 7.24.5 - globals: 11.12.0 - - '@babel/plugin-transform-classes@7.25.9(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-replace-supers': 7.25.9(@babel/core@7.25.2) - '@babel/traverse': 7.25.9 - globals: 11.12.0 + '@babel/helper-module-transforms@7.28.3(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-computed-properties@7.24.1(@babel/core@7.24.5)': + '@babel/helper-optimise-call-expression@7.27.1': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/template': 7.24.0 + '@babel/types': 7.28.5 - '@babel/plugin-transform-computed-properties@7.25.9(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/template': 7.25.9 + '@babel/helper-plugin-utils@7.27.1': {} - '@babel/plugin-transform-destructuring@7.24.5(@babel/core@7.24.5)': + '@babel/helper-remap-async-to-generator@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-wrap-function': 7.28.3 + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-destructuring@7.25.9(@babel/core@7.25.2)': + '@babel/helper-replace-supers@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-member-expression-to-functions': 7.28.5 + '@babel/helper-optimise-call-expression': 7.27.1 + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-dotall-regex@7.24.1(@babel/core@7.24.5)': + '@babel/helper-skip-transparent-expression-wrappers@7.27.1': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-dotall-regex@7.25.9(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/helper-string-parser@7.27.1': {} - '@babel/plugin-transform-duplicate-keys@7.24.1(@babel/core@7.24.5)': + '@babel/helper-validator-identifier@7.28.5': {} + + '@babel/helper-validator-option@7.27.1': {} + + '@babel/helper-wrap-function@7.28.3': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-duplicate-keys@7.25.9(@babel/core@7.25.2)': + '@babel/helpers@7.28.4': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/template': 7.27.2 + '@babel/types': 7.28.5 - '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.25.9(@babel/core@7.25.2)': + '@babel/parser@7.28.5': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/types': 7.28.5 - '@babel/plugin-transform-dynamic-import@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-bugfix-firefox-class-in-computed-class-key@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-dynamic-import@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-bugfix-safari-class-field-initializer-scope@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-exponentiation-operator@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.22.15 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-exponentiation-operator@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-builder-binary-assignment-operator-visitor': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-export-namespace-from@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) - - '@babel/plugin-transform-export-namespace-from@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly@7.28.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-for-of@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-proposal-class-properties@7.18.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-for-of@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-proposal-decorators@7.28.0(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-decorators': 7.27.1(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-function-name@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-proposal-nullish-coalescing-operator@7.18.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.5) - '@babel/plugin-transform-function-name@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-proposal-optional-chaining@7.21.0(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/traverse': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-json-strings@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-proposal-private-property-in-object@7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) + '@babel/core': 7.28.5 - '@babel/plugin-transform-json-strings@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-syntax-async-generators@7.8.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-literals@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-syntax-bigint@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-literals@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-syntax-class-properties@7.12.13(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-logical-assignment-operators@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-syntax-class-static-block@7.14.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-logical-assignment-operators@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-syntax-decorators@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-member-expression-literals@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-syntax-dynamic-import@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-member-expression-literals@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-syntax-import-assertions@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-modules-amd@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-syntax-import-attributes@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-modules-amd@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-syntax-import-meta@7.10.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.9 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-modules-commonjs@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-syntax-json-strings@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-simple-access': 7.24.5 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-modules-commonjs@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-syntax-jsx@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-simple-access': 7.25.9 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-modules-systemjs@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-syntax-logical-assignment-operators@7.10.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-identifier': 7.24.5 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-modules-systemjs@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-syntax-nullish-coalescing-operator@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - '@babel/traverse': 7.25.9 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-modules-umd@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-syntax-numeric-separator@7.10.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-transforms': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-modules-umd@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-syntax-object-rest-spread@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-transforms': 7.26.0(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.9 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-named-capturing-groups-regex@7.22.5(@babel/core@7.24.5)': + '@babel/plugin-syntax-optional-catch-binding@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-named-capturing-groups-regex@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-syntax-optional-chaining@7.8.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-new-target@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-syntax-private-property-in-object@7.14.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-new-target@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-syntax-top-level-await@7.14.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-nullish-coalescing-operator@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-syntax-typescript@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-nullish-coalescing-operator@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-syntax-unicode-sets-regex@7.18.6(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-numeric-separator@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-transform-arrow-functions@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-numeric-separator@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-transform-async-generator-functions@7.28.0(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-object-rest-spread@7.24.5(@babel/core@7.24.5)': + '@babel/plugin-transform-async-to-generator@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-remap-async-to-generator': 7.27.1(@babel/core@7.28.5) + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-object-rest-spread@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-transform-block-scoped-functions@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.25.2) + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-object-super@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-transform-block-scoping@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-replace-supers': 7.24.1(@babel/core@7.24.5) + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-object-super@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-transform-class-properties@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-replace-supers': 7.25.9(@babel/core@7.25.2) + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-optional-catch-binding@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-transform-class-static-block@7.28.3(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-optional-catch-binding@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-transform-classes@7.28.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-globals': 7.28.0 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-optional-chaining@7.24.5(@babel/core@7.24.5)': + '@babel/plugin-transform-computed-properties@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/template': 7.27.2 - '@babel/plugin-transform-optional-chaining@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-transform-destructuring@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-parameters@7.24.5(@babel/core@7.24.5)': + '@babel/plugin-transform-dotall-regex@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-parameters@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-transform-duplicate-keys@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-private-methods@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-transform-duplicate-named-capturing-groups-regex@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-private-methods@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-transform-dynamic-import@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-explicit-resource-management@7.28.0(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/plugin-transform-private-property-in-object@7.24.5(@babel/core@7.24.5)': + '@babel/plugin-transform-exponentiation-operator@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-private-property-in-object@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-transform-export-namespace-from@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-annotate-as-pure': 7.25.9 - '@babel/helper-create-class-features-plugin': 7.25.9(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.9 - transitivePeerDependencies: - - supports-color + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-property-literals@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-transform-for-of@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-property-literals@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-transform-function-name@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/traverse': 7.28.5 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-regenerator@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-transform-json-strings@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - regenerator-transform: 0.15.2 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-regenerator@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-transform-literals@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 - regenerator-transform: 0.15.2 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-reserved-words@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-transform-logical-assignment-operators@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-reserved-words@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-transform-member-expression-literals@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-runtime@7.24.3(@babel/core@7.24.5)': + '@babel/plugin-transform-modules-amd@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-imports': 7.24.3 - '@babel/helper-plugin-utils': 7.24.5 - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5) - semver: 6.3.1 + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-runtime@7.24.7(@babel/core@7.25.2)': + '@babel/plugin-transform-modules-commonjs@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-module-imports': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.25.2) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) - semver: 6.3.1 + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-shorthand-properties@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-shorthand-properties@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-transform-modules-systemjs@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-spread@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-skip-transparent-expression-wrappers': 7.22.5 - - '@babel/plugin-transform-spread@7.25.9(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-skip-transparent-expression-wrappers': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/plugin-transform-sticky-regex@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-transform-modules-umd@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.28.5 + '@babel/helper-module-transforms': 7.28.3(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color - '@babel/plugin-transform-sticky-regex@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-transform-named-capturing-groups-regex@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-template-literals@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-transform-new-target@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-template-literals@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-transform-nullish-coalescing-operator@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typeof-symbol@7.24.5(@babel/core@7.24.5)': + '@babel/plugin-transform-numeric-separator@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/plugin-transform-typeof-symbol@7.25.9(@babel/core@7.25.2)': + '@babel/plugin-transform-object-rest-spread@7.28.4(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-typescript@7.24.5(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-annotate-as-pure': 7.22.5 - '@babel/helper-create-class-features-plugin': 7.24.5(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.5) - - '@babel/plugin-transform-unicode-escapes@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-unicode-escapes@7.25.9(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-unicode-property-regex@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-unicode-property-regex@7.25.9(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-unicode-regex@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-unicode-regex@7.25.9(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/plugin-transform-unicode-sets-regex@7.24.1(@babel/core@7.24.5)': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-create-regexp-features-plugin': 7.22.15(@babel/core@7.24.5) - '@babel/helper-plugin-utils': 7.24.5 - - '@babel/plugin-transform-unicode-sets-regex@7.25.9(@babel/core@7.25.2)': - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-create-regexp-features-plugin': 7.25.9(@babel/core@7.25.2) - '@babel/helper-plugin-utils': 7.25.9 - - '@babel/preset-env@7.24.5(@babel/core@7.24.5)': - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.24.5) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.5) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-import-assertions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-import-attributes': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.5) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-transform-arrow-functions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-async-generator-functions': 7.24.3(@babel/core@7.24.5) - '@babel/plugin-transform-async-to-generator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-block-scoped-functions': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-block-scoping': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-class-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-class-static-block': 7.24.4(@babel/core@7.24.5) - '@babel/plugin-transform-classes': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-computed-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-destructuring': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-dotall-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-duplicate-keys': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-dynamic-import': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-exponentiation-operator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-export-namespace-from': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-for-of': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-function-name': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-json-strings': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-logical-assignment-operators': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-member-expression-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-amd': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-systemjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-umd': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-named-capturing-groups-regex': 7.22.5(@babel/core@7.24.5) - '@babel/plugin-transform-new-target': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-nullish-coalescing-operator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-numeric-separator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-object-rest-spread': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-object-super': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-optional-catch-binding': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-optional-chaining': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-parameters': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-private-methods': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-private-property-in-object': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-property-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-regenerator': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-reserved-words': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-shorthand-properties': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-spread': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-sticky-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-template-literals': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-typeof-symbol': 7.24.5(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-escapes': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-property-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-regex': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-unicode-sets-regex': 7.24.1(@babel/core@7.24.5) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.24.5) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.24.5) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.24.5) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.24.5) - core-js-compat: 3.37.1 - semver: 6.3.1 + '@babel/core': 7.28.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) + '@babel/traverse': 7.28.5 transitivePeerDependencies: - supports-color - '@babel/preset-env@7.25.3(@babel/core@7.25.2)': - dependencies: - '@babel/compat-data': 7.26.2 - '@babel/core': 7.25.2 - '@babel/helper-compilation-targets': 7.25.9 - '@babel/helper-plugin-utils': 7.25.9 - '@babel/helper-validator-option': 7.25.9 - '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.25.2) - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) - '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-export-namespace-from': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-import-assertions': 7.26.0(@babel/core@7.25.2) - '@babel/plugin-syntax-import-attributes': 7.26.0(@babel/core@7.25.2) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) - '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.25.2) - '@babel/plugin-transform-arrow-functions': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-async-generator-functions': 7.25.0(@babel/core@7.25.2) - '@babel/plugin-transform-async-to-generator': 7.24.7(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoped-functions': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-block-scoping': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-class-properties': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-class-static-block': 7.26.0(@babel/core@7.25.2) - '@babel/plugin-transform-classes': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-computed-properties': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-destructuring': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-dotall-regex': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-duplicate-keys': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-dynamic-import': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-exponentiation-operator': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-export-namespace-from': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-for-of': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-function-name': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-json-strings': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-literals': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-logical-assignment-operators': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-member-expression-literals': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-modules-amd': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-modules-commonjs': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-modules-systemjs': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-modules-umd': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-named-capturing-groups-regex': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-new-target': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-nullish-coalescing-operator': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-numeric-separator': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-object-rest-spread': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-object-super': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-optional-catch-binding': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-optional-chaining': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-parameters': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-private-methods': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-private-property-in-object': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-property-literals': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-regenerator': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-reserved-words': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-shorthand-properties': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-spread': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-sticky-regex': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-template-literals': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-typeof-symbol': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-escapes': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-property-regex': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-regex': 7.25.9(@babel/core@7.25.2) - '@babel/plugin-transform-unicode-sets-regex': 7.25.9(@babel/core@7.25.2) - '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.25.2) - babel-plugin-polyfill-corejs2: 0.4.11(@babel/core@7.25.2) - babel-plugin-polyfill-corejs3: 0.10.4(@babel/core@7.25.2) - babel-plugin-polyfill-regenerator: 0.6.2(@babel/core@7.25.2) - core-js-compat: 3.37.1 - semver: 6.3.1 + '@babel/plugin-transform-object-super@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-replace-supers': 7.27.1(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.24.5)': + '@babel/plugin-transform-optional-catch-binding@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/types': 7.24.5 - esutils: 2.0.3 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.25.2)': + '@babel/plugin-transform-optional-chaining@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.25.2 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/types': 7.24.5 - esutils: 2.0.3 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + transitivePeerDependencies: + - supports-color - '@babel/preset-typescript@7.24.1(@babel/core@7.24.5)': + '@babel/plugin-transform-parameters@7.27.7(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/helper-validator-option': 7.23.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-typescript': 7.24.5(@babel/core@7.24.5) + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/regjsgen@0.8.0': {} - - '@babel/runtime-corejs2@7.24.5': + '@babel/plugin-transform-private-methods@7.27.1(@babel/core@7.28.5)': dependencies: - core-js: 2.6.12 - regenerator-runtime: 0.14.1 + '@babel/core': 7.28.5 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color - '@babel/runtime@7.24.5': + '@babel/plugin-transform-private-property-in-object@7.27.1(@babel/core@7.28.5)': dependencies: - regenerator-runtime: 0.14.1 + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + transitivePeerDependencies: + - supports-color - '@babel/runtime@7.24.7': + '@babel/plugin-transform-property-literals@7.27.1(@babel/core@7.28.5)': dependencies: - regenerator-runtime: 0.14.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/runtime@7.25.0': + '@babel/plugin-transform-regenerator@7.28.4(@babel/core@7.28.5)': dependencies: - regenerator-runtime: 0.14.1 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/template@7.24.0': + '@babel/plugin-transform-regexp-modifiers@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/code-frame': 7.24.2 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 - '@babel/template@7.25.9': + '@babel/plugin-transform-reserved-words@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/code-frame': 7.26.2 - '@babel/parser': 7.26.2 - '@babel/types': 7.26.0 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/traverse@7.24.5': + '@babel/plugin-transform-runtime@7.28.5(@babel/core@7.28.5)': dependencies: - '@babel/code-frame': 7.24.2 - '@babel/generator': 7.24.5 - '@babel/helper-environment-visitor': 7.22.20 - '@babel/helper-function-name': 7.23.0 - '@babel/helper-hoist-variables': 7.22.5 - '@babel/helper-split-export-declaration': 7.24.5 - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 - debug: 4.3.4 - globals: 11.12.0 + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.5) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.5) + semver: 6.3.1 transitivePeerDependencies: - supports-color - '@babel/traverse@7.25.9': + '@babel/plugin-transform-shorthand-properties@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/code-frame': 7.26.2 - '@babel/generator': 7.26.2 - '@babel/parser': 7.26.2 - '@babel/template': 7.25.9 - '@babel/types': 7.26.0 - debug: 4.3.7 - globals: 11.12.0 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-spread@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 transitivePeerDependencies: - supports-color - '@babel/types@7.24.5': + '@babel/plugin-transform-sticky-regex@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/helper-string-parser': 7.24.1 - '@babel/helper-validator-identifier': 7.24.5 - to-fast-properties: 2.0.0 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@babel/types@7.26.0': + '@babel/plugin-transform-template-literals@7.27.1(@babel/core@7.28.5)': dependencies: - '@babel/helper-string-parser': 7.25.9 - '@babel/helper-validator-identifier': 7.25.9 - - '@bcoe/v8-coverage@0.2.3': {} + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@colors/colors@1.5.0': {} - - '@cspotcode/source-map-support@0.8.1': + '@babel/plugin-transform-typeof-symbol@7.27.1(@babel/core@7.28.5)': dependencies: - '@jridgewell/trace-mapping': 0.3.9 - - '@date-io/core@3.0.0': {} + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 - '@date-io/dayjs@3.0.0(dayjs@1.10.7)': + '@babel/plugin-transform-typescript@7.28.5(@babel/core@7.28.5)': dependencies: - '@date-io/core': 3.0.0 - optionalDependencies: - dayjs: 1.10.7 - - '@discoveryjs/json-ext@0.5.7': {} + '@babel/core': 7.28.5 + '@babel/helper-annotate-as-pure': 7.27.3 + '@babel/helper-create-class-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-skip-transparent-expression-wrappers': 7.27.1 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) + transitivePeerDependencies: + - supports-color - '@discoveryjs/json-ext@0.6.1': {} + '@babel/plugin-transform-unicode-escapes@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-property-regex@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-regex@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/plugin-transform-unicode-sets-regex@7.27.1(@babel/core@7.28.5)': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-create-regexp-features-plugin': 7.28.5(@babel/core@7.28.5) + '@babel/helper-plugin-utils': 7.27.1 + + '@babel/preset-env@7.28.5(@babel/core@7.28.5)': + dependencies: + '@babel/compat-data': 7.28.5 + '@babel/core': 7.28.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-bugfix-firefox-class-in-computed-class-key': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-bugfix-safari-class-field-initializer-scope': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-bugfix-safari-id-destructuring-collision-in-function-expression': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-bugfix-v8-spread-parameters-in-optional-chaining': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-bugfix-v8-static-class-fields-redefine-readonly': 7.28.3(@babel/core@7.28.5) + '@babel/plugin-proposal-private-property-in-object': 7.21.0-placeholder-for-preset-env.2(@babel/core@7.28.5) + '@babel/plugin-syntax-import-assertions': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-unicode-sets-regex': 7.18.6(@babel/core@7.28.5) + '@babel/plugin-transform-arrow-functions': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-async-generator-functions': 7.28.0(@babel/core@7.28.5) + '@babel/plugin-transform-async-to-generator': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-block-scoped-functions': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-block-scoping': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-class-properties': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-class-static-block': 7.28.3(@babel/core@7.28.5) + '@babel/plugin-transform-classes': 7.28.4(@babel/core@7.28.5) + '@babel/plugin-transform-computed-properties': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-destructuring': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-dotall-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-duplicate-keys': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-duplicate-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-dynamic-import': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-explicit-resource-management': 7.28.0(@babel/core@7.28.5) + '@babel/plugin-transform-exponentiation-operator': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-export-namespace-from': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-for-of': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-function-name': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-json-strings': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-literals': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-logical-assignment-operators': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-member-expression-literals': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-amd': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-systemjs': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-modules-umd': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-named-capturing-groups-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-new-target': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-nullish-coalescing-operator': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-numeric-separator': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-object-rest-spread': 7.28.4(@babel/core@7.28.5) + '@babel/plugin-transform-object-super': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-optional-catch-binding': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-optional-chaining': 7.28.5(@babel/core@7.28.5) + '@babel/plugin-transform-parameters': 7.27.7(@babel/core@7.28.5) + '@babel/plugin-transform-private-methods': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-private-property-in-object': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-property-literals': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-regenerator': 7.28.4(@babel/core@7.28.5) + '@babel/plugin-transform-regexp-modifiers': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-reserved-words': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-shorthand-properties': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-spread': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-sticky-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-template-literals': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-typeof-symbol': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-escapes': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-property-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-regex': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-unicode-sets-regex': 7.27.1(@babel/core@7.28.5) + '@babel/preset-modules': 0.1.6-no-external-plugins(@babel/core@7.28.5) + babel-plugin-polyfill-corejs2: 0.4.14(@babel/core@7.28.5) + babel-plugin-polyfill-corejs3: 0.13.0(@babel/core@7.28.5) + babel-plugin-polyfill-regenerator: 0.6.5(@babel/core@7.28.5) + core-js-compat: 3.47.0 + semver: 6.3.1 + transitivePeerDependencies: + - supports-color - '@emotion/babel-plugin@11.11.0': + '@babel/preset-modules@0.1.6-no-external-plugins(@babel/core@7.28.5)': dependencies: - '@babel/helper-module-imports': 7.24.3 - '@babel/runtime': 7.24.5 - '@emotion/hash': 0.9.1 - '@emotion/memoize': 0.8.1 - '@emotion/serialize': 1.1.4 - babel-plugin-macros: 3.1.0 - convert-source-map: 1.9.0 - escape-string-regexp: 4.0.0 - find-root: 1.1.0 - source-map: 0.5.7 - stylis: 4.2.0 + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/types': 7.28.5 + esutils: 2.0.3 - '@emotion/cache@11.11.0': + '@babel/preset-typescript@7.28.5(@babel/core@7.28.5)': dependencies: - '@emotion/memoize': 0.8.1 - '@emotion/sheet': 1.2.2 - '@emotion/utils': 1.2.1 - '@emotion/weak-memoize': 0.3.1 - stylis: 4.2.0 - - '@emotion/hash@0.9.1': {} + '@babel/core': 7.28.5 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/helper-validator-option': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-typescript': 7.28.5(@babel/core@7.28.5) + transitivePeerDependencies: + - supports-color - '@emotion/is-prop-valid@1.2.2': + '@babel/runtime-corejs3@7.28.4': dependencies: - '@emotion/memoize': 0.8.1 + core-js-pure: 3.47.0 - '@emotion/memoize@0.8.1': {} + '@babel/runtime@7.28.4': {} - '@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2)': + '@babel/template@7.27.2': dependencies: - '@babel/runtime': 7.24.5 - '@emotion/babel-plugin': 11.11.0 - '@emotion/cache': 11.11.0 - '@emotion/serialize': 1.1.4 - '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@17.0.2) - '@emotion/utils': 1.2.1 - '@emotion/weak-memoize': 0.3.1 - hoist-non-react-statics: 3.3.2 - react: 17.0.2 - optionalDependencies: - '@types/react': 17.0.80 + '@babel/code-frame': 7.27.1 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 - '@emotion/serialize@1.1.4': + '@babel/traverse@7.28.5': dependencies: - '@emotion/hash': 0.9.1 - '@emotion/memoize': 0.8.1 - '@emotion/unitless': 0.8.1 - '@emotion/utils': 1.2.1 - csstype: 3.1.3 - - '@emotion/sheet@1.2.2': {} + '@babel/code-frame': 7.27.1 + '@babel/generator': 7.28.5 + '@babel/helper-globals': 7.28.0 + '@babel/parser': 7.28.5 + '@babel/template': 7.27.2 + '@babel/types': 7.28.5 + debug: 4.4.3 + transitivePeerDependencies: + - supports-color - '@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2)': + '@babel/types@7.28.5': dependencies: - '@babel/runtime': 7.24.5 - '@emotion/babel-plugin': 11.11.0 - '@emotion/is-prop-valid': 1.2.2 - '@emotion/react': 11.11.4(@types/react@17.0.80)(react@17.0.2) - '@emotion/serialize': 1.1.4 - '@emotion/use-insertion-effect-with-fallbacks': 1.0.1(react@17.0.2) - '@emotion/utils': 1.2.1 - react: 17.0.2 - optionalDependencies: - '@types/react': 17.0.80 + '@babel/helper-string-parser': 7.27.1 + '@babel/helper-validator-identifier': 7.28.5 - '@emotion/unitless@0.8.1': {} + '@bcoe/v8-coverage@0.2.3': {} - '@emotion/use-insertion-effect-with-fallbacks@1.0.1(react@17.0.2)': + '@cspotcode/source-map-support@0.8.1': dependencies: - react: 17.0.2 - - '@emotion/utils@1.2.1': {} - - '@emotion/weak-memoize@0.3.1': {} - - '@esbuild/aix-ppc64@0.21.5': - optional: true - - '@esbuild/aix-ppc64@0.23.0': - optional: true - - '@esbuild/aix-ppc64@0.23.1': - optional: true - - '@esbuild/android-arm64@0.21.5': - optional: true - - '@esbuild/android-arm64@0.23.0': - optional: true - - '@esbuild/android-arm64@0.23.1': - optional: true - - '@esbuild/android-arm@0.21.5': - optional: true - - '@esbuild/android-arm@0.23.0': - optional: true - - '@esbuild/android-arm@0.23.1': - optional: true - - '@esbuild/android-x64@0.21.5': - optional: true - - '@esbuild/android-x64@0.23.0': - optional: true - - '@esbuild/android-x64@0.23.1': - optional: true - - '@esbuild/darwin-arm64@0.21.5': - optional: true - - '@esbuild/darwin-arm64@0.23.0': - optional: true - - '@esbuild/darwin-arm64@0.23.1': - optional: true - - '@esbuild/darwin-x64@0.21.5': - optional: true - - '@esbuild/darwin-x64@0.23.0': - optional: true - - '@esbuild/darwin-x64@0.23.1': - optional: true - - '@esbuild/freebsd-arm64@0.21.5': - optional: true - - '@esbuild/freebsd-arm64@0.23.0': - optional: true - - '@esbuild/freebsd-arm64@0.23.1': - optional: true - - '@esbuild/freebsd-x64@0.21.5': - optional: true - - '@esbuild/freebsd-x64@0.23.0': - optional: true - - '@esbuild/freebsd-x64@0.23.1': - optional: true - - '@esbuild/linux-arm64@0.21.5': - optional: true - - '@esbuild/linux-arm64@0.23.0': - optional: true - - '@esbuild/linux-arm64@0.23.1': - optional: true - - '@esbuild/linux-arm@0.21.5': - optional: true - - '@esbuild/linux-arm@0.23.0': - optional: true - - '@esbuild/linux-arm@0.23.1': - optional: true - - '@esbuild/linux-ia32@0.21.5': - optional: true - - '@esbuild/linux-ia32@0.23.0': - optional: true - - '@esbuild/linux-ia32@0.23.1': - optional: true - - '@esbuild/linux-loong64@0.21.5': - optional: true - - '@esbuild/linux-loong64@0.23.0': - optional: true - - '@esbuild/linux-loong64@0.23.1': - optional: true - - '@esbuild/linux-mips64el@0.21.5': - optional: true - - '@esbuild/linux-mips64el@0.23.0': - optional: true - - '@esbuild/linux-mips64el@0.23.1': - optional: true - - '@esbuild/linux-ppc64@0.21.5': - optional: true - - '@esbuild/linux-ppc64@0.23.0': - optional: true - - '@esbuild/linux-ppc64@0.23.1': - optional: true - - '@esbuild/linux-riscv64@0.21.5': - optional: true - - '@esbuild/linux-riscv64@0.23.0': - optional: true - - '@esbuild/linux-riscv64@0.23.1': - optional: true - - '@esbuild/linux-s390x@0.21.5': - optional: true - - '@esbuild/linux-s390x@0.23.0': - optional: true - - '@esbuild/linux-s390x@0.23.1': - optional: true - - '@esbuild/linux-x64@0.21.5': - optional: true - - '@esbuild/linux-x64@0.23.0': - optional: true - - '@esbuild/linux-x64@0.23.1': - optional: true - - '@esbuild/netbsd-x64@0.21.5': - optional: true - - '@esbuild/netbsd-x64@0.23.0': - optional: true - - '@esbuild/netbsd-x64@0.23.1': - optional: true - - '@esbuild/openbsd-arm64@0.23.0': - optional: true - - '@esbuild/openbsd-arm64@0.23.1': - optional: true - - '@esbuild/openbsd-x64@0.21.5': - optional: true - - '@esbuild/openbsd-x64@0.23.0': - optional: true - - '@esbuild/openbsd-x64@0.23.1': - optional: true - - '@esbuild/sunos-x64@0.21.5': - optional: true - - '@esbuild/sunos-x64@0.23.0': - optional: true - - '@esbuild/sunos-x64@0.23.1': - optional: true - - '@esbuild/win32-arm64@0.21.5': - optional: true - - '@esbuild/win32-arm64@0.23.0': - optional: true - - '@esbuild/win32-arm64@0.23.1': - optional: true - - '@esbuild/win32-ia32@0.21.5': - optional: true - - '@esbuild/win32-ia32@0.23.0': - optional: true - - '@esbuild/win32-ia32@0.23.1': - optional: true - - '@esbuild/win32-x64@0.21.5': - optional: true - - '@esbuild/win32-x64@0.23.0': - optional: true + '@jridgewell/trace-mapping': 0.3.9 - '@esbuild/win32-x64@0.23.1': - optional: true + '@discoveryjs/json-ext@0.5.7': {} - '@eslint-community/eslint-utils@4.4.0(eslint@8.57.0)': + '@eslint-community/eslint-utils@4.9.0(eslint@8.57.1)': dependencies: - eslint: 8.57.0 + eslint: 8.57.1 eslint-visitor-keys: 3.4.3 - '@eslint-community/regexpp@4.10.0': {} + '@eslint-community/regexpp@4.12.2': {} '@eslint/eslintrc@2.1.4': dependencies: ajv: 6.12.6 - debug: 4.3.4 + debug: 4.4.3 espree: 9.6.1 - globals: 13.24.0 - ignore: 5.3.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - minimatch: 3.1.2 - strip-json-comments: 3.1.1 - transitivePeerDependencies: - - supports-color - - '@eslint/js@8.57.0': {} - - '@floating-ui/core@1.6.2': - dependencies: - '@floating-ui/utils': 0.2.2 - - '@floating-ui/dom@1.6.5': - dependencies: - '@floating-ui/core': 1.6.2 - '@floating-ui/utils': 0.2.2 - - '@floating-ui/react-dom@2.1.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': - dependencies: - '@floating-ui/dom': 1.6.5 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - - '@floating-ui/utils@0.2.2': {} + globals: 13.24.0 + ignore: 5.3.2 + import-fresh: 3.3.1 + js-yaml: 4.1.1 + minimatch: 3.1.2 + strip-json-comments: 3.1.1 + transitivePeerDependencies: + - supports-color - '@fortawesome/fontawesome-free@6.6.0': {} + '@eslint/js@8.57.1': {} '@gar/promisify@1.1.3': {} @@ -24353,10 +15370,10 @@ snapshots: dependencies: '@hapi/hoek': 9.3.0 - '@humanwhocodes/config-array@0.11.14': + '@humanwhocodes/config-array@0.13.0': dependencies: '@humanwhocodes/object-schema': 2.0.3 - debug: 4.3.7 + debug: 4.4.3 minimatch: 3.1.2 transitivePeerDependencies: - supports-color @@ -24370,15 +15387,10 @@ snapshots: '@inquirer/checkbox@2.5.0': dependencies: '@inquirer/core': 9.2.1 - '@inquirer/figures': 1.0.8 + '@inquirer/figures': 1.0.15 '@inquirer/type': 1.5.5 ansi-escapes: 4.3.2 - yoctocolors-cjs: 2.1.2 - - '@inquirer/confirm@3.1.22': - dependencies: - '@inquirer/core': 9.2.1 - '@inquirer/type': 1.5.5 + yoctocolors-cjs: 2.1.3 '@inquirer/confirm@3.2.0': dependencies: @@ -24387,10 +15399,10 @@ snapshots: '@inquirer/core@9.2.1': dependencies: - '@inquirer/figures': 1.0.8 + '@inquirer/figures': 1.0.15 '@inquirer/type': 2.0.0 '@types/mute-stream': 0.0.4 - '@types/node': 22.13.8 + '@types/node': 22.19.1 '@types/wrap-ansi': 3.0.0 ansi-escapes: 4.3.2 cli-width: 4.1.0 @@ -24398,7 +15410,7 @@ snapshots: signal-exit: 4.1.0 strip-ansi: 6.0.1 wrap-ansi: 6.2.0 - yoctocolors-cjs: 2.1.2 + yoctocolors-cjs: 2.1.3 '@inquirer/editor@2.2.0': dependencies: @@ -24410,9 +15422,16 @@ snapshots: dependencies: '@inquirer/core': 9.2.1 '@inquirer/type': 1.5.5 - yoctocolors-cjs: 2.1.2 + yoctocolors-cjs: 2.1.3 + + '@inquirer/external-editor@1.0.3(@types/node@22.19.1)': + dependencies: + chardet: 2.1.1 + iconv-lite: 0.7.0 + optionalDependencies: + '@types/node': 22.19.1 - '@inquirer/figures@1.0.8': {} + '@inquirer/figures@1.0.15': {} '@inquirer/input@2.3.0': dependencies: @@ -24447,22 +15466,22 @@ snapshots: dependencies: '@inquirer/core': 9.2.1 '@inquirer/type': 1.5.5 - yoctocolors-cjs: 2.1.2 + yoctocolors-cjs: 2.1.3 '@inquirer/search@1.1.0': dependencies: '@inquirer/core': 9.2.1 - '@inquirer/figures': 1.0.8 + '@inquirer/figures': 1.0.15 '@inquirer/type': 1.5.5 - yoctocolors-cjs: 2.1.2 + yoctocolors-cjs: 2.1.3 '@inquirer/select@2.5.0': dependencies: '@inquirer/core': 9.2.1 - '@inquirer/figures': 1.0.8 + '@inquirer/figures': 1.0.15 '@inquirer/type': 1.5.5 ansi-escapes: 4.3.2 - yoctocolors-cjs: 2.1.2 + yoctocolors-cjs: 2.1.3 '@inquirer/type@1.5.5': dependencies: @@ -24476,11 +15495,15 @@ snapshots: dependencies: string-width: 5.1.2 string-width-cjs: string-width@4.2.3 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 strip-ansi-cjs: strip-ansi@6.0.1 wrap-ansi: 8.1.0 wrap-ansi-cjs: wrap-ansi@7.0.0 + '@isaacs/fs-minipass@4.0.1': + dependencies: + minipass: 7.1.2 + '@isaacs/string-locale-compare@1.1.0': {} '@istanbuljs/load-nyc-config@1.1.0': @@ -24488,7 +15511,7 @@ snapshots: camelcase: 5.3.1 find-up: 4.1.0 get-package-type: 0.1.0 - js-yaml: 3.14.1 + js-yaml: 3.14.2 resolve-from: 5.0.0 '@istanbuljs/nyc-config-typescript@1.0.2(nyc@15.1.0)': @@ -24501,27 +15524,27 @@ snapshots: '@jest/console@27.5.1': dependencies: '@jest/types': 27.5.1 - '@types/node': 22.13.8 + '@types/node': 22.19.1 chalk: 4.1.2 jest-message-util: 27.5.1 jest-util: 27.5.1 slash: 3.0.0 - '@jest/core@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4))': + '@jest/core@27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4))': dependencies: '@jest/console': 27.5.1 - '@jest/reporters': 27.5.1(node-notifier@8.0.2) + '@jest/reporters': 27.5.1 '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 22.13.8 + '@types/node': 22.19.1 ansi-escapes: 4.3.2 chalk: 4.1.2 emittery: 0.8.1 exit: 0.1.2 graceful-fs: 4.2.11 jest-changed-files: 27.5.1 - jest-config: 27.5.1(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)) + jest-config: 27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4)) jest-haste-map: 27.5.1 jest-message-util: 27.5.1 jest-regex-util: 27.5.1 @@ -24533,12 +15556,10 @@ snapshots: jest-util: 27.5.1 jest-validate: 27.5.1 jest-watcher: 27.5.1 - micromatch: 4.0.7 + micromatch: 4.0.8 rimraf: 3.0.2 slash: 3.0.0 strip-ansi: 6.0.1 - optionalDependencies: - node-notifier: 8.0.2 transitivePeerDependencies: - bufferutil - canvas @@ -24550,14 +15571,14 @@ snapshots: dependencies: '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 22.13.8 + '@types/node': 22.19.1 jest-mock: 27.5.1 '@jest/fake-timers@27.5.1': dependencies: '@jest/types': 27.5.1 '@sinonjs/fake-timers': 8.1.0 - '@types/node': 22.13.8 + '@types/node': 22.19.1 jest-message-util: 27.5.1 jest-mock: 27.5.1 jest-util: 27.5.1 @@ -24568,16 +15589,16 @@ snapshots: '@jest/types': 27.5.1 expect: 27.5.1 - '@jest/reporters@27.5.1(node-notifier@8.0.2)': + '@jest/reporters@27.5.1': dependencies: '@bcoe/v8-coverage': 0.2.3 '@jest/console': 27.5.1 '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 22.13.8 + '@types/node': 22.19.1 chalk: 4.1.2 - collect-v8-coverage: 1.0.2 + collect-v8-coverage: 1.0.3 exit: 0.1.2 glob: 7.2.3 graceful-fs: 4.2.11 @@ -24585,7 +15606,7 @@ snapshots: istanbul-lib-instrument: 5.2.1 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 + istanbul-reports: 3.2.0 jest-haste-map: 27.5.1 jest-resolve: 27.5.1 jest-util: 27.5.1 @@ -24595,8 +15616,6 @@ snapshots: string-length: 4.0.2 terminal-link: 2.1.1 v8-to-istanbul: 8.1.1 - optionalDependencies: - node-notifier: 8.0.2 transitivePeerDependencies: - supports-color @@ -24615,7 +15634,7 @@ snapshots: '@jest/console': 27.5.1 '@jest/types': 27.5.1 '@types/istanbul-lib-coverage': 2.0.6 - collect-v8-coverage: 1.0.2 + collect-v8-coverage: 1.0.3 '@jest/test-sequencer@27.5.1': dependencies: @@ -24628,7 +15647,7 @@ snapshots: '@jest/transform@27.5.1': dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.28.5 '@jest/types': 27.5.1 babel-plugin-istanbul: 6.1.1 chalk: 4.1.2 @@ -24638,8 +15657,8 @@ snapshots: jest-haste-map: 27.5.1 jest-regex-util: 27.5.1 jest-util: 27.5.1 - micromatch: 4.0.7 - pirates: 4.0.6 + micromatch: 4.0.8 + pirates: 4.0.7 slash: 3.0.0 source-map: 0.6.1 write-file-atomic: 3.0.3 @@ -24650,60 +15669,44 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.6 '@types/istanbul-reports': 3.0.4 - '@types/node': 22.13.8 - '@types/yargs': 16.0.9 + '@types/node': 22.19.1 + '@types/yargs': 16.0.11 chalk: 4.1.2 - '@jridgewell/gen-mapping@0.3.5': + '@jridgewell/gen-mapping@0.3.13': dependencies: - '@jridgewell/set-array': 1.2.1 - '@jridgewell/sourcemap-codec': 1.4.15 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/sourcemap-codec': 1.5.5 + '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/resolve-uri@3.1.2': {} + '@jridgewell/remapping@2.3.5': + dependencies: + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/set-array@1.2.1': {} + '@jridgewell/resolve-uri@3.1.2': {} - '@jridgewell/source-map@0.3.6': + '@jridgewell/source-map@0.3.11': dependencies: - '@jridgewell/gen-mapping': 0.3.5 - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/gen-mapping': 0.3.13 + '@jridgewell/trace-mapping': 0.3.31 - '@jridgewell/sourcemap-codec@1.4.15': {} + '@jridgewell/sourcemap-codec@1.5.5': {} - '@jridgewell/sourcemap-codec@1.5.0': {} - - '@jridgewell/trace-mapping@0.3.25': + '@jridgewell/trace-mapping@0.3.31': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.4.15 + '@jridgewell/sourcemap-codec': 1.5.5 '@jridgewell/trace-mapping@0.3.9': dependencies: '@jridgewell/resolve-uri': 3.1.2 - '@jridgewell/sourcemap-codec': 1.5.0 - - '@jsonjoy.com/base64@1.1.2(tslib@2.6.3)': - dependencies: - tslib: 2.6.3 - - '@jsonjoy.com/json-pack@1.1.0(tslib@2.6.3)': - dependencies: - '@jsonjoy.com/base64': 1.1.2(tslib@2.6.3) - '@jsonjoy.com/util': 1.5.0(tslib@2.6.3) - hyperdyperid: 1.2.0 - thingies: 1.21.0(tslib@2.6.3) - tslib: 2.6.3 - - '@jsonjoy.com/util@1.5.0(tslib@2.6.3)': - dependencies: - tslib: 2.6.3 + '@jridgewell/sourcemap-codec': 1.5.5 '@leichtgewicht/ip-codec@2.0.5': {} '@lerna/child-process@6.6.2': dependencies: - chalk: 4.1.2 + chalk: 4.1.0 execa: 5.0.0 strong-log-transformer: 2.1.0 @@ -24717,7 +15720,7 @@ snapshots: p-reduce: 2.1.0 pacote: 15.1.1 pify: 5.0.0 - semver: 7.6.2 + semver: 7.7.3 slash: 3.0.0 validate-npm-package-license: 3.0.4 validate-npm-package-name: 4.0.0 @@ -24801,271 +15804,19 @@ snapshots: '@inquirer/prompts': 5.3.8 '@inquirer/type': 1.5.5 - '@lmdb/lmdb-darwin-arm64@3.0.13': - optional: true - - '@lmdb/lmdb-darwin-x64@3.0.13': - optional: true - - '@lmdb/lmdb-linux-arm64@3.0.13': - optional: true - - '@lmdb/lmdb-linux-arm@3.0.13': - optional: true - - '@lmdb/lmdb-linux-x64@3.0.13': - optional: true - - '@lmdb/lmdb-win32-x64@3.0.13': - optional: true - - '@mapbox/node-pre-gyp@1.0.11(encoding@0.1.13)': + '@mapbox/node-pre-gyp@2.0.0(encoding@0.1.13)': dependencies: - detect-libc: 2.0.3 - https-proxy-agent: 5.0.1 - make-dir: 3.1.0 + consola: 3.4.2 + detect-libc: 2.1.2 + https-proxy-agent: 7.0.6 node-fetch: 2.7.0(encoding@0.1.13) - nopt: 5.0.0 - npmlog: 5.0.1 - rimraf: 3.0.2 - semver: 7.6.2 - tar: 6.2.1 + nopt: 8.1.0 + semver: 7.7.3 + tar: 7.5.2 transitivePeerDependencies: - encoding - supports-color - '@mdi/font@7.4.47': {} - - '@microsoft/api-extractor-model@7.28.13(@types/node@22.13.8)': - dependencies: - '@microsoft/tsdoc': 0.14.2 - '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 4.0.2(@types/node@22.13.8) - transitivePeerDependencies: - - '@types/node' - - '@microsoft/api-extractor@7.43.0(@types/node@22.13.8)': - dependencies: - '@microsoft/api-extractor-model': 7.28.13(@types/node@22.13.8) - '@microsoft/tsdoc': 0.14.2 - '@microsoft/tsdoc-config': 0.16.2 - '@rushstack/node-core-library': 4.0.2(@types/node@22.13.8) - '@rushstack/rig-package': 0.5.2 - '@rushstack/terminal': 0.10.0(@types/node@22.13.8) - '@rushstack/ts-command-line': 4.19.1(@types/node@22.13.8) - lodash: 4.17.21 - minimatch: 3.0.5 - resolve: 1.22.8 - semver: 7.5.4 - source-map: 0.6.1 - typescript: 5.4.2 - transitivePeerDependencies: - - '@types/node' - - '@microsoft/tsdoc-config@0.16.2': - dependencies: - '@microsoft/tsdoc': 0.14.2 - ajv: 6.12.6 - jju: 1.4.0 - resolve: 1.19.0 - - '@microsoft/tsdoc@0.14.2': {} - - '@msgpackr-extract/msgpackr-extract-darwin-arm64@3.0.3': - optional: true - - '@msgpackr-extract/msgpackr-extract-darwin-x64@3.0.3': - optional: true - - '@msgpackr-extract/msgpackr-extract-linux-arm64@3.0.3': - optional: true - - '@msgpackr-extract/msgpackr-extract-linux-arm@3.0.3': - optional: true - - '@msgpackr-extract/msgpackr-extract-linux-x64@3.0.3': - optional: true - - '@msgpackr-extract/msgpackr-extract-win32-x64@3.0.3': - optional: true - - '@mui/base@5.0.0-beta.40(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': - dependencies: - '@babel/runtime': 7.24.7 - '@floating-ui/react-dom': 2.1.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@mui/types': 7.2.14(@types/react@17.0.80) - '@mui/utils': 5.15.20(@types/react@17.0.80)(react@17.0.2) - '@popperjs/core': 2.11.8 - clsx: 2.1.1 - prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - optionalDependencies: - '@types/react': 17.0.80 - - '@mui/base@5.0.0-beta.6(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': - dependencies: - '@babel/runtime': 7.24.5 - '@emotion/is-prop-valid': 1.2.2 - '@mui/types': 7.2.14(@types/react@17.0.80) - '@mui/utils': 5.15.14(@types/react@17.0.80)(react@17.0.2) - '@popperjs/core': 2.11.8 - clsx: 1.2.1 - prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - react-is: 18.3.1 - optionalDependencies: - '@types/react': 17.0.80 - - '@mui/core-downloads-tracker@5.15.18': {} - - '@mui/icons-material@5.15.18(@mui/material@5.13.7(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(@types/react@17.0.80)(react@17.0.2)': - dependencies: - '@babel/runtime': 7.24.5 - '@mui/material': 5.13.7(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - react: 17.0.2 - optionalDependencies: - '@types/react': 17.0.80 - - '@mui/material@5.13.7(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': - dependencies: - '@babel/runtime': 7.24.5 - '@mui/base': 5.0.0-beta.6(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@mui/core-downloads-tracker': 5.15.18 - '@mui/system': 5.15.15(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2) - '@mui/types': 7.2.14(@types/react@17.0.80) - '@mui/utils': 5.15.14(@types/react@17.0.80)(react@17.0.2) - '@types/react-transition-group': 4.4.10 - clsx: 1.2.1 - csstype: 3.1.3 - prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - react-is: 18.3.1 - react-transition-group: 4.4.5(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - optionalDependencies: - '@emotion/react': 11.11.4(@types/react@17.0.80)(react@17.0.2) - '@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2) - '@types/react': 17.0.80 - - '@mui/private-theming@5.15.14(@types/react@17.0.80)(react@17.0.2)': - dependencies: - '@babel/runtime': 7.24.5 - '@mui/utils': 5.15.14(@types/react@17.0.80)(react@17.0.2) - prop-types: 15.8.1 - react: 17.0.2 - optionalDependencies: - '@types/react': 17.0.80 - - '@mui/private-theming@5.15.20(@types/react@17.0.80)(react@17.0.2)': - dependencies: - '@babel/runtime': 7.24.7 - '@mui/utils': 5.15.20(@types/react@17.0.80)(react@17.0.2) - prop-types: 15.8.1 - react: 17.0.2 - optionalDependencies: - '@types/react': 17.0.80 - - '@mui/styled-engine@5.15.14(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(react@17.0.2)': - dependencies: - '@babel/runtime': 7.24.5 - '@emotion/cache': 11.11.0 - csstype: 3.1.3 - prop-types: 15.8.1 - react: 17.0.2 - optionalDependencies: - '@emotion/react': 11.11.4(@types/react@17.0.80)(react@17.0.2) - '@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2) - - '@mui/system@5.15.15(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2)': - dependencies: - '@babel/runtime': 7.24.5 - '@mui/private-theming': 5.15.14(@types/react@17.0.80)(react@17.0.2) - '@mui/styled-engine': 5.15.14(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(react@17.0.2) - '@mui/types': 7.2.14(@types/react@17.0.80) - '@mui/utils': 5.15.14(@types/react@17.0.80)(react@17.0.2) - clsx: 2.1.1 - csstype: 3.1.3 - prop-types: 15.8.1 - react: 17.0.2 - optionalDependencies: - '@emotion/react': 11.11.4(@types/react@17.0.80)(react@17.0.2) - '@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2) - '@types/react': 17.0.80 - - '@mui/system@5.15.20(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2)': - dependencies: - '@babel/runtime': 7.24.7 - '@mui/private-theming': 5.15.20(@types/react@17.0.80)(react@17.0.2) - '@mui/styled-engine': 5.15.14(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(react@17.0.2) - '@mui/types': 7.2.14(@types/react@17.0.80) - '@mui/utils': 5.15.20(@types/react@17.0.80)(react@17.0.2) - clsx: 2.1.1 - csstype: 3.1.3 - prop-types: 15.8.1 - react: 17.0.2 - optionalDependencies: - '@emotion/react': 11.11.4(@types/react@17.0.80)(react@17.0.2) - '@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2) - '@types/react': 17.0.80 - - '@mui/types@7.2.14(@types/react@17.0.80)': - optionalDependencies: - '@types/react': 17.0.80 - - '@mui/utils@5.15.14(@types/react@17.0.80)(react@17.0.2)': - dependencies: - '@babel/runtime': 7.24.5 - '@types/prop-types': 15.7.12 - prop-types: 15.8.1 - react: 17.0.2 - react-is: 18.3.1 - optionalDependencies: - '@types/react': 17.0.80 - - '@mui/utils@5.15.20(@types/react@17.0.80)(react@17.0.2)': - dependencies: - '@babel/runtime': 7.24.7 - '@types/prop-types': 15.7.12 - prop-types: 15.8.1 - react: 17.0.2 - react-is: 18.3.1 - optionalDependencies: - '@types/react': 17.0.80 - - '@mui/x-date-pickers@7.7.1(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(@mui/material@5.13.7(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2))(@types/react@17.0.80)(dayjs@1.10.7)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': - dependencies: - '@babel/runtime': 7.24.7 - '@mui/base': 5.0.0-beta.40(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@mui/material': 5.13.7(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - '@mui/system': 5.15.20(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@emotion/styled@11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2) - '@mui/utils': 5.15.20(@types/react@17.0.80)(react@17.0.2) - '@types/react-transition-group': 4.4.10 - clsx: 2.1.1 - prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - react-transition-group: 4.4.5(react-dom@17.0.2(react@17.0.2))(react@17.0.2) - optionalDependencies: - '@emotion/react': 11.11.4(@types/react@17.0.80)(react@17.0.2) - '@emotion/styled': 11.11.5(@emotion/react@11.11.4(@types/react@17.0.80)(react@17.0.2))(@types/react@17.0.80)(react@17.0.2) - dayjs: 1.10.7 - transitivePeerDependencies: - - '@types/react' - - '@ngtools/webpack@18.2.12(@angular/compiler-cli@18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4))(typescript@5.5.4)(webpack@5.91.0)': - dependencies: - '@angular/compiler-cli': 18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4) - typescript: 5.5.4 - webpack: 5.91.0(webpack-cli@5.1.4) - - '@ngtools/webpack@18.2.12(@angular/compiler-cli@18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4))(typescript@5.5.4)(webpack@5.94.0(esbuild@0.23.0))': - dependencies: - '@angular/compiler-cli': 18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4) - typescript: 5.5.4 - webpack: 5.94.0(esbuild@0.23.0) - '@node-ipc/js-queue@2.0.3': dependencies: easy-stack: 1.0.1 @@ -25080,15 +15831,15 @@ snapshots: '@nodelib/fs.walk@1.2.8': dependencies: '@nodelib/fs.scandir': 2.1.5 - fastq: 1.17.1 + fastq: 1.19.1 '@npmcli/agent@2.2.2': dependencies: - agent-base: 7.1.1 + agent-base: 7.1.4 http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.5 - lru-cache: 10.2.2 - socks-proxy-agent: 8.0.3 + https-proxy-agent: 7.0.6 + lru-cache: 10.4.3 + socks-proxy-agent: 8.0.5 transitivePeerDependencies: - supports-color @@ -25107,7 +15858,7 @@ snapshots: bin-links: 4.0.4 cacache: 17.1.4 common-ancestor-path: 1.0.1 - hosted-git-info: 6.1.1 + hosted-git-info: 6.1.3 json-parse-even-better-errors: 3.0.2 json-stringify-nice: 1.1.4 minimatch: 6.2.0 @@ -25123,7 +15874,7 @@ snapshots: promise-all-reject-late: 1.0.1 promise-call-limit: 1.0.2 read-package-json-fast: 3.0.2 - semver: 7.6.2 + semver: 7.7.3 ssri: 10.0.6 treeverse: 3.0.0 walk-up-path: 1.0.0 @@ -25134,11 +15885,11 @@ snapshots: '@npmcli/fs@2.1.2': dependencies: '@gar/promisify': 1.1.3 - semver: 7.6.2 + semver: 7.7.3 '@npmcli/fs@3.1.1': dependencies: - semver: 7.6.2 + semver: 7.7.3 '@npmcli/git@4.1.0': dependencies: @@ -25146,20 +15897,21 @@ snapshots: lru-cache: 7.18.3 npm-pick-manifest: 8.0.2 proc-log: 3.0.0 - promise-inflight: 1.0.1(bluebird@3.7.2) + promise-inflight: 1.0.1 promise-retry: 2.0.1 - semver: 7.6.2 + semver: 7.7.3 which: 3.0.1 transitivePeerDependencies: - bluebird - '@npmcli/git@5.0.7': + '@npmcli/git@5.0.8': dependencies: '@npmcli/promise-spawn': 7.0.2 - lru-cache: 10.2.2 + ini: 4.1.3 + lru-cache: 10.4.3 npm-pick-manifest: 9.1.0 proc-log: 4.2.0 - promise-inflight: 1.0.1(bluebird@3.7.2) + promise-inflight: 1.0.1 promise-retry: 2.0.1 semver: 7.6.3 which: 4.0.0 @@ -25174,8 +15926,8 @@ snapshots: '@npmcli/map-workspaces@3.0.6': dependencies: '@npmcli/name-from-folder': 2.0.0 - glob: 10.3.16 - minimatch: 9.0.4 + glob: 10.5.0 + minimatch: 9.0.5 read-package-json-fast: 3.0.2 '@npmcli/metavuln-calculator@5.0.1': @@ -25183,7 +15935,7 @@ snapshots: cacache: 17.1.4 json-parse-even-better-errors: 3.0.2 pacote: 15.1.1 - semver: 7.6.2 + semver: 7.7.3 transitivePeerDependencies: - bluebird - supports-color @@ -25202,7 +15954,7 @@ snapshots: '@npmcli/package-json@3.1.1': dependencies: '@npmcli/git': 4.1.0 - glob: 10.3.16 + glob: 10.5.0 json-parse-even-better-errors: 3.0.2 normalize-package-data: 5.0.0 npm-normalize-package-bin: 3.0.1 @@ -25210,13 +15962,13 @@ snapshots: transitivePeerDependencies: - bluebird - '@npmcli/package-json@5.1.0': + '@npmcli/package-json@5.2.1': dependencies: - '@npmcli/git': 5.0.7 - glob: 10.3.16 + '@npmcli/git': 5.0.8 + glob: 10.5.0 hosted-git-info: 7.0.2 json-parse-even-better-errors: 3.0.2 - normalize-package-data: 6.0.1 + normalize-package-data: 6.0.2 proc-log: 4.2.0 semver: 7.6.3 transitivePeerDependencies: @@ -25236,7 +15988,7 @@ snapshots: '@npmcli/query@3.1.0': dependencies: - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.2 '@npmcli/redact@2.0.1': {} @@ -25265,9 +16017,9 @@ snapshots: '@npmcli/run-script@8.1.0': dependencies: '@npmcli/node-gyp': 3.0.0 - '@npmcli/package-json': 5.1.0 + '@npmcli/package-json': 5.2.1 '@npmcli/promise-spawn': 7.0.2 - node-gyp: 10.1.0 + node-gyp: 10.3.1 proc-log: 4.2.0 which: 4.0.0 transitivePeerDependencies: @@ -25285,11 +16037,11 @@ snapshots: '@nrwl/devkit@15.9.7(nx@15.9.7)': dependencies: ejs: 3.1.10 - ignore: 5.3.1 + ignore: 5.3.2 nx: 15.9.7 semver: 7.5.4 - tmp: 0.2.3 - tslib: 2.6.2 + tmp: 0.2.5 + tslib: 2.8.1 '@nrwl/nx-darwin-arm64@15.9.7': optional: true @@ -25383,280 +16135,74 @@ snapshots: deprecation: 2.3.1 once: 1.4.0 - '@octokit/request@6.2.8(encoding@0.1.13)': - dependencies: - '@octokit/endpoint': 7.0.6 - '@octokit/request-error': 3.0.3 - '@octokit/types': 9.3.2 - is-plain-object: 5.0.0 - node-fetch: 2.6.7(encoding@0.1.13) - universal-user-agent: 6.0.1 - transitivePeerDependencies: - - encoding - - '@octokit/rest@19.0.3(encoding@0.1.13)': - dependencies: - '@octokit/core': 4.2.4(encoding@0.1.13) - '@octokit/plugin-paginate-rest': 3.1.0(@octokit/core@4.2.4(encoding@0.1.13)) - '@octokit/plugin-request-log': 1.0.4(@octokit/core@4.2.4(encoding@0.1.13)) - '@octokit/plugin-rest-endpoint-methods': 6.8.1(@octokit/core@4.2.4(encoding@0.1.13)) - transitivePeerDependencies: - - encoding - - '@octokit/types@6.41.0': - dependencies: - '@octokit/openapi-types': 12.11.0 - - '@octokit/types@8.2.1': - dependencies: - '@octokit/openapi-types': 14.0.0 - - '@octokit/types@9.3.2': - dependencies: - '@octokit/openapi-types': 18.1.1 - - '@one-ini/wasm@0.1.1': {} - - '@parcel/watcher@2.0.4': - dependencies: - node-addon-api: 3.2.1 - node-gyp-build: 4.8.1 - - '@pkgjs/parseargs@0.11.0': - optional: true - - '@pkgr/core@0.1.1': {} - - '@polka/url@1.0.0-next.25': {} - - '@popperjs/core@2.11.8': {} - - '@rollup/plugin-alias@3.1.9(rollup@2.79.1)': - dependencies: - rollup: 2.79.1 - slash: 3.0.0 - - '@rollup/plugin-commonjs@23.0.7(rollup@2.79.1)': - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@2.79.1) - commondir: 1.0.1 - estree-walker: 2.0.2 - glob: 8.1.0 - is-reference: 1.2.1 - magic-string: 0.27.0 - optionalDependencies: - rollup: 2.79.1 - - '@rollup/plugin-inject@5.0.5(rollup@4.22.4)': - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.22.4) - estree-walker: 2.0.2 - magic-string: 0.30.10 - optionalDependencies: - rollup: 4.22.4 - - '@rollup/plugin-json@5.0.2(rollup@2.79.1)': - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@2.79.1) - optionalDependencies: - rollup: 2.79.1 - - '@rollup/plugin-json@6.1.0(rollup@4.22.4)': - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.22.4) - optionalDependencies: - rollup: 4.22.4 - - '@rollup/plugin-node-resolve@15.2.3(rollup@2.79.1)': - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@2.79.1) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-builtin-module: 3.2.1 - is-module: 1.0.0 - resolve: 1.22.8 - optionalDependencies: - rollup: 2.79.1 - - '@rollup/plugin-node-resolve@15.2.3(rollup@4.22.4)': - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@4.22.4) - '@types/resolve': 1.20.2 - deepmerge: 4.3.1 - is-builtin-module: 3.2.1 - is-module: 1.0.0 - resolve: 1.22.8 - optionalDependencies: - rollup: 4.22.4 - - '@rollup/plugin-replace@5.0.5(rollup@2.79.1)': - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@2.79.1) - magic-string: 0.30.10 - optionalDependencies: - rollup: 2.79.1 - - '@rollup/pluginutils@4.2.1': - dependencies: - estree-walker: 2.0.2 - picomatch: 2.3.1 - - '@rollup/pluginutils@5.1.0(rollup@2.79.1)': - dependencies: - '@types/estree': 1.0.5 - estree-walker: 2.0.2 - picomatch: 2.3.1 - optionalDependencies: - rollup: 2.79.1 - - '@rollup/pluginutils@5.1.0(rollup@4.22.4)': - dependencies: - '@types/estree': 1.0.5 - estree-walker: 2.0.2 - picomatch: 2.3.1 - optionalDependencies: - rollup: 4.22.4 - - '@rollup/rollup-android-arm-eabi@4.21.0': - optional: true - - '@rollup/rollup-android-arm-eabi@4.22.4': - optional: true - - '@rollup/rollup-android-arm64@4.21.0': - optional: true - - '@rollup/rollup-android-arm64@4.22.4': - optional: true - - '@rollup/rollup-darwin-arm64@4.21.0': - optional: true - - '@rollup/rollup-darwin-arm64@4.22.4': - optional: true - - '@rollup/rollup-darwin-x64@4.21.0': - optional: true - - '@rollup/rollup-darwin-x64@4.22.4': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.21.0': - optional: true - - '@rollup/rollup-linux-arm-gnueabihf@4.22.4': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.21.0': - optional: true - - '@rollup/rollup-linux-arm-musleabihf@4.22.4': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.21.0': - optional: true - - '@rollup/rollup-linux-arm64-gnu@4.22.4': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.21.0': - optional: true - - '@rollup/rollup-linux-arm64-musl@4.22.4': - optional: true - - '@rollup/rollup-linux-powerpc64le-gnu@4.21.0': - optional: true - - '@rollup/rollup-linux-powerpc64le-gnu@4.22.4': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.21.0': - optional: true - - '@rollup/rollup-linux-riscv64-gnu@4.22.4': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.21.0': - optional: true - - '@rollup/rollup-linux-s390x-gnu@4.22.4': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.21.0': - optional: true - - '@rollup/rollup-linux-x64-gnu@4.22.4': - optional: true - - '@rollup/rollup-linux-x64-musl@4.21.0': - optional: true + '@octokit/request@6.2.8(encoding@0.1.13)': + dependencies: + '@octokit/endpoint': 7.0.6 + '@octokit/request-error': 3.0.3 + '@octokit/types': 9.3.2 + is-plain-object: 5.0.0 + node-fetch: 2.6.7(encoding@0.1.13) + universal-user-agent: 6.0.1 + transitivePeerDependencies: + - encoding - '@rollup/rollup-linux-x64-musl@4.22.4': - optional: true + '@octokit/rest@19.0.3(encoding@0.1.13)': + dependencies: + '@octokit/core': 4.2.4(encoding@0.1.13) + '@octokit/plugin-paginate-rest': 3.1.0(@octokit/core@4.2.4(encoding@0.1.13)) + '@octokit/plugin-request-log': 1.0.4(@octokit/core@4.2.4(encoding@0.1.13)) + '@octokit/plugin-rest-endpoint-methods': 6.8.1(@octokit/core@4.2.4(encoding@0.1.13)) + transitivePeerDependencies: + - encoding - '@rollup/rollup-win32-arm64-msvc@4.21.0': - optional: true + '@octokit/types@6.41.0': + dependencies: + '@octokit/openapi-types': 12.11.0 - '@rollup/rollup-win32-arm64-msvc@4.22.4': - optional: true + '@octokit/types@8.2.1': + dependencies: + '@octokit/openapi-types': 14.0.0 - '@rollup/rollup-win32-ia32-msvc@4.21.0': - optional: true + '@octokit/types@9.3.2': + dependencies: + '@octokit/openapi-types': 18.1.1 - '@rollup/rollup-win32-ia32-msvc@4.22.4': - optional: true + '@one-ini/wasm@0.1.1': {} - '@rollup/rollup-win32-x64-msvc@4.21.0': - optional: true + '@parcel/watcher@2.0.4': + dependencies: + node-addon-api: 3.2.1 + node-gyp-build: 4.8.4 - '@rollup/rollup-win32-x64-msvc@4.22.4': + '@pkgjs/parseargs@0.11.0': optional: true - '@rollup/wasm-node@4.18.0': - dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - fsevents: 2.3.3 - - '@rushstack/eslint-patch@1.10.4': {} + '@polka/url@1.0.0-next.29': {} - '@rushstack/node-core-library@4.0.2(@types/node@22.13.8)': + '@rollup/plugin-alias@3.1.9(rollup@2.79.2)': dependencies: - fs-extra: 7.0.1 - import-lazy: 4.0.0 - jju: 1.4.0 - resolve: 1.22.8 - semver: 7.5.4 - z-schema: 5.0.5 - optionalDependencies: - '@types/node': 22.13.8 + rollup: 2.79.2 + slash: 3.0.0 - '@rushstack/rig-package@0.5.2': + '@rollup/pluginutils@4.2.1': dependencies: - resolve: 1.22.8 - strip-json-comments: 3.1.1 + estree-walker: 2.0.2 + picomatch: 2.3.1 - '@rushstack/terminal@0.10.0(@types/node@22.13.8)': + '@rollup/pluginutils@5.3.0(rollup@2.79.2)': dependencies: - '@rushstack/node-core-library': 4.0.2(@types/node@22.13.8) - supports-color: 8.1.1 + '@types/estree': 1.0.8 + estree-walker: 2.0.2 + picomatch: 4.0.3 optionalDependencies: - '@types/node': 22.13.8 + rollup: 2.79.2 - '@rushstack/ts-command-line@4.19.1(@types/node@22.13.8)': - dependencies: - '@rushstack/terminal': 0.10.0(@types/node@22.13.8) - '@types/argparse': 1.0.38 - argparse: 1.0.10 - string-argv: 0.3.2 - transitivePeerDependencies: - - '@types/node' + '@rtsao/scc@1.1.0': {} - '@schematics/angular@18.2.12(chokidar@3.6.0)': + '@schematics/angular@18.2.21(chokidar@3.6.0)': dependencies: - '@angular-devkit/core': 18.2.12(chokidar@3.6.0) - '@angular-devkit/schematics': 18.2.12(chokidar@3.6.0) + '@angular-devkit/core': 18.2.21(chokidar@3.6.0) + '@angular-devkit/schematics': 18.2.21(chokidar@3.6.0) jsonc-parser: 3.3.1 transitivePeerDependencies: - chokidar @@ -25675,13 +16221,13 @@ snapshots: '@sigstore/bundle@2.3.2': dependencies: - '@sigstore/protobuf-specs': 0.3.2 + '@sigstore/protobuf-specs': 0.3.3 '@sigstore/core@1.1.0': {} '@sigstore/protobuf-specs@0.2.1': {} - '@sigstore/protobuf-specs@0.3.2': {} + '@sigstore/protobuf-specs@0.3.3': {} '@sigstore/sign@1.0.0': dependencies: @@ -25695,7 +16241,7 @@ snapshots: dependencies: '@sigstore/bundle': 2.3.2 '@sigstore/core': 1.1.0 - '@sigstore/protobuf-specs': 0.3.2 + '@sigstore/protobuf-specs': 0.3.3 make-fetch-happen: 13.0.1 proc-log: 4.2.0 promise-retry: 2.0.1 @@ -25711,7 +16257,7 @@ snapshots: '@sigstore/tuf@2.3.4': dependencies: - '@sigstore/protobuf-specs': 0.3.2 + '@sigstore/protobuf-specs': 0.3.3 tuf-js: 2.2.1 transitivePeerDependencies: - supports-color @@ -25720,7 +16266,7 @@ snapshots: dependencies: '@sigstore/bundle': 2.3.2 '@sigstore/core': 1.1.0 - '@sigstore/protobuf-specs': 0.3.2 + '@sigstore/protobuf-specs': 0.3.3 '@sinclair/typebox@0.27.8': {} @@ -25734,15 +16280,13 @@ snapshots: dependencies: '@sinonjs/commons': 1.8.6 - '@socket.io/component-emitter@3.1.2': {} - - '@soda/friendly-errors-webpack-plugin@1.8.1(webpack@5.91.0)': + '@soda/friendly-errors-webpack-plugin@1.8.1(webpack@5.103.0)': dependencies: chalk: 3.0.0 error-stack-parser: 2.1.4 string-width: 4.2.3 strip-ansi: 6.0.1 - webpack: 5.91.0(webpack-cli@5.1.4) + webpack: 5.103.0 '@soda/get-current-script@1.0.2': {} @@ -25752,7 +16296,7 @@ snapshots: '@trysound/sax@0.2.0': {} - '@tsconfig/node10@1.0.11': {} + '@tsconfig/node10@1.0.12': {} '@tsconfig/node12@1.0.11': {} @@ -25760,8 +16304,6 @@ snapshots: '@tsconfig/node16@1.0.4': {} - '@tsconfig/node20@20.1.4': {} - '@tufjs/canonical-json@1.0.0': {} '@tufjs/canonical-json@2.0.0': {} @@ -25769,130 +16311,103 @@ snapshots: '@tufjs/models@1.0.4': dependencies: '@tufjs/canonical-json': 1.0.0 - minimatch: 9.0.4 + minimatch: 9.0.5 '@tufjs/models@2.0.1': dependencies: '@tufjs/canonical-json': 2.0.0 - minimatch: 9.0.4 - - '@types/argparse@1.0.38': {} + minimatch: 9.0.5 '@types/babel__core@7.20.5': dependencies: - '@babel/parser': 7.26.2 - '@babel/types': 7.24.5 - '@types/babel__generator': 7.6.8 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 + '@types/babel__generator': 7.27.0 '@types/babel__template': 7.4.4 - '@types/babel__traverse': 7.20.6 + '@types/babel__traverse': 7.28.0 - '@types/babel__generator@7.6.8': + '@types/babel__generator@7.27.0': dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.28.5 '@types/babel__template@7.4.4': dependencies: - '@babel/parser': 7.26.2 - '@babel/types': 7.24.5 + '@babel/parser': 7.28.5 + '@babel/types': 7.28.5 - '@types/babel__traverse@7.20.6': + '@types/babel__traverse@7.28.0': dependencies: - '@babel/types': 7.24.5 + '@babel/types': 7.28.5 - '@types/body-parser@1.19.5': + '@types/body-parser@1.19.6': dependencies: '@types/connect': 3.4.38 - '@types/node': 22.13.8 + '@types/node': 22.19.1 '@types/bonjour@3.5.13': dependencies: - '@types/node': 22.13.8 - - '@types/chai@4.3.16': {} + '@types/node': 22.19.1 - '@types/cheerio@0.22.35': - dependencies: - '@types/node': 22.13.8 + '@types/chai@4.3.20': {} '@types/connect-history-api-fallback@1.5.4': dependencies: - '@types/express-serve-static-core': 4.19.1 - '@types/node': 22.13.8 + '@types/express-serve-static-core': 5.1.0 + '@types/node': 22.19.1 '@types/connect@3.4.38': dependencies: - '@types/node': 22.13.8 - - '@types/cookie@0.4.1': {} - - '@types/cors@2.8.17': - dependencies: - '@types/node': 22.13.8 - - '@types/enzyme@3.10.18': - dependencies: - '@types/cheerio': 0.22.35 - '@types/react': 16.14.60 + '@types/node': 22.19.1 '@types/eslint-scope@3.7.7': dependencies: - '@types/eslint': 8.56.10 - '@types/estree': 1.0.5 + '@types/eslint': 9.6.1 + '@types/estree': 1.0.8 - '@types/eslint@8.56.10': + '@types/eslint@9.6.1': dependencies: - '@types/estree': 1.0.5 + '@types/estree': 1.0.8 '@types/json-schema': 7.0.15 - '@types/estree@1.0.5': {} + '@types/estree@1.0.8': {} - '@types/express-serve-static-core@4.19.1': + '@types/express-serve-static-core@4.19.7': dependencies: - '@types/node': 22.13.8 - '@types/qs': 6.9.15 + '@types/node': 22.19.1 + '@types/qs': 6.14.0 '@types/range-parser': 1.2.7 - '@types/send': 0.17.4 + '@types/send': 1.2.1 - '@types/express@4.17.21': + '@types/express-serve-static-core@5.1.0': dependencies: - '@types/body-parser': 1.19.5 - '@types/express-serve-static-core': 4.19.1 - '@types/qs': 6.9.15 - '@types/serve-static': 1.15.7 - - '@types/fs-extra@8.1.5': - dependencies: - '@types/node': 22.13.8 + '@types/node': 22.19.1 + '@types/qs': 6.14.0 + '@types/range-parser': 1.2.7 + '@types/send': 1.2.1 - '@types/fs-extra@9.0.13': + '@types/express@4.17.25': dependencies: - '@types/node': 22.13.8 + '@types/body-parser': 1.19.6 + '@types/express-serve-static-core': 4.19.7 + '@types/qs': 6.14.0 + '@types/serve-static': 1.15.10 '@types/glob@7.2.0': dependencies: - '@types/minimatch': 5.1.2 - '@types/node': 22.13.8 + '@types/minimatch': 6.0.0 + '@types/node': 22.19.1 '@types/graceful-fs@4.1.9': dependencies: - '@types/node': 22.13.8 - - '@types/hoist-non-react-statics@3.3.5': - dependencies: - '@types/react': 17.0.80 - hoist-non-react-statics: 3.3.2 + '@types/node': 22.19.1 '@types/html-minifier-terser@6.1.0': {} - '@types/http-errors@2.0.4': {} - - '@types/http-proxy@1.17.14': - dependencies: - '@types/node': 22.13.8 + '@types/http-errors@2.0.5': {} - '@types/http-proxy@1.17.15': + '@types/http-proxy@1.17.17': dependencies: - '@types/node': 22.13.8 + '@types/node': 22.19.1 '@types/istanbul-lib-coverage@2.0.6': {} @@ -25904,32 +16419,24 @@ snapshots: dependencies: '@types/istanbul-lib-report': 3.0.3 - '@types/jasmine@3.8.2': {} - '@types/jest@27.5.2': dependencies: jest-matcher-utils: 27.5.1 pretty-format: 27.5.1 - '@types/jsdom@21.1.7': - dependencies: - '@types/node': 22.13.8 - '@types/tough-cookie': 4.0.5 - parse5: 7.1.2 - '@types/json-schema@7.0.15': {} '@types/json5@0.0.29': {} - '@types/lodash@4.14.149': {} - - '@types/lodash@4.17.7': {} + '@types/lodash@4.17.21': {} '@types/mime@1.3.5': {} '@types/minimatch@3.0.5': {} - '@types/minimatch@5.1.2': {} + '@types/minimatch@6.0.0': + dependencies: + minimatch: 3.1.2 '@types/minimist@1.2.5': {} @@ -25937,105 +16444,56 @@ snapshots: '@types/mute-stream@0.0.4': dependencies: - '@types/node': 22.13.8 + '@types/node': 22.19.1 - '@types/node-forge@1.3.11': + '@types/node-forge@1.3.14': dependencies: - '@types/node': 22.13.8 + '@types/node': 22.19.1 - '@types/node@22.13.8': + '@types/node@22.19.1': dependencies: - undici-types: 6.20.0 + undici-types: 6.21.0 '@types/normalize-package-data@2.4.4': {} - '@types/object-hash@1.3.4': {} - '@types/parse-json@4.0.2': {} '@types/prettier@2.7.3': {} - '@types/prop-types@15.7.12': {} - - '@types/q@0.0.32': {} - - '@types/qs@6.9.15': {} + '@types/qs@6.14.0': {} '@types/range-parser@1.2.7': {} - '@types/react-dom@17.0.25': - dependencies: - '@types/react': 17.0.80 - - '@types/react-highlight@0.12.8': - dependencies: - '@types/react': 17.0.80 - - '@types/react-redux@7.1.33': - dependencies: - '@types/hoist-non-react-statics': 3.3.5 - '@types/react': 17.0.80 - hoist-non-react-statics: 3.3.2 - redux: 4.2.1 - - '@types/react-tabs@2.3.4': - dependencies: - '@types/react': 17.0.80 - - '@types/react-transition-group@4.4.10': - dependencies: - '@types/react': 17.0.80 - - '@types/react@16.14.60': - dependencies: - '@types/prop-types': 15.7.12 - '@types/scheduler': 0.16.8 - csstype: 3.1.3 - - '@types/react@17.0.80': - dependencies: - '@types/prop-types': 15.7.12 - '@types/scheduler': 0.16.8 - csstype: 3.1.3 - - '@types/redux-mock-store@1.0.6': + '@types/redux-mock-store@1.5.0': dependencies: redux: 4.2.1 - '@types/resolve@1.20.2': {} - '@types/retry@0.12.0': {} - '@types/retry@0.12.2': {} + '@types/semver@7.7.1': {} - '@types/scheduler@0.16.8': {} - - '@types/selenium-webdriver@3.0.26': {} - - '@types/semver@7.5.8': {} - - '@types/send@0.17.4': + '@types/send@0.17.6': dependencies: '@types/mime': 1.3.5 - '@types/node': 22.13.8 + '@types/node': 22.19.1 - '@types/serve-index@1.9.4': + '@types/send@1.2.1': dependencies: - '@types/express': 4.17.21 + '@types/node': 22.19.1 - '@types/serve-static@1.15.7': + '@types/serve-index@1.9.4': dependencies: - '@types/http-errors': 2.0.4 - '@types/node': 22.13.8 - '@types/send': 0.17.4 + '@types/express': 4.17.25 - '@types/sockjs@0.3.36': + '@types/serve-static@1.15.10': dependencies: - '@types/node': 22.13.8 + '@types/http-errors': 2.0.5 + '@types/node': 22.19.1 + '@types/send': 0.17.6 - '@types/splitpanes@2.2.6': + '@types/sockjs@0.3.36': dependencies: - vue: 2.7.16 + '@types/node': 22.19.1 '@types/stack-utils@2.0.3': {} @@ -26043,199 +16501,95 @@ snapshots: '@types/strip-json-comments@0.0.30': {} - '@types/tough-cookie@4.0.5': {} - - '@types/webpack-env@1.18.5': {} + '@types/webpack-env@1.18.8': {} '@types/wrap-ansi@3.0.0': {} - '@types/ws@8.5.10': + '@types/ws@8.18.1': dependencies: - '@types/node': 22.13.8 + '@types/node': 22.19.1 '@types/yargs-parser@21.0.3': {} - '@types/yargs@16.0.9': + '@types/yargs@16.0.11': dependencies: '@types/yargs-parser': 21.0.3 - '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/eslint-plugin@5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4)': dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.4) + '@eslint-community/regexpp': 4.12.2 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.5.4) '@typescript-eslint/scope-manager': 5.62.0 - '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.4) - debug: 4.3.4 - eslint: 8.57.0 + '@typescript-eslint/type-utils': 5.62.0(eslint@8.57.1)(typescript@5.5.4) + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.5.4) + debug: 4.4.3 + eslint: 8.57.1 graphemer: 1.4.0 - ignore: 5.3.1 + ignore: 5.3.2 natural-compare-lite: 1.4.0 - semver: 7.6.2 + semver: 7.7.3 tsutils: 3.21.0(typescript@5.5.4) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/eslint-plugin@7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5)': - dependencies: - '@eslint-community/regexpp': 4.10.0 - '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/type-utils': 7.18.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.18.0 - eslint: 8.57.0 - graphemer: 1.4.0 - ignore: 5.3.1 - natural-compare: 1.4.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.4)': dependencies: '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.4) - debug: 4.3.4 - eslint: 8.57.0 + debug: 4.4.3 + eslint: 8.57.1 optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5)': - dependencies: - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.4.5) - '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.3.7 - eslint: 8.57.0 - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/scope-manager@5.62.0': dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - '@typescript-eslint/scope-manager@7.18.0': - dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 - - '@typescript-eslint/type-utils@5.62.0(eslint@8.57.0)(typescript@5.5.4)': + '@typescript-eslint/type-utils@5.62.0(eslint@8.57.1)(typescript@5.5.4)': dependencies: '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.4) - '@typescript-eslint/utils': 5.62.0(eslint@8.57.0)(typescript@5.5.4) - debug: 4.3.4 - eslint: 8.57.0 + '@typescript-eslint/utils': 5.62.0(eslint@8.57.1)(typescript@5.5.4) + debug: 4.4.3 + eslint: 8.57.1 tsutils: 3.21.0(typescript@5.5.4) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/type-utils@7.18.0(eslint@8.57.0)(typescript@5.4.5)': - dependencies: - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.4.5) - '@typescript-eslint/utils': 7.18.0(eslint@8.57.0)(typescript@5.4.5) - debug: 4.3.7 - eslint: 8.57.0 - ts-api-utils: 1.3.0(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - '@typescript-eslint/types@5.62.0': {} - '@typescript-eslint/types@7.18.0': {} - '@typescript-eslint/typescript-estree@5.62.0(typescript@5.5.4)': dependencies: '@typescript-eslint/types': 5.62.0 '@typescript-eslint/visitor-keys': 5.62.0 - debug: 4.3.4 + debug: 4.4.3 globby: 11.1.0 is-glob: 4.0.3 - semver: 7.6.2 + semver: 7.7.3 tsutils: 3.21.0(typescript@5.5.4) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.4.5)': + '@typescript-eslint/utils@5.62.0(eslint@8.57.1)(typescript@5.5.4)': dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.3.7 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/typescript-estree@7.18.0(typescript@5.5.4)': - dependencies: - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/visitor-keys': 7.18.0 - debug: 4.3.7 - globby: 11.1.0 - is-glob: 4.0.3 - minimatch: 9.0.4 - semver: 7.6.2 - ts-api-utils: 1.3.0(typescript@5.5.4) - optionalDependencies: - typescript: 5.5.4 - transitivePeerDependencies: - - supports-color - - '@typescript-eslint/utils@5.62.0(eslint@8.57.0)(typescript@5.5.4)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) '@types/json-schema': 7.0.15 - '@types/semver': 7.5.8 + '@types/semver': 7.7.1 '@typescript-eslint/scope-manager': 5.62.0 '@typescript-eslint/types': 5.62.0 '@typescript-eslint/typescript-estree': 5.62.0(typescript@5.5.4) - eslint: 8.57.0 + eslint: 8.57.1 eslint-scope: 5.1.1 - semver: 7.6.2 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.4.5)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.4.5) - eslint: 8.57.0 - transitivePeerDependencies: - - supports-color - - typescript - - '@typescript-eslint/utils@7.18.0(eslint@8.57.0)(typescript@5.5.4)': - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@typescript-eslint/scope-manager': 7.18.0 - '@typescript-eslint/types': 7.18.0 - '@typescript-eslint/typescript-estree': 7.18.0(typescript@5.5.4) - eslint: 8.57.0 + semver: 7.7.3 transitivePeerDependencies: - supports-color - typescript @@ -26245,241 +16599,163 @@ snapshots: '@typescript-eslint/types': 5.62.0 eslint-visitor-keys: 3.4.3 - '@typescript-eslint/visitor-keys@7.18.0': - dependencies: - '@typescript-eslint/types': 7.18.0 - eslint-visitor-keys: 3.4.3 - '@ungap/promise-all-settled@1.1.2': {} - '@ungap/structured-clone@1.2.0': {} + '@ungap/structured-clone@1.3.0': {} - '@vercel/nft@0.26.5(encoding@0.1.13)': + '@vercel/nft@0.29.4(encoding@0.1.13)(rollup@2.79.2)': dependencies: - '@mapbox/node-pre-gyp': 1.0.11(encoding@0.1.13) - '@rollup/pluginutils': 4.2.1 - acorn: 8.11.3 - acorn-import-attributes: 1.9.5(acorn@8.11.3) + '@mapbox/node-pre-gyp': 2.0.0(encoding@0.1.13) + '@rollup/pluginutils': 5.3.0(rollup@2.79.2) + acorn: 8.15.0 + acorn-import-attributes: 1.9.5(acorn@8.15.0) async-sema: 3.1.1 bindings: 1.5.0 estree-walker: 2.0.2 - glob: 7.2.3 + glob: 10.5.0 graceful-fs: 4.2.11 - micromatch: 4.0.7 - node-gyp-build: 4.8.1 + node-gyp-build: 4.8.4 + picomatch: 4.0.3 resolve-from: 5.0.0 transitivePeerDependencies: - encoding + - rollup - supports-color - '@vitejs/plugin-basic-ssl@1.1.0(vite@5.4.6(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6))': - dependencies: - vite: 5.4.6(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6) - - '@vitejs/plugin-vue@5.1.2(vite@5.4.2(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6))(vue@3.4.27(typescript@5.4.5))': - dependencies: - vite: 5.4.2(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6) - vue: 3.4.27(typescript@5.4.5) - - '@vitest/coverage-v8@1.6.0(vitest@1.6.0(@types/node@22.13.8)(jsdom@24.1.1)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6))': - dependencies: - '@ampproject/remapping': 2.3.0 - '@bcoe/v8-coverage': 0.2.3 - debug: 4.3.4 - istanbul-lib-coverage: 3.2.2 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 5.0.6 - istanbul-reports: 3.1.7 - magic-string: 0.30.10 - magicast: 0.3.4 - picocolors: 1.0.1 - std-env: 3.7.0 - strip-literal: 2.1.0 - test-exclude: 6.0.0 - vitest: 1.6.0(@types/node@22.13.8)(jsdom@24.1.1)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6) - transitivePeerDependencies: - - supports-color - - '@vitest/expect@1.6.0': - dependencies: - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - chai: 4.4.1 - - '@vitest/runner@1.6.0': - dependencies: - '@vitest/utils': 1.6.0 - p-limit: 5.0.0 - pathe: 1.1.2 - - '@vitest/snapshot@1.6.0': - dependencies: - magic-string: 0.30.10 - pathe: 1.1.2 - pretty-format: 29.7.0 - - '@vitest/spy@1.6.0': - dependencies: - tinyspy: 2.2.1 - - '@vitest/utils@1.6.0': - dependencies: - diff-sequences: 29.6.3 - estree-walker: 3.0.3 - loupe: 2.3.7 - pretty-format: 29.7.0 - - '@volar/language-core@1.11.1': - dependencies: - '@volar/source-map': 1.11.1 - - '@volar/language-core@2.4.0': - dependencies: - '@volar/source-map': 2.4.0 - - '@volar/source-map@1.11.1': - dependencies: - muggle-string: 0.3.1 - - '@volar/source-map@2.4.0': {} - - '@volar/typescript@1.11.1': - dependencies: - '@volar/language-core': 1.11.1 - path-browserify: 1.0.1 - - '@volar/typescript@2.4.0': - dependencies: - '@volar/language-core': 2.4.0 - path-browserify: 1.0.1 - vscode-uri: 3.0.8 - '@vue/babel-helper-vue-jsx-merge-props@1.4.0': {} - '@vue/babel-helper-vue-transform-on@1.2.2': {} + '@vue/babel-helper-vue-transform-on@1.5.0': {} - '@vue/babel-plugin-jsx@1.2.2(@babel/core@7.24.5)': + '@vue/babel-plugin-jsx@1.5.0(@babel/core@7.28.5)': dependencies: - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) - '@babel/template': 7.24.0 - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 - '@vue/babel-helper-vue-transform-on': 1.2.2 - '@vue/babel-plugin-resolve-type': 1.2.2(@babel/core@7.24.5) - camelcase: 6.3.0 - html-tags: 3.3.1 - svg-tags: 1.0.0 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/template': 7.27.2 + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 + '@vue/babel-helper-vue-transform-on': 1.5.0 + '@vue/babel-plugin-resolve-type': 1.5.0(@babel/core@7.28.5) + '@vue/shared': 3.5.25 optionalDependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.28.5 transitivePeerDependencies: - supports-color - '@vue/babel-plugin-resolve-type@1.2.2(@babel/core@7.24.5)': + '@vue/babel-plugin-resolve-type@1.5.0(@babel/core@7.28.5)': dependencies: - '@babel/code-frame': 7.24.2 - '@babel/core': 7.24.5 - '@babel/helper-module-imports': 7.22.15 - '@babel/helper-plugin-utils': 7.24.5 - '@babel/parser': 7.24.5 - '@vue/compiler-sfc': 3.4.27 + '@babel/code-frame': 7.27.1 + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.27.1 + '@babel/helper-plugin-utils': 7.27.1 + '@babel/parser': 7.28.5 + '@vue/compiler-sfc': 3.5.25 + transitivePeerDependencies: + - supports-color - '@vue/babel-plugin-transform-vue-jsx@1.4.0(@babel/core@7.24.5)': + '@vue/babel-plugin-transform-vue-jsx@1.4.0(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-imports': 7.24.3 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.27.1 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) '@vue/babel-helper-vue-jsx-merge-props': 1.4.0 html-tags: 2.0.0 lodash.kebabcase: 4.1.1 svg-tags: 1.0.0 + transitivePeerDependencies: + - supports-color - '@vue/babel-preset-app@5.0.8(@babel/core@7.24.5)(core-js@3.37.1)(vue@3.4.27(typescript@5.5.4))': - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-compilation-targets': 7.23.6 - '@babel/helper-module-imports': 7.24.3 - '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.24.5) - '@babel/plugin-proposal-decorators': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) - '@babel/plugin-transform-runtime': 7.24.3(@babel/core@7.24.5) - '@babel/preset-env': 7.24.5(@babel/core@7.24.5) - '@babel/runtime': 7.24.5 - '@vue/babel-plugin-jsx': 1.2.2(@babel/core@7.24.5) - '@vue/babel-preset-jsx': 1.4.0(@babel/core@7.24.5)(vue@3.4.27(typescript@5.5.4)) + '@vue/babel-preset-app@5.0.9(@babel/core@7.28.5)(core-js@3.47.0)(vue@3.5.25(typescript@5.5.4))': + dependencies: + '@babel/core': 7.28.5 + '@babel/helper-compilation-targets': 7.27.2 + '@babel/helper-module-imports': 7.27.1 + '@babel/plugin-proposal-class-properties': 7.18.6(@babel/core@7.28.5) + '@babel/plugin-proposal-decorators': 7.28.0(@babel/core@7.28.5) + '@babel/plugin-syntax-dynamic-import': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-transform-runtime': 7.28.5(@babel/core@7.28.5) + '@babel/preset-env': 7.28.5(@babel/core@7.28.5) + '@babel/runtime': 7.28.4 + '@vue/babel-plugin-jsx': 1.5.0(@babel/core@7.28.5) + '@vue/babel-preset-jsx': 1.4.0(@babel/core@7.28.5)(vue@3.5.25(typescript@5.5.4)) babel-plugin-dynamic-import-node: 2.3.3 - core-js-compat: 3.37.1 - semver: 7.6.2 + core-js-compat: 3.47.0 + semver: 7.7.3 optionalDependencies: - core-js: 3.37.1 - vue: 3.4.27(typescript@5.5.4) + core-js: 3.47.0 + vue: 3.5.25(typescript@5.5.4) transitivePeerDependencies: - supports-color - '@vue/babel-preset-jsx@1.4.0(@babel/core@7.24.5)(vue@3.4.27(typescript@5.5.4))': + '@vue/babel-preset-jsx@1.4.0(@babel/core@7.28.5)(vue@3.5.25(typescript@5.5.4))': dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.28.5 '@vue/babel-helper-vue-jsx-merge-props': 1.4.0 - '@vue/babel-plugin-transform-vue-jsx': 1.4.0(@babel/core@7.24.5) - '@vue/babel-sugar-composition-api-inject-h': 1.4.0(@babel/core@7.24.5) - '@vue/babel-sugar-composition-api-render-instance': 1.4.0(@babel/core@7.24.5) - '@vue/babel-sugar-functional-vue': 1.4.0(@babel/core@7.24.5) - '@vue/babel-sugar-inject-h': 1.4.0(@babel/core@7.24.5) - '@vue/babel-sugar-v-model': 1.4.0(@babel/core@7.24.5) - '@vue/babel-sugar-v-on': 1.4.0(@babel/core@7.24.5) + '@vue/babel-plugin-transform-vue-jsx': 1.4.0(@babel/core@7.28.5) + '@vue/babel-sugar-composition-api-inject-h': 1.4.0(@babel/core@7.28.5) + '@vue/babel-sugar-composition-api-render-instance': 1.4.0(@babel/core@7.28.5) + '@vue/babel-sugar-functional-vue': 1.4.0(@babel/core@7.28.5) + '@vue/babel-sugar-inject-h': 1.4.0(@babel/core@7.28.5) + '@vue/babel-sugar-v-model': 1.4.0(@babel/core@7.28.5) + '@vue/babel-sugar-v-on': 1.4.0(@babel/core@7.28.5) optionalDependencies: - vue: 3.4.27(typescript@5.5.4) + vue: 3.5.25(typescript@5.5.4) + transitivePeerDependencies: + - supports-color - '@vue/babel-sugar-composition-api-inject-h@1.4.0(@babel/core@7.24.5)': + '@vue/babel-sugar-composition-api-inject-h@1.4.0(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) + '@babel/core': 7.28.5 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) - '@vue/babel-sugar-composition-api-render-instance@1.4.0(@babel/core@7.24.5)': + '@vue/babel-sugar-composition-api-render-instance@1.4.0(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) + '@babel/core': 7.28.5 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) - '@vue/babel-sugar-functional-vue@1.4.0(@babel/core@7.24.5)': + '@vue/babel-sugar-functional-vue@1.4.0(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) + '@babel/core': 7.28.5 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) - '@vue/babel-sugar-inject-h@1.4.0(@babel/core@7.24.5)': + '@vue/babel-sugar-inject-h@1.4.0(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) + '@babel/core': 7.28.5 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) - '@vue/babel-sugar-v-model@1.4.0(@babel/core@7.24.5)': + '@vue/babel-sugar-v-model@1.4.0(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) + '@babel/core': 7.28.5 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) '@vue/babel-helper-vue-jsx-merge-props': 1.4.0 - '@vue/babel-plugin-transform-vue-jsx': 1.4.0(@babel/core@7.24.5) + '@vue/babel-plugin-transform-vue-jsx': 1.4.0(@babel/core@7.28.5) camelcase: 5.3.1 html-tags: 2.0.0 svg-tags: 1.0.0 + transitivePeerDependencies: + - supports-color - '@vue/babel-sugar-v-on@1.4.0(@babel/core@7.24.5)': + '@vue/babel-sugar-v-on@1.4.0(@babel/core@7.28.5)': dependencies: - '@babel/core': 7.24.5 - '@babel/plugin-syntax-jsx': 7.24.1(@babel/core@7.24.5) - '@vue/babel-plugin-transform-vue-jsx': 1.4.0(@babel/core@7.24.5) + '@babel/core': 7.28.5 + '@babel/plugin-syntax-jsx': 7.27.1(@babel/core@7.28.5) + '@vue/babel-plugin-transform-vue-jsx': 1.4.0(@babel/core@7.28.5) camelcase: 5.3.1 + transitivePeerDependencies: + - supports-color - '@vue/cli-overlay@5.0.8': {} + '@vue/cli-overlay@5.0.9': {} - '@vue/cli-plugin-babel@5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.27)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4))(webpack-sources@3.2.3))(core-js@3.37.1)(encoding@0.1.13)(vue@3.4.27(typescript@5.5.4))': + '@vue/cli-plugin-babel@5.0.9(@vue/cli-service@5.0.9(@vue/compiler-sfc@3.5.25)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue@3.5.25(typescript@5.5.4))(webpack-sources@3.3.3))(core-js@3.47.0)(encoding@0.1.13)(vue@3.5.25(typescript@5.5.4))': dependencies: - '@babel/core': 7.24.5 - '@vue/babel-preset-app': 5.0.8(@babel/core@7.24.5)(core-js@3.37.1)(vue@3.4.27(typescript@5.5.4)) - '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.4.27)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4))(webpack-sources@3.2.3) - '@vue/cli-shared-utils': 5.0.8(encoding@0.1.13) - babel-loader: 8.3.0(@babel/core@7.24.5)(webpack@5.91.0) - thread-loader: 3.0.4(webpack@5.91.0) - webpack: 5.91.0(webpack-cli@5.1.4) + '@babel/core': 7.28.5 + '@vue/babel-preset-app': 5.0.9(@babel/core@7.28.5)(core-js@3.47.0)(vue@3.5.25(typescript@5.5.4)) + '@vue/cli-service': 5.0.9(@vue/compiler-sfc@3.5.25)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue@3.5.25(typescript@5.5.4))(webpack-sources@3.3.3) + '@vue/cli-shared-utils': 5.0.9(encoding@0.1.13) + babel-loader: 8.4.1(@babel/core@7.28.5)(webpack@5.103.0) + thread-loader: 3.0.4(webpack@5.103.0) + webpack: 5.103.0 transitivePeerDependencies: - '@swc/core' - core-js @@ -26490,29 +16766,27 @@ snapshots: - vue - webpack-cli - '@vue/cli-plugin-router@5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.27)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4))(webpack-sources@3.2.3))(encoding@0.1.13)': + '@vue/cli-plugin-router@5.0.9(@vue/cli-service@5.0.9(@vue/compiler-sfc@3.5.25)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue@3.5.25(typescript@5.5.4))(webpack-sources@3.3.3))(encoding@0.1.13)': dependencies: - '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.4.27)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4))(webpack-sources@3.2.3) - '@vue/cli-shared-utils': 5.0.8(encoding@0.1.13) + '@vue/cli-service': 5.0.9(@vue/compiler-sfc@3.5.25)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue@3.5.25(typescript@5.5.4))(webpack-sources@3.3.3) + '@vue/cli-shared-utils': 5.0.9(encoding@0.1.13) transitivePeerDependencies: - encoding - '@vue/cli-plugin-typescript@5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.27)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4))(webpack-sources@3.2.3))(encoding@0.1.13)(eslint@8.57.0)(typescript@5.5.4)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4))': + '@vue/cli-plugin-typescript@5.0.9(@vue/cli-service@5.0.9(@vue/compiler-sfc@3.5.25)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue@3.5.25(typescript@5.5.4))(webpack-sources@3.3.3))(encoding@0.1.13)(eslint@8.57.1)(typescript@5.5.4)(vue@3.5.25(typescript@5.5.4))': dependencies: - '@babel/core': 7.24.5 - '@types/webpack-env': 1.18.5 - '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.4.27)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4))(webpack-sources@3.2.3) - '@vue/cli-shared-utils': 5.0.8(encoding@0.1.13) - babel-loader: 8.3.0(@babel/core@7.24.5)(webpack@5.91.0) - fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.57.0)(typescript@5.5.4)(vue-template-compiler@2.7.16)(webpack@5.91.0) + '@babel/core': 7.28.5 + '@types/webpack-env': 1.18.8 + '@vue/cli-service': 5.0.9(@vue/compiler-sfc@3.5.25)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue@3.5.25(typescript@5.5.4))(webpack-sources@3.3.3) + '@vue/cli-shared-utils': 5.0.9(encoding@0.1.13) + babel-loader: 8.4.1(@babel/core@7.28.5)(webpack@5.103.0) + fork-ts-checker-webpack-plugin: 6.5.3(eslint@8.57.1)(typescript@5.5.4)(webpack@5.103.0) globby: 11.1.0 - thread-loader: 3.0.4(webpack@5.91.0) - ts-loader: 9.5.1(typescript@5.5.4)(webpack@5.91.0) + thread-loader: 3.0.4(webpack@5.103.0) + ts-loader: 9.5.4(typescript@5.5.4)(webpack@5.103.0) typescript: 5.5.4 - vue: 3.4.27(typescript@5.5.4) - webpack: 5.91.0(webpack-cli@5.1.4) - optionalDependencies: - vue-template-compiler: 2.7.16 + vue: 3.5.25(typescript@5.5.4) + webpack: 5.103.0 transitivePeerDependencies: - '@swc/core' - encoding @@ -26522,14 +16796,14 @@ snapshots: - uglify-js - webpack-cli - '@vue/cli-plugin-unit-mocha@5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.27)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4))(webpack-sources@3.2.3))(encoding@0.1.13)(webpack@5.94.0)': + '@vue/cli-plugin-unit-mocha@5.0.9(@vue/cli-service@5.0.9(@vue/compiler-sfc@3.5.25)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue@3.5.25(typescript@5.5.4))(webpack-sources@3.3.3))(encoding@0.1.13)(webpack@5.103.0)': dependencies: - '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.4.27)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4))(webpack-sources@3.2.3) - '@vue/cli-shared-utils': 5.0.8(encoding@0.1.13) + '@vue/cli-service': 5.0.9(@vue/compiler-sfc@3.5.25)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue@3.5.25(typescript@5.5.4))(webpack-sources@3.3.3) + '@vue/cli-shared-utils': 5.0.9(encoding@0.1.13) jsdom: 18.1.1 jsdom-global: 3.0.2(jsdom@18.1.1) mocha: 8.4.0 - mochapack: 2.1.4(mocha@8.4.0)(webpack@5.94.0) + mochapack: 2.1.5(mocha@8.4.0)(webpack@5.103.0) transitivePeerDependencies: - bufferutil - canvas @@ -26538,70 +16812,69 @@ snapshots: - utf-8-validate - webpack - '@vue/cli-plugin-vuex@5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.27)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4))(webpack-sources@3.2.3))': + '@vue/cli-plugin-vuex@5.0.9(@vue/cli-service@5.0.9(@vue/compiler-sfc@3.5.25)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue@3.5.25(typescript@5.5.4))(webpack-sources@3.3.3))': dependencies: - '@vue/cli-service': 5.0.8(@vue/compiler-sfc@3.4.27)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4))(webpack-sources@3.2.3) + '@vue/cli-service': 5.0.9(@vue/compiler-sfc@3.5.25)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue@3.5.25(typescript@5.5.4))(webpack-sources@3.3.3) - '@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.27)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4))(webpack-sources@3.2.3)': + '@vue/cli-service@5.0.9(@vue/compiler-sfc@3.5.25)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue@3.5.25(typescript@5.5.4))(webpack-sources@3.3.3)': dependencies: - '@babel/helper-compilation-targets': 7.23.6 - '@soda/friendly-errors-webpack-plugin': 1.8.1(webpack@5.91.0) + '@babel/helper-compilation-targets': 7.27.2 + '@soda/friendly-errors-webpack-plugin': 1.8.1(webpack@5.103.0) '@soda/get-current-script': 1.0.2 '@types/minimist': 1.2.5 - '@vue/cli-overlay': 5.0.8 - '@vue/cli-plugin-router': 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.27)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4))(webpack-sources@3.2.3))(encoding@0.1.13) - '@vue/cli-plugin-vuex': 5.0.8(@vue/cli-service@5.0.8(@vue/compiler-sfc@3.4.27)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(vue@3.4.27(typescript@5.5.4))(webpack-sources@3.2.3)) - '@vue/cli-shared-utils': 5.0.8(encoding@0.1.13) + '@vue/cli-overlay': 5.0.9 + '@vue/cli-plugin-router': 5.0.9(@vue/cli-service@5.0.9(@vue/compiler-sfc@3.5.25)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue@3.5.25(typescript@5.5.4))(webpack-sources@3.3.3))(encoding@0.1.13) + '@vue/cli-plugin-vuex': 5.0.9(@vue/cli-service@5.0.9(@vue/compiler-sfc@3.5.25)(ejs@3.1.10)(encoding@0.1.13)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue@3.5.25(typescript@5.5.4))(webpack-sources@3.3.3)) + '@vue/cli-shared-utils': 5.0.9(encoding@0.1.13) '@vue/component-compiler-utils': 3.3.0(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.17.21) - '@vue/vue-loader-v15': vue-loader@15.11.1(@vue/compiler-sfc@3.4.27)(css-loader@6.11.0(webpack@5.91.0))(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(webpack@5.91.0) + '@vue/vue-loader-v15': vue-loader@15.11.1(@vue/compiler-sfc@3.5.25)(css-loader@6.11.0(webpack@5.103.0))(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(webpack@5.103.0) '@vue/web-component-wrapper': 1.3.0 - acorn: 8.11.3 - acorn-walk: 8.3.2 + acorn: 8.15.0 + acorn-walk: 8.3.4 address: 1.2.2 - autoprefixer: 10.4.19(postcss@8.4.38) - browserslist: 4.23.0 + autoprefixer: 10.4.22(postcss@8.5.6) + browserslist: 4.28.0 case-sensitive-paths-webpack-plugin: 2.4.0 cli-highlight: 2.1.11 clipboardy: 2.3.0 cliui: 7.0.4 - copy-webpack-plugin: 9.1.0(webpack@5.91.0) - css-loader: 6.11.0(webpack@5.91.0) - css-minimizer-webpack-plugin: 3.4.1(webpack@5.91.0) - cssnano: 5.1.15(postcss@8.4.38) - debug: 4.3.4 + copy-webpack-plugin: 9.1.0(webpack@5.103.0) + css-loader: 6.11.0(webpack@5.103.0) + css-minimizer-webpack-plugin: 3.4.1(webpack@5.103.0) + cssnano: 5.1.15(postcss@8.5.6) + debug: 4.4.3 default-gateway: 6.0.3 dotenv: 10.0.0 dotenv-expand: 5.1.0 fs-extra: 9.1.0 globby: 11.1.0 hash-sum: 2.0.0 - html-webpack-plugin: 5.6.0(webpack@5.91.0) + html-webpack-plugin: 5.6.5(webpack@5.103.0) is-file-esm: 1.0.0 - launch-editor-middleware: 2.6.1 + launch-editor-middleware: 2.12.0 lodash.defaultsdeep: 4.6.1 lodash.mapvalues: 4.6.0 - mini-css-extract-plugin: 2.9.0(webpack@5.91.0) + mini-css-extract-plugin: 2.9.4(webpack@5.103.0) minimist: 1.2.8 module-alias: 2.2.3 - portfinder: 1.0.32 - postcss: 8.4.38 - postcss-loader: 6.2.1(postcss@8.4.38)(webpack@5.91.0) - progress-webpack-plugin: 1.0.16(webpack@5.91.0) + portfinder: 1.0.38 + postcss: 8.5.6 + postcss-loader: 6.2.1(postcss@8.5.6)(webpack@5.103.0) + progress-webpack-plugin: 1.0.16(webpack@5.103.0) ssri: 8.0.1 - terser-webpack-plugin: 5.3.10(webpack@5.91.0) - thread-loader: 3.0.4(webpack@5.91.0) - vue-loader: 17.4.2(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.5.4))(webpack@5.91.0) + terser-webpack-plugin: 5.3.14(webpack@5.103.0) + thread-loader: 3.0.4(webpack@5.103.0) + vue-loader: 17.4.2(@vue/compiler-sfc@3.5.25)(vue@3.5.25(typescript@5.5.4))(webpack@5.103.0) vue-style-loader: 4.1.3 - webpack: 5.91.0(webpack-cli@5.1.4) + webpack: 5.103.0 webpack-bundle-analyzer: 4.10.2 webpack-chain: 6.5.1 - webpack-dev-server: 4.15.2(debug@4.3.4)(webpack@5.91.0) + webpack-dev-server: 4.15.2(debug@4.4.3)(webpack@5.103.0) webpack-merge: 5.10.0 webpack-virtual-modules: 0.4.6 whatwg-fetch: 3.6.20 optionalDependencies: - vue-template-compiler: 2.7.16 - webpack-sources: 3.2.3 + webpack-sources: 3.3.3 transitivePeerDependencies: - '@parcel/css' - '@rspack/core' @@ -26672,65 +16945,52 @@ snapshots: - webpack-cli - whiskers - '@vue/cli-shared-utils@5.0.8(encoding@0.1.13)': + '@vue/cli-shared-utils@5.0.9(encoding@0.1.13)': dependencies: - '@achrinza/node-ipc': 9.2.8 + '@achrinza/node-ipc': 9.2.9 chalk: 4.1.2 execa: 1.0.0 - joi: 17.13.1 - launch-editor: 2.6.1 + joi: 17.13.3 + launch-editor: 2.12.0 lru-cache: 6.0.0 node-fetch: 2.7.0(encoding@0.1.13) open: 8.4.2 ora: 5.4.1 read-pkg: 5.2.0 - semver: 7.6.2 + semver: 7.7.3 strip-ansi: 6.0.1 transitivePeerDependencies: - encoding - '@vue/compiler-core@3.4.27': + '@vue/compiler-core@3.5.25': dependencies: - '@babel/parser': 7.24.5 - '@vue/shared': 3.4.27 + '@babel/parser': 7.28.5 + '@vue/shared': 3.5.25 entities: 4.5.0 estree-walker: 2.0.2 - source-map-js: 1.2.0 - - '@vue/compiler-dom@3.4.27': - dependencies: - '@vue/compiler-core': 3.4.27 - '@vue/shared': 3.4.27 + source-map-js: 1.2.1 - '@vue/compiler-sfc@2.7.16': + '@vue/compiler-dom@3.5.25': dependencies: - '@babel/parser': 7.26.2 - postcss: 8.4.49 - source-map: 0.6.1 - optionalDependencies: - prettier: 2.8.8 + '@vue/compiler-core': 3.5.25 + '@vue/shared': 3.5.25 - '@vue/compiler-sfc@3.4.27': + '@vue/compiler-sfc@3.5.25': dependencies: - '@babel/parser': 7.24.5 - '@vue/compiler-core': 3.4.27 - '@vue/compiler-dom': 3.4.27 - '@vue/compiler-ssr': 3.4.27 - '@vue/shared': 3.4.27 + '@babel/parser': 7.28.5 + '@vue/compiler-core': 3.5.25 + '@vue/compiler-dom': 3.5.25 + '@vue/compiler-ssr': 3.5.25 + '@vue/shared': 3.5.25 estree-walker: 2.0.2 - magic-string: 0.30.10 - postcss: 8.4.38 - source-map-js: 1.2.0 - - '@vue/compiler-ssr@3.4.27': - dependencies: - '@vue/compiler-dom': 3.4.27 - '@vue/shared': 3.4.27 + magic-string: 0.30.21 + postcss: 8.5.6 + source-map-js: 1.2.1 - '@vue/compiler-vue2@2.7.16': + '@vue/compiler-ssr@3.5.25': dependencies: - de-indent: 1.0.2 - he: 1.2.0 + '@vue/compiler-dom': 3.5.25 + '@vue/shared': 3.5.25 '@vue/component-compiler-utils@3.3.0(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.17.21)': dependencies: @@ -26739,7 +16999,7 @@ snapshots: lru-cache: 4.1.5 merge-source-map: 1.1.0 postcss: 7.0.39 - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.2 source-map: 0.6.1 vue-template-es2015-compiler: 1.9.1 optionalDependencies: @@ -26799,239 +17059,143 @@ snapshots: - walrus - whiskers - '@vue/eslint-config-prettier@9.0.0(@types/eslint@8.56.10)(eslint@8.57.0)(prettier@3.3.3)': + '@vue/eslint-config-typescript@11.0.3(eslint-plugin-vue@9.33.0(eslint@8.57.1))(eslint@8.57.1)(typescript@5.5.4)': dependencies: - eslint: 8.57.0 - eslint-config-prettier: 9.1.0(eslint@8.57.0) - eslint-plugin-prettier: 5.2.1(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3) - prettier: 3.3.3 - transitivePeerDependencies: - - '@types/eslint' - - '@vue/eslint-config-typescript@11.0.3(eslint-plugin-vue@9.26.0(eslint@8.57.0))(eslint@8.57.0)(typescript@5.5.4)': - dependencies: - '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0)(typescript@5.5.4) - '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.4) - eslint: 8.57.0 - eslint-plugin-vue: 9.26.0(eslint@8.57.0) - vue-eslint-parser: 9.4.2(eslint@8.57.0) + '@typescript-eslint/eslint-plugin': 5.62.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1)(typescript@5.5.4) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.5.4) + eslint: 8.57.1 + eslint-plugin-vue: 9.33.0(eslint@8.57.1) + vue-eslint-parser: 9.4.3(eslint@8.57.1) optionalDependencies: typescript: 5.5.4 transitivePeerDependencies: - supports-color - '@vue/eslint-config-typescript@13.0.0(eslint-plugin-vue@9.26.0(eslint@8.57.0))(eslint@8.57.0)(typescript@5.4.5)': - dependencies: - '@typescript-eslint/eslint-plugin': 7.18.0(@typescript-eslint/parser@7.18.0(eslint@8.57.0)(typescript@5.4.5))(eslint@8.57.0)(typescript@5.4.5) - '@typescript-eslint/parser': 7.18.0(eslint@8.57.0)(typescript@5.4.5) - eslint: 8.57.0 - eslint-plugin-vue: 9.26.0(eslint@8.57.0) - vue-eslint-parser: 9.4.2(eslint@8.57.0) - optionalDependencies: - typescript: 5.4.5 - transitivePeerDependencies: - - supports-color - - '@vue/language-core@1.8.27(typescript@5.4.5)': - dependencies: - '@volar/language-core': 1.11.1 - '@volar/source-map': 1.11.1 - '@vue/compiler-dom': 3.4.27 - '@vue/shared': 3.4.27 - computeds: 0.0.1 - minimatch: 9.0.4 - muggle-string: 0.3.1 - path-browserify: 1.0.1 - vue-template-compiler: 2.7.16 - optionalDependencies: - typescript: 5.4.5 - - '@vue/language-core@2.0.29(typescript@5.4.5)': - dependencies: - '@volar/language-core': 2.4.0 - '@vue/compiler-dom': 3.4.27 - '@vue/compiler-vue2': 2.7.16 - '@vue/shared': 3.4.27 - computeds: 0.0.1 - minimatch: 9.0.4 - muggle-string: 0.4.1 - path-browserify: 1.0.1 - optionalDependencies: - typescript: 5.4.5 - - '@vue/reactivity@3.4.27': - dependencies: - '@vue/shared': 3.4.27 - - '@vue/runtime-core@3.4.27': + '@vue/reactivity@3.5.25': dependencies: - '@vue/reactivity': 3.4.27 - '@vue/shared': 3.4.27 + '@vue/shared': 3.5.25 - '@vue/runtime-dom@3.4.27': + '@vue/runtime-core@3.5.25': dependencies: - '@vue/runtime-core': 3.4.27 - '@vue/shared': 3.4.27 - csstype: 3.1.3 + '@vue/reactivity': 3.5.25 + '@vue/shared': 3.5.25 - '@vue/server-renderer@3.4.27(vue@3.4.27(typescript@5.4.5))': + '@vue/runtime-dom@3.5.25': dependencies: - '@vue/compiler-ssr': 3.4.27 - '@vue/shared': 3.4.27 - vue: 3.4.27(typescript@5.4.5) + '@vue/reactivity': 3.5.25 + '@vue/runtime-core': 3.5.25 + '@vue/shared': 3.5.25 + csstype: 3.2.3 - '@vue/server-renderer@3.4.27(vue@3.4.27(typescript@5.5.4))': + '@vue/server-renderer@3.5.25(vue@3.5.25(typescript@5.5.4))': dependencies: - '@vue/compiler-ssr': 3.4.27 - '@vue/shared': 3.4.27 - vue: 3.4.27(typescript@5.5.4) + '@vue/compiler-ssr': 3.5.25 + '@vue/shared': 3.5.25 + vue: 3.5.25(typescript@5.5.4) - '@vue/shared@3.4.27': {} + '@vue/shared@3.5.25': {} '@vue/test-utils@2.4.6': dependencies: - js-beautify: 1.15.1 - vue-component-type-helpers: 2.0.19 - - '@vue/tsconfig@0.5.1': {} + js-beautify: 1.15.4 + vue-component-type-helpers: 2.2.12 - '@vue/vue3-jest@27.0.0(@babel/core@7.24.5)(babel-jest@27.5.1(@babel/core@7.24.5))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(ts-jest@27.1.5(@babel/core@7.24.5)(@types/jest@27.5.2)(babel-jest@27.5.1(@babel/core@7.24.5))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(typescript@5.5.4))(typescript@5.5.4)(vue@3.4.27(typescript@5.5.4))': + '@vue/vue3-jest@27.0.0(@babel/core@7.28.5)(babel-jest@27.5.1(@babel/core@7.28.5))(jest@27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4)))(ts-jest@27.1.5(@babel/core@7.28.5)(@types/jest@27.5.2)(babel-jest@27.5.1(@babel/core@7.28.5))(jest@27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4)))(typescript@5.5.4))(typescript@5.5.4)(vue@3.5.25(typescript@5.5.4))': dependencies: - '@babel/core': 7.24.5 - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - babel-jest: 27.5.1(@babel/core@7.24.5) + '@babel/core': 7.28.5 + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) + babel-jest: 27.5.1(@babel/core@7.28.5) chalk: 2.4.2 convert-source-map: 1.9.0 css-tree: 2.3.1 - jest: 27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)) + jest: 27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4)) source-map: 0.5.6 tsconfig: 7.0.0 - vue: 3.4.27(typescript@5.5.4) + vue: 3.5.25(typescript@5.5.4) optionalDependencies: - ts-jest: 27.1.5(@babel/core@7.24.5)(@types/jest@27.5.2)(babel-jest@27.5.1(@babel/core@7.24.5))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(typescript@5.5.4) + ts-jest: 27.1.5(@babel/core@7.28.5)(@types/jest@27.5.2)(babel-jest@27.5.1(@babel/core@7.28.5))(jest@27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4)))(typescript@5.5.4) typescript: 5.5.4 + transitivePeerDependencies: + - supports-color '@vue/web-component-wrapper@1.3.0': {} - '@vuetify/loader-shared@2.0.3(vue@3.4.27(typescript@5.4.5))(vuetify@3.7.0)': + '@webassemblyjs/ast@1.14.1': dependencies: - upath: 2.0.1 - vue: 3.4.27(typescript@5.4.5) - vuetify: 3.7.0(typescript@5.4.5)(vite-plugin-vuetify@2.0.4)(vue@3.4.27(typescript@5.4.5)) - - '@webassemblyjs/ast@1.12.1': - dependencies: - '@webassemblyjs/helper-numbers': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 + '@webassemblyjs/helper-numbers': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 - '@webassemblyjs/floating-point-hex-parser@1.11.6': {} + '@webassemblyjs/floating-point-hex-parser@1.13.2': {} - '@webassemblyjs/helper-api-error@1.11.6': {} + '@webassemblyjs/helper-api-error@1.13.2': {} - '@webassemblyjs/helper-buffer@1.12.1': {} + '@webassemblyjs/helper-buffer@1.14.1': {} - '@webassemblyjs/helper-numbers@1.11.6': + '@webassemblyjs/helper-numbers@1.13.2': dependencies: - '@webassemblyjs/floating-point-hex-parser': 1.11.6 - '@webassemblyjs/helper-api-error': 1.11.6 + '@webassemblyjs/floating-point-hex-parser': 1.13.2 + '@webassemblyjs/helper-api-error': 1.13.2 '@xtuc/long': 4.2.2 - '@webassemblyjs/helper-wasm-bytecode@1.11.6': {} + '@webassemblyjs/helper-wasm-bytecode@1.13.2': {} - '@webassemblyjs/helper-wasm-section@1.12.1': + '@webassemblyjs/helper-wasm-section@1.14.1': dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/wasm-gen': 1.12.1 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/wasm-gen': 1.14.1 - '@webassemblyjs/ieee754@1.11.6': + '@webassemblyjs/ieee754@1.13.2': dependencies: '@xtuc/ieee754': 1.2.0 - '@webassemblyjs/leb128@1.11.6': + '@webassemblyjs/leb128@1.13.2': dependencies: '@xtuc/long': 4.2.2 - '@webassemblyjs/utf8@1.11.6': {} + '@webassemblyjs/utf8@1.13.2': {} - '@webassemblyjs/wasm-edit@1.12.1': + '@webassemblyjs/wasm-edit@1.14.1': dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/helper-wasm-section': 1.12.1 - '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/wasm-opt': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - '@webassemblyjs/wast-printer': 1.12.1 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/helper-wasm-section': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-opt': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + '@webassemblyjs/wast-printer': 1.14.1 - '@webassemblyjs/wasm-gen@1.12.1': + '@webassemblyjs/wasm-gen@1.14.1': dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 - '@webassemblyjs/wasm-opt@1.12.1': + '@webassemblyjs/wasm-opt@1.14.1': dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-buffer': 1.12.1 - '@webassemblyjs/wasm-gen': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-buffer': 1.14.1 + '@webassemblyjs/wasm-gen': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 - '@webassemblyjs/wasm-parser@1.12.1': + '@webassemblyjs/wasm-parser@1.14.1': dependencies: - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/helper-api-error': 1.11.6 - '@webassemblyjs/helper-wasm-bytecode': 1.11.6 - '@webassemblyjs/ieee754': 1.11.6 - '@webassemblyjs/leb128': 1.11.6 - '@webassemblyjs/utf8': 1.11.6 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/helper-api-error': 1.13.2 + '@webassemblyjs/helper-wasm-bytecode': 1.13.2 + '@webassemblyjs/ieee754': 1.13.2 + '@webassemblyjs/leb128': 1.13.2 + '@webassemblyjs/utf8': 1.13.2 - '@webassemblyjs/wast-printer@1.12.1': + '@webassemblyjs/wast-printer@1.14.1': dependencies: - '@webassemblyjs/ast': 1.12.1 + '@webassemblyjs/ast': 1.14.1 '@xtuc/long': 4.2.2 - '@webpack-cli/configtest@2.1.1(webpack-cli@5.1.4)(webpack@5.91.0)': - dependencies: - webpack: 5.91.0(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@4.15.2)(webpack@5.91.0) - - '@webpack-cli/info@2.0.2(webpack-cli@5.1.4)(webpack@5.91.0)': - dependencies: - webpack: 5.91.0(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@4.15.2)(webpack@5.91.0) - - '@webpack-cli/serve@2.0.5(webpack-cli@5.1.4)(webpack-dev-server@4.15.2)(webpack@5.91.0)': - dependencies: - webpack: 5.91.0(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@4.15.2)(webpack@5.91.0) - optionalDependencies: - webpack-dev-server: 4.15.2(webpack-cli@5.1.4)(webpack@5.91.0) - - '@wojtekmaj/enzyme-adapter-react-17@0.6.7(enzyme@3.11.0)(react-dom@17.0.2(react@17.0.2))(react@17.0.2)': - dependencies: - '@wojtekmaj/enzyme-adapter-utils': 0.1.4(react@17.0.2) - enzyme: 3.11.0 - enzyme-shallow-equal: 1.0.7 - has: 1.0.4 - prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - react-is: 17.0.2 - react-test-renderer: 17.0.2(react@17.0.2) - - '@wojtekmaj/enzyme-adapter-utils@0.1.4(react@17.0.2)': - dependencies: - function.prototype.name: 1.1.6 - has: 1.0.4 - object.fromentries: 2.0.8 - prop-types: 15.8.1 - react: 17.0.2 - '@xtuc/ieee754@1.2.0': {} '@xtuc/long@4.2.2': {} @@ -27040,8 +17204,8 @@ snapshots: '@yarnpkg/parsers@3.0.0-rc.46': dependencies: - js-yaml: 3.14.1 - tslib: 2.6.2 + js-yaml: 3.14.2 + tslib: 2.8.1 '@zkochan/js-yaml@0.0.6': dependencies: @@ -27062,6 +17226,8 @@ snapshots: abbrev@2.0.0: {} + abbrev@3.0.1: {} + accepts@1.3.8: dependencies: mime-types: 2.1.35 @@ -27072,54 +17238,41 @@ snapshots: acorn: 7.4.1 acorn-walk: 7.2.0 - acorn-import-assertions@1.9.0(acorn@8.11.3): + acorn-import-attributes@1.9.5(acorn@8.15.0): dependencies: - acorn: 8.11.3 + acorn: 8.15.0 - acorn-import-attributes@1.9.5(acorn@8.11.3): + acorn-import-phases@1.0.4(acorn@8.15.0): dependencies: - acorn: 8.11.3 + acorn: 8.15.0 - acorn-jsx@5.3.2(acorn@8.11.3): + acorn-jsx@5.3.2(acorn@8.15.0): dependencies: - acorn: 8.11.3 + acorn: 8.15.0 acorn-walk@7.2.0: {} - acorn-walk@8.3.2: {} + acorn-walk@8.3.4: + dependencies: + acorn: 8.15.0 acorn@7.4.1: {} - acorn@8.11.3: {} + acorn@8.15.0: {} add-stream@1.0.0: {} address@1.2.2: {} - adjust-sourcemap-loader@4.0.0: - dependencies: - loader-utils: 2.0.4 - regex-parser: 2.3.0 - - adm-zip@0.5.12: {} - - agent-base@4.3.0: - dependencies: - es6-promisify: 5.0.0 - agent-base@6.0.2: dependencies: - debug: 4.3.7 + debug: 4.4.3 transitivePeerDependencies: - supports-color - agent-base@7.1.1: - dependencies: - debug: 4.3.7 - transitivePeerDependencies: - - supports-color + agent-base@7.1.4: {} - agentkeepalive@4.5.0: + agentkeepalive@4.6.0: dependencies: humanize-ms: 1.2.1 @@ -27128,29 +17281,21 @@ snapshots: clean-stack: 2.2.0 indent-string: 4.0.0 - ajv-errors@1.0.1(ajv@6.12.6): - dependencies: - ajv: 6.12.6 - - ajv-formats@2.1.1(ajv@8.13.0): + ajv-formats@2.1.1(ajv@8.17.1): optionalDependencies: - ajv: 8.13.0 + ajv: 8.17.1 ajv-formats@3.0.1(ajv@8.17.1): optionalDependencies: ajv: 8.17.1 - ajv-i18n@4.2.0(ajv@8.17.1): - dependencies: - ajv: 8.17.1 - ajv-keywords@3.5.2(ajv@6.12.6): dependencies: ajv: 6.12.6 - ajv-keywords@5.1.0(ajv@8.13.0): + ajv-keywords@5.1.0(ajv@8.17.1): dependencies: - ajv: 8.13.0 + ajv: 8.17.1 fast-deep-equal: 3.1.3 ajv@6.12.6: @@ -27160,22 +17305,13 @@ snapshots: json-schema-traverse: 0.4.1 uri-js: 4.4.1 - ajv@8.13.0: - dependencies: - fast-deep-equal: 3.1.3 - json-schema-traverse: 1.0.0 - require-from-string: 2.0.2 - uri-js: 4.4.1 - ajv@8.17.1: dependencies: fast-deep-equal: 3.1.3 - fast-uri: 3.0.3 + fast-uri: 3.1.0 json-schema-traverse: 1.0.0 require-from-string: 2.0.2 - ansi-colors@3.2.4: {} - ansi-colors@4.1.1: {} ansi-colors@4.1.3: {} @@ -27186,25 +17322,21 @@ snapshots: dependencies: type-fest: 0.21.3 - ansi-escapes@7.0.0: + ansi-escapes@7.2.0: dependencies: environment: 1.1.0 ansi-html-community@0.0.8: {} - ansi-regex@2.1.1: {} - ansi-regex@3.0.1: {} ansi-regex@4.1.1: {} ansi-regex@5.0.1: {} - ansi-regex@6.0.1: {} - - ansi-sequence-parser@1.1.1: {} + ansi-regex@6.2.2: {} - ansi-styles@2.2.1: {} + ansi-sequence-parser@1.1.3: {} ansi-styles@3.2.1: dependencies: @@ -27216,7 +17348,7 @@ snapshots: ansi-styles@5.2.0: {} - ansi-styles@6.2.1: {} + ansi-styles@6.2.3: {} any-promise@1.3.0: {} @@ -27233,19 +17365,12 @@ snapshots: dependencies: default-require-extensions: 3.0.1 - aproba@1.2.0: {} - - aproba@2.0.0: {} + aproba@2.1.0: {} arch@2.2.0: {} archy@1.0.0: {} - are-we-there-yet@2.0.0: - dependencies: - delegates: 1.0.0 - readable-stream: 3.6.2 - are-we-there-yet@3.0.1: dependencies: delegates: 1.0.0 @@ -27261,12 +17386,10 @@ snapshots: argparse@2.0.1: {} - aria-query@5.3.2: {} - - array-buffer-byte-length@1.0.1: + array-buffer-byte-length@1.0.2: dependencies: - call-bind: 1.0.7 - is-array-buffer: 3.0.4 + call-bound: 1.0.4 + is-array-buffer: 3.0.5 array-differ@3.0.0: {} @@ -27276,89 +17399,52 @@ snapshots: array-ify@1.0.0: {} - array-includes@3.1.8: + array-includes@3.1.9: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - is-string: 1.0.7 - - array-union@1.0.2: - dependencies: - array-uniq: 1.0.3 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + is-string: 1.1.1 + math-intrinsics: 1.1.0 array-union@2.1.0: {} - array-uniq@1.0.3: {} - - array.prototype.filter@1.0.4: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-array-method-boxes-properly: 1.0.0 - es-object-atoms: 1.0.0 - is-string: 1.0.7 - - array.prototype.findlast@1.2.5: + array.prototype.findlastindex@1.2.6: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.24.0 es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-shim-unscopables: 1.0.2 + es-object-atoms: 1.1.1 + es-shim-unscopables: 1.1.0 - array.prototype.findlastindex@1.2.5: + array.prototype.flat@1.3.3: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-shim-unscopables: 1.0.2 - - array.prototype.flat@1.3.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - - array.prototype.flatmap@1.3.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 - - array.prototype.toreversed@1.1.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-shim-unscopables: 1.0.2 + es-abstract: 1.24.0 + es-shim-unscopables: 1.1.0 - array.prototype.tosorted@1.1.3: + array.prototype.flatmap@1.3.3: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-shim-unscopables: 1.0.2 + es-abstract: 1.24.0 + es-shim-unscopables: 1.1.0 - arraybuffer.prototype.slice@1.0.3: + arraybuffer.prototype.slice@1.0.4: dependencies: - array-buffer-byte-length: 1.0.1 - call-bind: 1.0.7 + array-buffer-byte-length: 1.0.2 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.24.0 es-errors: 1.3.0 - get-intrinsic: 1.2.4 - is-array-buffer: 3.0.4 - is-shared-array-buffer: 1.0.3 + get-intrinsic: 1.3.0 + is-array-buffer: 3.0.5 arrgv@1.0.2: {} @@ -27368,31 +17454,15 @@ snapshots: arrify@3.0.0: {} - asap@2.0.6: {} - - asn1.js@4.10.1: - dependencies: - bn.js: 4.12.0 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - asn1@0.2.6: dependencies: safer-buffer: 2.1.2 assert-plus@1.0.0: {} - assert@2.1.0: - dependencies: - call-bind: 1.0.7 - is-nan: 1.3.2 - object-is: 1.1.6 - object.assign: 4.1.5 - util: 0.12.5 - assertion-error@1.1.0: {} - ast-types@0.9.6: {} + async-function@1.0.0: {} async-sema@3.1.1: {} @@ -27400,7 +17470,7 @@ snapshots: dependencies: lodash: 4.17.21 - async@3.2.5: {} + async@3.2.6: {} asynckit@0.4.0: {} @@ -27408,151 +17478,109 @@ snapshots: atob@2.1.2: {} - autoprefixer@10.4.19(postcss@8.4.38): - dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001621 - fraction.js: 4.3.7 - normalize-range: 0.1.2 - picocolors: 1.0.1 - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - autoprefixer@10.4.20(postcss@8.4.41): + autoprefixer@10.4.22(postcss@8.5.6): dependencies: - browserslist: 4.24.2 - caniuse-lite: 1.0.30001685 - fraction.js: 4.3.7 + browserslist: 4.28.0 + caniuse-lite: 1.0.30001757 + fraction.js: 5.3.4 normalize-range: 0.1.2 - picocolors: 1.0.1 - postcss: 8.4.41 + picocolors: 1.1.1 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - ava@6.1.3(encoding@0.1.13): + ava@6.4.1(encoding@0.1.13)(rollup@2.79.2): dependencies: - '@vercel/nft': 0.26.5(encoding@0.1.13) - acorn: 8.11.3 - acorn-walk: 8.3.2 - ansi-styles: 6.2.1 + '@vercel/nft': 0.29.4(encoding@0.1.13)(rollup@2.79.2) + acorn: 8.15.0 + acorn-walk: 8.3.4 + ansi-styles: 6.2.3 arrgv: 1.0.2 arrify: 3.0.0 - callsites: 4.1.0 - cbor: 9.0.2 - chalk: 5.3.0 + callsites: 4.2.0 + cbor: 10.0.11 + chalk: 5.6.2 chunkd: 2.0.1 - ci-info: 4.0.0 + ci-info: 4.3.1 ci-parallel-vars: 1.0.1 cli-truncate: 4.0.0 code-excerpt: 4.0.0 common-path-prefix: 3.0.0 concordance: 5.0.4 currently-unhandled: 0.4.1 - debug: 4.3.4 - emittery: 1.0.3 + debug: 4.4.3 + emittery: 1.2.0 figures: 6.1.0 - globby: 14.0.1 + globby: 14.1.0 ignore-by-default: 2.1.0 indent-string: 5.0.0 is-plain-object: 5.0.0 is-promise: 4.0.0 matcher: 5.0.0 - memoize: 10.0.0 + memoize: 10.2.0 ms: 2.1.3 - p-map: 7.0.2 + p-map: 7.0.4 package-config: 5.0.0 - picomatch: 3.0.1 + picomatch: 4.0.3 plur: 5.1.0 - pretty-ms: 9.0.0 + pretty-ms: 9.3.0 resolve-cwd: 3.0.0 stack-utils: 2.0.6 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 supertap: 3.0.1 temp-dir: 3.0.0 - write-file-atomic: 5.0.1 + write-file-atomic: 6.0.0 yargs: 17.7.2 transitivePeerDependencies: - encoding + - rollup - supports-color available-typed-arrays@1.0.7: dependencies: - possible-typed-array-names: 1.0.0 + possible-typed-array-names: 1.1.0 aws-sign2@0.7.0: {} - aws4@1.13.0: {} + aws4@1.13.2: {} - axios@1.7.2: + axios@1.13.2: dependencies: - follow-redirects: 1.15.6(debug@4.3.4) - form-data: 4.0.0 + follow-redirects: 1.15.11(debug@4.4.3) + form-data: 4.0.5 proxy-from-env: 1.1.0 transitivePeerDependencies: - debug - axobject-query@4.1.0: {} - - babel-jest@27.5.1(@babel/core@7.24.5): - dependencies: - '@babel/core': 7.24.5 - '@jest/transform': 27.5.1 - '@jest/types': 27.5.1 - '@types/babel__core': 7.20.5 - babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 27.5.1(@babel/core@7.24.5) - chalk: 4.1.2 - graceful-fs: 4.2.11 - slash: 3.0.0 - transitivePeerDependencies: - - supports-color - - babel-jest@27.5.1(@babel/core@7.25.2): + babel-jest@27.5.1(@babel/core@7.28.5): dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.28.5 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 '@types/babel__core': 7.20.5 babel-plugin-istanbul: 6.1.1 - babel-preset-jest: 27.5.1(@babel/core@7.25.2) + babel-preset-jest: 27.5.1(@babel/core@7.28.5) chalk: 4.1.2 graceful-fs: 4.2.11 slash: 3.0.0 transitivePeerDependencies: - supports-color - optional: true - - babel-loader@8.3.0(@babel/core@7.24.5)(webpack@5.91.0): - dependencies: - '@babel/core': 7.24.5 - find-cache-dir: 3.3.2 - loader-utils: 2.0.4 - make-dir: 3.1.0 - schema-utils: 2.7.1 - webpack: 5.91.0(webpack-cli@5.1.4) - babel-loader@8.3.0(@babel/core@7.25.2)(webpack@5.91.0): + babel-loader@8.4.1(@babel/core@7.28.5)(webpack@5.103.0): dependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.28.5 find-cache-dir: 3.3.2 loader-utils: 2.0.4 make-dir: 3.1.0 schema-utils: 2.7.1 - webpack: 5.91.0(webpack-cli@5.1.4) - - babel-loader@9.1.3(@babel/core@7.25.2)(webpack@5.94.0(esbuild@0.23.0)): - dependencies: - '@babel/core': 7.25.2 - find-cache-dir: 4.0.0 - schema-utils: 4.2.0 - webpack: 5.94.0(esbuild@0.23.0) + webpack: 5.103.0 babel-plugin-dynamic-import-node@2.3.3: dependencies: - object.assign: 4.1.5 + object.assign: 4.1.7 babel-plugin-istanbul@6.1.1: dependencies: - '@babel/helper-plugin-utils': 7.24.5 + '@babel/helper-plugin-utils': 7.27.1 '@istanbuljs/load-nyc-config': 1.1.0 '@istanbuljs/schema': 0.1.3 istanbul-lib-instrument: 5.2.1 @@ -27562,120 +17590,65 @@ snapshots: babel-plugin-jest-hoist@27.5.1: dependencies: - '@babel/template': 7.24.0 - '@babel/types': 7.24.5 + '@babel/template': 7.27.2 + '@babel/types': 7.28.5 '@types/babel__core': 7.20.5 - '@types/babel__traverse': 7.20.6 - - babel-plugin-macros@3.1.0: - dependencies: - '@babel/runtime': 7.24.5 - cosmiconfig: 7.1.0 - resolve: 1.22.8 - - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.24.5): - dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.24.5 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) - semver: 6.3.1 - transitivePeerDependencies: - - supports-color + '@types/babel__traverse': 7.28.0 - babel-plugin-polyfill-corejs2@0.4.11(@babel/core@7.25.2): + babel-plugin-polyfill-corejs2@0.4.14(@babel/core@7.28.5): dependencies: - '@babel/compat-data': 7.24.4 - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) + '@babel/compat-data': 7.28.5 + '@babel/core': 7.28.5 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) semver: 6.3.1 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.24.5): - dependencies: - '@babel/core': 7.24.5 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) - core-js-compat: 3.37.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-corejs3@0.10.4(@babel/core@7.25.2): - dependencies: - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) - core-js-compat: 3.37.1 - transitivePeerDependencies: - - supports-color - - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.24.5): + babel-plugin-polyfill-corejs3@0.13.0(@babel/core@7.28.5): dependencies: - '@babel/core': 7.24.5 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.24.5) + '@babel/core': 7.28.5 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) + core-js-compat: 3.47.0 transitivePeerDependencies: - supports-color - babel-plugin-polyfill-regenerator@0.6.2(@babel/core@7.25.2): + babel-plugin-polyfill-regenerator@0.6.5(@babel/core@7.28.5): dependencies: - '@babel/core': 7.25.2 - '@babel/helper-define-polyfill-provider': 0.6.2(@babel/core@7.25.2) + '@babel/core': 7.28.5 + '@babel/helper-define-polyfill-provider': 0.6.5(@babel/core@7.28.5) transitivePeerDependencies: - supports-color - babel-preset-current-node-syntax@1.0.1(@babel/core@7.24.5): - dependencies: - '@babel/core': 7.24.5 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.24.5) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.24.5) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.24.5) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.24.5) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.24.5) - - babel-preset-current-node-syntax@1.0.1(@babel/core@7.25.2): - dependencies: - '@babel/core': 7.25.2 - '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.25.2) - '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.25.2) - '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.25.2) - '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.25.2) - '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.25.2) - optional: true - - babel-preset-jest@27.5.1(@babel/core@7.24.5): - dependencies: - '@babel/core': 7.24.5 - babel-plugin-jest-hoist: 27.5.1 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.5) - - babel-preset-jest@27.5.1(@babel/core@7.25.2): - dependencies: - '@babel/core': 7.25.2 + babel-preset-current-node-syntax@1.2.0(@babel/core@7.28.5): + dependencies: + '@babel/core': 7.28.5 + '@babel/plugin-syntax-async-generators': 7.8.4(@babel/core@7.28.5) + '@babel/plugin-syntax-bigint': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-class-properties': 7.12.13(@babel/core@7.28.5) + '@babel/plugin-syntax-class-static-block': 7.14.5(@babel/core@7.28.5) + '@babel/plugin-syntax-import-attributes': 7.27.1(@babel/core@7.28.5) + '@babel/plugin-syntax-import-meta': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-json-strings': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-logical-assignment-operators': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-nullish-coalescing-operator': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-numeric-separator': 7.10.4(@babel/core@7.28.5) + '@babel/plugin-syntax-object-rest-spread': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-optional-catch-binding': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-optional-chaining': 7.8.3(@babel/core@7.28.5) + '@babel/plugin-syntax-private-property-in-object': 7.14.5(@babel/core@7.28.5) + '@babel/plugin-syntax-top-level-await': 7.14.5(@babel/core@7.28.5) + + babel-preset-jest@27.5.1(@babel/core@7.28.5): + dependencies: + '@babel/core': 7.28.5 babel-plugin-jest-hoist: 27.5.1 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.25.2) - optional: true + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5) balanced-match@1.0.2: {} base64-js@1.5.1: {} - base64id@2.0.0: {} - - basic-auth@2.0.1: - dependencies: - safe-buffer: 5.1.2 + baseline-browser-mapping@2.8.31: {} batch@0.6.1: {} @@ -27710,19 +17683,11 @@ snapshots: inherits: 2.0.4 readable-stream: 3.6.2 - blocking-proxy@1.0.1: - dependencies: - minimist: 1.2.8 - bluebird@3.7.2: {} blueimp-md5@2.19.0: {} - bn.js@4.12.0: {} - - bn.js@5.2.1: {} - - body-parser@1.20.2: + body-parser@1.20.3: dependencies: bytes: 3.1.2 content-type: 1.0.5 @@ -27732,26 +17697,26 @@ snapshots: http-errors: 2.0.0 iconv-lite: 0.4.24 on-finished: 2.4.1 - qs: 6.11.0 + qs: 6.13.0 raw-body: 2.5.2 type-is: 1.6.18 unpipe: 1.0.0 transitivePeerDependencies: - supports-color - bonjour-service@1.2.1: + bonjour-service@1.3.0: dependencies: fast-deep-equal: 3.1.3 multicast-dns: 7.2.5 boolbase@1.0.0: {} - brace-expansion@1.1.11: + brace-expansion@1.1.12: dependencies: balanced-match: 1.0.2 concat-map: 0.0.1 - brace-expansion@2.0.1: + brace-expansion@2.0.2: dependencies: balanced-match: 1.0.2 @@ -27759,79 +17724,17 @@ snapshots: dependencies: fill-range: 7.1.1 - brorand@1.1.0: {} - browser-process-hrtime@1.0.0: {} - browser-resolve@2.0.0: - dependencies: - resolve: 1.22.8 - browser-stdout@1.3.1: {} - browserify-aes@1.2.0: - dependencies: - buffer-xor: 1.0.3 - cipher-base: 1.0.4 - create-hash: 1.2.0 - evp_bytestokey: 1.0.3 - inherits: 2.0.4 - safe-buffer: 5.2.1 - - browserify-cipher@1.0.1: - dependencies: - browserify-aes: 1.2.0 - browserify-des: 1.0.2 - evp_bytestokey: 1.0.3 - - browserify-des@1.0.2: - dependencies: - cipher-base: 1.0.4 - des.js: 1.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 - - browserify-rsa@4.1.0: - dependencies: - bn.js: 5.2.1 - randombytes: 2.1.0 - - browserify-sign@4.2.3: + browserslist@4.28.0: dependencies: - bn.js: 5.2.1 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - create-hmac: 1.1.7 - elliptic: 6.5.7 - hash-base: 3.0.4 - inherits: 2.0.4 - parse-asn1: 5.1.7 - readable-stream: 2.3.8 - safe-buffer: 5.2.1 - - browserify-zlib@0.2.0: - dependencies: - pako: 1.0.11 - - browserslist@4.23.0: - dependencies: - caniuse-lite: 1.0.30001621 - electron-to-chromium: 1.4.779 - node-releases: 2.0.14 - update-browserslist-db: 1.0.16(browserslist@4.23.0) - - browserslist@4.24.2: - dependencies: - caniuse-lite: 1.0.30001685 - electron-to-chromium: 1.5.67 - node-releases: 2.0.18 - update-browserslist-db: 1.1.1(browserslist@4.24.2) - - browserstack@1.6.1: - dependencies: - https-proxy-agent: 2.2.4 - transitivePeerDependencies: - - supports-color + baseline-browser-mapping: 2.8.31 + caniuse-lite: 1.0.30001757 + electron-to-chromium: 1.5.260 + node-releases: 2.0.27 + update-browserslist-db: 1.1.4(browserslist@4.28.0) bs-logger@0.2.6: dependencies: @@ -27845,53 +17748,21 @@ snapshots: buffer-from@1.1.2: {} - buffer-xor@1.0.3: {} - buffer@5.7.1: dependencies: base64-js: 1.5.1 ieee754: 1.2.1 - builtin-modules@3.3.0: {} - - builtin-status-codes@3.0.0: {} - builtins@1.0.3: {} builtins@5.1.0: dependencies: - semver: 7.6.2 - - bundle-name@4.1.0: - dependencies: - run-applescript: 7.0.0 + semver: 7.7.3 byte-size@7.0.0: {} - bytes@3.0.0: {} - bytes@3.1.2: {} - cac@6.7.14: {} - - cacache@12.0.4: - dependencies: - bluebird: 3.7.2 - chownr: 1.1.4 - figgy-pudding: 3.5.2 - glob: 7.2.3 - graceful-fs: 4.2.11 - infer-owner: 1.0.4 - lru-cache: 5.1.1 - mississippi: 3.0.0 - mkdirp: 0.5.6 - move-concurrently: 1.0.1 - promise-inflight: 1.0.1(bluebird@3.7.2) - rimraf: 2.7.1 - ssri: 6.0.2 - unique-filename: 1.1.1 - y18n: 4.0.3 - cacache@16.1.3: dependencies: '@npmcli/fs': 2.1.2 @@ -27907,10 +17778,10 @@ snapshots: minipass-pipeline: 1.2.4 mkdirp: 1.0.4 p-map: 4.0.0 - promise-inflight: 1.0.1(bluebird@3.7.2) + promise-inflight: 1.0.1 rimraf: 3.0.2 ssri: 9.0.1 - tar: 6.2.1 + tar: 6.1.11 unique-filename: 2.0.1 transitivePeerDependencies: - bluebird @@ -27919,24 +17790,24 @@ snapshots: dependencies: '@npmcli/fs': 3.1.1 fs-minipass: 3.0.3 - glob: 10.3.16 + glob: 10.5.0 lru-cache: 7.18.3 - minipass: 7.1.1 + minipass: 7.1.2 minipass-collect: 1.0.2 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 p-map: 4.0.0 ssri: 10.0.6 - tar: 6.2.1 + tar: 6.1.11 unique-filename: 3.0.0 - cacache@18.0.3: + cacache@18.0.4: dependencies: '@npmcli/fs': 3.1.1 fs-minipass: 3.0.3 - glob: 10.3.16 - lru-cache: 10.2.2 - minipass: 7.1.1 + glob: 10.5.0 + lru-cache: 10.4.3 + minipass: 7.1.2 minipass-collect: 2.0.1 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 @@ -27952,27 +17823,31 @@ snapshots: package-hash: 4.0.0 write-file-atomic: 3.0.3 - call-bind@1.0.7: + call-bind-apply-helpers@1.0.2: dependencies: - es-define-property: 1.0.0 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 + + call-bind@1.0.8: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 + get-intrinsic: 1.3.0 set-function-length: 1.2.2 - callsites@3.1.0: {} + call-bound@1.0.4: + dependencies: + call-bind-apply-helpers: 1.0.2 + get-intrinsic: 1.3.0 - callsites@4.1.0: {} + callsites@3.1.0: {} - camel-case@3.0.0: - dependencies: - no-case: 2.3.2 - upper-case: 1.1.3 + callsites@4.2.0: {} camel-case@4.1.2: dependencies: pascal-case: 3.1.2 - tslib: 2.6.2 + tslib: 2.8.1 camelcase-keys@6.2.2: dependencies: @@ -27986,40 +17861,30 @@ snapshots: caniuse-api@3.0.0: dependencies: - browserslist: 4.23.0 - caniuse-lite: 1.0.30001621 + browserslist: 4.28.0 + caniuse-lite: 1.0.30001757 lodash.memoize: 4.1.2 lodash.uniq: 4.5.0 - caniuse-lite@1.0.30001621: {} - - caniuse-lite@1.0.30001685: {} + caniuse-lite@1.0.30001757: {} case-sensitive-paths-webpack-plugin@2.4.0: {} caseless@0.12.0: {} - cbor@9.0.2: + cbor@10.0.11: dependencies: nofilter: 3.1.0 - chai@4.4.1: + chai@4.5.0: dependencies: assertion-error: 1.1.0 check-error: 1.0.3 - deep-eql: 4.1.3 + deep-eql: 4.1.4 get-func-name: 2.0.2 loupe: 2.3.7 pathval: 1.1.1 - type-detect: 4.0.8 - - chalk@1.1.3: - dependencies: - ansi-styles: 2.2.1 - escape-string-regexp: 1.0.5 - has-ansi: 2.0.0 - strip-ansi: 3.0.1 - supports-color: 2.0.0 + type-detect: 4.1.0 chalk@2.4.2: dependencies: @@ -28042,35 +17907,18 @@ snapshots: ansi-styles: 4.3.0 supports-color: 7.2.0 - chalk@5.3.0: {} + chalk@5.6.2: {} char-regex@1.0.2: {} chardet@0.7.0: {} + chardet@2.1.1: {} + check-error@1.0.3: dependencies: get-func-name: 2.0.2 - cheerio-select@2.1.0: - dependencies: - boolbase: 1.0.0 - css-select: 5.1.0 - css-what: 6.1.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - - cheerio@1.0.0-rc.12: - dependencies: - cheerio-select: 2.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - domutils: 3.1.0 - htmlparser2: 8.0.2 - parse5: 7.1.2 - parse5-htmlparser2-tree-adapter: 7.0.0 - chokidar@3.5.1: dependencies: anymatch: 3.1.3 @@ -28095,15 +17943,11 @@ snapshots: optionalDependencies: fsevents: 2.3.3 - chokidar@4.0.1: - dependencies: - readdirp: 4.0.2 - - chownr@1.1.4: {} - chownr@2.0.0: {} - chrome-trace-event@1.0.3: {} + chownr@3.0.0: {} + + chrome-trace-event@1.0.4: {} chunkd@2.0.1: {} @@ -28111,20 +17955,11 @@ snapshots: ci-info@3.9.0: {} - ci-info@4.0.0: {} + ci-info@4.3.1: {} ci-parallel-vars@1.0.1: {} - cipher-base@1.0.4: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - - cjs-module-lexer@1.3.1: {} - - clean-css@4.2.4: - dependencies: - source-map: 0.6.1 + cjs-module-lexer@1.4.3: {} clean-css@5.3.3: dependencies: @@ -28160,7 +17995,7 @@ snapshots: cli-truncate@4.0.0: dependencies: slice-ansi: 5.0.0 - string-width: 7.1.0 + string-width: 7.2.0 cli-width@3.0.0: {} @@ -28216,10 +18051,6 @@ snapshots: process-nextick-args: 2.0.1 readable-stream: 2.3.8 - clsx@1.2.1: {} - - clsx@2.1.1: {} - cmd-shim@5.0.0: dependencies: mkdirp-infer-owner: 2.0.0 @@ -28232,7 +18063,7 @@ snapshots: dependencies: convert-to-spaces: 2.0.1 - collect-v8-coverage@1.0.2: {} + collect-v8-coverage@1.0.3: {} color-convert@1.9.3: dependencies: @@ -28250,12 +18081,8 @@ snapshots: colord@2.9.3: {} - colorette@1.4.0: {} - colorette@2.0.20: {} - colors@1.1.2: {} - columnify@1.6.0: dependencies: strip-ansi: 6.0.1 @@ -28267,23 +18094,12 @@ snapshots: commander@10.0.1: {} - commander@12.1.0: {} - - commander@2.17.1: {} - - commander@2.19.0: {} - commander@2.20.3: {} - commander@4.1.1: {} - commander@7.2.0: {} commander@8.3.0: {} - commander@9.5.0: - optional: true - common-ancestor-path@1.0.1: {} common-path-prefix@3.0.0: {} @@ -28295,35 +18111,24 @@ snapshots: array-ify: 1.0.0 dot-prop: 5.3.0 - component-emitter@1.3.1: {} - compressible@2.0.18: dependencies: - mime-db: 1.52.0 + mime-db: 1.54.0 - compression@1.7.4: + compression@1.8.1: dependencies: - accepts: 1.3.8 - bytes: 3.0.0 + bytes: 3.1.2 compressible: 2.0.18 debug: 2.6.9 - on-headers: 1.0.2 - safe-buffer: 5.1.2 + negotiator: 0.6.4 + on-headers: 1.1.0 + safe-buffer: 5.2.1 vary: 1.1.2 transitivePeerDependencies: - supports-color - computeds@0.0.1: {} - concat-map@0.0.1: {} - concat-stream@1.6.2: - dependencies: - buffer-from: 1.1.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - typedarray: 0.0.6 - concat-stream@2.0.0: dependencies: buffer-from: 1.1.2 @@ -28331,10 +18136,6 @@ snapshots: readable-stream: 3.6.2 typedarray: 0.0.6 - concat-with-sourcemaps@1.1.0: - dependencies: - source-map: 0.6.1 - concordance@5.0.4: dependencies: date-time: 3.1.0 @@ -28343,11 +18144,9 @@ snapshots: js-string-escape: 1.0.1 lodash: 4.17.21 md5-hex: 3.0.1 - semver: 7.6.2 + semver: 7.7.3 well-known-symbols: 2.0.0 - confbox@0.1.7: {} - config-chain@1.1.12: dependencies: ini: 1.3.8 @@ -28360,16 +18159,7 @@ snapshots: connect-history-api-fallback@2.0.0: {} - connect@3.7.0: - dependencies: - debug: 2.6.9 - finalhandler: 1.1.2 - parseurl: 1.3.3 - utils-merge: 1.0.1 - transitivePeerDependencies: - - supports-color - - console-browserify@1.2.0: {} + consola@3.4.2: {} console-control-strings@1.1.0: {} @@ -28381,8 +18171,6 @@ snapshots: handlebars: 4.7.8 lodash: 4.17.21 - constants-browserify@1.0.0: {} - content-disposition@0.5.4: dependencies: safe-buffer: 5.2.1 @@ -28450,118 +18238,42 @@ snapshots: meow: 8.1.2 q: 1.5.1 - convert-source-map@1.9.0: {} - - convert-source-map@2.0.0: {} - - convert-to-spaces@2.0.1: {} - - cookie-signature@1.0.6: {} - - cookie@0.4.2: {} - - cookie@0.6.0: {} - - cookiejar@2.1.4: {} - - copy-anything@2.0.6: - dependencies: - is-what: 3.14.1 - - copy-concurrently@1.0.5: - dependencies: - aproba: 1.2.0 - fs-write-stream-atomic: 1.0.10 - iferr: 0.1.5 - mkdirp: 0.5.6 - rimraf: 2.7.1 - run-queue: 1.0.3 - - copy-webpack-plugin@11.0.0(webpack@5.91.0): - dependencies: - fast-glob: 3.3.2 - glob-parent: 6.0.2 - globby: 13.2.2 - normalize-path: 3.0.0 - schema-utils: 4.2.0 - serialize-javascript: 6.0.2 - webpack: 5.91.0(webpack-cli@5.1.4) - - copy-webpack-plugin@12.0.2(webpack@5.94.0(esbuild@0.23.0)): - dependencies: - fast-glob: 3.3.2 - glob-parent: 6.0.2 - globby: 14.0.1 - normalize-path: 3.0.0 - schema-utils: 4.2.0 - serialize-javascript: 6.0.2 - webpack: 5.94.0(esbuild@0.23.0) - - copy-webpack-plugin@5.1.2(webpack@5.91.0): - dependencies: - cacache: 12.0.4 - find-cache-dir: 2.1.0 - glob-parent: 3.1.0 - globby: 7.1.1 - is-glob: 4.0.3 - loader-utils: 1.4.2 - minimatch: 3.1.2 - normalize-path: 3.0.0 - p-limit: 2.3.0 - schema-utils: 1.0.0 - serialize-javascript: 4.0.0 - webpack: 5.91.0(webpack-cli@5.1.4) - webpack-log: 2.0.0 + convert-source-map@1.9.0: {} - copy-webpack-plugin@5.1.2(webpack@5.94.0): - dependencies: - cacache: 12.0.4 - find-cache-dir: 2.1.0 - glob-parent: 3.1.0 - globby: 7.1.1 - is-glob: 4.0.3 - loader-utils: 1.4.2 - minimatch: 3.1.2 - normalize-path: 3.0.0 - p-limit: 2.3.0 - schema-utils: 1.0.0 - serialize-javascript: 4.0.0 - webpack: 5.94.0 - webpack-log: 2.0.0 + convert-source-map@2.0.0: {} + + convert-to-spaces@2.0.1: {} + + cookie-signature@1.0.6: {} + + cookie@0.7.1: {} - copy-webpack-plugin@9.1.0(webpack@5.91.0): + copy-webpack-plugin@9.1.0(webpack@5.103.0): dependencies: - fast-glob: 3.3.2 + fast-glob: 3.3.3 glob-parent: 6.0.2 globby: 11.1.0 normalize-path: 3.0.0 schema-utils: 3.3.0 serialize-javascript: 6.0.2 - webpack: 5.91.0(webpack-cli@5.1.4) + webpack: 5.103.0 - core-js-compat@3.37.1: + core-js-compat@3.47.0: dependencies: - browserslist: 4.23.0 + browserslist: 4.28.0 - core-js@2.6.12: {} + core-js-pure@3.47.0: {} - core-js@3.37.1: {} + core-js@3.47.0: {} core-util-is@1.0.2: {} core-util-is@1.0.3: {} - cors@2.8.5: - dependencies: - object-assign: 4.1.1 - vary: 1.1.2 - - corser@2.0.1: {} - cosmiconfig@6.0.0: dependencies: '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 + import-fresh: 3.3.1 parse-json: 5.2.0 path-type: 4.0.0 yaml: 1.10.2 @@ -28569,7 +18281,7 @@ snapshots: cosmiconfig@7.0.0: dependencies: '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 + import-fresh: 3.3.1 parse-json: 5.2.0 path-type: 4.0.0 yaml: 1.10.2 @@ -28577,67 +18289,26 @@ snapshots: cosmiconfig@7.1.0: dependencies: '@types/parse-json': 4.0.2 - import-fresh: 3.3.0 + import-fresh: 3.3.1 parse-json: 5.2.0 path-type: 4.0.0 yaml: 1.10.2 - cosmiconfig@9.0.0(typescript@5.5.4): - dependencies: - env-paths: 2.2.1 - import-fresh: 3.3.0 - js-yaml: 4.1.0 - parse-json: 5.2.0 - optionalDependencies: - typescript: 5.5.4 - coveralls@3.1.1: dependencies: - js-yaml: 3.14.1 + js-yaml: 3.14.2 lcov-parse: 1.0.0 log-driver: 1.2.7 minimist: 1.2.8 request: 2.88.2 - create-ecdh@4.0.4: - dependencies: - bn.js: 4.12.0 - elliptic: 6.5.7 - - create-hash@1.2.0: - dependencies: - cipher-base: 1.0.4 - inherits: 2.0.4 - md5.js: 1.3.5 - ripemd160: 2.0.2 - sha.js: 2.4.11 - - create-hmac@1.1.7: - dependencies: - cipher-base: 1.0.4 - create-hash: 1.2.0 - inherits: 2.0.4 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - create-require@1.1.1: {} - critters@0.0.24: - dependencies: - chalk: 4.1.2 - css-select: 5.1.0 - dom-serializer: 2.0.0 - domhandler: 5.0.3 - htmlparser2: 8.0.2 - postcss: 8.4.41 - postcss-media-query-parser: 0.2.3 - cross-env@7.0.3: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 - cross-spawn@6.0.5: + cross-spawn@6.0.6: dependencies: nice-try: 1.0.5 path-key: 2.0.1 @@ -28645,37 +18316,19 @@ snapshots: shebang-command: 1.2.0 which: 1.3.1 - cross-spawn@7.0.3: + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 which: 2.0.2 - crypto-browserify@3.12.0: - dependencies: - browserify-cipher: 1.0.1 - browserify-sign: 4.2.3 - create-ecdh: 4.0.4 - create-hash: 1.2.0 - create-hmac: 1.1.7 - diffie-hellman: 5.0.3 - inherits: 2.0.4 - pbkdf2: 3.1.2 - public-encrypt: 4.0.3 - randombytes: 2.1.0 - randomfill: 1.0.4 - crypto-random-string@2.0.0: {} - css-declaration-sorter@6.4.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - - css-declaration-sorter@6.4.1(postcss@8.4.41): + css-declaration-sorter@6.4.1(postcss@8.5.6): dependencies: - postcss: 8.4.41 + postcss: 8.5.6 - css-loader@3.6.0(webpack@5.91.0): + css-loader@3.6.0(webpack@5.103.0): dependencies: camelcase: 5.3.1 cssesc: 3.0.0 @@ -28690,60 +18343,39 @@ snapshots: postcss-value-parser: 4.2.0 schema-utils: 2.7.1 semver: 6.3.1 - webpack: 5.91.0(webpack-cli@5.1.4) - - css-loader@6.11.0(webpack@5.91.0): - dependencies: - icss-utils: 5.1.0(postcss@8.4.41) - postcss: 8.4.41 - postcss-modules-extract-imports: 3.1.0(postcss@8.4.41) - postcss-modules-local-by-default: 4.0.5(postcss@8.4.41) - postcss-modules-scope: 3.2.0(postcss@8.4.41) - postcss-modules-values: 4.0.0(postcss@8.4.41) - postcss-value-parser: 4.2.0 - semver: 7.6.2 - optionalDependencies: - webpack: 5.91.0(webpack-cli@5.1.4) + webpack: 5.103.0 - css-loader@7.1.2(webpack@5.94.0(esbuild@0.23.0)): + css-loader@6.11.0(webpack@5.103.0): dependencies: - icss-utils: 5.1.0(postcss@8.4.41) - postcss: 8.4.41 - postcss-modules-extract-imports: 3.1.0(postcss@8.4.41) - postcss-modules-local-by-default: 4.0.5(postcss@8.4.41) - postcss-modules-scope: 3.2.0(postcss@8.4.41) - postcss-modules-values: 4.0.0(postcss@8.4.41) + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-modules-extract-imports: 3.1.0(postcss@8.5.6) + postcss-modules-local-by-default: 4.2.0(postcss@8.5.6) + postcss-modules-scope: 3.2.1(postcss@8.5.6) + postcss-modules-values: 4.0.0(postcss@8.5.6) postcss-value-parser: 4.2.0 - semver: 7.6.3 + semver: 7.7.3 optionalDependencies: - webpack: 5.94.0(esbuild@0.23.0) + webpack: 5.103.0 - css-minimizer-webpack-plugin@3.4.1(webpack@5.91.0): + css-minimizer-webpack-plugin@3.4.1(webpack@5.103.0): dependencies: - cssnano: 5.1.15(postcss@8.4.41) + cssnano: 5.1.15(postcss@8.5.6) jest-worker: 27.5.1 - postcss: 8.4.41 - schema-utils: 4.2.0 + postcss: 8.5.6 + schema-utils: 4.3.3 serialize-javascript: 6.0.2 source-map: 0.6.1 - webpack: 5.91.0(webpack-cli@5.1.4) + webpack: 5.103.0 css-select@4.3.0: dependencies: boolbase: 1.0.0 - css-what: 6.1.0 + css-what: 6.2.2 domhandler: 4.3.1 domutils: 2.8.0 nth-check: 2.1.1 - css-select@5.1.0: - dependencies: - boolbase: 1.0.0 - css-what: 6.1.0 - domhandler: 5.0.3 - domutils: 3.1.0 - nth-check: 2.1.1 - css-tree@1.1.3: dependencies: mdn-data: 2.0.14 @@ -28752,9 +18384,9 @@ snapshots: css-tree@2.3.1: dependencies: mdn-data: 2.0.30 - source-map-js: 1.2.0 + source-map-js: 1.2.1 - css-what@6.1.0: {} + css-what@6.2.2: {} css@2.2.4: dependencies: @@ -28763,100 +18395,50 @@ snapshots: source-map-resolve: 0.5.3 urix: 0.1.0 - css@3.0.0: - dependencies: - inherits: 2.0.4 - source-map: 0.6.1 - source-map-resolve: 0.6.0 - cssesc@3.0.0: {} - cssnano-preset-default@5.2.14(postcss@8.4.38): - dependencies: - css-declaration-sorter: 6.4.1(postcss@8.4.38) - cssnano-utils: 3.1.0(postcss@8.4.38) - postcss: 8.4.38 - postcss-calc: 8.2.4(postcss@8.4.38) - postcss-colormin: 5.3.1(postcss@8.4.38) - postcss-convert-values: 5.1.3(postcss@8.4.38) - postcss-discard-comments: 5.1.2(postcss@8.4.38) - postcss-discard-duplicates: 5.1.0(postcss@8.4.38) - postcss-discard-empty: 5.1.1(postcss@8.4.38) - postcss-discard-overridden: 5.1.0(postcss@8.4.38) - postcss-merge-longhand: 5.1.7(postcss@8.4.38) - postcss-merge-rules: 5.1.4(postcss@8.4.38) - postcss-minify-font-values: 5.1.0(postcss@8.4.38) - postcss-minify-gradients: 5.1.1(postcss@8.4.38) - postcss-minify-params: 5.1.4(postcss@8.4.38) - postcss-minify-selectors: 5.2.1(postcss@8.4.38) - postcss-normalize-charset: 5.1.0(postcss@8.4.38) - postcss-normalize-display-values: 5.1.0(postcss@8.4.38) - postcss-normalize-positions: 5.1.1(postcss@8.4.38) - postcss-normalize-repeat-style: 5.1.1(postcss@8.4.38) - postcss-normalize-string: 5.1.0(postcss@8.4.38) - postcss-normalize-timing-functions: 5.1.0(postcss@8.4.38) - postcss-normalize-unicode: 5.1.1(postcss@8.4.38) - postcss-normalize-url: 5.1.0(postcss@8.4.38) - postcss-normalize-whitespace: 5.1.1(postcss@8.4.38) - postcss-ordered-values: 5.1.3(postcss@8.4.38) - postcss-reduce-initial: 5.1.2(postcss@8.4.38) - postcss-reduce-transforms: 5.1.0(postcss@8.4.38) - postcss-svgo: 5.1.0(postcss@8.4.38) - postcss-unique-selectors: 5.1.1(postcss@8.4.38) - - cssnano-preset-default@5.2.14(postcss@8.4.41): - dependencies: - css-declaration-sorter: 6.4.1(postcss@8.4.41) - cssnano-utils: 3.1.0(postcss@8.4.41) - postcss: 8.4.41 - postcss-calc: 8.2.4(postcss@8.4.41) - postcss-colormin: 5.3.1(postcss@8.4.41) - postcss-convert-values: 5.1.3(postcss@8.4.41) - postcss-discard-comments: 5.1.2(postcss@8.4.41) - postcss-discard-duplicates: 5.1.0(postcss@8.4.41) - postcss-discard-empty: 5.1.1(postcss@8.4.41) - postcss-discard-overridden: 5.1.0(postcss@8.4.41) - postcss-merge-longhand: 5.1.7(postcss@8.4.41) - postcss-merge-rules: 5.1.4(postcss@8.4.41) - postcss-minify-font-values: 5.1.0(postcss@8.4.41) - postcss-minify-gradients: 5.1.1(postcss@8.4.41) - postcss-minify-params: 5.1.4(postcss@8.4.41) - postcss-minify-selectors: 5.2.1(postcss@8.4.41) - postcss-normalize-charset: 5.1.0(postcss@8.4.41) - postcss-normalize-display-values: 5.1.0(postcss@8.4.41) - postcss-normalize-positions: 5.1.1(postcss@8.4.41) - postcss-normalize-repeat-style: 5.1.1(postcss@8.4.41) - postcss-normalize-string: 5.1.0(postcss@8.4.41) - postcss-normalize-timing-functions: 5.1.0(postcss@8.4.41) - postcss-normalize-unicode: 5.1.1(postcss@8.4.41) - postcss-normalize-url: 5.1.0(postcss@8.4.41) - postcss-normalize-whitespace: 5.1.1(postcss@8.4.41) - postcss-ordered-values: 5.1.3(postcss@8.4.41) - postcss-reduce-initial: 5.1.2(postcss@8.4.41) - postcss-reduce-transforms: 5.1.0(postcss@8.4.41) - postcss-svgo: 5.1.0(postcss@8.4.41) - postcss-unique-selectors: 5.1.1(postcss@8.4.41) - - cssnano-utils@3.1.0(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - - cssnano-utils@3.1.0(postcss@8.4.41): - dependencies: - postcss: 8.4.41 - - cssnano@5.1.15(postcss@8.4.38): - dependencies: - cssnano-preset-default: 5.2.14(postcss@8.4.38) - lilconfig: 2.1.0 - postcss: 8.4.38 - yaml: 1.10.2 - - cssnano@5.1.15(postcss@8.4.41): - dependencies: - cssnano-preset-default: 5.2.14(postcss@8.4.41) + cssnano-preset-default@5.2.14(postcss@8.5.6): + dependencies: + css-declaration-sorter: 6.4.1(postcss@8.5.6) + cssnano-utils: 3.1.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-calc: 8.2.4(postcss@8.5.6) + postcss-colormin: 5.3.1(postcss@8.5.6) + postcss-convert-values: 5.1.3(postcss@8.5.6) + postcss-discard-comments: 5.1.2(postcss@8.5.6) + postcss-discard-duplicates: 5.1.0(postcss@8.5.6) + postcss-discard-empty: 5.1.1(postcss@8.5.6) + postcss-discard-overridden: 5.1.0(postcss@8.5.6) + postcss-merge-longhand: 5.1.7(postcss@8.5.6) + postcss-merge-rules: 5.1.4(postcss@8.5.6) + postcss-minify-font-values: 5.1.0(postcss@8.5.6) + postcss-minify-gradients: 5.1.1(postcss@8.5.6) + postcss-minify-params: 5.1.4(postcss@8.5.6) + postcss-minify-selectors: 5.2.1(postcss@8.5.6) + postcss-normalize-charset: 5.1.0(postcss@8.5.6) + postcss-normalize-display-values: 5.1.0(postcss@8.5.6) + postcss-normalize-positions: 5.1.1(postcss@8.5.6) + postcss-normalize-repeat-style: 5.1.1(postcss@8.5.6) + postcss-normalize-string: 5.1.0(postcss@8.5.6) + postcss-normalize-timing-functions: 5.1.0(postcss@8.5.6) + postcss-normalize-unicode: 5.1.1(postcss@8.5.6) + postcss-normalize-url: 5.1.0(postcss@8.5.6) + postcss-normalize-whitespace: 5.1.1(postcss@8.5.6) + postcss-ordered-values: 5.1.3(postcss@8.5.6) + postcss-reduce-initial: 5.1.2(postcss@8.5.6) + postcss-reduce-transforms: 5.1.0(postcss@8.5.6) + postcss-svgo: 5.1.0(postcss@8.5.6) + postcss-unique-selectors: 5.1.1(postcss@8.5.6) + + cssnano-utils@3.1.0(postcss@8.5.6): + dependencies: + postcss: 8.5.6 + + cssnano@5.1.15(postcss@8.5.6): + dependencies: + cssnano-preset-default: 5.2.14(postcss@8.5.6) lilconfig: 2.1.0 - postcss: 8.4.41 + postcss: 8.5.6 yaml: 1.10.2 csso@4.2.0: @@ -28877,20 +18459,12 @@ snapshots: dependencies: rrweb-cssom: 0.6.0 - cssstyle@4.0.1: - dependencies: - rrweb-cssom: 0.6.0 - - csstype@3.1.3: {} + csstype@3.2.3: {} currently-unhandled@0.4.1: dependencies: array-find-index: 1.0.2 - custom-event@1.0.1: {} - - cyclist@1.0.2: {} - dargs@7.0.0: {} dashdash@1.14.1: @@ -28915,30 +18489,23 @@ snapshots: whatwg-mimetype: 3.0.0 whatwg-url: 12.0.1 - data-urls@5.0.0: - dependencies: - whatwg-mimetype: 4.0.0 - whatwg-url: 14.0.0 - - data-view-buffer@1.0.1: + data-view-buffer@1.0.2: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 - data-view-byte-length@1.0.1: + data-view-byte-length@1.0.2: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 es-errors: 1.3.0 - is-data-view: 1.0.1 + is-data-view: 1.0.2 - data-view-byte-offset@1.0.0: + data-view-byte-offset@1.0.1: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 es-errors: 1.3.0 - is-data-view: 1.0.1 - - date-format@4.0.14: {} + is-data-view: 1.0.2 date-time@3.1.0: dependencies: @@ -28946,12 +18513,6 @@ snapshots: dateformat@3.0.3: {} - dayjs@1.10.7: {} - - dayjs@1.11.11: {} - - de-indent@1.0.2: {} - debounce@1.2.1: {} debug@2.6.9: @@ -28968,11 +18529,7 @@ snapshots: optionalDependencies: supports-color: 8.1.1 - debug@4.3.4: - dependencies: - ms: 2.1.2 - - debug@4.3.7: + debug@4.4.3: dependencies: ms: 2.1.3 @@ -28985,15 +18542,15 @@ snapshots: decamelize@4.0.0: {} - decimal.js@10.4.3: {} + decimal.js@10.6.0: {} decode-uri-component@0.2.2: {} dedent@0.7.0: {} - deep-eql@4.1.3: + deep-eql@4.1.4: dependencies: - type-detect: 4.0.8 + type-detect: 4.1.0 deep-is@0.1.4: {} @@ -29001,13 +18558,6 @@ snapshots: deepmerge@4.3.1: {} - default-browser-id@5.0.0: {} - - default-browser@5.2.1: - dependencies: - bundle-name: 4.1.0 - default-browser-id: 5.0.0 - default-gateway@6.0.3: dependencies: execa: 5.1.1 @@ -29022,34 +18572,22 @@ snapshots: define-data-property@1.1.4: dependencies: - es-define-property: 1.0.0 + es-define-property: 1.0.1 es-errors: 1.3.0 - gopd: 1.0.1 + gopd: 1.2.0 define-lazy-prop@2.0.0: {} - define-lazy-prop@3.0.0: {} - define-properties@1.2.1: dependencies: define-data-property: 1.1.4 has-property-descriptors: 1.0.2 object-keys: 1.1.1 - del@2.2.2: - dependencies: - globby: 5.0.0 - is-path-cwd: 1.0.0 - is-path-in-cwd: 1.0.1 - object-assign: 4.1.1 - pify: 2.3.0 - pinkie-promise: 2.0.1 - rimraf: 2.7.1 - del@6.1.1: dependencies: globby: 11.1.0 - graceful-fs: 4.2.11 + graceful-fs: 4.2.10 is-glob: 4.0.3 is-path-cwd: 2.2.0 is-path-inside: 3.0.3 @@ -29065,56 +18603,28 @@ snapshots: depd@2.0.0: {} - dependency-graph@1.0.0: {} - deprecation@2.3.1: {} - des.js@1.1.0: - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - destroy@1.2.0: {} detect-indent@5.0.0: {} - detect-libc@2.0.3: {} + detect-libc@2.1.2: {} detect-newline@3.1.0: {} detect-node@2.1.0: {} - dezalgo@1.0.4: - dependencies: - asap: 2.0.6 - wrappy: 1.0.2 - - di@0.0.1: {} - diff-sequences@27.5.1: {} - diff-sequences@29.6.3: {} - diff@4.0.2: {} diff@5.0.0: {} - diffie-hellman@5.0.3: - dependencies: - bn.js: 4.12.0 - miller-rabin: 4.0.1 - randombytes: 2.1.0 - - dir-glob@2.2.2: - dependencies: - path-type: 3.0.0 - dir-glob@3.0.1: dependencies: path-type: 4.0.0 - discontinuous-range@1.0.0: {} - dns-packet@5.6.1: dependencies: '@leichtgewicht/ip-codec': 2.0.5 @@ -29133,32 +18643,12 @@ snapshots: dependencies: utila: 0.4.0 - dom-helpers@5.2.1: - dependencies: - '@babel/runtime': 7.24.5 - csstype: 3.1.3 - - dom-serialize@2.2.1: - dependencies: - custom-event: 1.0.1 - ent: 2.2.0 - extend: 3.0.2 - void-elements: 2.0.1 - dom-serializer@1.4.1: dependencies: domelementtype: 2.3.0 domhandler: 4.3.1 entities: 2.2.0 - dom-serializer@2.0.0: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - entities: 4.5.0 - - domain-browser@4.23.0: {} - domelementtype@2.3.0: {} domexception@2.0.1: @@ -29173,26 +18663,16 @@ snapshots: dependencies: domelementtype: 2.3.0 - domhandler@5.0.3: - dependencies: - domelementtype: 2.3.0 - domutils@2.8.0: dependencies: dom-serializer: 1.4.1 domelementtype: 2.3.0 domhandler: 4.3.1 - domutils@3.1.0: - dependencies: - dom-serializer: 2.0.0 - domelementtype: 2.3.0 - domhandler: 5.0.3 - dot-case@3.0.4: dependencies: no-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.8.1 dot-prop@5.3.0: dependencies: @@ -29206,11 +18686,17 @@ snapshots: dotenv@10.0.0: {} + dunder-proto@1.0.1: + dependencies: + call-bind-apply-helpers: 1.0.2 + es-errors: 1.3.0 + gopd: 1.2.0 + duplexer@0.1.2: {} duplexify@3.7.1: dependencies: - end-of-stream: 1.4.4 + end-of-stream: 1.4.5 inherits: 2.0.4 readable-stream: 2.3.8 stream-shift: 1.0.3 @@ -29229,33 +18715,21 @@ snapshots: '@one-ini/wasm': 0.1.1 commander: 10.0.1 minimatch: 9.0.1 - semver: 7.6.2 + semver: 7.7.3 ee-first@1.1.1: {} ejs@3.1.10: dependencies: - jake: 10.9.1 - - electron-to-chromium@1.4.779: {} + jake: 10.9.4 - electron-to-chromium@1.5.67: {} - - elliptic@6.5.7: - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - hash.js: 1.1.7 - hmac-drbg: 1.0.1 - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 + electron-to-chromium@1.5.260: {} emittery@0.8.1: {} - emittery@1.0.3: {} + emittery@1.2.0: {} - emoji-regex@10.3.0: {} + emoji-regex@10.6.0: {} emoji-regex@7.0.3: {} @@ -29267,97 +18741,45 @@ snapshots: encodeurl@1.0.2: {} + encodeurl@2.0.0: {} + encoding@0.1.13: dependencies: iconv-lite: 0.6.3 optional: true - end-of-stream@1.4.4: + end-of-stream@1.4.5: dependencies: once: 1.4.0 - engine.io-parser@5.2.2: {} - - engine.io@6.5.4: - dependencies: - '@types/cookie': 0.4.1 - '@types/cors': 2.8.17 - '@types/node': 22.13.8 - accepts: 1.3.8 - base64id: 2.0.0 - cookie: 0.4.2 - cors: 2.8.5 - debug: 4.3.7 - engine.io-parser: 5.2.2 - ws: 8.11.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - enhanced-resolve@5.16.1: - dependencies: - graceful-fs: 4.2.11 - tapable: 2.2.1 - - enhanced-resolve@5.17.1: + enhanced-resolve@5.18.3: dependencies: graceful-fs: 4.2.11 - tapable: 2.2.1 + tapable: 2.3.0 enquirer@2.3.6: dependencies: ansi-colors: 4.1.3 - ent@2.2.0: {} - entities@2.2.0: {} entities@4.5.0: {} + entities@6.0.1: {} + env-paths@2.2.1: {} - envinfo@7.13.0: {} + envinfo@7.20.0: {} environment@1.1.0: {} - enzyme-shallow-equal@1.0.7: - dependencies: - hasown: 2.0.2 - object-is: 1.1.6 - - enzyme@3.11.0: - dependencies: - array.prototype.flat: 1.3.2 - cheerio: 1.0.0-rc.12 - enzyme-shallow-equal: 1.0.7 - function.prototype.name: 1.1.6 - has: 1.0.4 - html-element-map: 1.3.1 - is-boolean-object: 1.1.2 - is-callable: 1.2.7 - is-number-object: 1.0.7 - is-regex: 1.1.4 - is-string: 1.0.7 - is-subset: 0.1.1 - lodash.escape: 4.0.1 - lodash.isequal: 4.5.0 - object-inspect: 1.13.1 - object-is: 1.1.6 - object.assign: 4.1.5 - object.entries: 1.1.8 - object.values: 1.2.0 - raf: 3.4.1 - rst-selector-parser: 2.2.3 - string.prototype.trim: 1.2.9 - err-code@2.0.3: {} errno@0.1.8: dependencies: prr: 1.0.1 - error-ex@1.3.2: + error-ex@1.3.4: dependencies: is-arrayish: 0.2.1 @@ -29365,199 +18787,92 @@ snapshots: dependencies: stackframe: 1.3.4 - es-abstract@1.23.3: + es-abstract@1.24.0: dependencies: - array-buffer-byte-length: 1.0.1 - arraybuffer.prototype.slice: 1.0.3 + array-buffer-byte-length: 1.0.2 + arraybuffer.prototype.slice: 1.0.4 available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - data-view-buffer: 1.0.1 - data-view-byte-length: 1.0.1 - data-view-byte-offset: 1.0.0 - es-define-property: 1.0.0 + call-bind: 1.0.8 + call-bound: 1.0.4 + data-view-buffer: 1.0.2 + data-view-byte-length: 1.0.2 + data-view-byte-offset: 1.0.1 + es-define-property: 1.0.1 es-errors: 1.3.0 - es-object-atoms: 1.0.0 - es-set-tostringtag: 2.0.3 - es-to-primitive: 1.2.1 - function.prototype.name: 1.1.6 - get-intrinsic: 1.2.4 - get-symbol-description: 1.0.2 + es-object-atoms: 1.1.1 + es-set-tostringtag: 2.1.0 + es-to-primitive: 1.3.0 + function.prototype.name: 1.1.8 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + get-symbol-description: 1.1.0 globalthis: 1.0.4 - gopd: 1.0.1 + gopd: 1.2.0 has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 + has-proto: 1.2.0 + has-symbols: 1.1.0 hasown: 2.0.2 - internal-slot: 1.0.7 - is-array-buffer: 3.0.4 + internal-slot: 1.1.0 + is-array-buffer: 3.0.5 is-callable: 1.2.7 - is-data-view: 1.0.1 + is-data-view: 1.0.2 is-negative-zero: 2.0.3 - is-regex: 1.1.4 - is-shared-array-buffer: 1.0.3 - is-string: 1.0.7 - is-typed-array: 1.1.13 - is-weakref: 1.0.2 - object-inspect: 1.13.1 + is-regex: 1.2.1 + is-set: 2.0.3 + is-shared-array-buffer: 1.0.4 + is-string: 1.1.1 + is-typed-array: 1.1.15 + is-weakref: 1.1.1 + math-intrinsics: 1.1.0 + object-inspect: 1.13.4 object-keys: 1.1.1 - object.assign: 4.1.5 - regexp.prototype.flags: 1.5.2 - safe-array-concat: 1.1.2 - safe-regex-test: 1.0.3 - string.prototype.trim: 1.2.9 - string.prototype.trimend: 1.0.8 + object.assign: 4.1.7 + own-keys: 1.0.1 + regexp.prototype.flags: 1.5.4 + safe-array-concat: 1.1.3 + safe-push-apply: 1.0.0 + safe-regex-test: 1.1.0 + set-proto: 1.0.0 + stop-iteration-iterator: 1.1.0 + string.prototype.trim: 1.2.10 + string.prototype.trimend: 1.0.9 string.prototype.trimstart: 1.0.8 - typed-array-buffer: 1.0.2 - typed-array-byte-length: 1.0.1 - typed-array-byte-offset: 1.0.2 - typed-array-length: 1.0.6 - unbox-primitive: 1.0.2 - which-typed-array: 1.1.15 - - es-array-method-boxes-properly@1.0.0: {} + typed-array-buffer: 1.0.3 + typed-array-byte-length: 1.0.3 + typed-array-byte-offset: 1.0.4 + typed-array-length: 1.0.7 + unbox-primitive: 1.1.0 + which-typed-array: 1.1.19 - es-define-property@1.0.0: - dependencies: - get-intrinsic: 1.2.4 + es-define-property@1.0.1: {} es-errors@1.3.0: {} - es-iterator-helpers@1.0.19: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-set-tostringtag: 2.0.3 - function-bind: 1.1.2 - get-intrinsic: 1.2.4 - globalthis: 1.0.4 - has-property-descriptors: 1.0.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - iterator.prototype: 1.1.2 - safe-array-concat: 1.1.2 - - es-module-lexer@1.5.3: {} + es-module-lexer@1.7.0: {} - es-object-atoms@1.0.0: + es-object-atoms@1.1.1: dependencies: es-errors: 1.3.0 - es-set-tostringtag@2.0.3: + es-set-tostringtag@2.1.0: dependencies: - get-intrinsic: 1.2.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 has-tostringtag: 1.0.2 hasown: 2.0.2 - es-shim-unscopables@1.0.2: + es-shim-unscopables@1.1.0: dependencies: hasown: 2.0.2 - es-to-primitive@1.2.1: + es-to-primitive@1.3.0: dependencies: is-callable: 1.2.7 - is-date-object: 1.0.5 - is-symbol: 1.0.4 + is-date-object: 1.1.0 + is-symbol: 1.1.1 es6-error@4.1.1: {} - es6-promise@4.2.8: {} - - es6-promisify@5.0.0: - dependencies: - es6-promise: 4.2.8 - - es6-templates@0.2.3: - dependencies: - recast: 0.11.23 - through: 2.3.8 - - esbuild-wasm@0.23.0: {} - - esbuild@0.21.5: - optionalDependencies: - '@esbuild/aix-ppc64': 0.21.5 - '@esbuild/android-arm': 0.21.5 - '@esbuild/android-arm64': 0.21.5 - '@esbuild/android-x64': 0.21.5 - '@esbuild/darwin-arm64': 0.21.5 - '@esbuild/darwin-x64': 0.21.5 - '@esbuild/freebsd-arm64': 0.21.5 - '@esbuild/freebsd-x64': 0.21.5 - '@esbuild/linux-arm': 0.21.5 - '@esbuild/linux-arm64': 0.21.5 - '@esbuild/linux-ia32': 0.21.5 - '@esbuild/linux-loong64': 0.21.5 - '@esbuild/linux-mips64el': 0.21.5 - '@esbuild/linux-ppc64': 0.21.5 - '@esbuild/linux-riscv64': 0.21.5 - '@esbuild/linux-s390x': 0.21.5 - '@esbuild/linux-x64': 0.21.5 - '@esbuild/netbsd-x64': 0.21.5 - '@esbuild/openbsd-x64': 0.21.5 - '@esbuild/sunos-x64': 0.21.5 - '@esbuild/win32-arm64': 0.21.5 - '@esbuild/win32-ia32': 0.21.5 - '@esbuild/win32-x64': 0.21.5 - - esbuild@0.23.0: - optionalDependencies: - '@esbuild/aix-ppc64': 0.23.0 - '@esbuild/android-arm': 0.23.0 - '@esbuild/android-arm64': 0.23.0 - '@esbuild/android-x64': 0.23.0 - '@esbuild/darwin-arm64': 0.23.0 - '@esbuild/darwin-x64': 0.23.0 - '@esbuild/freebsd-arm64': 0.23.0 - '@esbuild/freebsd-x64': 0.23.0 - '@esbuild/linux-arm': 0.23.0 - '@esbuild/linux-arm64': 0.23.0 - '@esbuild/linux-ia32': 0.23.0 - '@esbuild/linux-loong64': 0.23.0 - '@esbuild/linux-mips64el': 0.23.0 - '@esbuild/linux-ppc64': 0.23.0 - '@esbuild/linux-riscv64': 0.23.0 - '@esbuild/linux-s390x': 0.23.0 - '@esbuild/linux-x64': 0.23.0 - '@esbuild/netbsd-x64': 0.23.0 - '@esbuild/openbsd-arm64': 0.23.0 - '@esbuild/openbsd-x64': 0.23.0 - '@esbuild/sunos-x64': 0.23.0 - '@esbuild/win32-arm64': 0.23.0 - '@esbuild/win32-ia32': 0.23.0 - '@esbuild/win32-x64': 0.23.0 - - esbuild@0.23.1: - optionalDependencies: - '@esbuild/aix-ppc64': 0.23.1 - '@esbuild/android-arm': 0.23.1 - '@esbuild/android-arm64': 0.23.1 - '@esbuild/android-x64': 0.23.1 - '@esbuild/darwin-arm64': 0.23.1 - '@esbuild/darwin-x64': 0.23.1 - '@esbuild/freebsd-arm64': 0.23.1 - '@esbuild/freebsd-x64': 0.23.1 - '@esbuild/linux-arm': 0.23.1 - '@esbuild/linux-arm64': 0.23.1 - '@esbuild/linux-ia32': 0.23.1 - '@esbuild/linux-loong64': 0.23.1 - '@esbuild/linux-mips64el': 0.23.1 - '@esbuild/linux-ppc64': 0.23.1 - '@esbuild/linux-riscv64': 0.23.1 - '@esbuild/linux-s390x': 0.23.1 - '@esbuild/linux-x64': 0.23.1 - '@esbuild/netbsd-x64': 0.23.1 - '@esbuild/openbsd-arm64': 0.23.1 - '@esbuild/openbsd-x64': 0.23.1 - '@esbuild/sunos-x64': 0.23.1 - '@esbuild/win32-arm64': 0.23.1 - '@esbuild/win32-ia32': 0.23.1 - '@esbuild/win32-x64': 0.23.1 - - escalade@3.1.2: {} - escalade@3.2.0: {} escape-html@1.0.3: {} @@ -29578,59 +18893,52 @@ snapshots: optionalDependencies: source-map: 0.6.1 - eslint-compat-utils@0.5.1(eslint@8.57.0): - dependencies: - eslint: 8.57.0 - semver: 7.6.2 - - eslint-config-prettier@8.10.0(eslint@8.57.0): + eslint-config-prettier@8.10.2(eslint@8.57.1): dependencies: - eslint: 8.57.0 - - eslint-config-prettier@9.1.0(eslint@8.57.0): - dependencies: - eslint: 8.57.0 + eslint: 8.57.1 eslint-import-resolver-node@0.3.9: dependencies: debug: 3.2.7 - is-core-module: 2.13.1 - resolve: 1.22.8 + is-core-module: 2.16.1 + resolve: 1.22.11 transitivePeerDependencies: - supports-color - eslint-module-utils@2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0): + eslint-module-utils@2.12.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1): dependencies: debug: 3.2.7 optionalDependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.4) - eslint: 8.57.0 + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.5.4) + eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 transitivePeerDependencies: - supports-color - eslint-plugin-import@2.29.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint@8.57.0): + eslint-plugin-import@2.32.0(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.4))(eslint@8.57.1): dependencies: - array-includes: 3.1.8 - array.prototype.findlastindex: 1.2.5 - array.prototype.flat: 1.3.2 - array.prototype.flatmap: 1.3.2 + '@rtsao/scc': 1.1.0 + array-includes: 3.1.9 + array.prototype.findlastindex: 1.2.6 + array.prototype.flat: 1.3.3 + array.prototype.flatmap: 1.3.3 debug: 3.2.7 doctrine: 2.1.0 - eslint: 8.57.0 + eslint: 8.57.1 eslint-import-resolver-node: 0.3.9 - eslint-module-utils: 2.8.1(@typescript-eslint/parser@5.62.0(eslint@8.57.0)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@8.57.0) + eslint-module-utils: 2.12.1(@typescript-eslint/parser@5.62.0(eslint@8.57.1)(typescript@5.5.4))(eslint-import-resolver-node@0.3.9)(eslint@8.57.1) hasown: 2.0.2 - is-core-module: 2.13.1 + is-core-module: 2.16.1 is-glob: 4.0.3 minimatch: 3.1.2 object.fromentries: 2.0.8 object.groupby: 1.0.3 - object.values: 1.2.0 + object.values: 1.2.1 semver: 6.3.1 + string.prototype.trimend: 1.0.9 tsconfig-paths: 3.15.0 optionalDependencies: - '@typescript-eslint/parser': 5.62.0(eslint@8.57.0)(typescript@5.5.4) + '@typescript-eslint/parser': 5.62.0(eslint@8.57.1)(typescript@5.5.4) transitivePeerDependencies: - eslint-import-resolver-typescript - eslint-import-resolver-webpack @@ -29638,76 +18946,29 @@ snapshots: eslint-plugin-prettier-vue@4.2.0: dependencies: - '@vue/compiler-sfc': 3.4.27 + '@vue/compiler-sfc': 3.5.25 chalk: 4.1.2 prettier: 2.8.8 prettier-linter-helpers: 1.0.0 - eslint-plugin-prettier@4.2.1(eslint-config-prettier@8.10.0(eslint@8.57.0))(eslint@8.57.0)(prettier@2.8.8): + eslint-plugin-prettier@4.2.5(eslint-config-prettier@8.10.2(eslint@8.57.1))(eslint@8.57.1)(prettier@2.8.8): dependencies: - eslint: 8.57.0 + eslint: 8.57.1 prettier: 2.8.8 prettier-linter-helpers: 1.0.0 optionalDependencies: - eslint-config-prettier: 8.10.0(eslint@8.57.0) - - eslint-plugin-prettier@5.2.1(@types/eslint@8.56.10)(eslint-config-prettier@9.1.0(eslint@8.57.0))(eslint@8.57.0)(prettier@3.3.3): - dependencies: - eslint: 8.57.0 - prettier: 3.3.3 - prettier-linter-helpers: 1.0.0 - synckit: 0.9.1 - optionalDependencies: - '@types/eslint': 8.56.10 - eslint-config-prettier: 9.1.0(eslint@8.57.0) - - eslint-plugin-react@7.34.1(eslint@8.57.0): - dependencies: - array-includes: 3.1.8 - array.prototype.findlast: 1.2.5 - array.prototype.flatmap: 1.3.2 - array.prototype.toreversed: 1.1.2 - array.prototype.tosorted: 1.1.3 - doctrine: 2.1.0 - es-iterator-helpers: 1.0.19 - eslint: 8.57.0 - estraverse: 5.3.0 - jsx-ast-utils: 3.3.5 - minimatch: 3.1.2 - object.entries: 1.1.8 - object.fromentries: 2.0.8 - object.hasown: 1.1.4 - object.values: 1.2.0 - prop-types: 15.8.1 - resolve: 2.0.0-next.5 - semver: 6.3.1 - string.prototype.matchall: 4.0.11 - - eslint-plugin-vue-scoped-css@2.8.1(eslint@8.57.0)(vue-eslint-parser@9.4.2(eslint@8.57.0)): - dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - eslint: 8.57.0 - eslint-compat-utils: 0.5.1(eslint@8.57.0) - lodash: 4.17.21 - postcss: 8.4.38 - postcss-safe-parser: 6.0.0(postcss@8.4.38) - postcss-scss: 4.0.9(postcss@8.4.38) - postcss-selector-parser: 6.1.0 - postcss-styl: 0.12.3 - vue-eslint-parser: 9.4.2(eslint@8.57.0) - transitivePeerDependencies: - - supports-color + eslint-config-prettier: 8.10.2(eslint@8.57.1) - eslint-plugin-vue@9.26.0(eslint@8.57.0): + eslint-plugin-vue@9.33.0(eslint@8.57.1): dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - eslint: 8.57.0 + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + eslint: 8.57.1 globals: 13.24.0 natural-compare: 1.4.0 nth-check: 2.1.1 - postcss-selector-parser: 6.1.0 - semver: 7.6.2 - vue-eslint-parser: 9.4.2(eslint@8.57.0) + postcss-selector-parser: 6.1.2 + semver: 7.7.3 + vue-eslint-parser: 9.4.3(eslint@8.57.1) xml-name-validator: 4.0.0 transitivePeerDependencies: - supports-color @@ -29722,33 +18983,28 @@ snapshots: esrecurse: 4.3.0 estraverse: 5.3.0 - eslint-scope@8.2.0: - dependencies: - esrecurse: 4.3.0 - estraverse: 5.3.0 - eslint-visitor-keys@3.4.3: {} - eslint@8.57.0: + eslint@8.57.1: dependencies: - '@eslint-community/eslint-utils': 4.4.0(eslint@8.57.0) - '@eslint-community/regexpp': 4.10.0 + '@eslint-community/eslint-utils': 4.9.0(eslint@8.57.1) + '@eslint-community/regexpp': 4.12.2 '@eslint/eslintrc': 2.1.4 - '@eslint/js': 8.57.0 - '@humanwhocodes/config-array': 0.11.14 + '@eslint/js': 8.57.1 + '@humanwhocodes/config-array': 0.13.0 '@humanwhocodes/module-importer': 1.0.1 '@nodelib/fs.walk': 1.2.8 - '@ungap/structured-clone': 1.2.0 + '@ungap/structured-clone': 1.3.0 ajv: 6.12.6 chalk: 4.1.2 - cross-spawn: 7.0.3 - debug: 4.3.4 + cross-spawn: 7.0.6 + debug: 4.4.3 doctrine: 3.0.0 escape-string-regexp: 4.0.0 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - esquery: 1.5.0 + esquery: 1.6.0 esutils: 2.0.3 fast-deep-equal: 3.1.3 file-entry-cache: 6.0.1 @@ -29756,11 +19012,11 @@ snapshots: glob-parent: 6.0.2 globals: 13.24.0 graphemer: 1.4.0 - ignore: 5.3.1 + ignore: 5.3.2 imurmurhash: 0.1.4 is-glob: 4.0.3 is-path-inside: 3.0.3 - js-yaml: 4.1.0 + js-yaml: 4.1.1 json-stable-stringify-without-jsonify: 1.0.1 levn: 0.4.1 lodash.merge: 4.6.2 @@ -29774,15 +19030,13 @@ snapshots: espree@9.6.1: dependencies: - acorn: 8.11.3 - acorn-jsx: 5.3.2(acorn@8.11.3) + acorn: 8.15.0 + acorn-jsx: 5.3.2(acorn@8.15.0) eslint-visitor-keys: 3.4.3 - esprima@3.1.3: {} - esprima@4.0.1: {} - esquery@1.5.0: + esquery@1.6.0: dependencies: estraverse: 5.3.0 @@ -29798,10 +19052,6 @@ snapshots: estree-walker@2.0.2: {} - estree-walker@3.0.3: - dependencies: - '@types/estree': 1.0.5 - esutils@2.0.3: {} etag@1.8.1: {} @@ -29814,14 +19064,9 @@ snapshots: events@3.3.0: {} - evp_bytestokey@1.0.3: - dependencies: - md5.js: 1.3.5 - safe-buffer: 5.2.1 - execa@1.0.0: dependencies: - cross-spawn: 6.0.5 + cross-spawn: 6.0.6 get-stream: 4.1.0 is-stream: 1.1.0 npm-run-path: 2.0.2 @@ -29831,7 +19076,7 @@ snapshots: execa@5.0.0: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 6.0.0 human-signals: 2.1.0 is-stream: 2.0.0 @@ -29843,7 +19088,7 @@ snapshots: execa@5.1.1: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 get-stream: 6.0.1 human-signals: 2.1.0 is-stream: 2.0.1 @@ -29853,18 +19098,6 @@ snapshots: signal-exit: 3.0.7 strip-final-newline: 2.0.0 - execa@8.0.1: - dependencies: - cross-spawn: 7.0.3 - get-stream: 8.0.1 - human-signals: 5.0.0 - is-stream: 3.0.0 - merge-stream: 2.0.0 - npm-run-path: 5.3.0 - onetime: 6.0.0 - signal-exit: 4.1.0 - strip-final-newline: 3.0.0 - exit@0.1.2: {} expect@27.5.1: @@ -29874,36 +19107,36 @@ snapshots: jest-matcher-utils: 27.5.1 jest-message-util: 27.5.1 - exponential-backoff@3.1.1: {} + exponential-backoff@3.1.3: {} - express@4.19.2: + express@4.21.2: dependencies: accepts: 1.3.8 array-flatten: 1.1.1 - body-parser: 1.20.2 + body-parser: 1.20.3 content-disposition: 0.5.4 content-type: 1.0.5 - cookie: 0.6.0 + cookie: 0.7.1 cookie-signature: 1.0.6 debug: 2.6.9 depd: 2.0.0 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 etag: 1.8.1 - finalhandler: 1.2.0 + finalhandler: 1.3.1 fresh: 0.5.2 http-errors: 2.0.0 - merge-descriptors: 1.0.1 + merge-descriptors: 1.0.3 methods: 1.1.2 on-finished: 2.4.1 parseurl: 1.3.3 - path-to-regexp: 0.1.7 + path-to-regexp: 0.1.12 proxy-addr: 2.0.7 - qs: 6.11.0 + qs: 6.13.0 range-parser: 1.2.1 safe-buffer: 5.2.1 - send: 0.18.0 - serve-static: 1.15.0 + send: 0.19.0 + serve-static: 1.16.2 setprototypeof: 1.2.0 statuses: 2.0.1 type-is: 1.6.18 @@ -29936,31 +19169,25 @@ snapshots: '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.7 + micromatch: 4.0.8 - fast-glob@3.3.2: + fast-glob@3.3.3: dependencies: '@nodelib/fs.stat': 2.0.5 '@nodelib/fs.walk': 1.2.8 glob-parent: 5.1.2 merge2: 1.4.1 - micromatch: 4.0.7 + micromatch: 4.0.8 fast-json-stable-stringify@2.1.0: {} fast-levenshtein@2.0.6: {} - fast-safe-stringify@2.1.1: {} - - fast-uri@3.0.3: {} - - fastest-levenshtein@1.0.16: {} + fast-uri@3.1.0: {} - fastparse@1.1.2: {} - - fastq@1.17.1: + fastq@1.19.1: dependencies: - reusify: 1.0.4 + reusify: 1.1.0 faye-websocket@0.11.4: dependencies: @@ -29970,8 +19197,6 @@ snapshots: dependencies: bser: 2.1.1 - figgy-pudding@3.5.2: {} - figures@2.0.0: dependencies: escape-string-regexp: 1.0.5 @@ -29982,7 +19207,7 @@ snapshots: figures@6.1.0: dependencies: - is-unicode-supported: 2.0.0 + is-unicode-supported: 2.1.0 file-entry-cache@6.0.1: dependencies: @@ -30000,22 +19225,10 @@ snapshots: dependencies: to-regex-range: 5.0.1 - finalhandler@1.1.2: - dependencies: - debug: 2.6.9 - encodeurl: 1.0.2 - escape-html: 1.0.3 - on-finished: 2.3.0 - parseurl: 1.3.3 - statuses: 1.5.0 - unpipe: 1.0.0 - transitivePeerDependencies: - - supports-color - - finalhandler@1.2.0: + finalhandler@1.3.1: dependencies: debug: 2.6.9 - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 on-finished: 2.4.1 parseurl: 1.3.3 @@ -30024,26 +19237,13 @@ snapshots: transitivePeerDependencies: - supports-color - find-cache-dir@2.1.0: - dependencies: - commondir: 1.0.1 - make-dir: 2.1.0 - pkg-dir: 3.0.0 - find-cache-dir@3.3.2: dependencies: commondir: 1.0.1 make-dir: 3.1.0 pkg-dir: 4.2.0 - find-cache-dir@4.0.0: - dependencies: - common-path-prefix: 3.0.0 - pkg-dir: 7.0.0 - - find-root@1.1.0: {} - - find-up-simple@1.0.0: {} + find-up-simple@1.0.1: {} find-up@2.1.0: dependencies: @@ -30063,53 +19263,44 @@ snapshots: locate-path: 6.0.0 path-exists: 4.0.0 - find-up@6.3.0: - dependencies: - locate-path: 7.2.0 - path-exists: 5.0.0 - flat-cache@3.2.0: dependencies: - flatted: 3.3.1 + flatted: 3.3.3 keyv: 4.5.4 rimraf: 3.0.2 flat@5.0.2: {} - flatted@3.3.1: {} + flatted@3.3.3: {} flush-write-stream@1.1.1: dependencies: inherits: 2.0.4 readable-stream: 2.3.8 - follow-redirects@1.15.6(debug@4.3.4): - optionalDependencies: - debug: 4.3.4 - - follow-redirects@1.15.6(debug@4.3.7): + follow-redirects@1.15.11(debug@4.4.3): optionalDependencies: - debug: 4.3.7 + debug: 4.4.3 - for-each@0.3.3: + for-each@0.3.5: dependencies: is-callable: 1.2.7 foreground-child@2.0.0: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 signal-exit: 3.0.7 - foreground-child@3.1.1: + foreground-child@3.3.1: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 signal-exit: 4.1.0 forever-agent@0.6.1: {} - fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.0)(typescript@5.5.4)(vue-template-compiler@2.7.16)(webpack@5.91.0): + fork-ts-checker-webpack-plugin@6.5.3(eslint@8.57.1)(typescript@5.5.4)(webpack@5.103.0): dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.27.1 '@types/json-schema': 7.0.15 chalk: 4.1.2 chokidar: 3.6.0 @@ -30120,13 +19311,12 @@ snapshots: memfs: 3.5.3 minimatch: 3.1.2 schema-utils: 2.7.0 - semver: 7.6.2 + semver: 7.7.3 tapable: 1.1.3 typescript: 5.5.4 - webpack: 5.91.0(webpack-cli@5.1.4) + webpack: 5.103.0 optionalDependencies: - eslint: 8.57.0 - vue-template-compiler: 2.7.16 + eslint: 8.57.1 form-data@2.3.3: dependencies: @@ -30134,36 +19324,28 @@ snapshots: combined-stream: 1.0.8 mime-types: 2.1.35 - form-data@3.0.1: + form-data@3.0.4: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 mime-types: 2.1.35 - form-data@4.0.0: + form-data@4.0.5: dependencies: asynckit: 0.4.0 combined-stream: 1.0.8 + es-set-tostringtag: 2.1.0 + hasown: 2.0.2 mime-types: 2.1.35 - formidable@2.1.2: - dependencies: - dezalgo: 1.0.4 - hexoid: 1.0.0 - once: 1.4.0 - qs: 6.12.1 - forwarded@0.2.0: {} - fraction.js@4.3.7: {} + fraction.js@5.3.4: {} fresh@0.5.2: {} - from2@2.3.0: - dependencies: - inherits: 2.0.4 - readable-stream: 2.3.8 - fromentries@1.3.2: {} fs-constants@1.0.0: {} @@ -30171,32 +19353,20 @@ snapshots: fs-extra@10.1.0: dependencies: graceful-fs: 4.2.11 - jsonfile: 6.1.0 + jsonfile: 6.2.0 universalify: 2.0.1 - fs-extra@11.2.0: + fs-extra@11.3.2: dependencies: - graceful-fs: 4.2.11 - jsonfile: 6.1.0 + graceful-fs: 4.2.10 + jsonfile: 6.2.0 universalify: 2.0.1 - fs-extra@7.0.1: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - - fs-extra@8.1.0: - dependencies: - graceful-fs: 4.2.11 - jsonfile: 4.0.0 - universalify: 0.1.2 - fs-extra@9.1.0: dependencies: at-least-node: 1.0.0 - graceful-fs: 4.2.11 - jsonfile: 6.1.0 + graceful-fs: 4.2.10 + jsonfile: 6.2.0 universalify: 2.0.1 fs-minipass@2.1.0: @@ -30205,21 +19375,14 @@ snapshots: fs-minipass@3.0.3: dependencies: - minipass: 7.1.1 + minipass: 7.1.2 fs-mkdirp-stream@1.0.0: dependencies: graceful-fs: 4.2.11 through2: 2.0.5 - fs-monkey@1.0.6: {} - - fs-write-stream-atomic@1.0.10: - dependencies: - graceful-fs: 4.2.11 - iferr: 0.1.5 - imurmurhash: 0.1.4 - readable-stream: 2.3.8 + fs-monkey@1.1.0: {} fs.realpath@1.0.0: {} @@ -30228,30 +19391,20 @@ snapshots: function-bind@1.1.2: {} - function.prototype.name@1.1.6: + function.prototype.name@1.1.8: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.3 functions-have-names: 1.2.3 + hasown: 2.0.2 + is-callable: 1.2.7 functions-have-names@1.2.3: {} - gauge@3.0.2: - dependencies: - aproba: 2.0.0 - color-support: 1.1.3 - console-control-strings: 1.1.0 - has-unicode: 2.0.1 - object-assign: 4.1.1 - signal-exit: 3.0.7 - string-width: 4.2.3 - strip-ansi: 6.0.1 - wide-align: 1.1.5 - gauge@4.0.4: dependencies: - aproba: 2.0.0 + aproba: 2.1.0 color-support: 1.1.3 console-control-strings: 1.1.0 has-unicode: 2.0.1 @@ -30262,7 +19415,7 @@ snapshots: gauge@5.0.2: dependencies: - aproba: 2.0.0 + aproba: 2.1.0 color-support: 1.1.3 console-control-strings: 1.1.0 has-unicode: 2.0.1 @@ -30271,25 +19424,28 @@ snapshots: strip-ansi: 6.0.1 wide-align: 1.1.5 - generic-names@4.0.0: - dependencies: - loader-utils: 3.3.1 + generator-function@2.0.1: {} gensync@1.0.0-beta.2: {} get-caller-file@2.0.5: {} - get-east-asian-width@1.2.0: {} + get-east-asian-width@1.4.0: {} get-func-name@2.0.2: {} - get-intrinsic@1.2.4: + get-intrinsic@1.3.0: dependencies: + call-bind-apply-helpers: 1.0.2 + es-define-property: 1.0.1 es-errors: 1.3.0 + es-object-atoms: 1.1.1 function-bind: 1.1.2 - has-proto: 1.0.3 - has-symbols: 1.0.3 + get-proto: 1.0.1 + gopd: 1.2.0 + has-symbols: 1.1.0 hasown: 2.0.2 + math-intrinsics: 1.1.0 get-package-type@0.1.0: {} @@ -30302,21 +19458,24 @@ snapshots: get-port@5.1.1: {} + get-proto@1.0.1: + dependencies: + dunder-proto: 1.0.1 + es-object-atoms: 1.1.1 + get-stream@4.1.0: dependencies: - pump: 3.0.0 + pump: 3.0.3 get-stream@6.0.0: {} get-stream@6.0.1: {} - get-stream@8.0.1: {} - - get-symbol-description@1.0.2: + get-symbol-description@1.1.0: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 es-errors: 1.3.0 - get-intrinsic: 1.2.4 + get-intrinsic: 1.3.0 getpass@0.1.7: dependencies: @@ -30342,7 +19501,7 @@ snapshots: git-up@7.0.0: dependencies: - is-ssh: 1.4.0 + is-ssh: 1.4.1 parse-url: 8.1.0 git-url-parse@13.1.0: @@ -30377,16 +19536,17 @@ snapshots: readable-stream: 2.3.8 remove-trailing-separator: 1.1.0 to-absolute-glob: 2.0.2 - unique-stream: 2.3.1 + unique-stream: 2.4.0 glob-to-regexp@0.4.1: {} - glob@10.3.16: + glob@10.5.0: dependencies: - foreground-child: 3.1.1 - jackspeak: 3.1.2 - minimatch: 9.0.4 - minipass: 7.1.1 + foreground-child: 3.3.1 + jackspeak: 3.4.3 + minimatch: 9.0.5 + minipass: 7.1.2 + package-json-from-dist: 1.0.1 path-scurry: 1.11.1 glob@7.1.4: @@ -30394,7 +19554,7 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 3.0.5 once: 1.4.0 path-is-absolute: 1.0.1 @@ -30403,7 +19563,7 @@ snapshots: fs.realpath: 1.0.0 inflight: 1.0.6 inherits: 2.0.4 - minimatch: 3.1.2 + minimatch: 3.0.4 once: 1.4.0 path-is-absolute: 1.0.1 @@ -30431,8 +19591,6 @@ snapshots: minipass: 4.2.8 path-scurry: 1.11.1 - globals@11.12.0: {} - globals@13.24.0: dependencies: type-fest: 0.20.2 @@ -30440,27 +19598,16 @@ snapshots: globalthis@1.0.4: dependencies: define-properties: 1.2.1 - gopd: 1.0.1 - - globby@10.0.1: - dependencies: - '@types/glob': 7.2.0 - array-union: 2.1.0 - dir-glob: 3.0.1 - fast-glob: 3.3.2 - glob: 7.2.3 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 3.0.0 + gopd: 1.2.0 globby@10.0.2: dependencies: '@types/glob': 7.2.0 array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.2 + fast-glob: 3.3.3 glob: 7.2.3 - ignore: 5.3.1 + ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 @@ -30468,49 +19615,21 @@ snapshots: dependencies: array-union: 2.1.0 dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.1 + fast-glob: 3.3.3 + ignore: 5.3.2 merge2: 1.4.1 slash: 3.0.0 - globby@13.2.2: - dependencies: - dir-glob: 3.0.1 - fast-glob: 3.3.2 - ignore: 5.3.1 - merge2: 1.4.1 - slash: 4.0.0 - - globby@14.0.1: + globby@14.1.0: dependencies: '@sindresorhus/merge-streams': 2.3.0 - fast-glob: 3.3.2 - ignore: 5.3.1 - path-type: 5.0.0 + fast-glob: 3.3.3 + ignore: 7.0.5 + path-type: 6.0.0 slash: 5.1.0 - unicorn-magic: 0.1.0 - - globby@5.0.0: - dependencies: - array-union: 1.0.2 - arrify: 1.0.1 - glob: 7.2.3 - object-assign: 4.1.1 - pify: 2.3.0 - pinkie-promise: 2.0.1 - - globby@7.1.1: - dependencies: - array-union: 1.0.2 - dir-glob: 2.2.2 - glob: 7.2.3 - ignore: 3.3.10 - pify: 3.0.0 - slash: 1.0.0 + unicorn-magic: 0.3.0 - gopd@1.0.1: - dependencies: - get-intrinsic: 1.2.4 + gopd@1.2.0: {} graceful-fs@4.2.10: {} @@ -30518,21 +19637,12 @@ snapshots: graphemer@1.4.0: {} - graphlib@2.1.8: - dependencies: - lodash: 4.17.21 - growl@1.10.5: {} - growly@1.3.0: - optional: true - gzip-size@6.0.0: dependencies: duplexer: 0.1.2 - hammerjs@2.0.8: {} - handle-thing@2.0.1: {} handlebars@4.7.8: @@ -30542,7 +19652,7 @@ snapshots: source-map: 0.6.1 wordwrap: 1.0.0 optionalDependencies: - uglify-js: 3.17.4 + uglify-js: 3.19.3 har-schema@2.0.0: {} @@ -30553,11 +19663,7 @@ snapshots: hard-rejection@2.1.0: {} - has-ansi@2.0.0: - dependencies: - ansi-regex: 2.1.1 - - has-bigints@1.0.2: {} + has-bigints@1.1.0: {} has-flag@3.0.0: {} @@ -30565,40 +19671,24 @@ snapshots: has-property-descriptors@1.0.2: dependencies: - es-define-property: 1.0.0 + es-define-property: 1.0.1 - has-proto@1.0.3: {} + has-proto@1.2.0: + dependencies: + dunder-proto: 1.0.1 - has-symbols@1.0.3: {} + has-symbols@1.1.0: {} has-tostringtag@1.0.2: dependencies: - has-symbols: 1.0.3 + has-symbols: 1.1.0 has-unicode@2.0.1: {} - has@1.0.4: {} - - hash-base@3.0.4: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - - hash-base@3.1.0: - dependencies: - inherits: 2.0.4 - readable-stream: 3.6.2 - safe-buffer: 5.2.1 - hash-sum@1.0.2: {} hash-sum@2.0.0: {} - hash.js@1.1.7: - dependencies: - inherits: 2.0.4 - minimalistic-assert: 1.0.1 - hasha@5.2.2: dependencies: is-stream: 2.0.1 @@ -30610,22 +19700,8 @@ snapshots: he@1.2.0: {} - hexoid@1.0.0: {} - highlight.js@10.7.3: {} - highlight.js@11.9.0: {} - - hmac-drbg@1.0.1: - dependencies: - hash.js: 1.1.7 - minimalistic-assert: 1.0.1 - minimalistic-crypto-utils: 1.0.1 - - hoist-non-react-statics@3.3.2: - dependencies: - react-is: 16.13.1 - hosted-git-info@2.8.9: {} hosted-git-info@3.0.8: @@ -30640,13 +19716,13 @@ snapshots: dependencies: lru-cache: 7.18.3 - hosted-git-info@6.1.1: + hosted-git-info@6.1.3: dependencies: lru-cache: 7.18.3 hosted-git-info@7.0.2: dependencies: - lru-cache: 10.2.2 + lru-cache: 10.4.3 hpack.js@2.1.6: dependencies: @@ -30655,11 +19731,6 @@ snapshots: readable-stream: 2.3.8 wbuf: 1.7.3 - html-element-map@1.3.1: - dependencies: - array.prototype.filter: 1.0.4 - call-bind: 1.0.7 - html-encoding-sniffer@2.0.1: dependencies: whatwg-encoding: 1.0.5 @@ -30668,22 +19739,10 @@ snapshots: dependencies: whatwg-encoding: 2.0.0 - html-encoding-sniffer@4.0.0: - dependencies: - whatwg-encoding: 3.1.1 - - html-entities@2.5.2: {} + html-entities@2.6.0: {} html-escaper@2.0.2: {} - html-loader@0.5.5: - dependencies: - es6-templates: 0.2.3 - fastparse: 1.1.2 - html-minifier: 3.5.21 - loader-utils: 1.4.2 - object-assign: 4.1.1 - html-minifier-terser@6.1.0: dependencies: camel-case: 4.1.2 @@ -30692,31 +19751,19 @@ snapshots: he: 1.2.0 param-case: 3.0.4 relateurl: 0.2.7 - terser: 5.31.0 - - html-minifier@3.5.21: - dependencies: - camel-case: 3.0.0 - clean-css: 4.2.4 - commander: 2.17.1 - he: 1.2.0 - param-case: 2.1.1 - relateurl: 0.2.7 - uglify-js: 3.4.10 + terser: 5.44.1 html-tags@2.0.0: {} - html-tags@3.3.1: {} - - html-webpack-plugin@5.6.0(webpack@5.91.0): + html-webpack-plugin@5.6.5(webpack@5.103.0): dependencies: '@types/html-minifier-terser': 6.1.0 html-minifier-terser: 6.1.0 lodash: 4.17.21 pretty-error: 4.0.0 - tapable: 2.2.1 + tapable: 2.3.0 optionalDependencies: - webpack: 5.91.0(webpack-cli@5.1.4) + webpack: 5.103.0 htmlparser2@6.1.0: dependencies: @@ -30725,14 +19772,7 @@ snapshots: domutils: 2.8.0 entities: 2.2.0 - htmlparser2@8.0.2: - dependencies: - domelementtype: 2.3.0 - domhandler: 5.0.3 - domutils: 3.1.0 - entities: 4.5.0 - - http-cache-semantics@4.1.1: {} + http-cache-semantics@4.2.0: {} http-deceiver@1.2.7: {} @@ -30751,13 +19791,13 @@ snapshots: statuses: 2.0.1 toidentifier: 1.0.1 - http-parser-js@0.5.8: {} + http-parser-js@0.5.10: {} http-proxy-agent@4.0.1: dependencies: '@tootallnate/once': 1.1.2 agent-base: 6.0.2 - debug: 4.3.7 + debug: 4.4.3 transitivePeerDependencies: - supports-color @@ -30765,134 +19805,63 @@ snapshots: dependencies: '@tootallnate/once': 2.0.0 agent-base: 6.0.2 - debug: 4.3.4 + debug: 4.4.3 transitivePeerDependencies: - supports-color http-proxy-agent@7.0.2: dependencies: - agent-base: 7.1.1 - debug: 4.3.7 + agent-base: 7.1.4 + debug: 4.4.3 transitivePeerDependencies: - supports-color - http-proxy-middleware@2.0.6(@types/express@4.17.21): + http-proxy-middleware@2.0.9(@types/express@4.17.25)(debug@4.4.3): dependencies: - '@types/http-proxy': 1.17.14 - http-proxy: 1.18.1 + '@types/http-proxy': 1.17.17 + http-proxy: 1.18.1(debug@4.4.3) is-glob: 4.0.3 is-plain-obj: 3.0.0 - micromatch: 4.0.7 - optionalDependencies: - '@types/express': 4.17.21 - transitivePeerDependencies: - - debug - - http-proxy-middleware@2.0.6(@types/express@4.17.21)(debug@4.3.4): - dependencies: - '@types/http-proxy': 1.17.14 - http-proxy: 1.18.1(debug@4.3.4) - is-glob: 4.0.3 - is-plain-obj: 3.0.0 - micromatch: 4.0.7 - optionalDependencies: - '@types/express': 4.17.21 - transitivePeerDependencies: - - debug - - http-proxy-middleware@3.0.3: - dependencies: - '@types/http-proxy': 1.17.15 - debug: 4.3.7 - http-proxy: 1.18.1(debug@4.3.7) - is-glob: 4.0.3 - is-plain-object: 5.0.0 micromatch: 4.0.8 - transitivePeerDependencies: - - supports-color - - http-proxy@1.18.1: - dependencies: - eventemitter3: 4.0.7 - follow-redirects: 1.15.6(debug@4.3.4) - requires-port: 1.0.0 - transitivePeerDependencies: - - debug - - http-proxy@1.18.1(debug@4.3.4): - dependencies: - eventemitter3: 4.0.7 - follow-redirects: 1.15.6(debug@4.3.4) - requires-port: 1.0.0 + optionalDependencies: + '@types/express': 4.17.25 transitivePeerDependencies: - debug - http-proxy@1.18.1(debug@4.3.7): + http-proxy@1.18.1(debug@4.4.3): dependencies: eventemitter3: 4.0.7 - follow-redirects: 1.15.6(debug@4.3.7) + follow-redirects: 1.15.11(debug@4.4.3) requires-port: 1.0.0 transitivePeerDependencies: - debug - http-server@14.1.1: - dependencies: - basic-auth: 2.0.1 - chalk: 4.1.2 - corser: 2.0.1 - he: 1.2.0 - html-encoding-sniffer: 3.0.0 - http-proxy: 1.18.1 - mime: 1.6.0 - minimist: 1.2.8 - opener: 1.5.2 - portfinder: 1.0.32 - secure-compare: 3.0.1 - union: 0.5.0 - url-join: 4.0.1 - transitivePeerDependencies: - - debug - - supports-color - http-signature@1.2.0: dependencies: assert-plus: 1.0.0 jsprim: 1.4.2 sshpk: 1.18.0 - https-browserify@1.0.0: {} - - https-proxy-agent@2.2.4: - dependencies: - agent-base: 4.3.0 - debug: 3.2.7 - transitivePeerDependencies: - - supports-color - https-proxy-agent@5.0.1: dependencies: agent-base: 6.0.2 - debug: 4.3.7 + debug: 4.4.3 transitivePeerDependencies: - supports-color - https-proxy-agent@7.0.5: + https-proxy-agent@7.0.6: dependencies: - agent-base: 7.1.1 - debug: 4.3.4 + agent-base: 7.1.4 + debug: 4.4.3 transitivePeerDependencies: - supports-color human-signals@2.1.0: {} - human-signals@5.0.0: {} - humanize-ms@1.2.1: dependencies: ms: 2.1.3 - hyperdyperid@1.2.0: {} - iconv-lite@0.4.24: dependencies: safer-buffer: 2.1.2 @@ -30901,24 +19870,20 @@ snapshots: dependencies: safer-buffer: 2.1.2 - icss-replace-symbols@1.1.0: {} + iconv-lite@0.7.0: + dependencies: + safer-buffer: 2.1.2 icss-utils@4.1.1: dependencies: postcss: 7.0.39 - icss-utils@5.1.0(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - - icss-utils@5.1.0(postcss@8.4.41): + icss-utils@5.1.0(postcss@8.5.6): dependencies: - postcss: 8.4.41 + postcss: 8.5.6 ieee754@1.2.1: {} - iferr@0.1.5: {} - ignore-by-default@2.1.0: {} ignore-walk@5.0.1: @@ -30927,37 +19892,18 @@ snapshots: ignore-walk@6.0.5: dependencies: - minimatch: 9.0.4 - - ignore@3.3.10: {} - - ignore@5.3.1: {} - - ignore@6.0.2: {} - - image-size@0.5.5: - optional: true - - immediate@3.0.6: {} + minimatch: 9.0.5 - immutable@4.3.6: {} + ignore@5.3.2: {} - import-cwd@3.0.0: - dependencies: - import-from: 3.0.0 + ignore@7.0.5: {} - import-fresh@3.3.0: + import-fresh@3.3.1: dependencies: parent-module: 1.0.1 resolve-from: 4.0.0 - import-from@3.0.0: - dependencies: - resolve-from: 5.0.0 - - import-lazy@4.0.0: {} - - import-local@3.1.0: + import-local@3.2.0: dependencies: pkg-dir: 4.2.0 resolve-cwd: 3.0.0 @@ -30989,14 +19935,10 @@ snapshots: promzard: 0.3.0 read: 1.0.7 read-package-json: 5.0.1 - semver: 7.6.2 + semver: 7.7.3 validate-npm-package-license: 3.0.4 validate-npm-package-name: 4.0.0 - injection-js@2.4.0: - dependencies: - tslib: 2.6.2 - inquirer@8.2.4: dependencies: ansi-escapes: 4.3.2 @@ -31009,44 +19951,41 @@ snapshots: mute-stream: 0.0.8 ora: 5.4.1 run-async: 2.4.1 - rxjs: 7.8.1 + rxjs: 7.8.2 string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 wrap-ansi: 7.0.0 - inquirer@8.2.6: + inquirer@8.2.7(@types/node@22.19.1): dependencies: + '@inquirer/external-editor': 1.0.3(@types/node@22.19.1) ansi-escapes: 4.3.2 chalk: 4.1.2 cli-cursor: 3.1.0 cli-width: 3.0.0 - external-editor: 3.1.0 figures: 3.2.0 lodash: 4.17.21 mute-stream: 0.0.8 ora: 5.4.1 run-async: 2.4.1 - rxjs: 7.8.1 + rxjs: 7.8.2 string-width: 4.2.3 strip-ansi: 6.0.1 through: 2.3.8 wrap-ansi: 6.2.0 + transitivePeerDependencies: + - '@types/node' - internal-slot@1.0.7: + internal-slot@1.1.0: dependencies: es-errors: 1.3.0 hasown: 2.0.2 - side-channel: 1.0.6 + side-channel: 1.1.0 interpret@1.4.0: {} - interpret@3.1.1: {} - - ip-address@9.0.5: - dependencies: - jsbn: 1.1.0 - sprintf-js: 1.1.3 + ip-address@10.1.0: {} ipaddr.js@1.9.1: {} @@ -31059,72 +19998,69 @@ snapshots: is-relative: 1.0.0 is-windows: 1.0.2 - is-arguments@1.1.1: + is-array-buffer@3.0.5: dependencies: - call-bind: 1.0.7 - has-tostringtag: 1.0.2 - - is-array-buffer@3.0.4: - dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 is-arrayish@0.2.1: {} - is-async-function@2.0.0: + is-async-function@2.1.1: dependencies: + async-function: 1.0.0 + call-bound: 1.0.4 + get-proto: 1.0.1 has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 - is-bigint@1.0.4: + is-bigint@1.1.0: dependencies: - has-bigints: 1.0.2 + has-bigints: 1.1.0 is-binary-path@2.1.0: dependencies: binary-extensions: 2.3.0 - is-boolean-object@1.1.2: + is-boolean-object@1.2.2: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-buffer@1.1.6: {} - is-builtin-module@3.2.1: - dependencies: - builtin-modules: 3.3.0 - is-callable@1.2.7: {} is-ci@2.0.0: dependencies: ci-info: 2.0.0 - is-core-module@2.13.1: + is-core-module@2.16.1: dependencies: hasown: 2.0.2 - is-data-view@1.0.1: + is-data-view@1.0.2: dependencies: - is-typed-array: 1.1.13 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + is-typed-array: 1.1.15 - is-date-object@1.0.5: + is-date-object@1.1.0: dependencies: + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-docker@2.2.1: {} - is-docker@3.0.0: {} - is-extglob@2.1.1: {} is-file-esm@1.0.0: dependencies: read-pkg-up: 7.0.1 - is-finalizationregistry@1.0.2: + is-finalizationregistry@1.1.1: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 is-fullwidth-code-point@2.0.0: {} @@ -31132,15 +20068,19 @@ snapshots: is-fullwidth-code-point@4.0.0: {} - is-fullwidth-code-point@5.0.0: + is-fullwidth-code-point@5.1.0: dependencies: - get-east-asian-width: 1.2.0 + get-east-asian-width: 1.4.0 is-generator-fn@2.1.0: {} - is-generator-function@1.0.10: + is-generator-function@1.1.2: dependencies: + call-bound: 1.0.4 + generator-function: 2.0.1 + get-proto: 1.0.1 has-tostringtag: 1.0.2 + safe-regex-test: 1.1.0 is-glob@3.1.0: dependencies: @@ -31150,49 +20090,27 @@ snapshots: dependencies: is-extglob: 2.1.1 - is-inside-container@1.0.0: - dependencies: - is-docker: 3.0.0 - is-interactive@1.0.0: {} is-lambda@1.0.1: {} is-map@2.0.3: {} - is-module@1.0.0: {} - - is-nan@1.3.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - is-negated-glob@1.0.0: {} is-negative-zero@2.0.3: {} - is-network-error@1.1.0: {} - - is-number-object@1.0.7: + is-number-object@1.1.1: dependencies: + call-bound: 1.0.4 has-tostringtag: 1.0.2 is-number@7.0.0: {} is-obj@2.0.0: {} - is-path-cwd@1.0.0: {} - is-path-cwd@2.2.0: {} - is-path-in-cwd@1.0.1: - dependencies: - is-path-inside: 1.0.1 - - is-path-inside@1.0.1: - dependencies: - path-is-inside: 1.0.2 - is-path-inside@3.0.3: {} is-plain-obj@1.1.0: {} @@ -31205,22 +20123,18 @@ snapshots: dependencies: isobject: 3.0.1 - is-plain-object@3.0.1: {} - is-plain-object@5.0.0: {} is-potential-custom-element-name@1.0.1: {} is-promise@4.0.0: {} - is-reference@1.2.1: - dependencies: - '@types/estree': 1.0.5 - - is-regex@1.1.4: + is-regex@1.2.1: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 + gopd: 1.2.0 has-tostringtag: 1.0.2 + hasown: 2.0.2 is-relative@1.0.0: dependencies: @@ -31228,13 +20142,13 @@ snapshots: is-set@2.0.3: {} - is-shared-array-buffer@1.0.3: + is-shared-array-buffer@1.0.4: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 - is-ssh@1.4.0: + is-ssh@1.4.1: dependencies: - protocols: 2.0.1 + protocols: 2.0.2 is-stream@1.1.0: {} @@ -31242,25 +20156,24 @@ snapshots: is-stream@2.0.1: {} - is-stream@3.0.0: {} - - is-string@1.0.7: + is-string@1.1.1: dependencies: + call-bound: 1.0.4 has-tostringtag: 1.0.2 - is-subset@0.1.1: {} - - is-symbol@1.0.4: + is-symbol@1.1.1: dependencies: - has-symbols: 1.0.3 + call-bound: 1.0.4 + has-symbols: 1.1.0 + safe-regex-test: 1.1.0 is-text-path@1.0.1: dependencies: text-extensions: 1.9.0 - is-typed-array@1.1.13: + is-typed-array@1.1.15: dependencies: - which-typed-array: 1.1.15 + which-typed-array: 1.1.19 is-typedarray@1.0.0: {} @@ -31270,7 +20183,7 @@ snapshots: is-unicode-supported@0.1.0: {} - is-unicode-supported@2.0.0: {} + is-unicode-supported@2.1.0: {} is-utf8@0.2.1: {} @@ -31278,16 +20191,14 @@ snapshots: is-weakmap@2.0.2: {} - is-weakref@1.0.2: + is-weakref@1.1.1: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 - is-weakset@2.0.3: + is-weakset@2.0.4: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - - is-what@3.14.1: {} + call-bound: 1.0.4 + get-intrinsic: 1.3.0 is-windows@1.0.2: {} @@ -31295,24 +20206,16 @@ snapshots: dependencies: is-docker: 2.2.1 - is-wsl@3.1.0: - dependencies: - is-inside-container: 1.0.0 - isarray@1.0.0: {} isarray@2.0.5: {} - isbinaryfile@4.0.10: {} - isexe@2.0.0: {} isexe@3.1.1: {} isobject@3.0.1: {} - isomorphic-timers-promises@1.0.1: {} - isstream@0.1.2: {} istanbul-lib-coverage@3.2.2: {} @@ -31323,7 +20226,7 @@ snapshots: istanbul-lib-instrument@4.0.3: dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.28.5 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 @@ -31332,28 +20235,18 @@ snapshots: istanbul-lib-instrument@5.2.1: dependencies: - '@babel/core': 7.24.5 - '@babel/parser': 7.24.5 + '@babel/core': 7.28.5 + '@babel/parser': 7.28.5 '@istanbuljs/schema': 0.1.3 istanbul-lib-coverage: 3.2.2 semver: 6.3.1 transitivePeerDependencies: - supports-color - istanbul-lib-instrument@6.0.3: - dependencies: - '@babel/core': 7.25.2 - '@babel/parser': 7.24.5 - '@istanbuljs/schema': 0.1.3 - istanbul-lib-coverage: 3.2.2 - semver: 7.6.3 - transitivePeerDependencies: - - supports-color - istanbul-lib-processinfo@2.0.3: dependencies: archy: 1.0.0 - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 istanbul-lib-coverage: 3.2.2 p-map: 3.0.0 rimraf: 3.0.2 @@ -31367,68 +20260,28 @@ snapshots: istanbul-lib-source-maps@4.0.1: dependencies: - debug: 4.3.4 + debug: 4.4.3 istanbul-lib-coverage: 3.2.2 source-map: 0.6.1 transitivePeerDependencies: - supports-color - istanbul-lib-source-maps@5.0.6: - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - debug: 4.3.7 - istanbul-lib-coverage: 3.2.2 - transitivePeerDependencies: - - supports-color - - istanbul-reports@3.1.7: + istanbul-reports@3.2.0: dependencies: html-escaper: 2.0.2 istanbul-lib-report: 3.0.1 - iterator.prototype@1.1.2: - dependencies: - define-properties: 1.2.1 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 - reflect.getprototypeof: 1.0.6 - set-function-name: 2.0.2 - - jackspeak@3.1.2: + jackspeak@3.4.3: dependencies: '@isaacs/cliui': 8.0.2 optionalDependencies: '@pkgjs/parseargs': 0.11.0 - jake@10.9.1: + jake@10.9.4: dependencies: - async: 3.2.5 - chalk: 4.1.2 + async: 3.2.6 filelist: 1.0.4 - minimatch: 3.1.2 - - jasmine-core@2.8.0: {} - - jasmine-core@3.99.1: {} - - jasmine-core@5.1.2: {} - - jasmine-spec-reporter@4.2.1: - dependencies: - colors: 1.1.2 - - jasmine@2.8.0: - dependencies: - exit: 0.1.2 - glob: 7.2.3 - jasmine-core: 2.8.0 - - jasmine@3.99.0: - dependencies: - glob: 7.2.3 - jasmine-core: 3.99.1 - - jasminewd2@2.2.0: {} + picocolors: 1.1.1 javascript-stringify@2.1.0: {} @@ -31443,7 +20296,7 @@ snapshots: '@jest/environment': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 22.13.8 + '@types/node': 22.19.1 chalk: 4.1.2 co: 4.6.0 dedent: 0.7.0 @@ -31462,22 +20315,20 @@ snapshots: transitivePeerDependencies: - supports-color - jest-cli@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)): + jest-cli@27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4)): dependencies: - '@jest/core': 27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)) + '@jest/core': 27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4)) '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 chalk: 4.1.2 exit: 0.1.2 graceful-fs: 4.2.11 - import-local: 3.1.0 - jest-config: 27.5.1(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)) + import-local: 3.2.0 + jest-config: 27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4)) jest-util: 27.5.1 jest-validate: 27.5.1 prompts: 2.4.2 yargs: 16.2.0 - optionalDependencies: - node-notifier: 8.0.2 transitivePeerDependencies: - bufferutil - canvas @@ -31485,12 +20336,12 @@ snapshots: - ts-node - utf-8-validate - jest-config@27.5.1(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)): + jest-config@27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4)): dependencies: - '@babel/core': 7.24.5 + '@babel/core': 7.28.5 '@jest/test-sequencer': 27.5.1 '@jest/types': 27.5.1 - babel-jest: 27.5.1(@babel/core@7.24.5) + babel-jest: 27.5.1(@babel/core@7.28.5) chalk: 4.1.2 ci-info: 3.9.0 deepmerge: 4.3.1 @@ -31506,13 +20357,13 @@ snapshots: jest-runner: 27.5.1 jest-util: 27.5.1 jest-validate: 27.5.1 - micromatch: 4.0.7 + micromatch: 4.0.8 parse-json: 5.2.0 pretty-format: 27.5.1 slash: 3.0.0 strip-json-comments: 3.1.1 optionalDependencies: - ts-node: 10.9.2(@types/node@22.13.8)(typescript@5.5.4) + ts-node: 10.9.2(@types/node@22.19.1)(typescript@5.5.4) transitivePeerDependencies: - bufferutil - canvas @@ -31543,7 +20394,7 @@ snapshots: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 22.13.8 + '@types/node': 22.19.1 jest-mock: 27.5.1 jest-util: 27.5.1 jsdom: 16.7.0 @@ -31558,7 +20409,7 @@ snapshots: '@jest/environment': 27.5.1 '@jest/fake-timers': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 22.13.8 + '@types/node': 22.19.1 jest-mock: 27.5.1 jest-util: 27.5.1 @@ -31568,7 +20419,7 @@ snapshots: dependencies: '@jest/types': 27.5.1 '@types/graceful-fs': 4.1.9 - '@types/node': 22.13.8 + '@types/node': 22.19.1 anymatch: 3.1.3 fb-watchman: 2.0.2 graceful-fs: 4.2.11 @@ -31576,7 +20427,7 @@ snapshots: jest-serializer: 27.5.1 jest-util: 27.5.1 jest-worker: 27.5.1 - micromatch: 4.0.7 + micromatch: 4.0.8 walker: 1.0.8 optionalDependencies: fsevents: 2.3.3 @@ -31587,7 +20438,7 @@ snapshots: '@jest/source-map': 27.5.1 '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 22.13.8 + '@types/node': 22.19.1 chalk: 4.1.2 co: 4.6.0 expect: 27.5.1 @@ -31617,12 +20468,12 @@ snapshots: jest-message-util@27.5.1: dependencies: - '@babel/code-frame': 7.24.2 + '@babel/code-frame': 7.27.1 '@jest/types': 27.5.1 '@types/stack-utils': 2.0.3 chalk: 4.1.2 graceful-fs: 4.2.11 - micromatch: 4.0.7 + micromatch: 4.0.8 pretty-format: 27.5.1 slash: 3.0.0 stack-utils: 2.0.6 @@ -31630,7 +20481,7 @@ snapshots: jest-mock@27.5.1: dependencies: '@jest/types': 27.5.1 - '@types/node': 22.13.8 + '@types/node': 22.19.1 jest-pnp-resolver@1.2.3(jest-resolve@27.5.1): optionalDependencies: @@ -31655,7 +20506,7 @@ snapshots: jest-pnp-resolver: 1.2.3(jest-resolve@27.5.1) jest-util: 27.5.1 jest-validate: 27.5.1 - resolve: 1.22.8 + resolve: 1.22.11 resolve.exports: 1.1.1 slash: 3.0.0 @@ -31666,7 +20517,7 @@ snapshots: '@jest/test-result': 27.5.1 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 22.13.8 + '@types/node': 22.19.1 chalk: 4.1.2 emittery: 0.8.1 graceful-fs: 4.2.11 @@ -31698,8 +20549,8 @@ snapshots: '@jest/transform': 27.5.1 '@jest/types': 27.5.1 chalk: 4.1.2 - cjs-module-lexer: 1.3.1 - collect-v8-coverage: 1.0.2 + cjs-module-lexer: 1.4.3 + collect-v8-coverage: 1.0.3 execa: 5.1.1 glob: 7.2.3 graceful-fs: 4.2.11 @@ -31717,21 +20568,21 @@ snapshots: jest-serializer@27.5.1: dependencies: - '@types/node': 22.13.8 + '@types/node': 22.19.1 graceful-fs: 4.2.11 jest-snapshot@27.5.1: dependencies: - '@babel/core': 7.24.5 - '@babel/generator': 7.24.5 - '@babel/plugin-syntax-typescript': 7.24.1(@babel/core@7.24.5) - '@babel/traverse': 7.24.5 - '@babel/types': 7.24.5 + '@babel/core': 7.28.5 + '@babel/generator': 7.28.5 + '@babel/plugin-syntax-typescript': 7.27.1(@babel/core@7.28.5) + '@babel/traverse': 7.28.5 + '@babel/types': 7.28.5 '@jest/transform': 27.5.1 '@jest/types': 27.5.1 - '@types/babel__traverse': 7.20.6 + '@types/babel__traverse': 7.28.0 '@types/prettier': 2.7.3 - babel-preset-current-node-syntax: 1.0.1(@babel/core@7.24.5) + babel-preset-current-node-syntax: 1.2.0(@babel/core@7.28.5) chalk: 4.1.2 expect: 27.5.1 graceful-fs: 4.2.11 @@ -31743,14 +20594,14 @@ snapshots: jest-util: 27.5.1 natural-compare: 1.4.0 pretty-format: 27.5.1 - semver: 7.6.2 + semver: 7.7.3 transitivePeerDependencies: - supports-color jest-util@27.5.1: dependencies: '@jest/types': 27.5.1 - '@types/node': 22.13.8 + '@types/node': 22.19.1 chalk: 4.1.2 ci-info: 3.9.0 graceful-fs: 4.2.11 @@ -31769,7 +20620,7 @@ snapshots: dependencies: '@jest/test-result': 27.5.1 '@jest/types': 27.5.1 - '@types/node': 22.13.8 + '@types/node': 22.19.1 ansi-escapes: 4.3.2 chalk: 4.1.2 jest-util: 27.5.1 @@ -31777,17 +20628,15 @@ snapshots: jest-worker@27.5.1: dependencies: - '@types/node': 22.13.8 + '@types/node': 22.19.1 merge-stream: 2.0.0 supports-color: 8.1.1 - jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)): + jest@27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4)): dependencies: - '@jest/core': 27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)) - import-local: 3.1.0 - jest-cli: 27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)) - optionalDependencies: - node-notifier: 8.0.2 + '@jest/core': 27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4)) + import-local: 3.2.0 + jest-cli: 27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4)) transitivePeerDependencies: - bufferutil - canvas @@ -31795,11 +20644,7 @@ snapshots: - ts-node - utf-8-validate - jiti@1.21.0: {} - - jju@1.4.0: {} - - joi@17.13.1: + joi@17.13.3: dependencies: '@hapi/hoek': 9.3.0 '@hapi/topo': 5.1.0 @@ -31807,11 +20652,11 @@ snapshots: '@sideway/formula': 3.0.1 '@sideway/pinpoint': 2.0.0 - js-beautify@1.15.1: + js-beautify@1.15.4: dependencies: config-chain: 1.1.13 editorconfig: 1.0.4 - glob: 10.3.16 + glob: 10.5.0 js-cookie: 3.0.5 nopt: 7.2.1 @@ -31829,9 +20674,7 @@ snapshots: js-tokens@4.0.0: {} - js-tokens@9.0.0: {} - - js-yaml@3.14.1: + js-yaml@3.14.2: dependencies: argparse: 1.0.10 esprima: 4.0.1 @@ -31844,9 +20687,11 @@ snapshots: dependencies: argparse: 2.0.1 - jsbn@0.1.1: {} + js-yaml@4.1.1: + dependencies: + argparse: 2.0.1 - jsbn@1.1.0: {} + jsbn@0.1.1: {} jsdom-global@3.0.2(jsdom@18.1.1): dependencies: @@ -31859,20 +20704,20 @@ snapshots: jsdom@16.7.0: dependencies: abab: 2.0.6 - acorn: 8.11.3 + acorn: 8.15.0 acorn-globals: 6.0.0 cssom: 0.4.4 cssstyle: 2.3.0 data-urls: 2.0.0 - decimal.js: 10.4.3 + decimal.js: 10.6.0 domexception: 2.0.1 escodegen: 2.1.0 - form-data: 3.0.1 + form-data: 3.0.4 html-encoding-sniffer: 2.0.1 http-proxy-agent: 4.0.1 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.10 + nwsapi: 2.2.22 parse5: 6.0.1 saxes: 5.0.1 symbol-tree: 3.2.4 @@ -31883,7 +20728,7 @@ snapshots: whatwg-encoding: 1.0.5 whatwg-mimetype: 2.3.0 whatwg-url: 8.7.0 - ws: 7.5.9 + ws: 7.5.10 xml-name-validator: 3.0.0 transitivePeerDependencies: - bufferutil @@ -31893,20 +20738,20 @@ snapshots: jsdom@18.1.1: dependencies: abab: 2.0.6 - acorn: 8.11.3 + acorn: 8.15.0 acorn-globals: 6.0.0 cssom: 0.5.0 cssstyle: 2.3.0 data-urls: 3.0.2 - decimal.js: 10.4.3 + decimal.js: 10.6.0 domexception: 4.0.0 escodegen: 2.1.0 - form-data: 4.0.0 + form-data: 4.0.5 html-encoding-sniffer: 3.0.0 http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.10 + nwsapi: 2.2.22 parse5: 6.0.1 saxes: 5.0.1 symbol-tree: 3.2.4 @@ -31917,7 +20762,7 @@ snapshots: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 10.0.0 - ws: 8.17.0 + ws: 8.18.3 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil @@ -31929,15 +20774,15 @@ snapshots: abab: 2.0.6 cssstyle: 3.0.0 data-urls: 4.0.0 - decimal.js: 10.4.3 + decimal.js: 10.6.0 domexception: 4.0.0 - form-data: 4.0.0 + form-data: 4.0.5 html-encoding-sniffer: 3.0.0 http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.10 - parse5: 7.1.2 + nwsapi: 2.2.22 + parse5: 7.3.0 rrweb-cssom: 0.6.0 saxes: 6.0.0 symbol-tree: 3.2.4 @@ -31947,46 +20792,14 @@ snapshots: whatwg-encoding: 2.0.0 whatwg-mimetype: 3.0.0 whatwg-url: 12.0.1 - ws: 8.17.0 + ws: 8.18.3 xml-name-validator: 4.0.0 transitivePeerDependencies: - bufferutil - supports-color - utf-8-validate - jsdom@24.1.1: - dependencies: - cssstyle: 4.0.1 - data-urls: 5.0.0 - decimal.js: 10.4.3 - form-data: 4.0.0 - html-encoding-sniffer: 4.0.0 - http-proxy-agent: 7.0.2 - https-proxy-agent: 7.0.5 - is-potential-custom-element-name: 1.0.1 - nwsapi: 2.2.12 - parse5: 7.1.2 - rrweb-cssom: 0.7.1 - saxes: 6.0.0 - symbol-tree: 3.2.4 - tough-cookie: 4.1.4 - w3c-xmlserializer: 5.0.0 - webidl-conversions: 7.0.0 - whatwg-encoding: 3.1.1 - whatwg-mimetype: 4.0.0 - whatwg-url: 14.0.0 - ws: 8.18.0 - xml-name-validator: 5.0.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - jsesc@0.5.0: {} - - jsesc@2.5.2: {} - - jsesc@3.0.2: {} + jsesc@3.1.0: {} json-buffer@3.0.1: {} @@ -31996,19 +20809,6 @@ snapshots: json-parse-even-better-errors@3.0.2: {} - json-refs@3.0.15: - dependencies: - commander: 4.1.1 - graphlib: 2.1.8 - js-yaml: 3.14.1 - lodash: 4.17.21 - native-promise-only: 0.8.1 - path-loader: 1.0.12 - slash: 3.0.0 - uri-js: 4.4.1 - transitivePeerDependencies: - - supports-color - json-schema-traverse@0.4.1: {} json-schema-traverse@1.0.0: {} @@ -32029,15 +20829,9 @@ snapshots: jsonc-parser@3.2.0: {} - jsonc-parser@3.2.1: {} - jsonc-parser@3.3.1: {} - jsonfile@4.0.0: - optionalDependencies: - graceful-fs: 4.2.11 - - jsonfile@6.1.0: + jsonfile@6.2.0: dependencies: universalify: 2.0.1 optionalDependencies: @@ -32052,97 +20846,10 @@ snapshots: json-schema: 0.4.0 verror: 1.10.0 - jsx-ast-utils@3.3.5: - dependencies: - array-includes: 3.1.8 - array.prototype.flat: 1.3.2 - object.assign: 4.1.5 - object.values: 1.2.0 - - jszip@3.10.1: - dependencies: - lie: 3.3.0 - pako: 1.0.11 - readable-stream: 2.3.8 - setimmediate: 1.0.5 - just-diff-apply@5.5.0: {} just-diff@6.0.2: {} - karma-chrome-launcher@3.2.0: - dependencies: - which: 1.3.1 - - karma-coverage@2.0.3: - dependencies: - istanbul-lib-coverage: 3.2.2 - istanbul-lib-instrument: 4.0.3 - istanbul-lib-report: 3.0.1 - istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 - minimatch: 3.1.2 - transitivePeerDependencies: - - supports-color - - karma-jasmine-html-reporter@1.7.0(jasmine-core@5.1.2)(karma-jasmine@2.0.1(karma@6.4.3))(karma@6.4.3): - dependencies: - jasmine-core: 5.1.2 - karma: 6.4.3 - karma-jasmine: 2.0.1(karma@6.4.3) - - karma-jasmine@2.0.1(karma@6.4.3): - dependencies: - jasmine-core: 3.99.1 - karma: 6.4.3 - - karma-source-map-support@1.4.0: - dependencies: - source-map-support: 0.5.21 - - karma-sourcemap-loader@0.3.8: - dependencies: - graceful-fs: 4.2.11 - - karma-webpack@5.0.1(webpack@5.91.0): - dependencies: - glob: 7.2.3 - minimatch: 9.0.4 - webpack: 5.91.0(webpack-cli@5.1.4) - webpack-merge: 4.2.2 - - karma@6.4.3: - dependencies: - '@colors/colors': 1.5.0 - body-parser: 1.20.2 - braces: 3.0.3 - chokidar: 3.6.0 - connect: 3.7.0 - di: 0.0.1 - dom-serialize: 2.2.1 - glob: 7.2.3 - graceful-fs: 4.2.11 - http-proxy: 1.18.1 - isbinaryfile: 4.0.10 - lodash: 4.17.21 - log4js: 6.9.1 - mime: 2.6.0 - minimatch: 3.1.2 - mkdirp: 0.5.6 - qjobs: 1.2.0 - range-parser: 1.2.1 - rimraf: 3.0.2 - socket.io: 4.7.5 - source-map: 0.6.1 - tmp: 0.2.3 - ua-parser-js: 0.7.37 - yargs: 16.2.0 - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - keyv@4.5.4: dependencies: json-buffer: 3.0.1 @@ -32153,16 +20860,14 @@ snapshots: klona@2.0.6: {} - kolorist@1.8.0: {} - - launch-editor-middleware@2.6.1: + launch-editor-middleware@2.12.0: dependencies: - launch-editor: 2.6.1 + launch-editor: 2.12.0 - launch-editor@2.6.1: + launch-editor@2.12.0: dependencies: - picocolors: 1.0.1 - shell-quote: 1.8.1 + picocolors: 1.1.1 + shell-quote: 1.8.3 lazystream@1.0.1: dependencies: @@ -32181,7 +20886,7 @@ snapshots: dependencies: flush-write-stream: 1.1.1 - lerna@6.6.2(encoding@0.1.13): + lerna@6.6.2(@types/node@22.19.1)(encoding@0.1.13): dependencies: '@lerna/child-process': 6.6.2 '@lerna/create': 6.6.2 @@ -32203,7 +20908,7 @@ snapshots: cosmiconfig: 7.0.0 dedent: 0.7.0 dot-prop: 6.0.1 - envinfo: 7.13.0 + envinfo: 7.20.0 execa: 5.0.0 fs-extra: 9.1.0 get-port: 5.1.1 @@ -32213,12 +20918,12 @@ snapshots: globby: 11.1.0 graceful-fs: 4.2.10 has-unicode: 2.0.1 - import-local: 3.1.0 + import-local: 3.2.0 init-package-json: 3.0.2 - inquirer: 8.2.6 + inquirer: 8.2.7(@types/node@22.19.1) is-ci: 2.0.0 is-stream: 2.0.0 - js-yaml: 4.1.0 + js-yaml: 4.1.1 libnpmaccess: 6.0.4 libnpmpublish: 7.1.4 load-json-file: 6.2.0 @@ -32243,7 +20948,7 @@ snapshots: read-package-json: 5.0.1 resolve-from: 5.0.0 rimraf: 4.4.1 - semver: 7.6.2 + semver: 7.7.3 signal-exit: 3.0.7 slash: 3.0.0 ssri: 9.0.1 @@ -32262,31 +20967,12 @@ snapshots: transitivePeerDependencies: - '@swc-node/register' - '@swc/core' + - '@types/node' - bluebird - debug - encoding - supports-color - less-loader@12.2.0(less@4.2.0)(webpack@5.94.0(esbuild@0.23.0)): - dependencies: - less: 4.2.0 - optionalDependencies: - webpack: 5.94.0(esbuild@0.23.0) - - less@4.2.0: - dependencies: - copy-anything: 2.0.6 - parse-node-version: 1.0.1 - tslib: 2.6.2 - optionalDependencies: - errno: 0.1.8 - graceful-fs: 4.2.11 - image-size: 0.5.5 - make-dir: 2.1.0 - mime: 1.6.0 - needle: 3.3.1 - source-map: 0.6.1 - leven@3.1.0: {} levn@0.4.1: @@ -32296,7 +20982,7 @@ snapshots: libnpmaccess@6.0.4: dependencies: - aproba: 2.0.0 + aproba: 2.1.0 minipass: 3.3.6 npm-package-arg: 9.1.2 npm-registry-fetch: 13.3.1 @@ -32311,22 +20997,12 @@ snapshots: npm-package-arg: 10.1.0 npm-registry-fetch: 14.0.5 proc-log: 3.0.0 - semver: 7.6.2 + semver: 7.7.3 sigstore: 1.9.0 ssri: 10.0.6 transitivePeerDependencies: - supports-color - license-webpack-plugin@4.0.2(webpack@5.94.0(esbuild@0.23.0)): - dependencies: - webpack-sources: 3.2.3 - optionalDependencies: - webpack: 5.94.0(esbuild@0.23.0) - - lie@3.3.0: - dependencies: - immediate: 3.0.6 - lilconfig@2.1.0: {} lines-and-columns@1.2.4: {} @@ -32340,22 +21016,7 @@ snapshots: eventemitter3: 5.0.1 log-update: 6.1.0 rfdc: 1.4.1 - wrap-ansi: 9.0.0 - - lmdb@3.0.13: - dependencies: - msgpackr: 1.11.2 - node-addon-api: 6.1.0 - node-gyp-build-optional-packages: 5.2.2 - ordered-binary: 1.5.3 - weak-lru-cache: 1.2.2 - optionalDependencies: - '@lmdb/lmdb-darwin-arm64': 3.0.13 - '@lmdb/lmdb-darwin-x64': 3.0.13 - '@lmdb/lmdb-linux-arm': 3.0.13 - '@lmdb/lmdb-linux-arm64': 3.0.13 - '@lmdb/lmdb-linux-x64': 3.0.13 - '@lmdb/lmdb-win32-x64': 3.0.13 + wrap-ansi: 9.0.2 load-json-file@4.0.0: dependencies: @@ -32373,7 +21034,7 @@ snapshots: load-json-file@7.0.1: {} - loader-runner@4.3.0: {} + loader-runner@4.3.1: {} loader-utils@1.4.2: dependencies: @@ -32387,13 +21048,6 @@ snapshots: emojis-list: 3.0.0 json5: 2.2.3 - loader-utils@3.3.1: {} - - local-pkg@0.5.0: - dependencies: - mlly: 1.7.1 - pkg-types: 1.1.3 - locate-path@2.0.0: dependencies: p-locate: 2.0.0 @@ -32412,24 +21066,12 @@ snapshots: dependencies: p-locate: 5.0.0 - locate-path@7.2.0: - dependencies: - p-locate: 6.0.0 - - lodash.camelcase@4.3.0: {} - lodash.debounce@4.0.8: {} lodash.defaultsdeep@4.6.1: {} - lodash.escape@4.0.1: {} - lodash.flattendeep@4.4.0: {} - lodash.get@4.4.2: {} - - lodash.isequal@4.5.0: {} - lodash.ismatch@4.4.0: {} lodash.isplainobject@4.0.6: {} @@ -32442,8 +21084,6 @@ snapshots: lodash.merge@4.6.2: {} - lodash.sortedlastindex@4.1.0: {} - lodash.uniq@4.5.0: {} lodash@4.17.21: {} @@ -32467,37 +21107,21 @@ snapshots: log-update@6.1.0: dependencies: - ansi-escapes: 7.0.0 + ansi-escapes: 7.2.0 cli-cursor: 5.0.0 - slice-ansi: 7.1.0 - strip-ansi: 7.1.0 - wrap-ansi: 9.0.0 - - log4js@6.9.1: - dependencies: - date-format: 4.0.14 - debug: 4.3.4 - flatted: 3.3.1 - rfdc: 1.3.1 - streamroller: 3.1.5 - transitivePeerDependencies: - - supports-color - - loose-envify@1.4.0: - dependencies: - js-tokens: 4.0.0 + slice-ansi: 7.1.2 + strip-ansi: 7.1.2 + wrap-ansi: 9.0.2 loupe@2.3.7: dependencies: get-func-name: 2.0.2 - lower-case@1.1.4: {} - lower-case@2.0.2: dependencies: - tslib: 2.6.2 + tslib: 2.8.1 - lru-cache@10.2.2: {} + lru-cache@10.4.3: {} lru-cache@4.1.5: dependencies: @@ -32520,23 +21144,13 @@ snapshots: dependencies: sourcemap-codec: 1.4.8 - magic-string@0.27.0: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - - magic-string@0.30.10: - dependencies: - '@jridgewell/sourcemap-codec': 1.4.15 - magic-string@0.30.11: dependencies: - '@jridgewell/sourcemap-codec': 1.5.0 + '@jridgewell/sourcemap-codec': 1.5.5 - magicast@0.3.4: + magic-string@0.30.21: dependencies: - '@babel/parser': 7.24.5 - '@babel/types': 7.24.5 - source-map-js: 1.2.0 + '@jridgewell/sourcemap-codec': 1.5.5 make-dir@2.1.0: dependencies: @@ -32549,15 +21163,15 @@ snapshots: make-dir@4.0.0: dependencies: - semver: 7.6.2 + semver: 7.7.3 make-error@1.3.6: {} make-fetch-happen@10.2.1: dependencies: - agentkeepalive: 4.5.0 + agentkeepalive: 4.6.0 cacache: 16.1.3 - http-cache-semantics: 4.1.1 + http-cache-semantics: 4.2.0 http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-lambda: 1.0.1 @@ -32567,7 +21181,7 @@ snapshots: minipass-fetch: 2.1.2 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 - negotiator: 0.6.3 + negotiator: 0.6.4 promise-retry: 2.0.1 socks-proxy-agent: 7.0.0 ssri: 9.0.1 @@ -32577,9 +21191,9 @@ snapshots: make-fetch-happen@11.1.1: dependencies: - agentkeepalive: 4.5.0 + agentkeepalive: 4.6.0 cacache: 17.1.4 - http-cache-semantics: 4.1.1 + http-cache-semantics: 4.2.0 http-proxy-agent: 5.0.0 https-proxy-agent: 5.0.1 is-lambda: 1.0.1 @@ -32588,7 +21202,7 @@ snapshots: minipass-fetch: 3.0.5 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 - negotiator: 0.6.3 + negotiator: 0.6.4 promise-retry: 2.0.1 socks-proxy-agent: 7.0.0 ssri: 10.0.6 @@ -32598,14 +21212,14 @@ snapshots: make-fetch-happen@13.0.1: dependencies: '@npmcli/agent': 2.2.2 - cacache: 18.0.3 - http-cache-semantics: 4.1.1 + cacache: 18.0.4 + http-cache-semantics: 4.2.0 is-lambda: 1.0.1 - minipass: 7.1.1 + minipass: 7.1.2 minipass-fetch: 3.0.5 minipass-flush: 1.0.5 minipass-pipeline: 1.2.4 - negotiator: 0.6.3 + negotiator: 0.6.4 proc-log: 4.2.0 promise-retry: 2.0.1 ssri: 10.0.6 @@ -32622,22 +21236,16 @@ snapshots: marked@4.3.0: {} - maska@2.1.11: {} - matcher@5.0.0: dependencies: escape-string-regexp: 5.0.0 + math-intrinsics@1.1.0: {} + md5-hex@3.0.1: dependencies: blueimp-md5: 2.19.0 - md5.js@1.3.5: - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - safe-buffer: 5.2.1 - mdn-data@2.0.14: {} mdn-data@2.0.30: {} @@ -32646,16 +21254,9 @@ snapshots: memfs@3.5.3: dependencies: - fs-monkey: 1.0.6 + fs-monkey: 1.1.0 - memfs@4.14.1: - dependencies: - '@jsonjoy.com/json-pack': 1.1.0(tslib@2.6.3) - '@jsonjoy.com/util': 1.5.0(tslib@2.6.3) - tree-dump: 1.0.2(tslib@2.6.3) - tslib: 2.6.3 - - memoize@10.0.0: + memoize@10.2.0: dependencies: mimic-function: 5.0.1 @@ -32680,7 +21281,7 @@ snapshots: type-fest: 0.18.1 yargs-parser: 20.2.4 - merge-descriptors@1.0.1: {} + merge-descriptors@1.0.3: {} merge-source-map@1.1.0: dependencies: @@ -32692,88 +21293,68 @@ snapshots: methods@1.1.2: {} - micromatch@4.0.7: - dependencies: - braces: 3.0.3 - picomatch: 2.3.1 - micromatch@4.0.8: dependencies: braces: 3.0.3 picomatch: 2.3.1 - miller-rabin@4.0.1: - dependencies: - bn.js: 4.12.0 - brorand: 1.1.0 - mime-db@1.52.0: {} + mime-db@1.54.0: {} + mime-types@2.1.35: dependencies: mime-db: 1.52.0 mime@1.6.0: {} - mime@2.6.0: {} - mimic-fn@1.2.0: {} mimic-fn@2.1.0: {} - mimic-fn@4.0.0: {} - mimic-function@5.0.1: {} min-indent@1.0.1: {} - mini-css-extract-plugin@2.9.0(webpack@5.91.0): - dependencies: - schema-utils: 4.2.0 - tapable: 2.2.1 - webpack: 5.91.0(webpack-cli@5.1.4) - - mini-css-extract-plugin@2.9.0(webpack@5.94.0(esbuild@0.23.0)): + mini-css-extract-plugin@2.9.4(webpack@5.103.0): dependencies: - schema-utils: 4.2.0 - tapable: 2.2.1 - webpack: 5.94.0(esbuild@0.23.0) + schema-utils: 4.3.3 + tapable: 2.3.0 + webpack: 5.103.0 minimalistic-assert@1.0.1: {} - minimalistic-crypto-utils@1.0.1: {} - minimatch@3.0.4: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 1.1.12 minimatch@3.0.5: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 1.1.12 minimatch@3.1.2: dependencies: - brace-expansion: 1.1.11 + brace-expansion: 1.1.12 minimatch@5.1.6: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimatch@6.2.0: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimatch@8.0.4: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimatch@9.0.1: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 - minimatch@9.0.4: + minimatch@9.0.5: dependencies: - brace-expansion: 2.0.1 + brace-expansion: 2.0.2 minimist-options@4.1.0: dependencies: @@ -32789,7 +21370,7 @@ snapshots: minipass-collect@2.0.1: dependencies: - minipass: 7.1.1 + minipass: 7.1.2 minipass-fetch@2.1.2: dependencies: @@ -32801,7 +21382,7 @@ snapshots: minipass-fetch@3.0.5: dependencies: - minipass: 7.1.1 + minipass: 7.1.2 minipass-sized: 1.0.3 minizlib: 2.1.2 optionalDependencies: @@ -32811,7 +21392,7 @@ snapshots: dependencies: minipass: 3.3.6 - minipass-json-stream@1.0.1: + minipass-json-stream@1.0.2: dependencies: jsonparse: 1.3.1 minipass: 3.3.6 @@ -32832,25 +21413,16 @@ snapshots: minipass@5.0.0: {} - minipass@7.1.1: {} + minipass@7.1.2: {} minizlib@2.1.2: dependencies: minipass: 3.3.6 yallist: 4.0.0 - mississippi@3.0.0: + minizlib@3.1.0: dependencies: - concat-stream: 1.6.2 - duplexify: 3.7.1 - end-of-stream: 1.4.4 - flush-write-stream: 1.1.1 - from2: 2.3.0 - parallel-transform: 1.2.0 - pump: 3.0.0 - pumpify: 1.5.1 - stream-each: 1.2.3 - through2: 2.0.5 + minipass: 7.1.2 mkdirp-infer-owner@2.0.0: dependencies: @@ -32858,19 +21430,8 @@ snapshots: infer-owner: 1.0.4 mkdirp: 1.0.4 - mkdirp@0.5.6: - dependencies: - minimist: 1.2.8 - mkdirp@1.0.4: {} - mlly@1.7.1: - dependencies: - acorn: 8.11.3 - pathe: 1.1.2 - pkg-types: 1.1.3 - ufo: 1.5.4 - mocha@8.4.0: dependencies: '@ungap/promise-all-settled': 1.1.2 @@ -32899,9 +21460,9 @@ snapshots: yargs-parser: 20.2.4 yargs-unparser: 2.0.0 - mochapack@2.1.4(mocha@8.4.0)(webpack@5.94.0): + mochapack@2.1.5(mocha@8.4.0)(webpack@5.103.0): dependencies: - '@babel/runtime-corejs2': 7.24.5 + '@babel/runtime-corejs3': 7.28.4 chalk: 2.4.2 chokidar: 3.6.0 glob-parent: 5.1.2 @@ -32918,27 +21479,14 @@ snapshots: progress: 2.0.3 source-map-support: 0.5.21 toposort: 2.0.2 - webpack: 5.94.0 + webpack: 5.103.0 yargs: 14.0.0 modify-values@1.0.1: {} module-alias@2.2.3: {} - monaco-editor@0.49.0: {} - - moo@0.5.2: {} - - move-concurrently@1.0.1: - dependencies: - aproba: 1.2.0 - copy-concurrently: 1.0.5 - fs-write-stream-atomic: 1.0.10 - mkdirp: 0.5.6 - rimraf: 2.7.1 - run-queue: 1.0.3 - - mrmime@2.0.0: {} + mrmime@2.0.1: {} ms@2.0.0: {} @@ -32946,26 +21494,6 @@ snapshots: ms@2.1.3: {} - msgpackr-extract@3.0.3: - dependencies: - node-gyp-build-optional-packages: 5.2.2 - optionalDependencies: - '@msgpackr-extract/msgpackr-extract-darwin-arm64': 3.0.3 - '@msgpackr-extract/msgpackr-extract-darwin-x64': 3.0.3 - '@msgpackr-extract/msgpackr-extract-linux-arm': 3.0.3 - '@msgpackr-extract/msgpackr-extract-linux-arm64': 3.0.3 - '@msgpackr-extract/msgpackr-extract-linux-x64': 3.0.3 - '@msgpackr-extract/msgpackr-extract-win32-x64': 3.0.3 - optional: true - - msgpackr@1.11.2: - optionalDependencies: - msgpackr-extract: 3.0.3 - - muggle-string@0.3.1: {} - - muggle-string@0.4.1: {} - multicast-dns@7.2.5: dependencies: dns-packet: 5.6.1 @@ -32977,7 +21505,7 @@ snapshots: array-differ: 3.0.0 array-union: 2.1.0 arrify: 2.0.1 - minimatch: 3.1.2 + minimatch: 3.0.5 mute-stream@0.0.8: {} @@ -32989,86 +21517,31 @@ snapshots: object-assign: 4.1.1 thenify-all: 1.6.0 - nan@2.19.0: {} + nan@2.23.1: {} nanoid@3.1.20: {} - nanoid@3.3.7: {} - - native-promise-only@0.8.1: {} + nanoid@3.3.11: {} natural-compare-lite@1.4.0: {} natural-compare@1.4.0: {} - nearley@2.20.1: - dependencies: - commander: 2.20.3 - moo: 0.5.2 - railroad-diagrams: 1.0.0 - randexp: 0.4.6 - - needle@3.3.1: - dependencies: - iconv-lite: 0.6.3 - sax: 1.3.0 - optional: true - negotiator@0.6.3: {} - neo-async@2.6.2: {} - - ng-packagr@18.2.1(@angular/compiler-cli@18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4))(tslib@2.6.2)(typescript@5.5.4): - dependencies: - '@angular/compiler-cli': 18.2.13(@angular/compiler@18.2.13(@angular/core@18.2.13(rxjs@6.6.7)(zone.js@0.14.10)))(typescript@5.5.4) - '@rollup/plugin-json': 6.1.0(rollup@4.22.4) - '@rollup/plugin-node-resolve': 15.2.3(rollup@4.22.4) - '@rollup/wasm-node': 4.18.0 - ajv: 8.13.0 - ansi-colors: 4.1.3 - browserslist: 4.23.0 - cacache: 18.0.3 - chokidar: 3.6.0 - commander: 12.1.0 - convert-source-map: 2.0.0 - dependency-graph: 1.0.0 - esbuild: 0.23.1 - fast-glob: 3.3.2 - find-cache-dir: 3.3.2 - injection-js: 2.4.0 - jsonc-parser: 3.2.1 - less: 4.2.0 - ora: 5.4.1 - piscina: 4.5.1 - postcss: 8.4.41 - rxjs: 7.8.1 - sass: 1.77.2 - tslib: 2.6.2 - typescript: 5.5.4 - optionalDependencies: - rollup: 4.22.4 + negotiator@0.6.4: {} - nice-napi@1.0.2: - dependencies: - node-addon-api: 3.2.1 - node-gyp-build: 4.8.1 - optional: true + neo-async@2.6.2: {} nice-try@1.0.5: {} - no-case@2.3.2: - dependencies: - lower-case: 1.1.4 - no-case@3.0.4: dependencies: lower-case: 2.0.2 - tslib: 2.6.2 + tslib: 2.8.1 node-addon-api@3.2.1: {} - node-addon-api@6.1.0: {} - node-fetch@2.6.7(encoding@0.1.13): dependencies: whatwg-url: 5.0.0 @@ -33081,23 +21554,19 @@ snapshots: optionalDependencies: encoding: 0.1.13 - node-forge@1.3.1: {} - - node-gyp-build-optional-packages@5.2.2: - dependencies: - detect-libc: 2.0.3 + node-forge@1.3.2: {} - node-gyp-build@4.8.1: {} + node-gyp-build@4.8.4: {} - node-gyp@10.1.0: + node-gyp@10.3.1: dependencies: env-paths: 2.2.1 - exponential-backoff: 3.1.1 - glob: 10.3.16 + exponential-backoff: 3.1.3 + glob: 10.5.0 graceful-fs: 4.2.11 make-fetch-happen: 13.0.1 nopt: 7.2.1 - proc-log: 3.0.0 + proc-log: 4.2.0 semver: 7.6.3 tar: 6.2.1 which: 4.0.0 @@ -33107,14 +21576,14 @@ snapshots: node-gyp@9.4.1: dependencies: env-paths: 2.2.1 - exponential-backoff: 3.1.1 + exponential-backoff: 3.1.3 glob: 7.2.3 graceful-fs: 4.2.10 make-fetch-happen: 10.2.1 nopt: 6.0.0 npmlog: 6.0.2 rimraf: 3.0.2 - semver: 7.6.2 + semver: 7.7.3 tar: 6.1.11 which: 2.0.2 transitivePeerDependencies: @@ -33123,62 +21592,16 @@ snapshots: node-int64@0.4.0: {} - node-notifier@8.0.2: - dependencies: - growly: 1.3.0 - is-wsl: 2.2.0 - semver: 7.6.3 - shellwords: 0.1.1 - uuid: 8.3.2 - which: 2.0.2 - optional: true - node-preload@0.2.1: dependencies: - process-on-spawn: 1.0.0 - - node-releases@2.0.14: {} - - node-releases@2.0.18: {} + process-on-spawn: 1.1.0 - node-stdlib-browser@1.2.0: - dependencies: - assert: 2.1.0 - browser-resolve: 2.0.0 - browserify-zlib: 0.2.0 - buffer: 5.7.1 - console-browserify: 1.2.0 - constants-browserify: 1.0.0 - create-require: 1.1.1 - crypto-browserify: 3.12.0 - domain-browser: 4.23.0 - events: 3.3.0 - https-browserify: 1.0.0 - isomorphic-timers-promises: 1.0.1 - os-browserify: 0.3.0 - path-browserify: 1.0.1 - pkg-dir: 5.0.0 - process: 0.11.10 - punycode: 1.4.1 - querystring-es3: 0.2.1 - readable-stream: 3.6.2 - stream-browserify: 3.0.0 - stream-http: 3.2.0 - string_decoder: 1.3.0 - timers-browserify: 2.0.12 - tty-browserify: 0.0.1 - url: 0.11.4 - util: 0.12.5 - vm-browserify: 1.1.2 + node-releases@2.0.27: {} nodent-runtime@3.2.1: {} nofilter@3.1.0: {} - nopt@5.0.0: - dependencies: - abbrev: 1.1.1 - nopt@6.0.0: dependencies: abbrev: 1.1.1 @@ -33187,38 +21610,41 @@ snapshots: dependencies: abbrev: 2.0.0 + nopt@8.1.0: + dependencies: + abbrev: 3.0.1 + normalize-package-data@2.5.0: dependencies: hosted-git-info: 2.8.9 - resolve: 1.22.8 + resolve: 1.22.11 semver: 5.7.2 validate-npm-package-license: 3.0.4 normalize-package-data@3.0.3: dependencies: hosted-git-info: 4.1.0 - is-core-module: 2.13.1 - semver: 7.6.2 + is-core-module: 2.16.1 + semver: 7.7.3 validate-npm-package-license: 3.0.4 normalize-package-data@4.0.1: dependencies: hosted-git-info: 5.2.1 - is-core-module: 2.13.1 - semver: 7.6.2 + is-core-module: 2.16.1 + semver: 7.7.3 validate-npm-package-license: 3.0.4 normalize-package-data@5.0.0: dependencies: - hosted-git-info: 6.1.1 - is-core-module: 2.13.1 - semver: 7.6.2 + hosted-git-info: 6.1.3 + is-core-module: 2.16.1 + semver: 7.7.3 validate-npm-package-license: 3.0.4 - normalize-package-data@6.0.1: + normalize-package-data@6.0.2: dependencies: hosted-git-info: 7.0.2 - is-core-module: 2.13.1 semver: 7.6.3 validate-npm-package-license: 3.0.4 @@ -33246,7 +21672,7 @@ snapshots: npm-install-checks@6.3.0: dependencies: - semver: 7.6.2 + semver: 7.7.3 npm-normalize-package-bin@1.0.1: {} @@ -33254,9 +21680,9 @@ snapshots: npm-package-arg@10.1.0: dependencies: - hosted-git-info: 6.1.1 + hosted-git-info: 6.1.3 proc-log: 3.0.0 - semver: 7.6.2 + semver: 7.7.3 validate-npm-package-name: 5.0.1 npm-package-arg@11.0.3: @@ -33269,14 +21695,14 @@ snapshots: npm-package-arg@8.1.1: dependencies: hosted-git-info: 3.0.8 - semver: 7.6.2 + semver: 7.7.3 validate-npm-package-name: 3.0.0 npm-package-arg@9.1.2: dependencies: hosted-git-info: 5.2.1 proc-log: 2.0.1 - semver: 7.6.2 + semver: 7.7.3 validate-npm-package-name: 4.0.0 npm-packlist@5.1.1: @@ -33299,7 +21725,7 @@ snapshots: npm-install-checks: 6.3.0 npm-normalize-package-bin: 3.0.1 npm-package-arg: 10.1.0 - semver: 7.6.2 + semver: 7.7.3 npm-pick-manifest@9.1.0: dependencies: @@ -33313,7 +21739,7 @@ snapshots: make-fetch-happen: 10.2.1 minipass: 3.3.6 minipass-fetch: 2.1.2 - minipass-json-stream: 1.0.1 + minipass-json-stream: 1.0.2 minizlib: 2.1.2 npm-package-arg: 9.1.2 proc-log: 2.0.1 @@ -33326,7 +21752,7 @@ snapshots: make-fetch-happen: 11.1.1 minipass: 4.2.8 minipass-fetch: 3.0.5 - minipass-json-stream: 1.0.1 + minipass-json-stream: 1.0.2 minizlib: 2.1.2 npm-package-arg: 10.1.0 proc-log: 3.0.0 @@ -33338,7 +21764,7 @@ snapshots: make-fetch-happen: 11.1.1 minipass: 5.0.0 minipass-fetch: 3.0.5 - minipass-json-stream: 1.0.1 + minipass-json-stream: 1.0.2 minizlib: 2.1.2 npm-package-arg: 10.1.0 proc-log: 3.0.0 @@ -33350,7 +21776,7 @@ snapshots: '@npmcli/redact': 2.0.1 jsonparse: 1.3.1 make-fetch-happen: 13.0.1 - minipass: 7.1.1 + minipass: 7.1.2 minipass-fetch: 3.0.5 minizlib: 2.1.2 npm-package-arg: 11.0.3 @@ -33358,26 +21784,16 @@ snapshots: transitivePeerDependencies: - supports-color - npm-run-all2@6.2.2: - dependencies: - ansi-styles: 6.2.1 - cross-spawn: 7.0.3 - memorystream: 0.3.1 - minimatch: 9.0.4 - pidtree: 0.6.0 - read-package-json-fast: 3.0.2 - shell-quote: 1.8.1 - npm-run-all@4.1.5: dependencies: ansi-styles: 3.2.1 chalk: 2.4.2 - cross-spawn: 6.0.5 + cross-spawn: 6.0.6 memorystream: 0.3.1 minimatch: 3.1.2 pidtree: 0.3.1 read-pkg: 3.0.0 - shell-quote: 1.8.1 + shell-quote: 1.8.3 string.prototype.padend: 3.1.6 npm-run-path@2.0.2: @@ -33388,17 +21804,6 @@ snapshots: dependencies: path-key: 3.1.1 - npm-run-path@5.3.0: - dependencies: - path-key: 4.0.0 - - npmlog@5.0.1: - dependencies: - are-we-there-yet: 2.0.0 - console-control-strings: 1.1.0 - gauge: 3.0.2 - set-blocking: 2.0.0 - npmlog@6.0.2: dependencies: are-we-there-yet: 3.0.1 @@ -33417,11 +21822,7 @@ snapshots: dependencies: boolbase: 1.0.0 - null-loader@0.1.1: {} - - nwsapi@2.2.10: {} - - nwsapi@2.2.12: {} + nwsapi@2.2.22: {} nx@15.9.7: dependencies: @@ -33431,8 +21832,8 @@ snapshots: '@yarnpkg/lockfile': 1.1.0 '@yarnpkg/parsers': 3.0.0-rc.46 '@zkochan/js-yaml': 0.0.6 - axios: 1.7.2 - chalk: 4.1.2 + axios: 1.13.2 + chalk: 4.1.0 cli-cursor: 3.1.0 cli-spinners: 2.6.1 cliui: 7.0.4 @@ -33441,9 +21842,9 @@ snapshots: fast-glob: 3.2.7 figures: 3.2.0 flat: 5.0.2 - fs-extra: 11.2.0 + fs-extra: 11.3.2 glob: 7.1.4 - ignore: 5.3.1 + ignore: 5.3.2 js-yaml: 4.1.0 jsonc-parser: 3.2.0 lines-and-columns: 2.0.4 @@ -33454,9 +21855,9 @@ snapshots: string-width: 4.2.3 strong-log-transformer: 2.1.0 tar-stream: 2.2.0 - tmp: 0.2.3 + tmp: 0.2.5 tsconfig-paths: 4.2.0 - tslib: 2.6.2 + tslib: 2.8.1 v8-compile-cache: 2.3.0 yargs: 17.7.2 yargs-parser: 21.1.1 @@ -33491,11 +21892,11 @@ snapshots: istanbul-lib-processinfo: 2.0.3 istanbul-lib-report: 3.0.1 istanbul-lib-source-maps: 4.0.1 - istanbul-reports: 3.1.7 + istanbul-reports: 3.2.0 make-dir: 3.1.0 node-preload: 0.2.1 p-map: 3.0.0 - process-on-spawn: 1.0.0 + process-on-spawn: 1.1.0 resolve-from: 5.0.0 rimraf: 3.0.2 signal-exit: 3.0.7 @@ -33509,64 +21910,46 @@ snapshots: object-assign@4.1.1: {} - object-inspect@1.13.1: {} - - object-is@1.1.6: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 + object-inspect@1.13.4: {} object-keys@1.1.1: {} - object.assign@4.1.5: + object.assign@4.1.7: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - has-symbols: 1.0.3 + es-object-atoms: 1.1.1 + has-symbols: 1.1.0 object-keys: 1.1.1 - object.entries@1.1.8: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 - object.fromentries@2.0.8: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 object.groupby@1.0.3: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.24.0 - object.hasown@1.1.4: + object.values@1.2.1: dependencies: + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 - - object.values@1.2.0: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 obuf@1.1.2: {} - on-finished@2.3.0: - dependencies: - ee-first: 1.1.1 - on-finished@2.4.1: dependencies: ee-first: 1.1.1 - on-headers@1.0.2: {} + on-headers@1.1.0: {} once@1.4.0: dependencies: @@ -33580,21 +21963,10 @@ snapshots: dependencies: mimic-fn: 2.1.0 - onetime@6.0.0: - dependencies: - mimic-fn: 4.0.0 - onetime@7.0.0: dependencies: mimic-function: 5.0.1 - open@10.1.0: - dependencies: - default-browser: 5.2.1 - define-lazy-prop: 3.0.0 - is-inside-container: 1.0.0 - is-wsl: 3.1.0 - open@8.4.2: dependencies: define-lazy-prop: 2.0.0 @@ -33624,16 +21996,18 @@ snapshots: strip-ansi: 6.0.1 wcwidth: 1.0.1 - ordered-binary@1.5.3: {} - ordered-read-streams@1.0.1: dependencies: readable-stream: 2.3.8 - os-browserify@0.3.0: {} - os-tmpdir@1.0.2: {} + own-keys@1.0.1: + dependencies: + get-intrinsic: 1.3.0 + object-keys: 1.1.1 + safe-push-apply: 1.0.0 + p-finally@1.0.0: {} p-limit@1.3.0: @@ -33648,14 +22022,6 @@ snapshots: dependencies: yocto-queue: 0.1.0 - p-limit@4.0.0: - dependencies: - yocto-queue: 1.0.0 - - p-limit@5.0.0: - dependencies: - yocto-queue: 1.0.0 - p-locate@2.0.0: dependencies: p-limit: 1.3.0 @@ -33672,10 +22038,6 @@ snapshots: dependencies: p-limit: 3.1.0 - p-locate@6.0.0: - dependencies: - p-limit: 4.0.0 - p-map-series@2.1.0: {} p-map@3.0.0: @@ -33686,7 +22048,7 @@ snapshots: dependencies: aggregate-error: 3.1.0 - p-map@7.0.2: {} + p-map@7.0.4: {} p-pipe@3.1.0: {} @@ -33702,12 +22064,6 @@ snapshots: '@types/retry': 0.12.0 retry: 0.13.1 - p-retry@6.2.1: - dependencies: - '@types/retry': 0.12.2 - is-network-error: 1.1.0 - retry: 0.13.1 - p-timeout@3.2.0: dependencies: p-finally: 1.0.0 @@ -33722,7 +22078,7 @@ snapshots: package-config@5.0.0: dependencies: - find-up-simple: 1.0.0 + find-up-simple: 1.0.1 load-json-file: 7.0.1 package-hash@4.0.0: @@ -33732,6 +22088,8 @@ snapshots: lodash.flattendeep: 4.4.0 release-zalgo: 1.0.0 + package-json-from-dist@1.0.1: {} + pacote@15.1.1: dependencies: '@npmcli/git': 4.1.0 @@ -33758,14 +22116,14 @@ snapshots: pacote@18.0.6: dependencies: - '@npmcli/git': 5.0.7 + '@npmcli/git': 5.0.8 '@npmcli/installed-package-contents': 2.1.0 - '@npmcli/package-json': 5.1.0 + '@npmcli/package-json': 5.2.1 '@npmcli/promise-spawn': 7.0.2 '@npmcli/run-script': 8.1.0 - cacache: 18.0.3 + cacache: 18.0.4 fs-minipass: 3.0.3 - minipass: 7.1.1 + minipass: 7.1.2 npm-package-arg: 11.0.3 npm-packlist: 8.0.2 npm-pick-manifest: 9.1.0 @@ -33774,41 +22132,20 @@ snapshots: promise-retry: 2.0.1 sigstore: 2.3.1 ssri: 10.0.6 - tar: 6.2.1 - transitivePeerDependencies: - - bluebird - - supports-color - - pako@1.0.11: {} - - parallel-transform@1.2.0: - dependencies: - cyclist: 1.0.2 - inherits: 2.0.4 - readable-stream: 2.3.8 - - param-case@2.1.1: - dependencies: - no-case: 2.3.2 + tar: 6.2.1 + transitivePeerDependencies: + - bluebird + - supports-color param-case@3.0.4: dependencies: dot-case: 3.0.4 - tslib: 2.6.2 + tslib: 2.8.1 parent-module@1.0.1: dependencies: callsites: 3.1.0 - parse-asn1@5.1.7: - dependencies: - asn1.js: 4.10.1 - browserify-aes: 1.2.0 - evp_bytestokey: 1.0.3 - hash-base: 3.0.4 - pbkdf2: 3.1.2 - safe-buffer: 5.2.1 - parse-conflict-json@3.0.1: dependencies: json-parse-even-better-errors: 3.0.2 @@ -33817,63 +22154,44 @@ snapshots: parse-json@4.0.0: dependencies: - error-ex: 1.3.2 + error-ex: 1.3.4 json-parse-better-errors: 1.0.2 parse-json@5.2.0: dependencies: - '@babel/code-frame': 7.24.2 - error-ex: 1.3.2 + '@babel/code-frame': 7.27.1 + error-ex: 1.3.4 json-parse-even-better-errors: 2.3.1 lines-and-columns: 1.2.4 parse-ms@4.0.0: {} - parse-node-version@1.0.1: {} - - parse-path@7.0.0: + parse-path@7.1.0: dependencies: - protocols: 2.0.1 + protocols: 2.0.2 parse-url@8.1.0: dependencies: - parse-path: 7.0.0 - - parse5-html-rewriting-stream@7.0.0: - dependencies: - entities: 4.5.0 - parse5: 7.1.2 - parse5-sax-parser: 7.0.0 + parse-path: 7.1.0 parse5-htmlparser2-tree-adapter@6.0.1: dependencies: parse5: 6.0.1 - parse5-htmlparser2-tree-adapter@7.0.0: - dependencies: - domhandler: 5.0.3 - parse5: 7.1.2 - - parse5-sax-parser@7.0.0: - dependencies: - parse5: 7.1.2 - parse5@5.1.1: {} parse5@6.0.1: {} - parse5@7.1.2: + parse5@7.3.0: dependencies: - entities: 4.5.0 + entities: 6.0.1 parseurl@1.3.3: {} pascal-case@3.1.2: dependencies: no-case: 3.0.4 - tslib: 2.6.2 - - path-browserify@1.0.1: {} + tslib: 2.8.1 path-dirname@1.0.2: {} @@ -33881,33 +22199,20 @@ snapshots: path-exists@4.0.0: {} - path-exists@5.0.0: {} - path-is-absolute@1.0.1: {} - path-is-inside@1.0.2: {} - path-key@2.0.1: {} path-key@3.1.1: {} - path-key@4.0.0: {} - - path-loader@1.0.12: - dependencies: - native-promise-only: 0.8.1 - superagent: 7.1.6 - transitivePeerDependencies: - - supports-color - path-parse@1.0.7: {} path-scurry@1.11.1: dependencies: - lru-cache: 10.2.2 - minipass: 7.1.1 + lru-cache: 10.4.3 + minipass: 7.1.2 - path-to-regexp@0.1.7: {} + path-to-regexp@0.1.12: {} path-type@3.0.0: dependencies: @@ -33915,39 +22220,25 @@ snapshots: path-type@4.0.0: {} - path-type@5.0.0: {} - - pathe@1.1.2: {} + path-type@6.0.0: {} pathval@1.1.1: {} - pbkdf2@3.1.2: - dependencies: - create-hash: 1.2.0 - create-hmac: 1.1.7 - ripemd160: 2.0.2 - safe-buffer: 5.2.1 - sha.js: 2.4.11 - perf-regexes@1.0.1: {} performance-now@2.1.0: {} picocolors@0.2.1: {} - picocolors@1.0.1: {} - picocolors@1.1.1: {} picomatch@2.3.1: {} - picomatch@3.0.1: {} - picomatch@4.0.2: {} - pidtree@0.3.1: {} + picomatch@4.0.3: {} - pidtree@0.6.0: {} + pidtree@0.3.1: {} pify@2.3.0: {} @@ -33957,480 +22248,232 @@ snapshots: pify@5.0.0: {} - pinkie-promise@2.0.1: - dependencies: - pinkie: 2.0.4 - - pinkie@2.0.4: {} - - pirates@4.0.6: {} - - piscina@4.5.1: - optionalDependencies: - nice-napi: 1.0.2 - - piscina@4.6.1: - optionalDependencies: - nice-napi: 1.0.2 - - pkg-dir@3.0.0: - dependencies: - find-up: 3.0.0 + pirates@4.0.7: {} pkg-dir@4.2.0: dependencies: find-up: 4.1.0 - pkg-dir@5.0.0: - dependencies: - find-up: 5.0.0 - - pkg-dir@7.0.0: - dependencies: - find-up: 6.3.0 - - pkg-types@1.1.3: - dependencies: - confbox: 0.1.7 - mlly: 1.7.1 - pathe: 1.1.2 - plur@5.1.0: dependencies: irregular-plurals: 3.5.0 - portfinder@1.0.32: + portfinder@1.0.38: dependencies: - async: 2.6.4 - debug: 3.2.7 - mkdirp: 0.5.6 + async: 3.2.6 + debug: 4.4.3 transitivePeerDependencies: - supports-color - possible-typed-array-names@1.0.0: {} - - postcss-calc@8.2.4(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-selector-parser: 6.1.0 - postcss-value-parser: 4.2.0 - - postcss-calc@8.2.4(postcss@8.4.41): - dependencies: - postcss: 8.4.41 - postcss-selector-parser: 6.1.0 - postcss-value-parser: 4.2.0 + possible-typed-array-names@1.1.0: {} - postcss-colormin@5.3.1(postcss@8.4.38): + postcss-calc@8.2.4(postcss@8.5.6): dependencies: - browserslist: 4.23.0 - caniuse-api: 3.0.0 - colord: 2.9.3 - postcss: 8.4.38 + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 - postcss-colormin@5.3.1(postcss@8.4.41): + postcss-colormin@5.3.1(postcss@8.5.6): dependencies: - browserslist: 4.23.0 + browserslist: 4.28.0 caniuse-api: 3.0.0 colord: 2.9.3 - postcss: 8.4.41 - postcss-value-parser: 4.2.0 - - postcss-convert-values@5.1.3(postcss@8.4.38): - dependencies: - browserslist: 4.23.0 - postcss: 8.4.38 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-convert-values@5.1.3(postcss@8.4.41): + postcss-convert-values@5.1.3(postcss@8.5.6): dependencies: - browserslist: 4.23.0 - postcss: 8.4.41 + browserslist: 4.28.0 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-discard-comments@5.1.2(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - - postcss-discard-comments@5.1.2(postcss@8.4.41): + postcss-discard-comments@5.1.2(postcss@8.5.6): dependencies: - postcss: 8.4.41 + postcss: 8.5.6 - postcss-discard-duplicates@5.1.0(postcss@8.4.38): + postcss-discard-duplicates@5.1.0(postcss@8.5.6): dependencies: - postcss: 8.4.38 + postcss: 8.5.6 - postcss-discard-duplicates@5.1.0(postcss@8.4.41): + postcss-discard-empty@5.1.1(postcss@8.5.6): dependencies: - postcss: 8.4.41 + postcss: 8.5.6 - postcss-discard-empty@5.1.1(postcss@8.4.38): + postcss-discard-overridden@5.1.0(postcss@8.5.6): dependencies: - postcss: 8.4.38 + postcss: 8.5.6 - postcss-discard-empty@5.1.1(postcss@8.4.41): - dependencies: - postcss: 8.4.41 - - postcss-discard-overridden@5.1.0(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - - postcss-discard-overridden@5.1.0(postcss@8.4.41): - dependencies: - postcss: 8.4.41 - - postcss-load-config@3.1.4(postcss@8.4.38)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.4.5)): - dependencies: - lilconfig: 2.1.0 - yaml: 1.10.2 - optionalDependencies: - postcss: 8.4.38 - ts-node: 10.9.2(@types/node@22.13.8)(typescript@5.4.5) - - postcss-loader@6.2.1(postcss@8.4.38)(webpack@5.91.0): + postcss-loader@6.2.1(postcss@8.5.6)(webpack@5.103.0): dependencies: cosmiconfig: 7.1.0 klona: 2.0.6 - postcss: 8.4.38 - semver: 7.6.2 - webpack: 5.91.0(webpack-cli@5.1.4) - - postcss-loader@8.1.1(postcss@8.4.41)(typescript@5.5.4)(webpack@5.94.0(esbuild@0.23.0)): - dependencies: - cosmiconfig: 9.0.0(typescript@5.5.4) - jiti: 1.21.0 - postcss: 8.4.41 - semver: 7.6.3 - optionalDependencies: - webpack: 5.94.0(esbuild@0.23.0) - transitivePeerDependencies: - - typescript - - postcss-media-query-parser@0.2.3: {} - - postcss-merge-longhand@5.1.7(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - stylehacks: 5.1.1(postcss@8.4.38) + postcss: 8.5.6 + semver: 7.7.3 + webpack: 5.103.0 - postcss-merge-longhand@5.1.7(postcss@8.4.41): + postcss-merge-longhand@5.1.7(postcss@8.5.6): dependencies: - postcss: 8.4.41 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - stylehacks: 5.1.1(postcss@8.4.41) - - postcss-merge-rules@5.1.4(postcss@8.4.38): - dependencies: - browserslist: 4.23.0 - caniuse-api: 3.0.0 - cssnano-utils: 3.1.0(postcss@8.4.38) - postcss: 8.4.38 - postcss-selector-parser: 6.1.0 + stylehacks: 5.1.1(postcss@8.5.6) - postcss-merge-rules@5.1.4(postcss@8.4.41): + postcss-merge-rules@5.1.4(postcss@8.5.6): dependencies: - browserslist: 4.23.0 + browserslist: 4.28.0 caniuse-api: 3.0.0 - cssnano-utils: 3.1.0(postcss@8.4.41) - postcss: 8.4.41 - postcss-selector-parser: 6.1.0 + cssnano-utils: 3.1.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 - postcss-minify-font-values@5.1.0(postcss@8.4.38): + postcss-minify-font-values@5.1.0(postcss@8.5.6): dependencies: - postcss: 8.4.38 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-minify-font-values@5.1.0(postcss@8.4.41): - dependencies: - postcss: 8.4.41 - postcss-value-parser: 4.2.0 - - postcss-minify-gradients@5.1.1(postcss@8.4.38): - dependencies: - colord: 2.9.3 - cssnano-utils: 3.1.0(postcss@8.4.38) - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - postcss-minify-gradients@5.1.1(postcss@8.4.41): + postcss-minify-gradients@5.1.1(postcss@8.5.6): dependencies: colord: 2.9.3 - cssnano-utils: 3.1.0(postcss@8.4.41) - postcss: 8.4.41 - postcss-value-parser: 4.2.0 - - postcss-minify-params@5.1.4(postcss@8.4.38): - dependencies: - browserslist: 4.23.0 - cssnano-utils: 3.1.0(postcss@8.4.38) - postcss: 8.4.38 + cssnano-utils: 3.1.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-minify-params@5.1.4(postcss@8.4.41): + postcss-minify-params@5.1.4(postcss@8.5.6): dependencies: - browserslist: 4.23.0 - cssnano-utils: 3.1.0(postcss@8.4.41) - postcss: 8.4.41 + browserslist: 4.28.0 + cssnano-utils: 3.1.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-minify-selectors@5.2.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-selector-parser: 6.1.0 - - postcss-minify-selectors@5.2.1(postcss@8.4.41): + postcss-minify-selectors@5.2.1(postcss@8.5.6): dependencies: - postcss: 8.4.41 - postcss-selector-parser: 6.1.0 + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 postcss-modules-extract-imports@2.0.0: dependencies: postcss: 7.0.39 - postcss-modules-extract-imports@3.1.0(postcss@8.4.38): + postcss-modules-extract-imports@3.1.0(postcss@8.5.6): dependencies: - postcss: 8.4.38 - - postcss-modules-extract-imports@3.1.0(postcss@8.4.41): - dependencies: - postcss: 8.4.41 + postcss: 8.5.6 postcss-modules-local-by-default@3.0.3: dependencies: icss-utils: 4.1.1 postcss: 7.0.39 - postcss-selector-parser: 6.1.0 - postcss-value-parser: 4.2.0 - - postcss-modules-local-by-default@4.0.5(postcss@8.4.38): - dependencies: - icss-utils: 5.1.0(postcss@8.4.38) - postcss: 8.4.38 - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.2 postcss-value-parser: 4.2.0 - postcss-modules-local-by-default@4.0.5(postcss@8.4.41): + postcss-modules-local-by-default@4.2.0(postcss@8.5.6): dependencies: - icss-utils: 5.1.0(postcss@8.4.41) - postcss: 8.4.41 - postcss-selector-parser: 6.1.0 + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 postcss-value-parser: 4.2.0 postcss-modules-scope@2.2.0: dependencies: postcss: 7.0.39 - postcss-selector-parser: 6.1.0 - - postcss-modules-scope@3.2.0(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-selector-parser: 6.1.0 + postcss-selector-parser: 6.1.2 - postcss-modules-scope@3.2.0(postcss@8.4.41): + postcss-modules-scope@3.2.1(postcss@8.5.6): dependencies: - postcss: 8.4.41 - postcss-selector-parser: 6.1.0 + postcss: 8.5.6 + postcss-selector-parser: 7.1.0 postcss-modules-values@3.0.0: dependencies: icss-utils: 4.1.1 postcss: 7.0.39 - postcss-modules-values@4.0.0(postcss@8.4.38): - dependencies: - icss-utils: 5.1.0(postcss@8.4.38) - postcss: 8.4.38 - - postcss-modules-values@4.0.0(postcss@8.4.41): - dependencies: - icss-utils: 5.1.0(postcss@8.4.41) - postcss: 8.4.41 - - postcss-modules@4.3.1(postcss@8.4.38): - dependencies: - generic-names: 4.0.0 - icss-replace-symbols: 1.1.0 - lodash.camelcase: 4.3.0 - postcss: 8.4.38 - postcss-modules-extract-imports: 3.1.0(postcss@8.4.38) - postcss-modules-local-by-default: 4.0.5(postcss@8.4.38) - postcss-modules-scope: 3.2.0(postcss@8.4.38) - postcss-modules-values: 4.0.0(postcss@8.4.38) - string-hash: 1.1.3 - - postcss-normalize-charset@5.1.0(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - - postcss-normalize-charset@5.1.0(postcss@8.4.41): - dependencies: - postcss: 8.4.41 - - postcss-normalize-display-values@5.1.0(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - postcss-normalize-display-values@5.1.0(postcss@8.4.41): - dependencies: - postcss: 8.4.41 - postcss-value-parser: 4.2.0 - - postcss-normalize-positions@5.1.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - postcss-normalize-positions@5.1.1(postcss@8.4.41): - dependencies: - postcss: 8.4.41 - postcss-value-parser: 4.2.0 - - postcss-normalize-repeat-style@5.1.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - postcss-normalize-repeat-style@5.1.1(postcss@8.4.41): + postcss-modules-values@4.0.0(postcss@8.5.6): dependencies: - postcss: 8.4.41 - postcss-value-parser: 4.2.0 + icss-utils: 5.1.0(postcss@8.5.6) + postcss: 8.5.6 - postcss-normalize-string@5.1.0(postcss@8.4.38): + postcss-normalize-charset@5.1.0(postcss@8.5.6): dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 + postcss: 8.5.6 - postcss-normalize-string@5.1.0(postcss@8.4.41): + postcss-normalize-display-values@5.1.0(postcss@8.5.6): dependencies: - postcss: 8.4.41 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@5.1.0(postcss@8.4.38): + postcss-normalize-positions@5.1.1(postcss@8.5.6): dependencies: - postcss: 8.4.38 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-timing-functions@5.1.0(postcss@8.4.41): + postcss-normalize-repeat-style@5.1.1(postcss@8.5.6): dependencies: - postcss: 8.4.41 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@5.1.1(postcss@8.4.38): + postcss-normalize-string@5.1.0(postcss@8.5.6): dependencies: - browserslist: 4.23.0 - postcss: 8.4.38 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-unicode@5.1.1(postcss@8.4.41): + postcss-normalize-timing-functions@5.1.0(postcss@8.5.6): dependencies: - browserslist: 4.23.0 - postcss: 8.4.41 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-url@5.1.0(postcss@8.4.38): + postcss-normalize-unicode@5.1.1(postcss@8.5.6): dependencies: - normalize-url: 6.1.0 - postcss: 8.4.38 + browserslist: 4.28.0 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-normalize-url@5.1.0(postcss@8.4.41): + postcss-normalize-url@5.1.0(postcss@8.5.6): dependencies: normalize-url: 6.1.0 - postcss: 8.4.41 - postcss-value-parser: 4.2.0 - - postcss-normalize-whitespace@5.1.1(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - - postcss-normalize-whitespace@5.1.1(postcss@8.4.41): - dependencies: - postcss: 8.4.41 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-ordered-values@5.1.3(postcss@8.4.38): + postcss-normalize-whitespace@5.1.1(postcss@8.5.6): dependencies: - cssnano-utils: 3.1.0(postcss@8.4.38) - postcss: 8.4.38 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-ordered-values@5.1.3(postcss@8.4.41): + postcss-ordered-values@5.1.3(postcss@8.5.6): dependencies: - cssnano-utils: 3.1.0(postcss@8.4.41) - postcss: 8.4.41 + cssnano-utils: 3.1.0(postcss@8.5.6) + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-reduce-initial@5.1.2(postcss@8.4.38): - dependencies: - browserslist: 4.23.0 - caniuse-api: 3.0.0 - postcss: 8.4.38 - - postcss-reduce-initial@5.1.2(postcss@8.4.41): + postcss-reduce-initial@5.1.2(postcss@8.5.6): dependencies: - browserslist: 4.23.0 + browserslist: 4.28.0 caniuse-api: 3.0.0 - postcss: 8.4.41 + postcss: 8.5.6 - postcss-reduce-transforms@5.1.0(postcss@8.4.38): + postcss-reduce-transforms@5.1.0(postcss@8.5.6): dependencies: - postcss: 8.4.38 + postcss: 8.5.6 postcss-value-parser: 4.2.0 - postcss-reduce-transforms@5.1.0(postcss@8.4.41): - dependencies: - postcss: 8.4.41 - postcss-value-parser: 4.2.0 - - postcss-safe-parser@6.0.0(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - - postcss-scss@4.0.9(postcss@8.4.38): - dependencies: - postcss: 8.4.38 - - postcss-selector-parser@6.1.0: + postcss-selector-parser@6.1.2: dependencies: cssesc: 3.0.0 util-deprecate: 1.0.2 - postcss-styl@0.12.3: - dependencies: - debug: 4.3.7 - fast-diff: 1.3.0 - lodash.sortedlastindex: 4.1.0 - postcss: 8.4.38 - stylus: 0.57.0 - transitivePeerDependencies: - - supports-color - - postcss-svgo@5.1.0(postcss@8.4.38): + postcss-selector-parser@7.1.0: dependencies: - postcss: 8.4.38 - postcss-value-parser: 4.2.0 - svgo: 2.8.0 + cssesc: 3.0.0 + util-deprecate: 1.0.2 - postcss-svgo@5.1.0(postcss@8.4.41): + postcss-svgo@5.1.0(postcss@8.5.6): dependencies: - postcss: 8.4.41 + postcss: 8.5.6 postcss-value-parser: 4.2.0 svgo: 2.8.0 - postcss-unique-selectors@5.1.1(postcss@8.4.38): + postcss-unique-selectors@5.1.1(postcss@8.5.6): dependencies: - postcss: 8.4.38 - postcss-selector-parser: 6.1.0 - - postcss-unique-selectors@5.1.1(postcss@8.4.41): - dependencies: - postcss: 8.4.41 - postcss-selector-parser: 6.1.0 + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 postcss-value-parser@4.2.0: {} @@ -34439,21 +22482,9 @@ snapshots: picocolors: 0.2.1 source-map: 0.6.1 - postcss@8.4.38: - dependencies: - nanoid: 3.3.7 - picocolors: 1.0.1 - source-map-js: 1.2.0 - - postcss@8.4.41: + postcss@8.5.6: dependencies: - nanoid: 3.3.7 - picocolors: 1.0.1 - source-map-js: 1.2.0 - - postcss@8.4.49: - dependencies: - nanoid: 3.3.7 + nanoid: 3.3.11 picocolors: 1.1.1 source-map-js: 1.2.1 @@ -34465,8 +22496,6 @@ snapshots: prettier@2.8.8: {} - prettier@3.3.3: {} - pretty-error@4.0.0: dependencies: lodash: 4.17.21 @@ -34484,18 +22513,10 @@ snapshots: ansi-styles: 5.2.0 react-is: 18.3.1 - pretty-format@29.7.0: - dependencies: - '@jest/schemas': 29.6.3 - ansi-styles: 5.2.0 - react-is: 18.3.1 - - pretty-ms@9.0.0: + pretty-ms@9.3.0: dependencies: parse-ms: 4.0.0 - private@0.1.8: {} - proc-log@2.0.1: {} proc-log@3.0.0: {} @@ -34504,18 +22525,16 @@ snapshots: process-nextick-args@2.0.1: {} - process-on-spawn@1.0.0: + process-on-spawn@1.1.0: dependencies: fromentries: 1.3.2 - process@0.11.10: {} - - progress-webpack-plugin@1.0.16(webpack@5.91.0): + progress-webpack-plugin@1.0.16(webpack@5.103.0): dependencies: chalk: 2.4.2 figures: 2.0.0 log-update: 2.3.0 - webpack: 5.91.0(webpack-cli@5.1.4) + webpack: 5.103.0 progress@2.0.3: {} @@ -34523,17 +22542,13 @@ snapshots: promise-call-limit@1.0.2: {} - promise-inflight@1.0.1(bluebird@3.7.2): - optionalDependencies: - bluebird: 3.7.2 + promise-inflight@1.0.1: {} promise-retry@2.0.1: dependencies: err-code: 2.0.3 retry: 0.12.0 - promise.series@0.2.0: {} - prompts@2.4.2: dependencies: kleur: 3.0.3 @@ -34543,35 +22558,9 @@ snapshots: dependencies: read: 1.0.7 - prop-types@15.8.1: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react-is: 16.13.1 - proto-list@1.2.4: {} - protocols@2.0.1: {} - - protractor@7.0.0: - dependencies: - '@types/q': 0.0.32 - '@types/selenium-webdriver': 3.0.26 - blocking-proxy: 1.0.1 - browserstack: 1.6.1 - chalk: 1.1.3 - glob: 7.2.3 - jasmine: 2.8.0 - jasminewd2: 2.2.0 - q: 1.4.1 - saucelabs: 1.5.0 - selenium-webdriver: 3.6.0 - source-map-support: 0.4.18 - webdriver-js-extender: 2.1.0 - webdriver-manager: 12.1.9 - yargs: 15.4.1 - transitivePeerDependencies: - - supports-color + protocols@2.0.2: {} proxy-addr@2.0.7: dependencies: @@ -34584,25 +22573,18 @@ snapshots: pseudomap@1.0.2: {} - psl@1.9.0: {} - - public-encrypt@4.0.3: + psl@1.15.0: dependencies: - bn.js: 4.12.0 - browserify-rsa: 4.1.0 - create-hash: 1.2.0 - parse-asn1: 5.1.7 - randombytes: 2.1.0 - safe-buffer: 5.2.1 + punycode: 2.3.1 pump@2.0.1: dependencies: - end-of-stream: 1.4.4 + end-of-stream: 1.4.5 once: 1.4.0 - pump@3.0.0: + pump@3.0.3: dependencies: - end-of-stream: 1.4.4 + end-of-stream: 1.4.5 once: 1.4.0 pumpify@1.5.1: @@ -34611,58 +22593,26 @@ snapshots: inherits: 2.0.4 pump: 2.0.1 - punycode@1.4.1: {} - punycode@2.3.1: {} - q@1.4.1: {} - q@1.5.1: {} - qjobs@1.2.0: {} - - qs@6.11.0: - dependencies: - side-channel: 1.0.6 - - qs@6.12.1: - dependencies: - side-channel: 1.0.6 - qs@6.13.0: dependencies: - side-channel: 1.0.6 + side-channel: 1.1.0 qs@6.5.3: {} - querystring-es3@0.2.1: {} - querystringify@2.2.0: {} queue-microtask@1.2.3: {} quick-lru@4.0.1: {} - raf@3.4.1: - dependencies: - performance-now: 2.1.0 - - railroad-diagrams@1.0.0: {} - - randexp@0.4.6: - dependencies: - discontinuous-range: 1.0.0 - ret: 0.1.15 - randombytes@2.1.0: dependencies: safe-buffer: 5.2.1 - randomfill@1.0.4: - dependencies: - randombytes: 2.1.0 - safe-buffer: 5.2.1 - range-parser@1.2.1: {} raw-body@2.5.2: @@ -34672,71 +22622,10 @@ snapshots: iconv-lite: 0.4.24 unpipe: 1.0.0 - react-dom@17.0.2(react@17.0.2): - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - react: 17.0.2 - scheduler: 0.20.2 - - react-highlight@0.14.0(react-dom@17.0.2(react@17.0.2))(react@17.0.2): - dependencies: - highlight.js: 10.7.3 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - - react-is@16.13.1: {} - react-is@17.0.2: {} react-is@18.3.1: {} - react-redux@7.2.9(react-dom@17.0.2(react@17.0.2))(react@17.0.2): - dependencies: - '@babel/runtime': 7.24.5 - '@types/react-redux': 7.1.33 - hoist-non-react-statics: 3.3.2 - loose-envify: 1.4.0 - prop-types: 15.8.1 - react: 17.0.2 - react-is: 17.0.2 - optionalDependencies: - react-dom: 17.0.2(react@17.0.2) - - react-shallow-renderer@16.15.0(react@17.0.2): - dependencies: - object-assign: 4.1.1 - react: 17.0.2 - react-is: 17.0.2 - - react-tabs@3.2.3(react@17.0.2): - dependencies: - clsx: 1.2.1 - prop-types: 15.8.1 - react: 17.0.2 - - react-test-renderer@17.0.2(react@17.0.2): - dependencies: - object-assign: 4.1.1 - react: 17.0.2 - react-is: 17.0.2 - react-shallow-renderer: 16.15.0(react@17.0.2) - scheduler: 0.20.2 - - react-transition-group@4.4.5(react-dom@17.0.2(react@17.0.2))(react@17.0.2): - dependencies: - '@babel/runtime': 7.24.5 - dom-helpers: 5.2.1 - loose-envify: 1.4.0 - prop-types: 15.8.1 - react: 17.0.2 - react-dom: 17.0.2(react@17.0.2) - - react@17.0.2: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - read-cmd-shim@3.0.0: {} read-cmd-shim@4.0.0: {} @@ -34760,7 +22649,7 @@ snapshots: read-package-json@6.0.4: dependencies: - glob: 10.3.16 + glob: 10.5.0 json-parse-even-better-errors: 3.0.2 normalize-package-data: 5.0.0 npm-normalize-package-bin: 3.0.1 @@ -34817,19 +22706,6 @@ snapshots: dependencies: picomatch: 2.3.1 - readdirp@4.0.2: {} - - recast@0.11.23: - dependencies: - ast-types: 0.9.6 - esprima: 3.1.3 - private: 0.1.8 - source-map: 0.5.7 - - rechoir@0.8.0: - dependencies: - resolve: 1.22.8 - redent@3.0.0: dependencies: indent-string: 4.0.0 @@ -34841,72 +22717,48 @@ snapshots: redux@4.2.1: dependencies: - '@babel/runtime': 7.24.5 + '@babel/runtime': 7.28.4 - reflect-metadata@0.2.2: {} - - reflect.getprototypeof@1.0.6: + reflect.getprototypeof@1.0.10: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 + es-abstract: 1.24.0 es-errors: 1.3.0 - get-intrinsic: 1.2.4 - globalthis: 1.0.4 - which-builtin-type: 1.1.3 - - regenerate-unicode-properties@10.1.1: - dependencies: - regenerate: 1.4.2 + es-object-atoms: 1.1.1 + get-intrinsic: 1.3.0 + get-proto: 1.0.1 + which-builtin-type: 1.2.1 - regenerate-unicode-properties@10.2.0: + regenerate-unicode-properties@10.2.2: dependencies: regenerate: 1.4.2 regenerate@1.4.2: {} - regenerator-runtime@0.14.1: {} - - regenerator-transform@0.15.2: - dependencies: - '@babel/runtime': 7.24.5 - - regex-parser@2.3.0: {} - - regexp.prototype.flags@1.5.2: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-errors: 1.3.0 - set-function-name: 2.0.2 - - regexpu-core@5.3.2: + regexp.prototype.flags@1.5.4: dependencies: - '@babel/regjsgen': 0.8.0 - regenerate: 1.4.2 - regenerate-unicode-properties: 10.1.1 - regjsparser: 0.9.1 - unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.1.0 + call-bind: 1.0.8 + define-properties: 1.2.1 + es-errors: 1.3.0 + get-proto: 1.0.1 + gopd: 1.2.0 + set-function-name: 2.0.2 - regexpu-core@6.2.0: + regexpu-core@6.4.0: dependencies: regenerate: 1.4.2 - regenerate-unicode-properties: 10.2.0 + regenerate-unicode-properties: 10.2.2 regjsgen: 0.8.0 - regjsparser: 0.12.0 + regjsparser: 0.13.0 unicode-match-property-ecmascript: 2.0.0 - unicode-match-property-value-ecmascript: 2.1.0 + unicode-match-property-value-ecmascript: 2.2.1 regjsgen@0.8.0: {} - regjsparser@0.12.0: - dependencies: - jsesc: 3.0.2 - - regjsparser@0.9.1: + regjsparser@0.13.0: dependencies: - jsesc: 0.5.0 + jsesc: 3.1.0 relateurl@0.2.7: {} @@ -34927,7 +22779,7 @@ snapshots: remove-trailing-separator@1.1.0: {} - rename-overwrite@5.0.0: + rename-overwrite@5.0.4: dependencies: '@zkochan/rimraf': 2.1.3 fs-extra: 10.1.0 @@ -34945,7 +22797,7 @@ snapshots: request@2.88.2: dependencies: aws-sign2: 0.7.0 - aws4: 1.13.0 + aws4: 1.13.2 caseless: 0.12.0 combined-stream: 1.0.8 extend: 3.0.2 @@ -34973,8 +22825,6 @@ snapshots: requires-port@1.0.0: {} - resize-observer-polyfill@1.5.1: {} - resolve-cwd@3.0.0: dependencies: resolve-from: 5.0.0 @@ -34987,32 +22837,19 @@ snapshots: dependencies: value-or-function: 3.0.0 - resolve-url-loader@5.0.0: - dependencies: - adjust-sourcemap-loader: 4.0.0 - convert-source-map: 1.9.0 - loader-utils: 2.0.4 - postcss: 8.4.41 - source-map: 0.6.1 - resolve-url@0.2.1: {} resolve.exports@1.1.1: {} - resolve@1.19.0: - dependencies: - is-core-module: 2.13.1 - path-parse: 1.0.7 - - resolve@1.22.8: + resolve@1.22.11: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 - resolve@2.0.0-next.5: + resolve@1.22.8: dependencies: - is-core-module: 2.13.1 + is-core-module: 2.16.1 path-parse: 1.0.7 supports-preserve-symlinks-flag: 1.0.0 @@ -35031,22 +22868,14 @@ snapshots: onetime: 7.0.0 signal-exit: 4.1.0 - ret@0.1.15: {} - retry@0.12.0: {} retry@0.13.1: {} - reusify@1.0.4: {} - - rfdc@1.3.1: {} + reusify@1.1.0: {} rfdc@1.4.1: {} - rimraf@2.7.1: - dependencies: - glob: 7.2.3 - rimraf@3.0.2: dependencies: glob: 7.2.3 @@ -35055,83 +22884,44 @@ snapshots: dependencies: glob: 9.3.5 - rimraf@5.0.10: - dependencies: - glob: 10.3.16 - - ripemd160@2.0.2: - dependencies: - hash-base: 3.1.0 - inherits: 2.0.4 - - rollup-plugin-babel@4.4.0(@babel/core@7.24.5)(rollup@2.79.1): + rollup-plugin-babel@4.4.0(@babel/core@7.28.5)(rollup@2.79.2): dependencies: - '@babel/core': 7.24.5 - '@babel/helper-module-imports': 7.24.3 - rollup: 2.79.1 + '@babel/core': 7.28.5 + '@babel/helper-module-imports': 7.27.1 + rollup: 2.79.2 rollup-pluginutils: 2.8.2 + transitivePeerDependencies: + - supports-color - rollup-plugin-cleanup@3.2.1(rollup@2.79.1): + rollup-plugin-cleanup@3.2.1(rollup@2.79.2): dependencies: js-cleanup: 1.2.0 - rollup: 2.79.1 - rollup-pluginutils: 2.8.2 - - rollup-plugin-copy@3.5.0: - dependencies: - '@types/fs-extra': 8.1.5 - colorette: 1.4.0 - fs-extra: 8.1.0 - globby: 10.0.1 - is-plain-object: 3.0.1 - - rollup-plugin-import-css@3.5.0(rollup@2.79.1): - dependencies: - '@rollup/pluginutils': 5.1.0(rollup@2.79.1) - rollup: 2.79.1 - - rollup-plugin-postcss@4.0.2(postcss@8.4.38)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.4.5)): - dependencies: - chalk: 4.1.2 - concat-with-sourcemaps: 1.1.0 - cssnano: 5.1.15(postcss@8.4.38) - import-cwd: 3.0.0 - p-queue: 6.6.2 - pify: 5.0.0 - postcss: 8.4.38 - postcss-load-config: 3.1.4(postcss@8.4.38)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.4.5)) - postcss-modules: 4.3.1(postcss@8.4.38) - promise.series: 0.2.0 - resolve: 1.22.8 + rollup: 2.79.2 rollup-pluginutils: 2.8.2 - safe-identifier: 0.4.2 - style-inject: 0.3.0 - transitivePeerDependencies: - - ts-node - rollup-plugin-typescript2@0.34.1(rollup@2.79.1)(typescript@5.5.4): + rollup-plugin-typescript2@0.34.1(rollup@2.79.2)(typescript@5.5.4): dependencies: '@rollup/pluginutils': 4.2.1 find-cache-dir: 3.3.2 fs-extra: 10.1.0 - rollup: 2.79.1 - semver: 7.6.2 - tslib: 2.6.2 + rollup: 2.79.2 + semver: 7.7.3 + tslib: 2.8.1 typescript: 5.5.4 - rollup-plugin-visualizer@5.12.0(rollup@2.79.1): + rollup-plugin-visualizer@5.14.0(rollup@2.79.2): dependencies: open: 8.4.2 - picomatch: 2.3.1 - source-map: 0.7.4 + picomatch: 4.0.3 + source-map: 0.7.6 yargs: 17.7.2 optionalDependencies: - rollup: 2.79.1 + rollup: 2.79.2 - rollup-plugin-vue@6.0.0(@vue/compiler-sfc@3.4.27): + rollup-plugin-vue@6.0.0(@vue/compiler-sfc@3.5.25): dependencies: - '@vue/compiler-sfc': 3.4.27 - debug: 4.3.4 + '@vue/compiler-sfc': 3.5.25 + debug: 4.4.3 hash-sum: 2.0.0 rollup-pluginutils: 2.8.2 transitivePeerDependencies: @@ -35141,132 +22931,50 @@ snapshots: dependencies: estree-walker: 0.6.1 - rollup@2.79.1: - optionalDependencies: - fsevents: 2.3.3 - - rollup@4.21.0: - dependencies: - '@types/estree': 1.0.5 - optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.21.0 - '@rollup/rollup-android-arm64': 4.21.0 - '@rollup/rollup-darwin-arm64': 4.21.0 - '@rollup/rollup-darwin-x64': 4.21.0 - '@rollup/rollup-linux-arm-gnueabihf': 4.21.0 - '@rollup/rollup-linux-arm-musleabihf': 4.21.0 - '@rollup/rollup-linux-arm64-gnu': 4.21.0 - '@rollup/rollup-linux-arm64-musl': 4.21.0 - '@rollup/rollup-linux-powerpc64le-gnu': 4.21.0 - '@rollup/rollup-linux-riscv64-gnu': 4.21.0 - '@rollup/rollup-linux-s390x-gnu': 4.21.0 - '@rollup/rollup-linux-x64-gnu': 4.21.0 - '@rollup/rollup-linux-x64-musl': 4.21.0 - '@rollup/rollup-win32-arm64-msvc': 4.21.0 - '@rollup/rollup-win32-ia32-msvc': 4.21.0 - '@rollup/rollup-win32-x64-msvc': 4.21.0 - fsevents: 2.3.3 - - rollup@4.22.4: - dependencies: - '@types/estree': 1.0.5 + rollup@2.79.2: optionalDependencies: - '@rollup/rollup-android-arm-eabi': 4.22.4 - '@rollup/rollup-android-arm64': 4.22.4 - '@rollup/rollup-darwin-arm64': 4.22.4 - '@rollup/rollup-darwin-x64': 4.22.4 - '@rollup/rollup-linux-arm-gnueabihf': 4.22.4 - '@rollup/rollup-linux-arm-musleabihf': 4.22.4 - '@rollup/rollup-linux-arm64-gnu': 4.22.4 - '@rollup/rollup-linux-arm64-musl': 4.22.4 - '@rollup/rollup-linux-powerpc64le-gnu': 4.22.4 - '@rollup/rollup-linux-riscv64-gnu': 4.22.4 - '@rollup/rollup-linux-s390x-gnu': 4.22.4 - '@rollup/rollup-linux-x64-gnu': 4.22.4 - '@rollup/rollup-linux-x64-musl': 4.22.4 - '@rollup/rollup-win32-arm64-msvc': 4.22.4 - '@rollup/rollup-win32-ia32-msvc': 4.22.4 - '@rollup/rollup-win32-x64-msvc': 4.22.4 fsevents: 2.3.3 rrweb-cssom@0.6.0: {} - rrweb-cssom@0.7.1: {} - - rst-selector-parser@2.2.3: - dependencies: - lodash.flattendeep: 4.4.0 - nearley: 2.20.1 - - run-applescript@7.0.0: {} - run-async@2.4.1: {} run-parallel@1.2.0: dependencies: queue-microtask: 1.2.3 - run-queue@1.0.3: - dependencies: - aproba: 1.2.0 - - rxjs@6.6.7: + rxjs@7.8.1: dependencies: - tslib: 1.14.1 + tslib: 2.8.1 - rxjs@7.8.1: + rxjs@7.8.2: dependencies: - tslib: 2.6.2 + tslib: 2.8.1 - safe-array-concat@1.1.2: + safe-array-concat@1.1.3: dependencies: - call-bind: 1.0.7 - get-intrinsic: 1.2.4 - has-symbols: 1.0.3 + call-bind: 1.0.8 + call-bound: 1.0.4 + get-intrinsic: 1.3.0 + has-symbols: 1.1.0 isarray: 2.0.5 safe-buffer@5.1.2: {} safe-buffer@5.2.1: {} - safe-identifier@0.4.2: {} - - safe-regex-test@1.0.3: + safe-push-apply@1.0.0: dependencies: - call-bind: 1.0.7 es-errors: 1.3.0 - is-regex: 1.1.4 - - safer-buffer@2.1.2: {} - - sass-loader@16.0.0(sass@1.77.6)(webpack@5.94.0(esbuild@0.23.0)): - dependencies: - neo-async: 2.6.2 - optionalDependencies: - sass: 1.77.6 - webpack: 5.94.0(esbuild@0.23.0) - - sass@1.77.2: - dependencies: - chokidar: 3.6.0 - immutable: 4.3.6 - source-map-js: 1.2.0 - - sass@1.77.6: - dependencies: - chokidar: 3.6.0 - immutable: 4.3.6 - source-map-js: 1.2.0 + isarray: 2.0.5 - saucelabs@1.5.0: + safe-regex-test@1.1.0: dependencies: - https-proxy-agent: 2.2.4 - transitivePeerDependencies: - - supports-color - - sax@1.2.4: {} + call-bound: 1.0.4 + es-errors: 1.3.0 + is-regex: 1.2.1 - sax@1.3.0: {} + safer-buffer@2.1.2: {} saxes@5.0.1: dependencies: @@ -35276,17 +22984,6 @@ snapshots: dependencies: xmlchars: 2.2.0 - scheduler@0.20.2: - dependencies: - loose-envify: 1.4.0 - object-assign: 4.1.1 - - schema-utils@1.0.0: - dependencies: - ajv: 6.12.6 - ajv-errors: 1.0.1(ajv@6.12.6) - ajv-keywords: 3.5.2(ajv@6.12.6) - schema-utils@2.7.0: dependencies: '@types/json-schema': 7.0.15 @@ -35305,28 +23002,19 @@ snapshots: ajv: 6.12.6 ajv-keywords: 3.5.2(ajv@6.12.6) - schema-utils@4.2.0: + schema-utils@4.3.3: dependencies: '@types/json-schema': 7.0.15 - ajv: 8.13.0 - ajv-formats: 2.1.1(ajv@8.13.0) - ajv-keywords: 5.1.0(ajv@8.13.0) - - secure-compare@3.0.1: {} + ajv: 8.17.1 + ajv-formats: 2.1.1(ajv@8.17.1) + ajv-keywords: 5.1.0(ajv@8.17.1) select-hose@2.0.0: {} - selenium-webdriver@3.6.0: - dependencies: - jszip: 3.10.1 - rimraf: 2.7.1 - tmp: 0.0.30 - xml2js: 0.4.23 - selfsigned@2.4.1: dependencies: - '@types/node-forge': 1.3.11 - node-forge: 1.3.1 + '@types/node-forge': 1.3.14 + node-forge: 1.3.2 semver@5.7.2: {} @@ -35340,11 +23028,11 @@ snapshots: dependencies: lru-cache: 6.0.0 - semver@7.6.2: {} - semver@7.6.3: {} - send@0.18.0: + semver@7.7.3: {} + + send@0.19.0: dependencies: debug: 2.6.9 depd: 2.0.0 @@ -35366,10 +23054,6 @@ snapshots: dependencies: type-fest: 0.13.1 - serialize-javascript@4.0.0: - dependencies: - randombytes: 2.1.0 - serialize-javascript@5.0.1: dependencies: randombytes: 2.1.0 @@ -35390,12 +23074,12 @@ snapshots: transitivePeerDependencies: - supports-color - serve-static@1.15.0: + serve-static@1.16.2: dependencies: - encodeurl: 1.0.2 + encodeurl: 2.0.0 escape-html: 1.0.3 parseurl: 1.3.3 - send: 0.18.0 + send: 0.19.0 transitivePeerDependencies: - supports-color @@ -35406,8 +23090,8 @@ snapshots: define-data-property: 1.1.4 es-errors: 1.3.0 function-bind: 1.1.2 - get-intrinsic: 1.2.4 - gopd: 1.0.1 + get-intrinsic: 1.3.0 + gopd: 1.2.0 has-property-descriptors: 1.0.2 set-function-name@2.0.2: @@ -35417,17 +23101,16 @@ snapshots: functions-have-names: 1.2.3 has-property-descriptors: 1.0.2 - setimmediate@1.0.5: {} + set-proto@1.0.0: + dependencies: + dunder-proto: 1.0.1 + es-errors: 1.3.0 + es-object-atoms: 1.1.1 setprototypeof@1.1.0: {} setprototypeof@1.2.0: {} - sha.js@2.4.11: - dependencies: - inherits: 2.0.4 - safe-buffer: 5.2.1 - shallow-clone@3.0.1: dependencies: kind-of: 6.0.3 @@ -35444,26 +23127,42 @@ snapshots: shebang-regex@3.0.0: {} - shell-quote@1.8.1: {} - - shellwords@0.1.1: - optional: true + shell-quote@1.8.3: {} shiki@0.14.7: dependencies: - ansi-sequence-parser: 1.1.1 - jsonc-parser: 3.2.1 + ansi-sequence-parser: 1.1.3 + jsonc-parser: 3.3.1 vscode-oniguruma: 1.7.0 vscode-textmate: 8.0.0 - side-channel@1.0.6: + side-channel-list@1.0.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + + side-channel-map@1.0.1: + dependencies: + call-bound: 1.0.4 + es-errors: 1.3.0 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + + side-channel-weakmap@1.0.2: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 es-errors: 1.3.0 - get-intrinsic: 1.2.4 - object-inspect: 1.13.1 + get-intrinsic: 1.3.0 + object-inspect: 1.13.4 + side-channel-map: 1.0.1 - siginfo@2.0.0: {} + side-channel@1.1.0: + dependencies: + es-errors: 1.3.0 + object-inspect: 1.13.4 + side-channel-list: 1.0.0 + side-channel-map: 1.0.1 + side-channel-weakmap: 1.0.2 signal-exit@3.0.7: {} @@ -35483,7 +23182,7 @@ snapshots: dependencies: '@sigstore/bundle': 2.3.2 '@sigstore/core': 1.1.0 - '@sigstore/protobuf-specs': 0.3.2 + '@sigstore/protobuf-specs': 0.3.3 '@sigstore/sign': 2.3.2 '@sigstore/tuf': 2.3.4 '@sigstore/verify': 1.2.1 @@ -35492,64 +23191,30 @@ snapshots: sirv@2.0.4: dependencies: - '@polka/url': 1.0.0-next.25 - mrmime: 2.0.0 + '@polka/url': 1.0.0-next.29 + mrmime: 2.0.1 totalist: 3.0.1 sisteransi@1.0.5: {} skip-regex@1.0.2: {} - slash@1.0.0: {} - slash@3.0.0: {} - slash@4.0.0: {} - slash@5.1.0: {} slice-ansi@5.0.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 is-fullwidth-code-point: 4.0.0 - slice-ansi@7.1.0: + slice-ansi@7.1.2: dependencies: - ansi-styles: 6.2.1 - is-fullwidth-code-point: 5.0.0 + ansi-styles: 6.2.3 + is-fullwidth-code-point: 5.1.0 smart-buffer@4.2.0: {} - socket.io-adapter@2.5.4: - dependencies: - debug: 4.3.7 - ws: 8.11.0 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - - socket.io-parser@4.2.4: - dependencies: - '@socket.io/component-emitter': 3.1.2 - debug: 4.3.7 - transitivePeerDependencies: - - supports-color - - socket.io@4.7.5: - dependencies: - accepts: 1.3.8 - base64id: 2.0.0 - cors: 2.8.5 - debug: 4.3.4 - engine.io: 6.5.4 - socket.io-adapter: 2.5.4 - socket.io-parser: 4.2.4 - transitivePeerDependencies: - - bufferutil - - supports-color - - utf-8-validate - sockjs@0.3.24: dependencies: faye-websocket: 0.11.4 @@ -35559,30 +23224,28 @@ snapshots: socks-proxy-agent@7.0.0: dependencies: agent-base: 6.0.2 - debug: 4.3.7 - socks: 2.8.3 + debug: 4.4.3 + socks: 2.8.7 transitivePeerDependencies: - supports-color - socks-proxy-agent@8.0.3: + socks-proxy-agent@8.0.5: dependencies: - agent-base: 7.1.1 - debug: 4.3.7 - socks: 2.8.3 + agent-base: 7.1.4 + debug: 4.4.3 + socks: 2.8.7 transitivePeerDependencies: - supports-color - socks@2.8.3: + socks@2.8.7: dependencies: - ip-address: 9.0.5 + ip-address: 10.1.0 smart-buffer: 4.2.0 sort-keys@2.0.0: dependencies: is-plain-obj: 1.1.0 - source-map-js@1.2.0: {} - source-map-js@1.2.1: {} source-map-loader@0.2.4: @@ -35590,12 +23253,6 @@ snapshots: async: 2.6.4 loader-utils: 1.4.2 - source-map-loader@5.0.0(webpack@5.94.0(esbuild@0.23.0)): - dependencies: - iconv-lite: 0.6.3 - source-map-js: 1.2.0 - webpack: 5.94.0(esbuild@0.23.0) - source-map-resolve@0.5.3: dependencies: atob: 2.1.2 @@ -35604,15 +23261,6 @@ snapshots: source-map-url: 0.4.1 urix: 0.1.0 - source-map-resolve@0.6.0: - dependencies: - atob: 2.1.2 - decode-uri-component: 0.2.2 - - source-map-support@0.4.18: - dependencies: - source-map: 0.5.7 - source-map-support@0.5.21: dependencies: buffer-from: 1.1.2 @@ -35622,12 +23270,12 @@ snapshots: source-map@0.5.6: {} - source-map@0.5.7: {} - source-map@0.6.1: {} source-map@0.7.4: {} + source-map@0.7.6: {} + sourcemap-codec@1.4.8: {} spawn-wrap@2.0.0: @@ -35642,20 +23290,20 @@ snapshots: spdx-correct@3.2.0: dependencies: spdx-expression-parse: 3.0.1 - spdx-license-ids: 3.0.17 + spdx-license-ids: 3.0.22 spdx-exceptions@2.5.0: {} spdx-expression-parse@3.0.1: dependencies: spdx-exceptions: 2.5.0 - spdx-license-ids: 3.0.17 + spdx-license-ids: 3.0.22 - spdx-license-ids@3.0.17: {} + spdx-license-ids@3.0.22: {} spdy-transport@3.0.0: dependencies: - debug: 4.3.7 + debug: 4.4.3 detect-node: 2.1.0 hpack.js: 2.1.6 obuf: 1.1.2 @@ -35666,7 +23314,7 @@ snapshots: spdy@4.0.2: dependencies: - debug: 4.3.4 + debug: 4.4.3 handle-thing: 2.0.1 http-deceiver: 1.2.7 select-hose: 2.0.0 @@ -35682,12 +23330,8 @@ snapshots: dependencies: through: 2.3.8 - splitpanes@3.1.5: {} - sprintf-js@1.0.3: {} - sprintf-js@1.1.3: {} - sshpk@1.18.0: dependencies: asn1: 0.2.6 @@ -35702,11 +23346,7 @@ snapshots: ssri@10.0.6: dependencies: - minipass: 7.1.1 - - ssri@6.0.2: - dependencies: - figgy-pudding: 3.5.2 + minipass: 7.1.2 ssri@8.0.1: dependencies: @@ -35722,47 +23362,19 @@ snapshots: dependencies: escape-string-regexp: 2.0.0 - stackback@0.0.2: {} - stackframe@1.3.4: {} statuses@1.5.0: {} statuses@2.0.1: {} - std-env@3.7.0: {} - - stream-browserify@3.0.0: - dependencies: - inherits: 2.0.4 - readable-stream: 3.6.2 - - stream-each@1.2.3: - dependencies: - end-of-stream: 1.4.4 - stream-shift: 1.0.3 - - stream-http@3.2.0: + stop-iteration-iterator@1.1.0: dependencies: - builtin-status-codes: 3.0.0 - inherits: 2.0.4 - readable-stream: 3.6.2 - xtend: 4.0.2 + es-errors: 1.3.0 + internal-slot: 1.1.0 stream-shift@1.0.3: {} - streamroller@3.1.5: - dependencies: - date-format: 4.0.14 - debug: 4.3.7 - fs-extra: 8.1.0 - transitivePeerDependencies: - - supports-color - - string-argv@0.3.2: {} - - string-hash@1.1.3: {} - string-length@4.0.2: dependencies: char-regex: 1.0.2 @@ -35789,54 +23401,43 @@ snapshots: dependencies: eastasianwidth: 0.2.0 emoji-regex: 9.2.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 - string-width@7.1.0: + string-width@7.2.0: dependencies: - emoji-regex: 10.3.0 - get-east-asian-width: 1.2.0 - strip-ansi: 7.1.0 - - string.prototype.matchall@4.0.11: - dependencies: - call-bind: 1.0.7 - define-properties: 1.2.1 - es-abstract: 1.23.3 - es-errors: 1.3.0 - es-object-atoms: 1.0.0 - get-intrinsic: 1.2.4 - gopd: 1.0.1 - has-symbols: 1.0.3 - internal-slot: 1.0.7 - regexp.prototype.flags: 1.5.2 - set-function-name: 2.0.2 - side-channel: 1.0.6 + emoji-regex: 10.6.0 + get-east-asian-width: 1.4.0 + strip-ansi: 7.1.2 string.prototype.padend@3.1.6: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 - string.prototype.trim@1.2.9: + string.prototype.trim@1.2.10: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 + define-data-property: 1.1.4 define-properties: 1.2.1 - es-abstract: 1.23.3 - es-object-atoms: 1.0.0 + es-abstract: 1.24.0 + es-object-atoms: 1.1.1 + has-property-descriptors: 1.0.2 - string.prototype.trimend@1.0.8: + string.prototype.trimend@1.0.9: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 + call-bound: 1.0.4 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 string.prototype.trimstart@1.0.8: dependencies: - call-bind: 1.0.7 + call-bind: 1.0.8 define-properties: 1.2.1 - es-object-atoms: 1.0.0 + es-object-atoms: 1.1.1 string_decoder@1.1.1: dependencies: @@ -35846,10 +23447,6 @@ snapshots: dependencies: safe-buffer: 5.2.1 - strip-ansi@3.0.1: - dependencies: - ansi-regex: 2.1.1 - strip-ansi@4.0.0: dependencies: ansi-regex: 3.0.1 @@ -35862,9 +23459,9 @@ snapshots: dependencies: ansi-regex: 5.0.1 - strip-ansi@7.1.0: + strip-ansi@7.1.2: dependencies: - ansi-regex: 6.0.1 + ansi-regex: 6.2.2 strip-bom@3.0.0: {} @@ -35874,8 +23471,6 @@ snapshots: strip-final-newline@2.0.0: {} - strip-final-newline@3.0.0: {} - strip-indent@3.0.0: dependencies: min-indent: 1.0.1 @@ -35884,73 +23479,30 @@ snapshots: strip-json-comments@3.1.1: {} - strip-literal@2.1.0: - dependencies: - js-tokens: 9.0.0 - strong-log-transformer@2.1.0: dependencies: duplexer: 0.1.2 minimist: 1.2.8 through: 2.3.8 - style-inject@0.3.0: {} - - style-loader@1.3.0(webpack@5.91.0): + style-loader@1.3.0(webpack@5.103.0): dependencies: loader-utils: 2.0.4 schema-utils: 2.7.1 - webpack: 5.91.0(webpack-cli@5.1.4) - - stylehacks@5.1.1(postcss@8.4.38): - dependencies: - browserslist: 4.23.0 - postcss: 8.4.38 - postcss-selector-parser: 6.1.0 - - stylehacks@5.1.1(postcss@8.4.41): - dependencies: - browserslist: 4.23.0 - postcss: 8.4.41 - postcss-selector-parser: 6.1.0 - - stylis@4.2.0: {} - - stylus@0.57.0: - dependencies: - css: 3.0.0 - debug: 4.3.7 - glob: 7.2.3 - safer-buffer: 2.1.2 - sax: 1.2.4 - source-map: 0.7.4 - transitivePeerDependencies: - - supports-color + webpack: 5.103.0 - superagent@7.1.6: + stylehacks@5.1.1(postcss@8.5.6): dependencies: - component-emitter: 1.3.1 - cookiejar: 2.1.4 - debug: 4.3.7 - fast-safe-stringify: 2.1.1 - form-data: 4.0.0 - formidable: 2.1.2 - methods: 1.1.2 - mime: 2.6.0 - qs: 6.12.1 - readable-stream: 3.6.2 - semver: 7.6.2 - transitivePeerDependencies: - - supports-color + browserslist: 4.28.0 + postcss: 8.5.6 + postcss-selector-parser: 6.1.2 supertap@3.0.1: dependencies: indent-string: 5.0.0 - js-yaml: 3.14.1 + js-yaml: 3.14.2 serialize-error: 7.0.1 - strip-ansi: 7.1.0 - - supports-color@2.0.0: {} + strip-ansi: 7.1.2 supports-color@5.5.0: dependencies: @@ -35980,7 +23532,7 @@ snapshots: css-select: 4.3.0 css-tree: 1.1.3 csso: 4.2.0 - picocolors: 1.0.1 + picocolors: 1.1.1 stable: 0.1.8 symbol-observable@4.0.0: {} @@ -35990,21 +23542,16 @@ snapshots: symlink-dir@5.2.1: dependencies: better-path-resolve: 1.0.0 - rename-overwrite: 5.0.0 - - synckit@0.9.1: - dependencies: - '@pkgr/core': 0.1.1 - tslib: 2.6.2 + rename-overwrite: 5.0.4 tapable@1.1.3: {} - tapable@2.2.1: {} + tapable@2.3.0: {} tar-stream@2.2.0: dependencies: bl: 4.1.0 - end-of-stream: 1.4.4 + end-of-stream: 1.4.5 fs-constants: 1.0.0 inherits: 2.0.4 readable-stream: 3.6.2 @@ -36027,6 +23574,14 @@ snapshots: mkdirp: 1.0.4 yallist: 4.0.0 + tar@7.5.2: + dependencies: + '@isaacs/fs-minipass': 4.0.1 + chownr: 3.0.0 + minipass: 7.1.2 + minizlib: 3.1.0 + yallist: 5.0.0 + temp-dir@1.0.0: {} temp-dir@2.0.0: {} @@ -36046,46 +23601,19 @@ snapshots: ansi-escapes: 4.3.2 supports-hyperlinks: 2.3.0 - terser-webpack-plugin@5.3.10(esbuild@0.23.0)(webpack@5.94.0(esbuild@0.23.0)): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.31.0 - webpack: 5.94.0(esbuild@0.23.0) - optionalDependencies: - esbuild: 0.23.0 - - terser-webpack-plugin@5.3.10(webpack@5.91.0): - dependencies: - '@jridgewell/trace-mapping': 0.3.25 - jest-worker: 27.5.1 - schema-utils: 3.3.0 - serialize-javascript: 6.0.2 - terser: 5.31.0 - webpack: 5.91.0(webpack-cli@5.1.4) - - terser-webpack-plugin@5.3.10(webpack@5.94.0): + terser-webpack-plugin@5.3.14(webpack@5.103.0): dependencies: - '@jridgewell/trace-mapping': 0.3.25 + '@jridgewell/trace-mapping': 0.3.31 jest-worker: 27.5.1 - schema-utils: 3.3.0 + schema-utils: 4.3.3 serialize-javascript: 6.0.2 - terser: 5.31.0 - webpack: 5.94.0 - - terser@5.31.0: - dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.11.3 - commander: 2.20.3 - source-map-support: 0.5.21 + terser: 5.44.1 + webpack: 5.103.0 - terser@5.31.6: + terser@5.44.1: dependencies: - '@jridgewell/source-map': 0.3.6 - acorn: 8.11.3 + '@jridgewell/source-map': 0.3.11 + acorn: 8.15.0 commander: 2.20.3 source-map-support: 0.5.21 @@ -36107,18 +23635,14 @@ snapshots: dependencies: any-promise: 1.3.0 - thingies@1.21.0(tslib@2.6.3): - dependencies: - tslib: 2.6.3 - - thread-loader@3.0.4(webpack@5.91.0): + thread-loader@3.0.4(webpack@5.103.0): dependencies: json-parse-better-errors: 1.0.2 - loader-runner: 4.3.0 + loader-runner: 4.3.1 loader-utils: 2.0.4 neo-async: 2.6.2 schema-utils: 3.3.0 - webpack: 5.91.0(webpack-cli@5.1.4) + webpack: 5.103.0 throat@6.0.2: {} @@ -36142,25 +23666,11 @@ snapshots: time-zone@1.0.0: {} - timers-browserify@2.0.12: - dependencies: - setimmediate: 1.0.5 - - tinybench@2.9.0: {} - - tinypool@0.8.4: {} - - tinyspy@2.2.1: {} - - tmp@0.0.30: - dependencies: - os-tmpdir: 1.0.2 - tmp@0.0.33: dependencies: os-tmpdir: 1.0.2 - tmp@0.2.3: {} + tmp@0.2.5: {} tmpl@1.0.5: {} @@ -36169,8 +23679,6 @@ snapshots: is-absolute: 1.0.0 is-negated-glob: 1.0.0 - to-fast-properties@2.0.0: {} - to-regex-range@5.0.1: dependencies: is-number: 7.0.0 @@ -36187,12 +23695,12 @@ snapshots: tough-cookie@2.5.0: dependencies: - psl: 1.9.0 + psl: 1.15.0 punycode: 2.3.1 tough-cookie@4.1.4: dependencies: - psl: 1.9.0 + psl: 1.15.0 punycode: 2.3.1 universalify: 0.2.0 url-parse: 1.5.10 @@ -36211,101 +23719,47 @@ snapshots: dependencies: punycode: 2.3.1 - tr46@5.0.0: - dependencies: - punycode: 2.3.1 - - tree-dump@1.0.2(tslib@2.6.3): - dependencies: - tslib: 2.6.3 - - tree-kill@1.2.2: {} - - treeverse@3.0.0: {} - - trim-newlines@3.0.1: {} - - ts-api-utils@1.3.0(typescript@5.4.5): - dependencies: - typescript: 5.4.5 - - ts-api-utils@1.3.0(typescript@5.5.4): - dependencies: - typescript: 5.5.4 - - ts-jest@27.1.5(@babel/core@7.24.5)(@types/jest@27.5.2)(babel-jest@27.5.1(@babel/core@7.24.5))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(typescript@5.5.4): - dependencies: - bs-logger: 0.2.6 - fast-json-stable-stringify: 2.1.0 - jest: 27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)) - jest-util: 27.5.1 - json5: 2.2.3 - lodash.memoize: 4.1.2 - make-error: 1.3.6 - semver: 7.6.2 - typescript: 5.5.4 - yargs-parser: 20.2.9 - optionalDependencies: - '@babel/core': 7.24.5 - '@types/jest': 27.5.2 - babel-jest: 27.5.1(@babel/core@7.24.5) + treeverse@3.0.0: {} + + trim-newlines@3.0.1: {} - ts-jest@27.1.5(@babel/core@7.25.2)(@types/jest@27.5.2)(babel-jest@27.5.1(@babel/core@7.25.2))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(typescript@5.5.4): + ts-jest@27.1.5(@babel/core@7.28.5)(@types/jest@27.5.2)(babel-jest@27.5.1(@babel/core@7.28.5))(jest@27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4)))(typescript@5.5.4): dependencies: bs-logger: 0.2.6 fast-json-stable-stringify: 2.1.0 - jest: 27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)) + jest: 27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4)) jest-util: 27.5.1 json5: 2.2.3 lodash.memoize: 4.1.2 make-error: 1.3.6 - semver: 7.6.2 + semver: 7.7.3 typescript: 5.5.4 yargs-parser: 20.2.9 optionalDependencies: - '@babel/core': 7.25.2 + '@babel/core': 7.28.5 '@types/jest': 27.5.2 - babel-jest: 27.5.1(@babel/core@7.25.2) + babel-jest: 27.5.1(@babel/core@7.28.5) - ts-loader@9.5.1(typescript@5.5.4)(webpack@5.91.0): + ts-loader@9.5.4(typescript@5.5.4)(webpack@5.103.0): dependencies: chalk: 4.1.2 - enhanced-resolve: 5.16.1 - micromatch: 4.0.7 - semver: 7.6.2 - source-map: 0.7.4 + enhanced-resolve: 5.18.3 + micromatch: 4.0.8 + semver: 7.7.3 + source-map: 0.7.6 typescript: 5.5.4 - webpack: 5.91.0(webpack-cli@5.1.4) - - ts-node@10.9.2(@types/node@22.13.8)(typescript@5.4.5): - dependencies: - '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 - '@tsconfig/node12': 1.0.11 - '@tsconfig/node14': 1.0.3 - '@tsconfig/node16': 1.0.4 - '@types/node': 22.13.8 - acorn: 8.11.3 - acorn-walk: 8.3.2 - arg: 4.1.3 - create-require: 1.1.1 - diff: 4.0.2 - make-error: 1.3.6 - typescript: 5.4.5 - v8-compile-cache-lib: 3.0.1 - yn: 3.1.1 - optional: true + webpack: 5.103.0 - ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4): + ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4): dependencies: '@cspotcode/source-map-support': 0.8.1 - '@tsconfig/node10': 1.0.11 + '@tsconfig/node10': 1.0.12 '@tsconfig/node12': 1.0.11 '@tsconfig/node14': 1.0.3 '@tsconfig/node16': 1.0.4 - '@types/node': 22.13.8 - acorn: 8.11.3 - acorn-walk: 8.3.2 + '@types/node': 22.19.1 + acorn: 8.15.0 + acorn-walk: 8.3.4 arg: 4.1.3 create-require: 1.1.1 diff: 4.0.2 @@ -36336,21 +23790,17 @@ snapshots: tslib@1.14.1: {} - tslib@2.6.2: {} - - tslib@2.6.3: {} + tslib@2.8.1: {} tsutils@3.21.0(typescript@5.5.4): dependencies: tslib: 1.14.1 typescript: 5.5.4 - tty-browserify@0.0.1: {} - tuf-js@1.1.7: dependencies: '@tufjs/models': 1.0.4 - debug: 4.3.7 + debug: 4.4.3 make-fetch-happen: 11.1.1 transitivePeerDependencies: - supports-color @@ -36358,7 +23808,7 @@ snapshots: tuf-js@2.2.1: dependencies: '@tufjs/models': 2.0.1 - debug: 4.3.7 + debug: 4.4.3 make-fetch-happen: 13.0.1 transitivePeerDependencies: - supports-color @@ -36375,6 +23825,8 @@ snapshots: type-detect@4.0.8: {} + type-detect@4.1.0: {} + type-fest@0.13.1: {} type-fest@0.16.0: {} @@ -36396,39 +23848,38 @@ snapshots: media-typer: 0.3.0 mime-types: 2.1.35 - typed-array-buffer@1.0.2: + typed-array-buffer@1.0.3: dependencies: - call-bind: 1.0.7 + call-bound: 1.0.4 es-errors: 1.3.0 - is-typed-array: 1.1.13 + is-typed-array: 1.1.15 - typed-array-byte-length@1.0.1: + typed-array-byte-length@1.0.3: dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 - typed-array-byte-offset@1.0.2: + typed-array-byte-offset@1.0.4: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - - typed-array-length@1.0.6: - dependencies: - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 - has-proto: 1.0.3 - is-typed-array: 1.1.13 - possible-typed-array-names: 1.0.0 - - typed-assert@1.0.9: {} + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + has-proto: 1.2.0 + is-typed-array: 1.1.15 + reflect.getprototypeof: 1.0.10 + + typed-array-length@1.0.7: + dependencies: + call-bind: 1.0.8 + for-each: 0.3.5 + gopd: 1.2.0 + is-typed-array: 1.1.15 + possible-typed-array-names: 1.1.0 + reflect.getprototypeof: 1.0.10 typedarray-to-buffer@3.1.5: dependencies: @@ -36436,73 +23887,44 @@ snapshots: typedarray@0.0.6: {} - typedoc@0.25.13(typescript@5.4.5): - dependencies: - lunr: 2.3.9 - marked: 4.3.0 - minimatch: 9.0.4 - shiki: 0.14.7 - typescript: 5.4.5 - typedoc@0.25.13(typescript@5.5.4): dependencies: lunr: 2.3.9 marked: 4.3.0 - minimatch: 9.0.4 + minimatch: 9.0.5 shiki: 0.14.7 typescript: 5.5.4 typescript@4.9.5: {} - typescript@5.4.2: {} - - typescript@5.4.5: {} - typescript@5.5.4: {} - ua-parser-js@0.7.37: {} - - ufo@1.5.4: {} - - uglify-js@3.17.4: + uglify-js@3.19.3: optional: true - uglify-js@3.4.10: - dependencies: - commander: 2.19.0 - source-map: 0.6.1 - - unbox-primitive@1.0.2: + unbox-primitive@1.1.0: dependencies: - call-bind: 1.0.7 - has-bigints: 1.0.2 - has-symbols: 1.0.3 - which-boxed-primitive: 1.0.2 + call-bound: 1.0.4 + has-bigints: 1.1.0 + has-symbols: 1.1.0 + which-boxed-primitive: 1.1.1 unc-path-regex@0.1.2: {} - undici-types@6.20.0: {} + undici-types@6.21.0: {} - unicode-canonical-property-names-ecmascript@2.0.0: {} + unicode-canonical-property-names-ecmascript@2.0.1: {} unicode-match-property-ecmascript@2.0.0: dependencies: - unicode-canonical-property-names-ecmascript: 2.0.0 - unicode-property-aliases-ecmascript: 2.1.0 + unicode-canonical-property-names-ecmascript: 2.0.1 + unicode-property-aliases-ecmascript: 2.2.0 - unicode-match-property-value-ecmascript@2.1.0: {} + unicode-match-property-value-ecmascript@2.2.1: {} - unicode-property-aliases-ecmascript@2.1.0: {} + unicode-property-aliases-ecmascript@2.2.0: {} - unicorn-magic@0.1.0: {} - - union@0.5.0: - dependencies: - qs: 6.12.1 - - unique-filename@1.1.1: - dependencies: - unique-slug: 2.0.2 + unicorn-magic@0.3.0: {} unique-filename@2.0.1: dependencies: @@ -36512,10 +23934,6 @@ snapshots: dependencies: unique-slug: 4.0.0 - unique-slug@2.0.2: - dependencies: - imurmurhash: 0.1.4 - unique-slug@3.0.0: dependencies: imurmurhash: 0.1.4 @@ -36524,7 +23942,7 @@ snapshots: dependencies: imurmurhash: 0.1.4 - unique-stream@2.3.1: + unique-stream@2.4.0: dependencies: json-stable-stringify-without-jsonify: 1.0.1 through2-filter: 3.0.0 @@ -36535,8 +23953,6 @@ snapshots: universal-user-agent@6.0.1: {} - universalify@0.1.2: {} - universalify@0.2.0: {} universalify@2.0.1: {} @@ -36545,48 +23961,25 @@ snapshots: upath@2.0.1: {} - update-browserslist-db@1.0.16(browserslist@4.23.0): + update-browserslist-db@1.1.4(browserslist@4.28.0): dependencies: - browserslist: 4.23.0 - escalade: 3.1.2 - picocolors: 1.0.1 - - update-browserslist-db@1.1.1(browserslist@4.24.2): - dependencies: - browserslist: 4.24.2 + browserslist: 4.28.0 escalade: 3.2.0 picocolors: 1.1.1 - upper-case@1.1.3: {} - uri-js@4.4.1: dependencies: punycode: 2.3.1 urix@0.1.0: {} - url-join@4.0.1: {} - url-parse@1.5.10: dependencies: querystringify: 2.2.0 requires-port: 1.0.0 - url@0.11.4: - dependencies: - punycode: 1.4.1 - qs: 6.13.0 - util-deprecate@1.0.2: {} - util@0.12.5: - dependencies: - inherits: 2.0.4 - is-arguments: 1.1.1 - is-generator-function: 1.0.10 - is-typed-array: 1.1.13 - which-typed-array: 1.1.15 - utila@0.4.0: {} utils-merge@1.0.1: {} @@ -36603,7 +23996,7 @@ snapshots: dependencies: '@types/istanbul-lib-coverage': 2.0.6 convert-source-map: 1.9.0 - source-map: 0.7.4 + source-map: 0.7.6 validate-npm-package-license@3.0.4: dependencies: @@ -36620,8 +24013,6 @@ snapshots: validate-npm-package-name@5.0.1: {} - validator@13.12.0: {} - value-or-function@3.0.0: {} vary@1.1.2: {} @@ -36640,7 +24031,7 @@ snapshots: is-valid-glob: 1.0.0 lazystream: 1.0.1 lead: 1.0.0 - object.assign: 4.1.5 + object.assign: 4.1.7 pumpify: 1.5.1 readable-stream: 2.3.8 remove-bom-buffer: 3.0.0 @@ -36671,184 +24062,56 @@ snapshots: remove-trailing-separator: 1.1.0 replace-ext: 1.0.1 - vite-node@1.6.0(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6): - dependencies: - cac: 6.7.14 - debug: 4.3.7 - pathe: 1.1.2 - picocolors: 1.0.1 - vite: 5.4.2(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6) - transitivePeerDependencies: - - '@types/node' - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vite-plugin-dts@3.9.1(@types/node@22.13.8)(rollup@4.22.4)(typescript@5.4.5)(vite@5.4.2(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6)): - dependencies: - '@microsoft/api-extractor': 7.43.0(@types/node@22.13.8) - '@rollup/pluginutils': 5.1.0(rollup@4.22.4) - '@vue/language-core': 1.8.27(typescript@5.4.5) - debug: 4.3.4 - kolorist: 1.8.0 - magic-string: 0.30.10 - typescript: 5.4.5 - vue-tsc: 1.8.27(typescript@5.4.5) - optionalDependencies: - vite: 5.4.2(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6) - transitivePeerDependencies: - - '@types/node' - - rollup - - supports-color - - vite-plugin-node-polyfills@0.21.0(rollup@4.22.4)(vite@5.4.2(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6)): - dependencies: - '@rollup/plugin-inject': 5.0.5(rollup@4.22.4) - node-stdlib-browser: 1.2.0 - vite: 5.4.2(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6) - transitivePeerDependencies: - - rollup - - vite-plugin-static-copy@1.0.6(vite@5.4.2(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6)): - dependencies: - chokidar: 3.6.0 - fast-glob: 3.3.2 - fs-extra: 11.2.0 - picocolors: 1.0.1 - vite: 5.4.2(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6) - - vite-plugin-vuetify@2.0.4(vite@5.4.2(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6))(vue@3.4.27(typescript@5.4.5))(vuetify@3.7.0): - dependencies: - '@vuetify/loader-shared': 2.0.3(vue@3.4.27(typescript@5.4.5))(vuetify@3.7.0) - debug: 4.3.4 - upath: 2.0.1 - vite: 5.4.2(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6) - vue: 3.4.27(typescript@5.4.5) - vuetify: 3.7.0(typescript@5.4.5)(vite-plugin-vuetify@2.0.4)(vue@3.4.27(typescript@5.4.5)) - transitivePeerDependencies: - - supports-color - - vite@5.4.2(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6): - dependencies: - esbuild: 0.21.5 - postcss: 8.4.41 - rollup: 4.21.0 - optionalDependencies: - '@types/node': 22.13.8 - fsevents: 2.3.3 - less: 4.2.0 - sass: 1.77.6 - stylus: 0.57.0 - terser: 5.31.6 - - vite@5.4.6(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6): - dependencies: - esbuild: 0.21.5 - postcss: 8.4.49 - rollup: 4.21.0 - optionalDependencies: - '@types/node': 22.13.8 - fsevents: 2.3.3 - less: 4.2.0 - sass: 1.77.6 - stylus: 0.57.0 - terser: 5.31.6 - - vitest@1.6.0(@types/node@22.13.8)(jsdom@24.1.1)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6): - dependencies: - '@vitest/expect': 1.6.0 - '@vitest/runner': 1.6.0 - '@vitest/snapshot': 1.6.0 - '@vitest/spy': 1.6.0 - '@vitest/utils': 1.6.0 - acorn-walk: 8.3.2 - chai: 4.4.1 - debug: 4.3.4 - execa: 8.0.1 - local-pkg: 0.5.0 - magic-string: 0.30.10 - pathe: 1.1.2 - picocolors: 1.0.1 - std-env: 3.7.0 - strip-literal: 2.1.0 - tinybench: 2.9.0 - tinypool: 0.8.4 - vite: 5.4.2(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6) - vite-node: 1.6.0(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6) - why-is-node-running: 2.3.0 - optionalDependencies: - '@types/node': 22.13.8 - jsdom: 24.1.1 - transitivePeerDependencies: - - less - - lightningcss - - sass - - sass-embedded - - stylus - - sugarss - - supports-color - - terser - - vm-browserify@1.1.2: {} - - void-elements@2.0.1: {} - vscode-oniguruma@1.7.0: {} vscode-textmate@8.0.0: {} - vscode-uri@3.0.8: {} - - vue-component-type-helpers@2.0.19: {} + vue-component-type-helpers@2.2.12: {} - vue-eslint-parser@9.4.2(eslint@8.57.0): + vue-eslint-parser@9.4.3(eslint@8.57.1): dependencies: - debug: 4.3.4 - eslint: 8.57.0 + debug: 4.4.3 + eslint: 8.57.1 eslint-scope: 7.2.2 eslint-visitor-keys: 3.4.3 espree: 9.6.1 - esquery: 1.5.0 + esquery: 1.6.0 lodash: 4.17.21 - semver: 7.6.2 + semver: 7.7.3 transitivePeerDependencies: - supports-color vue-hot-reload-api@2.3.4: {} - vue-jest@5.0.0-alpha.10(@babel/core@7.24.5)(babel-jest@27.5.1(@babel/core@7.24.5))(jest@27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)))(typescript@5.5.4)(vue@3.4.27(typescript@5.5.4)): + vue-jest@5.0.0-alpha.10(@babel/core@7.28.5)(babel-jest@27.5.1(@babel/core@7.28.5))(jest@27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4)))(typescript@5.5.4)(vue@3.5.25(typescript@5.5.4)): dependencies: - '@babel/core': 7.24.5 - '@babel/plugin-transform-modules-commonjs': 7.24.1(@babel/core@7.24.5) - babel-jest: 27.5.1(@babel/core@7.24.5) + '@babel/core': 7.28.5 + '@babel/plugin-transform-modules-commonjs': 7.27.1(@babel/core@7.28.5) + babel-jest: 27.5.1(@babel/core@7.28.5) chalk: 2.4.2 convert-source-map: 1.9.0 extract-from-css: 0.4.4 - jest: 27.5.1(node-notifier@8.0.2)(ts-node@10.9.2(@types/node@22.13.8)(typescript@5.5.4)) + jest: 27.5.1(ts-node@10.9.2(@types/node@22.19.1)(typescript@5.5.4)) source-map: 0.5.6 tsconfig: 7.0.0 - vue: 3.4.27(typescript@5.5.4) + vue: 3.5.25(typescript@5.5.4) optionalDependencies: typescript: 5.5.4 + transitivePeerDependencies: + - supports-color - vue-loader@15.11.1(@vue/compiler-sfc@3.4.27)(css-loader@6.11.0(webpack@5.91.0))(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(vue-template-compiler@2.7.16)(webpack@5.91.0): + vue-loader@15.11.1(@vue/compiler-sfc@3.5.25)(css-loader@6.11.0(webpack@5.103.0))(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.17.21)(prettier@2.8.8)(webpack@5.103.0): dependencies: '@vue/component-compiler-utils': 3.3.0(ejs@3.1.10)(handlebars@4.7.8)(lodash@4.17.21) - css-loader: 6.11.0(webpack@5.91.0) + css-loader: 6.11.0(webpack@5.103.0) hash-sum: 1.0.2 loader-utils: 1.4.2 vue-hot-reload-api: 2.3.4 vue-style-loader: 4.1.3 - webpack: 5.91.0(webpack-cli@5.1.4) + webpack: 5.103.0 optionalDependencies: - '@vue/compiler-sfc': 3.4.27 + '@vue/compiler-sfc': 3.5.25 prettier: 2.8.8 - vue-template-compiler: 2.7.16 transitivePeerDependencies: - arc-templates - atpl @@ -36904,74 +24167,33 @@ snapshots: - walrus - whiskers - vue-loader@17.4.2(@vue/compiler-sfc@3.4.27)(vue@3.4.27(typescript@5.5.4))(webpack@5.91.0): + vue-loader@17.4.2(@vue/compiler-sfc@3.5.25)(vue@3.5.25(typescript@5.5.4))(webpack@5.103.0): dependencies: chalk: 4.1.2 hash-sum: 2.0.0 - watchpack: 2.4.1 - webpack: 5.91.0(webpack-cli@5.1.4) + watchpack: 2.4.4 + webpack: 5.103.0 optionalDependencies: - '@vue/compiler-sfc': 3.4.27 - vue: 3.4.27(typescript@5.5.4) + '@vue/compiler-sfc': 3.5.25 + vue: 3.5.25(typescript@5.5.4) vue-style-loader@4.1.3: dependencies: hash-sum: 1.0.2 loader-utils: 1.4.2 - vue-template-compiler@2.7.16: - dependencies: - de-indent: 1.0.2 - he: 1.2.0 - vue-template-es2015-compiler@1.9.1: {} - vue-tsc@1.8.27(typescript@5.4.5): - dependencies: - '@volar/typescript': 1.11.1 - '@vue/language-core': 1.8.27(typescript@5.4.5) - semver: 7.6.2 - typescript: 5.4.5 - - vue-tsc@2.0.29(typescript@5.4.5): - dependencies: - '@volar/typescript': 2.4.0 - '@vue/language-core': 2.0.29(typescript@5.4.5) - semver: 7.6.2 - typescript: 5.4.5 - - vue@2.7.16: - dependencies: - '@vue/compiler-sfc': 2.7.16 - csstype: 3.1.3 - - vue@3.4.27(typescript@5.4.5): - dependencies: - '@vue/compiler-dom': 3.4.27 - '@vue/compiler-sfc': 3.4.27 - '@vue/runtime-dom': 3.4.27 - '@vue/server-renderer': 3.4.27(vue@3.4.27(typescript@5.4.5)) - '@vue/shared': 3.4.27 - optionalDependencies: - typescript: 5.4.5 - - vue@3.4.27(typescript@5.5.4): + vue@3.5.25(typescript@5.5.4): dependencies: - '@vue/compiler-dom': 3.4.27 - '@vue/compiler-sfc': 3.4.27 - '@vue/runtime-dom': 3.4.27 - '@vue/server-renderer': 3.4.27(vue@3.4.27(typescript@5.5.4)) - '@vue/shared': 3.4.27 + '@vue/compiler-dom': 3.5.25 + '@vue/compiler-sfc': 3.5.25 + '@vue/runtime-dom': 3.5.25 + '@vue/server-renderer': 3.5.25(vue@3.5.25(typescript@5.5.4)) + '@vue/shared': 3.5.25 optionalDependencies: typescript: 5.5.4 - vuetify@3.7.0(typescript@5.4.5)(vite-plugin-vuetify@2.0.4)(vue@3.4.27(typescript@5.4.5)): - dependencies: - vue: 3.4.27(typescript@5.4.5) - optionalDependencies: - typescript: 5.4.5 - vite-plugin-vuetify: 2.0.4(vite@5.4.2(@types/node@22.13.8)(less@4.2.0)(sass@1.77.6)(stylus@0.57.0)(terser@5.31.6))(vue@3.4.27(typescript@5.4.5))(vuetify@3.7.0) - w3c-hr-time@1.0.2: dependencies: browser-process-hrtime: 1.0.0 @@ -36988,17 +24210,13 @@ snapshots: dependencies: xml-name-validator: 4.0.0 - w3c-xmlserializer@5.0.0: - dependencies: - xml-name-validator: 5.0.0 - walk-up-path@1.0.0: {} walker@1.0.8: dependencies: makeerror: 1.0.12 - watchpack@2.4.1: + watchpack@2.4.4: dependencies: glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 @@ -37011,27 +24229,6 @@ snapshots: dependencies: defaults: 1.0.4 - weak-lru-cache@1.2.2: {} - - webdriver-js-extender@2.1.0: - dependencies: - '@types/selenium-webdriver': 3.0.26 - selenium-webdriver: 3.6.0 - - webdriver-manager@12.1.9: - dependencies: - adm-zip: 0.5.12 - chalk: 1.1.3 - del: 2.2.2 - glob: 7.2.3 - ini: 1.3.8 - minimist: 1.2.8 - q: 1.4.1 - request: 2.88.2 - rimraf: 2.7.1 - semver: 5.7.2 - xml2js: 0.4.23 - webidl-conversions@3.0.1: {} webidl-conversions@5.0.0: {} @@ -37043,17 +24240,17 @@ snapshots: webpack-bundle-analyzer@4.10.2: dependencies: '@discoveryjs/json-ext': 0.5.7 - acorn: 8.11.3 - acorn-walk: 8.3.2 + acorn: 8.15.0 + acorn-walk: 8.3.4 commander: 7.2.0 debounce: 1.2.1 escape-string-regexp: 4.0.0 gzip-size: 6.0.0 html-escaper: 2.0.2 opener: 1.5.2 - picocolors: 1.0.1 + picocolors: 1.1.1 sirv: 2.0.4 - ws: 7.5.9 + ws: 7.5.10 transitivePeerDependencies: - bufferutil - utf-8-validate @@ -37063,286 +24260,92 @@ snapshots: deepmerge: 1.5.2 javascript-stringify: 2.1.0 - webpack-cli@5.1.4(webpack-dev-server@4.15.2)(webpack@5.91.0): - dependencies: - '@discoveryjs/json-ext': 0.5.7 - '@webpack-cli/configtest': 2.1.1(webpack-cli@5.1.4)(webpack@5.91.0) - '@webpack-cli/info': 2.0.2(webpack-cli@5.1.4)(webpack@5.91.0) - '@webpack-cli/serve': 2.0.5(webpack-cli@5.1.4)(webpack-dev-server@4.15.2)(webpack@5.91.0) - colorette: 2.0.20 - commander: 10.0.1 - cross-spawn: 7.0.3 - envinfo: 7.13.0 - fastest-levenshtein: 1.0.16 - import-local: 3.1.0 - interpret: 3.1.1 - rechoir: 0.8.0 - webpack: 5.91.0(webpack-cli@5.1.4) - webpack-merge: 5.10.0 - optionalDependencies: - webpack-dev-server: 4.15.2(webpack-cli@5.1.4)(webpack@5.91.0) - - webpack-dev-middleware@5.3.4(webpack@5.91.0): + webpack-dev-middleware@5.3.4(webpack@5.103.0): dependencies: colorette: 2.0.20 memfs: 3.5.3 mime-types: 2.1.35 range-parser: 1.2.1 - schema-utils: 4.2.0 - webpack: 5.91.0(webpack-cli@5.1.4) - - webpack-dev-middleware@7.4.2(webpack@5.94.0(esbuild@0.23.0)): - dependencies: - colorette: 2.0.20 - memfs: 4.14.1 - mime-types: 2.1.35 - on-finished: 2.4.1 - range-parser: 1.2.1 - schema-utils: 4.2.0 - optionalDependencies: - webpack: 5.94.0(esbuild@0.23.0) - - webpack-dev-server@4.15.2(debug@4.3.4)(webpack@5.91.0): - dependencies: - '@types/bonjour': 3.5.13 - '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.21 - '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.7 - '@types/sockjs': 0.3.36 - '@types/ws': 8.5.10 - ansi-html-community: 0.0.8 - bonjour-service: 1.2.1 - chokidar: 3.6.0 - colorette: 2.0.20 - compression: 1.7.4 - connect-history-api-fallback: 2.0.0 - default-gateway: 6.0.3 - express: 4.19.2 - graceful-fs: 4.2.11 - html-entities: 2.5.2 - http-proxy-middleware: 2.0.6(@types/express@4.17.21)(debug@4.3.4) - ipaddr.js: 2.2.0 - launch-editor: 2.6.1 - open: 8.4.2 - p-retry: 4.6.2 - rimraf: 3.0.2 - schema-utils: 4.2.0 - selfsigned: 2.4.1 - serve-index: 1.9.1 - sockjs: 0.3.24 - spdy: 4.0.2 - webpack-dev-middleware: 5.3.4(webpack@5.91.0) - ws: 8.17.0 - optionalDependencies: - webpack: 5.91.0(webpack-cli@5.1.4) - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate + schema-utils: 4.3.3 + webpack: 5.103.0 - webpack-dev-server@4.15.2(webpack-cli@5.1.4)(webpack@5.91.0): + webpack-dev-server@4.15.2(debug@4.4.3)(webpack@5.103.0): dependencies: '@types/bonjour': 3.5.13 '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.21 + '@types/express': 4.17.25 '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.7 + '@types/serve-static': 1.15.10 '@types/sockjs': 0.3.36 - '@types/ws': 8.5.10 + '@types/ws': 8.18.1 ansi-html-community: 0.0.8 - bonjour-service: 1.2.1 + bonjour-service: 1.3.0 chokidar: 3.6.0 colorette: 2.0.20 - compression: 1.7.4 + compression: 1.8.1 connect-history-api-fallback: 2.0.0 default-gateway: 6.0.3 - express: 4.19.2 + express: 4.21.2 graceful-fs: 4.2.11 - html-entities: 2.5.2 - http-proxy-middleware: 2.0.6(@types/express@4.17.21) + html-entities: 2.6.0 + http-proxy-middleware: 2.0.9(@types/express@4.17.25)(debug@4.4.3) ipaddr.js: 2.2.0 - launch-editor: 2.6.1 + launch-editor: 2.12.0 open: 8.4.2 p-retry: 4.6.2 rimraf: 3.0.2 - schema-utils: 4.2.0 - selfsigned: 2.4.1 - serve-index: 1.9.1 - sockjs: 0.3.24 - spdy: 4.0.2 - webpack-dev-middleware: 5.3.4(webpack@5.91.0) - ws: 8.17.0 - optionalDependencies: - webpack: 5.91.0(webpack-cli@5.1.4) - webpack-cli: 5.1.4(webpack-dev-server@4.15.2)(webpack@5.91.0) - transitivePeerDependencies: - - bufferutil - - debug - - supports-color - - utf-8-validate - - webpack-dev-server@5.0.4(webpack@5.94.0(esbuild@0.23.0)): - dependencies: - '@types/bonjour': 3.5.13 - '@types/connect-history-api-fallback': 1.5.4 - '@types/express': 4.17.21 - '@types/serve-index': 1.9.4 - '@types/serve-static': 1.15.7 - '@types/sockjs': 0.3.36 - '@types/ws': 8.5.10 - ansi-html-community: 0.0.8 - bonjour-service: 1.2.1 - chokidar: 3.6.0 - colorette: 2.0.20 - compression: 1.7.4 - connect-history-api-fallback: 2.0.0 - default-gateway: 6.0.3 - express: 4.19.2 - graceful-fs: 4.2.11 - html-entities: 2.5.2 - http-proxy-middleware: 2.0.6(@types/express@4.17.21) - ipaddr.js: 2.2.0 - launch-editor: 2.6.1 - open: 10.1.0 - p-retry: 6.2.1 - rimraf: 5.0.10 - schema-utils: 4.2.0 + schema-utils: 4.3.3 selfsigned: 2.4.1 serve-index: 1.9.1 sockjs: 0.3.24 spdy: 4.0.2 - webpack-dev-middleware: 7.4.2(webpack@5.94.0(esbuild@0.23.0)) - ws: 8.18.0 + webpack-dev-middleware: 5.3.4(webpack@5.103.0) + ws: 8.18.3 optionalDependencies: - webpack: 5.94.0(esbuild@0.23.0) + webpack: 5.103.0 transitivePeerDependencies: - bufferutil - debug - supports-color - utf-8-validate - webpack-log@2.0.0: - dependencies: - ansi-colors: 3.2.4 - uuid: 3.4.0 - - webpack-merge@4.2.2: - dependencies: - lodash: 4.17.21 - webpack-merge@5.10.0: dependencies: clone-deep: 4.0.1 flat: 5.0.2 wildcard: 2.0.1 - webpack-merge@6.0.1: - dependencies: - clone-deep: 4.0.1 - flat: 5.0.2 - wildcard: 2.0.1 - - webpack-sources@3.2.3: {} - - webpack-subresource-integrity@5.1.0(html-webpack-plugin@5.6.0(webpack@5.91.0))(webpack@5.94.0(esbuild@0.23.0)): - dependencies: - typed-assert: 1.0.9 - webpack: 5.94.0(esbuild@0.23.0) - optionalDependencies: - html-webpack-plugin: 5.6.0(webpack@5.91.0) + webpack-sources@3.3.3: {} webpack-virtual-modules@0.4.6: {} - webpack@5.91.0(webpack-cli@5.1.4): + webpack@5.103.0: dependencies: '@types/eslint-scope': 3.7.7 - '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/wasm-edit': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.11.3 - acorn-import-assertions: 1.9.0(acorn@8.11.3) - browserslist: 4.23.0 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.16.1 - es-module-lexer: 1.5.3 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.91.0) - watchpack: 2.4.1 - webpack-sources: 3.2.3 - optionalDependencies: - webpack-cli: 5.1.4(webpack-dev-server@4.15.2)(webpack@5.91.0) - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack@5.94.0: - dependencies: - '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/wasm-edit': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.11.3 - acorn-import-attributes: 1.9.5(acorn@8.11.3) - browserslist: 4.23.0 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.17.1 - es-module-lexer: 1.5.3 - eslint-scope: 5.1.1 - events: 3.3.0 - glob-to-regexp: 0.4.1 - graceful-fs: 4.2.11 - json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 - mime-types: 2.1.35 - neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(webpack@5.94.0) - watchpack: 2.4.1 - webpack-sources: 3.2.3 - transitivePeerDependencies: - - '@swc/core' - - esbuild - - uglify-js - - webpack@5.94.0(esbuild@0.23.0): - dependencies: - '@types/estree': 1.0.5 - '@webassemblyjs/ast': 1.12.1 - '@webassemblyjs/wasm-edit': 1.12.1 - '@webassemblyjs/wasm-parser': 1.12.1 - acorn: 8.11.3 - acorn-import-attributes: 1.9.5(acorn@8.11.3) - browserslist: 4.23.0 - chrome-trace-event: 1.0.3 - enhanced-resolve: 5.17.1 - es-module-lexer: 1.5.3 + '@types/estree': 1.0.8 + '@types/json-schema': 7.0.15 + '@webassemblyjs/ast': 1.14.1 + '@webassemblyjs/wasm-edit': 1.14.1 + '@webassemblyjs/wasm-parser': 1.14.1 + acorn: 8.15.0 + acorn-import-phases: 1.0.4(acorn@8.15.0) + browserslist: 4.28.0 + chrome-trace-event: 1.0.4 + enhanced-resolve: 5.18.3 + es-module-lexer: 1.7.0 eslint-scope: 5.1.1 events: 3.3.0 glob-to-regexp: 0.4.1 graceful-fs: 4.2.11 json-parse-even-better-errors: 2.3.1 - loader-runner: 4.3.0 + loader-runner: 4.3.1 mime-types: 2.1.35 neo-async: 2.6.2 - schema-utils: 3.3.0 - tapable: 2.2.1 - terser-webpack-plugin: 5.3.10(esbuild@0.23.0)(webpack@5.94.0(esbuild@0.23.0)) - watchpack: 2.4.1 - webpack-sources: 3.2.3 + schema-utils: 4.3.3 + tapable: 2.3.0 + terser-webpack-plugin: 5.3.14(webpack@5.103.0) + watchpack: 2.4.4 + webpack-sources: 3.3.3 transitivePeerDependencies: - '@swc/core' - esbuild @@ -37350,7 +24353,7 @@ snapshots: websocket-driver@0.7.4: dependencies: - http-parser-js: 0.5.8 + http-parser-js: 0.5.10 safe-buffer: 5.2.1 websocket-extensions: 0.1.4 @@ -37366,18 +24369,12 @@ snapshots: dependencies: iconv-lite: 0.6.3 - whatwg-encoding@3.1.1: - dependencies: - iconv-lite: 0.6.3 - whatwg-fetch@3.6.20: {} whatwg-mimetype@2.3.0: {} whatwg-mimetype@3.0.0: {} - whatwg-mimetype@4.0.0: {} - whatwg-url@10.0.0: dependencies: tr46: 3.0.0 @@ -37393,11 +24390,6 @@ snapshots: tr46: 4.1.1 webidl-conversions: 7.0.0 - whatwg-url@14.0.0: - dependencies: - tr46: 5.0.0 - webidl-conversions: 7.0.0 - whatwg-url@5.0.0: dependencies: tr46: 0.0.3 @@ -37409,44 +24401,47 @@ snapshots: tr46: 2.1.0 webidl-conversions: 6.1.0 - which-boxed-primitive@1.0.2: + which-boxed-primitive@1.1.1: dependencies: - is-bigint: 1.0.4 - is-boolean-object: 1.1.2 - is-number-object: 1.0.7 - is-string: 1.0.7 - is-symbol: 1.0.4 + is-bigint: 1.1.0 + is-boolean-object: 1.2.2 + is-number-object: 1.1.1 + is-string: 1.1.1 + is-symbol: 1.1.1 - which-builtin-type@1.1.3: + which-builtin-type@1.2.1: dependencies: - function.prototype.name: 1.1.6 + call-bound: 1.0.4 + function.prototype.name: 1.1.8 has-tostringtag: 1.0.2 - is-async-function: 2.0.0 - is-date-object: 1.0.5 - is-finalizationregistry: 1.0.2 - is-generator-function: 1.0.10 - is-regex: 1.1.4 - is-weakref: 1.0.2 + is-async-function: 2.1.1 + is-date-object: 1.1.0 + is-finalizationregistry: 1.1.1 + is-generator-function: 1.1.2 + is-regex: 1.2.1 + is-weakref: 1.1.1 isarray: 2.0.5 - which-boxed-primitive: 1.0.2 + which-boxed-primitive: 1.1.1 which-collection: 1.0.2 - which-typed-array: 1.1.15 + which-typed-array: 1.1.19 which-collection@1.0.2: dependencies: is-map: 2.0.3 is-set: 2.0.3 is-weakmap: 2.0.2 - is-weakset: 2.0.3 + is-weakset: 2.0.4 which-module@2.0.1: {} - which-typed-array@1.1.15: + which-typed-array@1.1.19: dependencies: available-typed-arrays: 1.0.7 - call-bind: 1.0.7 - for-each: 0.3.3 - gopd: 1.0.1 + call-bind: 1.0.8 + call-bound: 1.0.4 + for-each: 0.3.5 + get-proto: 1.0.1 + gopd: 1.2.0 has-tostringtag: 1.0.2 which@1.3.1: @@ -37465,11 +24460,6 @@ snapshots: dependencies: isexe: 3.1.1 - why-is-node-running@2.3.0: - dependencies: - siginfo: 2.0.0 - stackback: 0.0.2 - wide-align@1.1.3: dependencies: string-width: 2.1.1 @@ -37511,21 +24501,21 @@ snapshots: wrap-ansi@8.1.0: dependencies: - ansi-styles: 6.2.1 + ansi-styles: 6.2.3 string-width: 5.1.2 - strip-ansi: 7.1.0 + strip-ansi: 7.1.2 - wrap-ansi@9.0.0: + wrap-ansi@9.0.2: dependencies: - ansi-styles: 6.2.1 - string-width: 7.1.0 - strip-ansi: 7.1.0 + ansi-styles: 6.2.3 + string-width: 7.2.0 + strip-ansi: 7.1.2 wrappy@1.0.2: {} write-file-atomic@2.4.3: dependencies: - graceful-fs: 4.2.11 + graceful-fs: 4.2.10 imurmurhash: 0.1.4 signal-exit: 3.0.7 @@ -37546,6 +24536,11 @@ snapshots: imurmurhash: 0.1.4 signal-exit: 4.1.0 + write-file-atomic@6.0.0: + dependencies: + imurmurhash: 0.1.4 + signal-exit: 4.1.0 + write-json-file@3.2.0: dependencies: detect-indent: 5.0.0 @@ -37561,27 +24556,14 @@ snapshots: type-fest: 0.4.1 write-json-file: 3.2.0 - ws@7.5.9: {} - - ws@8.11.0: {} + ws@7.5.10: {} - ws@8.17.0: {} - - ws@8.18.0: {} + ws@8.18.3: {} xml-name-validator@3.0.0: {} xml-name-validator@4.0.0: {} - xml-name-validator@5.0.0: {} - - xml2js@0.4.23: - dependencies: - sax: 1.3.0 - xmlbuilder: 11.0.1 - - xmlbuilder@11.0.1: {} - xmlchars@2.2.0: {} xtend@4.0.2: {} @@ -37596,6 +24578,8 @@ snapshots: yallist@4.0.0: {} + yallist@5.0.0: {} + yaml@1.10.2: {} yargs-parser@13.1.2: @@ -37652,7 +24636,7 @@ snapshots: yargs@16.2.0: dependencies: cliui: 7.0.4 - escalade: 3.1.2 + escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 @@ -37662,7 +24646,7 @@ snapshots: yargs@17.7.2: dependencies: cliui: 8.0.1 - escalade: 3.1.2 + escalade: 3.2.0 get-caller-file: 2.0.5 require-directory: 2.1.1 string-width: 4.2.3 @@ -37673,16 +24657,6 @@ snapshots: yocto-queue@0.1.0: {} - yocto-queue@1.0.0: {} - - yoctocolors-cjs@2.1.2: {} - - z-schema@5.0.5: - dependencies: - lodash.get: 4.4.2 - lodash.isequal: 4.5.0 - validator: 13.12.0 - optionalDependencies: - commander: 9.5.0 + yoctocolors-cjs@2.1.3: {} zone.js@0.14.10: {} diff --git a/pnpm-workspace.yaml b/pnpm-workspace.yaml index 18ec407efc..95c957852b 100644 --- a/pnpm-workspace.yaml +++ b/pnpm-workspace.yaml @@ -1,2 +1,12 @@ packages: - - 'packages/*' + - packages/* +onlyBuiltDependencies: + - '@parcel/watcher' + - core-js + - core-js-pure + - esbuild + - lmdb + - msgpackr-extract + - nice-napi + - nodent-runtime + - nx