From 516717b7c79e1b038b475e33d710973da8233074 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Mon, 11 Sep 2023 12:23:02 +0200 Subject: [PATCH 01/43] add missing dev deps --- package.json | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/package.json b/package.json index fd23834e5..fd41d2208 100644 --- a/package.json +++ b/package.json @@ -31,14 +31,19 @@ "@types/q": "^1.5.6", "@typescript-eslint/eslint-plugin": "^6.7.5", "@typescript-eslint/parser": "^6.7.5", + "autoprefixer": "^10.4.15", "browserslist-config-enonic": "^1.0.7", "circular-dependency-plugin": "^5.2.2", + "css-loader": "^6.8.1", "cssnano": "^6.0.1", "enonic-admin-artifacts": "^1.8.5", "eslint": "^8.51.0", + "less-loader": "^11.1.3", "mini-css-extract-plugin": "^2.7.6", "npm-run-all": "^4.1.5", "postcss-loader": "^7.3.3", + "postcss-normalize": "^10.0.1", + "postcss-sort-media-queries": "^5.2.0", "source-map-loader": "^4.0.1", "swc-loader": "^0.2.3", "terser-webpack-plugin": "^5.3.9", From 7492431386092eff27ad18f69e013ebc72e4292e Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Mon, 11 Sep 2023 15:21:35 +0200 Subject: [PATCH 02/43] Replace webpack with lessc, postcss and tsup --- build.gradle | 35 ++++++++++++++----- package.json | 16 ++++++--- postcss.config.js | 16 +++++++-- .../resources/assets/js/app/UserAppPanel.ts | 2 +- .../assets/js/app/browse/UserItemsTreeGrid.ts | 2 +- .../js/app/browse/UserTreeGridActions.ts | 2 +- .../js/app/create/UserItemTypesTreeGrid.ts | 2 +- .../AuthApplicationLoader.ts | 2 +- .../AuthApplicationSelectedOptionView.ts | 2 +- .../AuthApplicationSelector.ts | 2 +- .../assets/js/app/principal/IdProvider.ts | 2 +- .../js/app/principal/PrincipalLoader.ts | 2 +- .../assets/js/app/report/RepositoryLoader.ts | 2 +- .../js/app/view/UserItemStatisticsPanel.ts | 2 +- .../assets/js/app/wizard/GroupWizardPanel.ts | 2 +- .../app/wizard/IdProviderWizardDataLoader.ts | 2 +- .../js/app/wizard/IdProviderWizardPanel.ts | 2 +- .../js/app/wizard/MembersWizardPanel.ts | 2 +- .../js/app/wizard/MembersWizardStepForm.ts | 2 +- .../js/app/wizard/NewPublicKeyDialog.ts | 2 +- .../app/wizard/PrincipalWizardDataLoader.ts | 2 +- .../js/app/wizard/PrincipalWizardPanel.ts | 2 +- .../js/app/wizard/UserItemWizardPanel.ts | 2 +- .../assets/js/app/wizard/UserWizardPanel.ts | 2 +- .../assets/js/graphql/GraphQlRequest.ts | 2 +- .../principal/user/AddPublicKeyRequest.ts | 2 +- src/main/resources/assets/styles/main.less | 4 ++- src/main/resources/assets/tsconfig.json | 26 ++++++++++++++ tsup.config.ts | 21 +++++++++++ 29 files changed, 125 insertions(+), 39 deletions(-) create mode 100644 src/main/resources/assets/tsconfig.json create mode 100644 tsup.config.ts diff --git a/build.gradle b/build.gradle index 9dd1c8832..4d508eaf8 100644 --- a/build.gradle +++ b/build.gradle @@ -62,6 +62,16 @@ repositories { xp.enonicRepo( 'dev' ) } +tasks.withType(Copy) { + includeEmptyDirs = false +} + +task bunInstall( type: NpxTask ) { + // Running this should not create a package-lock.json file + command = 'bun' + args = ['install'] +} + tasks.register('lint', NpmTask) { dependsOn ( 'npmInstall' ) group "verification" @@ -71,30 +81,37 @@ tasks.register('lint', NpmTask) { check.dependsOn lint -tasks.register('webpack', NpmTask) { +tasks.register('npmBuild', NpmTask) { dependsOn( 'npmInstall' ) - environment = ['NODE_ENV': nodeEnvironment()] + environment = [ + 'FORCE_COLOR': 'true', + 'LOG_LEVEL_FROM_GRADLE': gradle.startParameter.logLevel.toString(), + 'NODE_ENV': nodeEnvironment() + ] description = 'Build UI resources (ts, css, etc).' - args = ['run', 'build'] + args = ['run', '--silent', 'build'] inputs.dir '.xp/dev' - inputs.dir 'src/main/resources/assets' - inputs.file 'webpack.config.js' + inputs.dir 'src/main/resources' outputs.dir "$buildDir/build/resources/main" + inputs.file 'tsup.config.ts' } -jar { +processResources { exclude 'assets/**/*.ts' - exclude 'assets/**/*.less' - exclude 'assets/styles/*.js' + exclude 'assets/**/*.less' // lessc and postcss will handle this + exclude 'assets/**/*.woff' // postcss-url will copy + exclude 'assets/**/*.woff2' // postcss-url will copy if ( isProd() ) { exclude 'assets/**/*.map' } +} +jar { outputs.dir "$buildDir/resources/main" - dependsOn( 'webpack', 'javadoc', 'test' ) + dependsOn( 'npmBuild', 'javadoc', 'test' ) } test { diff --git a/package.json b/package.json index fd41d2208..9a21d83d7 100644 --- a/package.json +++ b/package.json @@ -8,11 +8,14 @@ "url": "https://github.com/enonic/app-users" }, "scripts": { - "build": "run-p build:js build:typecheck", - "build:js": "webpack --color --stats-error-details", - "build:typecheck": "tsc --pretty --skipLibCheck --noEmit", + "build": "concurrently -c auto -g --timings npm:build:*", + "build:css": "postcss -o build/resources/main/assets/styles/main.css build/less/main.css", + "build:js": "tsup", + "check:types": "tsc --pretty --skipLibCheck --noEmit", + "fix": "eslint --fix **/*.ts --cache", + "less": "lessc --source-map src/main/resources/assets/styles/main.less build/less/main.css", "lint": "eslint **/*.ts --quiet --cache", - "fix": "eslint --fix **/*.ts --cache" + "prebuild:css": "npm run less" }, "dependencies": { "@enonic/lib-admin-ui": "file:./.xp/dev/lib-admin-ui", @@ -34,19 +37,24 @@ "autoprefixer": "^10.4.15", "browserslist-config-enonic": "^1.0.7", "circular-dependency-plugin": "^5.2.2", + "concurrently": "^8.2.1", "css-loader": "^6.8.1", "cssnano": "^6.0.1", "enonic-admin-artifacts": "^1.8.5", "eslint": "^8.51.0", + "less": "^4.2.0", "less-loader": "^11.1.3", "mini-css-extract-plugin": "^2.7.6", "npm-run-all": "^4.1.5", + "postcss-cli": "^10.1.0", "postcss-loader": "^7.3.3", "postcss-normalize": "^10.0.1", "postcss-sort-media-queries": "^5.2.0", + "postcss-url": "^10.1.3", "source-map-loader": "^4.0.1", "swc-loader": "^0.2.3", "terser-webpack-plugin": "^5.3.9", + "tsup": "^7.2.0", "typescript": "^5.2.2", "webpack": "^5.89.0", "webpack-cli": "^5.1.4" diff --git a/postcss.config.js b/postcss.config.js index e65215bba..054ce20a8 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -1,12 +1,24 @@ +const path = require('path'); + const isProd = process.env.NODE_ENV === 'production'; const plugins = Object.assign( { 'postcss-normalize': {}, autoprefixer: {}, - 'postcss-sort-media-queries': {sort: 'desktop-first'} + 'postcss-sort-media-queries': {sort: 'desktop-first'}, + 'postcss-url': { + basePath: path.resolve('src/main/resources/assets/icons'), + assetsPath: '../icons/', + url: 'copy' // Remember to skip woff and woff2 files in build.gradle + // url: 'inline' // base64 data url inlines the fonts? + // url: 'rebase' // only manipulates the urls? + }, }, isProd ? {cssnano: {}} : {} ); -module.exports = {plugins}; +module.exports = { + map: !isProd, + plugins +}; diff --git a/src/main/resources/assets/js/app/UserAppPanel.ts b/src/main/resources/assets/js/app/UserAppPanel.ts index d0c24e2e2..5e1daf724 100644 --- a/src/main/resources/assets/js/app/UserAppPanel.ts +++ b/src/main/resources/assets/js/app/UserAppPanel.ts @@ -1,4 +1,4 @@ -import * as Q from 'q'; +import Q from 'q'; import {UserTreeGridItem, UserTreeGridItemBuilder, UserTreeGridItemType} from './browse/UserTreeGridItem'; import {UserItemWizardPanel} from './wizard/UserItemWizardPanel'; import {IdProviderWizardPanel} from './wizard/IdProviderWizardPanel'; diff --git a/src/main/resources/assets/js/app/browse/UserItemsTreeGrid.ts b/src/main/resources/assets/js/app/browse/UserItemsTreeGrid.ts index 8b5c720eb..0390db225 100644 --- a/src/main/resources/assets/js/app/browse/UserItemsTreeGrid.ts +++ b/src/main/resources/assets/js/app/browse/UserItemsTreeGrid.ts @@ -1,4 +1,4 @@ -import * as Q from 'q'; +import Q from 'q'; import {UserTreeGridItem, UserTreeGridItemBuilder, UserTreeGridItemType} from './UserTreeGridItem'; import {UserTreeGridActions} from './UserTreeGridActions'; import {EditPrincipalEvent} from './EditPrincipalEvent'; diff --git a/src/main/resources/assets/js/app/browse/UserTreeGridActions.ts b/src/main/resources/assets/js/app/browse/UserTreeGridActions.ts index b4c8ff090..341412a96 100644 --- a/src/main/resources/assets/js/app/browse/UserTreeGridActions.ts +++ b/src/main/resources/assets/js/app/browse/UserTreeGridActions.ts @@ -1,4 +1,4 @@ -import * as Q from 'q'; +import Q from 'q'; import {UserTreeGridItem, UserTreeGridItemType} from './UserTreeGridItem'; import {SyncPrincipalAction} from './action/SyncPrincipalAction'; import {DeletePrincipalAction} from './action/DeletePrincipalAction'; diff --git a/src/main/resources/assets/js/app/create/UserItemTypesTreeGrid.ts b/src/main/resources/assets/js/app/create/UserItemTypesTreeGrid.ts index b7387045d..26fb32504 100644 --- a/src/main/resources/assets/js/app/create/UserItemTypesTreeGrid.ts +++ b/src/main/resources/assets/js/app/create/UserItemTypesTreeGrid.ts @@ -1,4 +1,4 @@ -import * as Q from 'q'; +import Q from 'q'; import {UserTypeTreeGridItem, UserTypeTreeGridItemBuilder} from './UserTypeTreeGridItem'; import {UserItemTypesRowFormatter} from './UserItemTypesRowFormatter'; import {NewPrincipalEvent} from '../browse/NewPrincipalEvent'; diff --git a/src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationLoader.ts b/src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationLoader.ts index 5cd460034..6be157b69 100644 --- a/src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationLoader.ts +++ b/src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationLoader.ts @@ -1,4 +1,4 @@ -import * as Q from 'q'; +import Q from 'q'; import {BaseLoader} from '@enonic/lib-admin-ui/util/loader/BaseLoader'; import {Application} from '@enonic/lib-admin-ui/application/Application'; import {ListIdProviderApplicationsRequest} from '../../resource/ListIdProviderApplicationsRequest'; diff --git a/src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionView.ts b/src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionView.ts index 2be7d6f0b..8d051ff98 100644 --- a/src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionView.ts +++ b/src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionView.ts @@ -1,4 +1,4 @@ -import * as Q from 'q'; +import Q from 'q'; import {PropertyTree} from '@enonic/lib-admin-ui/data/PropertyTree'; import {Option} from '@enonic/lib-admin-ui/ui/selector/Option'; import {FormView} from '@enonic/lib-admin-ui/form/FormView'; diff --git a/src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationSelector.ts b/src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationSelector.ts index 148fcd341..9ed98c616 100644 --- a/src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationSelector.ts +++ b/src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationSelector.ts @@ -1,4 +1,4 @@ -import * as Q from 'q'; +import Q from 'q'; import {PropertyArray} from '@enonic/lib-admin-ui/data/PropertyArray'; import {FormView} from '@enonic/lib-admin-ui/form/FormView'; import {Value} from '@enonic/lib-admin-ui/data/Value'; diff --git a/src/main/resources/assets/js/app/principal/IdProvider.ts b/src/main/resources/assets/js/app/principal/IdProvider.ts index 8733492fc..77c57e96c 100644 --- a/src/main/resources/assets/js/app/principal/IdProvider.ts +++ b/src/main/resources/assets/js/app/principal/IdProvider.ts @@ -5,7 +5,7 @@ import {IdProviderKey} from '@enonic/lib-admin-ui/security/IdProviderKey'; import {IdProviderMode} from '@enonic/lib-admin-ui/security/IdProviderMode'; import {PrincipalType} from '@enonic/lib-admin-ui/security/PrincipalType'; import {UserItem, UserItemBuilder} from '@enonic/lib-admin-ui/security/UserItem'; -import * as Q from 'q'; +import Q from 'q'; import {ListPrincipalsData, ListPrincipalsRequest} from '../../graphql/principal/ListPrincipalsRequest'; import {IdProviderAccessControlList} from '../access/IdProviderAccessControlList'; import {IdProviderJson} from './IdProviderJson'; diff --git a/src/main/resources/assets/js/app/principal/PrincipalLoader.ts b/src/main/resources/assets/js/app/principal/PrincipalLoader.ts index 51ef91a6d..c70a08e78 100644 --- a/src/main/resources/assets/js/app/principal/PrincipalLoader.ts +++ b/src/main/resources/assets/js/app/principal/PrincipalLoader.ts @@ -1,4 +1,4 @@ -import * as Q from 'q'; +import Q from 'q'; import {PrincipalLoader as BasePrincipalLoader} from '@enonic/lib-admin-ui/security/PrincipalLoader'; import {FindPrincipalsRequest} from './FindPrincipalsRequest'; import {GetPrincipalsByKeysRequest} from './GetPrincipalsByKeysRequest'; diff --git a/src/main/resources/assets/js/app/report/RepositoryLoader.ts b/src/main/resources/assets/js/app/report/RepositoryLoader.ts index 429b02a6f..62210a79a 100644 --- a/src/main/resources/assets/js/app/report/RepositoryLoader.ts +++ b/src/main/resources/assets/js/app/report/RepositoryLoader.ts @@ -1,4 +1,4 @@ -import * as Q from 'q'; +import Q from 'q'; import {Repository} from './Repository'; import {ListRepositoriesRequest} from '../../graphql/repository/ListRepositoriesRequest'; import {BaseLoader} from '@enonic/lib-admin-ui/util/loader/BaseLoader'; diff --git a/src/main/resources/assets/js/app/view/UserItemStatisticsPanel.ts b/src/main/resources/assets/js/app/view/UserItemStatisticsPanel.ts index e0107e4dc..ae98f5e45 100644 --- a/src/main/resources/assets/js/app/view/UserItemStatisticsPanel.ts +++ b/src/main/resources/assets/js/app/view/UserItemStatisticsPanel.ts @@ -1,4 +1,4 @@ -import * as Q from 'q'; +import Q from 'q'; import {UserTreeGridItem, UserTreeGridItemType} from '../browse/UserTreeGridItem'; import {GetPrincipalByKeyRequest} from '../../graphql/principal/GetPrincipalByKeyRequest'; import {RepositoryComboBox} from '../report/RepositoryComboBox'; diff --git a/src/main/resources/assets/js/app/wizard/GroupWizardPanel.ts b/src/main/resources/assets/js/app/wizard/GroupWizardPanel.ts index 053855d68..a2473501a 100644 --- a/src/main/resources/assets/js/app/wizard/GroupWizardPanel.ts +++ b/src/main/resources/assets/js/app/wizard/GroupWizardPanel.ts @@ -1,4 +1,4 @@ -import * as Q from 'q'; +import Q from 'q'; import {MembersWizardPanel} from './MembersWizardPanel'; import {PrincipalWizardPanelParams} from './PrincipalWizardPanelParams'; import {CreateGroupRequest} from '../../graphql/principal/group/CreateGroupRequest'; diff --git a/src/main/resources/assets/js/app/wizard/IdProviderWizardDataLoader.ts b/src/main/resources/assets/js/app/wizard/IdProviderWizardDataLoader.ts index bca9f3469..71a8f6149 100644 --- a/src/main/resources/assets/js/app/wizard/IdProviderWizardDataLoader.ts +++ b/src/main/resources/assets/js/app/wizard/IdProviderWizardDataLoader.ts @@ -1,4 +1,4 @@ -import * as Q from 'q'; +import Q from 'q'; import {IdProviderWizardPanelParams} from './IdProviderWizardPanelParams'; import {GetIdProviderByKeyRequest} from '../../graphql/idprovider/GetIdProviderByKeyRequest'; import {GetDefaultIdProviderRequest} from '../../graphql/idprovider/GetDefaultIdProviderRequest'; diff --git a/src/main/resources/assets/js/app/wizard/IdProviderWizardPanel.ts b/src/main/resources/assets/js/app/wizard/IdProviderWizardPanel.ts index 4c822fd5f..bff5e862d 100644 --- a/src/main/resources/assets/js/app/wizard/IdProviderWizardPanel.ts +++ b/src/main/resources/assets/js/app/wizard/IdProviderWizardPanel.ts @@ -1,4 +1,4 @@ -import * as Q from 'q'; +import Q from 'q'; import {Router} from '../Router'; import {UserItemWizardPanel} from './UserItemWizardPanel'; import {SecurityWizardStepForm} from './SecurityWizardStepForm'; diff --git a/src/main/resources/assets/js/app/wizard/MembersWizardPanel.ts b/src/main/resources/assets/js/app/wizard/MembersWizardPanel.ts index cfa5114bb..d7a9a6dfc 100644 --- a/src/main/resources/assets/js/app/wizard/MembersWizardPanel.ts +++ b/src/main/resources/assets/js/app/wizard/MembersWizardPanel.ts @@ -1,4 +1,4 @@ -import * as Q from 'q'; +import Q from 'q'; import {PrincipalDescriptionWizardStepForm} from './PrincipalDescriptionWizardStepForm'; import {PrincipalWizardPanel} from './PrincipalWizardPanel'; import {PrincipalWizardPanelParams} from './PrincipalWizardPanelParams'; diff --git a/src/main/resources/assets/js/app/wizard/MembersWizardStepForm.ts b/src/main/resources/assets/js/app/wizard/MembersWizardStepForm.ts index ead7f8eda..dbe0284af 100644 --- a/src/main/resources/assets/js/app/wizard/MembersWizardStepForm.ts +++ b/src/main/resources/assets/js/app/wizard/MembersWizardStepForm.ts @@ -13,7 +13,7 @@ import {ObjectHelper} from '@enonic/lib-admin-ui/ObjectHelper'; import {UserItemWizardStepForm} from './UserItemWizardStepForm'; import {PrincipalLoader} from '../principal/PrincipalLoader'; import {Option} from '@enonic/lib-admin-ui/ui/selector/Option'; -import * as Q from 'q'; +import Q from 'q'; import {SelectedOption} from '@enonic/lib-admin-ui/ui/selector/combobox/SelectedOption'; import {RoleKeys} from '@enonic/lib-admin-ui/security/RoleKeys'; diff --git a/src/main/resources/assets/js/app/wizard/NewPublicKeyDialog.ts b/src/main/resources/assets/js/app/wizard/NewPublicKeyDialog.ts index c35062d66..61e5e0cae 100644 --- a/src/main/resources/assets/js/app/wizard/NewPublicKeyDialog.ts +++ b/src/main/resources/assets/js/app/wizard/NewPublicKeyDialog.ts @@ -1,4 +1,4 @@ -import * as Q from 'q'; +import Q from 'q'; import {ModalDialog} from '@enonic/lib-admin-ui/ui/dialog/ModalDialog'; import {FormItem, FormItemBuilder} from '@enonic/lib-admin-ui/ui/form/FormItem'; import {Fieldset} from '@enonic/lib-admin-ui/ui/form/Fieldset'; diff --git a/src/main/resources/assets/js/app/wizard/PrincipalWizardDataLoader.ts b/src/main/resources/assets/js/app/wizard/PrincipalWizardDataLoader.ts index 5446ed963..1a0a05971 100644 --- a/src/main/resources/assets/js/app/wizard/PrincipalWizardDataLoader.ts +++ b/src/main/resources/assets/js/app/wizard/PrincipalWizardDataLoader.ts @@ -1,4 +1,4 @@ -import * as Q from 'q'; +import Q from 'q'; import {PrincipalWizardPanelParams} from './PrincipalWizardPanelParams'; import {GetPrincipalByKeyRequest} from '../../graphql/principal/GetPrincipalByKeyRequest'; import {Principal} from '@enonic/lib-admin-ui/security/Principal'; diff --git a/src/main/resources/assets/js/app/wizard/PrincipalWizardPanel.ts b/src/main/resources/assets/js/app/wizard/PrincipalWizardPanel.ts index 670ce0de0..10623ca12 100644 --- a/src/main/resources/assets/js/app/wizard/PrincipalWizardPanel.ts +++ b/src/main/resources/assets/js/app/wizard/PrincipalWizardPanel.ts @@ -1,4 +1,4 @@ -import * as Q from 'q'; +import Q from 'q'; import {UserItemWizardPanel} from './UserItemWizardPanel'; import {PrincipalWizardPanelParams} from './PrincipalWizardPanelParams'; import {Router} from '../Router'; diff --git a/src/main/resources/assets/js/app/wizard/UserItemWizardPanel.ts b/src/main/resources/assets/js/app/wizard/UserItemWizardPanel.ts index 3c669d5d0..fc292d00f 100644 --- a/src/main/resources/assets/js/app/wizard/UserItemWizardPanel.ts +++ b/src/main/resources/assets/js/app/wizard/UserItemWizardPanel.ts @@ -1,4 +1,4 @@ -import * as Q from 'q'; +import Q from 'q'; import {UserItemWizardActions} from './action/UserItemWizardActions'; import {UserItemWizardPanelParams} from './UserItemWizardPanelParams'; import {PrincipalServerEventsHandler} from '../event/PrincipalServerEventsHandler'; diff --git a/src/main/resources/assets/js/app/wizard/UserWizardPanel.ts b/src/main/resources/assets/js/app/wizard/UserWizardPanel.ts index 034b858df..610be7f56 100644 --- a/src/main/resources/assets/js/app/wizard/UserWizardPanel.ts +++ b/src/main/resources/assets/js/app/wizard/UserWizardPanel.ts @@ -1,4 +1,4 @@ -import * as Q from 'q'; +import Q from 'q'; import {PrincipalWizardPanel} from './PrincipalWizardPanel'; import {UserEmailWizardStepForm} from './UserEmailWizardStepForm'; import {UserPasswordWizardStepForm} from './UserPasswordWizardStepForm'; diff --git a/src/main/resources/assets/js/graphql/GraphQlRequest.ts b/src/main/resources/assets/js/graphql/GraphQlRequest.ts index 894a0c07b..ab0449736 100644 --- a/src/main/resources/assets/js/graphql/GraphQlRequest.ts +++ b/src/main/resources/assets/js/graphql/GraphQlRequest.ts @@ -4,7 +4,7 @@ import {HttpRequest} from '@enonic/lib-admin-ui/rest/HttpRequest'; import {PostRequest} from '@enonic/lib-admin-ui/rest/PostRequest'; import {JsonResponse} from '@enonic/lib-admin-ui/rest/JsonResponse'; import {CONFIG} from '@enonic/lib-admin-ui/util/Config'; -import * as Q from 'q'; +import Q from 'q'; export interface GraphQlMutationResponse { error?: string; diff --git a/src/main/resources/assets/js/graphql/principal/user/AddPublicKeyRequest.ts b/src/main/resources/assets/js/graphql/principal/user/AddPublicKeyRequest.ts index 1ac191f91..40570f85a 100644 --- a/src/main/resources/assets/js/graphql/principal/user/AddPublicKeyRequest.ts +++ b/src/main/resources/assets/js/graphql/principal/user/AddPublicKeyRequest.ts @@ -1,4 +1,4 @@ -import * as Q from 'q'; +import Q from 'q'; import {GraphQlMutationResponse, GraphQlRequest} from '../../GraphQlRequest'; import {PrincipalKey} from '@enonic/lib-admin-ui/security/PrincipalKey'; import {PublicKey} from '../../../app/browse/serviceaccount/PublicKey'; diff --git a/src/main/resources/assets/styles/main.less b/src/main/resources/assets/styles/main.less index 53da5cfce..7cf545bc8 100644 --- a/src/main/resources/assets/styles/main.less +++ b/src/main/resources/assets/styles/main.less @@ -1,6 +1,8 @@ @_CLS_PREFIX: xp-admin-; -@import "~enonic-admin-artifacts"; +//@import "~enonic-admin-artifacts"; +@import 'enonic-admin-artifacts/index'; + @import "../icons/icons"; @import "animation"; @import "create/new-principal-dialog"; diff --git a/src/main/resources/assets/tsconfig.json b/src/main/resources/assets/tsconfig.json new file mode 100644 index 000000000..e495448da --- /dev/null +++ b/src/main/resources/assets/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "esModuleInterop": true, // Needed for the 'q' npm module + "module": "commonjs", + "lib": [ + "DOM", + "ES2020", + "ES2015.Promise" + ], + "moduleResolution": "node", + "paths": {}, + "rootDir": ".", + "skipLibCheck": true, + "target": "es5", // Modern browsers + "types": [ + "hasher", + "q", + "nanoid", + "owasp-password-strength-test" + ], + }, + "include": [ + "./**/*.ts" + ], +} diff --git a/tsup.config.ts b/tsup.config.ts new file mode 100644 index 000000000..96c4674d1 --- /dev/null +++ b/tsup.config.ts @@ -0,0 +1,21 @@ +import { defineConfig } from 'tsup'; + +export default defineConfig(() => { + return { + dts: false, // d.ts files are use useless at runtime + entry: { + 'js/bundle': 'src/main/resources/assets/js/main.ts', + 'js/crypto-worker': 'src/main/resources/assets/js/worker/RSAKeysWorker.ts', + }, + format: [ + 'cjs' + ], + minify: process.env.NODE_ENV === 'development' ? false : true, + outDir: 'build/resources/main/assets', + platform: 'browser', + silent: ['QUIET', 'WARN'].includes(process.env.LOG_LEVEL_FROM_GRADLE||''), + // splitting: false, + sourcemap: process.env.NODE_ENV === 'development' ? false : true, + tsconfig: 'src/main/resources/assets/tsconfig.json', + }; +}); From b0b323c0bf791823a17e9fba2a092feeff82f003 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Mon, 11 Sep 2023 15:46:37 +0200 Subject: [PATCH 03/43] Added npmCheck --- build.gradle | 12 ++++++++++++ package.json | 4 ++-- tsconfig.json | 1 + 3 files changed, 15 insertions(+), 2 deletions(-) diff --git a/build.gradle b/build.gradle index 4d508eaf8..4955ab9da 100644 --- a/build.gradle +++ b/build.gradle @@ -62,6 +62,18 @@ repositories { xp.enonicRepo( 'dev' ) } +tasks.register('npmCheck', NpmTask) { + dependsOn npmInstall + args = [ + 'run', + 'check:types' + ] + environment = [ + 'FORCE_COLOR': 'true', + ] +} +check.dependsOn npmCheck + tasks.withType(Copy) { includeEmptyDirs = false } diff --git a/package.json b/package.json index 9a21d83d7..29f69727a 100644 --- a/package.json +++ b/package.json @@ -12,9 +12,9 @@ "build:css": "postcss -o build/resources/main/assets/styles/main.css build/less/main.css", "build:js": "tsup", "check:types": "tsc --pretty --skipLibCheck --noEmit", - "fix": "eslint --fix **/*.ts --cache", + "fix": "eslint --fix src/**/*.ts --cache", "less": "lessc --source-map src/main/resources/assets/styles/main.less build/less/main.css", - "lint": "eslint **/*.ts --quiet --cache", + "lint": "eslint src/**/*.ts --quiet --cache", "prebuild:css": "npm run less" }, "dependencies": { diff --git a/tsconfig.json b/tsconfig.json index 69642285c..82d2985be 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,5 +1,6 @@ { "compilerOptions": { + "esModuleInterop": true, // Needed for the 'q' npm module "module": "commonjs", "target": "es5", "sourceMap": true, From 7f2fc8505a7bf20900e116b18b06e8b0aa014e08 Mon Sep 17 00:00:00 2001 From: alansemenov Date: Tue, 12 Sep 2023 13:41:42 +0200 Subject: [PATCH 04/43] Fix for source maps --- tsup.config.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tsup.config.ts b/tsup.config.ts index 96c4674d1..f30ec2ed5 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -15,7 +15,7 @@ export default defineConfig(() => { platform: 'browser', silent: ['QUIET', 'WARN'].includes(process.env.LOG_LEVEL_FROM_GRADLE||''), // splitting: false, - sourcemap: process.env.NODE_ENV === 'development' ? false : true, + sourcemap: process.env.NODE_ENV === 'development' ? true : false, tsconfig: 'src/main/resources/assets/tsconfig.json', }; }); From 236edb393664366b76b2a92be016fa6ede8051fd Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Mon, 11 Sep 2023 15:21:35 +0200 Subject: [PATCH 05/43] Replace webpack with lessc, postcss and tsup --- build.gradle | 2 -- 1 file changed, 2 deletions(-) diff --git a/build.gradle b/build.gradle index 4955ab9da..f9fa0d396 100644 --- a/build.gradle +++ b/build.gradle @@ -90,7 +90,6 @@ tasks.register('lint', NpmTask) { args = ['run', 'lint'] outputs.upToDateWhen { false } } - check.dependsOn lint tasks.register('npmBuild', NpmTask) { @@ -122,7 +121,6 @@ processResources { jar { outputs.dir "$buildDir/resources/main" - dependsOn( 'npmBuild', 'javadoc', 'test' ) } From 403623fceff85790e4d595209f4c4368de541517 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Wed, 13 Sep 2023 09:20:03 +0200 Subject: [PATCH 06/43] wip #1817 jquery problems --- package.json | 3 ++ postcss.config.js | 4 +- src/main/resources/admin/tools/main/main.html | 6 +-- tsup.config.ts | 45 +++++++++++++++++-- 4 files changed, 48 insertions(+), 10 deletions(-) diff --git a/package.json b/package.json index 29f69727a..f2e47b6cd 100644 --- a/package.json +++ b/package.json @@ -27,6 +27,7 @@ }, "devDependencies": { "@enonic/eslint-config": "^1.2.0", + "@fal-works/esbuild-plugin-global-externals": "^2.1.2", "@swc/core": "^1.3.93", "@types/hasher": "^0.0.33", "@types/nanoid": "^3.0.0", @@ -42,6 +43,8 @@ "cssnano": "^6.0.1", "enonic-admin-artifacts": "^1.8.5", "eslint": "^8.51.0", + "esbuild-plugin-external-global": "^1.0.1", + "esbuild-plugin-globals": "^0.2.0", "less": "^4.2.0", "less-loader": "^11.1.3", "mini-css-extract-plugin": "^2.7.6", diff --git a/postcss.config.js b/postcss.config.js index 054ce20a8..dfcb9b995 100644 --- a/postcss.config.js +++ b/postcss.config.js @@ -10,9 +10,7 @@ const plugins = Object.assign( 'postcss-url': { basePath: path.resolve('src/main/resources/assets/icons'), assetsPath: '../icons/', - url: 'copy' // Remember to skip woff and woff2 files in build.gradle - // url: 'inline' // base64 data url inlines the fonts? - // url: 'rebase' // only manipulates the urls? + url: 'copy' }, }, isProd ? {cssnano: {}} : {} diff --git a/src/main/resources/admin/tools/main/main.html b/src/main/resources/admin/tools/main/main.html index d268093c2..8d071bae2 100644 --- a/src/main/resources/admin/tools/main/main.html +++ b/src/main/resources/admin/tools/main/main.html @@ -38,11 +38,11 @@ - - - + + + diff --git a/tsup.config.ts b/tsup.config.ts index f30ec2ed5..d0b511a4f 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -1,21 +1,58 @@ +import { globalExternals } from "@fal-works/esbuild-plugin-global-externals"; +// import GlobalsPlugin from "esbuild-plugin-globals"; import { defineConfig } from 'tsup'; +// import externalGlobalPlugin from 'esbuild-plugin-external-global'; export default defineConfig(() => { return { + bundle: true, dts: false, // d.ts files are use useless at runtime entry: { - 'js/bundle': 'src/main/resources/assets/js/main.ts', + 'js/app-users-bundle': 'src/main/resources/assets/js/main.ts', 'js/crypto-worker': 'src/main/resources/assets/js/worker/RSAKeysWorker.ts', }, + // esbuildOptions(options, context) { + // options.external = [ + // 'jquery' + // ] + // }, + esbuildPlugins: [ + // GlobalsPlugin({ + // // 'jquery': 'jQuery', + // 'jquery': '$' + // }), + globalExternals({ + 'jquery': '$' + // 'jquery': 'jQuery' + }) + // externalGlobalPlugin({ + // // 'react': 'window.React', + // // 'react-dom': 'window.ReactDOM', + // 'jQuery': '$' // It seems jquery is available as $ in the global scope + // }) + ], + // external: [ + // // This will leave require('jquery') as is in the bundle + // // causes: Uncaught ReferenceError: require is not defined + // 'jquery' + // ], format: [ 'cjs' ], - minify: process.env.NODE_ENV === 'development' ? false : true, + minify: process.env.NODE_ENV !== 'development', + noExternal: [ // Same as dependencies in package.json + /@enonic\/lib-admin-ui/, + 'hasher', + 'jquery', // This will bundle jQuery into the bundle + 'nanoid', + 'owasp-password-strength-test', + 'q' + ], outDir: 'build/resources/main/assets', platform: 'browser', - silent: ['QUIET', 'WARN'].includes(process.env.LOG_LEVEL_FROM_GRADLE||''), + silent: ['QUIET', 'WARN'].includes(process.env.LOG_LEVEL_FROM_GRADLE||''), // splitting: false, - sourcemap: process.env.NODE_ENV === 'development' ? true : false, + sourcemap: process.env.NODE_ENV === 'development', tsconfig: 'src/main/resources/assets/tsconfig.json', }; }); From ad541da603bb062e61eb4528c824df4c8425b448 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Thu, 14 Sep 2023 14:08:17 +0200 Subject: [PATCH 07/43] wip #1817 webpack specific require.context() --- .swcrc | 2 +- build.gradle | 3 + package.json | 15 +- src/main/resources/admin/tools/main/main.html | 4 +- src/main/resources/admin/tools/main/main.js | 29 ---- src/main/resources/admin/tools/main/main.ts | 71 ++++++++ src/main/resources/constants.ts | 4 + src/main/resources/lib/ioResource.ts | 38 +++++ src/main/resources/lib/runMode.ts | 9 + src/main/resources/lib/urlHelper.ts | 70 ++++++++ .../{assets/js => static}/app/Router.ts | 0 .../{assets/js => static}/app/UserAppPanel.ts | 0 .../app/access/IdProviderAccess.ts | 0 .../access/IdProviderAccessControlEntry.ts | 0 .../IdProviderAccessControlEntryJson.ts | 0 .../app/access/IdProviderAccessControlList.ts | 0 .../js => static}/app/browse/BaseUserEvent.ts | 0 .../app/browse/EditPrincipalEvent.ts | 0 .../app/browse/NewPrincipalEvent.ts | 0 .../app/browse/PrincipalDuplicatedEvent.ts | 0 .../app/browse/PrincipalSynchronizedEvent.ts | 0 .../app/browse/ShowNewPrincipalDialogEvent.ts | 0 .../app/browse/UpdatePrincipalEvent.ts | 0 .../app/browse/UserBrowseItemPanel.ts | 0 .../app/browse/UserBrowsePanel.ts | 0 .../app/browse/UserBrowseToolbar.ts | 0 .../app/browse/UserItemDeletePromptEvent.ts | 0 .../js => static}/app/browse/UserItemType.ts | 0 .../app/browse/UserItemsRowFormatter.ts | 0 .../app/browse/UserItemsTreeGrid.ts | 0 .../app/browse/UserTreeGridActions.ts | 0 .../app/browse/UserTreeGridItem.ts | 0 .../app/browse/UserTreeGridItemViewer.ts | 0 .../browse/action/DeletePrincipalAction.ts | 0 .../app/browse/action/EditPrincipalAction.ts | 0 .../app/browse/action/NewPrincipalAction.ts | 0 .../app/browse/action/SyncPrincipalAction.ts | 0 .../filter/PrincipalBrowseFilterPanel.ts | 0 .../filter/PrincipalBrowseSearchData.ts | 0 .../app/browse/serviceaccount/PublicKey.ts | 0 .../app/create/NewPrincipalDialog.ts | 0 .../app/create/UserItemTypesRowFormatter.ts | 0 .../app/create/UserItemTypesTreeGrid.ts | 0 .../app/create/UserTypeTreeGridItem.ts | 0 .../app/create/UserTypesTreeGridItemViewer.ts | 0 .../app/event/PrincipalServerChange.ts | 0 .../app/event/PrincipalServerChangeItem.ts | 0 .../app/event/PrincipalServerEvent.ts | 0 .../app/event/PrincipalServerEventsHandler.ts | 0 .../app/event/ReportServerChange.ts | 0 .../app/event/ReportServerChangeItem.ts | 0 .../app/event/ReportServerEvent.ts | 0 .../app/event/UserFilteredDataScrollEvent.ts | 0 .../app/event/UserItemCreatedEvent.ts | 0 .../app/event/UserItemDeletedEvent.ts | 0 .../app/event/UserItemNamedEvent.ts | 0 .../app/event/UserItemUpdatedEvent.ts | 0 .../app/event/UserItemsStopScrollEvent.ts | 0 .../app/event/UsersServerEventsListener.ts | 0 .../app/event/UsersServerEventsTranslator.ts | 0 .../AuthApplicationComboBox.ts | 0 .../AuthApplicationLoader.ts | 0 .../AuthApplicationSelectedOptionView.ts | 0 .../AuthApplicationSelectedOptionsView.ts | 0 .../AuthApplicationSelector.ts | 0 .../inputtype/selector/PrincipalSelector.ts | 0 .../app/principal/FindPrincipalsRequest.ts | 0 .../principal/GetPrincipalsByKeysRequest.ts | 0 .../js => static}/app/principal/Group.ts | 0 .../js => static}/app/principal/GroupJson.ts | 0 .../js => static}/app/principal/IdProvider.ts | 0 .../app/principal/IdProviderJson.ts | 0 .../js => static}/app/principal/Members.ts | 0 .../app/principal/MembersJson.ts | 0 .../app/principal/PrincipalLoader.ts | 0 .../app/principal/PublicKeyJson.ts | 0 .../js => static}/app/principal/Role.ts | 0 .../js => static}/app/principal/RoleJson.ts | 0 .../js => static}/app/principal/User.ts | 0 .../js => static}/app/principal/UserJson.ts | 0 .../js => static}/app/report/Report.ts | 0 .../js => static}/app/report/Repository.ts | 0 .../app/report/RepositoryComboBox.ts | 0 .../app/report/RepositoryLoader.ts | 0 .../app/report/RepositoryViewer.ts | 0 .../ListIdProviderApplicationsRequest.ts | 0 .../js => static}/app/view/MembersListing.ts | 0 .../js => static}/app/view/PublicKeysGrid.ts | 0 .../app/view/UserItemStatisticsHeader.ts | 0 .../app/view/UserItemStatisticsPanel.ts | 0 .../app/wizard/ChangeUserPasswordDialog.ts | 0 .../app/wizard/GroupWizardPanel.ts | 0 .../wizard/IdProviderAccessControlComboBox.ts | 0 .../IdProviderAccessControlEntryView.ts | 0 .../app/wizard/IdProviderAccessSelector.ts | 0 .../app/wizard/IdProviderWizardActions.ts | 0 .../app/wizard/IdProviderWizardDataLoader.ts | 0 .../app/wizard/IdProviderWizardPanel.ts | 0 .../app/wizard/IdProviderWizardPanelParams.ts | 0 .../app/wizard/IdProviderWizardStepForm.ts | 0 .../app/wizard/MembersWizardPanel.ts | 0 .../app/wizard/MembersWizardStepForm.ts | 0 .../app/wizard/NewPublicKeyDialog.ts | 0 .../wizard/OpenChangePasswordDialogEvent.ts | 0 .../app/wizard/PasswordGenerator.ts | 0 .../app/wizard/PasswordStrengthBlock.ts | 0 .../PrincipalDescriptionWizardStepForm.ts | 0 .../app/wizard/PrincipalWizardDataLoader.ts | 0 .../app/wizard/PrincipalWizardPanel.ts | 0 .../app/wizard/PrincipalWizardPanelParams.ts | 0 .../app/wizard/PublicKeyDetailsDialog.ts | 0 .../app/wizard/RoleWizardPanel.ts | 0 .../app/wizard/RolesWizardStepForm.ts | 0 .../app/wizard/SecurityWizardStepForm.ts | 0 .../app/wizard/SetUserPasswordRequest.ts | 0 .../app/wizard/UserEmailWizardStepForm.ts | 0 .../app/wizard/UserItemWizardPanel.ts | 0 .../app/wizard/UserItemWizardPanelParams.ts | 0 .../app/wizard/UserItemWizardStepForm.ts | 0 .../app/wizard/UserKeyDetailsDialog.ts | 0 .../wizard/UserMembershipsWizardStepForm.ts | 0 .../app/wizard/UserPasswordWizardStepForm.ts | 0 .../app/wizard/UserWizardPanel.ts | 0 .../app/wizard/action/DeleteUserItemAction.ts | 0 .../wizard/action/UserItemWizardActions.ts | 0 .../js => static}/graphql/GraphQlRequest.ts | 0 .../graphql/ListGraphQlRequest.ts | 0 .../aggregation/UserItemAggregationHelper.ts | 0 .../UserItemBucketAggregationJson.ts | 0 .../idprovider/CreateIdProviderRequest.ts | 0 .../idprovider/DeleteIdProviderRequest.ts | 0 .../idprovider/GetDefaultIdProviderRequest.ts | 0 .../idprovider/GetIdProviderByKeyRequest.ts | 0 .../idprovider/IdProviderListResult.ts | 0 .../idprovider/ListIdProvidersRequest.ts | 0 .../idprovider/SaveIdProviderRequest.ts | 0 .../idprovider/UpdateIdProviderRequest.ts | 0 .../principal/DeletePrincipalRequest.ts | 0 .../principal/GetPrincipalByKeyRequest.ts | 0 .../principal/GetPrincipalsByKeysRequest.ts | 0 .../GetPrincipalsExistenceRequest.ts | 0 .../graphql/principal/ListItemsRequest.ts | 0 .../principal/ListPrincipalsNamesRequest.ts | 0 .../principal/ListPrincipalsRequest.ts | 0 .../graphql/principal/ListTypesRequest.ts | 0 .../graphql/principal/ListUserItemsRequest.ts | 0 .../principal/group/CreateGroupRequest.ts | 0 .../principal/group/UpdateGroupRequest.ts | 0 .../principal/role/CreateRoleRequest.ts | 0 .../principal/role/UpdateRoleRequest.ts | 0 .../principal/user/AddPublicKeyRequest.ts | 0 .../principal/user/CreateUserRequest.ts | 0 .../principal/user/DeletePublicKeyRequest.ts | 0 .../principal/user/UpdatePasswordRequest.ts | 0 .../principal/user/UpdateUserRequest.ts | 0 .../repository/ListRepositoriesRequest.ts | 0 .../graphql/useritem/DeleteUserItemJson.ts | 0 .../graphql/useritem/DeleteUserItemRequest.ts | 0 .../graphql/useritem/DeleteUserItemResult.ts | 0 .../resources/{assets/js => static}/main.ts | 0 src/main/resources/static/tsconfig.json | 26 +++ .../js => static}/util/CryptoWorker.ts | 0 .../{assets/js => static}/util/UrlHelper.ts | 0 .../js => static}/worker/RSAKeysWorker.ts | 0 src/main/resources/tsconfig.json | 31 ++++ .../resources/types/PageContributions.d.ts | 6 + src/main/resources/types/Request.d.ts | 41 +++++ src/main/resources/types/Response.d.ts | 33 ++++ src/main/resources/types/index.d.ts | 2 + tsconfig.json | 7 +- tsup.config.ts | 70 ++------ tsup/assets.ts | 67 ++++++++ tsup/constants.ts | 5 + tsup/index.d.ts | 5 + tsup/server.ts | 161 ++++++++++++++++++ tsup/static.ts | 92 ++++++++++ 176 files changed, 699 insertions(+), 92 deletions(-) delete mode 100644 src/main/resources/admin/tools/main/main.js create mode 100644 src/main/resources/admin/tools/main/main.ts create mode 100644 src/main/resources/constants.ts create mode 100644 src/main/resources/lib/ioResource.ts create mode 100644 src/main/resources/lib/runMode.ts create mode 100644 src/main/resources/lib/urlHelper.ts rename src/main/resources/{assets/js => static}/app/Router.ts (100%) rename src/main/resources/{assets/js => static}/app/UserAppPanel.ts (100%) rename src/main/resources/{assets/js => static}/app/access/IdProviderAccess.ts (100%) rename src/main/resources/{assets/js => static}/app/access/IdProviderAccessControlEntry.ts (100%) rename src/main/resources/{assets/js => static}/app/access/IdProviderAccessControlEntryJson.ts (100%) rename src/main/resources/{assets/js => static}/app/access/IdProviderAccessControlList.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/BaseUserEvent.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/EditPrincipalEvent.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/NewPrincipalEvent.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/PrincipalDuplicatedEvent.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/PrincipalSynchronizedEvent.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/ShowNewPrincipalDialogEvent.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/UpdatePrincipalEvent.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/UserBrowseItemPanel.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/UserBrowsePanel.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/UserBrowseToolbar.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/UserItemDeletePromptEvent.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/UserItemType.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/UserItemsRowFormatter.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/UserItemsTreeGrid.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/UserTreeGridActions.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/UserTreeGridItem.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/UserTreeGridItemViewer.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/action/DeletePrincipalAction.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/action/EditPrincipalAction.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/action/NewPrincipalAction.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/action/SyncPrincipalAction.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/filter/PrincipalBrowseFilterPanel.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/filter/PrincipalBrowseSearchData.ts (100%) rename src/main/resources/{assets/js => static}/app/browse/serviceaccount/PublicKey.ts (100%) rename src/main/resources/{assets/js => static}/app/create/NewPrincipalDialog.ts (100%) rename src/main/resources/{assets/js => static}/app/create/UserItemTypesRowFormatter.ts (100%) rename src/main/resources/{assets/js => static}/app/create/UserItemTypesTreeGrid.ts (100%) rename src/main/resources/{assets/js => static}/app/create/UserTypeTreeGridItem.ts (100%) rename src/main/resources/{assets/js => static}/app/create/UserTypesTreeGridItemViewer.ts (100%) rename src/main/resources/{assets/js => static}/app/event/PrincipalServerChange.ts (100%) rename src/main/resources/{assets/js => static}/app/event/PrincipalServerChangeItem.ts (100%) rename src/main/resources/{assets/js => static}/app/event/PrincipalServerEvent.ts (100%) rename src/main/resources/{assets/js => static}/app/event/PrincipalServerEventsHandler.ts (100%) rename src/main/resources/{assets/js => static}/app/event/ReportServerChange.ts (100%) rename src/main/resources/{assets/js => static}/app/event/ReportServerChangeItem.ts (100%) rename src/main/resources/{assets/js => static}/app/event/ReportServerEvent.ts (100%) rename src/main/resources/{assets/js => static}/app/event/UserFilteredDataScrollEvent.ts (100%) rename src/main/resources/{assets/js => static}/app/event/UserItemCreatedEvent.ts (100%) rename src/main/resources/{assets/js => static}/app/event/UserItemDeletedEvent.ts (100%) rename src/main/resources/{assets/js => static}/app/event/UserItemNamedEvent.ts (100%) rename src/main/resources/{assets/js => static}/app/event/UserItemUpdatedEvent.ts (100%) rename src/main/resources/{assets/js => static}/app/event/UserItemsStopScrollEvent.ts (100%) rename src/main/resources/{assets/js => static}/app/event/UsersServerEventsListener.ts (100%) rename src/main/resources/{assets/js => static}/app/event/UsersServerEventsTranslator.ts (100%) rename src/main/resources/{assets/js => static}/app/inputtype/authapplicationselector/AuthApplicationComboBox.ts (100%) rename src/main/resources/{assets/js => static}/app/inputtype/authapplicationselector/AuthApplicationLoader.ts (100%) rename src/main/resources/{assets/js => static}/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionView.ts (100%) rename src/main/resources/{assets/js => static}/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionsView.ts (100%) rename src/main/resources/{assets/js => static}/app/inputtype/authapplicationselector/AuthApplicationSelector.ts (100%) rename src/main/resources/{assets/js => static}/app/inputtype/selector/PrincipalSelector.ts (100%) rename src/main/resources/{assets/js => static}/app/principal/FindPrincipalsRequest.ts (100%) rename src/main/resources/{assets/js => static}/app/principal/GetPrincipalsByKeysRequest.ts (100%) rename src/main/resources/{assets/js => static}/app/principal/Group.ts (100%) rename src/main/resources/{assets/js => static}/app/principal/GroupJson.ts (100%) rename src/main/resources/{assets/js => static}/app/principal/IdProvider.ts (100%) rename src/main/resources/{assets/js => static}/app/principal/IdProviderJson.ts (100%) rename src/main/resources/{assets/js => static}/app/principal/Members.ts (100%) rename src/main/resources/{assets/js => static}/app/principal/MembersJson.ts (100%) rename src/main/resources/{assets/js => static}/app/principal/PrincipalLoader.ts (100%) rename src/main/resources/{assets/js => static}/app/principal/PublicKeyJson.ts (100%) rename src/main/resources/{assets/js => static}/app/principal/Role.ts (100%) rename src/main/resources/{assets/js => static}/app/principal/RoleJson.ts (100%) rename src/main/resources/{assets/js => static}/app/principal/User.ts (100%) rename src/main/resources/{assets/js => static}/app/principal/UserJson.ts (100%) rename src/main/resources/{assets/js => static}/app/report/Report.ts (100%) rename src/main/resources/{assets/js => static}/app/report/Repository.ts (100%) rename src/main/resources/{assets/js => static}/app/report/RepositoryComboBox.ts (100%) rename src/main/resources/{assets/js => static}/app/report/RepositoryLoader.ts (100%) rename src/main/resources/{assets/js => static}/app/report/RepositoryViewer.ts (100%) rename src/main/resources/{assets/js => static}/app/resource/ListIdProviderApplicationsRequest.ts (100%) rename src/main/resources/{assets/js => static}/app/view/MembersListing.ts (100%) rename src/main/resources/{assets/js => static}/app/view/PublicKeysGrid.ts (100%) rename src/main/resources/{assets/js => static}/app/view/UserItemStatisticsHeader.ts (100%) rename src/main/resources/{assets/js => static}/app/view/UserItemStatisticsPanel.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/ChangeUserPasswordDialog.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/GroupWizardPanel.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/IdProviderAccessControlComboBox.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/IdProviderAccessControlEntryView.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/IdProviderAccessSelector.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/IdProviderWizardActions.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/IdProviderWizardDataLoader.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/IdProviderWizardPanel.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/IdProviderWizardPanelParams.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/IdProviderWizardStepForm.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/MembersWizardPanel.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/MembersWizardStepForm.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/NewPublicKeyDialog.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/OpenChangePasswordDialogEvent.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/PasswordGenerator.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/PasswordStrengthBlock.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/PrincipalDescriptionWizardStepForm.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/PrincipalWizardDataLoader.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/PrincipalWizardPanel.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/PrincipalWizardPanelParams.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/PublicKeyDetailsDialog.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/RoleWizardPanel.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/RolesWizardStepForm.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/SecurityWizardStepForm.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/SetUserPasswordRequest.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/UserEmailWizardStepForm.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/UserItemWizardPanel.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/UserItemWizardPanelParams.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/UserItemWizardStepForm.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/UserKeyDetailsDialog.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/UserMembershipsWizardStepForm.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/UserPasswordWizardStepForm.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/UserWizardPanel.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/action/DeleteUserItemAction.ts (100%) rename src/main/resources/{assets/js => static}/app/wizard/action/UserItemWizardActions.ts (100%) rename src/main/resources/{assets/js => static}/graphql/GraphQlRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/ListGraphQlRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/aggregation/UserItemAggregationHelper.ts (100%) rename src/main/resources/{assets/js => static}/graphql/aggregation/UserItemBucketAggregationJson.ts (100%) rename src/main/resources/{assets/js => static}/graphql/idprovider/CreateIdProviderRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/idprovider/DeleteIdProviderRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/idprovider/GetDefaultIdProviderRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/idprovider/GetIdProviderByKeyRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/idprovider/IdProviderListResult.ts (100%) rename src/main/resources/{assets/js => static}/graphql/idprovider/ListIdProvidersRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/idprovider/SaveIdProviderRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/idprovider/UpdateIdProviderRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/principal/DeletePrincipalRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/principal/GetPrincipalByKeyRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/principal/GetPrincipalsByKeysRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/principal/GetPrincipalsExistenceRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/principal/ListItemsRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/principal/ListPrincipalsNamesRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/principal/ListPrincipalsRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/principal/ListTypesRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/principal/ListUserItemsRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/principal/group/CreateGroupRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/principal/group/UpdateGroupRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/principal/role/CreateRoleRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/principal/role/UpdateRoleRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/principal/user/AddPublicKeyRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/principal/user/CreateUserRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/principal/user/DeletePublicKeyRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/principal/user/UpdatePasswordRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/principal/user/UpdateUserRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/repository/ListRepositoriesRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/useritem/DeleteUserItemJson.ts (100%) rename src/main/resources/{assets/js => static}/graphql/useritem/DeleteUserItemRequest.ts (100%) rename src/main/resources/{assets/js => static}/graphql/useritem/DeleteUserItemResult.ts (100%) rename src/main/resources/{assets/js => static}/main.ts (100%) create mode 100644 src/main/resources/static/tsconfig.json rename src/main/resources/{assets/js => static}/util/CryptoWorker.ts (100%) rename src/main/resources/{assets/js => static}/util/UrlHelper.ts (100%) rename src/main/resources/{assets/js => static}/worker/RSAKeysWorker.ts (100%) create mode 100644 src/main/resources/tsconfig.json create mode 100644 src/main/resources/types/PageContributions.d.ts create mode 100644 src/main/resources/types/Request.d.ts create mode 100644 src/main/resources/types/Response.d.ts create mode 100644 src/main/resources/types/index.d.ts create mode 100644 tsup/assets.ts create mode 100644 tsup/constants.ts create mode 100644 tsup/index.d.ts create mode 100644 tsup/server.ts create mode 100644 tsup/static.ts diff --git a/.swcrc b/.swcrc index 7a9a30c09..2a607fd8f 100644 --- a/.swcrc +++ b/.swcrc @@ -16,7 +16,7 @@ }, "exclude": [ ".*\\.d\\.ts$", - "/lib/" + // "/lib/" // TODO: Why was this line here? ], "module": { "type": "commonjs", diff --git a/build.gradle b/build.gradle index f9fa0d396..485109779 100644 --- a/build.gradle +++ b/build.gradle @@ -38,10 +38,13 @@ dependencies { include "com.enonic.xp:lib-node:${xpVersion}" include "com.enonic.xp:lib-auth:${xpVersion}" include "com.enonic.xp:lib-i18n:${xpVersion}" + include "com.enonic.xp:lib-io:${xpVersion}" include "com.enonic.lib:lib-admin-ui:${libAdminUiVersion}" devResources "com.enonic.lib:lib-admin-ui:${libAdminUiVersion}" include "com.enonic.lib:lib-graphql:2.0.1" include "com.enonic.lib:lib-mustache:2.1.0" + include 'com.enonic.lib:lib-router:3.1.0' + include 'com.enonic.lib:lib-static:1.0.3' testImplementation "com.enonic.xp:testing:${xpVersion}" testImplementation 'org.junit.jupiter:junit-jupiter-api:5.9.1' diff --git a/package.json b/package.json index f2e47b6cd..247005629 100644 --- a/package.json +++ b/package.json @@ -10,8 +10,10 @@ "scripts": { "build": "concurrently -c auto -g --timings npm:build:*", "build:css": "postcss -o build/resources/main/assets/styles/main.css build/less/main.css", - "build:js": "tsup", + "build:server": "tsup -d build/resources/main", + "build:static": "tsup -d build/resources/main/static", "check:types": "tsc --pretty --skipLibCheck --noEmit", + "clean": "del build", "fix": "eslint --fix src/**/*.ts --cache", "less": "lessc --source-map src/main/resources/assets/styles/main.less build/less/main.css", "lint": "eslint src/**/*.ts --quiet --cache", @@ -22,11 +24,19 @@ "hasher": "^1.2.0", "jquery": "^3.7.1", "nanoid": "^5.0.2", + "jquery-ui": "^1.13.2", "owasp-password-strength-test": "^1.3.0", "q": "^1.5.1" }, "devDependencies": { + "@enonic-types/global": "^7.13.2", + "@enonic-types/lib-admin": "^7.13.2", + "@enonic-types/lib-i18n": "^7.13.2", + "@enonic-types/lib-io": "^7.13.2", + "@enonic-types/lib-portal": "^7.13.2", + "@enonic/esbuild-plugin-copy-with-hash": "^0.0.1", "@enonic/eslint-config": "^1.2.0", + "@enonic/tsup-plugin-manifest": "^0.0.1", "@fal-works/esbuild-plugin-global-externals": "^2.1.2", "@swc/core": "^1.3.93", "@types/hasher": "^0.0.33", @@ -41,10 +51,13 @@ "concurrently": "^8.2.1", "css-loader": "^6.8.1", "cssnano": "^6.0.1", + "del-cli": "^5.1.0", "enonic-admin-artifacts": "^1.8.5", "eslint": "^8.51.0", "esbuild-plugin-external-global": "^1.0.1", "esbuild-plugin-globals": "^0.2.0", + "eslint": "^8.50.0", + "glob": "^10.3.4", "less": "^4.2.0", "less-loader": "^11.1.3", "mini-css-extract-plugin": "^2.7.6", diff --git a/src/main/resources/admin/tools/main/main.html b/src/main/resources/admin/tools/main/main.html index 8d071bae2..9d11894bd 100644 --- a/src/main/resources/admin/tools/main/main.html +++ b/src/main/resources/admin/tools/main/main.html @@ -1,6 +1,8 @@ + + @@ -42,7 +44,7 @@ - + diff --git a/src/main/resources/admin/tools/main/main.js b/src/main/resources/admin/tools/main/main.js deleted file mode 100644 index 3a5d2efa5..000000000 --- a/src/main/resources/admin/tools/main/main.js +++ /dev/null @@ -1,29 +0,0 @@ -const admin = require('/lib/xp/admin'); -const mustache = require('/lib/mustache'); -const portal = require('/lib/xp/portal'); -const i18n = require('/lib/xp/i18n'); - -function handleGet() { - const view = resolve('./main.html'); - - const params = { - assetsUri: portal.assetUrl({path: ''}), - appName: i18n.localize({ - key: 'admin.tool.displayName', - bundles: ['i18n/phrases'], - locale: admin.getLocales() - }), - launcherPath: admin.getLauncherPath(), - configServiceUrl: portal.serviceUrl({service: 'config'}) - }; - - return { - contentType: 'text/html', - body: mustache.render(view, params), - headers: { - 'Content-Security-Policy': 'default-src \'self\'; script-src \'self\' \'unsafe-eval\'; style-src \'self\' \'unsafe-inline\'; object-src \'none\'; img-src \'self\' data:' - } - }; -} - -exports.get = handleGet; diff --git a/src/main/resources/admin/tools/main/main.ts b/src/main/resources/admin/tools/main/main.ts new file mode 100644 index 000000000..60370361a --- /dev/null +++ b/src/main/resources/admin/tools/main/main.ts @@ -0,0 +1,71 @@ +import type { + Request, + Response, +} from '/types'; + + +import { + getLauncherPath, + getLocales +} from '/lib/xp/admin'; +// @ts-expect-error Cannot find module '/lib/mustache' or its corresponding type declarations.ts(2307) +import mustache from '/lib/mustache'; +// @ts-expect-error Cannot find module '/lib/router' or its corresponding type declarations.ts(2307) +import Router from '/lib/router'; +import { + assetUrl, + serviceUrl +} from '/lib/xp/portal'; +import { localize } from '/lib/xp/i18n'; +import { immutableGetter, getAdminUrl } from '/lib/urlHelper'; +import { + FILEPATH_MANIFEST_CJS, + FILEPATH_MANIFEST_NODE_MODULES, + GETTER_ROOT, +} from '/constants'; + +const TOOL_NAME = 'main'; +const VIEW = resolve('./main.html'); + +const router = Router(); + +router.all(`/${GETTER_ROOT}/{path:.+}`, (r: Request) => { + return immutableGetter(r); +}); + +function get(_request: Request): Response { + const params = { + appUsersBundleUrl: getAdminUrl({ + path: 'main.js' + }, TOOL_NAME), + assetsUri: assetUrl({path: ''}), + appName: localize({ + key: 'admin.tool.displayName', + bundles: ['i18n/phrases'], + locale: getLocales() + }), + configServiceUrl: serviceUrl({service: 'config'}), + jqueryUrl: getAdminUrl({ + manifestPath: FILEPATH_MANIFEST_NODE_MODULES, + path: 'jquery/dist/jquery.min.js', + }, TOOL_NAME), + jqueryUiUrl: getAdminUrl({ + manifestPath: FILEPATH_MANIFEST_NODE_MODULES, + path: 'jquery-ui/dist/jquery-ui.min.js', + }, TOOL_NAME), + launcherPath: getLauncherPath(), + }; + + return { + contentType: 'text/html', + body: mustache.render(VIEW, params), + headers: { + 'content-security-policy': 'default-src \'self\'; script-src \'self\' \'unsafe-eval\'; style-src \'self\' \'unsafe-inline\'; object-src \'none\'; img-src \'self\' data:' + } + }; +} + +router.get('', (r: Request) => get(r)); // Default admin tool path +router.get('/', (r: Request) => get(r)); // Just in case someone adds a slash on the end + +export const all = (r: Request) => router.dispatch(r); diff --git a/src/main/resources/constants.ts b/src/main/resources/constants.ts new file mode 100644 index 000000000..245a4afc9 --- /dev/null +++ b/src/main/resources/constants.ts @@ -0,0 +1,4 @@ +export const GETTER_ROOT = 'static'; +export const FILEPATH_MANIFEST_CJS = `/${GETTER_ROOT}/manifest.cjs.json`; +// export const FILEPATH_MANIFEST_ESM = `/${GETTER_ROOT}/manifest.esm.json`; +export const FILEPATH_MANIFEST_NODE_MODULES = `/${GETTER_ROOT}/node_modules-manifest.json`; diff --git a/src/main/resources/lib/ioResource.ts b/src/main/resources/lib/ioResource.ts new file mode 100644 index 000000000..7c378d59d --- /dev/null +++ b/src/main/resources/lib/ioResource.ts @@ -0,0 +1,38 @@ +import { + getResource, + readText +} from '/lib/xp/io'; + + +export function readResource(filename: string) { + const resource = getResource(filename); + if (!resource || !resource.exists()) { + throw new Error(`Empty or not found: ${filename}`); + } + let content: string; + try { + content = readText(resource.getStream()); + // log.debug('readResource: filename:%s content:%s', filename, content); + } catch (e) { + log.error(e.message); + throw new Error(`Couldn't read resource: ${filename}`); + } + return content; +} + +function jsonParseResource(filename: string) { + const content = readResource(filename); + let obj: object; + try { + obj = JSON.parse(content); + log.debug('jsonParseResource obj:%s', JSON.stringify(obj, null, 4)); + } catch (e) { + log.error(e.message); + log.info("Content dump from '" + filename + "':\n" + content); + throw new Error(`couldn't parse as JSON content of resource: ${filename}`); + } + return obj; +} + + +export default jsonParseResource; diff --git a/src/main/resources/lib/runMode.ts b/src/main/resources/lib/runMode.ts new file mode 100644 index 000000000..3c692207a --- /dev/null +++ b/src/main/resources/lib/runMode.ts @@ -0,0 +1,9 @@ +declare const Java: { + type: (_classPath: string) => { + get: () => string + } +}; + +export const XP_RUN_MODE = `${Java.type('com.enonic.xp.server.RunMode').get()}`; // PROD || DEV +export const IS_DEV_MODE = XP_RUN_MODE === 'DEV'; +export const IS_PROD_MODE = XP_RUN_MODE === 'PROD'; diff --git a/src/main/resources/lib/urlHelper.ts b/src/main/resources/lib/urlHelper.ts new file mode 100644 index 000000000..ae43411d8 --- /dev/null +++ b/src/main/resources/lib/urlHelper.ts @@ -0,0 +1,70 @@ +import type {Request, Response} from '/types'; + +// @ts-expect-error TS2307: Cannot find module '/lib/enonic/static' or its corresponding type declarations. +import { buildGetter } from '/lib/enonic/static'; +import { getToolUrl } from '/lib/xp/admin'; +import { + FILEPATH_MANIFEST_CJS, + FILEPATH_MANIFEST_NODE_MODULES, + GETTER_ROOT +} from '../constants'; +import ioResource from './ioResource'; +import { IS_DEV_MODE } from './runMode'; + + +interface UrlPostfixParams { + manifestPath?: string + path: string, +}; + +type UrlParams = UrlPostfixParams & {urlPrefix: string}; + + +const manifests = { + [FILEPATH_MANIFEST_CJS]: ioResource(FILEPATH_MANIFEST_CJS), + // [FILEPATH_MANIFEST_ESM]: ioResource(FILEPATH_MANIFEST_ESM), + [FILEPATH_MANIFEST_NODE_MODULES]: ioResource(FILEPATH_MANIFEST_NODE_MODULES), +} + +const getImmutableUrl = ({ + manifestPath = FILEPATH_MANIFEST_CJS, + path, + urlPrefix +}: UrlParams) => { + if (IS_DEV_MODE) { + manifests[manifestPath] = ioResource(manifestPath); + } + + return `${urlPrefix}/${GETTER_ROOT}/${manifests[manifestPath][path]}`; +} + +export const getAdminUrl = ({ + manifestPath = FILEPATH_MANIFEST_CJS, + path, +}: UrlPostfixParams, tool: string) => { + const urlPrefix = getToolUrl(app.name, tool); + + return getImmutableUrl({ + manifestPath, + path, + urlPrefix + }); +} + +export const immutableGetter = buildGetter({ + etag: false, // default is true in production and false in development + getCleanPath: (request: Request) => { + log.debug('request:%s', JSON.stringify(request, null, 4)); + log.debug('contextPath:%s', request.contextPath); + log.debug('rawPath:%s', request.rawPath); + + const prefix = request.contextPath; + let cleanPath = prefix ? request.rawPath.substring(prefix.length) : request.rawPath; + cleanPath = cleanPath.replace(`${GETTER_ROOT}/`, ''); + + log.debug('cleanPath:%s', cleanPath); + + return cleanPath; + }, + root: GETTER_ROOT +}) as (_request: Request) => Response; diff --git a/src/main/resources/assets/js/app/Router.ts b/src/main/resources/static/app/Router.ts similarity index 100% rename from src/main/resources/assets/js/app/Router.ts rename to src/main/resources/static/app/Router.ts diff --git a/src/main/resources/assets/js/app/UserAppPanel.ts b/src/main/resources/static/app/UserAppPanel.ts similarity index 100% rename from src/main/resources/assets/js/app/UserAppPanel.ts rename to src/main/resources/static/app/UserAppPanel.ts diff --git a/src/main/resources/assets/js/app/access/IdProviderAccess.ts b/src/main/resources/static/app/access/IdProviderAccess.ts similarity index 100% rename from src/main/resources/assets/js/app/access/IdProviderAccess.ts rename to src/main/resources/static/app/access/IdProviderAccess.ts diff --git a/src/main/resources/assets/js/app/access/IdProviderAccessControlEntry.ts b/src/main/resources/static/app/access/IdProviderAccessControlEntry.ts similarity index 100% rename from src/main/resources/assets/js/app/access/IdProviderAccessControlEntry.ts rename to src/main/resources/static/app/access/IdProviderAccessControlEntry.ts diff --git a/src/main/resources/assets/js/app/access/IdProviderAccessControlEntryJson.ts b/src/main/resources/static/app/access/IdProviderAccessControlEntryJson.ts similarity index 100% rename from src/main/resources/assets/js/app/access/IdProviderAccessControlEntryJson.ts rename to src/main/resources/static/app/access/IdProviderAccessControlEntryJson.ts diff --git a/src/main/resources/assets/js/app/access/IdProviderAccessControlList.ts b/src/main/resources/static/app/access/IdProviderAccessControlList.ts similarity index 100% rename from src/main/resources/assets/js/app/access/IdProviderAccessControlList.ts rename to src/main/resources/static/app/access/IdProviderAccessControlList.ts diff --git a/src/main/resources/assets/js/app/browse/BaseUserEvent.ts b/src/main/resources/static/app/browse/BaseUserEvent.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/BaseUserEvent.ts rename to src/main/resources/static/app/browse/BaseUserEvent.ts diff --git a/src/main/resources/assets/js/app/browse/EditPrincipalEvent.ts b/src/main/resources/static/app/browse/EditPrincipalEvent.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/EditPrincipalEvent.ts rename to src/main/resources/static/app/browse/EditPrincipalEvent.ts diff --git a/src/main/resources/assets/js/app/browse/NewPrincipalEvent.ts b/src/main/resources/static/app/browse/NewPrincipalEvent.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/NewPrincipalEvent.ts rename to src/main/resources/static/app/browse/NewPrincipalEvent.ts diff --git a/src/main/resources/assets/js/app/browse/PrincipalDuplicatedEvent.ts b/src/main/resources/static/app/browse/PrincipalDuplicatedEvent.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/PrincipalDuplicatedEvent.ts rename to src/main/resources/static/app/browse/PrincipalDuplicatedEvent.ts diff --git a/src/main/resources/assets/js/app/browse/PrincipalSynchronizedEvent.ts b/src/main/resources/static/app/browse/PrincipalSynchronizedEvent.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/PrincipalSynchronizedEvent.ts rename to src/main/resources/static/app/browse/PrincipalSynchronizedEvent.ts diff --git a/src/main/resources/assets/js/app/browse/ShowNewPrincipalDialogEvent.ts b/src/main/resources/static/app/browse/ShowNewPrincipalDialogEvent.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/ShowNewPrincipalDialogEvent.ts rename to src/main/resources/static/app/browse/ShowNewPrincipalDialogEvent.ts diff --git a/src/main/resources/assets/js/app/browse/UpdatePrincipalEvent.ts b/src/main/resources/static/app/browse/UpdatePrincipalEvent.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/UpdatePrincipalEvent.ts rename to src/main/resources/static/app/browse/UpdatePrincipalEvent.ts diff --git a/src/main/resources/assets/js/app/browse/UserBrowseItemPanel.ts b/src/main/resources/static/app/browse/UserBrowseItemPanel.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/UserBrowseItemPanel.ts rename to src/main/resources/static/app/browse/UserBrowseItemPanel.ts diff --git a/src/main/resources/assets/js/app/browse/UserBrowsePanel.ts b/src/main/resources/static/app/browse/UserBrowsePanel.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/UserBrowsePanel.ts rename to src/main/resources/static/app/browse/UserBrowsePanel.ts diff --git a/src/main/resources/assets/js/app/browse/UserBrowseToolbar.ts b/src/main/resources/static/app/browse/UserBrowseToolbar.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/UserBrowseToolbar.ts rename to src/main/resources/static/app/browse/UserBrowseToolbar.ts diff --git a/src/main/resources/assets/js/app/browse/UserItemDeletePromptEvent.ts b/src/main/resources/static/app/browse/UserItemDeletePromptEvent.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/UserItemDeletePromptEvent.ts rename to src/main/resources/static/app/browse/UserItemDeletePromptEvent.ts diff --git a/src/main/resources/assets/js/app/browse/UserItemType.ts b/src/main/resources/static/app/browse/UserItemType.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/UserItemType.ts rename to src/main/resources/static/app/browse/UserItemType.ts diff --git a/src/main/resources/assets/js/app/browse/UserItemsRowFormatter.ts b/src/main/resources/static/app/browse/UserItemsRowFormatter.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/UserItemsRowFormatter.ts rename to src/main/resources/static/app/browse/UserItemsRowFormatter.ts diff --git a/src/main/resources/assets/js/app/browse/UserItemsTreeGrid.ts b/src/main/resources/static/app/browse/UserItemsTreeGrid.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/UserItemsTreeGrid.ts rename to src/main/resources/static/app/browse/UserItemsTreeGrid.ts diff --git a/src/main/resources/assets/js/app/browse/UserTreeGridActions.ts b/src/main/resources/static/app/browse/UserTreeGridActions.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/UserTreeGridActions.ts rename to src/main/resources/static/app/browse/UserTreeGridActions.ts diff --git a/src/main/resources/assets/js/app/browse/UserTreeGridItem.ts b/src/main/resources/static/app/browse/UserTreeGridItem.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/UserTreeGridItem.ts rename to src/main/resources/static/app/browse/UserTreeGridItem.ts diff --git a/src/main/resources/assets/js/app/browse/UserTreeGridItemViewer.ts b/src/main/resources/static/app/browse/UserTreeGridItemViewer.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/UserTreeGridItemViewer.ts rename to src/main/resources/static/app/browse/UserTreeGridItemViewer.ts diff --git a/src/main/resources/assets/js/app/browse/action/DeletePrincipalAction.ts b/src/main/resources/static/app/browse/action/DeletePrincipalAction.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/action/DeletePrincipalAction.ts rename to src/main/resources/static/app/browse/action/DeletePrincipalAction.ts diff --git a/src/main/resources/assets/js/app/browse/action/EditPrincipalAction.ts b/src/main/resources/static/app/browse/action/EditPrincipalAction.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/action/EditPrincipalAction.ts rename to src/main/resources/static/app/browse/action/EditPrincipalAction.ts diff --git a/src/main/resources/assets/js/app/browse/action/NewPrincipalAction.ts b/src/main/resources/static/app/browse/action/NewPrincipalAction.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/action/NewPrincipalAction.ts rename to src/main/resources/static/app/browse/action/NewPrincipalAction.ts diff --git a/src/main/resources/assets/js/app/browse/action/SyncPrincipalAction.ts b/src/main/resources/static/app/browse/action/SyncPrincipalAction.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/action/SyncPrincipalAction.ts rename to src/main/resources/static/app/browse/action/SyncPrincipalAction.ts diff --git a/src/main/resources/assets/js/app/browse/filter/PrincipalBrowseFilterPanel.ts b/src/main/resources/static/app/browse/filter/PrincipalBrowseFilterPanel.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/filter/PrincipalBrowseFilterPanel.ts rename to src/main/resources/static/app/browse/filter/PrincipalBrowseFilterPanel.ts diff --git a/src/main/resources/assets/js/app/browse/filter/PrincipalBrowseSearchData.ts b/src/main/resources/static/app/browse/filter/PrincipalBrowseSearchData.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/filter/PrincipalBrowseSearchData.ts rename to src/main/resources/static/app/browse/filter/PrincipalBrowseSearchData.ts diff --git a/src/main/resources/assets/js/app/browse/serviceaccount/PublicKey.ts b/src/main/resources/static/app/browse/serviceaccount/PublicKey.ts similarity index 100% rename from src/main/resources/assets/js/app/browse/serviceaccount/PublicKey.ts rename to src/main/resources/static/app/browse/serviceaccount/PublicKey.ts diff --git a/src/main/resources/assets/js/app/create/NewPrincipalDialog.ts b/src/main/resources/static/app/create/NewPrincipalDialog.ts similarity index 100% rename from src/main/resources/assets/js/app/create/NewPrincipalDialog.ts rename to src/main/resources/static/app/create/NewPrincipalDialog.ts diff --git a/src/main/resources/assets/js/app/create/UserItemTypesRowFormatter.ts b/src/main/resources/static/app/create/UserItemTypesRowFormatter.ts similarity index 100% rename from src/main/resources/assets/js/app/create/UserItemTypesRowFormatter.ts rename to src/main/resources/static/app/create/UserItemTypesRowFormatter.ts diff --git a/src/main/resources/assets/js/app/create/UserItemTypesTreeGrid.ts b/src/main/resources/static/app/create/UserItemTypesTreeGrid.ts similarity index 100% rename from src/main/resources/assets/js/app/create/UserItemTypesTreeGrid.ts rename to src/main/resources/static/app/create/UserItemTypesTreeGrid.ts diff --git a/src/main/resources/assets/js/app/create/UserTypeTreeGridItem.ts b/src/main/resources/static/app/create/UserTypeTreeGridItem.ts similarity index 100% rename from src/main/resources/assets/js/app/create/UserTypeTreeGridItem.ts rename to src/main/resources/static/app/create/UserTypeTreeGridItem.ts diff --git a/src/main/resources/assets/js/app/create/UserTypesTreeGridItemViewer.ts b/src/main/resources/static/app/create/UserTypesTreeGridItemViewer.ts similarity index 100% rename from src/main/resources/assets/js/app/create/UserTypesTreeGridItemViewer.ts rename to src/main/resources/static/app/create/UserTypesTreeGridItemViewer.ts diff --git a/src/main/resources/assets/js/app/event/PrincipalServerChange.ts b/src/main/resources/static/app/event/PrincipalServerChange.ts similarity index 100% rename from src/main/resources/assets/js/app/event/PrincipalServerChange.ts rename to src/main/resources/static/app/event/PrincipalServerChange.ts diff --git a/src/main/resources/assets/js/app/event/PrincipalServerChangeItem.ts b/src/main/resources/static/app/event/PrincipalServerChangeItem.ts similarity index 100% rename from src/main/resources/assets/js/app/event/PrincipalServerChangeItem.ts rename to src/main/resources/static/app/event/PrincipalServerChangeItem.ts diff --git a/src/main/resources/assets/js/app/event/PrincipalServerEvent.ts b/src/main/resources/static/app/event/PrincipalServerEvent.ts similarity index 100% rename from src/main/resources/assets/js/app/event/PrincipalServerEvent.ts rename to src/main/resources/static/app/event/PrincipalServerEvent.ts diff --git a/src/main/resources/assets/js/app/event/PrincipalServerEventsHandler.ts b/src/main/resources/static/app/event/PrincipalServerEventsHandler.ts similarity index 100% rename from src/main/resources/assets/js/app/event/PrincipalServerEventsHandler.ts rename to src/main/resources/static/app/event/PrincipalServerEventsHandler.ts diff --git a/src/main/resources/assets/js/app/event/ReportServerChange.ts b/src/main/resources/static/app/event/ReportServerChange.ts similarity index 100% rename from src/main/resources/assets/js/app/event/ReportServerChange.ts rename to src/main/resources/static/app/event/ReportServerChange.ts diff --git a/src/main/resources/assets/js/app/event/ReportServerChangeItem.ts b/src/main/resources/static/app/event/ReportServerChangeItem.ts similarity index 100% rename from src/main/resources/assets/js/app/event/ReportServerChangeItem.ts rename to src/main/resources/static/app/event/ReportServerChangeItem.ts diff --git a/src/main/resources/assets/js/app/event/ReportServerEvent.ts b/src/main/resources/static/app/event/ReportServerEvent.ts similarity index 100% rename from src/main/resources/assets/js/app/event/ReportServerEvent.ts rename to src/main/resources/static/app/event/ReportServerEvent.ts diff --git a/src/main/resources/assets/js/app/event/UserFilteredDataScrollEvent.ts b/src/main/resources/static/app/event/UserFilteredDataScrollEvent.ts similarity index 100% rename from src/main/resources/assets/js/app/event/UserFilteredDataScrollEvent.ts rename to src/main/resources/static/app/event/UserFilteredDataScrollEvent.ts diff --git a/src/main/resources/assets/js/app/event/UserItemCreatedEvent.ts b/src/main/resources/static/app/event/UserItemCreatedEvent.ts similarity index 100% rename from src/main/resources/assets/js/app/event/UserItemCreatedEvent.ts rename to src/main/resources/static/app/event/UserItemCreatedEvent.ts diff --git a/src/main/resources/assets/js/app/event/UserItemDeletedEvent.ts b/src/main/resources/static/app/event/UserItemDeletedEvent.ts similarity index 100% rename from src/main/resources/assets/js/app/event/UserItemDeletedEvent.ts rename to src/main/resources/static/app/event/UserItemDeletedEvent.ts diff --git a/src/main/resources/assets/js/app/event/UserItemNamedEvent.ts b/src/main/resources/static/app/event/UserItemNamedEvent.ts similarity index 100% rename from src/main/resources/assets/js/app/event/UserItemNamedEvent.ts rename to src/main/resources/static/app/event/UserItemNamedEvent.ts diff --git a/src/main/resources/assets/js/app/event/UserItemUpdatedEvent.ts b/src/main/resources/static/app/event/UserItemUpdatedEvent.ts similarity index 100% rename from src/main/resources/assets/js/app/event/UserItemUpdatedEvent.ts rename to src/main/resources/static/app/event/UserItemUpdatedEvent.ts diff --git a/src/main/resources/assets/js/app/event/UserItemsStopScrollEvent.ts b/src/main/resources/static/app/event/UserItemsStopScrollEvent.ts similarity index 100% rename from src/main/resources/assets/js/app/event/UserItemsStopScrollEvent.ts rename to src/main/resources/static/app/event/UserItemsStopScrollEvent.ts diff --git a/src/main/resources/assets/js/app/event/UsersServerEventsListener.ts b/src/main/resources/static/app/event/UsersServerEventsListener.ts similarity index 100% rename from src/main/resources/assets/js/app/event/UsersServerEventsListener.ts rename to src/main/resources/static/app/event/UsersServerEventsListener.ts diff --git a/src/main/resources/assets/js/app/event/UsersServerEventsTranslator.ts b/src/main/resources/static/app/event/UsersServerEventsTranslator.ts similarity index 100% rename from src/main/resources/assets/js/app/event/UsersServerEventsTranslator.ts rename to src/main/resources/static/app/event/UsersServerEventsTranslator.ts diff --git a/src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationComboBox.ts b/src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationComboBox.ts similarity index 100% rename from src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationComboBox.ts rename to src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationComboBox.ts diff --git a/src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationLoader.ts b/src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationLoader.ts similarity index 100% rename from src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationLoader.ts rename to src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationLoader.ts diff --git a/src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionView.ts b/src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionView.ts similarity index 100% rename from src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionView.ts rename to src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionView.ts diff --git a/src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionsView.ts b/src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionsView.ts similarity index 100% rename from src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionsView.ts rename to src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionsView.ts diff --git a/src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationSelector.ts b/src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationSelector.ts similarity index 100% rename from src/main/resources/assets/js/app/inputtype/authapplicationselector/AuthApplicationSelector.ts rename to src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationSelector.ts diff --git a/src/main/resources/assets/js/app/inputtype/selector/PrincipalSelector.ts b/src/main/resources/static/app/inputtype/selector/PrincipalSelector.ts similarity index 100% rename from src/main/resources/assets/js/app/inputtype/selector/PrincipalSelector.ts rename to src/main/resources/static/app/inputtype/selector/PrincipalSelector.ts diff --git a/src/main/resources/assets/js/app/principal/FindPrincipalsRequest.ts b/src/main/resources/static/app/principal/FindPrincipalsRequest.ts similarity index 100% rename from src/main/resources/assets/js/app/principal/FindPrincipalsRequest.ts rename to src/main/resources/static/app/principal/FindPrincipalsRequest.ts diff --git a/src/main/resources/assets/js/app/principal/GetPrincipalsByKeysRequest.ts b/src/main/resources/static/app/principal/GetPrincipalsByKeysRequest.ts similarity index 100% rename from src/main/resources/assets/js/app/principal/GetPrincipalsByKeysRequest.ts rename to src/main/resources/static/app/principal/GetPrincipalsByKeysRequest.ts diff --git a/src/main/resources/assets/js/app/principal/Group.ts b/src/main/resources/static/app/principal/Group.ts similarity index 100% rename from src/main/resources/assets/js/app/principal/Group.ts rename to src/main/resources/static/app/principal/Group.ts diff --git a/src/main/resources/assets/js/app/principal/GroupJson.ts b/src/main/resources/static/app/principal/GroupJson.ts similarity index 100% rename from src/main/resources/assets/js/app/principal/GroupJson.ts rename to src/main/resources/static/app/principal/GroupJson.ts diff --git a/src/main/resources/assets/js/app/principal/IdProvider.ts b/src/main/resources/static/app/principal/IdProvider.ts similarity index 100% rename from src/main/resources/assets/js/app/principal/IdProvider.ts rename to src/main/resources/static/app/principal/IdProvider.ts diff --git a/src/main/resources/assets/js/app/principal/IdProviderJson.ts b/src/main/resources/static/app/principal/IdProviderJson.ts similarity index 100% rename from src/main/resources/assets/js/app/principal/IdProviderJson.ts rename to src/main/resources/static/app/principal/IdProviderJson.ts diff --git a/src/main/resources/assets/js/app/principal/Members.ts b/src/main/resources/static/app/principal/Members.ts similarity index 100% rename from src/main/resources/assets/js/app/principal/Members.ts rename to src/main/resources/static/app/principal/Members.ts diff --git a/src/main/resources/assets/js/app/principal/MembersJson.ts b/src/main/resources/static/app/principal/MembersJson.ts similarity index 100% rename from src/main/resources/assets/js/app/principal/MembersJson.ts rename to src/main/resources/static/app/principal/MembersJson.ts diff --git a/src/main/resources/assets/js/app/principal/PrincipalLoader.ts b/src/main/resources/static/app/principal/PrincipalLoader.ts similarity index 100% rename from src/main/resources/assets/js/app/principal/PrincipalLoader.ts rename to src/main/resources/static/app/principal/PrincipalLoader.ts diff --git a/src/main/resources/assets/js/app/principal/PublicKeyJson.ts b/src/main/resources/static/app/principal/PublicKeyJson.ts similarity index 100% rename from src/main/resources/assets/js/app/principal/PublicKeyJson.ts rename to src/main/resources/static/app/principal/PublicKeyJson.ts diff --git a/src/main/resources/assets/js/app/principal/Role.ts b/src/main/resources/static/app/principal/Role.ts similarity index 100% rename from src/main/resources/assets/js/app/principal/Role.ts rename to src/main/resources/static/app/principal/Role.ts diff --git a/src/main/resources/assets/js/app/principal/RoleJson.ts b/src/main/resources/static/app/principal/RoleJson.ts similarity index 100% rename from src/main/resources/assets/js/app/principal/RoleJson.ts rename to src/main/resources/static/app/principal/RoleJson.ts diff --git a/src/main/resources/assets/js/app/principal/User.ts b/src/main/resources/static/app/principal/User.ts similarity index 100% rename from src/main/resources/assets/js/app/principal/User.ts rename to src/main/resources/static/app/principal/User.ts diff --git a/src/main/resources/assets/js/app/principal/UserJson.ts b/src/main/resources/static/app/principal/UserJson.ts similarity index 100% rename from src/main/resources/assets/js/app/principal/UserJson.ts rename to src/main/resources/static/app/principal/UserJson.ts diff --git a/src/main/resources/assets/js/app/report/Report.ts b/src/main/resources/static/app/report/Report.ts similarity index 100% rename from src/main/resources/assets/js/app/report/Report.ts rename to src/main/resources/static/app/report/Report.ts diff --git a/src/main/resources/assets/js/app/report/Repository.ts b/src/main/resources/static/app/report/Repository.ts similarity index 100% rename from src/main/resources/assets/js/app/report/Repository.ts rename to src/main/resources/static/app/report/Repository.ts diff --git a/src/main/resources/assets/js/app/report/RepositoryComboBox.ts b/src/main/resources/static/app/report/RepositoryComboBox.ts similarity index 100% rename from src/main/resources/assets/js/app/report/RepositoryComboBox.ts rename to src/main/resources/static/app/report/RepositoryComboBox.ts diff --git a/src/main/resources/assets/js/app/report/RepositoryLoader.ts b/src/main/resources/static/app/report/RepositoryLoader.ts similarity index 100% rename from src/main/resources/assets/js/app/report/RepositoryLoader.ts rename to src/main/resources/static/app/report/RepositoryLoader.ts diff --git a/src/main/resources/assets/js/app/report/RepositoryViewer.ts b/src/main/resources/static/app/report/RepositoryViewer.ts similarity index 100% rename from src/main/resources/assets/js/app/report/RepositoryViewer.ts rename to src/main/resources/static/app/report/RepositoryViewer.ts diff --git a/src/main/resources/assets/js/app/resource/ListIdProviderApplicationsRequest.ts b/src/main/resources/static/app/resource/ListIdProviderApplicationsRequest.ts similarity index 100% rename from src/main/resources/assets/js/app/resource/ListIdProviderApplicationsRequest.ts rename to src/main/resources/static/app/resource/ListIdProviderApplicationsRequest.ts diff --git a/src/main/resources/assets/js/app/view/MembersListing.ts b/src/main/resources/static/app/view/MembersListing.ts similarity index 100% rename from src/main/resources/assets/js/app/view/MembersListing.ts rename to src/main/resources/static/app/view/MembersListing.ts diff --git a/src/main/resources/assets/js/app/view/PublicKeysGrid.ts b/src/main/resources/static/app/view/PublicKeysGrid.ts similarity index 100% rename from src/main/resources/assets/js/app/view/PublicKeysGrid.ts rename to src/main/resources/static/app/view/PublicKeysGrid.ts diff --git a/src/main/resources/assets/js/app/view/UserItemStatisticsHeader.ts b/src/main/resources/static/app/view/UserItemStatisticsHeader.ts similarity index 100% rename from src/main/resources/assets/js/app/view/UserItemStatisticsHeader.ts rename to src/main/resources/static/app/view/UserItemStatisticsHeader.ts diff --git a/src/main/resources/assets/js/app/view/UserItemStatisticsPanel.ts b/src/main/resources/static/app/view/UserItemStatisticsPanel.ts similarity index 100% rename from src/main/resources/assets/js/app/view/UserItemStatisticsPanel.ts rename to src/main/resources/static/app/view/UserItemStatisticsPanel.ts diff --git a/src/main/resources/assets/js/app/wizard/ChangeUserPasswordDialog.ts b/src/main/resources/static/app/wizard/ChangeUserPasswordDialog.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/ChangeUserPasswordDialog.ts rename to src/main/resources/static/app/wizard/ChangeUserPasswordDialog.ts diff --git a/src/main/resources/assets/js/app/wizard/GroupWizardPanel.ts b/src/main/resources/static/app/wizard/GroupWizardPanel.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/GroupWizardPanel.ts rename to src/main/resources/static/app/wizard/GroupWizardPanel.ts diff --git a/src/main/resources/assets/js/app/wizard/IdProviderAccessControlComboBox.ts b/src/main/resources/static/app/wizard/IdProviderAccessControlComboBox.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/IdProviderAccessControlComboBox.ts rename to src/main/resources/static/app/wizard/IdProviderAccessControlComboBox.ts diff --git a/src/main/resources/assets/js/app/wizard/IdProviderAccessControlEntryView.ts b/src/main/resources/static/app/wizard/IdProviderAccessControlEntryView.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/IdProviderAccessControlEntryView.ts rename to src/main/resources/static/app/wizard/IdProviderAccessControlEntryView.ts diff --git a/src/main/resources/assets/js/app/wizard/IdProviderAccessSelector.ts b/src/main/resources/static/app/wizard/IdProviderAccessSelector.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/IdProviderAccessSelector.ts rename to src/main/resources/static/app/wizard/IdProviderAccessSelector.ts diff --git a/src/main/resources/assets/js/app/wizard/IdProviderWizardActions.ts b/src/main/resources/static/app/wizard/IdProviderWizardActions.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/IdProviderWizardActions.ts rename to src/main/resources/static/app/wizard/IdProviderWizardActions.ts diff --git a/src/main/resources/assets/js/app/wizard/IdProviderWizardDataLoader.ts b/src/main/resources/static/app/wizard/IdProviderWizardDataLoader.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/IdProviderWizardDataLoader.ts rename to src/main/resources/static/app/wizard/IdProviderWizardDataLoader.ts diff --git a/src/main/resources/assets/js/app/wizard/IdProviderWizardPanel.ts b/src/main/resources/static/app/wizard/IdProviderWizardPanel.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/IdProviderWizardPanel.ts rename to src/main/resources/static/app/wizard/IdProviderWizardPanel.ts diff --git a/src/main/resources/assets/js/app/wizard/IdProviderWizardPanelParams.ts b/src/main/resources/static/app/wizard/IdProviderWizardPanelParams.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/IdProviderWizardPanelParams.ts rename to src/main/resources/static/app/wizard/IdProviderWizardPanelParams.ts diff --git a/src/main/resources/assets/js/app/wizard/IdProviderWizardStepForm.ts b/src/main/resources/static/app/wizard/IdProviderWizardStepForm.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/IdProviderWizardStepForm.ts rename to src/main/resources/static/app/wizard/IdProviderWizardStepForm.ts diff --git a/src/main/resources/assets/js/app/wizard/MembersWizardPanel.ts b/src/main/resources/static/app/wizard/MembersWizardPanel.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/MembersWizardPanel.ts rename to src/main/resources/static/app/wizard/MembersWizardPanel.ts diff --git a/src/main/resources/assets/js/app/wizard/MembersWizardStepForm.ts b/src/main/resources/static/app/wizard/MembersWizardStepForm.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/MembersWizardStepForm.ts rename to src/main/resources/static/app/wizard/MembersWizardStepForm.ts diff --git a/src/main/resources/assets/js/app/wizard/NewPublicKeyDialog.ts b/src/main/resources/static/app/wizard/NewPublicKeyDialog.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/NewPublicKeyDialog.ts rename to src/main/resources/static/app/wizard/NewPublicKeyDialog.ts diff --git a/src/main/resources/assets/js/app/wizard/OpenChangePasswordDialogEvent.ts b/src/main/resources/static/app/wizard/OpenChangePasswordDialogEvent.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/OpenChangePasswordDialogEvent.ts rename to src/main/resources/static/app/wizard/OpenChangePasswordDialogEvent.ts diff --git a/src/main/resources/assets/js/app/wizard/PasswordGenerator.ts b/src/main/resources/static/app/wizard/PasswordGenerator.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/PasswordGenerator.ts rename to src/main/resources/static/app/wizard/PasswordGenerator.ts diff --git a/src/main/resources/assets/js/app/wizard/PasswordStrengthBlock.ts b/src/main/resources/static/app/wizard/PasswordStrengthBlock.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/PasswordStrengthBlock.ts rename to src/main/resources/static/app/wizard/PasswordStrengthBlock.ts diff --git a/src/main/resources/assets/js/app/wizard/PrincipalDescriptionWizardStepForm.ts b/src/main/resources/static/app/wizard/PrincipalDescriptionWizardStepForm.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/PrincipalDescriptionWizardStepForm.ts rename to src/main/resources/static/app/wizard/PrincipalDescriptionWizardStepForm.ts diff --git a/src/main/resources/assets/js/app/wizard/PrincipalWizardDataLoader.ts b/src/main/resources/static/app/wizard/PrincipalWizardDataLoader.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/PrincipalWizardDataLoader.ts rename to src/main/resources/static/app/wizard/PrincipalWizardDataLoader.ts diff --git a/src/main/resources/assets/js/app/wizard/PrincipalWizardPanel.ts b/src/main/resources/static/app/wizard/PrincipalWizardPanel.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/PrincipalWizardPanel.ts rename to src/main/resources/static/app/wizard/PrincipalWizardPanel.ts diff --git a/src/main/resources/assets/js/app/wizard/PrincipalWizardPanelParams.ts b/src/main/resources/static/app/wizard/PrincipalWizardPanelParams.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/PrincipalWizardPanelParams.ts rename to src/main/resources/static/app/wizard/PrincipalWizardPanelParams.ts diff --git a/src/main/resources/assets/js/app/wizard/PublicKeyDetailsDialog.ts b/src/main/resources/static/app/wizard/PublicKeyDetailsDialog.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/PublicKeyDetailsDialog.ts rename to src/main/resources/static/app/wizard/PublicKeyDetailsDialog.ts diff --git a/src/main/resources/assets/js/app/wizard/RoleWizardPanel.ts b/src/main/resources/static/app/wizard/RoleWizardPanel.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/RoleWizardPanel.ts rename to src/main/resources/static/app/wizard/RoleWizardPanel.ts diff --git a/src/main/resources/assets/js/app/wizard/RolesWizardStepForm.ts b/src/main/resources/static/app/wizard/RolesWizardStepForm.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/RolesWizardStepForm.ts rename to src/main/resources/static/app/wizard/RolesWizardStepForm.ts diff --git a/src/main/resources/assets/js/app/wizard/SecurityWizardStepForm.ts b/src/main/resources/static/app/wizard/SecurityWizardStepForm.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/SecurityWizardStepForm.ts rename to src/main/resources/static/app/wizard/SecurityWizardStepForm.ts diff --git a/src/main/resources/assets/js/app/wizard/SetUserPasswordRequest.ts b/src/main/resources/static/app/wizard/SetUserPasswordRequest.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/SetUserPasswordRequest.ts rename to src/main/resources/static/app/wizard/SetUserPasswordRequest.ts diff --git a/src/main/resources/assets/js/app/wizard/UserEmailWizardStepForm.ts b/src/main/resources/static/app/wizard/UserEmailWizardStepForm.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/UserEmailWizardStepForm.ts rename to src/main/resources/static/app/wizard/UserEmailWizardStepForm.ts diff --git a/src/main/resources/assets/js/app/wizard/UserItemWizardPanel.ts b/src/main/resources/static/app/wizard/UserItemWizardPanel.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/UserItemWizardPanel.ts rename to src/main/resources/static/app/wizard/UserItemWizardPanel.ts diff --git a/src/main/resources/assets/js/app/wizard/UserItemWizardPanelParams.ts b/src/main/resources/static/app/wizard/UserItemWizardPanelParams.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/UserItemWizardPanelParams.ts rename to src/main/resources/static/app/wizard/UserItemWizardPanelParams.ts diff --git a/src/main/resources/assets/js/app/wizard/UserItemWizardStepForm.ts b/src/main/resources/static/app/wizard/UserItemWizardStepForm.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/UserItemWizardStepForm.ts rename to src/main/resources/static/app/wizard/UserItemWizardStepForm.ts diff --git a/src/main/resources/assets/js/app/wizard/UserKeyDetailsDialog.ts b/src/main/resources/static/app/wizard/UserKeyDetailsDialog.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/UserKeyDetailsDialog.ts rename to src/main/resources/static/app/wizard/UserKeyDetailsDialog.ts diff --git a/src/main/resources/assets/js/app/wizard/UserMembershipsWizardStepForm.ts b/src/main/resources/static/app/wizard/UserMembershipsWizardStepForm.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/UserMembershipsWizardStepForm.ts rename to src/main/resources/static/app/wizard/UserMembershipsWizardStepForm.ts diff --git a/src/main/resources/assets/js/app/wizard/UserPasswordWizardStepForm.ts b/src/main/resources/static/app/wizard/UserPasswordWizardStepForm.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/UserPasswordWizardStepForm.ts rename to src/main/resources/static/app/wizard/UserPasswordWizardStepForm.ts diff --git a/src/main/resources/assets/js/app/wizard/UserWizardPanel.ts b/src/main/resources/static/app/wizard/UserWizardPanel.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/UserWizardPanel.ts rename to src/main/resources/static/app/wizard/UserWizardPanel.ts diff --git a/src/main/resources/assets/js/app/wizard/action/DeleteUserItemAction.ts b/src/main/resources/static/app/wizard/action/DeleteUserItemAction.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/action/DeleteUserItemAction.ts rename to src/main/resources/static/app/wizard/action/DeleteUserItemAction.ts diff --git a/src/main/resources/assets/js/app/wizard/action/UserItemWizardActions.ts b/src/main/resources/static/app/wizard/action/UserItemWizardActions.ts similarity index 100% rename from src/main/resources/assets/js/app/wizard/action/UserItemWizardActions.ts rename to src/main/resources/static/app/wizard/action/UserItemWizardActions.ts diff --git a/src/main/resources/assets/js/graphql/GraphQlRequest.ts b/src/main/resources/static/graphql/GraphQlRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/GraphQlRequest.ts rename to src/main/resources/static/graphql/GraphQlRequest.ts diff --git a/src/main/resources/assets/js/graphql/ListGraphQlRequest.ts b/src/main/resources/static/graphql/ListGraphQlRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/ListGraphQlRequest.ts rename to src/main/resources/static/graphql/ListGraphQlRequest.ts diff --git a/src/main/resources/assets/js/graphql/aggregation/UserItemAggregationHelper.ts b/src/main/resources/static/graphql/aggregation/UserItemAggregationHelper.ts similarity index 100% rename from src/main/resources/assets/js/graphql/aggregation/UserItemAggregationHelper.ts rename to src/main/resources/static/graphql/aggregation/UserItemAggregationHelper.ts diff --git a/src/main/resources/assets/js/graphql/aggregation/UserItemBucketAggregationJson.ts b/src/main/resources/static/graphql/aggregation/UserItemBucketAggregationJson.ts similarity index 100% rename from src/main/resources/assets/js/graphql/aggregation/UserItemBucketAggregationJson.ts rename to src/main/resources/static/graphql/aggregation/UserItemBucketAggregationJson.ts diff --git a/src/main/resources/assets/js/graphql/idprovider/CreateIdProviderRequest.ts b/src/main/resources/static/graphql/idprovider/CreateIdProviderRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/idprovider/CreateIdProviderRequest.ts rename to src/main/resources/static/graphql/idprovider/CreateIdProviderRequest.ts diff --git a/src/main/resources/assets/js/graphql/idprovider/DeleteIdProviderRequest.ts b/src/main/resources/static/graphql/idprovider/DeleteIdProviderRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/idprovider/DeleteIdProviderRequest.ts rename to src/main/resources/static/graphql/idprovider/DeleteIdProviderRequest.ts diff --git a/src/main/resources/assets/js/graphql/idprovider/GetDefaultIdProviderRequest.ts b/src/main/resources/static/graphql/idprovider/GetDefaultIdProviderRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/idprovider/GetDefaultIdProviderRequest.ts rename to src/main/resources/static/graphql/idprovider/GetDefaultIdProviderRequest.ts diff --git a/src/main/resources/assets/js/graphql/idprovider/GetIdProviderByKeyRequest.ts b/src/main/resources/static/graphql/idprovider/GetIdProviderByKeyRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/idprovider/GetIdProviderByKeyRequest.ts rename to src/main/resources/static/graphql/idprovider/GetIdProviderByKeyRequest.ts diff --git a/src/main/resources/assets/js/graphql/idprovider/IdProviderListResult.ts b/src/main/resources/static/graphql/idprovider/IdProviderListResult.ts similarity index 100% rename from src/main/resources/assets/js/graphql/idprovider/IdProviderListResult.ts rename to src/main/resources/static/graphql/idprovider/IdProviderListResult.ts diff --git a/src/main/resources/assets/js/graphql/idprovider/ListIdProvidersRequest.ts b/src/main/resources/static/graphql/idprovider/ListIdProvidersRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/idprovider/ListIdProvidersRequest.ts rename to src/main/resources/static/graphql/idprovider/ListIdProvidersRequest.ts diff --git a/src/main/resources/assets/js/graphql/idprovider/SaveIdProviderRequest.ts b/src/main/resources/static/graphql/idprovider/SaveIdProviderRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/idprovider/SaveIdProviderRequest.ts rename to src/main/resources/static/graphql/idprovider/SaveIdProviderRequest.ts diff --git a/src/main/resources/assets/js/graphql/idprovider/UpdateIdProviderRequest.ts b/src/main/resources/static/graphql/idprovider/UpdateIdProviderRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/idprovider/UpdateIdProviderRequest.ts rename to src/main/resources/static/graphql/idprovider/UpdateIdProviderRequest.ts diff --git a/src/main/resources/assets/js/graphql/principal/DeletePrincipalRequest.ts b/src/main/resources/static/graphql/principal/DeletePrincipalRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/principal/DeletePrincipalRequest.ts rename to src/main/resources/static/graphql/principal/DeletePrincipalRequest.ts diff --git a/src/main/resources/assets/js/graphql/principal/GetPrincipalByKeyRequest.ts b/src/main/resources/static/graphql/principal/GetPrincipalByKeyRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/principal/GetPrincipalByKeyRequest.ts rename to src/main/resources/static/graphql/principal/GetPrincipalByKeyRequest.ts diff --git a/src/main/resources/assets/js/graphql/principal/GetPrincipalsByKeysRequest.ts b/src/main/resources/static/graphql/principal/GetPrincipalsByKeysRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/principal/GetPrincipalsByKeysRequest.ts rename to src/main/resources/static/graphql/principal/GetPrincipalsByKeysRequest.ts diff --git a/src/main/resources/assets/js/graphql/principal/GetPrincipalsExistenceRequest.ts b/src/main/resources/static/graphql/principal/GetPrincipalsExistenceRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/principal/GetPrincipalsExistenceRequest.ts rename to src/main/resources/static/graphql/principal/GetPrincipalsExistenceRequest.ts diff --git a/src/main/resources/assets/js/graphql/principal/ListItemsRequest.ts b/src/main/resources/static/graphql/principal/ListItemsRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/principal/ListItemsRequest.ts rename to src/main/resources/static/graphql/principal/ListItemsRequest.ts diff --git a/src/main/resources/assets/js/graphql/principal/ListPrincipalsNamesRequest.ts b/src/main/resources/static/graphql/principal/ListPrincipalsNamesRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/principal/ListPrincipalsNamesRequest.ts rename to src/main/resources/static/graphql/principal/ListPrincipalsNamesRequest.ts diff --git a/src/main/resources/assets/js/graphql/principal/ListPrincipalsRequest.ts b/src/main/resources/static/graphql/principal/ListPrincipalsRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/principal/ListPrincipalsRequest.ts rename to src/main/resources/static/graphql/principal/ListPrincipalsRequest.ts diff --git a/src/main/resources/assets/js/graphql/principal/ListTypesRequest.ts b/src/main/resources/static/graphql/principal/ListTypesRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/principal/ListTypesRequest.ts rename to src/main/resources/static/graphql/principal/ListTypesRequest.ts diff --git a/src/main/resources/assets/js/graphql/principal/ListUserItemsRequest.ts b/src/main/resources/static/graphql/principal/ListUserItemsRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/principal/ListUserItemsRequest.ts rename to src/main/resources/static/graphql/principal/ListUserItemsRequest.ts diff --git a/src/main/resources/assets/js/graphql/principal/group/CreateGroupRequest.ts b/src/main/resources/static/graphql/principal/group/CreateGroupRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/principal/group/CreateGroupRequest.ts rename to src/main/resources/static/graphql/principal/group/CreateGroupRequest.ts diff --git a/src/main/resources/assets/js/graphql/principal/group/UpdateGroupRequest.ts b/src/main/resources/static/graphql/principal/group/UpdateGroupRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/principal/group/UpdateGroupRequest.ts rename to src/main/resources/static/graphql/principal/group/UpdateGroupRequest.ts diff --git a/src/main/resources/assets/js/graphql/principal/role/CreateRoleRequest.ts b/src/main/resources/static/graphql/principal/role/CreateRoleRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/principal/role/CreateRoleRequest.ts rename to src/main/resources/static/graphql/principal/role/CreateRoleRequest.ts diff --git a/src/main/resources/assets/js/graphql/principal/role/UpdateRoleRequest.ts b/src/main/resources/static/graphql/principal/role/UpdateRoleRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/principal/role/UpdateRoleRequest.ts rename to src/main/resources/static/graphql/principal/role/UpdateRoleRequest.ts diff --git a/src/main/resources/assets/js/graphql/principal/user/AddPublicKeyRequest.ts b/src/main/resources/static/graphql/principal/user/AddPublicKeyRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/principal/user/AddPublicKeyRequest.ts rename to src/main/resources/static/graphql/principal/user/AddPublicKeyRequest.ts diff --git a/src/main/resources/assets/js/graphql/principal/user/CreateUserRequest.ts b/src/main/resources/static/graphql/principal/user/CreateUserRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/principal/user/CreateUserRequest.ts rename to src/main/resources/static/graphql/principal/user/CreateUserRequest.ts diff --git a/src/main/resources/assets/js/graphql/principal/user/DeletePublicKeyRequest.ts b/src/main/resources/static/graphql/principal/user/DeletePublicKeyRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/principal/user/DeletePublicKeyRequest.ts rename to src/main/resources/static/graphql/principal/user/DeletePublicKeyRequest.ts diff --git a/src/main/resources/assets/js/graphql/principal/user/UpdatePasswordRequest.ts b/src/main/resources/static/graphql/principal/user/UpdatePasswordRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/principal/user/UpdatePasswordRequest.ts rename to src/main/resources/static/graphql/principal/user/UpdatePasswordRequest.ts diff --git a/src/main/resources/assets/js/graphql/principal/user/UpdateUserRequest.ts b/src/main/resources/static/graphql/principal/user/UpdateUserRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/principal/user/UpdateUserRequest.ts rename to src/main/resources/static/graphql/principal/user/UpdateUserRequest.ts diff --git a/src/main/resources/assets/js/graphql/repository/ListRepositoriesRequest.ts b/src/main/resources/static/graphql/repository/ListRepositoriesRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/repository/ListRepositoriesRequest.ts rename to src/main/resources/static/graphql/repository/ListRepositoriesRequest.ts diff --git a/src/main/resources/assets/js/graphql/useritem/DeleteUserItemJson.ts b/src/main/resources/static/graphql/useritem/DeleteUserItemJson.ts similarity index 100% rename from src/main/resources/assets/js/graphql/useritem/DeleteUserItemJson.ts rename to src/main/resources/static/graphql/useritem/DeleteUserItemJson.ts diff --git a/src/main/resources/assets/js/graphql/useritem/DeleteUserItemRequest.ts b/src/main/resources/static/graphql/useritem/DeleteUserItemRequest.ts similarity index 100% rename from src/main/resources/assets/js/graphql/useritem/DeleteUserItemRequest.ts rename to src/main/resources/static/graphql/useritem/DeleteUserItemRequest.ts diff --git a/src/main/resources/assets/js/graphql/useritem/DeleteUserItemResult.ts b/src/main/resources/static/graphql/useritem/DeleteUserItemResult.ts similarity index 100% rename from src/main/resources/assets/js/graphql/useritem/DeleteUserItemResult.ts rename to src/main/resources/static/graphql/useritem/DeleteUserItemResult.ts diff --git a/src/main/resources/assets/js/main.ts b/src/main/resources/static/main.ts similarity index 100% rename from src/main/resources/assets/js/main.ts rename to src/main/resources/static/main.ts diff --git a/src/main/resources/static/tsconfig.json b/src/main/resources/static/tsconfig.json new file mode 100644 index 000000000..e495448da --- /dev/null +++ b/src/main/resources/static/tsconfig.json @@ -0,0 +1,26 @@ +{ + "compilerOptions": { + "baseUrl": ".", + "esModuleInterop": true, // Needed for the 'q' npm module + "module": "commonjs", + "lib": [ + "DOM", + "ES2020", + "ES2015.Promise" + ], + "moduleResolution": "node", + "paths": {}, + "rootDir": ".", + "skipLibCheck": true, + "target": "es5", // Modern browsers + "types": [ + "hasher", + "q", + "nanoid", + "owasp-password-strength-test" + ], + }, + "include": [ + "./**/*.ts" + ], +} diff --git a/src/main/resources/assets/js/util/CryptoWorker.ts b/src/main/resources/static/util/CryptoWorker.ts similarity index 100% rename from src/main/resources/assets/js/util/CryptoWorker.ts rename to src/main/resources/static/util/CryptoWorker.ts diff --git a/src/main/resources/assets/js/util/UrlHelper.ts b/src/main/resources/static/util/UrlHelper.ts similarity index 100% rename from src/main/resources/assets/js/util/UrlHelper.ts rename to src/main/resources/static/util/UrlHelper.ts diff --git a/src/main/resources/assets/js/worker/RSAKeysWorker.ts b/src/main/resources/static/worker/RSAKeysWorker.ts similarity index 100% rename from src/main/resources/assets/js/worker/RSAKeysWorker.ts rename to src/main/resources/static/worker/RSAKeysWorker.ts diff --git a/src/main/resources/tsconfig.json b/src/main/resources/tsconfig.json new file mode 100644 index 000000000..6649c2015 --- /dev/null +++ b/src/main/resources/tsconfig.json @@ -0,0 +1,31 @@ +{ + // This file is used by your code editor and the build system, + // for TypeScript files except for those under ./assets/. + // https://www.typescriptlang.org/tsconfig + "compilerOptions": { + "baseUrl": ".", + "lib": [ + "ES5" + ], + "paths": { + "/lib/xp/*": ["../../../node_modules/@enonic-types/lib-*"], + "/*": ["./*"] + }, + "rootDir": ".", + "skipLibCheck": true, + // "typeRoots": [ + // "node_modules/@types", + // "node_modules/@enonic-types" + // ], + "types": [ + "@enonic-types/global" + // "global" // When typeRoots is set the prefix @enonic-types/ must be removed. + ] + }, + "exclude": [ + "./assets/**/*", + ], + "include": [ + "./**/*.ts" + ] +} diff --git a/src/main/resources/types/PageContributions.d.ts b/src/main/resources/types/PageContributions.d.ts new file mode 100644 index 000000000..7bb74133b --- /dev/null +++ b/src/main/resources/types/PageContributions.d.ts @@ -0,0 +1,6 @@ +export interface PageContributions { + headBegin?: string[] + headEnd?: string[] + bodyBegin?: string[] + bodyEnd?: string[] +} diff --git a/src/main/resources/types/Request.d.ts b/src/main/resources/types/Request.d.ts new file mode 100644 index 000000000..1d7fe1446 --- /dev/null +++ b/src/main/resources/types/Request.d.ts @@ -0,0 +1,41 @@ +export type StringObject = Record; + +export interface DefaultHeaders extends Headers { + accept?: string + 'accept-charset'?: string + 'accept-encoding'?: string + authorization?: string + cookies?: string + 'if-none-match'?: string + language?: string + 'user-agent'?: string +} + +export type Method = 'GET'|'POST'|'HEAD'|'PUT'|'DELETE'|'PATCH' + +export type Mode = 'edit'|'inline'|'live'|'preview' + +export type Request< + Body = string, + Cookies extends StringObject = StringObject, + Headers extends StringObject = DefaultHeaders, + Params extends StringObject = StringObject, + PathParams extends StringObject = StringObject +> = { + body?: Body + branch?: string + contextPath?: string + cookies?: Cookies + headers?: Headers + host?: string + method?: Method + mode?: Mode + params?: Params + path?: string + pathParams?: PathParams + port?: string|number + rawPath?: string + remoteAddress?: string + scheme?: string + url?: string +} // Request diff --git a/src/main/resources/types/Response.d.ts b/src/main/resources/types/Response.d.ts new file mode 100644 index 000000000..b3ce4dc60 --- /dev/null +++ b/src/main/resources/types/Response.d.ts @@ -0,0 +1,33 @@ +import type {PageContributions} from './PageContributions'; + +// https://developer.enonic.com/docs/xp/stable/framework/http#http-response +export interface ComplexCookie { + value: string // Value (required) The value to store in the cookie. This example will create a cookie looking like this complex: value. + path?: string // The paths on the site where this cookie should be available from (and all containing paths). Defaults to empty + domain?: string // Add additional sites that should be able to read the cookie. Defaults to empty (Only the server that creates the cookie can read it.) + comment?: string // A comment describing the cookie. Default to `null. Deprecated and will be removed in future versions of XP. + maxAge?: number // Number of seconds before the browser is allowed to delete the cookie. Defaults to -1 (The cookie will live until the browser is shut down.) + secure?: boolean // Control if the cookie should only be accepted to be created and read over https and similar secure protocols. Defaults to false + httpOnly?: boolean // Control if the cookie is available for scripts or not. If true, only the serverside code can read the cookie. Defaults to false (Also client-side scripts can read the cookie.) + sameSite?: string // XP 7.3.0 SameSite flag for the cookie. Can be lax, strict, none or for "not set". Default is "not set", meaning "browser’s default". +} + +export interface Response< + Body = string, + Headers extends Record = { + 'content-type'?: string + 'cache-control'?: string + 'content-security-policy'?: string + etag?: string|number + } +> { + applyFilters?: boolean + body?: Body + contentType?: string + cookies?: Record + headers?: Headers + pageContributions?: PageContributions + postProcess?: boolean + redirect?: string + status?: number +} diff --git a/src/main/resources/types/index.d.ts b/src/main/resources/types/index.d.ts new file mode 100644 index 000000000..0b0901a9a --- /dev/null +++ b/src/main/resources/types/index.d.ts @@ -0,0 +1,2 @@ +export type { Request } from './Request.d'; +export type { Response } from './Response.d'; diff --git a/tsconfig.json b/tsconfig.json index 82d2985be..1b9aac367 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -16,16 +16,13 @@ "dom" ] }, - "files": [ - "./src/main/resources/assets/js/main.ts" - ], "exclude": [ "build/**/*", "out/**/*", - "node_modules/*" + "node_modules/*", + "src/main/resources/**/*" ], "include": [ - "src/**/*", "../lib-admin-ui/src/main/resources/assets/admin/common/js/_**/*.ts", ".xp/dev/lib-admin-ui/**/*.ts" ] diff --git a/tsup.config.ts b/tsup.config.ts index d0b511a4f..c5c2b92ef 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -1,58 +1,18 @@ -import { globalExternals } from "@fal-works/esbuild-plugin-global-externals"; -// import GlobalsPlugin from "esbuild-plugin-globals"; +import type { Options } from './tsup'; + import { defineConfig } from 'tsup'; -// import externalGlobalPlugin from 'esbuild-plugin-external-global'; +import { DIR_DST } from './tsup/constants'; + -export default defineConfig(() => { - return { - bundle: true, - dts: false, // d.ts files are use useless at runtime - entry: { - 'js/app-users-bundle': 'src/main/resources/assets/js/main.ts', - 'js/crypto-worker': 'src/main/resources/assets/js/worker/RSAKeysWorker.ts', - }, - // esbuildOptions(options, context) { - // options.external = [ - // 'jquery' - // ] - // }, - esbuildPlugins: [ - // GlobalsPlugin({ - // // 'jquery': 'jQuery', - // 'jquery': '$' - // }), - globalExternals({ - 'jquery': '$' - // 'jquery': 'jQuery' - }) - // externalGlobalPlugin({ - // // 'react': 'window.React', - // // 'react-dom': 'window.ReactDOM', - // 'jQuery': '$' // It seems jquery is available as $ in the global scope - // }) - ], - // external: [ - // // This will leave require('jquery') as is in the bundle - // // causes: Uncaught ReferenceError: require is not defined - // 'jquery' - // ], - format: [ - 'cjs' - ], - minify: process.env.NODE_ENV !== 'development', - noExternal: [ // Same as dependencies in package.json - /@enonic\/lib-admin-ui/, - 'hasher', - 'jquery', // This will bundle jQuery into the bundle - 'nanoid', - 'owasp-password-strength-test', - 'q' - ], - outDir: 'build/resources/main/assets', - platform: 'browser', - silent: ['QUIET', 'WARN'].includes(process.env.LOG_LEVEL_FROM_GRADLE||''), - // splitting: false, - sourcemap: process.env.NODE_ENV === 'development', - tsconfig: 'src/main/resources/assets/tsconfig.json', - }; +export default defineConfig((options: Options) => { + if (options.d === DIR_DST) { + return import('./tsup/server').then(m => m.default()); + } + if (options.d === 'build/resources/main/assets') { + return import('./tsup/assets').then(m => m.default()); + } + if (options.d === 'build/resources/main/static') { + return import('./tsup/static').then(m => m.default()); + } + throw new Error(`Unconfigured directory:${options.d}!`) }); diff --git a/tsup/assets.ts b/tsup/assets.ts new file mode 100644 index 000000000..2875d915a --- /dev/null +++ b/tsup/assets.ts @@ -0,0 +1,67 @@ +import type { Options } from '.'; + +// import { globalExternals } from "@fal-works/esbuild-plugin-global-externals"; +// import GlobalsPlugin from "esbuild-plugin-globals"; +import { defineConfig } from 'tsup'; +// const { externalGlobalPlugin } = require("esbuild-plugin-external-global"); +import esbuildPluginExternalGlobal from 'esbuild-plugin-external-global'; +import { DIR_DST } from './constants'; + + +export default function buildAssetConfig(): Options { + return { + bundle: true, + dts: false, // d.ts files are use useless at runtime + entry: { + 'js/app-users-bundle': 'src/main/resources/assets/js/main.ts', + 'js/crypto-worker': 'src/main/resources/assets/js/worker/RSAKeysWorker.ts', + }, + esbuildOptions(options, context) { + options.banner = { + js: `const jQuery = $;` // jQuery UI Tabbable requires this + }; + // options.external = [ + // 'jquery' + // ] + }, + esbuildPlugins: [ + // GlobalsPlugin({ + // // 'jquery': 'jQuery', + // 'jquery': '$' + // }), + // globalExternals({ + // 'jquery': 'window.$' + // // 'jquery': 'jQuery' + // }) + esbuildPluginExternalGlobal.externalGlobalPlugin({ + // 'react': 'window.React', + // 'react-dom': 'window.ReactDOM', + // 'jQuery': 'window.$' // It seems jquery is available as $ in the global scope + 'jquery': 'window.$' + }) + ], + // external: [ + // // This will leave require('jquery') as is in the bundle + // // causes: Uncaught ReferenceError: require is not defined + // 'jquery' + // ], + format: [ + 'cjs' + ], + minify: process.env.NODE_ENV !== 'development', + noExternal: [ // Same as dependencies in package.json + /@enonic\/lib-admin-ui/, + 'hasher', + 'jquery', // This will bundle jQuery into the bundle + 'nanoid', + 'owasp-password-strength-test', + 'q' + ], + outDir: 'build/resources/main/assets', + platform: 'browser', + silent: ['QUIET', 'WARN'].includes(process.env.LOG_LEVEL_FROM_GRADLE||''), + // splitting: false, + sourcemap: process.env.NODE_ENV === 'development', + tsconfig: 'src/main/resources/assets/tsconfig.json', + }; +} diff --git a/tsup/constants.ts b/tsup/constants.ts new file mode 100644 index 000000000..ab995304f --- /dev/null +++ b/tsup/constants.ts @@ -0,0 +1,5 @@ +export const DIR_DST = 'build/resources/main'; + +export const DIR_SRC = 'src/main/resources'; +export const DIR_SRC_ASSETS = `${DIR_SRC}/assets`; +export const DIR_SRC_STATIC = `${DIR_SRC}/static`; diff --git a/tsup/index.d.ts b/tsup/index.d.ts new file mode 100644 index 000000000..78bc72401 --- /dev/null +++ b/tsup/index.d.ts @@ -0,0 +1,5 @@ +import type { Options as TsupOptions } from 'tsup'; + +export interface Options extends TsupOptions { + d?: string +} diff --git a/tsup/server.ts b/tsup/server.ts new file mode 100644 index 000000000..21e5cc7b7 --- /dev/null +++ b/tsup/server.ts @@ -0,0 +1,161 @@ +import type { Options } from '.'; + + +import { globSync } from 'glob'; +// import { polyfillNode } from 'esbuild-plugin-polyfill-node'; +// import { print } from 'q-i'; +import { + DIR_SRC, + DIR_SRC_ASSETS, + DIR_SRC_STATIC +} from './constants'; + + +export default function buildServerConfig(): Options { + const GLOB_EXTENSIONS_SERVER = '{ts,js}'; + const FILES_SERVER = globSync( + `${DIR_SRC}/**/*.${GLOB_EXTENSIONS_SERVER}`, + { + absolute: false, + ignore: globSync(`${DIR_SRC_ASSETS}/**/*.${GLOB_EXTENSIONS_SERVER}`).concat( + globSync(`${DIR_SRC_STATIC}/**/*.${GLOB_EXTENSIONS_SERVER}`) + ) + } + ); + // print(FILES_SERVER, { maxItems: Infinity }); + + return { + bundle: true, // Needed to bundle @enonic/js-utils + dts: false, // d.ts files are use useless at runtime + entry: FILES_SERVER, + // env: { + // BROWSER_SYNC_PORT: '3000', + // }, + esbuildOptions(options, context) { + // options.alias = { + // 'alias': './src/main/resources/lib/filename.js' + // }; + + // Some node modules might need globalThis + // options.banner = { + // js: `const globalThis = (1, eval)('this');` // buffer polyfill needs this + // }; + + // If you have libs with chunks, use this to avoid collisions + options.chunkNames = '_chunks/[name]-[hash]'; + + options.mainFields = ['module', 'main']; + }, + esbuildPlugins: [ + // Some node modules might need parts of Node polyfilled: + // polyfillNode({ + // globals: { + // buffer: false, + // process: false + // }, + // polyfills: { + // _stream_duplex: false, + // _stream_passthrough: false, + // _stream_readable: false, + // _stream_transform: false, + // _stream_writable: false, + // assert: false, + // 'assert/strict': false, + // async_hooks: false, + // buffer: false, + // child_process: false, + // cluster: false, + // console: false, + // constants: false, + // crypto: false, + // dgram: false, + // diagnostics_channel: false, + // dns: false, + // domain: false, + // events: false, + // fs: false, + // 'fs/promises': false, + // http: false, + // http2: false, + // https: false, + // module: false, + // net: false, + // os: false, + // path: false, + // perf_hooks: false, + // process: false, //"empty", + // punycode: false, + // querystring: false, + // readline: false, + // repl: false, + // stream: false, + // string_decoder: false, + // sys: false, + // timers: false, + // 'timers/promises': false, + // tls: false, + // tty: false, + // url: false, + // util: false, // true, + // v8: false, + // vm: false, + // wasi: false, + // worker_threads: false, + // zlib: false, + // } + // }) // ReferenceError: "navigator" is not defined + ], + external: [ + '/lib/cache', + '/lib/enonic/static', + /^\/lib\/guillotine/, + '/lib/graphql', + '/lib/graphql-connection', + '/lib/http-client', + '/lib/license', + '/lib/mustache', + '/lib/router', + '/lib/util', + '/lib/vanilla', + '/lib/text-encoding', + '/lib/thymeleaf', + /^\/lib\/xp\//, + ], + format: 'cjs', + inject: [ + // Injects makes it possible to use some functionality in any file :) + // However it also makes every file larger, unless splitting: true + // If for some reason you cannot use code splitting, it is better + // to import a polyfill only in the entries that needs it. + // Code-js polyfills share code, so together they don't add the sum of all the polyfills. + // For example injecting both number/is-finite and is-integer only adds 60K, not 108K + + // Here are some things Nashorn doesn't support, comment them in to inject them: + // 'node_modules/core-js/stable/array/flat.js', // 69K (18K) minified + // 'node_modules/core-js/stable/array/includes.js', // 60K (15K) + // 'node_modules/core-js/stable/math/trunc.js', // 53K (14K) + // 'node_modules/core-js/stable/number/is-finite.js', // 54K (14K) + // 'node_modules/core-js/stable/number/is-integer.js', // 54K (14K) + // 'node_modules/core-js/stable/parse-float.js', // 59K (15K) + // 'node_modules/core-js/stable/reflect/index.js', // 88K (22K) + // 'node_modules/core-js/stable/string/pad-start.js', + + // TIP: I used this command to find sizes + // npm --silent run clean && npm --silent run build:server; ls -lh build/resources/main/empty.js; npm --silent run clean && npm --silent run build:server -- --minify; ls -lh build/resources/main/empty.js + ], + minify: false, // Minifying server files makes debugging harder + + // TIP: Command to check if there are any bad requires left behind + // grep -r 'require("' build/resources/main | grep -v 'require("/'|grep -v chunk + noExternal: [], + + platform: 'neutral', + silent: ['QUIET', 'WARN'].includes(process.env.LOG_LEVEL_FROM_GRADLE||''), + shims: false, // https://tsup.egoist.dev/#inject-cjs-and-esm-shims + splitting: true, + sourcemap: false, + target: 'es5', + tsconfig: 'src/main/resources/tsconfig.json', + }; +} + diff --git a/tsup/static.ts b/tsup/static.ts new file mode 100644 index 000000000..afa135227 --- /dev/null +++ b/tsup/static.ts @@ -0,0 +1,92 @@ +import type { Options } from '.'; + + +import CopyWithHashPlugin from '@enonic/esbuild-plugin-copy-with-hash'; +import TsupPluginManifest from '@enonic/tsup-plugin-manifest'; +// import { globSync } from 'glob'; +import { + DIR_DST, + DIR_SRC_STATIC +} from './constants'; + + +export default function buildStaticConfig(): Options { + const DIR_DST_STATIC = `${DIR_DST}/static`; + // const GLOB_EXTENSIONS_STATIC = '{tsx,ts,jsx,js}'; + // const FILES_STATIC = globSync(`${DIR_SRC_STATIC}/**/*.${GLOB_EXTENSIONS_STATIC}`); + + // const entry = {}; + // for (let i = 0; i < FILES_STATIC.length; i++) { + // const element = FILES_STATIC[i]; + // entry[element + // .replace(`${DIR_SRC_STATIC}/`, '') // Remove path + // .replace(/\.[^.]+$/, '') // Remove extension + // ] = element; + // } + return { + bundle: true, + dts: false, + // entry, + entry: { + 'app-users-bundle': 'src/main/resources/static/main.ts', + 'crypto-worker': 'src/main/resources/static/worker/RSAKeysWorker.ts', + }, + // esbuildOptions(options, context) { + // // options.banner = { + // // js: `const jQuery = window.$;` // jQuery UI Tabbable requires this + // // }; + // // options.external = [ + // // 'jquery' + // // ] + // }, + esbuildPlugins: [ + CopyWithHashPlugin({ + context: 'node_modules', + manifest: `node_modules-manifest.json`, + patterns: [ + 'jquery/dist/*.*', + 'jquery-ui/dist/*.*', + ] + }), + TsupPluginManifest({ + generate: (entries) => {// Executed once per format + const newEntries = {}; + Object.entries(entries).forEach(([k,v]) => { + console.log(k,v); + const ext = v.split('.').pop() as string; + const parts = k.replace(`${DIR_SRC_STATIC}/`, '').split('.'); + parts.pop(); + parts.push(ext); + newEntries[parts.join('.')] = v.replace(`${DIR_DST_STATIC}/`, ''); + }); + return newEntries; + } + }), + ], + format: [ + 'cjs' + ], + + minify: false, + // minify: process.env.NODE_ENV !== 'development', + + noExternal: [ // Same as dependencies in package.json + /@enonic\/lib-admin-ui.*/, + 'hasher', + // 'jquery', // This will bundle jQuery into the bundle + 'nanoid', + 'owasp-password-strength-test', + 'q' + ], + outDir: 'build/resources/main/static', + platform: 'browser', + silent: ['QUIET', 'WARN'].includes(process.env.LOG_LEVEL_FROM_GRADLE||''), + splitting: false, + + sourcemap: false, + // sourcemap: process.env.NODE_ENV === 'development', + // sourcemap: true, + + tsconfig: 'src/main/resources/static/tsconfig.json', + }; +} From 4a40ceb6553e28894b43a626ad04dc6c19541864 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Mon, 18 Sep 2023 15:22:06 +0200 Subject: [PATCH 08/43] wip #1817 commiting to discuss something --- build.gradle | 2 +- package.json | 2 + src/main/resources/lib/{auth.js => auth.ts} | 24 +-- .../resources/lib/{common.js => common.ts} | 106 ++++++----- .../resources/lib/{groups.js => groups.ts} | 0 src/main/resources/lib/idproviders.js | 52 ------ src/main/resources/lib/idproviders.ts | 70 +++++++ ...missionReports.js => permissionReports.ts} | 0 src/main/resources/lib/principals.js | 154 ---------------- src/main/resources/lib/principals.ts | 171 ++++++++++++++++++ .../lib/{repositories.js => repositories.ts} | 13 +- src/main/resources/lib/{roles.js => roles.ts} | 0 .../lib/{useritems.js => useritems.ts} | 0 src/main/resources/lib/{users.js => users.ts} | 0 src/main/resources/lib/{util.js => util.ts} | 0 src/main/resources/services/config/config.js | 27 --- src/main/resources/services/config/config.ts | 30 +++ .../resources/services/graphql/graphql.js | 23 --- .../resources/services/graphql/graphql.ts | 23 +++ .../graphql/schema/{index.js => index.ts} | 0 .../schema/{mutation.js => mutation.ts} | 0 .../graphql/schema/{query.js => query.ts} | 108 ++++++----- .../resources/services/graphql/schemaUtil.js | 6 - .../resources/services/graphql/schemaUtil.ts | 5 + .../graphql/types/{enums.js => enums.ts} | 14 +- .../resources/services/graphql/types/index.js | 5 - .../resources/services/graphql/types/index.ts | 6 + .../services/graphql/types/inputs.js | 45 ----- .../services/graphql/types/inputs.ts | 48 +++++ .../{aggregations.js => aggregations.ts} | 26 +-- .../objects/{connection.js => connection.ts} | 41 +++-- .../objects/{idProvider.js => idProvider.ts} | 72 +++++--- .../types/objects/{index.js => index.ts} | 2 +- .../objects/{principal.js => principal.ts} | 0 .../objects/{repository.js => repository.ts} | 0 .../types/objects/{types.js => types.ts} | 18 +- .../graphql/types/objects/userItem.js | 38 ---- .../graphql/types/objects/userItem.ts | 38 ++++ .../services/graphql/{utils.js => utils.ts} | 8 +- src/main/resources/services/i18n/i18n.js | 21 --- src/main/resources/services/i18n/i18n.ts | 14 ++ .../AuthApplicationSelector.ts | 5 - .../resources/static/app/inputtype/index.ts | 2 + src/main/resources/static/main.ts | 11 +- 44 files changed, 654 insertions(+), 576 deletions(-) rename src/main/resources/lib/{auth.js => auth.ts} (89%) rename src/main/resources/lib/{common.js => common.ts} (68%) rename src/main/resources/lib/{groups.js => groups.ts} (100%) delete mode 100644 src/main/resources/lib/idproviders.js create mode 100644 src/main/resources/lib/idproviders.ts rename src/main/resources/lib/{permissionReports.js => permissionReports.ts} (100%) delete mode 100644 src/main/resources/lib/principals.js create mode 100644 src/main/resources/lib/principals.ts rename src/main/resources/lib/{repositories.js => repositories.ts} (59%) rename src/main/resources/lib/{roles.js => roles.ts} (100%) rename src/main/resources/lib/{useritems.js => useritems.ts} (100%) rename src/main/resources/lib/{users.js => users.ts} (100%) rename src/main/resources/lib/{util.js => util.ts} (100%) delete mode 100644 src/main/resources/services/config/config.js create mode 100644 src/main/resources/services/config/config.ts delete mode 100644 src/main/resources/services/graphql/graphql.js create mode 100644 src/main/resources/services/graphql/graphql.ts rename src/main/resources/services/graphql/schema/{index.js => index.ts} (100%) rename src/main/resources/services/graphql/schema/{mutation.js => mutation.ts} (100%) rename src/main/resources/services/graphql/schema/{query.js => query.ts} (56%) delete mode 100644 src/main/resources/services/graphql/schemaUtil.js create mode 100644 src/main/resources/services/graphql/schemaUtil.ts rename src/main/resources/services/graphql/types/{enums.js => enums.ts} (74%) delete mode 100644 src/main/resources/services/graphql/types/index.js create mode 100644 src/main/resources/services/graphql/types/index.ts delete mode 100644 src/main/resources/services/graphql/types/inputs.js create mode 100644 src/main/resources/services/graphql/types/inputs.ts rename src/main/resources/services/graphql/types/objects/{aggregations.js => aggregations.ts} (62%) rename src/main/resources/services/graphql/types/objects/{connection.js => connection.ts} (66%) rename src/main/resources/services/graphql/types/objects/{idProvider.js => idProvider.ts} (59%) rename src/main/resources/services/graphql/types/objects/{index.js => index.ts} (97%) rename src/main/resources/services/graphql/types/objects/{principal.js => principal.ts} (100%) rename src/main/resources/services/graphql/types/objects/{repository.js => repository.ts} (100%) rename src/main/resources/services/graphql/types/objects/{types.js => types.ts} (60%) delete mode 100644 src/main/resources/services/graphql/types/objects/userItem.js create mode 100644 src/main/resources/services/graphql/types/objects/userItem.ts rename src/main/resources/services/graphql/{utils.js => utils.ts} (69%) delete mode 100644 src/main/resources/services/i18n/i18n.js create mode 100644 src/main/resources/services/i18n/i18n.ts create mode 100644 src/main/resources/static/app/inputtype/index.ts diff --git a/build.gradle b/build.gradle index 485109779..aa0d53658 100644 --- a/build.gradle +++ b/build.gradle @@ -41,7 +41,7 @@ dependencies { include "com.enonic.xp:lib-io:${xpVersion}" include "com.enonic.lib:lib-admin-ui:${libAdminUiVersion}" devResources "com.enonic.lib:lib-admin-ui:${libAdminUiVersion}" - include "com.enonic.lib:lib-graphql:2.0.1" + include "com.enonic.lib:lib-graphql:2.1.0" include "com.enonic.lib:lib-mustache:2.1.0" include 'com.enonic.lib:lib-router:3.1.0' include 'com.enonic.lib:lib-static:1.0.3' diff --git a/package.json b/package.json index 247005629..179710f50 100644 --- a/package.json +++ b/package.json @@ -31,8 +31,10 @@ "devDependencies": { "@enonic-types/global": "^7.13.2", "@enonic-types/lib-admin": "^7.13.2", + "@enonic-types/lib-auth": "^7.13.2", "@enonic-types/lib-i18n": "^7.13.2", "@enonic-types/lib-io": "^7.13.2", + "@enonic-types/lib-node": "^7.13.2", "@enonic-types/lib-portal": "^7.13.2", "@enonic/esbuild-plugin-copy-with-hash": "^0.0.1", "@enonic/eslint-config": "^1.2.0", diff --git a/src/main/resources/lib/auth.js b/src/main/resources/lib/auth.ts similarity index 89% rename from src/main/resources/lib/auth.js rename to src/main/resources/lib/auth.ts index 7d72e56d3..b3ee954cf 100644 --- a/src/main/resources/lib/auth.js +++ b/src/main/resources/lib/auth.ts @@ -1,6 +1,6 @@ -var authLib = require('/lib/xp/auth'); +import { hasRole } from '/lib/xp/auth'; -var Roles = { +const Roles = { ADMIN: 'system.admin', EVERYONE: 'system.everyone', AUTHENTICATED: 'system.authenticated', @@ -31,7 +31,7 @@ function nullOrValue(value) { * @param {string} params.key IdProvider key. * @returns {object} the id provider specified, or null if it doesn't exist. */ -exports.getIdProvider = function (params) { +export function getIdProvider(params) { var bean = __.newBean('com.enonic.xp.app.users.lib.auth.GetIdProviderHandler'); bean.setIdProviderKey(required(params, 'key')); return __.toNativeObject(bean.getIdProvider()); @@ -42,7 +42,7 @@ exports.getIdProvider = function (params) { * * @returns {object[]} Array of id providers. */ -exports.getIdProviders = function () { +export function getIdProviders() { var bean = __.newBean('com.enonic.xp.app.users.lib.auth.GetIdProvidersHandler'); return __.toNativeObject(bean.getIdProviders()); }; @@ -54,7 +54,7 @@ exports.getIdProviders = function () { * @param {string} params.key Application key of the ID Provider application. * @returns {string} The ID provider mode. */ -exports.getIdProviderMode = function (params) { +export function getIdProviderMode(params) { var bean = __.newBean('com.enonic.xp.app.users.lib.auth.GetIdProviderModeHandler'); bean.setApplicationKey(required(params, 'key')); return bean.getIdProviderMode(); @@ -67,7 +67,7 @@ exports.getIdProviderMode = function (params) { * @param {string} params.key Key of the id provider to fetch permissions for. * @returns {object[]} Returns the list of principals with access level. */ -exports.getPermissions = function (params) { +export function getPermissions(params) { var bean = __.newBean('com.enonic.xp.app.users.lib.auth.GetPermissionsHandler'); bean.setIdProviderKey(required(params, 'key')); return __.toNativeObject(bean.getPermissions()); @@ -78,7 +78,7 @@ exports.getPermissions = function (params) { * * @returns {object[]} Returns the list of principals with access level. */ -exports.defaultPermissions = function () { +export function defaultPermissions() { var bean = __.newBean('com.enonic.xp.app.users.lib.auth.DefaultPermissionsHandler'); return __.toNativeObject(bean.defaultPermissions()); }; @@ -92,7 +92,7 @@ exports.defaultPermissions = function () { * @param {object} [params.idProviderConfig] ID Provider configuration. * @param {object} [params.permissions] Id provider permissions. */ -exports.createIdProvider = function (params) { +export function createIdProvider(params) { var bean = __.newBean('com.enonic.xp.app.users.lib.auth.CreateIdProviderHandler'); bean.setName(required(params, 'name')); @@ -113,7 +113,7 @@ exports.createIdProvider = function (params) { * @param {object} [params.permissions] Id provider permissions. * @returns {object} The updated id provider. */ -exports.modifyIdProvider = function (params) { +export function modifyIdProvider(params) { var bean = __.newBean('com.enonic.xp.app.users.lib.auth.ModifyIdProviderHandler'); bean.setIdProviderKey(required(params, 'key')); @@ -130,12 +130,12 @@ exports.modifyIdProvider = function (params) { * @param {string} params.keys Array of id provider keys to delete. * @returns {object} the id providers specified, or null if it doesn't exist. */ -exports.deleteIdProviders = function (params) { +export function deleteIdProviders(params) { var bean = __.newBean('com.enonic.xp.app.users.lib.auth.DeleteIdProvidersHandler'); bean.setIdProviderKeys(__.toScriptValue(required(params, 'keys'))); return __.toNativeObject(bean.deleteIdProviders()); }; -exports.isAdmin = function() { - return authLib.hasRole(Roles.ADMIN); +export function isAdmin() { + return hasRole(Roles.ADMIN); }; diff --git a/src/main/resources/lib/common.js b/src/main/resources/lib/common.ts similarity index 68% rename from src/main/resources/lib/common.js rename to src/main/resources/lib/common.ts index a6ad1a82c..dc90e1f4a 100644 --- a/src/main/resources/lib/common.js +++ b/src/main/resources/lib/common.ts @@ -1,50 +1,49 @@ -var nodeLib = require('/lib/xp/node'); -var namePrettyfier = Java.type('com.enonic.xp.name.NamePrettyfier'); +import { connect } from '/lib/xp/node'; -var REPO_NAME = 'system-repo'; -var REPO_BRANCH = 'master'; -var MAX_COUNT = -1; -var SYSTEM_ADMIN = 'role:system.admin'; +const namePrettyfier = Java.type('com.enonic.xp.name.NamePrettyfier'); -var UserItemType = exports.UserItemType = { +const REPO_NAME = 'system-repo'; +const REPO_BRANCH = 'master'; +const MAX_COUNT = -1; +const SYSTEM_ADMIN = 'role:system.admin'; + +export const UserItemType = { ROLE: 'ROLE', USER: 'USER', GROUP: 'GROUP', - ID_PROVIDER: 'ID_PROVIDER' -}; -exports.UserItemType.all = function () { - return [ - UserItemType.ROLE, - UserItemType.USER, - UserItemType.GROUP, - UserItemType.ID_PROVIDER - ]; + ID_PROVIDER: 'ID_PROVIDER', + all: () => { + return [ + UserItemType.ROLE, + UserItemType.USER, + UserItemType.GROUP, + UserItemType.ID_PROVIDER + ]; + } }; -var PrincipalType = exports.PrincipalType = { +export const PrincipalType = { ROLE: 'ROLE', USER: 'USER', - GROUP: 'GROUP' -}; -exports.PrincipalType.all = function () { - return [PrincipalType.ROLE, PrincipalType.USER, PrincipalType.GROUP]; + GROUP: 'GROUP', + all: () => { + return [PrincipalType.ROLE, PrincipalType.USER, PrincipalType.GROUP]; + } }; -exports.singleOrArray = function (value) { +export function singleOrArray(value) { return value && value.length === 1 ? value[0] : value; }; -function isString(str) { +export function isString(str) { return (typeof str === 'string') || (str instanceof String); } -exports.isString = isString; - -exports.refresh = function (repo) { +export function refresh(repo) { newConnection(repo).refresh('SEARCH'); }; -exports.required = function (params, name, skipTrimming) { +export function required(params, name, skipTrimming?: boolean) { var value = params[name]; if (value === undefined || value === null) { throw new Error("Parameter '" + name + "' is required"); @@ -55,7 +54,7 @@ exports.required = function (params, name, skipTrimming) { return value; }; -exports.default = function (params, name, defaultValue) { +export default function(params, name, defaultValue) { var value = params[name]; if (value === undefined || value === null) { return defaultValue; @@ -63,15 +62,16 @@ exports.default = function (params, name, defaultValue) { return value; }; -exports.getByIds = function (ids, repo) { +export function getByIds(ids, repo?: string) { return newConnection(repo).get(ids); }; -exports.delete = function (ids, repo) { +function _delete(ids, repo) { return newConnection(repo).delete(ids); -}; +} +export { _delete as delete }; -exports.keysToPaths = function (keys) { +export function keysToPaths(keys) { return keys.map(function (key) { if (isIdProvider(key)) { return '/identity/' + idProviderFromKey(key); @@ -99,27 +99,27 @@ exports.keysToPaths = function (keys) { }); }; -exports.isUser = function isUser(key) { - return exports.typeFromKey(key).toUpperCase() === PrincipalType.USER; +export function isUser(key) { + return typeFromKey(key).toUpperCase() === PrincipalType.USER; }; -exports.isGroup = function isGroup(key) { - return exports.typeFromKey(key).toUpperCase() === PrincipalType.GROUP; +export function isGroup(key) { + return typeFromKey(key).toUpperCase() === PrincipalType.GROUP; }; -exports.isRole = function isRole(key) { - return exports.typeFromKey(key).toUpperCase() === PrincipalType.ROLE; +export function isRole(key) { + return typeFromKey(key).toUpperCase() === PrincipalType.ROLE; }; -exports.isIdProvider = function isIdProvider(key) { +export function isIdProvider(key) { return splitKey(key).length === 1; }; -exports.isSystemAdmin = function isSystemAdmin(key) { +export function isSystemAdmin(key) { return key === SYSTEM_ADMIN; } -exports.createQueryByField = function (field, values) { +export function createQueryByField(field, values) { if (!values || !field) { return null; } @@ -137,7 +137,7 @@ function serializeValue(value) { return typeof value === 'string' ? '"' + value + '"' : value; } -exports.extensionFromMimeType = function (mimeType) { +export function extensionFromMimeType (mimeType) { var ext = ''; if (mimeType.indexOf('image/png') > -1) { ext = '.png'; @@ -167,7 +167,7 @@ function splitKey(key) { return parts; } -exports.idProviderFromKey = function idProviderFromKey(key) { +export function idProviderFromKey(key) { var parts = splitKey(key); if (parts[0].toUpperCase() === PrincipalType.ROLE) { throw new Error( @@ -177,7 +177,7 @@ exports.idProviderFromKey = function idProviderFromKey(key) { return parts.length === 1 ? parts[0] : parts[1]; }; -exports.nameFromKey = function nameFromKey(key) { +export function nameFromKey(key) { var parts = splitKey(key); if (parts.length === 1) { throw new Error("Key don't have name [" + key + ']'); @@ -185,7 +185,7 @@ exports.nameFromKey = function nameFromKey(key) { return parts[0].toUpperCase() !== PrincipalType.ROLE ? parts[2] : parts[1]; }; -exports.typeFromKey = function typeFromKey(key) { +export function typeFromKey(key) { var parts = splitKey(key); if (parts.length === 1) { throw new Error("Key don't have type [" + key + ']'); @@ -193,11 +193,11 @@ exports.typeFromKey = function typeFromKey(key) { return parts[0]; }; -exports.prettifyName = function (text) { +export function prettifyName(text) { return namePrettyfier.create(text); }; -exports.querySingle = function (query, repo) { +export function querySingle(query, repo) { var results = queryAll({ start: 0, count: 1, @@ -207,15 +207,15 @@ exports.querySingle = function (query, repo) { return results.total === 1 ? results.hits[0] : null; }; -exports.create = function (params, repo) { +export function create(params, repo) { return newConnection(repo).create(params); }; -exports.update = function (params, repo) { +export function update(params, repo) { return newConnection(repo).modify(params); }; -exports.queryAll = function queryAll(params, repo) { +export function queryAll(params, repo?: string) { var start = params.start || 0; var count = params.count == null ? MAX_COUNT : params.count; @@ -245,11 +245,9 @@ exports.queryAll = function queryAll(params, repo) { }; }; -function newConnection(repo, branch) { - return nodeLib.connect({ +export function newConnection(repo: string, branch?: string) { + return connect({ repoId: repo || REPO_NAME, branch: branch || REPO_BRANCH }); } - -exports.newConnection = newConnection; diff --git a/src/main/resources/lib/groups.js b/src/main/resources/lib/groups.ts similarity index 100% rename from src/main/resources/lib/groups.js rename to src/main/resources/lib/groups.ts diff --git a/src/main/resources/lib/idproviders.js b/src/main/resources/lib/idproviders.js deleted file mode 100644 index a559cd9ea..000000000 --- a/src/main/resources/lib/idproviders.js +++ /dev/null @@ -1,52 +0,0 @@ -var common = require('./common'); -var authLib = require('./auth'); - -var DEFAULT_KEY = 'default'; - -module.exports = { - getByKey: function(key) { - return authLib.getIdProvider({key: key}); - }, - list: authLib.getIdProviders, - getDefault: function () { - return {key: 'default'}; - }, - create: function(params) { - var name = common.required(params, 'key'); - - return authLib.createIdProvider({ - name: common.prettifyName(name), - displayName: params.displayName, - description: params.description, - idProviderConfig: params.idProviderConfig, - permissions: params.permissions || [] - }); - }, - update: function(params) { - var key = common.required(params, 'key'); - - return authLib.modifyIdProvider({ - key: key, - editor: function (idProvider) { - var newIdProvider = idProvider; - newIdProvider.displayName = params.displayName; - newIdProvider.description = params.description; - newIdProvider.idProviderConfig = params.idProviderConfig; - return newIdProvider; - }, - permissions: params.permissions || [] - }); - }, - delete: function(keys) { - return authLib.deleteIdProviders({keys: keys}); - }, - getIdProviderMode: function(applicationKey) { - return authLib.getIdProviderMode({key:applicationKey}); - }, - getPermissions: function(key) { - if (key === DEFAULT_KEY) { - return authLib.defaultPermissions(); - } - return authLib.getPermissions({key: key}); - } -}; diff --git a/src/main/resources/lib/idproviders.ts b/src/main/resources/lib/idproviders.ts new file mode 100644 index 000000000..5d242175e --- /dev/null +++ b/src/main/resources/lib/idproviders.ts @@ -0,0 +1,70 @@ +import { + prettifyName, + required +} from './common'; +import { + createIdProvider, + defaultPermissions, + deleteIdProviders, + getIdProvider, + getIdProviderMode as _getIdProviderMode, + getIdProviders, + getPermissions as _getPermissions, + modifyIdProvider +} from './auth'; + +const DEFAULT_KEY = 'default'; + +export function getByKey(key) { + return getIdProvider({key: key}); +} + +export const list = getIdProviders; + +export function getDefault() { + return {key: 'default'}; +} + +export function create(params) { + var name = required(params, 'key'); + + return createIdProvider({ + name: prettifyName(name), + displayName: params.displayName, + description: params.description, + idProviderConfig: params.idProviderConfig, + permissions: params.permissions || [] + }); +} + +export function update(params) { + var key = required(params, 'key'); + + return modifyIdProvider({ + key: key, + editor: function (idProvider) { + var newIdProvider = idProvider; + newIdProvider.displayName = params.displayName; + newIdProvider.description = params.description; + newIdProvider.idProviderConfig = params.idProviderConfig; + return newIdProvider; + }, + permissions: params.permissions || [] + }); +} + +function _delete(keys) { + return deleteIdProviders({keys: keys}); +} +export { _delete as delete }; + +export function getIdProviderMode(applicationKey) { + return _getIdProviderMode({key:applicationKey}); +} + +export function getPermissions(key) { + if (key === DEFAULT_KEY) { + return defaultPermissions(); + } + return _getPermissions({key: key}); +} diff --git a/src/main/resources/lib/permissionReports.js b/src/main/resources/lib/permissionReports.ts similarity index 100% rename from src/main/resources/lib/permissionReports.js rename to src/main/resources/lib/permissionReports.ts diff --git a/src/main/resources/lib/principals.js b/src/main/resources/lib/principals.js deleted file mode 100644 index dab3adc72..000000000 --- a/src/main/resources/lib/principals.js +++ /dev/null @@ -1,154 +0,0 @@ -var common = require('./common'); -var authLib = require('/lib/xp/auth'); - -module.exports = { - getByKeys: function (keys) { - var noKeys = keys == null || (keys instanceof Array && keys.length === 0); - - // users and groups have their keys as _id, but roles have them stored as key - var principals = noKeys ? [] : common.queryAll({ - query: - common.createQueryByField('_id', keys) + - ' OR ' + - common.createQueryByField('key', keys) - }).hits; - - return keys instanceof Array ? principals : common.singleOrArray(principals); - }, - getMemberships: function (key, transitive) { - return authLib.getMemberships(key, transitive); - }, - addMemberships: function(key, memberships) { - var addMms = [].concat(memberships).map(function(current) { - module.exports.addMembers(current, key); - return current; - }); - return addMms; - }, - removeMemberships: function(key, memberships) { - var removeMms = [].concat(memberships).map(function(current) { - module.exports.removeMembers(current, key); - return current; - }); - return removeMms; - }, - updateMemberships: function(key, addMms, removeMms) { - if (addMms && addMms.length > 0) { - module.exports.addMemberships(key, addMms); - } - if (removeMms && removeMms.length > 0) { - module.exports.removeMemberships(key, removeMms); - } - }, - getMembers: function(key) { - return authLib.getMembers(key); - }, - addMembers: function(key, members) { - try { - authLib.addMembers(key, members); - } catch (e) { - log.error( - 'Could not add members ' + - JSON.stringify(members) + - ' to [' + - key + - ']', - e - ); - } - return members; - }, - removeMembers: function(key, members) { - try { - authLib.removeMembers(key, members); - } catch (e) { - log.error( - 'Could not remove members ' + - JSON.stringify(members) + - ' from [' + - key + - ']', - e - ); - } - return members; - }, - updateMembers: function(key, addMs, removeMs) { - if (addMs && addMs.length > 0) { - module.exports.addMembers(key, addMs); - } - if (removeMs && removeMs.length > 0) { - module.exports.removeMembers(key, removeMs); - } - }, - list: function (idProviderKey, types, query, start, count, sort) { - return common.queryAll({ - query: createPrincipalQuery(idProviderKey, types, query), - start: start, - count: count, - sort: sort - }); - }, - delete: function(keys) { - return keys.map(function(key) { - try { - var deleted = authLib.deletePrincipal(key); - return { - key: key, - deleted: deleted, - reason: deleted ? '' : 'Principal [' + key + '] could not be deleted' - }; - } catch (e) { - return { - key: key, - deleted: false, - reason: e.message - }; - } - }); - }, - Type: common.PrincipalType -}; - -function createPrincipalQuery(idProviderKey, types, query) { - var q = query ? textQuery(query) : ''; - if (!types) { - q += (q ? ' AND ' : '') + idProviderQuery(idProviderKey); - } else { - var tq = ''; - types.forEach(function(type, index) { - var add; - switch (type) { - case common.PrincipalType.ROLE: - add = rolesQuery(); - break; - case common.PrincipalType.GROUP: - case common.PrincipalType.USER: - add = idProviderQuery(idProviderKey, type); - break; - default: // none - } - tq += (index > 0 ? ' OR ' : '') + add; - }); - q += q ? ' AND (' + tq + ')' : tq; - } - return q; -} - -function textQuery(query) { - var q = '"_allText,displayName","' + query + '","AND"'; - return '(fulltext(' + q + ') OR ngram(' + q + '))'; -} - -function rolesQuery() { - return '_parentPath="/identity/roles"'; -} - -function idProviderQuery(key, type) { - return ( - '(userStoreKey="' + - key + - '"' + - (type ? 'AND principalType="' + type + '")' : ')') - ); -} diff --git a/src/main/resources/lib/principals.ts b/src/main/resources/lib/principals.ts new file mode 100644 index 000000000..29fab26da --- /dev/null +++ b/src/main/resources/lib/principals.ts @@ -0,0 +1,171 @@ +import { + createQueryByField, + PrincipalType, + queryAll, + singleOrArray +} from './common'; +import { deletePrincipal } from '/lib/xp/auth'; + + +export function getByKeys(keys) { + var noKeys = keys == null || (keys instanceof Array && keys.length === 0); + + // users and groups have their keys as _id, but roles have them stored as key + var principals = noKeys ? [] : queryAll({ + query: + createQueryByField('_id', keys) + + ' OR ' + + createQueryByField('key', keys) + }).hits; + + return keys instanceof Array ? principals : singleOrArray(principals); +} + +export function getMemberships(key, transitive) { + return authLib.getMemberships(key, transitive); +} + +export function addMemberships(key, memberships) { + var addMms = [].concat(memberships).map(function(current) { + addMembers(current, key); + return current; + }); + return addMms; +} + +export function removeMemberships(key, memberships) { + var removeMms = [].concat(memberships).map(function(current) { + removeMembers(current, key); + return current; + }); + return removeMms; +} + +export function updateMemberships(key, addMms, removeMms) { + if (addMms && addMms.length > 0) { + addMemberships(key, addMms); + } + if (removeMms && removeMms.length > 0) { + removeMemberships(key, removeMms); + } +} + +export function getMembers(key) { + return authLib.getMembers(key); +} + +export function addMembers(key, members) { + try { + authLib.addMembers(key, members); + } catch (e) { + log.error( + 'Could not add members ' + + JSON.stringify(members) + + ' to [' + + key + + ']', + e + ); + } + return members; +} + +export function removeMembers(key, members) { + try { + authLib.removeMembers(key, members); + } catch (e) { + log.error( + 'Could not remove members ' + + JSON.stringify(members) + + ' from [' + + key + + ']', + e + ); + } + return members; +} + +export function updateMembers(key, addMs, removeMs) { + if (addMs && addMs.length > 0) { + addMembers(key, addMs); + } + if (removeMs && removeMs.length > 0) { + removeMembers(key, removeMs); + } +} + +export function list(idProviderKey, types, query, start, count, sort) { + return queryAll({ + query: createPrincipalQuery(idProviderKey, types, query), + start: start, + count: count, + sort: sort + }); +} + +function _delete(keys) { + return keys.map(function(key) { + try { + var deleted = deletePrincipal(key); + return { + key: key, + deleted: deleted, + reason: deleted ? '' : 'Principal [' + key + '] could not be deleted' + }; + } catch (e) { + return { + key: key, + deleted: false, + reason: e.message + }; + } + }); +} +export { _delete as delete }; + +export const Type = PrincipalType; + + +function createPrincipalQuery(idProviderKey, types, query) { + var q = query ? textQuery(query) : ''; + if (!types) { + q += (q ? ' AND ' : '') + idProviderQuery(idProviderKey); + } else { + var tq = ''; + types.forEach(function(type, index) { + var add; + switch (type) { + case PrincipalType.ROLE: + add = rolesQuery(); + break; + case PrincipalType.GROUP: + case PrincipalType.USER: + add = idProviderQuery(idProviderKey, type); + break; + default: // none + } + tq += (index > 0 ? ' OR ' : '') + add; + }); + q += q ? ' AND (' + tq + ')' : tq; + } + return q; +} + +function textQuery(query) { + var q = '"_allText,displayName","' + query + '","AND"'; + return '(fulltext(' + q + ') OR ngram(' + q + '))'; +} + +function rolesQuery() { + return '_parentPath="/identity/roles"'; +} + +function idProviderQuery(key, type?: string) { + return ( + '(userStoreKey="' + + key + + '"' + + (type ? 'AND principalType="' + type + '")' : ')') + ); +} diff --git a/src/main/resources/lib/repositories.js b/src/main/resources/lib/repositories.ts similarity index 59% rename from src/main/resources/lib/repositories.js rename to src/main/resources/lib/repositories.ts index ef24d07a6..4db60a2bf 100644 --- a/src/main/resources/lib/repositories.js +++ b/src/main/resources/lib/repositories.ts @@ -1,11 +1,14 @@ -var common = require('./common'); +import { + getByIds, + queryAll +} from './common'; -exports.getById = function (id) { - return common.getByIds(id) +export function getById(id) { + return getByIds(id); }; -exports.list = function (search, start, count, sort) { - var queryResult = common.queryAll({ +export function list(search, start, count, sort) { + var queryResult = queryAll({ query: createRepoQuery(search), start: start, count: count, diff --git a/src/main/resources/lib/roles.js b/src/main/resources/lib/roles.ts similarity index 100% rename from src/main/resources/lib/roles.js rename to src/main/resources/lib/roles.ts diff --git a/src/main/resources/lib/useritems.js b/src/main/resources/lib/useritems.ts similarity index 100% rename from src/main/resources/lib/useritems.js rename to src/main/resources/lib/useritems.ts diff --git a/src/main/resources/lib/users.js b/src/main/resources/lib/users.ts similarity index 100% rename from src/main/resources/lib/users.js rename to src/main/resources/lib/users.ts diff --git a/src/main/resources/lib/util.js b/src/main/resources/lib/util.ts similarity index 100% rename from src/main/resources/lib/util.js rename to src/main/resources/lib/util.ts diff --git a/src/main/resources/services/config/config.js b/src/main/resources/services/config/config.js deleted file mode 100644 index 2663a326a..000000000 --- a/src/main/resources/services/config/config.js +++ /dev/null @@ -1,27 +0,0 @@ -/*global app, require*/ - -var admin = require('/lib/xp/admin'); -var portal = require('/lib/xp/portal'); - -function handleGet() { - return { - status: 200, - contentType: 'application/json', - body: { - adminUrl: admin.getBaseUri(), - appId: app.name, - assetsUri: portal.assetUrl({path: ''}), - toolUri: admin.getToolUrl( - app.name, - 'main' - ), - services: { - graphQlUrl: portal.serviceUrl({ service: 'graphql'}), - reportServiceUrl: portal.serviceUrl({service: 'permissionReport'}), - i18nUrl: portal.serviceUrl({service: 'i18n'}), - } - } - }; -} - -exports.get = handleGet; diff --git a/src/main/resources/services/config/config.ts b/src/main/resources/services/config/config.ts new file mode 100644 index 000000000..4a3bdc9e8 --- /dev/null +++ b/src/main/resources/services/config/config.ts @@ -0,0 +1,30 @@ +import { + getBaseUri, + getToolUrl +} from '/lib/xp/admin'; +import { + assetUrl, + serviceUrl +} from '/lib/xp/portal'; + + +export function get() { + return { + status: 200, + contentType: 'application/json', + body: { + adminUrl: getBaseUri(), + appId: app.name, + assetsUri: assetUrl({ path: '' }), + toolUri: getToolUrl( + app.name, + 'main' + ), + services: { + graphQlUrl: serviceUrl({ service: 'graphql' }), + reportServiceUrl: serviceUrl({ service: 'permissionReport' }), + i18nUrl: serviceUrl({ service: 'i18n' }), + } + } + }; +} diff --git a/src/main/resources/services/graphql/graphql.js b/src/main/resources/services/graphql/graphql.js deleted file mode 100644 index b840e982c..000000000 --- a/src/main/resources/services/graphql/graphql.js +++ /dev/null @@ -1,23 +0,0 @@ -//TODO Remove GraphQLSchemaSynchronizer for Enonic XP 6.13 - -var graphQl = require('/lib/graphql'); -var schemaGenerator = require('./schemaUtil').schemaGenerator; - -Java.type('com.enonic.xp.app.users.GraphQLSchemaSynchronizer').sync(__.toScriptValue(function() { - var graphQlSchema = require('./schema'); - var schema = schemaGenerator.createSchema(graphQlSchema); - - exports.post = function(req) { - var body = JSON.parse(req.body); - var operation = body.query || body.mutation; - if (!operation) { - throw new Error('`query` or `mutation` param is missing.'); - } - var result = graphQl.execute(schema, operation, body.variables); - return { - contentType: 'application/json', - body: result - }; - }; -})); - diff --git a/src/main/resources/services/graphql/graphql.ts b/src/main/resources/services/graphql/graphql.ts new file mode 100644 index 000000000..877b3c3ae --- /dev/null +++ b/src/main/resources/services/graphql/graphql.ts @@ -0,0 +1,23 @@ +//TODO Remove GraphQLSchemaSynchronizer for Enonic XP 6.13 + +// @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) +import { execute } from '/lib/graphql'; +import { schemaGenerator } from './schemaUtil'; + +Java.type('com.enonic.xp.app.users.GraphQLSchemaSynchronizer').sync(__.toScriptValue(function() { + var graphQlSchema = require('./schema'); + var schema = schemaGenerator.createSchema(graphQlSchema); +})); + +export function post(req) { + var body = JSON.parse(req.body); + var operation = body.query || body.mutation; + if (!operation) { + throw new Error('`query` or `mutation` param is missing.'); + } + var result = execute(schema, operation, body.variables); + return { + contentType: 'application/json', + body: result + }; +}; diff --git a/src/main/resources/services/graphql/schema/index.js b/src/main/resources/services/graphql/schema/index.ts similarity index 100% rename from src/main/resources/services/graphql/schema/index.js rename to src/main/resources/services/graphql/schema/index.ts diff --git a/src/main/resources/services/graphql/schema/mutation.js b/src/main/resources/services/graphql/schema/mutation.ts similarity index 100% rename from src/main/resources/services/graphql/schema/mutation.js rename to src/main/resources/services/graphql/schema/mutation.ts diff --git a/src/main/resources/services/graphql/schema/query.js b/src/main/resources/services/graphql/schema/query.ts similarity index 56% rename from src/main/resources/services/graphql/schema/query.js rename to src/main/resources/services/graphql/schema/query.ts index a507231c2..d142daa30 100644 --- a/src/main/resources/services/graphql/schema/query.js +++ b/src/main/resources/services/graphql/schema/query.ts @@ -1,15 +1,33 @@ -var graphQl = require('/lib/graphql'); -var authLib = require('/lib/auth'); +import { + GraphQLInt, + GraphQLString, + list, + nonNull + // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) +} from '/lib/graphql'; +import { isAdmin } from '/lib/auth'; -var idproviders = require('/lib/idproviders'); -var principals = require('/lib/principals'); +import { + getByKey, + getDefault, + list as listIdProviders +} from '/lib/idproviders'; +import { + getByKeys as getPrincipalsByKeys, + list as listPrincipals, + Type +} from '/lib/principals'; var useritems = require('/lib/useritems'); -var repositories = require('/lib/repositories'); +import { + getById as getRepositoryById, + list as listRepositories +} from '/lib/repositories'; +import { schemaGenerator } from '../schemaUtil'; +import TypesType from '../types'; -var schemaGenerator = require('../schemaUtil').schemaGenerator; -var graphQlObjectTypes = require('../types').objects; -var graphQlEnums = require('../types').enums; +var graphQlObjectTypes = TypesType.objects; +var graphQlEnums = TypesType.enums; function getUserItems(args, types) { @@ -20,49 +38,49 @@ function getUserItems(args, types) { return useritems.list(types, query, itemIds, start, count); } -module.exports = schemaGenerator.createObjectType({ +export = schemaGenerator.createObjectType({ name: 'Query', fields: { idProviders: { - type: graphQl.list(graphQlObjectTypes.IdProviderType), + type: list(graphQlObjectTypes.IdProviderType), resolve: function () { - return idproviders.list(); + return listIdProviders(); } }, idProvider: { type: graphQlObjectTypes.IdProviderType, args: { - key: graphQl.nonNull(graphQl.GraphQLString) + key: nonNull(GraphQLString) }, resolve: function (env) { var key = env.args.key; - return idproviders.getByKey(key); + return getByKey(key); } }, defaultIdProvider: { type: graphQlObjectTypes.IdProviderType, resolve: function () { - return idproviders.getDefault(); + return getDefault(); } }, principalsConnection: { type: graphQlObjectTypes.PrincipalConnectionType, args: { - idprovider: graphQl.GraphQLString, - types: graphQl.list(graphQlEnums.PrincipalTypeEnum), - query: graphQl.GraphQLString, - start: graphQl.GraphQLInt, - count: graphQl.GraphQLInt, - sort: graphQl.GraphQLString + idprovider: GraphQLString, + types: list(graphQlEnums.PrincipalTypeEnum), + query: GraphQLString, + start: GraphQLInt, + count: GraphQLInt, + sort: GraphQLString }, resolve: function (env) { var idprovider = env.args.idprovider || 'system'; - var types = env.args.types || principals.Type.all(); + var types = env.args.types || Type.all(); var query = env.args.query; var start = env.args.start; var count = env.args.count; var sort = env.args.sort; - return principals.list( + return listPrincipals( idprovider, types, query, @@ -75,31 +93,31 @@ module.exports = schemaGenerator.createObjectType({ principal: { type: graphQlObjectTypes.PrincipalType, args: { - key: graphQl.nonNull(graphQl.GraphQLString), + key: nonNull(GraphQLString), }, resolve: function (env) { var key = env.args.key; - return principals.getByKeys(key); + return getPrincipalsByKeys(key); } }, principals: { - type: graphQl.list(graphQlObjectTypes.PrincipalType), + type: list(graphQlObjectTypes.PrincipalType), args: { - keys: graphQl.nonNull(graphQl.list(graphQl.GraphQLString)) + keys: nonNull(list(GraphQLString)) }, resolve: function (env) { var keys = env.args.keys; - return principals.getByKeys(keys); + return getPrincipalsByKeys(keys); } }, userItemsConnection: { type: graphQlObjectTypes.UserItemConnectionType, args: { - types: graphQl.list(graphQlEnums.UserItemTypeEnum), - query: graphQl.GraphQLString, - itemIds: graphQl.list(graphQl.GraphQLString), - start: graphQl.GraphQLInt, - count: graphQl.GraphQLInt + types: list(graphQlEnums.UserItemTypeEnum), + query: GraphQLString, + itemIds: list(GraphQLString), + start: GraphQLInt, + count: GraphQLInt }, resolve: function (env) { return getUserItems(env.args, env.args.types); @@ -108,10 +126,10 @@ module.exports = schemaGenerator.createObjectType({ types: { type: graphQlObjectTypes.TypesType, args: { - query: graphQl.GraphQLString, - itemIds: graphQl.list(graphQl.GraphQLString), - start: graphQl.GraphQLInt, - count: graphQl.GraphQLInt + query: GraphQLString, + itemIds: list(GraphQLString), + start: GraphQLInt, + count: GraphQLInt }, resolve: function (env) { return getUserItems(env.args, null); @@ -120,33 +138,33 @@ module.exports = schemaGenerator.createObjectType({ repository: { type: graphQlObjectTypes.RepositoryType, args: { - id: graphQl.nonNull(graphQl.GraphQLString) + id: nonNull(GraphQLString) }, resolve: function (env) { - if (!authLib.isAdmin()) { + if (!isAdmin()) { throw new Error('You don\'t have permission to access this resource'); } var id = env.args.id; - return repositories.getById(id); + return getRepositoryById(id); } }, repositories: { - type: graphQl.list(graphQlObjectTypes.RepositoryType), + type: list(graphQlObjectTypes.RepositoryType), args: { - query: graphQl.GraphQLString, - start: graphQl.GraphQLInt, - count: graphQl.GraphQLInt, + query: GraphQLString, + start: GraphQLInt, + count: GraphQLInt, sort: graphQlEnums.SortModeEnum }, resolve: function (env) { - if (!authLib.isAdmin()) { + if (!isAdmin()) { throw new Error('You don\'t have permission to access this resource'); } var query = env.args.query; var start = env.args.start; var count = env.args.count; var sort = env.args.sort; - return repositories.list(query, start, count, sort); + return listRepositories(query, start, count, sort); } } } diff --git a/src/main/resources/services/graphql/schemaUtil.js b/src/main/resources/services/graphql/schemaUtil.js deleted file mode 100644 index 7218fc5d5..000000000 --- a/src/main/resources/services/graphql/schemaUtil.js +++ /dev/null @@ -1,6 +0,0 @@ -var graphqlLib = require('/lib/graphql'); - -// singleton -var schemaGenerator = graphqlLib.newSchemaGenerator(); - -exports.schemaGenerator = schemaGenerator; diff --git a/src/main/resources/services/graphql/schemaUtil.ts b/src/main/resources/services/graphql/schemaUtil.ts new file mode 100644 index 000000000..00363e271 --- /dev/null +++ b/src/main/resources/services/graphql/schemaUtil.ts @@ -0,0 +1,5 @@ +// @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) +import { newSchemaGenerator } from '/lib/graphql'; + +// singleton +export const schemaGenerator = newSchemaGenerator(); diff --git a/src/main/resources/services/graphql/types/enums.js b/src/main/resources/services/graphql/types/enums.ts similarity index 74% rename from src/main/resources/services/graphql/types/enums.js rename to src/main/resources/services/graphql/types/enums.ts index 119aaa046..4e814d810 100644 --- a/src/main/resources/services/graphql/types/enums.js +++ b/src/main/resources/services/graphql/types/enums.ts @@ -1,6 +1,6 @@ -var schemaGenerator = require('../schemaUtil').schemaGenerator; +import { schemaGenerator } from '../schemaUtil'; -exports.IdProviderModeEnum = schemaGenerator.createEnumType({ +export const IdProviderModeEnum = schemaGenerator.createEnumType({ name: 'IdProviderMode', description: 'Enumeration of Id provider modes', values: { @@ -10,7 +10,7 @@ exports.IdProviderModeEnum = schemaGenerator.createEnumType({ } }); -exports.SortModeEnum = schemaGenerator.createEnumType({ +export const SortModeEnum = schemaGenerator.createEnumType({ name: 'SortMode', description: 'Enumeration of sort modes', values: { @@ -19,7 +19,7 @@ exports.SortModeEnum = schemaGenerator.createEnumType({ } }); -exports.UserItemTypeEnum = schemaGenerator.createEnumType({ +export const UserItemTypeEnum = schemaGenerator.createEnumType({ name: 'UserItemType', description: 'Enumeration of user item types', values: { @@ -30,7 +30,7 @@ exports.UserItemTypeEnum = schemaGenerator.createEnumType({ } }); -exports.PrincipalTypeEnum = schemaGenerator.createEnumType({ +export const PrincipalTypeEnum = schemaGenerator.createEnumType({ name: 'PrincipalType', description: 'Enumeration of principal types', values: { @@ -40,7 +40,7 @@ exports.PrincipalTypeEnum = schemaGenerator.createEnumType({ } }); -exports.PermissionEnum = schemaGenerator.createEnumType({ +export const PermissionEnum = schemaGenerator.createEnumType({ name: 'Permission', description: 'Enumeration of permissions', values: { @@ -54,7 +54,7 @@ exports.PermissionEnum = schemaGenerator.createEnumType({ } }); -exports.IdProviderAccessEnum = schemaGenerator.createEnumType({ +export const IdProviderAccessEnum = schemaGenerator.createEnumType({ name: 'IdProviderAccess', description: 'Enumeration of id provider access permissions', values: { diff --git a/src/main/resources/services/graphql/types/index.js b/src/main/resources/services/graphql/types/index.js deleted file mode 100644 index 280a1951a..000000000 --- a/src/main/resources/services/graphql/types/index.js +++ /dev/null @@ -1,5 +0,0 @@ -module.exports = { - enums: require('./enums'), - inputs: require('./inputs'), - objects: require('./objects') -}; diff --git a/src/main/resources/services/graphql/types/index.ts b/src/main/resources/services/graphql/types/index.ts new file mode 100644 index 000000000..6d39155a2 --- /dev/null +++ b/src/main/resources/services/graphql/types/index.ts @@ -0,0 +1,6 @@ +export * as enums from './enums'; +export * as inputs from './inputs'; + +module.exports = { + objects: require('./objects') +}; diff --git a/src/main/resources/services/graphql/types/inputs.js b/src/main/resources/services/graphql/types/inputs.js deleted file mode 100644 index c86415c64..000000000 --- a/src/main/resources/services/graphql/types/inputs.js +++ /dev/null @@ -1,45 +0,0 @@ -var graphQl = require('/lib/graphql'); - -var schemaGenerator = require('../schemaUtil').schemaGenerator; - -var graphQlEnums = require('./enums'); - -// eslint-disable-next-line no-unused-vars -var PrincipalInput = schemaGenerator.createInputObjectType({ - name: 'PrincipalInput', - description: 'Input definition for principal', - fields: { - key: { - type: graphQl.nonNull(graphQl.GraphQLString) - }, - displayName: { - type: graphQl.nonNull(graphQl.GraphQLString) - } - } -}); - -exports.IdProviderAccessControlInput = schemaGenerator.createInputObjectType({ - name: 'IdProviderAccessControlInput', - description: 'Input definition for id provider access control entry', - fields: { - principal: { - type: graphQl.nonNull(graphQl.GraphQLString) - }, - access: { - type: graphQl.nonNull(graphQlEnums.IdProviderAccessEnum) - } - } -}); - -exports.IdProviderConfigInput = schemaGenerator.createInputObjectType({ - name: 'IdProviderConfigInput', - description: 'Input definition for id provider auth config', - fields: { - applicationKey: { - type: graphQl.nonNull(graphQl.GraphQLString) - }, - config: { - type: graphQl.GraphQLString - } - } -}); diff --git a/src/main/resources/services/graphql/types/inputs.ts b/src/main/resources/services/graphql/types/inputs.ts new file mode 100644 index 000000000..258ee5e2d --- /dev/null +++ b/src/main/resources/services/graphql/types/inputs.ts @@ -0,0 +1,48 @@ +import { + GraphQLString, + nonNull + // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) +} from '/lib/graphql'; +import { schemaGenerator } from '../schemaUtil'; +import { IdProviderAccessEnum } from './enums'; + + +// eslint-disable-next-line no-unused-vars +var PrincipalInput = schemaGenerator.createInputObjectType({ + name: 'PrincipalInput', + description: 'Input definition for principal', + fields: { + key: { + type: nonNull(GraphQLString) + }, + displayName: { + type: nonNull(GraphQLString) + } + } +}); + +export const IdProviderAccessControlInput = schemaGenerator.createInputObjectType({ + name: 'IdProviderAccessControlInput', + description: 'Input definition for id provider access control entry', + fields: { + principal: { + type: nonNull(GraphQLString) + }, + access: { + type: nonNull(IdProviderAccessEnum) + } + } +}); + +export const IdProviderConfigInput = schemaGenerator.createInputObjectType({ + name: 'IdProviderConfigInput', + description: 'Input definition for id provider auth config', + fields: { + applicationKey: { + type: nonNull(GraphQLString) + }, + config: { + type: GraphQLString + } + } +}); diff --git a/src/main/resources/services/graphql/types/objects/aggregations.js b/src/main/resources/services/graphql/types/objects/aggregations.ts similarity index 62% rename from src/main/resources/services/graphql/types/objects/aggregations.js rename to src/main/resources/services/graphql/types/objects/aggregations.ts index 5c82f491e..322461e89 100644 --- a/src/main/resources/services/graphql/types/objects/aggregations.js +++ b/src/main/resources/services/graphql/types/objects/aggregations.ts @@ -1,40 +1,44 @@ -var graphQl = require('/lib/graphql'); +import { + GraphQLInt, + GraphQLString, + list + // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) +} from '/lib/graphql'; +import { schemaGenerator } from '../../schemaUtil'; -var schemaGenerator = require('../../schemaUtil').schemaGenerator; var BucketType = schemaGenerator.createObjectType({ name: 'Bucket', description: 'Aggregated result for specific key', fields: { key: { - type: graphQl.GraphQLString + type: GraphQLString }, docCount: { - type: graphQl.GraphQLInt + type: GraphQLInt } } }); -var AggregationType = schemaGenerator.createObjectType({ +export const AggregationType = schemaGenerator.createObjectType({ name: 'Aggregation', description: 'List of buckets', fields: { name: { - type: graphQl.GraphQLString + type: GraphQLString }, buckets: { - type: graphQl.list(BucketType), + type: list(BucketType), resolve: function(env) { return env.source.aggregation; } } } }); -exports.AggregationType = AggregationType; -exports.createAggregationsFiled = function createAggregationsFiled() { +export function createAggregationsField() { return { - type: graphQl.list(AggregationType), + type: list(AggregationType), resolve: function(env) { var aggregations = env.source.aggregations; var aggs = []; @@ -47,4 +51,4 @@ exports.createAggregationsFiled = function createAggregationsFiled() { return aggs; } }; -}; +} diff --git a/src/main/resources/services/graphql/types/objects/connection.js b/src/main/resources/services/graphql/types/objects/connection.ts similarity index 66% rename from src/main/resources/services/graphql/types/objects/connection.js rename to src/main/resources/services/graphql/types/objects/connection.ts index 219fcf312..77f78f85e 100644 --- a/src/main/resources/services/graphql/types/objects/connection.js +++ b/src/main/resources/services/graphql/types/objects/connection.ts @@ -1,25 +1,32 @@ -var graphQl = require('/lib/graphql'); -var graphQlUtils = require('../../utils'); -var createAggregationsFiled = require('./aggregations').createAggregationsFiled; -var schemaGenerator = require('../../schemaUtil').schemaGenerator; +import { + GraphQLBoolean, + GraphQLInt, + list, + nonNull + // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) +} from '/lib/graphql'; +import { toInt } from '../../utils'; +import { createAggregationsField } from './aggregations'; +import { schemaGenerator } from '../../schemaUtil'; + var pageInfoType = schemaGenerator.createObjectType({ name: 'PageInfo', fields: { startCursor: { - type: graphQl.nonNull(graphQl.GraphQLInt), + type: nonNull(GraphQLInt), resolve: function(env) { - return graphQlUtils.toInt(env.source.startCursor); + return toInt(env.source.startCursor); } }, endCursor: { - type: graphQl.nonNull(graphQl.GraphQLInt), + type: nonNull(GraphQLInt), resolve: function(env) { - return graphQlUtils.toInt(env.source.endCursor); + return toInt(env.source.endCursor); } }, hasNext: { - type: graphQl.nonNull(graphQl.GraphQLBoolean) + type: nonNull(GraphQLBoolean) } } }); @@ -29,30 +36,30 @@ function createEdgeType(name, type) { name: name + 'Edge', fields: { node: { - type: graphQl.nonNull(type) + type: nonNull(type) }, cursor: { - type: graphQl.nonNull(graphQl.GraphQLInt), + type: nonNull(GraphQLInt), resolve: function(env) { - return graphQlUtils.toInt(env.source.cursor); + return toInt(env.source.cursor); } } } }); } -exports.createConnectionType = function(name, type) { +export function createConnectionType(name, type) { return schemaGenerator.createObjectType({ name: name + 'Connection', fields: { totalCount: { - type: graphQl.nonNull(graphQl.GraphQLInt), + type: nonNull(GraphQLInt), resolve: function(env) { return env.source.total; } }, edges: { - type: graphQl.list(createEdgeType(name, type)), + type: list(createEdgeType(name, type)), resolve: function(env) { var hits = env.source.hits; var edges = []; @@ -65,7 +72,7 @@ exports.createConnectionType = function(name, type) { return edges; } }, - aggregations: createAggregationsFiled(), + aggregations: createAggregationsField(), pageInfo: { type: pageInfoType, resolve: function(env) { @@ -82,4 +89,4 @@ exports.createConnectionType = function(name, type) { } } }); -}; +} diff --git a/src/main/resources/services/graphql/types/objects/idProvider.js b/src/main/resources/services/graphql/types/objects/idProvider.ts similarity index 59% rename from src/main/resources/services/graphql/types/objects/idProvider.js rename to src/main/resources/services/graphql/types/objects/idProvider.ts index 4303b353b..2056b2f9b 100644 --- a/src/main/resources/services/graphql/types/objects/idProvider.js +++ b/src/main/resources/services/graphql/types/objects/idProvider.ts @@ -1,35 +1,44 @@ -var graphQl = require('/lib/graphql'); +import { + GraphQLBoolean, + GraphQLString, + list, + reference + // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) +} from '/lib/graphql'; +import { + IdProviderAccessEnum, + IdProviderModeEnum +} from '../enums'; +import { UserItemType } from './userItem'; +import { + getIdProviderMode, + getPermissions +} from '/lib/idproviders'; +import { schemaGenerator } from '../../schemaUtil'; -var graphQlEnums = require('../enums'); - -var graphQlUserItem = require('./userItem'); - -var idprovidersLib = require('/lib/idproviders'); - -var schemaGenerator = require('../../schemaUtil').schemaGenerator; var IdProviderAccessControlEntryType = schemaGenerator.createObjectType({ name: 'IdProviderAccessControlEntry', description: 'Domain representation of id provider access control entry', fields: { principal: { - type: graphQl.reference('Principal') + type: reference('Principal') }, access: { - type: graphQlEnums.IdProviderAccessEnum + type: IdProviderAccessEnum } } }); -exports.IdProviderConfig = schemaGenerator.createObjectType({ +export const IdProviderConfig = schemaGenerator.createObjectType({ name: 'IdProviderConfig', description: 'Domain representation of auth config for id provider', fields: { applicationKey: { - type: graphQl.GraphQLString + type: GraphQLString }, config: { - type: graphQl.GraphQLString, + type: GraphQLString, resolve: function(env) { return JSON.stringify(env.source.config); // TODO Create object type for property array @@ -38,80 +47,83 @@ exports.IdProviderConfig = schemaGenerator.createObjectType({ } }); -exports.IdProviderType = schemaGenerator.createObjectType({ +export const IdProviderType = schemaGenerator.createObjectType({ name: 'IdProvider', description: 'Domain representation of an id provider', - interfaces: [graphQlUserItem.UserItemType], + interfaces: [UserItemType], fields: { key: { - type: graphQl.GraphQLString, + type: GraphQLString, resolve: function(env) { return env.source.key || env.source._name; } }, name: { - type: graphQl.GraphQLString, + type: GraphQLString, resolve: function(env) { return env.source.key || env.source._name; } }, path: { - type: graphQl.GraphQLString, + type: GraphQLString, resolve: function(env) { return '/identity/' + (env.source.key || env.source._name); } }, displayName: { - type: graphQl.GraphQLString + type: GraphQLString }, description: { - type: graphQl.GraphQLString + type: GraphQLString }, idProviderConfig: { - type: exports.IdProviderConfig + type: IdProviderConfig }, idProviderMode: { - type: graphQlEnums.IdProviderModeEnum, + type: IdProviderModeEnum, resolve: function(env) { var idProviderKey = env.source.idProviderConfig && env.source.idProviderConfig.applicationKey; return idProviderKey - ? idprovidersLib.getIdProviderMode(idProviderKey) + ? getIdProviderMode(idProviderKey) : null; } }, permissions: { - type: graphQl.list(IdProviderAccessControlEntryType), + type: list(IdProviderAccessControlEntryType), resolve: function(env) { - return idprovidersLib.getPermissions(env.source.key); + return getPermissions(env.source.key); } }, modifiedTime: { - type: graphQl.GraphQLString, + type: GraphQLString, resolve: function(env) { return env.source._timestamp; } } } }); + +// This seems like very bad code, trying to overwrite the state inside another module? +// Perhaps this worked when things are bundled into one file? graphQlUserItem.typeResolverMap.idProviderType = exports.IdProviderType; -exports.IdProviderDeleteType = schemaGenerator.createObjectType({ +export const IdProviderDeleteType = schemaGenerator.createObjectType({ name: 'IdProviderDelete', description: 'Result of an idProvider delete operation', fields: { key: { - type: graphQl.GraphQLString, + type: GraphQLString, resolve: function (env) { return env.source.idProviderKey; } }, deleted: { - type: graphQl.GraphQLBoolean + type: GraphQLBoolean }, reason: { - type: graphQl.GraphQLString + type: GraphQLString } } }); diff --git a/src/main/resources/services/graphql/types/objects/index.js b/src/main/resources/services/graphql/types/objects/index.ts similarity index 97% rename from src/main/resources/services/graphql/types/objects/index.js rename to src/main/resources/services/graphql/types/objects/index.ts index fe6797c63..d887d0f2d 100644 --- a/src/main/resources/services/graphql/types/objects/index.js +++ b/src/main/resources/services/graphql/types/objects/index.ts @@ -6,7 +6,7 @@ var graphQlUserItem = require('./userItem'); var graphQlTypes = require('./types'); var graphQlRepository = require('./repository'); -module.exports = { +export = { IdProviderType: graphQlIdProvider.IdProviderType, IdProviderDeleteType: graphQlIdProvider.IdProviderDeleteType, PrincipalType: graphQlPrincipal.PrincipalType, diff --git a/src/main/resources/services/graphql/types/objects/principal.js b/src/main/resources/services/graphql/types/objects/principal.ts similarity index 100% rename from src/main/resources/services/graphql/types/objects/principal.js rename to src/main/resources/services/graphql/types/objects/principal.ts diff --git a/src/main/resources/services/graphql/types/objects/repository.js b/src/main/resources/services/graphql/types/objects/repository.ts similarity index 100% rename from src/main/resources/services/graphql/types/objects/repository.js rename to src/main/resources/services/graphql/types/objects/repository.ts diff --git a/src/main/resources/services/graphql/types/objects/types.js b/src/main/resources/services/graphql/types/objects/types.ts similarity index 60% rename from src/main/resources/services/graphql/types/objects/types.js rename to src/main/resources/services/graphql/types/objects/types.ts index 42b142a75..de2e1d79b 100644 --- a/src/main/resources/services/graphql/types/objects/types.js +++ b/src/main/resources/services/graphql/types/objects/types.ts @@ -1,20 +1,24 @@ -var graphQl = require('/lib/graphql'); +import { + GraphQLInt, + list, + nonNull + // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) +} from '/lib/graphql'; +import { AggregationType } from './aggregations'; +import { schemaGenerator } from '../../schemaUtil'; -var graphQlAggregations = require('./aggregations'); -var schemaGenerator = require('../../schemaUtil').schemaGenerator; - -exports.TypesType = schemaGenerator.createObjectType({ +export = schemaGenerator.createObjectType({ name: 'Types', fields: { totalCount: { - type: graphQl.nonNull(graphQl.GraphQLInt), + type: nonNull(GraphQLInt), resolve: function(env) { return env.source.total; } }, aggregations: { - type: graphQl.list(graphQlAggregations.AggregationType), + type: list(AggregationType), resolve: function(env) { var aggregations = env.source.aggregations; var aggs = []; diff --git a/src/main/resources/services/graphql/types/objects/userItem.js b/src/main/resources/services/graphql/types/objects/userItem.js deleted file mode 100644 index 11ec725c2..000000000 --- a/src/main/resources/services/graphql/types/objects/userItem.js +++ /dev/null @@ -1,38 +0,0 @@ -var graphQl = require('/lib/graphql'); - -var schemaGenerator = require('../../schemaUtil').schemaGenerator; - -exports.typeResolverMap = { - principalType: null, - idProviderType: null -}; - -exports.UserItemType = schemaGenerator.createInterfaceType({ - name: 'UserItem', - description: 'User item is a base entity for every principal or id provider', - typeResolver: function(source) { - return source.principalType - ? exports.typeResolverMap.principalType - : exports.typeResolverMap.idProviderType; - }, - fields: { - key: { - type: graphQl.GraphQLString - }, - name: { - type: graphQl.GraphQLString - }, - path: { - type: graphQl.GraphQLString - }, - displayName: { - type: graphQl.GraphQLString - }, - description: { - type: graphQl.GraphQLString - }, - modifiedTime: { - type: graphQl.GraphQLString - } - } -}); diff --git a/src/main/resources/services/graphql/types/objects/userItem.ts b/src/main/resources/services/graphql/types/objects/userItem.ts new file mode 100644 index 000000000..64efc5682 --- /dev/null +++ b/src/main/resources/services/graphql/types/objects/userItem.ts @@ -0,0 +1,38 @@ +// @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) +import { GraphQLString } from '/lib/graphql'; +import { schemaGenerator } from '../../schemaUtil'; + +export const typeResolverMap = { + principalType: null, + idProviderType: null +}; + +export const UserItemType = schemaGenerator.createInterfaceType({ + name: 'UserItem', + description: 'User item is a base entity for every principal or id provider', + typeResolver: function(source) { + return source.principalType + ? typeResolverMap.principalType + : typeResolverMap.idProviderType; + }, + fields: { + key: { + type: GraphQLString + }, + name: { + type: GraphQLString + }, + path: { + type: GraphQLString + }, + displayName: { + type: GraphQLString + }, + description: { + type: GraphQLString + }, + modifiedTime: { + type: GraphQLString + } + } +}); diff --git a/src/main/resources/services/graphql/utils.js b/src/main/resources/services/graphql/utils.ts similarity index 69% rename from src/main/resources/services/graphql/utils.js rename to src/main/resources/services/graphql/utils.ts index 3ed71b380..a24d66177 100644 --- a/src/main/resources/services/graphql/utils.js +++ b/src/main/resources/services/graphql/utils.ts @@ -1,4 +1,4 @@ -exports.toArray = function(object) { +export function toArray(object) { if (!object) { return []; } @@ -6,8 +6,8 @@ exports.toArray = function(object) { return object; } return [object]; -}; +} -exports.toInt = function(number, defaultValue) { +export function toInt(number, defaultValue) { return number == null ? defaultValue.intValue() : number.intValue(); -}; +} diff --git a/src/main/resources/services/i18n/i18n.js b/src/main/resources/services/i18n/i18n.js deleted file mode 100644 index 05662a87b..000000000 --- a/src/main/resources/services/i18n/i18n.js +++ /dev/null @@ -1,21 +0,0 @@ -var i18n = require('/lib/xp/i18n'); -var admin = require('/lib/xp/admin'); - -exports.get = function () { - - return { - status: 200, - contentType: 'application/json', - body: getPhrases() - } -}; - -var getPhrases = function() { - var locales = admin.getLocales(); - var bundle = i18n.getPhrases(locales, ['i18n/common']); - var phrases = i18n.getPhrases(locales, ['i18n/phrases']); - - for (var key in phrases) { bundle[key] = phrases[key] } - - return bundle; -}; diff --git a/src/main/resources/services/i18n/i18n.ts b/src/main/resources/services/i18n/i18n.ts new file mode 100644 index 000000000..b2e08bddb --- /dev/null +++ b/src/main/resources/services/i18n/i18n.ts @@ -0,0 +1,14 @@ +import { getLocales } from '/lib/xp/admin'; +import { getPhrases } from '/lib/xp/i18n'; + +export function get() { + const locales = getLocales(); + const body = getPhrases(locales, ['i18n/common']); + const phrases = getPhrases(locales, ['i18n/phrases']); + for (var key in phrases) { body[key] = phrases[key] } + return { + status: 200, + contentType: 'application/json', + body + } +} diff --git a/src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationSelector.ts b/src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationSelector.ts index 9ed98c616..37ec1b8f4 100644 --- a/src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationSelector.ts +++ b/src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationSelector.ts @@ -15,9 +15,6 @@ import {FormContext} from '@enonic/lib-admin-ui/form/FormContext'; import {AuthApplicationSelectedOptionView} from './AuthApplicationSelectedOptionView'; import {AuthApplicationComboBox} from './AuthApplicationComboBox'; import {BaseInputTypeManagingAdd} from '@enonic/lib-admin-ui/form/inputtype/support/BaseInputTypeManagingAdd'; -import {InputValidationRecording} from '@enonic/lib-admin-ui/form/inputtype/InputValidationRecording'; -import {Class} from '@enonic/lib-admin-ui/Class'; -import {InputTypeManager} from '@enonic/lib-admin-ui/form/inputtype/InputTypeManager'; import {Input} from '@enonic/lib-admin-ui/form/Input'; import {AuthApplicationSelectedOptionsView} from './AuthApplicationSelectedOptionsView'; @@ -202,5 +199,3 @@ export class AuthApplicationSelector return this.comboBox.giveFocus(); } } - -InputTypeManager.register(new Class('AuthApplicationSelector', AuthApplicationSelector)); diff --git a/src/main/resources/static/app/inputtype/index.ts b/src/main/resources/static/app/inputtype/index.ts new file mode 100644 index 000000000..ac733d602 --- /dev/null +++ b/src/main/resources/static/app/inputtype/index.ts @@ -0,0 +1,2 @@ +export { AuthApplicationSelector } from './authapplicationselector/AuthApplicationSelector'; +export { PrincipalSelector } from './selector/PrincipalSelector'; diff --git a/src/main/resources/static/main.ts b/src/main/resources/static/main.ts index a8a18fe68..23797d902 100644 --- a/src/main/resources/static/main.ts +++ b/src/main/resources/static/main.ts @@ -14,17 +14,16 @@ import {TabbedAppBar} from '@enonic/lib-admin-ui/app/bar/TabbedAppBar'; import {AppHelper} from '@enonic/lib-admin-ui/util/AppHelper'; import {i18nInit} from '@enonic/lib-admin-ui/util/MessagesInitializer'; import {CONFIG} from '@enonic/lib-admin-ui/util/Config'; -import {PrincipalSelector} from './app/inputtype/selector/PrincipalSelector'; import {InputTypeManager} from '@enonic/lib-admin-ui/form/inputtype/InputTypeManager'; import {Class} from '@enonic/lib-admin-ui/Class'; +import { + AuthApplicationSelector, + PrincipalSelector +} from './app/inputtype/'; const body = Body.get(); -// Dynamically import and execute all input types, since they are used -// on-demand, when parsing XML schemas and has not real usage in app -declare let require: { context: (directory: string, useSubdirectories: boolean, filter: RegExp) => void }; -const importAll = r => r.keys().forEach(r); -importAll(require.context('./app/inputtype', true, /^(?!\.[\/\\]ui).*/)); +InputTypeManager.register(new Class('AuthApplicationSelector', AuthApplicationSelector)); function getApplication(): Application { const assetsUri: string = CONFIG.getString('assetsUri'); From ee1c594868cb3e9cd52072dba2ce51d60d3ab8f7 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Mon, 18 Sep 2023 17:18:54 +0200 Subject: [PATCH 09/43] wip 1817 graphql problems --- src/main/resources/lib/groups.ts | 43 ++-- src/main/resources/lib/principals.ts | 13 +- src/main/resources/lib/roles.ts | 42 ++-- src/main/resources/lib/useritems.ts | 52 +++-- src/main/resources/lib/users.ts | 68 +++--- .../resources/services/graphql/graphql.ts | 5 +- .../services/graphql/schema/index.ts | 6 +- .../services/graphql/schema/mutation.ts | 212 ++++++++++-------- .../services/graphql/schema/query.ts | 51 +++-- .../resources/services/graphql/types/index.ts | 5 +- .../graphql/types/objects/idProvider.ts | 10 +- .../services/graphql/types/objects/index.ts | 47 ++-- .../graphql/types/objects/principal.ts | 99 ++++---- .../graphql/types/objects/repository.ts | 20 +- .../services/graphql/types/objects/types.ts | 2 +- .../graphql/types/objects/userItem.ts | 7 +- tsup/server.ts | 6 +- 17 files changed, 394 insertions(+), 294 deletions(-) diff --git a/src/main/resources/lib/groups.ts b/src/main/resources/lib/groups.ts index 97bf5df10..d54c9e1b7 100644 --- a/src/main/resources/lib/groups.ts +++ b/src/main/resources/lib/groups.ts @@ -1,12 +1,22 @@ -var common = require('./common'); -var principals = require('./principals'); +import { + idProviderFromKey, + nameFromKey, + required +} from './common'; +import { + addMembers, + getMembers, + getMemberships, + updateMembers, + updateMemberships +} from './principals'; var authLib = require('/lib/xp/auth'); -exports.create = function createGroup(params) { - var key = common.required(params, 'key'); - var idProviderKey = common.idProviderFromKey(key); - var name = common.nameFromKey(key); - var displayName = common.required(params, 'displayName'); +export function create(params) { + var key = required(params, 'key'); + var idProviderKey = idProviderFromKey(key); + var name = nameFromKey(key); + var displayName = required(params, 'displayName'); var createdGroup = authLib.createGroup({ idProvider: idProviderKey, @@ -17,21 +27,21 @@ exports.create = function createGroup(params) { var ms = params.members; if (ms && ms.length > 0) { - principals.addMembers(key, ms); + addMembers(key, ms); } populateMembers(createdGroup); - principals.updateMemberships(key, params.memberships); + updateMemberships(key, params.memberships); populateMemberships(createdGroup); return createdGroup; }; -exports.update = function updateGroup(params) { - var key = common.required(params, 'key'); - var displayName = common.required(params, 'displayName'); +export function update(params) { + var key = required(params, 'key'); + var displayName = required(params, 'displayName'); var updatedGroup = authLib.modifyGroup({ key: key, @@ -43,11 +53,11 @@ exports.update = function updateGroup(params) { } }); - principals.updateMembers(key, params.addMembers, params.removeMembers); + updateMembers(key, params.addMembers, params.removeMembers); populateMembers(updatedGroup); - principals.updateMemberships( + updateMemberships( key, params.addMemberships, params.removeMemberships @@ -60,8 +70,7 @@ exports.update = function updateGroup(params) { function populateMembers(group) { // eslint-disable-next-line no-param-reassign - group.member = principals - .getMembers(group.key || group._id) + group.member = getMembers(group.key || group._id) .map(function(member) { return member.key; }); @@ -69,5 +78,5 @@ function populateMembers(group) { function populateMemberships(group) { // eslint-disable-next-line no-param-reassign - group.memberships = principals.getMemberships(group.key || group._id); + group.memberships = getMemberships(group.key || group._id); } diff --git a/src/main/resources/lib/principals.ts b/src/main/resources/lib/principals.ts index 29fab26da..103048467 100644 --- a/src/main/resources/lib/principals.ts +++ b/src/main/resources/lib/principals.ts @@ -4,7 +4,10 @@ import { queryAll, singleOrArray } from './common'; -import { deletePrincipal } from '/lib/xp/auth'; +import { + deletePrincipal, + getMemberships as _getMemberships +} from '/lib/xp/auth'; export function getByKeys(keys) { @@ -21,8 +24,8 @@ export function getByKeys(keys) { return keys instanceof Array ? principals : singleOrArray(principals); } -export function getMemberships(key, transitive) { - return authLib.getMemberships(key, transitive); +export function getMemberships(key, transitive?: boolean) { + return _getMemberships(key, transitive); } export function addMemberships(key, memberships) { @@ -33,7 +36,7 @@ export function addMemberships(key, memberships) { return addMms; } -export function removeMemberships(key, memberships) { +export function removeMemberships(key, memberships: string|string[]) { var removeMms = [].concat(memberships).map(function(current) { removeMembers(current, key); return current; @@ -41,7 +44,7 @@ export function removeMemberships(key, memberships) { return removeMms; } -export function updateMemberships(key, addMms, removeMms) { +export function updateMemberships(key, addMms, removeMms?: string|string[]) { if (addMms && addMms.length > 0) { addMemberships(key, addMms); } diff --git a/src/main/resources/lib/roles.ts b/src/main/resources/lib/roles.ts index 1d9ad37c3..983fff181 100644 --- a/src/main/resources/lib/roles.ts +++ b/src/main/resources/lib/roles.ts @@ -1,13 +1,24 @@ -var common = require('./common'); -var principals = require('./principals'); -var authLib = require('/lib/xp/auth'); +import { + nameFromKey, + required +} from './common'; +import { + addMembers, + getMembers, + updateMembers +} from './principals'; +import { + createRole, + modifyRole +} from '/lib/xp/auth'; -exports.create = function createRole(params) { - var key = common.required(params, 'key'); - var name = common.nameFromKey(key); - var displayName = common.required(params, 'displayName'); - var createdRole = authLib.createRole({ +export function create(params) { + var key = required(params, 'key'); + var name = nameFromKey(key); + var displayName = required(params, 'displayName'); + + var createdRole = createRole({ name: name, displayName: displayName, description: params.description @@ -15,7 +26,7 @@ exports.create = function createRole(params) { var members = params.members; if (members && members.length > 0) { - principals.addMembers(key, members); + addMembers(key, members); } populateMembers(createdRole); @@ -23,15 +34,15 @@ exports.create = function createRole(params) { return createdRole; }; -exports.update = function updateRole(params) { - var key = common.required(params, 'key'); - var displayName = common.required(params, 'displayName'); +export function update(params) { + var key = required(params, 'key'); + var displayName = required(params, 'displayName'); if (isSuperUserToBeRemovedFromAdmins(key, params.removeMembers)) { throw new Error('Can\'t remove Super User from Administrators'); } - var modifiedRole = authLib.modifyRole({ + var modifiedRole = modifyRole({ key: key, editor: function(role) { var newRole = role; @@ -41,7 +52,7 @@ exports.update = function updateRole(params) { } }); - principals.updateMembers(key, params.addMembers, params.removeMembers); + updateMembers(key, params.addMembers, params.removeMembers); populateMembers(modifiedRole); @@ -54,8 +65,7 @@ function isSuperUserToBeRemovedFromAdmins(key, removeMembers) { function populateMembers(role) { // eslint-disable-next-line no-param-reassign - role.member = principals - .getMembers(role.key || role._id) + role.member = getMembers(role.key || role._id) .map(function(member) { return member.key; }); diff --git a/src/main/resources/lib/useritems.ts b/src/main/resources/lib/useritems.ts index 735849d0f..043a14b55 100644 --- a/src/main/resources/lib/useritems.ts +++ b/src/main/resources/lib/useritems.ts @@ -1,26 +1,30 @@ -var common = require('./common'); - -module.exports = { - list: function (types, query, itemIds, start, count) { - var result = common.queryAll({ - query: createUserItemsQuery(query, types, itemIds), - start: start, - count: count, - aggregations: { - principalType: { - terms: { - field: 'principalType' - } +import { + queryAll, + UserItemType +} from './common'; + + +export function list(types, query, itemIds, start, count) { + const result = queryAll({ + query: createUserItemsQuery(query, types, itemIds), + start: start, + count: count, + aggregations: { + principalType: { + terms: { + field: 'principalType' } } - }); + } + }); + + processIdProviderAggregation(result); + + return result; +} - processIdProviderAggregation(result); +export const Type = UserItemType; - return result; - }, - Type: common.UserItemType -}; function processIdProviderAggregation(result) { if (!result || !result.aggregations || !result.aggregations.principalType || !result.aggregations.principalType.buckets) { @@ -66,15 +70,15 @@ function createTextQuery(query) { } function createTypesQuery(types) { - var newTypes = types || common.UserItemType.all(); + var newTypes = types || UserItemType.all(); var query = newTypes .map(function(type) { switch (type) { - case common.UserItemType.ROLE: - case common.UserItemType.GROUP: - case common.UserItemType.USER: + case UserItemType.ROLE: + case UserItemType.GROUP: + case UserItemType.USER: return 'principalType = "' + type + '"'; - case common.UserItemType.ID_PROVIDER: + case UserItemType.ID_PROVIDER: return '(_parentPath = "/identity" AND _path != "/identity/roles")'; default: return null; diff --git a/src/main/resources/lib/users.ts b/src/main/resources/lib/users.ts index 438fa6b00..38cba3820 100644 --- a/src/main/resources/lib/users.ts +++ b/src/main/resources/lib/users.ts @@ -1,14 +1,22 @@ -var common = require('./common'); -var principals = require('./principals'); +import { + idProviderFromKey, + required +} from './common'; +import { + addMemberships, + getMemberships, + updateMemberships +} from './principals'; var authLib = require('/lib/xp/auth'); -var utilLib = require('/lib/util'); +// @ts-expect-error Cannot find module '/lib/util' or its corresponding type declarations.ts(2307) +import { forceArray } from '/lib/util'; -exports.create = function createUser(params) { - var key = common.required(params, 'key'); - var idProviderKey = common.idProviderFromKey(key); - var name = common.required(params, 'login'); - var displayName = common.required(params, 'displayName'); - var email = common.required(params, 'email'); +export function create(params) { + var key = required(params, 'key'); + var idProviderKey = idProviderFromKey(key); + var name = required(params, 'login'); + var displayName = required(params, 'displayName'); + var email = required(params, 'email'); var createdUser = authLib.createUser({ idProvider: idProviderKey, @@ -19,20 +27,20 @@ exports.create = function createUser(params) { var mms = params.memberships; if (mms && mms.length > 0) { - principals.addMemberships(key, mms); + addMemberships(key, mms); } - var password = common.required(params, 'password'); - exports.updatePwd(key, password); + var password = required(params, 'password'); + updatePwd(key, password); populateMemberships(createdUser); return createdUser; }; -exports.update = function updateUser(params) { - var key = common.required(params, 'key'); - var displayName = common.required(params, 'displayName'); +export function update(params) { + var key = required(params, 'key'); + var displayName = required(params, 'displayName'); var updatedUser = authLib.modifyUser({ key: key, @@ -45,7 +53,7 @@ exports.update = function updateUser(params) { } }); - principals.updateMemberships( + updateMemberships( key, params.addMemberships, params.removeMemberships @@ -56,7 +64,7 @@ exports.update = function updateUser(params) { return updatedUser; }; -exports.updatePwd = function (key, pwd) { +export function updatePwd(key, pwd) { var password = pwd.replace(/\s/g, ''); try { authLib.changePassword({ @@ -70,34 +78,36 @@ exports.updatePwd = function (key, pwd) { } }; -exports.removePublicKey = function (params) { - const userKey = common.required(params, 'userKey'); - const kid = common.required(params, 'kid'); +export function removePublicKey(params) { + const userKey = required(params, 'userKey'); + const kid = required(params, 'kid'); const updatedProfile = authLib.modifyProfile({ key: userKey, editor: function (profile) { - const publicKeys = utilLib.forceArray(profile.publicKeys); + const publicKeys = forceArray(profile.publicKeys); profile.publicKeys = publicKeys.filter(key => key.kid !== kid); return profile; } }); - return utilLib.forceArray(updatedProfile.publicKeys).filter(key => key.kid === kid).length === 0; + return forceArray(updatedProfile.publicKeys).filter(key => key.kid === kid).length === 0; }; -exports.addPublicKey = function (params) { - const userKey = common.required(params, 'userKey'); - const publicKey = common.required(params, 'publicKey'); +export function addPublicKey(params) { + const userKey = required(params, 'userKey'); + const publicKey = required(params, 'publicKey'); const label = params.label; - const kidGenerator = __.newBean('com.enonic.xp.app.users.handler.KidGeneratorHandler'); + const kidGenerator = __.newBean('com.enonic.xp.app.users.handler.KidGeneratorHandler') as { + generateKid: (publicKey: string) => string + }; const kid = kidGenerator.generateKid(publicKey); const updatedProfile = authLib.modifyProfile({ key: userKey, editor: function (profile) { - const publicKeys = utilLib.forceArray(profile.publicKeys); + const publicKeys = forceArray(profile.publicKeys); const existingKeys = publicKeys.filter(key => key.kid === kid); if (existingKeys.length > 0) { @@ -117,10 +127,10 @@ exports.addPublicKey = function (params) { } }); - return utilLib.forceArray(updatedProfile.publicKeys).filter(key => key.kid === kid)[0]; + return forceArray(updatedProfile.publicKeys).filter(key => key.kid === kid)[0]; }; function populateMemberships(user) { // eslint-disable-next-line no-param-reassign - user.memberships = principals.getMemberships(user.key || user._id); + user.memberships = getMemberships(user.key || user._id); } diff --git a/src/main/resources/services/graphql/graphql.ts b/src/main/resources/services/graphql/graphql.ts index 877b3c3ae..8c7787c3e 100644 --- a/src/main/resources/services/graphql/graphql.ts +++ b/src/main/resources/services/graphql/graphql.ts @@ -3,10 +3,11 @@ // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) import { execute } from '/lib/graphql'; import { schemaGenerator } from './schemaUtil'; +import * as graphQlSchema from './schema'; +let schema; Java.type('com.enonic.xp.app.users.GraphQLSchemaSynchronizer').sync(__.toScriptValue(function() { - var graphQlSchema = require('./schema'); - var schema = schemaGenerator.createSchema(graphQlSchema); + schema = schemaGenerator.createSchema(graphQlSchema); })); export function post(req) { diff --git a/src/main/resources/services/graphql/schema/index.ts b/src/main/resources/services/graphql/schema/index.ts index e158dccd2..cab748cd2 100644 --- a/src/main/resources/services/graphql/schema/index.ts +++ b/src/main/resources/services/graphql/schema/index.ts @@ -1,4 +1,2 @@ -module.exports = { - query: require('./query'), - mutation: require('./mutation') -}; +export { default as mutation } from './mutation'; +export { default as query } from './query'; diff --git a/src/main/resources/services/graphql/schema/mutation.ts b/src/main/resources/services/graphql/schema/mutation.ts index 03626530a..dba7a345f 100644 --- a/src/main/resources/services/graphql/schema/mutation.ts +++ b/src/main/resources/services/graphql/schema/mutation.ts @@ -1,43 +1,74 @@ -var graphQl = require('/lib/graphql'); +import { + GraphQLBoolean, + GraphQLString, + list, + nonNull + // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) +} from '/lib/graphql'; -var idproviders = require('/lib/idproviders'); -var principals = require('/lib/principals'); -var users = require('/lib/users'); -var groups = require('/lib/groups'); -var roles = require('/lib/roles'); +import { + create as createIdProvider, + delete as deleteIdProvider, + update as updateIdProvider +} from '/lib/idproviders'; +import { delete as deletePrincipals } from '/lib/principals'; +import { + addPublicKey, + create as createUser, + removePublicKey, + update as updateUser, + updatePwd +} from '/lib/users'; +import { + create as createGroup, + update as updateGroup, +} from '/lib/groups'; +import { + create as createRole, + update as updateRole +} from '/lib/roles'; -var schemaGenerator = require('../schemaUtil').schemaGenerator; +import { schemaGenerator } from '../schemaUtil'; +import { + IdProviderDeleteType, + IdProviderType, + PrincipalDeleteType, + PrincipalType, + PublicKeyType +} from '../types/objects' +import { + IdProviderAccessControlInput, + IdProviderConfigInput +} from '../types/inputs'; -var graphQlObjectTypes = require('../types').objects; -var graphQlInputTypes = require('../types').inputs; -module.exports = schemaGenerator.createObjectType({ +const mutation = schemaGenerator.createObjectType({ name: 'Mutation', fields: { // Principal deletePrincipals: { - type: graphQl.list(graphQlObjectTypes.PrincipalDeleteType), + type: list(PrincipalDeleteType), args: { - keys: graphQl.list(graphQl.GraphQLString) + keys: list(GraphQLString) }, resolve: function(env) { - return principals.delete(env.args.keys); + return deletePrincipals(env.args.keys); } }, // User createUser: { - type: graphQlObjectTypes.PrincipalType, + type: PrincipalType, args: { - key: graphQl.nonNull(graphQl.GraphQLString), - displayName: graphQl.nonNull(graphQl.GraphQLString), - email: graphQl.nonNull(graphQl.GraphQLString), - login: graphQl.nonNull(graphQl.GraphQLString), - password: graphQl.nonNull(graphQl.GraphQLString), - memberships: graphQl.list(graphQl.GraphQLString) + key: nonNull(GraphQLString), + displayName: nonNull(GraphQLString), + email: nonNull(GraphQLString), + login: nonNull(GraphQLString), + password: nonNull(GraphQLString), + memberships: list(GraphQLString) }, resolve: function(env) { - return users.create({ + return createUser({ key: env.args.key, displayName: env.args.displayName, email: env.args.email, @@ -48,17 +79,17 @@ module.exports = schemaGenerator.createObjectType({ } }, updateUser: { - type: graphQlObjectTypes.PrincipalType, + type: PrincipalType, args: { - key: graphQl.nonNull(graphQl.GraphQLString), - displayName: graphQl.nonNull(graphQl.GraphQLString), - email: graphQl.nonNull(graphQl.GraphQLString), - login: graphQl.nonNull(graphQl.GraphQLString), - addMemberships: graphQl.list(graphQl.GraphQLString), - removeMemberships: graphQl.list(graphQl.GraphQLString) + key: nonNull(GraphQLString), + displayName: nonNull(GraphQLString), + email: nonNull(GraphQLString), + login: nonNull(GraphQLString), + addMemberships: list(GraphQLString), + removeMemberships: list(GraphQLString) }, resolve: function(env) { - return users.update({ + return updateUser({ key: env.args.key, displayName: env.args.displayName, email: env.args.email, @@ -69,37 +100,37 @@ module.exports = schemaGenerator.createObjectType({ } }, updatePwd: { - type: graphQl.GraphQLBoolean, + type: GraphQLBoolean, args: { - key: graphQl.nonNull(graphQl.GraphQLString), - password: graphQl.nonNull(graphQl.GraphQLString) + key: nonNull(GraphQLString), + password: nonNull(GraphQLString) }, resolve: function(env) { - return users.updatePwd(env.args.key, env.args.password); + return updatePwd(env.args.key, env.args.password); } }, removePublicKey: { - type: graphQl.GraphQLBoolean, + type: GraphQLBoolean, args: { - userKey: graphQl.nonNull(graphQl.GraphQLString), - kid: graphQl.nonNull(graphQl.GraphQLString), + userKey: nonNull(GraphQLString), + kid: nonNull(GraphQLString), }, resolve: function (env) { - return users.removePublicKey({ + return removePublicKey({ userKey: env.args.userKey, kid: env.args.kid, }); } }, addPublicKey: { - type: graphQlObjectTypes.PublicKeyType, + type: PublicKeyType, args: { - userKey: graphQl.nonNull(graphQl.GraphQLString), - publicKey: graphQl.nonNull(graphQl.GraphQLString), - label: graphQl.nonNull(graphQl.GraphQLString), + userKey: nonNull(GraphQLString), + publicKey: nonNull(GraphQLString), + label: nonNull(GraphQLString), }, resolve: function (env) { - return users.addPublicKey({ + return addPublicKey({ userKey: env.args.userKey, publicKey: env.args.publicKey, label: env.args.label, @@ -109,16 +140,16 @@ module.exports = schemaGenerator.createObjectType({ // Group createGroup: { - type: graphQlObjectTypes.PrincipalType, + type: PrincipalType, args: { - key: graphQl.nonNull(graphQl.GraphQLString), - displayName: graphQl.nonNull(graphQl.GraphQLString), - description: graphQl.GraphQLString, - members: graphQl.list(graphQl.GraphQLString), - memberships: graphQl.list(graphQl.GraphQLString) + key: nonNull(GraphQLString), + displayName: nonNull(GraphQLString), + description: GraphQLString, + members: list(GraphQLString), + memberships: list(GraphQLString) }, resolve: function(env) { - return groups.create({ + return createGroup({ key: env.args.key, displayName: env.args.displayName, description: env.args.description, @@ -128,18 +159,18 @@ module.exports = schemaGenerator.createObjectType({ } }, updateGroup: { - type: graphQlObjectTypes.PrincipalType, + type: PrincipalType, args: { - key: graphQl.nonNull(graphQl.GraphQLString), - displayName: graphQl.nonNull(graphQl.GraphQLString), - description: graphQl.GraphQLString, - addMembers: graphQl.list(graphQl.GraphQLString), - removeMembers: graphQl.list(graphQl.GraphQLString), - addMemberships: graphQl.list(graphQl.GraphQLString), - removeMemberships: graphQl.list(graphQl.GraphQLString) + key: nonNull(GraphQLString), + displayName: nonNull(GraphQLString), + description: GraphQLString, + addMembers: list(GraphQLString), + removeMembers: list(GraphQLString), + addMemberships: list(GraphQLString), + removeMemberships: list(GraphQLString) }, resolve: function(env) { - return groups.update({ + return updateGroup({ key: env.args.key, displayName: env.args.displayName, description: env.args.description, @@ -153,15 +184,15 @@ module.exports = schemaGenerator.createObjectType({ // Role createRole: { - type: graphQlObjectTypes.PrincipalType, + type: PrincipalType, args: { - key: graphQl.nonNull(graphQl.GraphQLString), - displayName: graphQl.nonNull(graphQl.GraphQLString), - description: graphQl.GraphQLString, - members: graphQl.list(graphQl.GraphQLString) + key: nonNull(GraphQLString), + displayName: nonNull(GraphQLString), + description: GraphQLString, + members: list(GraphQLString) }, resolve: function(env) { - return roles.create({ + return createRole({ key: env.args.key, displayName: env.args.displayName, description: env.args.description, @@ -170,16 +201,16 @@ module.exports = schemaGenerator.createObjectType({ } }, updateRole: { - type: graphQlObjectTypes.PrincipalType, + type: PrincipalType, args: { - key: graphQl.nonNull(graphQl.GraphQLString), - displayName: graphQl.nonNull(graphQl.GraphQLString), - description: graphQl.GraphQLString, - addMembers: graphQl.list(graphQl.GraphQLString), - removeMembers: graphQl.list(graphQl.GraphQLString) + key: nonNull(GraphQLString), + displayName: nonNull(GraphQLString), + description: GraphQLString, + addMembers: list(GraphQLString), + removeMembers: list(GraphQLString) }, resolve: function(env) { - return roles.update({ + return updateRole({ key: env.args.key, displayName: env.args.displayName, description: env.args.description, @@ -191,14 +222,14 @@ module.exports = schemaGenerator.createObjectType({ // IdProvider createIdProvider: { - type: graphQlObjectTypes.IdProviderType, + type: IdProviderType, args: { - key: graphQl.nonNull(graphQl.GraphQLString), - displayName: graphQl.nonNull(graphQl.GraphQLString), - description: graphQl.GraphQLString, - idProviderConfig: graphQlInputTypes.IdProviderConfigInput, - permissions: graphQl.list( - graphQlInputTypes.IdProviderAccessControlInput + key: nonNull(GraphQLString), + displayName: nonNull(GraphQLString), + description: GraphQLString, + idProviderConfig: IdProviderConfigInput, + permissions: list( + IdProviderAccessControlInput ) }, resolve: function(env) { @@ -208,7 +239,7 @@ module.exports = schemaGenerator.createObjectType({ idProviderConfig.config = JSON.parse(idProviderConfig.config); } - return idproviders.create({ + return createIdProvider({ key: env.args.key, displayName: env.args.displayName, description: env.args.description, @@ -218,14 +249,14 @@ module.exports = schemaGenerator.createObjectType({ } }, updateIdProvider: { - type: graphQlObjectTypes.IdProviderType, + type: IdProviderType, args: { - key: graphQl.nonNull(graphQl.GraphQLString), - displayName: graphQl.nonNull(graphQl.GraphQLString), - description: graphQl.GraphQLString, - idProviderConfig: graphQlInputTypes.IdProviderConfigInput, - permissions: graphQl.list( - graphQlInputTypes.IdProviderAccessControlInput + key: nonNull(GraphQLString), + displayName: nonNull(GraphQLString), + description: GraphQLString, + idProviderConfig: IdProviderConfigInput, + permissions: list( + IdProviderAccessControlInput ) }, resolve: function(env) { @@ -235,7 +266,7 @@ module.exports = schemaGenerator.createObjectType({ idProviderConfig.config = JSON.parse(idProviderConfig.config); } - return idproviders.update({ + return updateIdProvider({ key: env.args.key, displayName: env.args.displayName, description: env.args.description, @@ -245,13 +276,14 @@ module.exports = schemaGenerator.createObjectType({ } }, deleteIdProviders: { - type: graphQl.list(graphQlObjectTypes.IdProviderDeleteType), + type: list(IdProviderDeleteType), args: { - keys: graphQl.list(graphQl.GraphQLString) + keys: list(GraphQLString) }, resolve: function(env) { - return idproviders.delete(env.args.keys); + return deleteIdProvider(env.args.keys); } } } }); +export default mutation; diff --git a/src/main/resources/services/graphql/schema/query.ts b/src/main/resources/services/graphql/schema/query.ts index d142daa30..c47de3749 100644 --- a/src/main/resources/services/graphql/schema/query.ts +++ b/src/main/resources/services/graphql/schema/query.ts @@ -17,17 +17,25 @@ import { list as listPrincipals, Type } from '/lib/principals'; -var useritems = require('/lib/useritems'); +import {list as listUserItems} from '/lib/useritems'; import { getById as getRepositoryById, list as listRepositories } from '/lib/repositories'; import { schemaGenerator } from '../schemaUtil'; -import TypesType from '../types'; - - -var graphQlObjectTypes = TypesType.objects; -var graphQlEnums = TypesType.enums; +import * as TypesType from '../types'; +import { + PrincipalTypeEnum, + SortModeEnum, + UserItemTypeEnum +} from '../types/enums'; +import { + IdProviderType, + PrincipalConnectionType, + PrincipalType, + RepositoryType, + UserItemConnectionType +} from '../types/objects' function getUserItems(args, types) { @@ -35,20 +43,20 @@ function getUserItems(args, types) { var itemIds = args.itemIds; var count = args.count || 0; var start = args.start || 0; - return useritems.list(types, query, itemIds, start, count); + return listUserItems(types, query, itemIds, start, count); } -export = schemaGenerator.createObjectType({ +const query = schemaGenerator.createObjectType({ name: 'Query', fields: { idProviders: { - type: list(graphQlObjectTypes.IdProviderType), + type: list(IdProviderType), resolve: function () { return listIdProviders(); } }, idProvider: { - type: graphQlObjectTypes.IdProviderType, + type: IdProviderType, args: { key: nonNull(GraphQLString) }, @@ -58,16 +66,16 @@ export = schemaGenerator.createObjectType({ } }, defaultIdProvider: { - type: graphQlObjectTypes.IdProviderType, + type: IdProviderType, resolve: function () { return getDefault(); } }, principalsConnection: { - type: graphQlObjectTypes.PrincipalConnectionType, + type: PrincipalConnectionType, args: { idprovider: GraphQLString, - types: list(graphQlEnums.PrincipalTypeEnum), + types: list(PrincipalTypeEnum), query: GraphQLString, start: GraphQLInt, count: GraphQLInt, @@ -91,7 +99,7 @@ export = schemaGenerator.createObjectType({ } }, principal: { - type: graphQlObjectTypes.PrincipalType, + type: PrincipalType, args: { key: nonNull(GraphQLString), }, @@ -101,7 +109,7 @@ export = schemaGenerator.createObjectType({ } }, principals: { - type: list(graphQlObjectTypes.PrincipalType), + type: list(PrincipalType), args: { keys: nonNull(list(GraphQLString)) }, @@ -111,9 +119,9 @@ export = schemaGenerator.createObjectType({ } }, userItemsConnection: { - type: graphQlObjectTypes.UserItemConnectionType, + type: UserItemConnectionType, args: { - types: list(graphQlEnums.UserItemTypeEnum), + types: list(UserItemTypeEnum), query: GraphQLString, itemIds: list(GraphQLString), start: GraphQLInt, @@ -124,7 +132,7 @@ export = schemaGenerator.createObjectType({ } }, types: { - type: graphQlObjectTypes.TypesType, + type: TypesType, args: { query: GraphQLString, itemIds: list(GraphQLString), @@ -136,7 +144,7 @@ export = schemaGenerator.createObjectType({ } }, repository: { - type: graphQlObjectTypes.RepositoryType, + type: RepositoryType, args: { id: nonNull(GraphQLString) }, @@ -149,12 +157,12 @@ export = schemaGenerator.createObjectType({ } }, repositories: { - type: list(graphQlObjectTypes.RepositoryType), + type: list(RepositoryType), args: { query: GraphQLString, start: GraphQLInt, count: GraphQLInt, - sort: graphQlEnums.SortModeEnum + sort: SortModeEnum }, resolve: function (env) { if (!isAdmin()) { @@ -169,3 +177,4 @@ export = schemaGenerator.createObjectType({ } } }); +export default query; diff --git a/src/main/resources/services/graphql/types/index.ts b/src/main/resources/services/graphql/types/index.ts index 6d39155a2..48348b1c6 100644 --- a/src/main/resources/services/graphql/types/index.ts +++ b/src/main/resources/services/graphql/types/index.ts @@ -1,6 +1,3 @@ export * as enums from './enums'; export * as inputs from './inputs'; - -module.exports = { - objects: require('./objects') -}; +export * as objects from './objects'; diff --git a/src/main/resources/services/graphql/types/objects/idProvider.ts b/src/main/resources/services/graphql/types/objects/idProvider.ts index 2056b2f9b..4d61cfca7 100644 --- a/src/main/resources/services/graphql/types/objects/idProvider.ts +++ b/src/main/resources/services/graphql/types/objects/idProvider.ts @@ -9,7 +9,7 @@ import { IdProviderAccessEnum, IdProviderModeEnum } from '../enums'; -import { UserItemType } from './userItem'; +// import { UserItemType } from './userItem'; import { getIdProviderMode, getPermissions @@ -50,7 +50,8 @@ export const IdProviderConfig = schemaGenerator.createObjectType({ export const IdProviderType = schemaGenerator.createObjectType({ name: 'IdProvider', description: 'Domain representation of an id provider', - interfaces: [UserItemType], + // interfaces: [UserItemType], + // interfaces: [reference('UserItem')], fields: { key: { type: GraphQLString, @@ -105,9 +106,8 @@ export const IdProviderType = schemaGenerator.createObjectType({ } }); -// This seems like very bad code, trying to overwrite the state inside another module? -// Perhaps this worked when things are bundled into one file? -graphQlUserItem.typeResolverMap.idProviderType = exports.IdProviderType; +// NOTE: This populates the typeResolverMap which is used inside the UserItem typeResolver +// graphQlUserItem.typeResolverMap.idProviderType = IdProviderType; export const IdProviderDeleteType = schemaGenerator.createObjectType({ name: 'IdProviderDelete', diff --git a/src/main/resources/services/graphql/types/objects/index.ts b/src/main/resources/services/graphql/types/objects/index.ts index d887d0f2d..68583aa4b 100644 --- a/src/main/resources/services/graphql/types/objects/index.ts +++ b/src/main/resources/services/graphql/types/objects/index.ts @@ -1,25 +1,26 @@ -var graphQlConnection = require('./connection'); +import { createConnectionType } from './connection'; +import { PrincipalType } from './principal'; +import {UserItemType} from './userItem'; -var graphQlIdProvider = require('./idProvider'); -var graphQlPrincipal = require('./principal'); -var graphQlUserItem = require('./userItem'); -var graphQlTypes = require('./types'); -var graphQlRepository = require('./repository'); +export { + IdProviderDeleteType, + IdProviderType +} from './idProvider'; +export { + PrincipalDeleteType, + PublicKeyType +} from './principal'; +export { TypesType } from './types'; +export { RepositoryType } from './repository'; -export = { - IdProviderType: graphQlIdProvider.IdProviderType, - IdProviderDeleteType: graphQlIdProvider.IdProviderDeleteType, - PrincipalType: graphQlPrincipal.PrincipalType, - PrincipalDeleteType: graphQlPrincipal.PrincipalDeleteType, - TypesType: graphQlTypes.TypesType, - PrincipalConnectionType: graphQlConnection.createConnectionType( - 'Principal', - graphQlPrincipal.PrincipalType - ), - UserItemConnectionType: graphQlConnection.createConnectionType( - 'UserItem', - graphQlUserItem.UserItemType - ), - RepositoryType: graphQlRepository.RepositoryType, - PublicKeyType: graphQlPrincipal.PublicKeyType, -}; +export { PrincipalType }; + +export const PrincipalConnectionType = createConnectionType( + 'Principal', + PrincipalType +); + +export const UserItemConnectionType = createConnectionType( + 'UserItem', + UserItemType +); diff --git a/src/main/resources/services/graphql/types/objects/principal.ts b/src/main/resources/services/graphql/types/objects/principal.ts index 0042a922c..21a4c341f 100644 --- a/src/main/resources/services/graphql/types/objects/principal.ts +++ b/src/main/resources/services/graphql/types/objects/principal.ts @@ -1,30 +1,44 @@ -var graphQl = require('/lib/graphql'); +import { + GraphQLBoolean, + GraphQLString, + list, + reference + // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) +} from '/lib/graphql'; -var principals = require('/lib/principals'); +import { + getByKeys, + getMemberships +} from '/lib/principals'; -var schemaGenerator = require('../../schemaUtil').schemaGenerator; +import { schemaGenerator } from '../../schemaUtil'; -var graphQlEnums = require('../enums'); -var graphQlUtils = require('../../utils'); +import { + PermissionEnum, + PrincipalTypeEnum +} from '../enums'; +import {toArray} from '../../utils'; -var graphQlUserItem = require('./userItem'); -var utilLib = require('/lib/util'); +// import { UserItemType } from './userItem'; +// @ts-expect-error Cannot find module '/lib/util' or its corresponding type declarations.ts(2307) +import { forceArray } from '/lib/util'; -exports.PublicKeyType = schemaGenerator.createObjectType({ + +export const PublicKeyType = schemaGenerator.createObjectType({ name: 'PublicKey', description: 'Public key for a user', fields: { kid: { - type: graphQl.GraphQLString, + type: GraphQLString, }, publicKey: { - type: graphQl.GraphQLString, + type: GraphQLString, }, label: { - type: graphQl.GraphQLString, + type: GraphQLString, }, creationTime: { - type: graphQl.GraphQLString, + type: GraphQLString, } } }); @@ -34,115 +48,118 @@ var PrincipalAccessControlEntryType = schemaGenerator.createObjectType({ description: 'Domain representation of access control entry', fields: { principal: { - type: graphQl.reference('Principal'), + type: reference('Principal'), resolve: function (env) { - return principals.getByKeys(env.source.principal); + return getByKeys(env.source.principal); } }, allow: { - type: graphQl.list(graphQlEnums.PermissionEnum) + type: list(PermissionEnum) }, deny: { - type: graphQl.list(graphQlEnums.PermissionEnum) + type: list(PermissionEnum) } } }); -exports.PrincipalType = schemaGenerator.createObjectType({ +export const PrincipalType = schemaGenerator.createObjectType({ name: 'Principal', description: 'Domain representation of a principal', - interfaces: [graphQlUserItem.UserItemType], + // interfaces: [UserItemType], + // interfaces: [reference('UserItem')], // TODO constant fields: { key: { - type: graphQl.GraphQLString, + type: GraphQLString, resolve: function (env) { return env.source.key || env.source._id; } }, name: { - type: graphQl.GraphQLString, + type: GraphQLString, resolve: function (env) { return env.source._name; } }, path: { - type: graphQl.GraphQLString, + type: GraphQLString, resolve: function (env) { return env.source._path; } }, displayName: { - type: graphQl.GraphQLString + type: GraphQLString }, description: { - type: graphQl.GraphQLString + type: GraphQLString }, principalType: { - type: graphQlEnums.PrincipalTypeEnum + type: PrincipalTypeEnum }, idProviderKey: { - type: graphQl.GraphQLString + type: GraphQLString }, permissions: { - type: graphQl.list(PrincipalAccessControlEntryType), + type: list(PrincipalAccessControlEntryType), resolve: function (env) { return env.source._permissions || []; } }, login: { - type: graphQl.GraphQLString + type: GraphQLString }, email: { - type: graphQl.GraphQLString + type: GraphQLString }, memberships: { - type: graphQl.list(graphQl.reference('Principal')), + type: list(reference('Principal')), args: { - transitive: graphQl.GraphQLBoolean + transitive: GraphQLBoolean }, resolve: function (env) { var key = env.source.key || env.source._id; var transitive = env.args.transitive; - return graphQlUtils.toArray(principals.getMemberships(key, transitive)); + return toArray(getMemberships(key, transitive)); } }, members: { - type: graphQl.list(graphQl.GraphQLString), + type: list(GraphQLString), resolve: function (env) { - return graphQlUtils.toArray(env.source.member); + return toArray(env.source.member); } }, modifiedTime: { - type: graphQl.GraphQLString, + type: GraphQLString, resolve: function (env) { return env.source._timestamp; } }, publicKeys: { - type: graphQl.list(exports.PublicKeyType), + type: list(PublicKeyType), resolve: function (env) { - return env.source.profile ? utilLib.forceArray(env.source.profile.publicKeys) : []; + return env.source.profile ? forceArray(env.source.profile.publicKeys) : []; } } } }); -graphQlUserItem.typeResolverMap.principalType = exports.PrincipalType; -exports.PrincipalDeleteType = schemaGenerator.createObjectType({ +// NOTE: This populates the typeResolverMap which is used inside the UserItem typeResolver +// graphQlUserItem.typeResolverMap.principalType = exports.PrincipalType; + +export const PrincipalDeleteType = schemaGenerator.createObjectType({ name: 'PrincipalDelete', description: 'Result of a principal delete operation', fields: { key: { - type: graphQl.GraphQLString, + type: GraphQLString, resolve: function (env) { return env.source.key; } }, deleted: { - type: graphQl.GraphQLBoolean + type: GraphQLBoolean }, reason: { - type: graphQl.GraphQLString + type: GraphQLString } } }); diff --git a/src/main/resources/services/graphql/types/objects/repository.ts b/src/main/resources/services/graphql/types/objects/repository.ts index 3d2644416..b0f56fd34 100644 --- a/src/main/resources/services/graphql/types/objects/repository.ts +++ b/src/main/resources/services/graphql/types/objects/repository.ts @@ -1,28 +1,32 @@ -var graphQl = require('/lib/graphql'); -var graphQlUtils = require('../../utils'); +import { + GraphQLString, + list + // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) +} from '/lib/graphql'; +import { toArray } from '../../utils'; +import { schemaGenerator } from '../../schemaUtil'; -var schemaGenerator = require('../../schemaUtil').schemaGenerator; -exports.RepositoryType = schemaGenerator.createObjectType({ +export const RepositoryType = schemaGenerator.createObjectType({ name: 'Repository', description: 'Domain representation of a repository', fields: { id: { - type: graphQl.GraphQLString, + type: GraphQLString, resolve: function (env) { return env.source._id; } }, name: { - type: graphQl.GraphQLString, + type: GraphQLString, resolve: function (env) { return env.source._name; } }, branches: { - type: graphQl.list(graphQl.GraphQLString), + type: list(GraphQLString), resolve: function (env) { - return graphQlUtils.toArray(env.source.branches); + return toArray(env.source.branches); } } } diff --git a/src/main/resources/services/graphql/types/objects/types.ts b/src/main/resources/services/graphql/types/objects/types.ts index de2e1d79b..831faaba4 100644 --- a/src/main/resources/services/graphql/types/objects/types.ts +++ b/src/main/resources/services/graphql/types/objects/types.ts @@ -8,7 +8,7 @@ import { AggregationType } from './aggregations'; import { schemaGenerator } from '../../schemaUtil'; -export = schemaGenerator.createObjectType({ +export const TypesType = schemaGenerator.createObjectType({ name: 'Types', fields: { totalCount: { diff --git a/src/main/resources/services/graphql/types/objects/userItem.ts b/src/main/resources/services/graphql/types/objects/userItem.ts index 64efc5682..fea328695 100644 --- a/src/main/resources/services/graphql/types/objects/userItem.ts +++ b/src/main/resources/services/graphql/types/objects/userItem.ts @@ -2,9 +2,12 @@ import { GraphQLString } from '/lib/graphql'; import { schemaGenerator } from '../../schemaUtil'; +import {IdProviderType} from './idProvider'; +import {PrincipalType} from './principal'; + export const typeResolverMap = { - principalType: null, - idProviderType: null + principalType: PrincipalType, + idProviderType: IdProviderType }; export const UserItemType = schemaGenerator.createInterfaceType({ diff --git a/tsup/server.ts b/tsup/server.ts index 21e5cc7b7..2c6806e80 100644 --- a/tsup/server.ts +++ b/tsup/server.ts @@ -25,7 +25,8 @@ export default function buildServerConfig(): Options { // print(FILES_SERVER, { maxItems: Infinity }); return { - bundle: true, // Needed to bundle @enonic/js-utils + // bundle: true, // Needed to bundle @enonic/js-utils + bundle: false, dts: false, // d.ts files are use useless at runtime entry: FILES_SERVER, // env: { @@ -152,7 +153,8 @@ export default function buildServerConfig(): Options { platform: 'neutral', silent: ['QUIET', 'WARN'].includes(process.env.LOG_LEVEL_FROM_GRADLE||''), shims: false, // https://tsup.egoist.dev/#inject-cjs-and-esm-shims - splitting: true, + // splitting: true, + splitting: false, sourcemap: false, target: 'es5', tsconfig: 'src/main/resources/tsconfig.json', From cd83cf4d80bbe57e952d1f23cabfd7b63d133325 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Mon, 18 Sep 2023 17:23:43 +0200 Subject: [PATCH 10/43] 1817 more typescript --- src/main/resources/lib/permissionReports.ts | 27 ++++++++++--------- ...ermissionReport.js => permissionReport.ts} | 2 +- 2 files changed, 15 insertions(+), 14 deletions(-) rename src/main/resources/services/permissionReport/{permissionReport.js => permissionReport.ts} (93%) diff --git a/src/main/resources/lib/permissionReports.ts b/src/main/resources/lib/permissionReports.ts index 46f18d71d..685030e47 100644 --- a/src/main/resources/lib/permissionReports.ts +++ b/src/main/resources/lib/permissionReports.ts @@ -1,9 +1,14 @@ -var principals = require('./principals'); -var common = require('./common'); +import {getMemberships} from './principals'; +import { + isRole, + isSystemAdmin, + isUser, + newConnection +} from './common'; -var PERMISSIONS = ['READ', 'CREATE', 'MODIFY', 'DELETE', 'PUBLISH', 'READ_PERMISSIONS', 'WRITE_PERMISSIONS']; +const PERMISSIONS = ['READ', 'CREATE', 'MODIFY', 'DELETE', 'PUBLISH', 'READ_PERMISSIONS', 'WRITE_PERMISSIONS']; -function generateReport(principalKey, repositoryId, branch) { +export function generateReport(principalKey, repositoryId, branch) { var principalKeys = getPrincipalKeys(principalKey); var isSystemAdmin = hasSystemAdminRole(principalKeys); var filters = isSystemAdmin ? null : makeRepoNodesQueryFilters(principalKeys); @@ -29,14 +34,14 @@ function generateReport(principalKey, repositoryId, branch) { function getPrincipalKeys(principalKey) { var principalKeys = [principalKey]; - if (!common.isRole(principalKey)) { - var membershipKeys = principals.getMemberships(principalKey, true).map(function (m) { + if (!isRole(principalKey)) { + var membershipKeys = getMemberships(principalKey, true).map(function (m) { return m.key; }); principalKeys = principalKeys.concat(membershipKeys); } - if (common.isUser(principalKey)) { + if (isUser(principalKey)) { principalKeys.push('role:system.everyone'); if (principalKey != 'user:system:anonymous') { principalKeys.push('role:system.authenticated'); @@ -47,7 +52,7 @@ function getPrincipalKeys(principalKey) { } var queryRepositoryNodes = function (repositoryId, branch, filters) { - var repoConn = common.newConnection(repositoryId, branch); + var repoConn = newConnection(repositoryId, branch); return repoConn.query({ count: -1, // TODO Batch @@ -74,7 +79,7 @@ function makeRepoNodesQueryFilters(principalKeys) { function hasSystemAdminRole(principalKeys) { return principalKeys.some(function (principalKey) { - return common.isSystemAdmin(principalKey); + return isSystemAdmin(principalKey); }) } @@ -111,7 +116,3 @@ var generateSystemAdminReportLine = function (node) { return line.join(','); }; - -module.exports = { - generateReport: generateReport -}; diff --git a/src/main/resources/services/permissionReport/permissionReport.js b/src/main/resources/services/permissionReport/permissionReport.ts similarity index 93% rename from src/main/resources/services/permissionReport/permissionReport.js rename to src/main/resources/services/permissionReport/permissionReport.ts index 51a9746b3..379eeb815 100644 --- a/src/main/resources/services/permissionReport/permissionReport.js +++ b/src/main/resources/services/permissionReport/permissionReport.ts @@ -1,6 +1,6 @@ var permissionReports = require('/lib/permissionReports'); -exports.get = function (req) { +export function get(req) { var principalKey = req.params.principalKey; var repositoryId = req.params.repositoryId; var branch = req.params.branch; From cbb8fb0638b20ec5b744fcd928aa3c7a3d3b35f0 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Mon, 18 Sep 2023 17:41:37 +0200 Subject: [PATCH 11/43] constants --- build.gradle | 2 +- src/main/resources/services/graphql/constants.ts | 3 +++ .../services/graphql/types/objects/idProvider.ts | 3 ++- .../resources/services/graphql/types/objects/principal.ts | 8 ++++---- 4 files changed, 10 insertions(+), 6 deletions(-) create mode 100644 src/main/resources/services/graphql/constants.ts diff --git a/build.gradle b/build.gradle index aa0d53658..37f3f53ac 100644 --- a/build.gradle +++ b/build.gradle @@ -111,7 +111,7 @@ tasks.register('npmBuild', NpmTask) { } processResources { - exclude 'assets/**/*.ts' + exclude '**/*.ts' exclude 'assets/**/*.less' // lessc and postcss will handle this exclude 'assets/**/*.woff' // postcss-url will copy exclude 'assets/**/*.woff2' // postcss-url will copy diff --git a/src/main/resources/services/graphql/constants.ts b/src/main/resources/services/graphql/constants.ts new file mode 100644 index 000000000..22bcaeb76 --- /dev/null +++ b/src/main/resources/services/graphql/constants.ts @@ -0,0 +1,3 @@ +export enum ObjectTypeNames { + PRINCIPAL = 'Principal' +} diff --git a/src/main/resources/services/graphql/types/objects/idProvider.ts b/src/main/resources/services/graphql/types/objects/idProvider.ts index 4d61cfca7..748c7df4c 100644 --- a/src/main/resources/services/graphql/types/objects/idProvider.ts +++ b/src/main/resources/services/graphql/types/objects/idProvider.ts @@ -15,6 +15,7 @@ import { getPermissions } from '/lib/idproviders'; import { schemaGenerator } from '../../schemaUtil'; +import { ObjectTypeNames } from '../../constants'; var IdProviderAccessControlEntryType = schemaGenerator.createObjectType({ @@ -22,7 +23,7 @@ var IdProviderAccessControlEntryType = schemaGenerator.createObjectType({ description: 'Domain representation of id provider access control entry', fields: { principal: { - type: reference('Principal') + type: reference(ObjectTypeNames.PRINCIPAL) }, access: { type: IdProviderAccessEnum diff --git a/src/main/resources/services/graphql/types/objects/principal.ts b/src/main/resources/services/graphql/types/objects/principal.ts index 21a4c341f..7a1961f12 100644 --- a/src/main/resources/services/graphql/types/objects/principal.ts +++ b/src/main/resources/services/graphql/types/objects/principal.ts @@ -18,7 +18,7 @@ import { PrincipalTypeEnum } from '../enums'; import {toArray} from '../../utils'; - +import { ObjectTypeNames } from '../../constants'; // import { UserItemType } from './userItem'; // @ts-expect-error Cannot find module '/lib/util' or its corresponding type declarations.ts(2307) import { forceArray } from '/lib/util'; @@ -48,7 +48,7 @@ var PrincipalAccessControlEntryType = schemaGenerator.createObjectType({ description: 'Domain representation of access control entry', fields: { principal: { - type: reference('Principal'), + type: reference(ObjectTypeNames.PRINCIPAL), resolve: function (env) { return getByKeys(env.source.principal); } @@ -63,7 +63,7 @@ var PrincipalAccessControlEntryType = schemaGenerator.createObjectType({ }); export const PrincipalType = schemaGenerator.createObjectType({ - name: 'Principal', + name: ObjectTypeNames.PRINCIPAL, description: 'Domain representation of a principal', // interfaces: [UserItemType], // interfaces: [reference('UserItem')], // TODO constant @@ -111,7 +111,7 @@ export const PrincipalType = schemaGenerator.createObjectType({ type: GraphQLString }, memberships: { - type: list(reference('Principal')), + type: list(reference(ObjectTypeNames.PRINCIPAL)), args: { transitive: GraphQLBoolean }, From 15fc3f6073959187d202e15733b6e599057af519 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Tue, 19 Sep 2023 13:49:16 +0200 Subject: [PATCH 12/43] 1817 everything seems to work --- .editorconfig | 4 + .eslintrc.js | 4 +- build.gradle | 10 +- package.json | 1 + src/main/resources/admin/tools/main/main.ts | 4 +- src/main/resources/lib/auth.ts | 38 ++--- src/main/resources/lib/common.ts | 152 ++++++++++-------- src/main/resources/lib/groups.ts | 33 ++-- src/main/resources/lib/idproviders.ts | 8 +- src/main/resources/lib/permissionReports.ts | 61 ++++--- src/main/resources/lib/principals.ts | 24 +-- src/main/resources/lib/repositories.ts | 6 +- src/main/resources/lib/roles.ts | 26 +-- src/main/resources/lib/urlHelper.ts | 14 +- src/main/resources/lib/useritems.ts | 52 +++--- src/main/resources/lib/users.ts | 55 ++++--- src/main/resources/services/config/config.ts | 8 +- .../resources/services/graphql/constants.ts | 66 +++++++- .../resources/services/graphql/graphql.ts | 14 +- .../services/graphql/schema/index.ts | 4 +- .../services/graphql/schema/mutation.ts | 36 ++--- .../services/graphql/schema/query.ts | 107 ++++++------ .../resources/services/graphql/schemaUtil.ts | 2 +- .../resources/services/graphql/types/enums.ts | 15 +- .../resources/services/graphql/types/index.ts | 52 +++++- .../services/graphql/types/inputs.ts | 35 ++-- .../graphql/types/objects/aggregations.ts | 19 +-- .../graphql/types/objects/connection.ts | 42 ++--- .../graphql/types/objects/idProvider.ts | 59 +++---- .../services/graphql/types/objects/index.ts | 19 ++- .../graphql/types/objects/principal.ts | 35 ++-- .../graphql/types/objects/repository.ts | 7 +- .../services/graphql/types/objects/types.ts | 19 +-- .../graphql/types/objects/userItem.ts | 27 +++- src/main/resources/services/graphql/utils.ts | 4 - src/main/resources/services/i18n/i18n.ts | 8 +- .../permissionReport/permissionReport.ts | 12 +- .../resources/static/app/inputtype/index.ts | 4 +- tsup/server.ts | 8 +- tsup/static.ts | 4 +- 40 files changed, 640 insertions(+), 458 deletions(-) diff --git a/.editorconfig b/.editorconfig index 3bae8b56e..03f309931 100644 --- a/.editorconfig +++ b/.editorconfig @@ -12,3 +12,7 @@ indent_style = space [{*.less,package.json,*.yml}] indent_size = 2 + +[tsup/*.ts] +indent_size = 4 +indent_style = tab diff --git a/.eslintrc.js b/.eslintrc.js index 688ad1b0e..5e85f841b 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,8 +1,8 @@ module.exports = { extends: '@enonic/eslint-config', parserOptions: { - project: './tsconfig.json', - tsconfigRootDir: __dirname, + project: './src/main/resources/tsconfig.json', + // tsconfigRootDir: __dirname, }, 'rules': { 'new-cap': ['warn', {'capIsNewExceptions': ['Q']}], diff --git a/build.gradle b/build.gradle index 37f3f53ac..fb7f0777a 100644 --- a/build.gradle +++ b/build.gradle @@ -81,11 +81,11 @@ tasks.withType(Copy) { includeEmptyDirs = false } -task bunInstall( type: NpxTask ) { - // Running this should not create a package-lock.json file - command = 'bun' - args = ['install'] -} +// task bunInstall( type: NpxTask ) { +// // Running this should not create a package-lock.json file +// command = 'bun' +// args = ['install'] +// } tasks.register('lint', NpmTask) { dependsOn ( 'npmInstall' ) diff --git a/package.json b/package.json index 179710f50..b07d31016 100644 --- a/package.json +++ b/package.json @@ -69,6 +69,7 @@ "postcss-normalize": "^10.0.1", "postcss-sort-media-queries": "^5.2.0", "postcss-url": "^10.1.3", + "q-i": "^2.0.1", "source-map-loader": "^4.0.1", "swc-loader": "^0.2.3", "terser-webpack-plugin": "^5.3.9", diff --git a/src/main/resources/admin/tools/main/main.ts b/src/main/resources/admin/tools/main/main.ts index 60370361a..7a30025ad 100644 --- a/src/main/resources/admin/tools/main/main.ts +++ b/src/main/resources/admin/tools/main/main.ts @@ -16,8 +16,8 @@ import { assetUrl, serviceUrl } from '/lib/xp/portal'; -import { localize } from '/lib/xp/i18n'; -import { immutableGetter, getAdminUrl } from '/lib/urlHelper'; +import {localize} from '/lib/xp/i18n'; +import {immutableGetter, getAdminUrl} from '/lib/urlHelper'; import { FILEPATH_MANIFEST_CJS, FILEPATH_MANIFEST_NODE_MODULES, diff --git a/src/main/resources/lib/auth.ts b/src/main/resources/lib/auth.ts index b3ee954cf..a3abe2e7c 100644 --- a/src/main/resources/lib/auth.ts +++ b/src/main/resources/lib/auth.ts @@ -1,4 +1,4 @@ -import { hasRole } from '/lib/xp/auth'; +import {hasRole} from '/lib/xp/auth'; const Roles = { ADMIN: 'system.admin', @@ -13,7 +13,7 @@ const Roles = { }; function required(params, name) { - var value = params[name]; + const value = params[name]; if (value === undefined) { throw "Parameter '" + name + "' is required"; } @@ -32,10 +32,10 @@ function nullOrValue(value) { * @returns {object} the id provider specified, or null if it doesn't exist. */ export function getIdProvider(params) { - var bean = __.newBean('com.enonic.xp.app.users.lib.auth.GetIdProviderHandler'); + const bean = __.newBean('com.enonic.xp.app.users.lib.auth.GetIdProviderHandler'); bean.setIdProviderKey(required(params, 'key')); return __.toNativeObject(bean.getIdProvider()); -}; +} /** * Returns the list of all the id providers. @@ -43,9 +43,9 @@ export function getIdProvider(params) { * @returns {object[]} Array of id providers. */ export function getIdProviders() { - var bean = __.newBean('com.enonic.xp.app.users.lib.auth.GetIdProvidersHandler'); + let bean = __.newBean('com.enonic.xp.app.users.lib.auth.GetIdProvidersHandler'); return __.toNativeObject(bean.getIdProviders()); -}; +} /** * Returns a string representation of the ID provider mode. @@ -55,10 +55,10 @@ export function getIdProviders() { * @returns {string} The ID provider mode. */ export function getIdProviderMode(params) { - var bean = __.newBean('com.enonic.xp.app.users.lib.auth.GetIdProviderModeHandler'); + let bean = __.newBean('com.enonic.xp.app.users.lib.auth.GetIdProviderModeHandler'); bean.setApplicationKey(required(params, 'key')); return bean.getIdProviderMode(); -}; +} /** * Returns the id provider permissions. @@ -68,10 +68,10 @@ export function getIdProviderMode(params) { * @returns {object[]} Returns the list of principals with access level. */ export function getPermissions(params) { - var bean = __.newBean('com.enonic.xp.app.users.lib.auth.GetPermissionsHandler'); + let bean = __.newBean('com.enonic.xp.app.users.lib.auth.GetPermissionsHandler'); bean.setIdProviderKey(required(params, 'key')); return __.toNativeObject(bean.getPermissions()); -}; +} /** * Returns default id provider permissions. @@ -79,9 +79,9 @@ export function getPermissions(params) { * @returns {object[]} Returns the list of principals with access level. */ export function defaultPermissions() { - var bean = __.newBean('com.enonic.xp.app.users.lib.auth.DefaultPermissionsHandler'); + let bean = __.newBean('com.enonic.xp.app.users.lib.auth.DefaultPermissionsHandler'); return __.toNativeObject(bean.defaultPermissions()); -}; +} /** * Creates an id provider. @@ -93,7 +93,7 @@ export function defaultPermissions() { * @param {object} [params.permissions] Id provider permissions. */ export function createIdProvider(params) { - var bean = __.newBean('com.enonic.xp.app.users.lib.auth.CreateIdProviderHandler'); + let bean = __.newBean('com.enonic.xp.app.users.lib.auth.CreateIdProviderHandler'); bean.setName(required(params, 'name')); bean.setDisplayName(nullOrValue(params.displayName)); @@ -102,7 +102,7 @@ export function createIdProvider(params) { bean.setPermissions(__.toScriptValue(params.permissions)); return __.toNativeObject(bean.createIdProvider()); -}; +} /** * Update an id provider. @@ -114,14 +114,14 @@ export function createIdProvider(params) { * @returns {object} The updated id provider. */ export function modifyIdProvider(params) { - var bean = __.newBean('com.enonic.xp.app.users.lib.auth.ModifyIdProviderHandler'); + let bean = __.newBean('com.enonic.xp.app.users.lib.auth.ModifyIdProviderHandler'); bean.setIdProviderKey(required(params, 'key')); bean.setEditor(__.toScriptValue(required(params, 'editor'))); bean.setPermissions(__.toScriptValue(params.permissions)); return __.toNativeObject(bean.modifyIdProvider()); -}; +} /** * Delete the id provider by the key. @@ -131,11 +131,11 @@ export function modifyIdProvider(params) { * @returns {object} the id providers specified, or null if it doesn't exist. */ export function deleteIdProviders(params) { - var bean = __.newBean('com.enonic.xp.app.users.lib.auth.DeleteIdProvidersHandler'); + let bean = __.newBean('com.enonic.xp.app.users.lib.auth.DeleteIdProvidersHandler'); bean.setIdProviderKeys(__.toScriptValue(required(params, 'keys'))); return __.toNativeObject(bean.deleteIdProviders()); -}; +} export function isAdmin() { return hasRole(Roles.ADMIN); -}; +} diff --git a/src/main/resources/lib/common.ts b/src/main/resources/lib/common.ts index dc90e1f4a..d46d6783c 100644 --- a/src/main/resources/lib/common.ts +++ b/src/main/resources/lib/common.ts @@ -1,4 +1,11 @@ -import { connect } from '/lib/xp/node'; +import type { + Aggregations, + QueryNodeParams +} from '/lib/xp/node'; + + +import {connect} from '/lib/xp/node'; + const namePrettyfier = Java.type('com.enonic.xp.name.NamePrettyfier'); @@ -7,20 +14,19 @@ const REPO_BRANCH = 'master'; const MAX_COUNT = -1; const SYSTEM_ADMIN = 'role:system.admin'; -export const UserItemType = { - ROLE: 'ROLE', - USER: 'USER', - GROUP: 'GROUP', - ID_PROVIDER: 'ID_PROVIDER', - all: () => { - return [ - UserItemType.ROLE, - UserItemType.USER, - UserItemType.GROUP, - UserItemType.ID_PROVIDER - ]; - } -}; +export const enum UserItemType { + ROLE = 'ROLE', + USER = 'USER', + GROUP = 'GROUP', + ID_PROVIDER = 'ID_PROVIDER' +} + +export const ALL_USER_ITEM_TYPES = [ + UserItemType.ROLE, + UserItemType.USER, + UserItemType.GROUP, + UserItemType.ID_PROVIDER +]; export const PrincipalType = { ROLE: 'ROLE', @@ -33,7 +39,7 @@ export const PrincipalType = { export function singleOrArray(value) { return value && value.length === 1 ? value[0] : value; -}; +} export function isString(str) { return (typeof str === 'string') || (str instanceof String); @@ -41,10 +47,10 @@ export function isString(str) { export function refresh(repo) { newConnection(repo).refresh('SEARCH'); -}; +} export function required(params, name, skipTrimming?: boolean) { - var value = params[name]; + let value = params[name]; if (value === undefined || value === null) { throw new Error("Parameter '" + name + "' is required"); } @@ -52,24 +58,24 @@ export function required(params, name, skipTrimming?: boolean) { return value.trim(); } return value; -}; +} -export default function(params, name, defaultValue) { - var value = params[name]; +export default function (params, name, defaultValue) { + let value = params[name]; if (value === undefined || value === null) { return defaultValue; } return value; -}; +} export function getByIds(ids, repo?: string) { return newConnection(repo).get(ids); -}; +} function _delete(ids, repo) { return newConnection(repo).delete(ids); } -export { _delete as delete }; +export {_delete as delete}; export function keysToPaths(keys) { return keys.map(function (key) { @@ -97,23 +103,23 @@ export function keysToPaths(keys) { } return ''; }); -}; +} export function isUser(key) { return typeFromKey(key).toUpperCase() === PrincipalType.USER; -}; +} export function isGroup(key) { return typeFromKey(key).toUpperCase() === PrincipalType.GROUP; -}; +} export function isRole(key) { return typeFromKey(key).toUpperCase() === PrincipalType.ROLE; -}; +} export function isIdProvider(key) { return splitKey(key).length === 1; -}; +} export function isSystemAdmin(key) { return key === SYSTEM_ADMIN; @@ -127,7 +133,7 @@ export function createQueryByField(field, values) { return String(field) + ' IN (' + serializeValues(values) + ')'; } return String(field) + '=' + serializeValue(values); -}; +} function serializeValues(values) { return values ? values.map(serializeValue).join(',') : ''; @@ -137,8 +143,8 @@ function serializeValue(value) { return typeof value === 'string' ? '"' + value + '"' : value; } -export function extensionFromMimeType (mimeType) { - var ext = ''; +export function extensionFromMimeType(mimeType) { + let ext = ''; if (mimeType.indexOf('image/png') > -1) { ext = '.png'; } else if ( @@ -152,15 +158,15 @@ export function extensionFromMimeType (mimeType) { ext = '.svg'; } return ext; -}; +} function splitKey(key) { - var parts = key && key.split(':'); - var isRoleType = + let parts = key && key.split(':'); + let isRoleType = parts && parts.length === 2 && parts[0].toUpperCase() === PrincipalType.ROLE; - var isIdProviderType = parts && parts.length === 1; + let isIdProviderType = parts && parts.length === 1; if (!isRoleType && !isIdProviderType && !(parts && parts.length === 3)) { throw new Error('Invalid principal key [' + key + ']'); } @@ -168,82 +174,86 @@ function splitKey(key) { } export function idProviderFromKey(key) { - var parts = splitKey(key); + let parts = splitKey(key); if (parts[0].toUpperCase() === PrincipalType.ROLE) { throw new Error( "Principal keys of type role can't have idprovider [" + key + ']' ); } return parts.length === 1 ? parts[0] : parts[1]; -}; +} export function nameFromKey(key) { - var parts = splitKey(key); + let parts = splitKey(key); if (parts.length === 1) { throw new Error("Key don't have name [" + key + ']'); } return parts[0].toUpperCase() !== PrincipalType.ROLE ? parts[2] : parts[1]; -}; +} export function typeFromKey(key) { - var parts = splitKey(key); + let parts = splitKey(key); if (parts.length === 1) { throw new Error("Key don't have type [" + key + ']'); } return parts[0]; -}; +} export function prettifyName(text) { return namePrettyfier.create(text); -}; +} export function querySingle(query, repo) { - var results = queryAll({ + let results = queryAll({ start: 0, count: 1, query: query }, repo); return results.total === 1 ? results.hits[0] : null; -}; +} export function create(params, repo) { return newConnection(repo).create(params); -}; +} export function update(params, repo) { return newConnection(repo).modify(params); -}; +} -export function queryAll(params, repo?: string) { - var start = params.start || 0; - var count = params.count == null ? MAX_COUNT : params.count; - - var repoConn = newConnection(repo); - var queryResult = repoConn.query({ - start: start, - count: count, - query: params.query, - sort: params.sort, - aggregations: params.aggregations +export function queryAll({ + aggregations, + count, + query, + sort, + start = 0 +}: { + aggregations?: AggregationInput + count?: number + query?: QueryNodeParams['query'] + sort?: QueryNodeParams['sort'] + start?: number +}, repo?: string) { + const finalCount = count == null ? MAX_COUNT : count; + const repoConn = newConnection(repo); + const queryResult = repoConn.query({ + start, + count: finalCount, + query, + sort, + aggregations }); - - var hits = []; - if (queryResult.count > 0) { - var ids = queryResult.hits.map(function (hit) { - return hit.id; - }); - hits = repoConn.get(ids); - } - + const hits = queryResult.count > 0 + ? [].concat(repoConn.get(queryResult.hits.map((hit) => hit.id))) + : []; return { total: queryResult.total, - start: start, - count: count, - hits: [].concat(hits), + start, + count, + hits, aggregations: queryResult.aggregations }; -}; +} export function newConnection(repo: string, branch?: string) { return connect({ diff --git a/src/main/resources/lib/groups.ts b/src/main/resources/lib/groups.ts index d54c9e1b7..5acc325ad 100644 --- a/src/main/resources/lib/groups.ts +++ b/src/main/resources/lib/groups.ts @@ -10,22 +10,25 @@ import { updateMembers, updateMemberships } from './principals'; -var authLib = require('/lib/xp/auth'); +import { + createGroup, + modifyGroup +} from '/lib/xp/auth'; export function create(params) { - var key = required(params, 'key'); - var idProviderKey = idProviderFromKey(key); - var name = nameFromKey(key); - var displayName = required(params, 'displayName'); + let key = required(params, 'key'); + let idProviderKey = idProviderFromKey(key); + let name = nameFromKey(key); + let displayName = required(params, 'displayName'); - var createdGroup = authLib.createGroup({ + let createdGroup = createGroup({ idProvider: idProviderKey, name: name, displayName: displayName, description: params.description }); - var ms = params.members; + let ms = params.members; if (ms && ms.length > 0) { addMembers(key, ms); } @@ -37,16 +40,16 @@ export function create(params) { populateMemberships(createdGroup); return createdGroup; -}; +} export function update(params) { - var key = required(params, 'key'); - var displayName = required(params, 'displayName'); + let key = required(params, 'key'); + let displayName = required(params, 'displayName'); - var updatedGroup = authLib.modifyGroup({ + let updatedGroup = modifyGroup({ key: key, - editor: function(group) { - var newGroup = group; + editor: function (group) { + let newGroup = group; newGroup.displayName = displayName; newGroup.description = params.description; return newGroup; @@ -66,12 +69,12 @@ export function update(params) { populateMemberships(updatedGroup); return updatedGroup; -}; +} function populateMembers(group) { // eslint-disable-next-line no-param-reassign group.member = getMembers(group.key || group._id) - .map(function(member) { + .map(function (member) { return member.key; }); } diff --git a/src/main/resources/lib/idproviders.ts b/src/main/resources/lib/idproviders.ts index 5d242175e..39e178290 100644 --- a/src/main/resources/lib/idproviders.ts +++ b/src/main/resources/lib/idproviders.ts @@ -26,7 +26,7 @@ export function getDefault() { } export function create(params) { - var name = required(params, 'key'); + let name = required(params, 'key'); return createIdProvider({ name: prettifyName(name), @@ -38,12 +38,12 @@ export function create(params) { } export function update(params) { - var key = required(params, 'key'); + let key = required(params, 'key'); return modifyIdProvider({ key: key, editor: function (idProvider) { - var newIdProvider = idProvider; + let newIdProvider = idProvider; newIdProvider.displayName = params.displayName; newIdProvider.description = params.description; newIdProvider.idProviderConfig = params.idProviderConfig; @@ -56,7 +56,7 @@ export function update(params) { function _delete(keys) { return deleteIdProviders({keys: keys}); } -export { _delete as delete }; +export {_delete as delete}; export function getIdProviderMode(applicationKey) { return _getIdProviderMode({key:applicationKey}); diff --git a/src/main/resources/lib/permissionReports.ts b/src/main/resources/lib/permissionReports.ts index 685030e47..a344ce7ff 100644 --- a/src/main/resources/lib/permissionReports.ts +++ b/src/main/resources/lib/permissionReports.ts @@ -9,15 +9,15 @@ import { const PERMISSIONS = ['READ', 'CREATE', 'MODIFY', 'DELETE', 'PUBLISH', 'READ_PERMISSIONS', 'WRITE_PERMISSIONS']; export function generateReport(principalKey, repositoryId, branch) { - var principalKeys = getPrincipalKeys(principalKey); - var isSystemAdmin = hasSystemAdminRole(principalKeys); - var filters = isSystemAdmin ? null : makeRepoNodesQueryFilters(principalKeys); - var nodes = queryRepositoryNodes(repositoryId, branch, filters); - - var reportLine = 'Path, Read, Create, Modify, Delete, Publish, ReadPerm., WritePerm.'; - var tempFile = Java.type('java.io.File').createTempFile("perm-report-", ".csv"); - var Files = Java.type('com.google.common.io.Files'); - var charset = Java.type('java.nio.charset.Charset').forName("UTF-8"); + let principalKeys = getPrincipalKeys(principalKey); + let isSystemAdmin = hasSystemAdminRole(principalKeys); + let filters = isSystemAdmin ? null : makeRepoNodesQueryFilters(principalKeys); + let nodes = queryRepositoryNodes(repositoryId, branch, filters); + + let reportLine = 'Path, Read, Create, Modify, Delete, Publish, ReadPerm., WritePerm.'; + let tempFile = Java.type('java.io.File').createTempFile('perm-report-', '.csv'); + let Files = Java.type('com.google.common.io.Files'); + let charset = Java.type('java.nio.charset.Charset').forName('UTF-8'); Files.append(reportLine, tempFile, charset); nodes.forEach(function (node) { @@ -25,17 +25,17 @@ export function generateReport(principalKey, repositoryId, branch) { Files.append(reportLine, tempFile, charset); }); - var bytes = Files.toByteArray(tempFile); + let bytes = Files.toByteArray(tempFile); tempFile.delete(); return bytes; } function getPrincipalKeys(principalKey) { - var principalKeys = [principalKey]; + let principalKeys = [principalKey]; if (!isRole(principalKey)) { - var membershipKeys = getMemberships(principalKey, true).map(function (m) { + let membershipKeys = getMemberships(principalKey, true).map(function (m) { return m.key; }); principalKeys = principalKeys.concat(membershipKeys); @@ -51,44 +51,43 @@ function getPrincipalKeys(principalKey) { return principalKeys; } -var queryRepositoryNodes = function (repositoryId, branch, filters) { - var repoConn = newConnection(repositoryId, branch); +function queryRepositoryNodes(repositoryId, branch, filters) { + let repoConn = newConnection(repositoryId, branch); return repoConn.query({ count: -1, // TODO Batch - query: `_path LIKE '/content*'`, + query: '_path LIKE \'/content*\'', filters: filters }).hits.map(function (nodeHit) { - var node = repoConn.get(nodeHit.id); + let node = repoConn.get(nodeHit.id); const path = node._path.substr(8); // remove starting '/content' return { _path: path.length === 0 ? '/' : path, _permissions: node._permissions }; }); -}; +} function makeRepoNodesQueryFilters(principalKeys) { return { hasValue: { - field: "_permissions.read", + field: '_permissions.read', values: principalKeys } - } + }; } function hasSystemAdminRole(principalKeys) { return principalKeys.some(function (principalKey) { return isSystemAdmin(principalKey); - }) + }); } -var generateReportLine = function (node, memKeys) { - - var allow = {}; - var deny = {}; - for (var i = 0; i < node._permissions.length; i++) { - var perm = node._permissions[i]; +function generateReportLine(node, memKeys) { + let allow = {}; + let deny = {}; + for (let i = 0; i < node._permissions.length; i++) { // eslint-disable-line @typescript-eslint/prefer-for-of + const perm = node._permissions[i]; if (memKeys.indexOf(perm.principal) >= 0) { PERMISSIONS.forEach(function (pt) { if (perm.allow.indexOf(pt) !== -1) { @@ -100,19 +99,19 @@ var generateReportLine = function (node, memKeys) { }); } } - var line = [node._path]; + let line = [node._path]; PERMISSIONS.forEach(function (pt) { line.push(allow[pt] && !deny[pt] ? 'X' : ''); }); return line.join(','); -}; +} -var generateSystemAdminReportLine = function (node) { - var line = [node._path]; +function generateSystemAdminReportLine(node) { + let line = [node._path]; PERMISSIONS.forEach(function () { line.push('X'); }); return line.join(','); -}; +} diff --git a/src/main/resources/lib/principals.ts b/src/main/resources/lib/principals.ts index 103048467..d52e1c1ef 100644 --- a/src/main/resources/lib/principals.ts +++ b/src/main/resources/lib/principals.ts @@ -11,10 +11,10 @@ import { export function getByKeys(keys) { - var noKeys = keys == null || (keys instanceof Array && keys.length === 0); + let noKeys = keys == null || (keys instanceof Array && keys.length === 0); // users and groups have their keys as _id, but roles have them stored as key - var principals = noKeys ? [] : queryAll({ + let principals = noKeys ? [] : queryAll({ query: createQueryByField('_id', keys) + ' OR ' + @@ -29,7 +29,7 @@ export function getMemberships(key, transitive?: boolean) { } export function addMemberships(key, memberships) { - var addMms = [].concat(memberships).map(function(current) { + let addMms = [].concat(memberships).map(function (current) { addMembers(current, key); return current; }); @@ -37,7 +37,7 @@ export function addMemberships(key, memberships) { } export function removeMemberships(key, memberships: string|string[]) { - var removeMms = [].concat(memberships).map(function(current) { + let removeMms = [].concat(memberships).map(function (current) { removeMembers(current, key); return current; }); @@ -108,9 +108,9 @@ export function list(idProviderKey, types, query, start, count, sort) { } function _delete(keys) { - return keys.map(function(key) { + return keys.map(function (key) { try { - var deleted = deletePrincipal(key); + let deleted = deletePrincipal(key); return { key: key, deleted: deleted, @@ -125,19 +125,19 @@ function _delete(keys) { } }); } -export { _delete as delete }; +export {_delete as delete}; export const Type = PrincipalType; function createPrincipalQuery(idProviderKey, types, query) { - var q = query ? textQuery(query) : ''; + let q = query ? textQuery(query) : ''; if (!types) { q += (q ? ' AND ' : '') + idProviderQuery(idProviderKey); } else { - var tq = ''; - types.forEach(function(type, index) { - var add; + let tq = ''; + types.forEach(function (type, index) { + let add; switch (type) { case PrincipalType.ROLE: add = rolesQuery(); @@ -156,7 +156,7 @@ function createPrincipalQuery(idProviderKey, types, query) { } function textQuery(query) { - var q = '"_allText,displayName","' + query + '","AND"'; + let q = '"_allText,displayName","' + query + '","AND"'; return '(fulltext(' + q + ') OR ngram(' + q + '))'; } diff --git a/src/main/resources/lib/repositories.ts b/src/main/resources/lib/repositories.ts index 4db60a2bf..78a58466a 100644 --- a/src/main/resources/lib/repositories.ts +++ b/src/main/resources/lib/repositories.ts @@ -5,17 +5,17 @@ import { export function getById(id) { return getByIds(id); -}; +} export function list(search, start, count, sort) { - var queryResult = queryAll({ + let queryResult = queryAll({ query: createRepoQuery(search), start: start, count: count, sort: sort }); return queryResult.hits; -}; +} function createRepoQuery(search) { return '_parentPath="/repository"' + (search ? ' AND ngram("_name","' + search + '")' : ''); diff --git a/src/main/resources/lib/roles.ts b/src/main/resources/lib/roles.ts index 983fff181..b359441a0 100644 --- a/src/main/resources/lib/roles.ts +++ b/src/main/resources/lib/roles.ts @@ -14,17 +14,17 @@ import { export function create(params) { - var key = required(params, 'key'); - var name = nameFromKey(key); - var displayName = required(params, 'displayName'); + let key = required(params, 'key'); + let name = nameFromKey(key); + let displayName = required(params, 'displayName'); - var createdRole = createRole({ + let createdRole = createRole({ name: name, displayName: displayName, description: params.description }); - var members = params.members; + let members = params.members; if (members && members.length > 0) { addMembers(key, members); } @@ -32,20 +32,20 @@ export function create(params) { populateMembers(createdRole); return createdRole; -}; +} export function update(params) { - var key = required(params, 'key'); - var displayName = required(params, 'displayName'); + let key = required(params, 'key'); + let displayName = required(params, 'displayName'); if (isSuperUserToBeRemovedFromAdmins(key, params.removeMembers)) { throw new Error('Can\'t remove Super User from Administrators'); } - var modifiedRole = modifyRole({ + let modifiedRole = modifyRole({ key: key, - editor: function(role) { - var newRole = role; + editor: function (role) { + let newRole = role; newRole.displayName = displayName; newRole.description = params.description; return newRole; @@ -57,7 +57,7 @@ export function update(params) { populateMembers(modifiedRole); return modifiedRole; -}; +} function isSuperUserToBeRemovedFromAdmins(key, removeMembers) { return key === 'role:system.admin' && !!removeMembers && removeMembers.some((member) => member === 'user:system:su'); @@ -66,7 +66,7 @@ function isSuperUserToBeRemovedFromAdmins(key, removeMembers) { function populateMembers(role) { // eslint-disable-next-line no-param-reassign role.member = getMembers(role.key || role._id) - .map(function(member) { + .map(function (member) { return member.key; }); } diff --git a/src/main/resources/lib/urlHelper.ts b/src/main/resources/lib/urlHelper.ts index ae43411d8..86fe5d97d 100644 --- a/src/main/resources/lib/urlHelper.ts +++ b/src/main/resources/lib/urlHelper.ts @@ -1,21 +1,21 @@ import type {Request, Response} from '/types'; // @ts-expect-error TS2307: Cannot find module '/lib/enonic/static' or its corresponding type declarations. -import { buildGetter } from '/lib/enonic/static'; -import { getToolUrl } from '/lib/xp/admin'; +import {buildGetter} from '/lib/enonic/static'; +import {getToolUrl} from '/lib/xp/admin'; import { FILEPATH_MANIFEST_CJS, FILEPATH_MANIFEST_NODE_MODULES, GETTER_ROOT } from '../constants'; import ioResource from './ioResource'; -import { IS_DEV_MODE } from './runMode'; +import {IS_DEV_MODE} from './runMode'; interface UrlPostfixParams { manifestPath?: string path: string, -}; +} type UrlParams = UrlPostfixParams & {urlPrefix: string}; @@ -24,7 +24,7 @@ const manifests = { [FILEPATH_MANIFEST_CJS]: ioResource(FILEPATH_MANIFEST_CJS), // [FILEPATH_MANIFEST_ESM]: ioResource(FILEPATH_MANIFEST_ESM), [FILEPATH_MANIFEST_NODE_MODULES]: ioResource(FILEPATH_MANIFEST_NODE_MODULES), -} +}; const getImmutableUrl = ({ manifestPath = FILEPATH_MANIFEST_CJS, @@ -36,7 +36,7 @@ const getImmutableUrl = ({ } return `${urlPrefix}/${GETTER_ROOT}/${manifests[manifestPath][path]}`; -} +}; export const getAdminUrl = ({ manifestPath = FILEPATH_MANIFEST_CJS, @@ -49,7 +49,7 @@ export const getAdminUrl = ({ path, urlPrefix }); -} +}; export const immutableGetter = buildGetter({ etag: false, // default is true in production and false in development diff --git a/src/main/resources/lib/useritems.ts b/src/main/resources/lib/useritems.ts index 043a14b55..acc5cbb13 100644 --- a/src/main/resources/lib/useritems.ts +++ b/src/main/resources/lib/useritems.ts @@ -1,14 +1,24 @@ +import type {QueryNodeParams} from '/lib/xp/node'; + + import { + ALL_USER_ITEM_TYPES, queryAll, - UserItemType + UserItemType, } from './common'; -export function list(types, query, itemIds, start, count) { +export function list( + types: UserItemType[], + query: string, + itemIds?: string[], + start?: QueryNodeParams['start'], + count?: QueryNodeParams['count'] +) { const result = queryAll({ query: createUserItemsQuery(query, types, itemIds), - start: start, - count: count, + start, + count, aggregations: { principalType: { terms: { @@ -23,7 +33,7 @@ export function list(types, query, itemIds, start, count) { return result; } -export const Type = UserItemType; +// export const Type = UserItemType; function processIdProviderAggregation(result) { @@ -31,28 +41,32 @@ function processIdProviderAggregation(result) { return; } - var aggregationBuckets = result.aggregations.principalType.buckets; + let aggregationBuckets = result.aggregations.principalType.buckets; - var principalsCount = 0; + let principalsCount = 0; aggregationBuckets.forEach(function (bucket) { principalsCount += bucket.docCount; }); - var idProvidersCount = result.total - principalsCount; + let idProvidersCount = result.total - principalsCount; if (idProvidersCount > 0) { aggregationBuckets.push({key: 'id_provider', docCount: '' + idProvidersCount}); } } -function createUserItemsQuery(query, types, itemIds) { - var q = createTypesQuery(types); +function createUserItemsQuery( + query: string, + types?: UserItemType[], + itemIds?: string[] +) { + let q = createTypesQuery(types); if (query) { q = createTextQuery(query) + ' AND ' + q; } if (itemIds && itemIds.length > 0) { - var itemsIdsQuery = ''; + let itemsIdsQuery = ''; itemIds.forEach(function (id, index) { itemsIdsQuery += (index > 0 ? ' OR ' : '') + '_id="' + id + '" OR _name="' + id + '"'; @@ -64,27 +78,27 @@ function createUserItemsQuery(query, types, itemIds) { return q; } -function createTextQuery(query) { - var q = '"_allText,displayName","' + query + '","AND"'; +function createTextQuery(query: string) { + const q = '"_allText,displayName","' + query + '","AND"'; return '(fulltext(' + q + ') OR ngram(' + q + '))'; } -function createTypesQuery(types) { - var newTypes = types || UserItemType.all(); - var query = newTypes - .map(function(type) { +function createTypesQuery(types?: UserItemType[]) { + const newTypes = types || ALL_USER_ITEM_TYPES; + let query = newTypes + .map(function (type) { switch (type) { case UserItemType.ROLE: case UserItemType.GROUP: case UserItemType.USER: return 'principalType = "' + type + '"'; - case UserItemType.ID_PROVIDER: + case UserItemType.ID_PROVIDER: return '(_parentPath = "/identity" AND _path != "/identity/roles")'; default: return null; } }) - .filter(function(typeQuery) { + .filter(function (typeQuery) { return typeQuery != null; }); return '(' + query.join(' OR ') + ')'; diff --git a/src/main/resources/lib/users.ts b/src/main/resources/lib/users.ts index 38cba3820..cb1cd1c30 100644 --- a/src/main/resources/lib/users.ts +++ b/src/main/resources/lib/users.ts @@ -7,45 +7,50 @@ import { getMemberships, updateMemberships } from './principals'; -var authLib = require('/lib/xp/auth'); +import { + changePassword, + createUser, + modifyProfile, + modifyUser +} from '/lib/xp/auth'; // @ts-expect-error Cannot find module '/lib/util' or its corresponding type declarations.ts(2307) -import { forceArray } from '/lib/util'; +import {forceArray} from '/lib/util'; export function create(params) { - var key = required(params, 'key'); - var idProviderKey = idProviderFromKey(key); - var name = required(params, 'login'); - var displayName = required(params, 'displayName'); - var email = required(params, 'email'); + let key = required(params, 'key'); + let idProviderKey = idProviderFromKey(key); + let name = required(params, 'login'); + let displayName = required(params, 'displayName'); + let email = required(params, 'email'); - var createdUser = authLib.createUser({ + let createdUser = createUser({ idProvider: idProviderKey, name: name, displayName: displayName, email: email, }); - var mms = params.memberships; + let mms = params.memberships; if (mms && mms.length > 0) { addMemberships(key, mms); } - var password = required(params, 'password'); + let password = required(params, 'password'); updatePwd(key, password); populateMemberships(createdUser); return createdUser; -}; +} export function update(params) { - var key = required(params, 'key'); - var displayName = required(params, 'displayName'); + let key = required(params, 'key'); + let displayName = required(params, 'displayName'); - var updatedUser = authLib.modifyUser({ + let updatedUser = modifyUser({ key: key, editor: function (user) { - var newUser = user; + let newUser = user; newUser.displayName = displayName; newUser.email = params.email; newUser.login = params.login; @@ -62,12 +67,12 @@ export function update(params) { populateMemberships(updatedUser); return updatedUser; -}; +} export function updatePwd(key, pwd) { - var password = pwd.replace(/\s/g, ''); + let password = pwd.replace(/\s/g, ''); try { - authLib.changePassword({ + changePassword({ userKey: key, password: password }); @@ -76,13 +81,13 @@ export function updatePwd(key, pwd) { log.error('Could not update password for [' + key + ']'); return false; } -}; +} export function removePublicKey(params) { const userKey = required(params, 'userKey'); const kid = required(params, 'kid'); - const updatedProfile = authLib.modifyProfile({ + const updatedProfile = modifyProfile({ key: userKey, editor: function (profile) { const publicKeys = forceArray(profile.publicKeys); @@ -92,19 +97,19 @@ export function removePublicKey(params) { }); return forceArray(updatedProfile.publicKeys).filter(key => key.kid === kid).length === 0; -}; +} export function addPublicKey(params) { const userKey = required(params, 'userKey'); const publicKey = required(params, 'publicKey'); const label = params.label; - const kidGenerator = __.newBean('com.enonic.xp.app.users.handler.KidGeneratorHandler') as { + const kidGenerator = __.newBean<{ generateKid: (publicKey: string) => string - }; + }>('com.enonic.xp.app.users.handler.KidGeneratorHandler'); const kid = kidGenerator.generateKid(publicKey); - const updatedProfile = authLib.modifyProfile({ + const updatedProfile = modifyProfile({ key: userKey, editor: function (profile) { const publicKeys = forceArray(profile.publicKeys); @@ -128,7 +133,7 @@ export function addPublicKey(params) { }); return forceArray(updatedProfile.publicKeys).filter(key => key.kid === kid)[0]; -}; +} function populateMemberships(user) { // eslint-disable-next-line no-param-reassign diff --git a/src/main/resources/services/config/config.ts b/src/main/resources/services/config/config.ts index 4a3bdc9e8..50bae1729 100644 --- a/src/main/resources/services/config/config.ts +++ b/src/main/resources/services/config/config.ts @@ -15,15 +15,15 @@ export function get() { body: { adminUrl: getBaseUri(), appId: app.name, - assetsUri: assetUrl({ path: '' }), + assetsUri: assetUrl({path: ''}), toolUri: getToolUrl( app.name, 'main' ), services: { - graphQlUrl: serviceUrl({ service: 'graphql' }), - reportServiceUrl: serviceUrl({ service: 'permissionReport' }), - i18nUrl: serviceUrl({ service: 'i18n' }), + graphQlUrl: serviceUrl({service: 'graphql'}), + reportServiceUrl: serviceUrl({service: 'permissionReport'}), + i18nUrl: serviceUrl({service: 'i18n'}), } } }; diff --git a/src/main/resources/services/graphql/constants.ts b/src/main/resources/services/graphql/constants.ts index 22bcaeb76..80070b122 100644 --- a/src/main/resources/services/graphql/constants.ts +++ b/src/main/resources/services/graphql/constants.ts @@ -1,3 +1,65 @@ -export enum ObjectTypeNames { - PRINCIPAL = 'Principal' +// Single common enum to avoid name collisions +const enum UniqNames { + Aggregation = 'Aggregation', + Bucket = 'Bucket', + IdProvider = 'IdProvider', + IdProviderAccess = 'IdProviderAccess', + IdProviderAccessControlEntry = 'IdProviderAccessControlEntry', + IdProviderAccessControlInput = 'IdProviderAccessControlInput', + IdProviderConfig = 'IdProviderConfig', + IdProviderConfigInput = 'IdProviderConfigInput', + IdProviderDelete = 'IdProviderDelete', + IdProviderMode = 'IdProviderMode', + Mutation = 'Mutation', + PageInfo = 'PageInfo', + Permission = 'Permission', + Principal = 'Principal', + PrincipalAccessControlEntry = 'PrincipalAccessControlEntry', + PrincipalDelete = 'PrincipalDelete', + PrincipalInput = 'PrincipalInput', + PrincipalType = 'PrincipalType', + PublicKey = 'PublicKey', + Query = 'Query', + Repository = 'Repository', + SortMode = 'SortMode', + Types = 'Types', + UserItem = 'UserItem', + UserItemType = 'UserItemType' +} + +export const enum EnumTypeNames { + IdProviderAccess = UniqNames.IdProviderAccess, + IdProviderMode = UniqNames.IdProviderMode, + Permission = UniqNames.Permission, + PrincipalType = UniqNames.PrincipalType, + SortMode = UniqNames.SortMode, + UserItemType = UniqNames.UserItemType +} + +export const enum InterfaceTypeNames { + UserItem = UniqNames.UserItem +} + +export const enum ObjectTypeNames { + Aggregation = UniqNames.Aggregation, + Bucket = UniqNames.Bucket, + IdProvider = UniqNames.IdProvider, + IdProviderAccessControlEntry = UniqNames.IdProviderAccessControlEntry, + IdProviderConfig = UniqNames.IdProviderConfig, + IdProviderDelete = UniqNames.IdProviderDelete, + Mutation = UniqNames.Mutation, + PageInfo = UniqNames.PageInfo, + Principal = UniqNames.Principal, + PrincipalAccessControlEntry = UniqNames.PrincipalAccessControlEntry, + PrincipalDelete = UniqNames.PrincipalDelete, + PublicKey = UniqNames.PublicKey, + Repository = UniqNames.Repository, + Query = UniqNames.Query, + Types = UniqNames.Types +} + +export const enum InputTypeNames { + IdProviderAccessControlInput = UniqNames.IdProviderAccessControlInput, + IdProviderConfigInput = UniqNames.IdProviderConfigInput, + PrincipalInput = UniqNames.PrincipalInput } diff --git a/src/main/resources/services/graphql/graphql.ts b/src/main/resources/services/graphql/graphql.ts index 8c7787c3e..2d49974a2 100644 --- a/src/main/resources/services/graphql/graphql.ts +++ b/src/main/resources/services/graphql/graphql.ts @@ -1,24 +1,24 @@ //TODO Remove GraphQLSchemaSynchronizer for Enonic XP 6.13 // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) -import { execute } from '/lib/graphql'; -import { schemaGenerator } from './schemaUtil'; +import {execute} from '/lib/graphql'; +import {schemaGenerator} from './schemaUtil'; import * as graphQlSchema from './schema'; let schema; -Java.type('com.enonic.xp.app.users.GraphQLSchemaSynchronizer').sync(__.toScriptValue(function() { +Java.type('com.enonic.xp.app.users.GraphQLSchemaSynchronizer').sync(__.toScriptValue(function () { schema = schemaGenerator.createSchema(graphQlSchema); })); export function post(req) { - var body = JSON.parse(req.body); - var operation = body.query || body.mutation; + let body = JSON.parse(req.body); + let operation = body.query || body.mutation; if (!operation) { throw new Error('`query` or `mutation` param is missing.'); } - var result = execute(schema, operation, body.variables); + let result = execute(schema, operation, body.variables); return { contentType: 'application/json', body: result }; -}; +} diff --git a/src/main/resources/services/graphql/schema/index.ts b/src/main/resources/services/graphql/schema/index.ts index cab748cd2..6197a1b1c 100644 --- a/src/main/resources/services/graphql/schema/index.ts +++ b/src/main/resources/services/graphql/schema/index.ts @@ -1,2 +1,2 @@ -export { default as mutation } from './mutation'; -export { default as query } from './query'; +export {default as mutation} from './mutation'; +export {default as query} from './query'; diff --git a/src/main/resources/services/graphql/schema/mutation.ts b/src/main/resources/services/graphql/schema/mutation.ts index dba7a345f..acc3a0c0d 100644 --- a/src/main/resources/services/graphql/schema/mutation.ts +++ b/src/main/resources/services/graphql/schema/mutation.ts @@ -11,7 +11,7 @@ import { delete as deleteIdProvider, update as updateIdProvider } from '/lib/idproviders'; -import { delete as deletePrincipals } from '/lib/principals'; +import {delete as deletePrincipals} from '/lib/principals'; import { addPublicKey, create as createUser, @@ -27,15 +27,15 @@ import { create as createRole, update as updateRole } from '/lib/roles'; - -import { schemaGenerator } from '../schemaUtil'; +import {ObjectTypeNames} from '../constants'; +import {schemaGenerator} from '../schemaUtil'; import { IdProviderDeleteType, IdProviderType, PrincipalDeleteType, PrincipalType, PublicKeyType -} from '../types/objects' +} from '../types/objects'; import { IdProviderAccessControlInput, IdProviderConfigInput @@ -43,7 +43,7 @@ import { const mutation = schemaGenerator.createObjectType({ - name: 'Mutation', + name: ObjectTypeNames.Mutation, fields: { // Principal deletePrincipals: { @@ -51,7 +51,7 @@ const mutation = schemaGenerator.createObjectType({ args: { keys: list(GraphQLString) }, - resolve: function(env) { + resolve: function (env) { return deletePrincipals(env.args.keys); } }, @@ -67,7 +67,7 @@ const mutation = schemaGenerator.createObjectType({ password: nonNull(GraphQLString), memberships: list(GraphQLString) }, - resolve: function(env) { + resolve: function (env) { return createUser({ key: env.args.key, displayName: env.args.displayName, @@ -88,7 +88,7 @@ const mutation = schemaGenerator.createObjectType({ addMemberships: list(GraphQLString), removeMemberships: list(GraphQLString) }, - resolve: function(env) { + resolve: function (env) { return updateUser({ key: env.args.key, displayName: env.args.displayName, @@ -105,7 +105,7 @@ const mutation = schemaGenerator.createObjectType({ key: nonNull(GraphQLString), password: nonNull(GraphQLString) }, - resolve: function(env) { + resolve: function (env) { return updatePwd(env.args.key, env.args.password); } }, @@ -148,7 +148,7 @@ const mutation = schemaGenerator.createObjectType({ members: list(GraphQLString), memberships: list(GraphQLString) }, - resolve: function(env) { + resolve: function (env) { return createGroup({ key: env.args.key, displayName: env.args.displayName, @@ -169,7 +169,7 @@ const mutation = schemaGenerator.createObjectType({ addMemberships: list(GraphQLString), removeMemberships: list(GraphQLString) }, - resolve: function(env) { + resolve: function (env) { return updateGroup({ key: env.args.key, displayName: env.args.displayName, @@ -191,7 +191,7 @@ const mutation = schemaGenerator.createObjectType({ description: GraphQLString, members: list(GraphQLString) }, - resolve: function(env) { + resolve: function (env) { return createRole({ key: env.args.key, displayName: env.args.displayName, @@ -209,7 +209,7 @@ const mutation = schemaGenerator.createObjectType({ addMembers: list(GraphQLString), removeMembers: list(GraphQLString) }, - resolve: function(env) { + resolve: function (env) { return updateRole({ key: env.args.key, displayName: env.args.displayName, @@ -232,8 +232,8 @@ const mutation = schemaGenerator.createObjectType({ IdProviderAccessControlInput ) }, - resolve: function(env) { - var idProviderConfig = env.args.idProviderConfig; + resolve: function (env) { + let idProviderConfig = env.args.idProviderConfig; if (idProviderConfig) { // parse config as there's no graphql type for it idProviderConfig.config = JSON.parse(idProviderConfig.config); @@ -259,8 +259,8 @@ const mutation = schemaGenerator.createObjectType({ IdProviderAccessControlInput ) }, - resolve: function(env) { - var idProviderConfig = env.args.idProviderConfig; + resolve: function (env) { + let idProviderConfig = env.args.idProviderConfig; if (idProviderConfig) { // parse config as there's no graphql type for it idProviderConfig.config = JSON.parse(idProviderConfig.config); @@ -280,7 +280,7 @@ const mutation = schemaGenerator.createObjectType({ args: { keys: list(GraphQLString) }, - resolve: function(env) { + resolve: function (env) { return deleteIdProvider(env.args.keys); } } diff --git a/src/main/resources/services/graphql/schema/query.ts b/src/main/resources/services/graphql/schema/query.ts index c47de3749..a09452d77 100644 --- a/src/main/resources/services/graphql/schema/query.ts +++ b/src/main/resources/services/graphql/schema/query.ts @@ -1,12 +1,16 @@ +import type {QueryNodeParams} from '/lib/xp/node'; + + import { GraphQLInt, + // Json as GraphQLJson, GraphQLString, list, nonNull // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) } from '/lib/graphql'; -import { isAdmin } from '/lib/auth'; - +import {isAdmin} from '/lib/auth'; +import {UserItemType} from '/lib/common'; import { getByKey, getDefault, @@ -22,8 +26,9 @@ import { getById as getRepositoryById, list as listRepositories } from '/lib/repositories'; -import { schemaGenerator } from '../schemaUtil'; -import * as TypesType from '../types'; +import {ObjectTypeNames} from '../constants'; +import {schemaGenerator} from '../schemaUtil'; +import {TypesType} from '../types/objects/types'; import { PrincipalTypeEnum, SortModeEnum, @@ -35,23 +40,31 @@ import { PrincipalType, RepositoryType, UserItemConnectionType -} from '../types/objects' +} from '../types/objects'; -function getUserItems(args, types) { - var query = args.query; - var itemIds = args.itemIds; - var count = args.count || 0; - var start = args.start || 0; +function getUserItems({ + count = 0, + start = 0, + query, + itemIds +}: { + // Required + itemIds: string[] + // Optional + count?: QueryNodeParams['count'] + query?: string + start?: QueryNodeParams['start'] +}, types?: UserItemType[]) { return listUserItems(types, query, itemIds, start, count); } const query = schemaGenerator.createObjectType({ - name: 'Query', + name: ObjectTypeNames.Query, fields: { idProviders: { type: list(IdProviderType), - resolve: function () { + resolve() { return listIdProviders(); } }, @@ -60,14 +73,14 @@ const query = schemaGenerator.createObjectType({ args: { key: nonNull(GraphQLString) }, - resolve: function (env) { - var key = env.args.key; + resolve(env) { + let key = env.args.key; return getByKey(key); } }, defaultIdProvider: { type: IdProviderType, - resolve: function () { + resolve() { return getDefault(); } }, @@ -81,13 +94,13 @@ const query = schemaGenerator.createObjectType({ count: GraphQLInt, sort: GraphQLString }, - resolve: function (env) { - var idprovider = env.args.idprovider || 'system'; - var types = env.args.types || Type.all(); - var query = env.args.query; - var start = env.args.start; - var count = env.args.count; - var sort = env.args.sort; + resolve(env) { + let idprovider = env.args.idprovider || 'system'; + let types = env.args.types || Type.all(); + let query = env.args.query; + let start = env.args.start; + let count = env.args.count; + let sort = env.args.sort; return listPrincipals( idprovider, types, @@ -103,8 +116,8 @@ const query = schemaGenerator.createObjectType({ args: { key: nonNull(GraphQLString), }, - resolve: function (env) { - var key = env.args.key; + resolve(env) { + let key = env.args.key; return getPrincipalsByKeys(key); } }, @@ -113,8 +126,8 @@ const query = schemaGenerator.createObjectType({ args: { keys: nonNull(list(GraphQLString)) }, - resolve: function (env) { - var keys = env.args.keys; + resolve(env) { + let keys = env.args.keys; return getPrincipalsByKeys(keys); } }, @@ -127,32 +140,20 @@ const query = schemaGenerator.createObjectType({ start: GraphQLInt, count: GraphQLInt }, - resolve: function (env) { + resolve(env) { return getUserItems(env.args, env.args.types); } }, - types: { - type: TypesType, - args: { - query: GraphQLString, - itemIds: list(GraphQLString), - start: GraphQLInt, - count: GraphQLInt - }, - resolve: function (env) { - return getUserItems(env.args, null); - } - }, repository: { type: RepositoryType, args: { id: nonNull(GraphQLString) }, - resolve: function (env) { + resolve(env) { if (!isAdmin()) { throw new Error('You don\'t have permission to access this resource'); } - var id = env.args.id; + let id = env.args.id; return getRepositoryById(id); } }, @@ -164,17 +165,29 @@ const query = schemaGenerator.createObjectType({ count: GraphQLInt, sort: SortModeEnum }, - resolve: function (env) { + resolve(env) { if (!isAdmin()) { throw new Error('You don\'t have permission to access this resource'); } - var query = env.args.query; - var start = env.args.start; - var count = env.args.count; - var sort = env.args.sort; + let query = env.args.query; + let start = env.args.start; + let count = env.args.count; + let sort = env.args.sort; return listRepositories(query, start, count, sort); } - } + }, + types: { + type: TypesType, + args: { + query: GraphQLString, + itemIds: list(GraphQLString), + start: GraphQLInt, + count: GraphQLInt + }, + resolve({args}) { + return getUserItems(args, null); + } + }, } }); export default query; diff --git a/src/main/resources/services/graphql/schemaUtil.ts b/src/main/resources/services/graphql/schemaUtil.ts index 00363e271..d466347e5 100644 --- a/src/main/resources/services/graphql/schemaUtil.ts +++ b/src/main/resources/services/graphql/schemaUtil.ts @@ -1,5 +1,5 @@ // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) -import { newSchemaGenerator } from '/lib/graphql'; +import {newSchemaGenerator} from '/lib/graphql'; // singleton export const schemaGenerator = newSchemaGenerator(); diff --git a/src/main/resources/services/graphql/types/enums.ts b/src/main/resources/services/graphql/types/enums.ts index 4e814d810..0fc0a03bf 100644 --- a/src/main/resources/services/graphql/types/enums.ts +++ b/src/main/resources/services/graphql/types/enums.ts @@ -1,7 +1,8 @@ -import { schemaGenerator } from '../schemaUtil'; +import {EnumTypeNames} from '../constants'; +import {schemaGenerator} from '../schemaUtil'; export const IdProviderModeEnum = schemaGenerator.createEnumType({ - name: 'IdProviderMode', + name: EnumTypeNames.IdProviderMode, description: 'Enumeration of Id provider modes', values: { LOCAL: 'LOCAL', @@ -11,7 +12,7 @@ export const IdProviderModeEnum = schemaGenerator.createEnumType({ }); export const SortModeEnum = schemaGenerator.createEnumType({ - name: 'SortMode', + name: EnumTypeNames.SortMode, description: 'Enumeration of sort modes', values: { ASC: 'ASC', @@ -20,7 +21,7 @@ export const SortModeEnum = schemaGenerator.createEnumType({ }); export const UserItemTypeEnum = schemaGenerator.createEnumType({ - name: 'UserItemType', + name: EnumTypeNames.UserItemType, description: 'Enumeration of user item types', values: { ID_PROVIDER: 'ID_PROVIDER', @@ -31,7 +32,7 @@ export const UserItemTypeEnum = schemaGenerator.createEnumType({ }); export const PrincipalTypeEnum = schemaGenerator.createEnumType({ - name: 'PrincipalType', + name: EnumTypeNames.PrincipalType, description: 'Enumeration of principal types', values: { USER: 'USER', @@ -41,7 +42,7 @@ export const PrincipalTypeEnum = schemaGenerator.createEnumType({ }); export const PermissionEnum = schemaGenerator.createEnumType({ - name: 'Permission', + name: EnumTypeNames.Permission, description: 'Enumeration of permissions', values: { READ: 'READ', @@ -55,7 +56,7 @@ export const PermissionEnum = schemaGenerator.createEnumType({ }); export const IdProviderAccessEnum = schemaGenerator.createEnumType({ - name: 'IdProviderAccess', + name: EnumTypeNames.IdProviderAccess, description: 'Enumeration of id provider access permissions', values: { READ: 'READ', diff --git a/src/main/resources/services/graphql/types/index.ts b/src/main/resources/services/graphql/types/index.ts index 48348b1c6..ffb800e83 100644 --- a/src/main/resources/services/graphql/types/index.ts +++ b/src/main/resources/services/graphql/types/index.ts @@ -1,3 +1,49 @@ -export * as enums from './enums'; -export * as inputs from './inputs'; -export * as objects from './objects'; +import { + IdProviderAccessEnum, + IdProviderModeEnum, + PermissionEnum, + PrincipalTypeEnum, + SortModeEnum, + UserItemTypeEnum, +} from './enums'; +import { + IdProviderAccessControlInput, + IdProviderConfigInput +} from './inputs'; +import { + IdProviderDeleteType, + IdProviderType, + PrincipalConnectionType, + PrincipalDeleteType, + PrincipalType, + PublicKeyType, + RepositoryType, + TypesType, + UserItemConnectionType +} from './objects'; + +export default { + enums: { + IdProviderAccessEnum, + IdProviderModeEnum, + PermissionEnum, + PrincipalTypeEnum, + SortModeEnum, + UserItemTypeEnum + }, + inputs: { + IdProviderAccessControlInput, + IdProviderConfigInput + }, + objects: { + IdProviderDeleteType, + IdProviderType, + PrincipalConnectionType, + PrincipalDeleteType, + PrincipalType, + PublicKeyType, + RepositoryType, + TypesType, + UserItemConnectionType + } +}; diff --git a/src/main/resources/services/graphql/types/inputs.ts b/src/main/resources/services/graphql/types/inputs.ts index 258ee5e2d..ed91b4ed2 100644 --- a/src/main/resources/services/graphql/types/inputs.ts +++ b/src/main/resources/services/graphql/types/inputs.ts @@ -3,26 +3,27 @@ import { nonNull // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) } from '/lib/graphql'; -import { schemaGenerator } from '../schemaUtil'; -import { IdProviderAccessEnum } from './enums'; +import {InputTypeNames} from '../constants'; +import {schemaGenerator} from '../schemaUtil'; +import {IdProviderAccessEnum} from './enums'; -// eslint-disable-next-line no-unused-vars -var PrincipalInput = schemaGenerator.createInputObjectType({ - name: 'PrincipalInput', - description: 'Input definition for principal', - fields: { - key: { - type: nonNull(GraphQLString) - }, - displayName: { - type: nonNull(GraphQLString) - } - } -}); +// TODO: ASFAIK, not used anywhere? +// schemaGenerator.createInputObjectType({ +// name: InputTypeNames.PrincipalInput, +// description: 'Input definition for principal', +// fields: { +// key: { +// type: nonNull(GraphQLString) +// }, +// displayName: { +// type: nonNull(GraphQLString) +// } +// } +// }); export const IdProviderAccessControlInput = schemaGenerator.createInputObjectType({ - name: 'IdProviderAccessControlInput', + name: InputTypeNames.IdProviderAccessControlInput, description: 'Input definition for id provider access control entry', fields: { principal: { @@ -35,7 +36,7 @@ export const IdProviderAccessControlInput = schemaGenerator.createInputObjectTyp }); export const IdProviderConfigInput = schemaGenerator.createInputObjectType({ - name: 'IdProviderConfigInput', + name: InputTypeNames.IdProviderConfigInput, description: 'Input definition for id provider auth config', fields: { applicationKey: { diff --git a/src/main/resources/services/graphql/types/objects/aggregations.ts b/src/main/resources/services/graphql/types/objects/aggregations.ts index 322461e89..d46e43240 100644 --- a/src/main/resources/services/graphql/types/objects/aggregations.ts +++ b/src/main/resources/services/graphql/types/objects/aggregations.ts @@ -4,11 +4,12 @@ import { list // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) } from '/lib/graphql'; -import { schemaGenerator } from '../../schemaUtil'; +import {ObjectTypeNames} from '../../constants'; +import {schemaGenerator} from '../../schemaUtil'; -var BucketType = schemaGenerator.createObjectType({ - name: 'Bucket', +const BucketType = schemaGenerator.createObjectType({ + name: ObjectTypeNames.Bucket, description: 'Aggregated result for specific key', fields: { key: { @@ -21,7 +22,7 @@ var BucketType = schemaGenerator.createObjectType({ }); export const AggregationType = schemaGenerator.createObjectType({ - name: 'Aggregation', + name: ObjectTypeNames.Aggregation, description: 'List of buckets', fields: { name: { @@ -29,7 +30,7 @@ export const AggregationType = schemaGenerator.createObjectType({ }, buckets: { type: list(BucketType), - resolve: function(env) { + resolve: function (env) { return env.source.aggregation; } } @@ -39,10 +40,10 @@ export const AggregationType = schemaGenerator.createObjectType({ export function createAggregationsField() { return { type: list(AggregationType), - resolve: function(env) { - var aggregations = env.source.aggregations; - var aggs = []; - Object.keys(aggregations).forEach(function(key) { + resolve: function (env) { + let aggregations = env.source.aggregations; + let aggs = []; + Object.keys(aggregations).forEach(function (key) { aggs.push({ name: key, aggregation: aggregations[key].buckets diff --git a/src/main/resources/services/graphql/types/objects/connection.ts b/src/main/resources/services/graphql/types/objects/connection.ts index 77f78f85e..77445a4e8 100644 --- a/src/main/resources/services/graphql/types/objects/connection.ts +++ b/src/main/resources/services/graphql/types/objects/connection.ts @@ -1,3 +1,8 @@ +import { + InterfaceTypeNames, + ObjectTypeNames +} from '../../constants'; + import { GraphQLBoolean, GraphQLInt, @@ -5,24 +10,23 @@ import { nonNull // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) } from '/lib/graphql'; -import { toInt } from '../../utils'; -import { createAggregationsField } from './aggregations'; -import { schemaGenerator } from '../../schemaUtil'; +import {createAggregationsField} from './aggregations'; +import {schemaGenerator} from '../../schemaUtil'; -var pageInfoType = schemaGenerator.createObjectType({ - name: 'PageInfo', +const pageInfoType = schemaGenerator.createObjectType({ + name: ObjectTypeNames.PageInfo, fields: { startCursor: { type: nonNull(GraphQLInt), - resolve: function(env) { - return toInt(env.source.startCursor); + resolve: function (env) { + return env.source.startCursor.intValue(); } }, endCursor: { type: nonNull(GraphQLInt), - resolve: function(env) { - return toInt(env.source.endCursor); + resolve: function (env) { + return env.source.endCursor.intValue(); } }, hasNext: { @@ -31,7 +35,7 @@ var pageInfoType = schemaGenerator.createObjectType({ } }); -function createEdgeType(name, type) { +function createEdgeType(name: InterfaceTypeNames|ObjectTypeNames, type) { return schemaGenerator.createObjectType({ name: name + 'Edge', fields: { @@ -40,30 +44,30 @@ function createEdgeType(name, type) { }, cursor: { type: nonNull(GraphQLInt), - resolve: function(env) { - return toInt(env.source.cursor); + resolve: function (env) { + return env.source.cursor.intValue(); } } } }); } -export function createConnectionType(name, type) { +export function createConnectionType(name: InterfaceTypeNames|ObjectTypeNames, type) { return schemaGenerator.createObjectType({ name: name + 'Connection', fields: { totalCount: { type: nonNull(GraphQLInt), - resolve: function(env) { + resolve: function (env) { return env.source.total; } }, edges: { type: list(createEdgeType(name, type)), - resolve: function(env) { - var hits = env.source.hits; - var edges = []; - for (var i = 0; i < hits.length; i++) { + resolve: function (env) { + let hits = env.source.hits; + let edges = []; + for (let i = 0; i < hits.length; i++) { edges.push({ node: hits[i], cursor: env.source.start + i @@ -75,7 +79,7 @@ export function createConnectionType(name, type) { aggregations: createAggregationsField(), pageInfo: { type: pageInfoType, - resolve: function(env) { + resolve: function (env) { return { startCursor: env.source.start, endCursor: diff --git a/src/main/resources/services/graphql/types/objects/idProvider.ts b/src/main/resources/services/graphql/types/objects/idProvider.ts index 748c7df4c..ae55650e7 100644 --- a/src/main/resources/services/graphql/types/objects/idProvider.ts +++ b/src/main/resources/services/graphql/types/objects/idProvider.ts @@ -9,21 +9,24 @@ import { IdProviderAccessEnum, IdProviderModeEnum } from '../enums'; -// import { UserItemType } from './userItem'; +import { + UserItemType, + typeResolverMap +} from './userItem'; import { getIdProviderMode, getPermissions } from '/lib/idproviders'; -import { schemaGenerator } from '../../schemaUtil'; -import { ObjectTypeNames } from '../../constants'; +import {ObjectTypeNames} from '../../constants'; +import {schemaGenerator} from '../../schemaUtil'; -var IdProviderAccessControlEntryType = schemaGenerator.createObjectType({ - name: 'IdProviderAccessControlEntry', +const IdProviderAccessControlEntryType = schemaGenerator.createObjectType({ + name: ObjectTypeNames.IdProviderAccessControlEntry, description: 'Domain representation of id provider access control entry', fields: { principal: { - type: reference(ObjectTypeNames.PRINCIPAL) + type: reference(ObjectTypeNames.Principal) }, access: { type: IdProviderAccessEnum @@ -32,7 +35,7 @@ var IdProviderAccessControlEntryType = schemaGenerator.createObjectType({ }); export const IdProviderConfig = schemaGenerator.createObjectType({ - name: 'IdProviderConfig', + name: ObjectTypeNames.IdProviderConfig, description: 'Domain representation of auth config for id provider', fields: { applicationKey: { @@ -40,7 +43,7 @@ export const IdProviderConfig = schemaGenerator.createObjectType({ }, config: { type: GraphQLString, - resolve: function(env) { + resolve: function (env) { return JSON.stringify(env.source.config); // TODO Create object type for property array } @@ -49,27 +52,27 @@ export const IdProviderConfig = schemaGenerator.createObjectType({ }); export const IdProviderType = schemaGenerator.createObjectType({ - name: 'IdProvider', + name: ObjectTypeNames.IdProvider, description: 'Domain representation of an id provider', - // interfaces: [UserItemType], + interfaces: [UserItemType], // interfaces: [reference('UserItem')], fields: { key: { type: GraphQLString, - resolve: function(env) { - return env.source.key || env.source._name; + resolve({source}) { + return source.key || source._name; } }, name: { type: GraphQLString, - resolve: function(env) { - return env.source.key || env.source._name; + resolve({source}) { + return source.key || source._name; } }, path: { type: GraphQLString, - resolve: function(env) { - return '/identity/' + (env.source.key || env.source._name); + resolve({source}) { + return '/identity/' + (source.key || source._name); } }, displayName: { @@ -83,10 +86,10 @@ export const IdProviderType = schemaGenerator.createObjectType({ }, idProviderMode: { type: IdProviderModeEnum, - resolve: function(env) { - var idProviderKey = - env.source.idProviderConfig && - env.source.idProviderConfig.applicationKey; + resolve({source}) { + let idProviderKey = + source.idProviderConfig && + source.idProviderConfig.applicationKey; return idProviderKey ? getIdProviderMode(idProviderKey) : null; @@ -94,30 +97,30 @@ export const IdProviderType = schemaGenerator.createObjectType({ }, permissions: { type: list(IdProviderAccessControlEntryType), - resolve: function(env) { - return getPermissions(env.source.key); + resolve({source}) { + return getPermissions(source.key); } }, modifiedTime: { type: GraphQLString, - resolve: function(env) { - return env.source._timestamp; + resolve({source}) { + return source._timestamp; } } } }); // NOTE: This populates the typeResolverMap which is used inside the UserItem typeResolver -// graphQlUserItem.typeResolverMap.idProviderType = IdProviderType; +typeResolverMap.idProviderType = IdProviderType; export const IdProviderDeleteType = schemaGenerator.createObjectType({ - name: 'IdProviderDelete', + name: ObjectTypeNames.IdProviderDelete, description: 'Result of an idProvider delete operation', fields: { key: { type: GraphQLString, - resolve: function (env) { - return env.source.idProviderKey; + resolve({source}) { + return source.idProviderKey; } }, deleted: { diff --git a/src/main/resources/services/graphql/types/objects/index.ts b/src/main/resources/services/graphql/types/objects/index.ts index 68583aa4b..ea915c0fe 100644 --- a/src/main/resources/services/graphql/types/objects/index.ts +++ b/src/main/resources/services/graphql/types/objects/index.ts @@ -1,5 +1,10 @@ -import { createConnectionType } from './connection'; -import { PrincipalType } from './principal'; +import { + InterfaceTypeNames, + ObjectTypeNames +} from '../../constants'; + +import {createConnectionType} from './connection'; +import {PrincipalType} from './principal'; import {UserItemType} from './userItem'; export { @@ -10,17 +15,17 @@ export { PrincipalDeleteType, PublicKeyType } from './principal'; -export { TypesType } from './types'; -export { RepositoryType } from './repository'; +export {TypesType} from './types'; +export {RepositoryType} from './repository'; -export { PrincipalType }; +export {PrincipalType}; export const PrincipalConnectionType = createConnectionType( - 'Principal', + ObjectTypeNames.Principal, PrincipalType ); export const UserItemConnectionType = createConnectionType( - 'UserItem', + InterfaceTypeNames.UserItem, UserItemType ); diff --git a/src/main/resources/services/graphql/types/objects/principal.ts b/src/main/resources/services/graphql/types/objects/principal.ts index 7a1961f12..ce6ee1ae7 100644 --- a/src/main/resources/services/graphql/types/objects/principal.ts +++ b/src/main/resources/services/graphql/types/objects/principal.ts @@ -11,21 +11,24 @@ import { getMemberships } from '/lib/principals'; -import { schemaGenerator } from '../../schemaUtil'; +import {schemaGenerator} from '../../schemaUtil'; import { PermissionEnum, PrincipalTypeEnum } from '../enums'; import {toArray} from '../../utils'; -import { ObjectTypeNames } from '../../constants'; -// import { UserItemType } from './userItem'; +import {ObjectTypeNames} from '../../constants'; +import { + UserItemType, + typeResolverMap +} from './userItem'; // @ts-expect-error Cannot find module '/lib/util' or its corresponding type declarations.ts(2307) -import { forceArray } from '/lib/util'; +import {forceArray} from '/lib/util'; export const PublicKeyType = schemaGenerator.createObjectType({ - name: 'PublicKey', + name: ObjectTypeNames.PublicKey, description: 'Public key for a user', fields: { kid: { @@ -43,12 +46,12 @@ export const PublicKeyType = schemaGenerator.createObjectType({ } }); -var PrincipalAccessControlEntryType = schemaGenerator.createObjectType({ - name: 'PrincipalAccessControlEntry', +let PrincipalAccessControlEntryType = schemaGenerator.createObjectType({ + name: ObjectTypeNames.PrincipalAccessControlEntry, description: 'Domain representation of access control entry', fields: { principal: { - type: reference(ObjectTypeNames.PRINCIPAL), + type: reference(ObjectTypeNames.Principal), resolve: function (env) { return getByKeys(env.source.principal); } @@ -63,9 +66,9 @@ var PrincipalAccessControlEntryType = schemaGenerator.createObjectType({ }); export const PrincipalType = schemaGenerator.createObjectType({ - name: ObjectTypeNames.PRINCIPAL, + name: ObjectTypeNames.Principal, description: 'Domain representation of a principal', - // interfaces: [UserItemType], + interfaces: [UserItemType], // interfaces: [reference('UserItem')], // TODO constant fields: { key: { @@ -111,13 +114,13 @@ export const PrincipalType = schemaGenerator.createObjectType({ type: GraphQLString }, memberships: { - type: list(reference(ObjectTypeNames.PRINCIPAL)), + type: list(reference(ObjectTypeNames.Principal)), args: { transitive: GraphQLBoolean }, resolve: function (env) { - var key = env.source.key || env.source._id; - var transitive = env.args.transitive; + let key = env.source.key || env.source._id; + let transitive = env.args.transitive; return toArray(getMemberships(key, transitive)); } }, @@ -143,15 +146,15 @@ export const PrincipalType = schemaGenerator.createObjectType({ }); // NOTE: This populates the typeResolverMap which is used inside the UserItem typeResolver -// graphQlUserItem.typeResolverMap.principalType = exports.PrincipalType; +typeResolverMap.principalType = PrincipalType; export const PrincipalDeleteType = schemaGenerator.createObjectType({ - name: 'PrincipalDelete', + name: ObjectTypeNames.PrincipalDelete, description: 'Result of a principal delete operation', fields: { key: { type: GraphQLString, - resolve: function (env) { + resolve(env) { return env.source.key; } }, diff --git a/src/main/resources/services/graphql/types/objects/repository.ts b/src/main/resources/services/graphql/types/objects/repository.ts index b0f56fd34..046e17730 100644 --- a/src/main/resources/services/graphql/types/objects/repository.ts +++ b/src/main/resources/services/graphql/types/objects/repository.ts @@ -3,12 +3,13 @@ import { list // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) } from '/lib/graphql'; -import { toArray } from '../../utils'; -import { schemaGenerator } from '../../schemaUtil'; +import {toArray} from '../../utils'; +import {ObjectTypeNames} from '../../constants'; +import {schemaGenerator} from '../../schemaUtil'; export const RepositoryType = schemaGenerator.createObjectType({ - name: 'Repository', + name: ObjectTypeNames.Repository, description: 'Domain representation of a repository', fields: { id: { diff --git a/src/main/resources/services/graphql/types/objects/types.ts b/src/main/resources/services/graphql/types/objects/types.ts index 831faaba4..5dfe1b055 100644 --- a/src/main/resources/services/graphql/types/objects/types.ts +++ b/src/main/resources/services/graphql/types/objects/types.ts @@ -4,25 +4,26 @@ import { nonNull // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) } from '/lib/graphql'; -import { AggregationType } from './aggregations'; -import { schemaGenerator } from '../../schemaUtil'; +import {AggregationType} from './aggregations'; +import {ObjectTypeNames} from '../../constants'; +import {schemaGenerator} from '../../schemaUtil'; export const TypesType = schemaGenerator.createObjectType({ - name: 'Types', + name: ObjectTypeNames.Types, fields: { totalCount: { type: nonNull(GraphQLInt), - resolve: function(env) { - return env.source.total; + resolve({source}) { + return source.total; } }, aggregations: { type: list(AggregationType), - resolve: function(env) { - var aggregations = env.source.aggregations; - var aggs = []; - Object.keys(aggregations).forEach(function(key) { + resolve(env) { + let aggregations = env.source.aggregations; + let aggs = []; + Object.keys(aggregations).forEach(function (key) { aggs.push({ name: key, aggregation: aggregations[key].buckets diff --git a/src/main/resources/services/graphql/types/objects/userItem.ts b/src/main/resources/services/graphql/types/objects/userItem.ts index fea328695..fc93ddc60 100644 --- a/src/main/resources/services/graphql/types/objects/userItem.ts +++ b/src/main/resources/services/graphql/types/objects/userItem.ts @@ -1,19 +1,30 @@ // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) -import { GraphQLString } from '/lib/graphql'; -import { schemaGenerator } from '../../schemaUtil'; +import {GraphQLString} from '/lib/graphql'; +import {schemaGenerator} from '../../schemaUtil'; +import {InterfaceTypeNames} from '../../constants'; -import {IdProviderType} from './idProvider'; -import {PrincipalType} from './principal'; +// When creating an ObjectType, it references which interfaces it's in. +// Either +// 1. The interface type must already be created +// (which means it's already in the schema) +// and it's javascript pointer can be used directly. +// Or +// 2. A graphql reference to a "future" type can be used, +// but then one must remember to actually add the interfacetype later on. +// +// TypeResolvers must return actual ObjectTypes, not references. +// This object is populated after the ObjectTypes are created, +// so it's ready when the typeResolver is called. export const typeResolverMap = { - principalType: PrincipalType, - idProviderType: IdProviderType + principalType: null, + idProviderType: null }; export const UserItemType = schemaGenerator.createInterfaceType({ - name: 'UserItem', + name: InterfaceTypeNames.UserItem, description: 'User item is a base entity for every principal or id provider', - typeResolver: function(source) { + typeResolver: function (source) { return source.principalType ? typeResolverMap.principalType : typeResolverMap.idProviderType; diff --git a/src/main/resources/services/graphql/utils.ts b/src/main/resources/services/graphql/utils.ts index a24d66177..e634c512d 100644 --- a/src/main/resources/services/graphql/utils.ts +++ b/src/main/resources/services/graphql/utils.ts @@ -7,7 +7,3 @@ export function toArray(object) { } return [object]; } - -export function toInt(number, defaultValue) { - return number == null ? defaultValue.intValue() : number.intValue(); -} diff --git a/src/main/resources/services/i18n/i18n.ts b/src/main/resources/services/i18n/i18n.ts index b2e08bddb..244b341ca 100644 --- a/src/main/resources/services/i18n/i18n.ts +++ b/src/main/resources/services/i18n/i18n.ts @@ -1,14 +1,14 @@ -import { getLocales } from '/lib/xp/admin'; -import { getPhrases } from '/lib/xp/i18n'; +import {getLocales} from '/lib/xp/admin'; +import {getPhrases} from '/lib/xp/i18n'; export function get() { const locales = getLocales(); const body = getPhrases(locales, ['i18n/common']); const phrases = getPhrases(locales, ['i18n/phrases']); - for (var key in phrases) { body[key] = phrases[key] } + for (let key in phrases) { body[key] = phrases[key]; } return { status: 200, contentType: 'application/json', body - } + }; } diff --git a/src/main/resources/services/permissionReport/permissionReport.ts b/src/main/resources/services/permissionReport/permissionReport.ts index 379eeb815..d9e2061ac 100644 --- a/src/main/resources/services/permissionReport/permissionReport.ts +++ b/src/main/resources/services/permissionReport/permissionReport.ts @@ -1,15 +1,15 @@ -var permissionReports = require('/lib/permissionReports'); +import {generateReport} from '/lib/permissionReports'; export function get(req) { - var principalKey = req.params.principalKey; - var repositoryId = req.params.repositoryId; - var branch = req.params.branch; + let principalKey = req.params.principalKey; + let repositoryId = req.params.repositoryId; + let branch = req.params.branch; - var report = permissionReports.generateReport(principalKey, repositoryId, branch); + let report = generateReport(principalKey, repositoryId, branch); return { contentType: 'text/csv', status: report ? 200 : 404, body: report ? report : 'Not found' }; -}; +} diff --git a/src/main/resources/static/app/inputtype/index.ts b/src/main/resources/static/app/inputtype/index.ts index ac733d602..f5b9aa588 100644 --- a/src/main/resources/static/app/inputtype/index.ts +++ b/src/main/resources/static/app/inputtype/index.ts @@ -1,2 +1,2 @@ -export { AuthApplicationSelector } from './authapplicationselector/AuthApplicationSelector'; -export { PrincipalSelector } from './selector/PrincipalSelector'; +export {AuthApplicationSelector} from './authapplicationselector/AuthApplicationSelector'; +export {PrincipalSelector} from './selector/PrincipalSelector'; diff --git a/tsup/server.ts b/tsup/server.ts index 2c6806e80..be91afb96 100644 --- a/tsup/server.ts +++ b/tsup/server.ts @@ -25,8 +25,7 @@ export default function buildServerConfig(): Options { // print(FILES_SERVER, { maxItems: Infinity }); return { - // bundle: true, // Needed to bundle @enonic/js-utils - bundle: false, + bundle: process.env.NODE_ENV === 'production', dts: false, // d.ts files are use useless at runtime entry: FILES_SERVER, // env: { @@ -153,11 +152,10 @@ export default function buildServerConfig(): Options { platform: 'neutral', silent: ['QUIET', 'WARN'].includes(process.env.LOG_LEVEL_FROM_GRADLE||''), shims: false, // https://tsup.egoist.dev/#inject-cjs-and-esm-shims - // splitting: true, - splitting: false, + splitting: process.env.NODE_ENV === 'production', sourcemap: false, target: 'es5', - tsconfig: 'src/main/resources/tsconfig.json', + tsconfig: 'src/main/resources/tsconfig.json', }; } diff --git a/tsup/static.ts b/tsup/static.ts index afa135227..8351d2e97 100644 --- a/tsup/static.ts +++ b/tsup/static.ts @@ -83,8 +83,8 @@ export default function buildStaticConfig(): Options { silent: ['QUIET', 'WARN'].includes(process.env.LOG_LEVEL_FROM_GRADLE||''), splitting: false, - sourcemap: false, - // sourcemap: process.env.NODE_ENV === 'development', + // sourcemap: false, + sourcemap: process.env.NODE_ENV === 'development', // sourcemap: true, tsconfig: 'src/main/resources/static/tsconfig.json', From 0c4e21545e5d2e1f03657acd748446717ba452d6 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Tue, 19 Sep 2023 15:24:21 +0200 Subject: [PATCH 13/43] Don't build lib, allow code splitting to do it's magic --- src/main/resources/admin/tools/main/main.ts | 4 +- src/main/resources/lib/{ => users}/auth.ts | 0 src/main/resources/lib/{ => users}/common.ts | 0 src/main/resources/lib/{ => users}/groups.ts | 0 .../resources/lib/{ => users}/idproviders.ts | 0 .../resources/lib/{ => users}/ioResource.ts | 0 .../lib/{ => users}/permissionReports.ts | 0 .../resources/lib/{ => users}/principals.ts | 0 .../resources/lib/{ => users}/repositories.ts | 0 src/main/resources/lib/{ => users}/roles.ts | 0 src/main/resources/lib/{ => users}/runMode.ts | 0 .../resources/lib/{ => users}/urlHelper.ts | 2 +- .../resources/lib/{ => users}/useritems.ts | 0 src/main/resources/lib/{ => users}/users.ts | 3 +- src/main/resources/lib/{ => users}/util.ts | 4 +- .../services/graphql/schema/mutation.ts | 12 ++--- .../services/graphql/schema/query.ts | 14 +++--- .../resources/services/graphql/types/enums.ts | 2 +- .../services/graphql/types/inputs.ts | 2 +- .../graphql/types/objects/aggregations.ts | 2 +- .../graphql/types/objects/connection.ts | 2 +- .../graphql/types/objects/idProvider.ts | 4 +- .../services/graphql/types/objects/index.ts | 3 +- .../graphql/types/objects/principal.ts | 7 ++- .../graphql/types/objects/repository.ts | 2 +- .../services/graphql/types/objects/types.ts | 2 +- .../graphql/types/objects/userItem.ts | 2 +- .../permissionReport/permissionReport.ts | 2 +- tsup/server.ts | 47 +++++++++++++------ 29 files changed, 66 insertions(+), 50 deletions(-) rename src/main/resources/lib/{ => users}/auth.ts (100%) rename src/main/resources/lib/{ => users}/common.ts (100%) rename src/main/resources/lib/{ => users}/groups.ts (100%) rename src/main/resources/lib/{ => users}/idproviders.ts (100%) rename src/main/resources/lib/{ => users}/ioResource.ts (100%) rename src/main/resources/lib/{ => users}/permissionReports.ts (100%) rename src/main/resources/lib/{ => users}/principals.ts (100%) rename src/main/resources/lib/{ => users}/repositories.ts (100%) rename src/main/resources/lib/{ => users}/roles.ts (100%) rename src/main/resources/lib/{ => users}/runMode.ts (100%) rename src/main/resources/lib/{ => users}/urlHelper.ts (98%) rename src/main/resources/lib/{ => users}/useritems.ts (100%) rename src/main/resources/lib/{ => users}/users.ts (96%) rename src/main/resources/lib/{ => users}/util.ts (71%) diff --git a/src/main/resources/admin/tools/main/main.ts b/src/main/resources/admin/tools/main/main.ts index 7a30025ad..dc54ce5cb 100644 --- a/src/main/resources/admin/tools/main/main.ts +++ b/src/main/resources/admin/tools/main/main.ts @@ -17,9 +17,9 @@ import { serviceUrl } from '/lib/xp/portal'; import {localize} from '/lib/xp/i18n'; -import {immutableGetter, getAdminUrl} from '/lib/urlHelper'; +import {immutableGetter, getAdminUrl} from '/lib/users/urlHelper'; import { - FILEPATH_MANIFEST_CJS, + // FILEPATH_MANIFEST_CJS, FILEPATH_MANIFEST_NODE_MODULES, GETTER_ROOT, } from '/constants'; diff --git a/src/main/resources/lib/auth.ts b/src/main/resources/lib/users/auth.ts similarity index 100% rename from src/main/resources/lib/auth.ts rename to src/main/resources/lib/users/auth.ts diff --git a/src/main/resources/lib/common.ts b/src/main/resources/lib/users/common.ts similarity index 100% rename from src/main/resources/lib/common.ts rename to src/main/resources/lib/users/common.ts diff --git a/src/main/resources/lib/groups.ts b/src/main/resources/lib/users/groups.ts similarity index 100% rename from src/main/resources/lib/groups.ts rename to src/main/resources/lib/users/groups.ts diff --git a/src/main/resources/lib/idproviders.ts b/src/main/resources/lib/users/idproviders.ts similarity index 100% rename from src/main/resources/lib/idproviders.ts rename to src/main/resources/lib/users/idproviders.ts diff --git a/src/main/resources/lib/ioResource.ts b/src/main/resources/lib/users/ioResource.ts similarity index 100% rename from src/main/resources/lib/ioResource.ts rename to src/main/resources/lib/users/ioResource.ts diff --git a/src/main/resources/lib/permissionReports.ts b/src/main/resources/lib/users/permissionReports.ts similarity index 100% rename from src/main/resources/lib/permissionReports.ts rename to src/main/resources/lib/users/permissionReports.ts diff --git a/src/main/resources/lib/principals.ts b/src/main/resources/lib/users/principals.ts similarity index 100% rename from src/main/resources/lib/principals.ts rename to src/main/resources/lib/users/principals.ts diff --git a/src/main/resources/lib/repositories.ts b/src/main/resources/lib/users/repositories.ts similarity index 100% rename from src/main/resources/lib/repositories.ts rename to src/main/resources/lib/users/repositories.ts diff --git a/src/main/resources/lib/roles.ts b/src/main/resources/lib/users/roles.ts similarity index 100% rename from src/main/resources/lib/roles.ts rename to src/main/resources/lib/users/roles.ts diff --git a/src/main/resources/lib/runMode.ts b/src/main/resources/lib/users/runMode.ts similarity index 100% rename from src/main/resources/lib/runMode.ts rename to src/main/resources/lib/users/runMode.ts diff --git a/src/main/resources/lib/urlHelper.ts b/src/main/resources/lib/users/urlHelper.ts similarity index 98% rename from src/main/resources/lib/urlHelper.ts rename to src/main/resources/lib/users/urlHelper.ts index 86fe5d97d..617e577b0 100644 --- a/src/main/resources/lib/urlHelper.ts +++ b/src/main/resources/lib/users/urlHelper.ts @@ -7,7 +7,7 @@ import { FILEPATH_MANIFEST_CJS, FILEPATH_MANIFEST_NODE_MODULES, GETTER_ROOT -} from '../constants'; +} from '/constants'; import ioResource from './ioResource'; import {IS_DEV_MODE} from './runMode'; diff --git a/src/main/resources/lib/useritems.ts b/src/main/resources/lib/users/useritems.ts similarity index 100% rename from src/main/resources/lib/useritems.ts rename to src/main/resources/lib/users/useritems.ts diff --git a/src/main/resources/lib/users.ts b/src/main/resources/lib/users/users.ts similarity index 96% rename from src/main/resources/lib/users.ts rename to src/main/resources/lib/users/users.ts index cb1cd1c30..13f297489 100644 --- a/src/main/resources/lib/users.ts +++ b/src/main/resources/lib/users/users.ts @@ -13,8 +13,7 @@ import { modifyProfile, modifyUser } from '/lib/xp/auth'; -// @ts-expect-error Cannot find module '/lib/util' or its corresponding type declarations.ts(2307) -import {forceArray} from '/lib/util'; +import {forceArray} from '/lib/users/util'; export function create(params) { let key = required(params, 'key'); diff --git a/src/main/resources/lib/util.ts b/src/main/resources/lib/users/util.ts similarity index 71% rename from src/main/resources/lib/util.ts rename to src/main/resources/lib/users/util.ts index 260a7ad21..9df0da08b 100644 --- a/src/main/resources/lib/util.ts +++ b/src/main/resources/lib/users/util.ts @@ -1,4 +1,4 @@ -exports.forceArray = function (data) { +export function forceArray(data: T|T[]): T[] { if (data) { if (Array.isArray(data)) { return data; @@ -6,4 +6,4 @@ exports.forceArray = function (data) { return [data]; } return []; -}; +} diff --git a/src/main/resources/services/graphql/schema/mutation.ts b/src/main/resources/services/graphql/schema/mutation.ts index acc3a0c0d..aa2310968 100644 --- a/src/main/resources/services/graphql/schema/mutation.ts +++ b/src/main/resources/services/graphql/schema/mutation.ts @@ -10,24 +10,24 @@ import { create as createIdProvider, delete as deleteIdProvider, update as updateIdProvider -} from '/lib/idproviders'; -import {delete as deletePrincipals} from '/lib/principals'; +} from '/lib/users/idproviders'; +import {delete as deletePrincipals} from '/lib/users/principals'; import { addPublicKey, create as createUser, removePublicKey, update as updateUser, updatePwd -} from '/lib/users'; +} from '/lib/users/users'; import { create as createGroup, update as updateGroup, -} from '/lib/groups'; +} from '/lib/users/groups'; import { create as createRole, update as updateRole -} from '/lib/roles'; -import {ObjectTypeNames} from '../constants'; +} from '/lib/users/roles'; +import {ObjectTypeNames} from '/services/graphql/constants'; import {schemaGenerator} from '../schemaUtil'; import { IdProviderDeleteType, diff --git a/src/main/resources/services/graphql/schema/query.ts b/src/main/resources/services/graphql/schema/query.ts index a09452d77..45db7d99d 100644 --- a/src/main/resources/services/graphql/schema/query.ts +++ b/src/main/resources/services/graphql/schema/query.ts @@ -9,24 +9,24 @@ import { nonNull // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) } from '/lib/graphql'; -import {isAdmin} from '/lib/auth'; -import {UserItemType} from '/lib/common'; +import {isAdmin} from '/lib/users/auth'; +import {UserItemType} from '/lib/users/common'; import { getByKey, getDefault, list as listIdProviders -} from '/lib/idproviders'; +} from '/lib/users/idproviders'; import { getByKeys as getPrincipalsByKeys, list as listPrincipals, Type -} from '/lib/principals'; -import {list as listUserItems} from '/lib/useritems'; +} from '/lib/users/principals'; +import {list as listUserItems} from '/lib/users/useritems'; import { getById as getRepositoryById, list as listRepositories -} from '/lib/repositories'; -import {ObjectTypeNames} from '../constants'; +} from '/lib/users/repositories'; +import {ObjectTypeNames} from '/services/graphql/constants'; import {schemaGenerator} from '../schemaUtil'; import {TypesType} from '../types/objects/types'; import { diff --git a/src/main/resources/services/graphql/types/enums.ts b/src/main/resources/services/graphql/types/enums.ts index 0fc0a03bf..c4ae72cc1 100644 --- a/src/main/resources/services/graphql/types/enums.ts +++ b/src/main/resources/services/graphql/types/enums.ts @@ -1,4 +1,4 @@ -import {EnumTypeNames} from '../constants'; +import {EnumTypeNames} from '/services/graphql/constants'; import {schemaGenerator} from '../schemaUtil'; export const IdProviderModeEnum = schemaGenerator.createEnumType({ diff --git a/src/main/resources/services/graphql/types/inputs.ts b/src/main/resources/services/graphql/types/inputs.ts index ed91b4ed2..8f66cf00e 100644 --- a/src/main/resources/services/graphql/types/inputs.ts +++ b/src/main/resources/services/graphql/types/inputs.ts @@ -3,7 +3,7 @@ import { nonNull // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) } from '/lib/graphql'; -import {InputTypeNames} from '../constants'; +import {InputTypeNames} from '/services/graphql/constants'; import {schemaGenerator} from '../schemaUtil'; import {IdProviderAccessEnum} from './enums'; diff --git a/src/main/resources/services/graphql/types/objects/aggregations.ts b/src/main/resources/services/graphql/types/objects/aggregations.ts index d46e43240..2648efc39 100644 --- a/src/main/resources/services/graphql/types/objects/aggregations.ts +++ b/src/main/resources/services/graphql/types/objects/aggregations.ts @@ -4,7 +4,7 @@ import { list // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) } from '/lib/graphql'; -import {ObjectTypeNames} from '../../constants'; +import {ObjectTypeNames} from '/services/graphql/constants'; import {schemaGenerator} from '../../schemaUtil'; diff --git a/src/main/resources/services/graphql/types/objects/connection.ts b/src/main/resources/services/graphql/types/objects/connection.ts index 77445a4e8..4b624e7f6 100644 --- a/src/main/resources/services/graphql/types/objects/connection.ts +++ b/src/main/resources/services/graphql/types/objects/connection.ts @@ -1,7 +1,7 @@ import { InterfaceTypeNames, ObjectTypeNames -} from '../../constants'; +} from '/services/graphql/constants'; import { GraphQLBoolean, diff --git a/src/main/resources/services/graphql/types/objects/idProvider.ts b/src/main/resources/services/graphql/types/objects/idProvider.ts index ae55650e7..d42fccd20 100644 --- a/src/main/resources/services/graphql/types/objects/idProvider.ts +++ b/src/main/resources/services/graphql/types/objects/idProvider.ts @@ -16,8 +16,8 @@ import { import { getIdProviderMode, getPermissions -} from '/lib/idproviders'; -import {ObjectTypeNames} from '../../constants'; +} from '/lib/users/idproviders'; +import {ObjectTypeNames} from '/services/graphql/constants'; import {schemaGenerator} from '../../schemaUtil'; diff --git a/src/main/resources/services/graphql/types/objects/index.ts b/src/main/resources/services/graphql/types/objects/index.ts index ea915c0fe..fd7ce34f2 100644 --- a/src/main/resources/services/graphql/types/objects/index.ts +++ b/src/main/resources/services/graphql/types/objects/index.ts @@ -1,8 +1,7 @@ import { InterfaceTypeNames, ObjectTypeNames -} from '../../constants'; - +} from '/services/graphql/constants'; import {createConnectionType} from './connection'; import {PrincipalType} from './principal'; import {UserItemType} from './userItem'; diff --git a/src/main/resources/services/graphql/types/objects/principal.ts b/src/main/resources/services/graphql/types/objects/principal.ts index ce6ee1ae7..4d6c3400e 100644 --- a/src/main/resources/services/graphql/types/objects/principal.ts +++ b/src/main/resources/services/graphql/types/objects/principal.ts @@ -9,7 +9,7 @@ import { import { getByKeys, getMemberships -} from '/lib/principals'; +} from '/lib/users/principals'; import {schemaGenerator} from '../../schemaUtil'; @@ -18,13 +18,12 @@ import { PrincipalTypeEnum } from '../enums'; import {toArray} from '../../utils'; -import {ObjectTypeNames} from '../../constants'; +import {ObjectTypeNames} from '/services/graphql/constants'; import { UserItemType, typeResolverMap } from './userItem'; -// @ts-expect-error Cannot find module '/lib/util' or its corresponding type declarations.ts(2307) -import {forceArray} from '/lib/util'; +import {forceArray} from '/lib/users/util'; export const PublicKeyType = schemaGenerator.createObjectType({ diff --git a/src/main/resources/services/graphql/types/objects/repository.ts b/src/main/resources/services/graphql/types/objects/repository.ts index 046e17730..8d1299505 100644 --- a/src/main/resources/services/graphql/types/objects/repository.ts +++ b/src/main/resources/services/graphql/types/objects/repository.ts @@ -4,7 +4,7 @@ import { // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) } from '/lib/graphql'; import {toArray} from '../../utils'; -import {ObjectTypeNames} from '../../constants'; +import {ObjectTypeNames} from '/services/graphql/constants'; import {schemaGenerator} from '../../schemaUtil'; diff --git a/src/main/resources/services/graphql/types/objects/types.ts b/src/main/resources/services/graphql/types/objects/types.ts index 5dfe1b055..124f317aa 100644 --- a/src/main/resources/services/graphql/types/objects/types.ts +++ b/src/main/resources/services/graphql/types/objects/types.ts @@ -5,7 +5,7 @@ import { // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) } from '/lib/graphql'; import {AggregationType} from './aggregations'; -import {ObjectTypeNames} from '../../constants'; +import {ObjectTypeNames} from '/services/graphql/constants'; import {schemaGenerator} from '../../schemaUtil'; diff --git a/src/main/resources/services/graphql/types/objects/userItem.ts b/src/main/resources/services/graphql/types/objects/userItem.ts index fc93ddc60..9f0ab1b4a 100644 --- a/src/main/resources/services/graphql/types/objects/userItem.ts +++ b/src/main/resources/services/graphql/types/objects/userItem.ts @@ -1,7 +1,7 @@ // @ts-expect-error Cannot find module '/lib/graphql' or its corresponding type declarations.ts(2307) import {GraphQLString} from '/lib/graphql'; import {schemaGenerator} from '../../schemaUtil'; -import {InterfaceTypeNames} from '../../constants'; +import {InterfaceTypeNames} from '/services/graphql/constants'; // When creating an ObjectType, it references which interfaces it's in. diff --git a/src/main/resources/services/permissionReport/permissionReport.ts b/src/main/resources/services/permissionReport/permissionReport.ts index d9e2061ac..842f4ae0e 100644 --- a/src/main/resources/services/permissionReport/permissionReport.ts +++ b/src/main/resources/services/permissionReport/permissionReport.ts @@ -1,4 +1,4 @@ -import {generateReport} from '/lib/permissionReports'; +import {generateReport} from '/lib/users/permissionReports'; export function get(req) { let principalKey = req.params.principalKey; diff --git a/tsup/server.ts b/tsup/server.ts index be91afb96..f4c22fdc8 100644 --- a/tsup/server.ts +++ b/tsup/server.ts @@ -1,33 +1,52 @@ import type { Options } from '.'; - +import { readdirSync } from 'fs'; +import { resolve } from 'path/posix'; import { globSync } from 'glob'; // import { polyfillNode } from 'esbuild-plugin-polyfill-node'; // import { print } from 'q-i'; import { DIR_SRC, - DIR_SRC_ASSETS, - DIR_SRC_STATIC + // DIR_SRC_ASSETS, + // DIR_SRC_STATIC } from './constants'; +function addControllersInFolder(path: string, entry: string[]) { + readdirSync(resolve(`${DIR_SRC}/${path}`), { + withFileTypes: true + }) + .filter(dirent => dirent.isDirectory()) + .forEach(dirent => { + entry.push(`${DIR_SRC}/${path}/${dirent.name}/${dirent.name}.ts`); + }); +} + +function addRecursive(path: string, entry: string[]) { + globSync(`${DIR_SRC}/${path}/**/*.ts`).forEach(f => entry.push(f)); +} export default function buildServerConfig(): Options { - const GLOB_EXTENSIONS_SERVER = '{ts,js}'; - const FILES_SERVER = globSync( - `${DIR_SRC}/**/*.${GLOB_EXTENSIONS_SERVER}`, - { - absolute: false, - ignore: globSync(`${DIR_SRC_ASSETS}/**/*.${GLOB_EXTENSIONS_SERVER}`).concat( - globSync(`${DIR_SRC_STATIC}/**/*.${GLOB_EXTENSIONS_SERVER}`) - ) - } - ); + // const GLOB_EXTENSIONS_SERVER = '{ts,js}'; + // const FILES_SERVER = globSync( + // `${DIR_SRC}/**/*.${GLOB_EXTENSIONS_SERVER}`, + // { + // absolute: false, + // ignore: globSync(`${DIR_SRC_ASSETS}/**/*.${GLOB_EXTENSIONS_SERVER}`).concat( + // globSync(`${DIR_SRC_STATIC}/**/*.${GLOB_EXTENSIONS_SERVER}`) + // ) + // } + // ); // print(FILES_SERVER, { maxItems: Infinity }); + const entry: string[] = []; + addControllersInFolder('admin/tools', entry); + // addRecursive('lib', entry); + addControllersInFolder('services', entry); + // print(entry); return { bundle: process.env.NODE_ENV === 'production', dts: false, // d.ts files are use useless at runtime - entry: FILES_SERVER, + entry, // env: { // BROWSER_SYNC_PORT: '3000', // }, From 8ad124b22d11fc2b11a7c3e6d7642efce3dcfb13 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Tue, 19 Sep 2023 15:31:56 +0200 Subject: [PATCH 14/43] bundle always true for server --- tsup/server.ts | 16 ++-------------- 1 file changed, 2 insertions(+), 14 deletions(-) diff --git a/tsup/server.ts b/tsup/server.ts index f4c22fdc8..ac7e87f45 100644 --- a/tsup/server.ts +++ b/tsup/server.ts @@ -26,25 +26,13 @@ function addRecursive(path: string, entry: string[]) { } export default function buildServerConfig(): Options { - // const GLOB_EXTENSIONS_SERVER = '{ts,js}'; - // const FILES_SERVER = globSync( - // `${DIR_SRC}/**/*.${GLOB_EXTENSIONS_SERVER}`, - // { - // absolute: false, - // ignore: globSync(`${DIR_SRC_ASSETS}/**/*.${GLOB_EXTENSIONS_SERVER}`).concat( - // globSync(`${DIR_SRC_STATIC}/**/*.${GLOB_EXTENSIONS_SERVER}`) - // ) - // } - // ); - // print(FILES_SERVER, { maxItems: Infinity }); const entry: string[] = []; addControllersInFolder('admin/tools', entry); - // addRecursive('lib', entry); addControllersInFolder('services', entry); // print(entry); return { - bundle: process.env.NODE_ENV === 'production', + bundle: true, dts: false, // d.ts files are use useless at runtime entry, // env: { @@ -171,7 +159,7 @@ export default function buildServerConfig(): Options { platform: 'neutral', silent: ['QUIET', 'WARN'].includes(process.env.LOG_LEVEL_FROM_GRADLE||''), shims: false, // https://tsup.egoist.dev/#inject-cjs-and-esm-shims - splitting: process.env.NODE_ENV === 'production', + splitting: true, sourcemap: false, target: 'es5', tsconfig: 'src/main/resources/tsconfig.json', From d908a1d5c940a45f38c049be8fb9c38c1b1e7b73 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Tue, 19 Sep 2023 17:48:39 +0200 Subject: [PATCH 15/43] upgrade node modules --- package.json | 1 + 1 file changed, 1 insertion(+) diff --git a/package.json b/package.json index b07d31016..1a9387688 100644 --- a/package.json +++ b/package.json @@ -25,6 +25,7 @@ "jquery": "^3.7.1", "nanoid": "^5.0.2", "jquery-ui": "^1.13.2", + "nanoid": "^5.0.1", "owasp-password-strength-test": "^1.3.0", "q": "^1.5.1" }, From 9932634ea823c566c22f3cd13b39d95382b6d087 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Tue, 19 Sep 2023 17:52:07 +0200 Subject: [PATCH 16/43] Correct line numbers in source maps --- src/main/resources/static/tsconfig.json | 24 +++- src/main/resources/tsconfig.json | 9 +- tsconfig.json | 20 +-- tsup/static.ts | 156 +++++++++++++----------- 4 files changed, 124 insertions(+), 85 deletions(-) diff --git a/src/main/resources/static/tsconfig.json b/src/main/resources/static/tsconfig.json index e495448da..a43ee4a6c 100644 --- a/src/main/resources/static/tsconfig.json +++ b/src/main/resources/static/tsconfig.json @@ -1,8 +1,17 @@ -{ +{ // https://www.typescriptlang.org/tsconfig "compilerOptions": { "baseUrl": ".", + "declaration": false, "esModuleInterop": true, // Needed for the 'q' npm module - "module": "commonjs", + "forceConsistentCasingInFileNames": true, + + // Set in tsup/static.ts instead + // "inlineSourceMap": true, + // "inlineSources": true, + + // TODO: Is this the line that caused wrong line numbers? + // "module": "commonjs", + "lib": [ "DOM", "ES2020", @@ -12,7 +21,13 @@ "paths": {}, "rootDir": ".", "skipLibCheck": true, - "target": "es5", // Modern browsers + + // Set in tsup/static.ts instead + // "sourceMap": true, // Important to get correct line numbers? + + // TODO: Is this the line that caused wrong line numbers? + // "target": "ES2020", // Modern browsers + "types": [ "hasher", "q", @@ -20,6 +35,9 @@ "owasp-password-strength-test" ], }, + "exclude": [ + "./**/*.d.ts" + ], "include": [ "./**/*.ts" ], diff --git a/src/main/resources/tsconfig.json b/src/main/resources/tsconfig.json index 6649c2015..86b99c14e 100644 --- a/src/main/resources/tsconfig.json +++ b/src/main/resources/tsconfig.json @@ -1,9 +1,10 @@ { // This file is used by your code editor and the build system, - // for TypeScript files except for those under ./assets/. + // for TypeScript files except for those under ./assets/ and ./static/ // https://www.typescriptlang.org/tsconfig "compilerOptions": { "baseUrl": ".", + "declaration": false, "lib": [ "ES5" ], @@ -17,6 +18,11 @@ // "node_modules/@types", // "node_modules/@enonic-types" // ], + "sourceMap": true, // Important to get correct line numbers? + + // We set target in tsup.config.ts instead + // "target": "es5", + "types": [ "@enonic-types/global" // "global" // When typeRoots is set the prefix @enonic-types/ must be removed. @@ -24,6 +30,7 @@ }, "exclude": [ "./assets/**/*", + "./static/**/*", ], "include": [ "./**/*.ts" diff --git a/tsconfig.json b/tsconfig.json index 1b9aac367..39bb73a88 100644 --- a/tsconfig.json +++ b/tsconfig.json @@ -1,19 +1,23 @@ -{ +{ // https://www.typescriptlang.org/tsconfig "compilerOptions": { + "declaration": false, "esModuleInterop": true, // Needed for the 'q' npm module + "lib": [ + "es2015", + "es2015.promise", + "dom" + ], "module": "commonjs", - "target": "es5", - "sourceMap": true, + "sourceMap": true, // Important to get correct line numbers? + + // We set target in tsup.config.ts instead + // "target": "es5", + "types": [ "hasher", "q", "nanoid", "owasp-password-strength-test" - ], - "lib": [ - "es2015", - "es2015.promise", - "dom" ] }, "exclude": [ diff --git a/tsup/static.ts b/tsup/static.ts index 8351d2e97..4c8fc615e 100644 --- a/tsup/static.ts +++ b/tsup/static.ts @@ -11,82 +11,92 @@ import { export default function buildStaticConfig(): Options { - const DIR_DST_STATIC = `${DIR_DST}/static`; - // const GLOB_EXTENSIONS_STATIC = '{tsx,ts,jsx,js}'; - // const FILES_STATIC = globSync(`${DIR_SRC_STATIC}/**/*.${GLOB_EXTENSIONS_STATIC}`); + const DIR_DST_STATIC = `${DIR_DST}/static`; + // const GLOB_EXTENSIONS_STATIC = '{tsx,ts,jsx,js}'; + // const FILES_STATIC = globSync(`${DIR_SRC_STATIC}/**/*.${GLOB_EXTENSIONS_STATIC}`); - // const entry = {}; - // for (let i = 0; i < FILES_STATIC.length; i++) { - // const element = FILES_STATIC[i]; - // entry[element - // .replace(`${DIR_SRC_STATIC}/`, '') // Remove path - // .replace(/\.[^.]+$/, '') // Remove extension - // ] = element; - // } - return { - bundle: true, - dts: false, - // entry, - entry: { - 'app-users-bundle': 'src/main/resources/static/main.ts', - 'crypto-worker': 'src/main/resources/static/worker/RSAKeysWorker.ts', - }, - // esbuildOptions(options, context) { - // // options.banner = { - // // js: `const jQuery = window.$;` // jQuery UI Tabbable requires this - // // }; - // // options.external = [ - // // 'jquery' - // // ] - // }, - esbuildPlugins: [ - CopyWithHashPlugin({ - context: 'node_modules', - manifest: `node_modules-manifest.json`, - patterns: [ - 'jquery/dist/*.*', - 'jquery-ui/dist/*.*', - ] - }), - TsupPluginManifest({ - generate: (entries) => {// Executed once per format - const newEntries = {}; - Object.entries(entries).forEach(([k,v]) => { - console.log(k,v); - const ext = v.split('.').pop() as string; - const parts = k.replace(`${DIR_SRC_STATIC}/`, '').split('.'); - parts.pop(); - parts.push(ext); - newEntries[parts.join('.')] = v.replace(`${DIR_DST_STATIC}/`, ''); - }); - return newEntries; - } - }), - ], - format: [ - 'cjs' - ], + // const entry = {}; + // for (let i = 0; i < FILES_STATIC.length; i++) { + // const element = FILES_STATIC[i]; + // entry[element + // .replace(`${DIR_SRC_STATIC}/`, '') // Remove path + // .replace(/\.[^.]+$/, '') // Remove extension + // ] = element; + // } + return { + bundle: true, + dts: false, + // entry, + entry: { + 'app-users-bundle': 'src/main/resources/static/main.ts', + 'crypto-worker': 'src/main/resources/static/worker/RSAKeysWorker.ts', + }, + // esbuildOptions(options, context) { + // // options.banner = { + // // js: `const jQuery = window.$;` // jQuery UI Tabbable requires this + // // }; + // // options.external = [ + // // 'jquery' + // // ] + // // options.sourcemap = 'external'; // Shows the line in the transpiled code, not the source + // // options.sourcemap = 'both'; // // Shows the line in the transpiled code, not the source + // }, + esbuildPlugins: [ + CopyWithHashPlugin({ + context: 'node_modules', + manifest: `node_modules-manifest.json`, + patterns: [ + 'jquery/dist/*.*', + 'jquery-ui/dist/*.*', + ] + }), + TsupPluginManifest({ + generate: (entries) => {// Executed once per format + const newEntries = {}; + Object.entries(entries).forEach(([k,v]) => { + console.log(k,v); + const ext = v.split('.').pop() as string; + const parts = k.replace(`${DIR_SRC_STATIC}/`, '').split('.'); + parts.pop(); + parts.push(ext); + newEntries[parts.join('.')] = v.replace(`${DIR_DST_STATIC}/`, ''); + }); + return newEntries; + } + }), + ], + format: [ + 'cjs' + ], - minify: false, - // minify: process.env.NODE_ENV !== 'development', + minify: false, + // minify: process.env.NODE_ENV !== 'development', + // minify: true, // Causes app-users-bundle-L6FTUX7O.js:1 Uncaught TypeError: Cannot read properties of undefined (reading 'insertChild') - noExternal: [ // Same as dependencies in package.json - /@enonic\/lib-admin-ui.*/, - 'hasher', - // 'jquery', // This will bundle jQuery into the bundle - 'nanoid', - 'owasp-password-strength-test', - 'q' - ], - outDir: 'build/resources/main/static', - platform: 'browser', - silent: ['QUIET', 'WARN'].includes(process.env.LOG_LEVEL_FROM_GRADLE||''), - splitting: false, + noExternal: [ // Same as dependencies in package.json + /@enonic\/lib-admin-ui.*/, + 'hasher', + // 'jquery', // This will bundle jQuery into the bundle + 'nanoid', + 'owasp-password-strength-test', + 'q' + ], + outDir: 'build/resources/main/static', + platform: 'browser', + silent: ['QUIET', 'WARN'].includes(process.env.LOG_LEVEL_FROM_GRADLE||''), + splitting: false, - // sourcemap: false, - sourcemap: process.env.NODE_ENV === 'development', - // sourcemap: true, + // Let tsconfig handle sourcemap? + // sourcemap: false, + // sourcemap: process.env.NODE_ENV === 'development' + // ? 'inline' // Shows the line in the transpiled code, not the source + // ? true // Shows the source typescript, but currently the wrong line number :( + // : false, + sourcemap: true, - tsconfig: 'src/main/resources/static/tsconfig.json', - }; + // TODO: Is this the line that fixed wrong line numbers? + target: 'es2020', + + tsconfig: 'src/main/resources/static/tsconfig.json', + }; } From 79b5567d9c2c8d392ced7f7427d22ca896ae3a9e Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Wed, 20 Sep 2023 10:25:11 +0200 Subject: [PATCH 17/43] Cleanup after determining what caused sourcemaps to fail --- src/main/resources/static/tsconfig.json | 20 +++++++---------- tsup/static.ts | 29 +++++-------------------- 2 files changed, 14 insertions(+), 35 deletions(-) diff --git a/src/main/resources/static/tsconfig.json b/src/main/resources/static/tsconfig.json index a43ee4a6c..b31663960 100644 --- a/src/main/resources/static/tsconfig.json +++ b/src/main/resources/static/tsconfig.json @@ -4,28 +4,24 @@ "declaration": false, "esModuleInterop": true, // Needed for the 'q' npm module "forceConsistentCasingInFileNames": true, - - // Set in tsup/static.ts instead - // "inlineSourceMap": true, - // "inlineSources": true, - - // TODO: Is this the line that caused wrong line numbers? - // "module": "commonjs", - + "module": "commonjs", + "moduleResolution": "node", "lib": [ "DOM", "ES2020", "ES2015.Promise" ], - "moduleResolution": "node", "paths": {}, "rootDir": ".", "skipLibCheck": true, - // Set in tsup/static.ts instead - // "sourceMap": true, // Important to get correct line numbers? + // WARNING: Whether or not we want sourcemaps depends upon process.env.NODE_ENV, + // so this is set in tsup/static.ts + // "inlineSourceMap": false, + // "inlineSources": false, + // "sourceMap": true, - // TODO: Is this the line that caused wrong line numbers? + // WARNING: This causes sourcemaps to fail! Must be set in tsup/static.ts instead // "target": "ES2020", // Modern browsers "types": [ diff --git a/tsup/static.ts b/tsup/static.ts index 4c8fc615e..342904d5e 100644 --- a/tsup/static.ts +++ b/tsup/static.ts @@ -3,26 +3,16 @@ import type { Options } from '.'; import CopyWithHashPlugin from '@enonic/esbuild-plugin-copy-with-hash'; import TsupPluginManifest from '@enonic/tsup-plugin-manifest'; -// import { globSync } from 'glob'; import { DIR_DST, DIR_SRC_STATIC } from './constants'; -export default function buildStaticConfig(): Options { - const DIR_DST_STATIC = `${DIR_DST}/static`; - // const GLOB_EXTENSIONS_STATIC = '{tsx,ts,jsx,js}'; - // const FILES_STATIC = globSync(`${DIR_SRC_STATIC}/**/*.${GLOB_EXTENSIONS_STATIC}`); +const DIR_DST_STATIC = `${DIR_DST}/static`; + - // const entry = {}; - // for (let i = 0; i < FILES_STATIC.length; i++) { - // const element = FILES_STATIC[i]; - // entry[element - // .replace(`${DIR_SRC_STATIC}/`, '') // Remove path - // .replace(/\.[^.]+$/, '') // Remove extension - // ] = element; - // } +export default function buildStaticConfig(): Options { return { bundle: true, dts: false, @@ -71,7 +61,7 @@ export default function buildStaticConfig(): Options { minify: false, // minify: process.env.NODE_ENV !== 'development', - // minify: true, // Causes app-users-bundle-L6FTUX7O.js:1 Uncaught TypeError: Cannot read properties of undefined (reading 'insertChild') + // minify: true, // ERROR: Causes app-users-bundle-L6FTUX7O.js:1 Uncaught TypeError: Cannot read properties of undefined (reading 'insertChild') noExternal: [ // Same as dependencies in package.json /@enonic\/lib-admin-ui.*/, @@ -85,16 +75,9 @@ export default function buildStaticConfig(): Options { platform: 'browser', silent: ['QUIET', 'WARN'].includes(process.env.LOG_LEVEL_FROM_GRADLE||''), splitting: false, + sourcemap: process.env.NODE_ENV === 'development', - // Let tsconfig handle sourcemap? - // sourcemap: false, - // sourcemap: process.env.NODE_ENV === 'development' - // ? 'inline' // Shows the line in the transpiled code, not the source - // ? true // Shows the source typescript, but currently the wrong line number :( - // : false, - sourcemap: true, - - // TODO: Is this the line that fixed wrong line numbers? + // INFO: Sourcemaps works when target is set here, rather than in tsconfig.json target: 'es2020', tsconfig: 'src/main/resources/static/tsconfig.json', From ac045915c5087a48e8820acf407afb8d1ea3c2a5 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Wed, 20 Sep 2023 12:53:22 +0200 Subject: [PATCH 18/43] Converted tests to typescript --- build.gradle | 15 ++ package.json | 11 +- ...vider-test.js => createIdProvider-test.ts} | 26 ++-- ...ons-test.js => defaultPermissions-test.ts} | 22 +-- .../users/lib/auth/deleteIdProviders-test.js | 26 ---- .../users/lib/auth/deleteIdProviders-test.ts | 28 ++++ ...Provider-test.js => getIdProvider-test.ts} | 34 ++--- ...issions-test.js => getPermissions-test.ts} | 43 +++--- ...vider-test.js => modifyIdProvider-test.ts} | 30 ++-- src/test/resources/tsconfig.json | 18 +++ tsup.config.ts | 8 +- tsup/addControllersInFolder.ts | 13 ++ tsup/addRecursive.ts | 6 + tsup/constants.ts | 2 + tsup/server.ts | 45 +++--- tsup/test.ts | 135 ++++++++++++++++++ 16 files changed, 334 insertions(+), 128 deletions(-) rename src/test/resources/com/enonic/xp/app/users/lib/auth/{createIdProvider-test.js => createIdProvider-test.ts} (92%) rename src/test/resources/com/enonic/xp/app/users/lib/auth/{defaultPermissions-test.js => defaultPermissions-test.ts} (52%) delete mode 100644 src/test/resources/com/enonic/xp/app/users/lib/auth/deleteIdProviders-test.js create mode 100644 src/test/resources/com/enonic/xp/app/users/lib/auth/deleteIdProviders-test.ts rename src/test/resources/com/enonic/xp/app/users/lib/auth/{getIdProvider-test.js => getIdProvider-test.ts} (80%) rename src/test/resources/com/enonic/xp/app/users/lib/auth/{getPermissions-test.js => getPermissions-test.ts} (56%) rename src/test/resources/com/enonic/xp/app/users/lib/auth/{modifyIdProvider-test.js => modifyIdProvider-test.ts} (91%) create mode 100644 src/test/resources/tsconfig.json create mode 100644 tsup/addControllersInFolder.ts create mode 100644 tsup/addRecursive.ts create mode 100644 tsup/test.ts diff --git a/build.gradle b/build.gradle index fb7f0777a..7c2ba7cf0 100644 --- a/build.gradle +++ b/build.gradle @@ -110,6 +110,21 @@ tasks.register('npmBuild', NpmTask) { inputs.file 'tsup.config.ts' } +tasks.register('npmBuildTests', NpmTask) { + dependsOn( 'npmBuild' ) + environment = [ + 'FORCE_COLOR': 'true', + 'LOG_LEVEL_FROM_GRADLE': gradle.startParameter.logLevel.toString(), + 'NODE_ENV': nodeEnvironment() + ] + description = 'Build tests' + args = ['run', '--silent', 'build:tests'] + inputs.dir 'src/test/resources' + outputs.dir "$buildDir/build/resources/test" + inputs.file 'tsup.config.ts' +} +test.dependsOn npmBuildTests + processResources { exclude '**/*.ts' exclude 'assets/**/*.less' // lessc and postcss will handle this diff --git a/package.json b/package.json index 1a9387688..b5291ee5b 100644 --- a/package.json +++ b/package.json @@ -8,16 +8,17 @@ "url": "https://github.com/enonic/app-users" }, "scripts": { - "build": "concurrently -c auto -g --timings npm:build:*", - "build:css": "postcss -o build/resources/main/assets/styles/main.css build/less/main.css", - "build:server": "tsup -d build/resources/main", - "build:static": "tsup -d build/resources/main/static", + "build": "concurrently -c auto -g --timings npm:build:main:*", + "build:main:css": "postcss -o build/resources/main/assets/styles/main.css build/less/main.css", + "build:main:server": "tsup -d build/resources/main", + "build:main:static": "tsup -d build/resources/main/static", + "build:tests": "tsup -d build/resources/test", "check:types": "tsc --pretty --skipLibCheck --noEmit", "clean": "del build", "fix": "eslint --fix src/**/*.ts --cache", "less": "lessc --source-map src/main/resources/assets/styles/main.less build/less/main.css", "lint": "eslint src/**/*.ts --quiet --cache", - "prebuild:css": "npm run less" + "prebuild:main:css": "npm run less" }, "dependencies": { "@enonic/lib-admin-ui": "file:./.xp/dev/lib-admin-ui", diff --git a/src/test/resources/com/enonic/xp/app/users/lib/auth/createIdProvider-test.js b/src/test/resources/com/enonic/xp/app/users/lib/auth/createIdProvider-test.ts similarity index 92% rename from src/test/resources/com/enonic/xp/app/users/lib/auth/createIdProvider-test.js rename to src/test/resources/com/enonic/xp/app/users/lib/auth/createIdProvider-test.ts index 158d8528b..5a19c4cda 100644 --- a/src/test/resources/com/enonic/xp/app/users/lib/auth/createIdProvider-test.js +++ b/src/test/resources/com/enonic/xp/app/users/lib/auth/createIdProvider-test.ts @@ -1,11 +1,15 @@ -var t = require('/lib/xp/testing'); -var auth = require('/lib/auth'); +import { + assertJsonEquals + // @ts-expect-error Cannot find module '/lib/xp/testing' or its corresponding type declarations.ts(2307) +} from '/lib/xp/testing'; +import { + createIdProvider as _createIdProvider +} from '/lib/users/auth'; -function createAndAssert(params) { - - var result = auth.createIdProvider(params); - var expectedJson = { +function createAndAssert(params) { + const result = _createIdProvider(params); + const expectedJson = { key: 'myIdProvider', displayName: 'Id provider test', description: 'Id provider used for testing', @@ -77,10 +81,10 @@ function createAndAssert(params) { } }; - t.assertJsonEquals(expectedJson, result); + assertJsonEquals(expectedJson, result); } -exports.createIdProvider = function () { +export function createIdProvider() { createAndAssert({ name: 'myIdProvider', displayName: 'Id provider test', @@ -166,8 +170,8 @@ exports.createIdProvider = function () { } ] }); -}; +} -exports.createIdProviderByName = function () { +export function createIdProviderByName() { createAndAssert({name: 'myIdProvider'}); -}; +} diff --git a/src/test/resources/com/enonic/xp/app/users/lib/auth/defaultPermissions-test.js b/src/test/resources/com/enonic/xp/app/users/lib/auth/defaultPermissions-test.ts similarity index 52% rename from src/test/resources/com/enonic/xp/app/users/lib/auth/defaultPermissions-test.js rename to src/test/resources/com/enonic/xp/app/users/lib/auth/defaultPermissions-test.ts index 1cb8aed6f..a2b09812f 100644 --- a/src/test/resources/com/enonic/xp/app/users/lib/auth/defaultPermissions-test.js +++ b/src/test/resources/com/enonic/xp/app/users/lib/auth/defaultPermissions-test.ts @@ -1,11 +1,15 @@ -var t = require('/lib/xp/testing'); -var auth = require('/lib/auth'); +import { + assertJsonEquals + // @ts-expect-error Cannot find module '/lib/xp/testing' or its corresponding type declarations.ts(2307) +} from '/lib/xp/testing'; +import { + defaultPermissions as _defaultPermissions +} from '/lib/users/auth'; -exports.defaultPermissions = function () { - var result = auth.defaultPermissions(); - - var expectedJson = [ +export function defaultPermissions() { + const result = _defaultPermissions(); + const expectedJson = [ { principal: { 'type': 'user', @@ -20,7 +24,5 @@ exports.defaultPermissions = function () { access: 'ADMINISTRATOR' } ]; - - t.assertJsonEquals(expectedJson, result); - -}; + assertJsonEquals(expectedJson, result); +} diff --git a/src/test/resources/com/enonic/xp/app/users/lib/auth/deleteIdProviders-test.js b/src/test/resources/com/enonic/xp/app/users/lib/auth/deleteIdProviders-test.js deleted file mode 100644 index f2d9bb510..000000000 --- a/src/test/resources/com/enonic/xp/app/users/lib/auth/deleteIdProviders-test.js +++ /dev/null @@ -1,26 +0,0 @@ -var t = require('/lib/xp/testing'); -var auth = require('/lib/auth'); - -exports.deleteIdProviders = function () { - - var result = auth.deleteIdProviders({ - keys: ['invalid', 'myIdProvider'] - }); - - var expected = [ - { - idProviderKey: 'invalid', - deleted: false, - reason: 'IdProvider [invalid] not found' - }, - { - idProviderKey: 'myIdProvider', - deleted: true, - reason: undefined - } - ]; - - t.assertJsonEquals(expected, result); - -}; - diff --git a/src/test/resources/com/enonic/xp/app/users/lib/auth/deleteIdProviders-test.ts b/src/test/resources/com/enonic/xp/app/users/lib/auth/deleteIdProviders-test.ts new file mode 100644 index 000000000..dca80af94 --- /dev/null +++ b/src/test/resources/com/enonic/xp/app/users/lib/auth/deleteIdProviders-test.ts @@ -0,0 +1,28 @@ +import { + assertJsonEquals + // @ts-expect-error Cannot find module '/lib/xp/testing' or its corresponding type declarations.ts(2307) +} from '/lib/xp/testing'; +import { + deleteIdProviders as _deleteIdProviders +} from '/lib/users/auth'; + + +export function deleteIdProviders() { + const result = _deleteIdProviders({ + keys: ['invalid', 'myIdProvider'] + }); + const expected = [ + { + idProviderKey: 'invalid', + deleted: false, + reason: 'IdProvider [invalid] not found' + }, + { + idProviderKey: 'myIdProvider', + deleted: true, + reason: undefined + } + ]; + assertJsonEquals(expected, result); +} + diff --git a/src/test/resources/com/enonic/xp/app/users/lib/auth/getIdProvider-test.js b/src/test/resources/com/enonic/xp/app/users/lib/auth/getIdProvider-test.ts similarity index 80% rename from src/test/resources/com/enonic/xp/app/users/lib/auth/getIdProvider-test.js rename to src/test/resources/com/enonic/xp/app/users/lib/auth/getIdProvider-test.ts index 31a995ed1..d7ec26772 100644 --- a/src/test/resources/com/enonic/xp/app/users/lib/auth/getIdProvider-test.js +++ b/src/test/resources/com/enonic/xp/app/users/lib/auth/getIdProvider-test.ts @@ -1,11 +1,16 @@ -var t = require('/lib/xp/testing'); -var auth = require('/lib/auth'); +import { + assertEquals, + assertJsonEquals + // @ts-expect-error Cannot find module '/lib/xp/testing' or its corresponding type declarations.ts(2307) +} from '/lib/xp/testing'; +import { + getIdProvider as _getIdProvider +} from '/lib/users/auth'; -exports.getIdProvider = function () { - var result = auth.getIdProvider({key: 'myIdProvider'}); - - var expectedJson = { +export function getIdProvider() { + const result = _getIdProvider({key: 'myIdProvider'}); + const expectedJson = { key: 'myIdProvider', displayName: 'Id provider test', description: 'Id provider used for testing', @@ -78,15 +83,10 @@ exports.getIdProvider = function () { ] } }; + assertJsonEquals(expectedJson, result); +} - t.assertJsonEquals(expectedJson, result); - -}; - -exports.getNonExistingIdProvider = function () { - - var result = auth.getIdProvider({key: 'myIdProvider'}); - - t.assertEquals(null, result); - -}; +export function getNonExistingIdProvider() { + const result = _getIdProvider({key: 'myIdProvider'}); + assertEquals(null, result); +} diff --git a/src/test/resources/com/enonic/xp/app/users/lib/auth/getPermissions-test.js b/src/test/resources/com/enonic/xp/app/users/lib/auth/getPermissions-test.ts similarity index 56% rename from src/test/resources/com/enonic/xp/app/users/lib/auth/getPermissions-test.js rename to src/test/resources/com/enonic/xp/app/users/lib/auth/getPermissions-test.ts index 6bb98a3be..8363dd1a5 100644 --- a/src/test/resources/com/enonic/xp/app/users/lib/auth/getPermissions-test.js +++ b/src/test/resources/com/enonic/xp/app/users/lib/auth/getPermissions-test.ts @@ -1,11 +1,16 @@ -var t = require('/lib/xp/testing'); -var auth = require('/lib/auth'); - -exports.getPermissions = function () { - - var result = auth.getPermissions({key: 'myIdProvider'}); - - var expectedJson = [ +import { + assertEquals, + assertJsonEquals + // @ts-expect-error Cannot find module '/lib/xp/testing' or its corresponding type declarations.ts(2307) +} from '/lib/xp/testing'; +import { + getPermissions as _getPermissions +} from '/lib/users/auth'; + + +export function getPermissions() { + const result = _getPermissions({key: 'myIdProvider'}); + const expectedJson = [ { principal: { 'type': 'user', @@ -30,17 +35,11 @@ exports.getPermissions = function () { access: 'CREATE_USERS' } ]; - - t.assertJsonEquals(expectedJson, result); - -}; - -exports.getNonExistingPermissions = function () { - - var result = auth.getPermissions({key: 'myIdProvider'}); - - var length = result.length; - - t.assertEquals(0, length); - -}; + assertJsonEquals(expectedJson, result); +} + +export function getNonExistingPermissions() { + const result = _getPermissions({key: 'myIdProvider'}); + const length = result.length; + assertEquals(0, length); +} diff --git a/src/test/resources/com/enonic/xp/app/users/lib/auth/modifyIdProvider-test.js b/src/test/resources/com/enonic/xp/app/users/lib/auth/modifyIdProvider-test.ts similarity index 91% rename from src/test/resources/com/enonic/xp/app/users/lib/auth/modifyIdProvider-test.js rename to src/test/resources/com/enonic/xp/app/users/lib/auth/modifyIdProvider-test.ts index dd19d6e29..3acb69288 100644 --- a/src/test/resources/com/enonic/xp/app/users/lib/auth/modifyIdProvider-test.js +++ b/src/test/resources/com/enonic/xp/app/users/lib/auth/modifyIdProvider-test.ts @@ -1,8 +1,14 @@ -var t = require('/lib/xp/testing'); -var auth = require('/lib/auth'); +import { + assertJsonEquals + // @ts-expect-error Cannot find module '/lib/xp/testing' or its corresponding type declarations.ts(2307) +} from '/lib/xp/testing'; +import { + modifyIdProvider as _modifyIdProvider +} from '/lib/users/auth'; -exports.modifyIdProvider = function () { - var expectedJson = { + +export function modifyIdProvider() { + const expectedJson = { key: 'myIdProvider', displayName: 'Id provider test', description: 'Id provider used for testing', @@ -74,7 +80,7 @@ exports.modifyIdProvider = function () { } }; - var result = auth.modifyIdProvider({ + const result = _modifyIdProvider({ key: 'myIdProvider', editor: function (idProvider) { var newIdProvider = idProvider; @@ -164,16 +170,16 @@ exports.modifyIdProvider = function () { ] }); - t.assertJsonEquals(expectedJson, result); -}; + assertJsonEquals(expectedJson, result); +} -exports.modifyIdProviderWithNullValues = function () { - var expectedJson = { +export function modifyIdProviderWithNullValues() { + const expectedJson = { key: 'myIdProvider', displayName: 'Id provider test' }; - var result = auth.modifyIdProvider({ + const result = _modifyIdProvider({ key: 'myIdProvider', editor: function (idProvider) { idProvider.description = null; @@ -182,5 +188,5 @@ exports.modifyIdProviderWithNullValues = function () { } }); - t.assertJsonEquals(expectedJson, result); -}; + assertJsonEquals(expectedJson, result); +} diff --git a/src/test/resources/tsconfig.json b/src/test/resources/tsconfig.json new file mode 100644 index 000000000..95dcc4b8d --- /dev/null +++ b/src/test/resources/tsconfig.json @@ -0,0 +1,18 @@ +{ + "compilerOptions": { + "baseUrl": ".", + // "rootDir": "../../main/resources" + "paths": { + "/lib/xp/*": ["../../../node_modules/@enonic-types/lib-*"], + "/*": ["../../main/resources/*"] + }, + "skipLibCheck": true, + "types": [ + "@enonic-types/global" + // "global" // When typeRoots is set the prefix @enonic-types/ must be removed. + ], + }, + "include": [ + "./**/*.ts" + ] +} diff --git a/tsup.config.ts b/tsup.config.ts index c5c2b92ef..30a76b867 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -1,13 +1,19 @@ import type { Options } from './tsup'; import { defineConfig } from 'tsup'; -import { DIR_DST } from './tsup/constants'; +import { + DIR_DST, + DIR_DST_TEST +} from './tsup/constants'; export default defineConfig((options: Options) => { if (options.d === DIR_DST) { return import('./tsup/server').then(m => m.default()); } + if (options.d === DIR_DST_TEST) { + return import('./tsup/test').then(m => m.default()); + } if (options.d === 'build/resources/main/assets') { return import('./tsup/assets').then(m => m.default()); } diff --git a/tsup/addControllersInFolder.ts b/tsup/addControllersInFolder.ts new file mode 100644 index 000000000..030854240 --- /dev/null +++ b/tsup/addControllersInFolder.ts @@ -0,0 +1,13 @@ +import { readdirSync } from 'fs'; +import { resolve } from 'path/posix'; + + +export function addControllersInFolder(path: string, entry: string[]) { + readdirSync(resolve(path), { + withFileTypes: true + }) + .filter(dirent => dirent.isDirectory()) + .forEach(dirent => { + entry.push(`${path}/${dirent.name}/${dirent.name}.ts`); + }); +} diff --git a/tsup/addRecursive.ts b/tsup/addRecursive.ts new file mode 100644 index 000000000..1ee63720e --- /dev/null +++ b/tsup/addRecursive.ts @@ -0,0 +1,6 @@ +import { globSync } from 'glob'; + + +export function addRecursive(path: string, entry: string[]) { + globSync(`${path}/**/*.ts`).forEach(f => entry.push(f)); +} diff --git a/tsup/constants.ts b/tsup/constants.ts index ab995304f..d5a8772b0 100644 --- a/tsup/constants.ts +++ b/tsup/constants.ts @@ -1,5 +1,7 @@ export const DIR_DST = 'build/resources/main'; +export const DIR_DST_TEST = 'build/resources/test'; export const DIR_SRC = 'src/main/resources'; export const DIR_SRC_ASSETS = `${DIR_SRC}/assets`; export const DIR_SRC_STATIC = `${DIR_SRC}/static`; +export const DIR_SRC_TEST = 'src/test/resources'; diff --git a/tsup/server.ts b/tsup/server.ts index ac7e87f45..03e53c1e6 100644 --- a/tsup/server.ts +++ b/tsup/server.ts @@ -1,38 +1,32 @@ import type { Options } from '.'; -import { readdirSync } from 'fs'; -import { resolve } from 'path/posix'; -import { globSync } from 'glob'; // import { polyfillNode } from 'esbuild-plugin-polyfill-node'; +import { globSync } from 'glob'; // import { print } from 'q-i'; import { DIR_SRC, - // DIR_SRC_ASSETS, - // DIR_SRC_STATIC + DIR_SRC_ASSETS, + DIR_SRC_STATIC } from './constants'; +// import {addControllersInFolder} from './addControllersInFolder'; +// import {addRecursive} from './addRecursive'; -function addControllersInFolder(path: string, entry: string[]) { - readdirSync(resolve(`${DIR_SRC}/${path}`), { - withFileTypes: true - }) - .filter(dirent => dirent.isDirectory()) - .forEach(dirent => { - entry.push(`${DIR_SRC}/${path}/${dirent.name}/${dirent.name}.ts`); - }); -} - -function addRecursive(path: string, entry: string[]) { - globSync(`${DIR_SRC}/${path}/**/*.ts`).forEach(f => entry.push(f)); -} export default function buildServerConfig(): Options { - const entry: string[] = []; - addControllersInFolder('admin/tools', entry); - addControllersInFolder('services', entry); + const entry = globSync(`${DIR_SRC}/**/*.ts`, { + absolute: false, + ignore: globSync(`${DIR_SRC_ASSETS}/**/*.ts`).concat( + globSync(`${DIR_SRC_STATIC}/**/*.ts`) + ) + }); + // const entry: string[] = []; + // addRecursive(`${DIR_SRC}/lib`, entry) + // addControllersInFolder(`${DIR_SRC}/admin/tools`, entry); + // addControllersInFolder(`${DIR_SRC}/services`, entry); // print(entry); return { - bundle: true, + bundle: true, // Needed for @enonic/lib-admin-ui dts: false, // d.ts files are use useless at runtime entry, // env: { @@ -159,10 +153,13 @@ export default function buildServerConfig(): Options { platform: 'neutral', silent: ['QUIET', 'WARN'].includes(process.env.LOG_LEVEL_FROM_GRADLE||''), shims: false, // https://tsup.egoist.dev/#inject-cjs-and-esm-shims - splitting: true, + + splitting: false, // In order for tests to work + // splitting: true, + sourcemap: false, target: 'es5', - tsconfig: 'src/main/resources/tsconfig.json', + tsconfig: `${DIR_SRC}/tsconfig.json`, }; } diff --git a/tsup/test.ts b/tsup/test.ts new file mode 100644 index 000000000..533b0948a --- /dev/null +++ b/tsup/test.ts @@ -0,0 +1,135 @@ +import type { Options } from '.'; + +// import { polyfillNode } from 'esbuild-plugin-polyfill-node'; +// import { print } from 'q-i'; +import { DIR_SRC_TEST } from './constants'; +import {addRecursive} from './addRecursive'; + + +export default function buildServerConfig(): Options { + const entry: string[] = []; + addRecursive(DIR_SRC_TEST, entry); + // print(entry); + + return { + bundle: true, + dts: false, // d.ts files are use useless at runtime + entry, + // env: { + // BROWSER_SYNC_PORT: '3000', + // }, + esbuildOptions(options, context) { + // options.alias = { + // 'alias': './src/main/resources/lib/filename.js' + // }; + + // Some node modules might need globalThis + // options.banner = { + // js: `const globalThis = (1, eval)('this');` // buffer polyfill needs this + // }; + + // If you have libs with chunks, use this to avoid collisions + options.chunkNames = '_chunks/[name]-[hash]'; + + options.mainFields = ['module', 'main']; + }, + esbuildPlugins: [ + // Some node modules might need parts of Node polyfilled: + // polyfillNode({ + // globals: { + // buffer: false, + // process: false + // }, + // polyfills: { + // _stream_duplex: false, + // _stream_passthrough: false, + // _stream_readable: false, + // _stream_transform: false, + // _stream_writable: false, + // assert: false, + // 'assert/strict': false, + // async_hooks: false, + // buffer: false, + // child_process: false, + // cluster: false, + // console: false, + // constants: false, + // crypto: false, + // dgram: false, + // diagnostics_channel: false, + // dns: false, + // domain: false, + // events: false, + // fs: false, + // 'fs/promises': false, + // http: false, + // http2: false, + // https: false, + // module: false, + // net: false, + // os: false, + // path: false, + // perf_hooks: false, + // process: false, //"empty", + // punycode: false, + // querystring: false, + // readline: false, + // repl: false, + // stream: false, + // string_decoder: false, + // sys: false, + // timers: false, + // 'timers/promises': false, + // tls: false, + // tty: false, + // url: false, + // util: false, // true, + // v8: false, + // vm: false, + // wasi: false, + // worker_threads: false, + // zlib: false, + // } + // }) // ReferenceError: "navigator" is not defined + ], + external: [ + /^\//, + ], + format: 'cjs', + inject: [ + // Injects makes it possible to use some functionality in any file :) + // However it also makes every file larger, unless splitting: true + // If for some reason you cannot use code splitting, it is better + // to import a polyfill only in the entries that needs it. + // Code-js polyfills share code, so together they don't add the sum of all the polyfills. + // For example injecting both number/is-finite and is-integer only adds 60K, not 108K + + // Here are some things Nashorn doesn't support, comment them in to inject them: + // 'node_modules/core-js/stable/array/flat.js', // 69K (18K) minified + // 'node_modules/core-js/stable/array/includes.js', // 60K (15K) + // 'node_modules/core-js/stable/math/trunc.js', // 53K (14K) + // 'node_modules/core-js/stable/number/is-finite.js', // 54K (14K) + // 'node_modules/core-js/stable/number/is-integer.js', // 54K (14K) + // 'node_modules/core-js/stable/parse-float.js', // 59K (15K) + // 'node_modules/core-js/stable/reflect/index.js', // 88K (22K) + // 'node_modules/core-js/stable/string/pad-start.js', + + // TIP: I used this command to find sizes + // npm --silent run clean && npm --silent run build:server; ls -lh build/resources/main/empty.js; npm --silent run clean && npm --silent run build:server -- --minify; ls -lh build/resources/main/empty.js + ], + minify: false, // Minifying server files makes debugging harder + + // TIP: Command to check if there are any bad requires left behind + // grep -r 'require("' build/resources/main | grep -v 'require("/'|grep -v chunk + noExternal: [], + + platform: 'neutral', + silent: ['QUIET', 'WARN'].includes(process.env.LOG_LEVEL_FROM_GRADLE||''), + shims: false, // https://tsup.egoist.dev/#inject-cjs-and-esm-shims + splitting: true, + sourcemap: false, + target: 'es5', + tsconfig: `${DIR_SRC_TEST}/tsconfig.json`, + }; +} + From 0f4f0d29bab9275817335508f56ae156fca85f21 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Wed, 20 Sep 2023 13:04:56 +0200 Subject: [PATCH 19/43] Finally tests are running again --- build.gradle | 4 ++++ tsup/test.ts | 2 ++ 2 files changed, 6 insertions(+) diff --git a/build.gradle b/build.gradle index 7c2ba7cf0..a59db3169 100644 --- a/build.gradle +++ b/build.gradle @@ -137,6 +137,10 @@ processResources { } } +processTestResources { + exclude '**/*.ts' +} + jar { outputs.dir "$buildDir/resources/main" dependsOn( 'npmBuild', 'javadoc', 'test' ) diff --git a/tsup/test.ts b/tsup/test.ts index 533b0948a..29687eaa5 100644 --- a/tsup/test.ts +++ b/tsup/test.ts @@ -32,6 +32,8 @@ export default function buildServerConfig(): Options { options.chunkNames = '_chunks/[name]-[hash]'; options.mainFields = ['module', 'main']; + + options.outbase = DIR_SRC_TEST; }, esbuildPlugins: [ // Some node modules might need parts of Node polyfilled: From 9fd2cb075cc9816c3b4f3daca7a0d13c4b59f86a Mon Sep 17 00:00:00 2001 From: alansemenov Date: Thu, 21 Sep 2023 09:15:32 +0200 Subject: [PATCH 20/43] Use version 4.8.0-3266-SNAPSHOT of lib-admin-ui --- gradle.properties | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/gradle.properties b/gradle.properties index 26b3580f2..ab15edcad 100644 --- a/gradle.properties +++ b/gradle.properties @@ -2,6 +2,6 @@ # Project settings # version=7.14.0-SNAPSHOT -libAdminUiVersion=4.9.0-SNAPSHOT +libAdminUiVersion=4.9.0-3266-SNAPSHOT systemProp.org.gradle.internal.http.connectionTimeout=120000 systemProp.org.gradle.internal.http.socketTimeout=120000 From 51266c2ab04521fce9cb2ad1284093c019e9e4b7 Mon Sep 17 00:00:00 2001 From: alansemenov Date: Thu, 21 Sep 2023 10:07:20 +0200 Subject: [PATCH 21/43] Java 11 in build.gradle --- build.gradle | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/build.gradle b/build.gradle index a59db3169..169d89281 100644 --- a/build.gradle +++ b/build.gradle @@ -25,6 +25,10 @@ configurations { } } +compileJava { + options.release = 11 +} + apply from: "$projectDir/gradle/env.gradle" apply from: "$projectDir/gradle/node.gradle" apply from: "$projectDir/gradle/lib-admin.gradle" From 5cb21082fdb8df95948f6075e37d47d833f55c02 Mon Sep 17 00:00:00 2001 From: alansemenov Date: Thu, 21 Sep 2023 10:21:50 +0200 Subject: [PATCH 22/43] Java 11 in build github action --- .github/workflows/gradle.yml | 6 ++++++ build.gradle | 4 ---- 2 files changed, 6 insertions(+), 4 deletions(-) diff --git a/.github/workflows/gradle.yml b/.github/workflows/gradle.yml index e27314e3e..283bdfd23 100644 --- a/.github/workflows/gradle.yml +++ b/.github/workflows/gradle.yml @@ -41,6 +41,12 @@ jobs: with: ref: ${{ github.event.client_payload.ref || github.ref }} + - name: Set up JDK 11 + uses: actions/setup-java@v3 + with: + java-version: 11 + distribution: 'temurin' + - uses: actions/cache@v3 with: path: | diff --git a/build.gradle b/build.gradle index 169d89281..a59db3169 100644 --- a/build.gradle +++ b/build.gradle @@ -25,10 +25,6 @@ configurations { } } -compileJava { - options.release = 11 -} - apply from: "$projectDir/gradle/env.gradle" apply from: "$projectDir/gradle/node.gradle" apply from: "$projectDir/gradle/lib-admin.gradle" From 68fa001dbfa32dc2c225c7f3c911350d36d0f8c0 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Thu, 21 Sep 2023 10:54:35 +0200 Subject: [PATCH 23/43] lint --- .eslintrc.js | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/.eslintrc.js b/.eslintrc.js index 5e85f841b..e4d68f329 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -1,7 +1,11 @@ module.exports = { extends: '@enonic/eslint-config', parserOptions: { - project: './src/main/resources/tsconfig.json', + project: [ + './src/main/resources/tsconfig.json', + './src/main/resources/static/tsconfig.json', + './src/test/resources/tsconfig.json', + ], // tsconfigRootDir: __dirname, }, 'rules': { From c09abbd6a521729bd015938284a3891be30bac61 Mon Sep 17 00:00:00 2001 From: alansemenov Date: Thu, 21 Sep 2023 13:11:42 +0200 Subject: [PATCH 24/43] Fix Linter errors --- src/main/resources/admin/tools/main/main.ts | 1 + .../users/lib/auth/createIdProvider-test.ts | 8 ++++---- .../app/users/lib/auth/getIdProvider-test.ts | 18 +++++++++--------- .../users/lib/auth/modifyIdProvider-test.ts | 12 ++++++------ 4 files changed, 20 insertions(+), 19 deletions(-) diff --git a/src/main/resources/admin/tools/main/main.ts b/src/main/resources/admin/tools/main/main.ts index dc54ce5cb..f5d0bbd0d 100644 --- a/src/main/resources/admin/tools/main/main.ts +++ b/src/main/resources/admin/tools/main/main.ts @@ -27,6 +27,7 @@ import { const TOOL_NAME = 'main'; const VIEW = resolve('./main.html'); +// @ts-expect-error A function with a name starting with an uppercase letter should only be used as a constructor const router = Router(); router.all(`/${GETTER_ROOT}/{path:.+}`, (r: Request) => { diff --git a/src/test/resources/com/enonic/xp/app/users/lib/auth/createIdProvider-test.ts b/src/test/resources/com/enonic/xp/app/users/lib/auth/createIdProvider-test.ts index 5a19c4cda..85ed77e80 100644 --- a/src/test/resources/com/enonic/xp/app/users/lib/auth/createIdProvider-test.ts +++ b/src/test/resources/com/enonic/xp/app/users/lib/auth/createIdProvider-test.ts @@ -35,8 +35,8 @@ function createAndAssert(params) { ] }, { - name: "sessionTimeout", - type: "Long", + name: 'sessionTimeout', + type: 'Long', values: [{}] }, { @@ -111,8 +111,8 @@ export function createIdProvider() { ] }, { - name: "sessionTimeout", - type: "Long", + name: 'sessionTimeout', + type: 'Long', values: [ { v: null diff --git a/src/test/resources/com/enonic/xp/app/users/lib/auth/getIdProvider-test.ts b/src/test/resources/com/enonic/xp/app/users/lib/auth/getIdProvider-test.ts index d7ec26772..d8c10d8a0 100644 --- a/src/test/resources/com/enonic/xp/app/users/lib/auth/getIdProvider-test.ts +++ b/src/test/resources/com/enonic/xp/app/users/lib/auth/getIdProvider-test.ts @@ -36,9 +36,9 @@ export function getIdProvider() { ] }, { - "name": "sessionTimeout", - "type": "Long", - "values": [ + 'name': 'sessionTimeout', + 'type': 'Long', + 'values': [ {} ] }, @@ -71,14 +71,14 @@ export function getIdProvider() { ] }, { - "name": "emptySet", - "type": "PropertySet", - "values": [] + 'name': 'emptySet', + 'type': 'PropertySet', + 'values': [] }, { - "name": "defaultGroups", - "type": "Reference", - "values": [] + 'name': 'defaultGroups', + 'type': 'Reference', + 'values': [] } ] } diff --git a/src/test/resources/com/enonic/xp/app/users/lib/auth/modifyIdProvider-test.ts b/src/test/resources/com/enonic/xp/app/users/lib/auth/modifyIdProvider-test.ts index 3acb69288..b6ce3646e 100644 --- a/src/test/resources/com/enonic/xp/app/users/lib/auth/modifyIdProvider-test.ts +++ b/src/test/resources/com/enonic/xp/app/users/lib/auth/modifyIdProvider-test.ts @@ -34,8 +34,8 @@ export function modifyIdProvider() { ] }, { - name: "sessionTimeout", - type: "Long", + name: 'sessionTimeout', + type: 'Long', values: [{}] }, { @@ -83,7 +83,7 @@ export function modifyIdProvider() { const result = _modifyIdProvider({ key: 'myIdProvider', editor: function (idProvider) { - var newIdProvider = idProvider; + let newIdProvider = idProvider; newIdProvider.displayName = 'Id provider test'; newIdProvider.description = 'Id provider used for testing'; newIdProvider.idProviderConfig = { @@ -108,8 +108,8 @@ export function modifyIdProvider() { ] }, { - name: "sessionTimeout", - type: "Long", + name: 'sessionTimeout', + type: 'Long', values: [ { v: null @@ -156,7 +156,7 @@ export function modifyIdProvider() { } ] }; - return newIdProvider + return newIdProvider; }, permissions: [ { From d6fea2f6a6ac11b888932f499b042f7242d35cdc Mon Sep 17 00:00:00 2001 From: alansemenov Date: Thu, 21 Sep 2023 13:11:59 +0200 Subject: [PATCH 25/43] Fix failing tests --- build.gradle | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/build.gradle b/build.gradle index a59db3169..8efe0da10 100644 --- a/build.gradle +++ b/build.gradle @@ -66,7 +66,7 @@ repositories { } tasks.register('npmCheck', NpmTask) { - dependsOn npmInstall + dependsOn( 'npmInstall' ) args = [ 'run', 'check:types' @@ -75,25 +75,19 @@ tasks.register('npmCheck', NpmTask) { 'FORCE_COLOR': 'true', ] } -check.dependsOn npmCheck -tasks.withType(Copy) { - includeEmptyDirs = false +tasks.withType(Copy).configureEach { + includeEmptyDirs = false } -// task bunInstall( type: NpxTask ) { -// // Running this should not create a package-lock.json file -// command = 'bun' -// args = ['install'] -// } - tasks.register('lint', NpmTask) { dependsOn ( 'npmInstall' ) group "verification" args = ['run', 'lint'] outputs.upToDateWhen { false } } -check.dependsOn lint + +check.dependsOn( 'lint', 'npmCheck' ) tasks.register('npmBuild', NpmTask) { dependsOn( 'npmInstall' ) @@ -111,7 +105,7 @@ tasks.register('npmBuild', NpmTask) { } tasks.register('npmBuildTests', NpmTask) { - dependsOn( 'npmBuild' ) + dependsOn( 'npmBuild', 'processTestResources' ) environment = [ 'FORCE_COLOR': 'true', 'LOG_LEVEL_FROM_GRADLE': gradle.startParameter.logLevel.toString(), @@ -123,7 +117,6 @@ tasks.register('npmBuildTests', NpmTask) { outputs.dir "$buildDir/build/resources/test" inputs.file 'tsup.config.ts' } -test.dependsOn npmBuildTests processResources { exclude '**/*.ts' @@ -147,6 +140,8 @@ jar { } test { + dependsOn( 'npmBuildTests' ) + useJUnitPlatform() systemProperty 'java.awt.headless', 'true' jvmArgs '-noverify', '-XX:TieredStopAtLevel=1' From c9991cd9d00ef08645f7a0543c4e6836feed95fe Mon Sep 17 00:00:00 2001 From: alansemenov Date: Thu, 21 Sep 2023 16:48:37 +0200 Subject: [PATCH 26/43] Specify target for static assets --- src/main/resources/static/tsconfig.json | 1 + 1 file changed, 1 insertion(+) diff --git a/src/main/resources/static/tsconfig.json b/src/main/resources/static/tsconfig.json index b31663960..3130191fc 100644 --- a/src/main/resources/static/tsconfig.json +++ b/src/main/resources/static/tsconfig.json @@ -5,6 +5,7 @@ "esModuleInterop": true, // Needed for the 'q' npm module "forceConsistentCasingInFileNames": true, "module": "commonjs", + "target": "es5", "moduleResolution": "node", "lib": [ "DOM", From 33869b0535588753c219728c6bd66f34678266b0 Mon Sep 17 00:00:00 2001 From: alansemenov Date: Thu, 21 Sep 2023 19:05:47 +0200 Subject: [PATCH 27/43] Added missing authLib methods --- src/main/resources/lib/users/principals.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/src/main/resources/lib/users/principals.ts b/src/main/resources/lib/users/principals.ts index d52e1c1ef..6de682887 100644 --- a/src/main/resources/lib/users/principals.ts +++ b/src/main/resources/lib/users/principals.ts @@ -6,7 +6,10 @@ import { } from './common'; import { deletePrincipal, - getMemberships as _getMemberships + getMemberships as _getMemberships, + getMembers as _getMembers, + removeMembers as _removeMembers, + addMembers as _addMembers } from '/lib/xp/auth'; @@ -54,12 +57,12 @@ export function updateMemberships(key, addMms, removeMms?: string|string[]) { } export function getMembers(key) { - return authLib.getMembers(key); + return _getMembers(key); } export function addMembers(key, members) { try { - authLib.addMembers(key, members); + _addMembers(key, members); } catch (e) { log.error( 'Could not add members ' + @@ -75,7 +78,7 @@ export function addMembers(key, members) { export function removeMembers(key, members) { try { - authLib.removeMembers(key, members); + _removeMembers(key, members); } catch (e) { log.error( 'Could not remove members ' + From 39431d02de3594f1c3dd3f71a86a79ee8514244b Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Fri, 22 Sep 2023 12:19:15 +0200 Subject: [PATCH 28/43] cryptoWorkerUrl --- src/main/resources/admin/tools/main/main.html | 2 +- src/main/resources/admin/tools/main/main.ts | 3 +++ src/main/resources/static/util/CryptoWorker.ts | 16 +++++++++++++--- 3 files changed, 17 insertions(+), 4 deletions(-) diff --git a/src/main/resources/admin/tools/main/main.html b/src/main/resources/admin/tools/main/main.html index 9d11894bd..a24414f0a 100644 --- a/src/main/resources/admin/tools/main/main.html +++ b/src/main/resources/admin/tools/main/main.html @@ -36,7 +36,7 @@ - + diff --git a/src/main/resources/admin/tools/main/main.ts b/src/main/resources/admin/tools/main/main.ts index f5d0bbd0d..d086366d3 100644 --- a/src/main/resources/admin/tools/main/main.ts +++ b/src/main/resources/admin/tools/main/main.ts @@ -39,6 +39,9 @@ function get(_request: Request): Response { appUsersBundleUrl: getAdminUrl({ path: 'main.js' }, TOOL_NAME), + cryptoWorkerUrl: getAdminUrl({ + path: 'worker/RSAKeysWorker.js' + }, TOOL_NAME), assetsUri: assetUrl({path: ''}), appName: localize({ key: 'admin.tool.displayName', diff --git a/src/main/resources/static/util/CryptoWorker.ts b/src/main/resources/static/util/CryptoWorker.ts index 49d391609..e0670a3ba 100644 --- a/src/main/resources/static/util/CryptoWorker.ts +++ b/src/main/resources/static/util/CryptoWorker.ts @@ -1,4 +1,7 @@ -import {CONFIG} from '@enonic/lib-admin-ui/util/Config'; +interface Data { + cryptoWorkerUrl: string +} + export class CryptoWorker { @@ -6,8 +9,15 @@ export class CryptoWorker { static getCryptoWorker(): Worker { if (!CryptoWorker.cryptoWorker) { - const assetsUri: string = CONFIG.getString('assetsUri'); - CryptoWorker.cryptoWorker = new Worker(`${assetsUri}/js/crypto-worker.js`); + const inlineJsonElement = document.querySelector("script[data-app='com.enonic.xp.app.users']"); + const json = inlineJsonElement.textContent; + let data = {} as Data; + try { + data = JSON.parse(json as string); + } catch (e) { + console.error('Something went wrong while trying to JSON.parse(' + json + ')'); + } + CryptoWorker.cryptoWorker = new Worker(data.cryptoWorkerUrl); } return CryptoWorker.cryptoWorker; } From ebfca70efc00681144883052dda58a172e385955 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Fri, 22 Sep 2023 12:38:49 +0200 Subject: [PATCH 29/43] fnutts --- src/main/resources/admin/tools/main/main.html | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/resources/admin/tools/main/main.html b/src/main/resources/admin/tools/main/main.html index a24414f0a..c88eeee2f 100644 --- a/src/main/resources/admin/tools/main/main.html +++ b/src/main/resources/admin/tools/main/main.html @@ -36,7 +36,7 @@ - + From 4ff55d89fa6cd4e2082b056873940cd3731e92d6 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Fri, 22 Sep 2023 12:42:28 +0200 Subject: [PATCH 30/43] not a module --- src/main/resources/static/worker/RSAKeysWorker.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/src/main/resources/static/worker/RSAKeysWorker.ts b/src/main/resources/static/worker/RSAKeysWorker.ts index 44c1efdcb..e492ea202 100644 --- a/src/main/resources/static/worker/RSAKeysWorker.ts +++ b/src/main/resources/static/worker/RSAKeysWorker.ts @@ -40,5 +40,3 @@ async function exportPublicKey(key) { self.onmessage = (e: MessageEvent) => { generateRSAKeys(); }; - -export {}; From 4ed2b1c3e37be501652a752b37374d64394b0e43 Mon Sep 17 00:00:00 2001 From: alansemenov Date: Fri, 22 Sep 2023 12:59:48 +0200 Subject: [PATCH 31/43] Fix for CryptoWorker --- src/main/resources/admin/tools/main/main.html | 1 - src/main/resources/admin/tools/main/main.ts | 3 --- src/main/resources/services/config/config.ts | 7 ++++++- src/main/resources/static/util/CryptoWorker.ts | 15 ++------------- 4 files changed, 8 insertions(+), 18 deletions(-) diff --git a/src/main/resources/admin/tools/main/main.html b/src/main/resources/admin/tools/main/main.html index c88eeee2f..fa81d3452 100644 --- a/src/main/resources/admin/tools/main/main.html +++ b/src/main/resources/admin/tools/main/main.html @@ -36,7 +36,6 @@ - diff --git a/src/main/resources/admin/tools/main/main.ts b/src/main/resources/admin/tools/main/main.ts index d086366d3..f5d0bbd0d 100644 --- a/src/main/resources/admin/tools/main/main.ts +++ b/src/main/resources/admin/tools/main/main.ts @@ -39,9 +39,6 @@ function get(_request: Request): Response { appUsersBundleUrl: getAdminUrl({ path: 'main.js' }, TOOL_NAME), - cryptoWorkerUrl: getAdminUrl({ - path: 'worker/RSAKeysWorker.js' - }, TOOL_NAME), assetsUri: assetUrl({path: ''}), appName: localize({ key: 'admin.tool.displayName', diff --git a/src/main/resources/services/config/config.ts b/src/main/resources/services/config/config.ts index 50bae1729..3fafe747d 100644 --- a/src/main/resources/services/config/config.ts +++ b/src/main/resources/services/config/config.ts @@ -6,7 +6,9 @@ import { assetUrl, serviceUrl } from '/lib/xp/portal'; +import {getAdminUrl} from '/lib/users/urlHelper'; +const TOOL_NAME = 'main'; export function get() { return { @@ -18,8 +20,11 @@ export function get() { assetsUri: assetUrl({path: ''}), toolUri: getToolUrl( app.name, - 'main' + TOOL_NAME ), + cryptoWorkerUrl: getAdminUrl({ + path: 'worker/RSAKeysWorker.js' + }, TOOL_NAME), services: { graphQlUrl: serviceUrl({service: 'graphql'}), reportServiceUrl: serviceUrl({service: 'permissionReport'}), diff --git a/src/main/resources/static/util/CryptoWorker.ts b/src/main/resources/static/util/CryptoWorker.ts index e0670a3ba..bb7af2a8c 100644 --- a/src/main/resources/static/util/CryptoWorker.ts +++ b/src/main/resources/static/util/CryptoWorker.ts @@ -1,7 +1,4 @@ -interface Data { - cryptoWorkerUrl: string -} - +import {CONFIG} from '@enonic/lib-admin-ui/util/Config'; export class CryptoWorker { @@ -9,15 +6,7 @@ export class CryptoWorker { static getCryptoWorker(): Worker { if (!CryptoWorker.cryptoWorker) { - const inlineJsonElement = document.querySelector("script[data-app='com.enonic.xp.app.users']"); - const json = inlineJsonElement.textContent; - let data = {} as Data; - try { - data = JSON.parse(json as string); - } catch (e) { - console.error('Something went wrong while trying to JSON.parse(' + json + ')'); - } - CryptoWorker.cryptoWorker = new Worker(data.cryptoWorkerUrl); + CryptoWorker.cryptoWorker = new Worker(CONFIG.getString('cryptoWorkerUrl')); } return CryptoWorker.cryptoWorker; } From c1c62efe202f999f490ea716b955b389315f7d64 Mon Sep 17 00:00:00 2001 From: sgauruseu Date: Mon, 25 Sep 2023 12:36:24 +0300 Subject: [PATCH 32/43] ui-tests - try/catch errors --- testing/page_objects/confirmation.dialog.js | 7 ++-- testing/page_objects/page.js | 3 +- .../page_objects/wizardpanel/wizard.panel.js | 40 +++++++++++-------- .../idprovider.with.required.inputs.spec.js | 1 + 4 files changed, 31 insertions(+), 20 deletions(-) diff --git a/testing/page_objects/confirmation.dialog.js b/testing/page_objects/confirmation.dialog.js index e63ba1e04..a4a0d024c 100644 --- a/testing/page_objects/confirmation.dialog.js +++ b/testing/page_objects/confirmation.dialog.js @@ -26,10 +26,11 @@ class ConfirmationDialog extends Page { async clickOnYesButton() { try { await this.clickOnElement(this.yesButton); - return await this.waitForElementNotDisplayed(XPATH.container, appConst.mediumTimeout); + await this.waitForElementNotDisplayed(XPATH.container, appConst.mediumTimeout); + await this.pause(500); } catch (err) { - this.saveScreenshot('err_close_confirmation_dialog'); - throw new Error('Confirmation dialog must be closed!') + let screenshot = await this.saveScreenshotUniqueName('err_close_confirmation_dialog'); + throw new Error('Confirmation dialog must be closed! screenshot: ' + screenshot + ' ' + err); } } diff --git a/testing/page_objects/page.js b/testing/page_objects/page.js index 89665a6e1..5ee1ad98f 100644 --- a/testing/page_objects/page.js +++ b/testing/page_objects/page.js @@ -177,7 +177,8 @@ class Page { await this.pause(400); return await this.getText(notificationXpath); } catch (err) { - throw new Error('Error when wait for the notification message: ' + err); + let screenshot = await this.saveScreenshotUniqueName('err_notification'); + throw new Error('Error when wait for the notification message, screenshot: ' + screenshot+ ' ' + err); } } diff --git a/testing/page_objects/wizardpanel/wizard.panel.js b/testing/page_objects/wizardpanel/wizard.panel.js index 03721be85..a8032dcc9 100644 --- a/testing/page_objects/wizardpanel/wizard.panel.js +++ b/testing/page_objects/wizardpanel/wizard.panel.js @@ -4,7 +4,6 @@ const Page = require('../page'); const lib = require('../../libs/elements'); const appConst = require('../../libs/app_const'); -const itemBuilders = require('../../libs/userItems.builder'); const XPATH = { displayNameInput: `//input[contains(@name,'displayName')]`, saveButton: "//button[contains(@id,'ActionButton') and child::span[text()='Save']]", @@ -25,19 +24,26 @@ class WizardPanel extends Page { return XPATH.deleteButton; } - waitForSaveButtonEnabled() { - return this.waitForElementEnabled(this.saveButton, appConst.mediumTimeout).catch(err => { - this.saveScreenshot("err_save_button"); - throw new Error("Save button is not enabled: " + err); - }) + async waitForSaveButtonEnabled() { + try { + return await this.waitForElementEnabled(this.saveButton, appConst.mediumTimeout); + } catch (err) { + let screenshot = await this.saveScreenshotUniqueName('err_wizard_save_btn'); + throw new Error('Save button should be enabled, screenshot: ' + screenshot + ' ' + err); + } } isSaveButtonEnabled() { return this.isElementEnabled(this.saveButton); } - waitForSaveButtonDisabled() { - return this.waitForElementDisabled(this.saveButton, appConst.mediumTimeout); + async waitForSaveButtonDisabled() { + try { + return await this.waitForElementDisabled(this.saveButton, appConst.mediumTimeout); + } catch (err) { + let screenshot = await this.saveScreenshotUniqueName('err_wizard_save_btn'); + throw new Error('Save button should be disabled, screenshot: ' + screenshot + ' ' + err); + } } waitForDeleteButtonDisabled() { @@ -58,20 +64,22 @@ class WizardPanel extends Page { async waitAndClickOnSave() { try { - await this.waitForSaveButtonEnabled(); + await this.waitForElementEnabled(this.saveButton, appConst.mediumTimeout); await this.clickOnElement(this.saveButton); return await this.pause(500); } catch (err) { - this.saveScreenshot(lib.generateRandomName("err_save_button")); - throw new Error("Error when Save button has been clicked!" + err); + let screenshot = await this.saveScreenshotUniqueName('err_wizard_save_btn'); + throw new Error('Error during clicking on Save, screenshot: ' + screenshot + ' ' + err); } } - clickOnDeleteButton() { - return this.clickOnElement(this.deleteButton).catch(err => { - this.saveScreenshot('err_delete_wizard'); - throw new Error('Error when Delete button has been clicked ' + err); - }); + async clickOnDeleteButton() { + try { + await this.clickOnElement(this.deleteButton) + } catch (err) { + let screenshot = await this.saveScreenshotUniqueName('err_delete_wizard'); + throw new Error('Error during clicking on Delete button, screenshot: ' + screenshot + ' ' + err); + } } async isItemInvalid(displayName) { diff --git a/testing/tests/idprovider.with.required.inputs.spec.js b/testing/tests/idprovider.with.required.inputs.spec.js index e7fa15e69..f6286d673 100644 --- a/testing/tests/idprovider.with.required.inputs.spec.js +++ b/testing/tests/idprovider.with.required.inputs.spec.js @@ -59,6 +59,7 @@ describe('Id Provider, provider-dialog specification', function () { await confirmationDialog.waitForDialogLoaded(); // 4. Click on 'Yes' button: await confirmationDialog.clickOnYesButton(); + await userBrowsePanel.pause(1000); // 5. Expected notification message should appear: await testUtils.saveScreenshot('provider_save_before_close_yes'); let message = await idProviderWizard.waitForNotificationMessage(); From f86ad3a53611d69d3255acfba22b542b77cc4768 Mon Sep 17 00:00:00 2001 From: alansemenov Date: Mon, 25 Sep 2023 16:32:51 +0200 Subject: [PATCH 33/43] Remove jquery-ui from dependencies --- package.json | 2 -- src/main/resources/static/main.ts | 3 +-- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/package.json b/package.json index b5291ee5b..e05503ae9 100644 --- a/package.json +++ b/package.json @@ -25,8 +25,6 @@ "hasher": "^1.2.0", "jquery": "^3.7.1", "nanoid": "^5.0.2", - "jquery-ui": "^1.13.2", - "nanoid": "^5.0.1", "owasp-password-strength-test": "^1.3.0", "q": "^1.5.1" }, diff --git a/src/main/resources/static/main.ts b/src/main/resources/static/main.ts index 23797d902..5ce48d1ff 100644 --- a/src/main/resources/static/main.ts +++ b/src/main/resources/static/main.ts @@ -24,6 +24,7 @@ import { const body = Body.get(); InputTypeManager.register(new Class('AuthApplicationSelector', AuthApplicationSelector)); +InputTypeManager.register(new Class('PrincipalSelector', PrincipalSelector)); function getApplication(): Application { const assetsUri: string = CONFIG.getString('assetsUri'); @@ -87,5 +88,3 @@ function startApplication() { await i18nInit(CONFIG.getString('services.i18nUrl')); startApplication(); })(); - -InputTypeManager.register(new Class('PrincipalSelector', PrincipalSelector), true); From 1272ce09ddeb89fe96ac444d98409d35d916796e Mon Sep 17 00:00:00 2001 From: alansemenov Date: Wed, 4 Oct 2023 14:17:19 +0200 Subject: [PATCH 34/43] Avoid class renaming in the bundle #1847 --- tsup/static.ts | 16 +++------------- 1 file changed, 3 insertions(+), 13 deletions(-) diff --git a/tsup/static.ts b/tsup/static.ts index 342904d5e..6e1bb1d3c 100644 --- a/tsup/static.ts +++ b/tsup/static.ts @@ -21,16 +21,9 @@ export default function buildStaticConfig(): Options { 'app-users-bundle': 'src/main/resources/static/main.ts', 'crypto-worker': 'src/main/resources/static/worker/RSAKeysWorker.ts', }, - // esbuildOptions(options, context) { - // // options.banner = { - // // js: `const jQuery = window.$;` // jQuery UI Tabbable requires this - // // }; - // // options.external = [ - // // 'jquery' - // // ] - // // options.sourcemap = 'external'; // Shows the line in the transpiled code, not the source - // // options.sourcemap = 'both'; // // Shows the line in the transpiled code, not the source - // }, + esbuildOptions(options, context) { + options.keepNames = true; + }, esbuildPlugins: [ CopyWithHashPlugin({ context: 'node_modules', @@ -60,13 +53,10 @@ export default function buildStaticConfig(): Options { ], minify: false, - // minify: process.env.NODE_ENV !== 'development', - // minify: true, // ERROR: Causes app-users-bundle-L6FTUX7O.js:1 Uncaught TypeError: Cannot read properties of undefined (reading 'insertChild') noExternal: [ // Same as dependencies in package.json /@enonic\/lib-admin-ui.*/, 'hasher', - // 'jquery', // This will bundle jQuery into the bundle 'nanoid', 'owasp-password-strength-test', 'q' From cf1723f6e5624e7a354fd3af1fe6f4c7bc10b54e Mon Sep 17 00:00:00 2001 From: alansemenov Date: Wed, 4 Oct 2023 14:17:30 +0200 Subject: [PATCH 35/43] Cleanup --- .swcrc | 29 ------------- tsup/assets.ts | 25 ----------- tsup/server.ts | 106 +--------------------------------------------- tsup/test.ts | 97 +----------------------------------------- webpack.config.js | 80 ---------------------------------- 5 files changed, 3 insertions(+), 334 deletions(-) delete mode 100644 .swcrc delete mode 100644 webpack.config.js diff --git a/.swcrc b/.swcrc deleted file mode 100644 index 2a607fd8f..000000000 --- a/.swcrc +++ /dev/null @@ -1,29 +0,0 @@ -{ - "jsc": { - "parser": { - "syntax": "typescript", - "tsx": false, - "decorators": false, - "dynamicImport": true - }, - "transform": { - "legacyDecorator": true, - "decoratorMetadata": true - }, - "target": "es5", - "keepClassNames": true, - "loose": true - }, - "exclude": [ - ".*\\.d\\.ts$", - // "/lib/" // TODO: Why was this line here? - ], - "module": { - "type": "commonjs", - "strict": true, - "strictMode": true, - "lazy": false, - "noInterop": true - }, - "sourceMaps": "inline" -} diff --git a/tsup/assets.ts b/tsup/assets.ts index 2875d915a..a457b4ed9 100644 --- a/tsup/assets.ts +++ b/tsup/assets.ts @@ -1,11 +1,6 @@ import type { Options } from '.'; -// import { globalExternals } from "@fal-works/esbuild-plugin-global-externals"; -// import GlobalsPlugin from "esbuild-plugin-globals"; -import { defineConfig } from 'tsup'; -// const { externalGlobalPlugin } = require("esbuild-plugin-external-global"); import esbuildPluginExternalGlobal from 'esbuild-plugin-external-global'; -import { DIR_DST } from './constants'; export default function buildAssetConfig(): Options { @@ -20,31 +15,12 @@ export default function buildAssetConfig(): Options { options.banner = { js: `const jQuery = $;` // jQuery UI Tabbable requires this }; - // options.external = [ - // 'jquery' - // ] }, esbuildPlugins: [ - // GlobalsPlugin({ - // // 'jquery': 'jQuery', - // 'jquery': '$' - // }), - // globalExternals({ - // 'jquery': 'window.$' - // // 'jquery': 'jQuery' - // }) esbuildPluginExternalGlobal.externalGlobalPlugin({ - // 'react': 'window.React', - // 'react-dom': 'window.ReactDOM', - // 'jQuery': 'window.$' // It seems jquery is available as $ in the global scope 'jquery': 'window.$' }) ], - // external: [ - // // This will leave require('jquery') as is in the bundle - // // causes: Uncaught ReferenceError: require is not defined - // 'jquery' - // ], format: [ 'cjs' ], @@ -60,7 +36,6 @@ export default function buildAssetConfig(): Options { outDir: 'build/resources/main/assets', platform: 'browser', silent: ['QUIET', 'WARN'].includes(process.env.LOG_LEVEL_FROM_GRADLE||''), - // splitting: false, sourcemap: process.env.NODE_ENV === 'development', tsconfig: 'src/main/resources/assets/tsconfig.json', }; diff --git a/tsup/server.ts b/tsup/server.ts index 03e53c1e6..5e5a7a11e 100644 --- a/tsup/server.ts +++ b/tsup/server.ts @@ -1,15 +1,11 @@ import type { Options } from '.'; -// import { polyfillNode } from 'esbuild-plugin-polyfill-node'; import { globSync } from 'glob'; -// import { print } from 'q-i'; import { DIR_SRC, DIR_SRC_ASSETS, DIR_SRC_STATIC } from './constants'; -// import {addControllersInFolder} from './addControllersInFolder'; -// import {addRecursive} from './addRecursive'; export default function buildServerConfig(): Options { @@ -19,93 +15,16 @@ export default function buildServerConfig(): Options { globSync(`${DIR_SRC_STATIC}/**/*.ts`) ) }); - // const entry: string[] = []; - // addRecursive(`${DIR_SRC}/lib`, entry) - // addControllersInFolder(`${DIR_SRC}/admin/tools`, entry); - // addControllersInFolder(`${DIR_SRC}/services`, entry); - // print(entry); return { bundle: true, // Needed for @enonic/lib-admin-ui dts: false, // d.ts files are use useless at runtime entry, - // env: { - // BROWSER_SYNC_PORT: '3000', - // }, esbuildOptions(options, context) { - // options.alias = { - // 'alias': './src/main/resources/lib/filename.js' - // }; - - // Some node modules might need globalThis - // options.banner = { - // js: `const globalThis = (1, eval)('this');` // buffer polyfill needs this - // }; - - // If you have libs with chunks, use this to avoid collisions options.chunkNames = '_chunks/[name]-[hash]'; - options.mainFields = ['module', 'main']; }, - esbuildPlugins: [ - // Some node modules might need parts of Node polyfilled: - // polyfillNode({ - // globals: { - // buffer: false, - // process: false - // }, - // polyfills: { - // _stream_duplex: false, - // _stream_passthrough: false, - // _stream_readable: false, - // _stream_transform: false, - // _stream_writable: false, - // assert: false, - // 'assert/strict': false, - // async_hooks: false, - // buffer: false, - // child_process: false, - // cluster: false, - // console: false, - // constants: false, - // crypto: false, - // dgram: false, - // diagnostics_channel: false, - // dns: false, - // domain: false, - // events: false, - // fs: false, - // 'fs/promises': false, - // http: false, - // http2: false, - // https: false, - // module: false, - // net: false, - // os: false, - // path: false, - // perf_hooks: false, - // process: false, //"empty", - // punycode: false, - // querystring: false, - // readline: false, - // repl: false, - // stream: false, - // string_decoder: false, - // sys: false, - // timers: false, - // 'timers/promises': false, - // tls: false, - // tty: false, - // url: false, - // util: false, // true, - // v8: false, - // vm: false, - // wasi: false, - // worker_threads: false, - // zlib: false, - // } - // }) // ReferenceError: "navigator" is not defined - ], + esbuildPlugins: [], external: [ '/lib/cache', '/lib/enonic/static', @@ -123,27 +42,7 @@ export default function buildServerConfig(): Options { /^\/lib\/xp\//, ], format: 'cjs', - inject: [ - // Injects makes it possible to use some functionality in any file :) - // However it also makes every file larger, unless splitting: true - // If for some reason you cannot use code splitting, it is better - // to import a polyfill only in the entries that needs it. - // Code-js polyfills share code, so together they don't add the sum of all the polyfills. - // For example injecting both number/is-finite and is-integer only adds 60K, not 108K - - // Here are some things Nashorn doesn't support, comment them in to inject them: - // 'node_modules/core-js/stable/array/flat.js', // 69K (18K) minified - // 'node_modules/core-js/stable/array/includes.js', // 60K (15K) - // 'node_modules/core-js/stable/math/trunc.js', // 53K (14K) - // 'node_modules/core-js/stable/number/is-finite.js', // 54K (14K) - // 'node_modules/core-js/stable/number/is-integer.js', // 54K (14K) - // 'node_modules/core-js/stable/parse-float.js', // 59K (15K) - // 'node_modules/core-js/stable/reflect/index.js', // 88K (22K) - // 'node_modules/core-js/stable/string/pad-start.js', - - // TIP: I used this command to find sizes - // npm --silent run clean && npm --silent run build:server; ls -lh build/resources/main/empty.js; npm --silent run clean && npm --silent run build:server -- --minify; ls -lh build/resources/main/empty.js - ], + inject: [], minify: false, // Minifying server files makes debugging harder // TIP: Command to check if there are any bad requires left behind @@ -155,7 +54,6 @@ export default function buildServerConfig(): Options { shims: false, // https://tsup.egoist.dev/#inject-cjs-and-esm-shims splitting: false, // In order for tests to work - // splitting: true, sourcemap: false, target: 'es5', diff --git a/tsup/test.ts b/tsup/test.ts index 29687eaa5..9cca3ee1d 100644 --- a/tsup/test.ts +++ b/tsup/test.ts @@ -1,7 +1,5 @@ import type { Options } from '.'; -// import { polyfillNode } from 'esbuild-plugin-polyfill-node'; -// import { print } from 'q-i'; import { DIR_SRC_TEST } from './constants'; import {addRecursive} from './addRecursive'; @@ -9,120 +7,27 @@ import {addRecursive} from './addRecursive'; export default function buildServerConfig(): Options { const entry: string[] = []; addRecursive(DIR_SRC_TEST, entry); - // print(entry); return { bundle: true, dts: false, // d.ts files are use useless at runtime entry, - // env: { - // BROWSER_SYNC_PORT: '3000', - // }, esbuildOptions(options, context) { - // options.alias = { - // 'alias': './src/main/resources/lib/filename.js' - // }; - - // Some node modules might need globalThis - // options.banner = { - // js: `const globalThis = (1, eval)('this');` // buffer polyfill needs this - // }; - - // If you have libs with chunks, use this to avoid collisions options.chunkNames = '_chunks/[name]-[hash]'; options.mainFields = ['module', 'main']; options.outbase = DIR_SRC_TEST; }, - esbuildPlugins: [ - // Some node modules might need parts of Node polyfilled: - // polyfillNode({ - // globals: { - // buffer: false, - // process: false - // }, - // polyfills: { - // _stream_duplex: false, - // _stream_passthrough: false, - // _stream_readable: false, - // _stream_transform: false, - // _stream_writable: false, - // assert: false, - // 'assert/strict': false, - // async_hooks: false, - // buffer: false, - // child_process: false, - // cluster: false, - // console: false, - // constants: false, - // crypto: false, - // dgram: false, - // diagnostics_channel: false, - // dns: false, - // domain: false, - // events: false, - // fs: false, - // 'fs/promises': false, - // http: false, - // http2: false, - // https: false, - // module: false, - // net: false, - // os: false, - // path: false, - // perf_hooks: false, - // process: false, //"empty", - // punycode: false, - // querystring: false, - // readline: false, - // repl: false, - // stream: false, - // string_decoder: false, - // sys: false, - // timers: false, - // 'timers/promises': false, - // tls: false, - // tty: false, - // url: false, - // util: false, // true, - // v8: false, - // vm: false, - // wasi: false, - // worker_threads: false, - // zlib: false, - // } - // }) // ReferenceError: "navigator" is not defined - ], + esbuildPlugins: [], external: [ /^\//, ], format: 'cjs', inject: [ - // Injects makes it possible to use some functionality in any file :) - // However it also makes every file larger, unless splitting: true - // If for some reason you cannot use code splitting, it is better - // to import a polyfill only in the entries that needs it. - // Code-js polyfills share code, so together they don't add the sum of all the polyfills. - // For example injecting both number/is-finite and is-integer only adds 60K, not 108K - - // Here are some things Nashorn doesn't support, comment them in to inject them: - // 'node_modules/core-js/stable/array/flat.js', // 69K (18K) minified - // 'node_modules/core-js/stable/array/includes.js', // 60K (15K) - // 'node_modules/core-js/stable/math/trunc.js', // 53K (14K) - // 'node_modules/core-js/stable/number/is-finite.js', // 54K (14K) - // 'node_modules/core-js/stable/number/is-integer.js', // 54K (14K) - // 'node_modules/core-js/stable/parse-float.js', // 59K (15K) - // 'node_modules/core-js/stable/reflect/index.js', // 88K (22K) - // 'node_modules/core-js/stable/string/pad-start.js', - - // TIP: I used this command to find sizes - // npm --silent run clean && npm --silent run build:server; ls -lh build/resources/main/empty.js; npm --silent run clean && npm --silent run build:server -- --minify; ls -lh build/resources/main/empty.js ], minify: false, // Minifying server files makes debugging harder - // TIP: Command to check if there are any bad requires left behind - // grep -r 'require("' build/resources/main | grep -v 'require("/'|grep -v chunk noExternal: [], platform: 'neutral', diff --git a/webpack.config.js b/webpack.config.js deleted file mode 100644 index e3a1db607..000000000 --- a/webpack.config.js +++ /dev/null @@ -1,80 +0,0 @@ -const MiniCssExtractPlugin = require("mini-css-extract-plugin"); -const CircularDependencyPlugin = require('circular-dependency-plugin'); -const TerserPlugin = require('terser-webpack-plugin'); -const path = require('path'); -const fs = require('fs'); - -const swcConfig = JSON.parse(fs.readFileSync('./.swcrc')); - -const isProd = process.env.NODE_ENV === 'production'; - -module.exports = { - context: path.join(__dirname, '/src/main/resources/assets'), - entry: { - 'js/bundle': './js/main.ts', - 'js/crypto-worker': './js/worker/RSAKeysWorker.ts', - 'styles/main': './styles/main.less', - }, - output: { - path: path.join(__dirname, '/build/resources/main/assets'), - filename: './[name].js', - assetModuleFilename: './[file]' - }, - resolve: { - extensions: ['.ts', '.js', '.less', '.css'] - }, - module: { - rules: [ - { - test: /\.js$/, - enforce: 'pre', - use: ['source-map-loader'], - }, - { - test: /\.ts$/, - use: [ - { - loader: 'swc-loader', - options: { - ...swcConfig, - sourceMaps: isProd ? false : 'inline', - inlineSourcesContent: !isProd, - }, - }, - ], - }, - { - test: /\.less$/, - use: [ - {loader: MiniCssExtractPlugin.loader, options: {publicPath: '../'}}, - {loader: 'css-loader', options: {sourceMap: !isProd, importLoaders: 1}}, - {loader: 'postcss-loader', options: {sourceMap: !isProd}}, - {loader: 'less-loader', options: {sourceMap: !isProd}}, - ] - } - ] - }, - optimization: { - minimizer: [ - new TerserPlugin({ - terserOptions: { - keep_classnames: true, - keep_fnames: true - } - }) - ], - }, - plugins: [ - new MiniCssExtractPlugin({ - filename: '[name].css', - chunkFilename: './styles/[id].css' - }), - new CircularDependencyPlugin({ - exclude: /a\.js|node_modules/, - failOnError: true - }), - ], - mode: isProd ? 'production' : 'development', - devtool: isProd ? false : 'source-map', - performance: {hints: false} -}; From f85c67ec0b59356216ad14719ee263bd2429698e Mon Sep 17 00:00:00 2001 From: alansemenov Date: Thu, 5 Oct 2023 16:57:24 +0200 Subject: [PATCH 36/43] Updated package.json --- package.json | 8 +------- 1 file changed, 1 insertion(+), 7 deletions(-) diff --git a/package.json b/package.json index e05503ae9..156af92ed 100644 --- a/package.json +++ b/package.json @@ -49,7 +49,6 @@ "@typescript-eslint/parser": "^6.7.5", "autoprefixer": "^10.4.15", "browserslist-config-enonic": "^1.0.7", - "circular-dependency-plugin": "^5.2.2", "concurrently": "^8.2.1", "css-loader": "^6.8.1", "cssnano": "^6.0.1", @@ -62,21 +61,16 @@ "glob": "^10.3.4", "less": "^4.2.0", "less-loader": "^11.1.3", - "mini-css-extract-plugin": "^2.7.6", "npm-run-all": "^4.1.5", "postcss-cli": "^10.1.0", "postcss-loader": "^7.3.3", "postcss-normalize": "^10.0.1", "postcss-sort-media-queries": "^5.2.0", "postcss-url": "^10.1.3", - "q-i": "^2.0.1", "source-map-loader": "^4.0.1", "swc-loader": "^0.2.3", - "terser-webpack-plugin": "^5.3.9", "tsup": "^7.2.0", - "typescript": "^5.2.2", - "webpack": "^5.89.0", - "webpack-cli": "^5.1.4" + "typescript": "^5.2.2" }, "browserslist": [ "extends browserslist-config-enonic" From a2ce321449dc474271f51f1be7c020dc04af69cf Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Fri, 6 Oct 2023 12:46:23 +0200 Subject: [PATCH 37/43] jquery-ui-dist --- package.json | 6 ++---- src/main/resources/admin/tools/main/main.ts | 2 +- 2 files changed, 3 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 156af92ed..f24e32aeb 100644 --- a/package.json +++ b/package.json @@ -24,6 +24,7 @@ "@enonic/lib-admin-ui": "file:./.xp/dev/lib-admin-ui", "hasher": "^1.2.0", "jquery": "^3.7.1", + "jquery-ui-dist": "^1.13.2", "nanoid": "^5.0.2", "owasp-password-strength-test": "^1.3.0", "q": "^1.5.1" @@ -39,7 +40,6 @@ "@enonic/esbuild-plugin-copy-with-hash": "^0.0.1", "@enonic/eslint-config": "^1.2.0", "@enonic/tsup-plugin-manifest": "^0.0.1", - "@fal-works/esbuild-plugin-global-externals": "^2.1.2", "@swc/core": "^1.3.93", "@types/hasher": "^0.0.33", "@types/nanoid": "^3.0.0", @@ -52,12 +52,10 @@ "concurrently": "^8.2.1", "css-loader": "^6.8.1", "cssnano": "^6.0.1", - "del-cli": "^5.1.0", "enonic-admin-artifacts": "^1.8.5", - "eslint": "^8.51.0", "esbuild-plugin-external-global": "^1.0.1", "esbuild-plugin-globals": "^0.2.0", - "eslint": "^8.50.0", + "eslint": "^8.51.0", "glob": "^10.3.4", "less": "^4.2.0", "less-loader": "^11.1.3", diff --git a/src/main/resources/admin/tools/main/main.ts b/src/main/resources/admin/tools/main/main.ts index f5d0bbd0d..75f5aa1e4 100644 --- a/src/main/resources/admin/tools/main/main.ts +++ b/src/main/resources/admin/tools/main/main.ts @@ -52,7 +52,7 @@ function get(_request: Request): Response { }, TOOL_NAME), jqueryUiUrl: getAdminUrl({ manifestPath: FILEPATH_MANIFEST_NODE_MODULES, - path: 'jquery-ui/dist/jquery-ui.min.js', + path: 'jquery-ui-dist/jquery-ui.min.js', }, TOOL_NAME), launcherPath: getLauncherPath(), }; From bb6ee4cb9999024e7ce4656f0aa1f13928bc0e41 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Mon, 9 Oct 2023 09:52:23 +0200 Subject: [PATCH 38/43] jquery-ui-dist --- tsup/static.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tsup/static.ts b/tsup/static.ts index 6e1bb1d3c..080a8c3a3 100644 --- a/tsup/static.ts +++ b/tsup/static.ts @@ -30,7 +30,7 @@ export default function buildStaticConfig(): Options { manifest: `node_modules-manifest.json`, patterns: [ 'jquery/dist/*.*', - 'jquery-ui/dist/*.*', + 'jquery-ui-dist/*.*', ] }), TsupPluginManifest({ From a7899bd019264b556abce4ef2c17c5cd73d856e1 Mon Sep 17 00:00:00 2001 From: alansemenov Date: Mon, 16 Oct 2023 13:50:13 +0200 Subject: [PATCH 39/43] Updated package.json --- package-lock.json | 13427 ++++++++++++++++++++++++++++---------------- 1 file changed, 8565 insertions(+), 4862 deletions(-) diff --git a/package-lock.json b/package-lock.json index 2d7b39ba4..5004e2552 100644 --- a/package-lock.json +++ b/package-lock.json @@ -12,12 +12,22 @@ "@enonic/lib-admin-ui": "file:./.xp/dev/lib-admin-ui", "hasher": "^1.2.0", "jquery": "^3.7.1", + "jquery-ui-dist": "^1.13.2", "nanoid": "^5.0.2", "owasp-password-strength-test": "^1.3.0", "q": "^1.5.1" }, "devDependencies": { + "@enonic-types/global": "^7.13.2", + "@enonic-types/lib-admin": "^7.13.2", + "@enonic-types/lib-auth": "^7.13.2", + "@enonic-types/lib-i18n": "^7.13.2", + "@enonic-types/lib-io": "^7.13.2", + "@enonic-types/lib-node": "^7.13.2", + "@enonic-types/lib-portal": "^7.13.2", + "@enonic/esbuild-plugin-copy-with-hash": "^0.0.1", "@enonic/eslint-config": "^1.2.0", + "@enonic/tsup-plugin-manifest": "^0.0.1", "@swc/core": "^1.3.93", "@types/hasher": "^0.0.33", "@types/nanoid": "^3.0.0", @@ -25,20 +35,28 @@ "@types/q": "^1.5.6", "@typescript-eslint/eslint-plugin": "^6.7.5", "@typescript-eslint/parser": "^6.7.5", + "autoprefixer": "^10.4.15", "browserslist-config-enonic": "^1.0.7", - "circular-dependency-plugin": "^5.2.2", + "concurrently": "^8.2.1", + "css-loader": "^6.8.1", "cssnano": "^6.0.1", "enonic-admin-artifacts": "^1.8.5", + "esbuild-plugin-external-global": "^1.0.1", + "esbuild-plugin-globals": "^0.2.0", "eslint": "^8.51.0", - "mini-css-extract-plugin": "^2.7.6", + "glob": "^10.3.4", + "less": "^4.2.0", + "less-loader": "^11.1.3", "npm-run-all": "^4.1.5", + "postcss-cli": "^10.1.0", "postcss-loader": "^7.3.3", + "postcss-normalize": "^10.0.1", + "postcss-sort-media-queries": "^5.2.0", + "postcss-url": "^10.1.3", "source-map-loader": "^4.0.1", "swc-loader": "^0.2.3", - "terser-webpack-plugin": "^5.3.9", - "typescript": "^5.2.2", - "webpack": "^5.89.0", - "webpack-cli": "^5.1.4" + "tsup": "^7.2.0", + "typescript": "^5.2.2" }, "engines": { "node": ">= 18.17.1", @@ -47,7 +65,7 @@ }, ".xp/dev/lib-admin-ui": { "name": "@enonic/lib-admin-ui", - "version": "4.9.0", + "version": "4.8.0", "license": "GPL-3.0", "dependencies": { "@types/dompurify": "^3.0.3", @@ -55,9 +73,7 @@ "@types/slickgrid": "^2.1.36", "dompurify": "^3.0.6", "fine-uploader": "^5.16.2", - "jquery": "^3.7.1", "jquery-simulate": "^1.0.2", - "jquery-ui": "^1.13.2", "mousetrap": "^1.6.5", "q": "^1.5.1", "slickgrid": "^4.0.1", @@ -66,14 +82,14 @@ "devDependencies": { "@enonic/eslint-config": "^1.2.0", "@swc/cli": "^0.1.62", - "@swc/core": "1.3.93", - "@types/jquery": "^3.5.22", + "@swc/core": "1.3.91", + "@types/jquery": "^3.5.20", "@types/jqueryui": "^1.12.18", "@types/q": "^1.5.6", "@types/semver": "^7.5.3", - "@types/validator": "^13.11.3", - "@typescript-eslint/eslint-plugin": "^6.8.0", - "@typescript-eslint/parser": "^6.8.0", + "@types/validator": "^13.11.2", + "@typescript-eslint/eslint-plugin": "^6.7.4", + "@typescript-eslint/parser": "^6.7.4", "autoprefixer": "^10.4.16", "browserslist": "^4.22.1", "browserslist-config-enonic": "^1.0.8", @@ -81,10 +97,11 @@ "copy-webpack-plugin": "^11.0.0", "css-loader": "^6.8.1", "cssnano": "^6.0.1", - "enonic-admin-artifacts": "^1.8.5", + "enonic-admin-artifacts": "^1.8.3", "error-logger-webpack-plugin": "^1.1.1", - "eslint": "^8.51.0", + "eslint": "^8.50.0", "glob": "^10.3.10", + "jquery-ui": "^1.13.2", "less": "^4.2.0", "less-loader": "^11.1.3", "mini-css-extract-plugin": "^2.7.6", @@ -94,9 +111,9 @@ "postcss-sort-media-queries": "^5.2.0", "swc-loader": "^0.2.3", "terser-webpack-plugin": "^5.3.9", - "ts-loader": "^9.5.0", + "ts-loader": "^9.4.4", "typescript": "^5.2.2", - "webpack": "^5.89.0", + "webpack": "^5.88.2", "webpack-cli": "^5.1.4" }, "engines": { @@ -104,53 +121,47 @@ "npm": ">= 9.6.7" }, "peerDependencies": { + "jquery": "^3.7.1", + "jquery-ui-dist": "^1.13.2", "postcss": "^8.2.2" } }, - ".xp/dev/lib-admin-ui/node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - ".xp/dev/lib-admin-ui/node_modules/glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", + ".xp/dev/lib-admin-ui/node_modules/@swc/core": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.91.tgz", + "integrity": "sha512-r950d0fdlZ8qbSDyvApn3HyCojiZE8xpgJzQvypeMi32dalYwugdJKWyLB55JIGMRGJ8+lmVvY4MPGkSR3kXgA==", "dev": true, + "hasInstallScript": true, "dependencies": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "@swc/counter": "^0.1.1", + "@swc/types": "^0.1.5" }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - ".xp/dev/lib-admin-ui/node_modules/minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" + "type": "opencollective", + "url": "https://opencollective.com/swc" }, - "engines": { - "node": ">=16 || 14 >=14.17" + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.3.91", + "@swc/core-darwin-x64": "1.3.91", + "@swc/core-linux-arm-gnueabihf": "1.3.91", + "@swc/core-linux-arm64-gnu": "1.3.91", + "@swc/core-linux-arm64-musl": "1.3.91", + "@swc/core-linux-x64-gnu": "1.3.91", + "@swc/core-linux-x64-musl": "1.3.91", + "@swc/core-win32-arm64-msvc": "1.3.91", + "@swc/core-win32-ia32-msvc": "1.3.91", + "@swc/core-win32-x64-msvc": "1.3.91" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "peerDependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } } }, "node_modules/@aashutoshrathi/word-wrap": { @@ -197,6 +208,58 @@ "node": ">=6.9.0" } }, + "node_modules/@babel/runtime": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", + "dev": true, + "dependencies": { + "regenerator-runtime": "^0.14.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@cjs-exporter/globby": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/@cjs-exporter/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-rxSVbUhNmIYTZKzrtb6cJIUfFk0PDxzeR4+dzi8edKYmmbqRBO/k7N+tW///QmtY6OznemXiLMSZ20E6DHegxQ==", + "dev": true, + "dependencies": { + "globby": "13.1.3" + } + }, + "node_modules/@cjs-exporter/globby/node_modules/globby": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@cjs-exporter/globby/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, "node_modules/@csstools/normalize.css": { "version": "12.0.0", "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz", @@ -212,6 +275,80 @@ "node": ">=10.0.0" } }, + "node_modules/@enonic-types/core": { + "version": "7.13.3", + "resolved": "https://registry.npmjs.org/@enonic-types/core/-/core-7.13.3.tgz", + "integrity": "sha512-wi4mNgs+6Pyhs/Zik0NVmPecNjlSR3JvgzHeglGReDVhiEzwQkMvFKx83rO/0HR5+WBX8b4YVlms8i5020E1HQ==", + "dev": true + }, + "node_modules/@enonic-types/global": { + "version": "7.13.3", + "resolved": "https://registry.npmjs.org/@enonic-types/global/-/global-7.13.3.tgz", + "integrity": "sha512-V2etTglryEW+6i/WP8b64f6ZospVRme5Ku+1IW+biRsXpZqHbS3VGj0BlEeAnaGmBNS1WRVqHN0cGXGH29VRvw==", + "dev": true + }, + "node_modules/@enonic-types/lib-admin": { + "version": "7.13.3", + "resolved": "https://registry.npmjs.org/@enonic-types/lib-admin/-/lib-admin-7.13.3.tgz", + "integrity": "sha512-UA62DOCN5x7Jj4F8MxDpa6l+7GfkZI0O59xvoT5BfJF8JGoKWbhaUadRZsMJiaDhKkQUMjcPLF4bD3FZVGkuPA==", + "dev": true + }, + "node_modules/@enonic-types/lib-auth": { + "version": "7.13.3", + "resolved": "https://registry.npmjs.org/@enonic-types/lib-auth/-/lib-auth-7.13.3.tgz", + "integrity": "sha512-HEme70wCpzqpfWGi2DSMffq2KDKI+u8QJLAeu1k+g49RFWwYcdtC0AXdvu0GN4dzIW/2ITs72JFLW/fAMXM+tw==", + "dev": true, + "dependencies": { + "@enonic-types/core": "7.13.3" + } + }, + "node_modules/@enonic-types/lib-i18n": { + "version": "7.13.3", + "resolved": "https://registry.npmjs.org/@enonic-types/lib-i18n/-/lib-i18n-7.13.3.tgz", + "integrity": "sha512-7/eHD0PWuacER+/XbJM2WbL010NbH6gEJLxsg8LKmOXg1Dz+T6KQlSTVK+nyG2SoGt+8kJjFZVNXLirQezbaPg==", + "dev": true + }, + "node_modules/@enonic-types/lib-io": { + "version": "7.13.3", + "resolved": "https://registry.npmjs.org/@enonic-types/lib-io/-/lib-io-7.13.3.tgz", + "integrity": "sha512-JjFwV1RH44QrSOMPsouTfEbh3eecpd+mWhE6FNj+gdwNV8JkKLqGZuXEYrgB+SLC/aN+Qt7rIa7fog/tTwP8VQ==", + "dev": true, + "dependencies": { + "@enonic-types/core": "7.13.3" + } + }, + "node_modules/@enonic-types/lib-node": { + "version": "7.13.3", + "resolved": "https://registry.npmjs.org/@enonic-types/lib-node/-/lib-node-7.13.3.tgz", + "integrity": "sha512-uyT5S2bbHrWPYOejVyOSaCDyc9QVW/4sG1A9jXVj57KEN5ZvokkRUPz2RSXHQLgg7wCT+Vl8aqDWUPeyUzpw1g==", + "dev": true, + "dependencies": { + "@enonic-types/core": "7.13.3" + } + }, + "node_modules/@enonic-types/lib-portal": { + "version": "7.13.3", + "resolved": "https://registry.npmjs.org/@enonic-types/lib-portal/-/lib-portal-7.13.3.tgz", + "integrity": "sha512-Bhy8po+HA6HQsI709Qcxg0i1B7p46IJMO3WZB4YdVDeO6dC56yV1cnsFcuV9PSPSPO51ZOZ7O3zc5SuJ7B5w/g==", + "dev": true, + "dependencies": { + "@enonic-types/core": "7.13.3" + } + }, + "node_modules/@enonic/esbuild-plugin-copy-with-hash": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@enonic/esbuild-plugin-copy-with-hash/-/esbuild-plugin-copy-with-hash-0.0.1.tgz", + "integrity": "sha512-HUEF1znqgEJyjd9TUsIZeIo9VL59xgaIpwoHeICAtWLmcUIQ2OBjPw8udBepM/mrI2jf0tVDT47IB+85bqjVvw==", + "dev": true, + "dependencies": { + "@cjs-exporter/globby": "^13.1.3", + "colorette": "^2.0.20", + "xxh3-ts": "^1.0.6" + }, + "peerDependencies": { + "esbuild": "~0" + } + }, "node_modules/@enonic/eslint-config": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@enonic/eslint-config/-/eslint-config-1.2.0.tgz", @@ -228,1453 +365,3449 @@ "resolved": ".xp/dev/lib-admin-ui", "link": true }, - "node_modules/@eslint-community/eslint-utils": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", - "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "node_modules/@enonic/tsup-plugin-manifest": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@enonic/tsup-plugin-manifest/-/tsup-plugin-manifest-0.0.1.tgz", + "integrity": "sha512-AL3X7xm6S8iE6bDbFP4Fnb9pOUembe/YpiAVw5/Dfj494ckiT42eeRb3HEFEFyiWrRjqP5weGb18t+sqL+GZfw==", "dev": true, "dependencies": { - "eslint-visitor-keys": "^3.3.0" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "colorette": "^2.0.20" }, "peerDependencies": { - "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + "esbuild": "~0" } }, - "node_modules/@eslint-community/regexpp": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", - "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", + "node_modules/@esbuild/android-arm": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.4.tgz", + "integrity": "sha512-uBIbiYMeSsy2U0XQoOGVVcpIktjLMEKa7ryz2RLr7L/vTnANNEsPVAh4xOv7ondGz6ac1zVb0F8Jx20rQikffQ==", + "cpu": [ + "arm" + ], "dev": true, + "optional": true, + "os": [ + "android" + ], + "peer": true, "engines": { - "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + "node": ">=12" } }, - "node_modules/@eslint/eslintrc": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", - "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", + "node_modules/@esbuild/android-arm64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.4.tgz", + "integrity": "sha512-mRsi2vJsk4Bx/AFsNBqOH2fqedxn5L/moT58xgg51DjX1la64Z3Npicut2VbhvDFO26qjWtPMsVxCd80YTFVeg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "ajv": "^6.12.4", - "debug": "^4.3.2", - "espree": "^9.6.0", - "globals": "^13.19.0", - "ignore": "^5.2.0", - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "minimatch": "^3.1.2", - "strip-json-comments": "^3.1.1" - }, + "optional": true, + "os": [ + "android" + ], + "peer": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=12" } }, - "node_modules/@eslint/eslintrc/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@esbuild/android-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.4.tgz", + "integrity": "sha512-4iPufZ1TMOD3oBlGFqHXBpa3KFT46aLl6Vy7gwed0ZSYgHaZ/mihbYb4t7Z9etjkC9Al3ZYIoOaHrU60gcMy7g==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "ms": "2.1.2" - }, + "optional": true, + "os": [ + "android" + ], + "peer": true, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=12" } }, - "node_modules/@eslint/eslintrc/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@eslint/js": { - "version": "8.51.0", - "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", - "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", + "node_modules/@esbuild/darwin-arm64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.4.tgz", + "integrity": "sha512-Lviw8EzxsVQKpbS+rSt6/6zjn9ashUZ7Tbuvc2YENgRl0yZTktGlachZ9KMJUsVjZEGFVu336kl5lBgDN6PmpA==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "peer": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">=12" } }, - "node_modules/@humanwhocodes/config-array": { - "version": "0.11.11", - "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", - "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", + "node_modules/@esbuild/darwin-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.4.tgz", + "integrity": "sha512-YHbSFlLgDwglFn0lAO3Zsdrife9jcQXQhgRp77YiTDja23FrC2uwnhXMNkAucthsf+Psr7sTwYEryxz6FPAVqw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@humanwhocodes/object-schema": "^1.2.1", - "debug": "^4.1.1", - "minimatch": "^3.0.5" - }, + "optional": true, + "os": [ + "darwin" + ], + "peer": true, "engines": { - "node": ">=10.10.0" + "node": ">=12" } }, - "node_modules/@humanwhocodes/config-array/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.4.tgz", + "integrity": "sha512-vz59ijyrTG22Hshaj620e5yhs2dU1WJy723ofc+KUgxVCM6zxQESmWdMuVmUzxtGqtj5heHyB44PjV/HKsEmuQ==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "ms": "2.1.2" - }, + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": ">=12" } }, - "node_modules/@humanwhocodes/config-array/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@humanwhocodes/module-importer": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", - "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "node_modules/@esbuild/freebsd-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.4.tgz", + "integrity": "sha512-3sRbQ6W5kAiVQRBWREGJNd1YE7OgzS0AmOGjDmX/qZZecq8NFlQsQH0IfXjjmD0XtUYqr64e0EKNFjMUlPL3Cw==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "freebsd" + ], + "peer": true, "engines": { - "node": ">=12.22" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/nzakas" + "node": ">=12" } }, - "node_modules/@humanwhocodes/object-schema": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", - "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", - "dev": true - }, - "node_modules/@isaacs/cliui": { - "version": "8.0.2", - "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", - "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", + "node_modules/@esbuild/linux-arm": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.4.tgz", + "integrity": "sha512-z/4ArqOo9EImzTi4b6Vq+pthLnepFzJ92BnofU1jgNlcVb+UqynVFdoXMCFreTK7FdhqAzH0vmdwW5373Hm9pg==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "string-width": "^5.1.2", - "string-width-cjs": "npm:string-width@^4.2.0", - "strip-ansi": "^7.0.1", - "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", - "wrap-ansi": "^8.1.0", - "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" - }, + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { "node": ">=12" } }, - "node_modules/@isaacs/cliui/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/@esbuild/linux-arm64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.4.tgz", + "integrity": "sha512-ZWmWORaPbsPwmyu7eIEATFlaqm0QGt+joRE9sKcnVUG3oBbr/KYdNE2TnkzdQwX6EDRdg/x8Q4EZQTXoClUqqA==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@isaacs/cliui/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/@esbuild/linux-ia32": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.4.tgz", + "integrity": "sha512-EGc4vYM7i1GRUIMqRZNCTzJh25MHePYsnQfKDexD8uPTCm9mK56NIL04LUfX2aaJ+C9vyEp2fJ7jbqFEYgO9lQ==", + "cpu": [ + "ia32" + ], "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", - "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", + "node_modules/@esbuild/linux-loong64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.4.tgz", + "integrity": "sha512-WVhIKO26kmm8lPmNrUikxSpXcgd6HDog0cx12BUfA2PkmURHSgx9G6vA19lrlQOMw+UjMZ+l3PpbtzffCxFDRg==", + "cpu": [ + "loong64" + ], "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.0.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.9" - }, + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", - "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", + "node_modules/@esbuild/linux-mips64el": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.4.tgz", + "integrity": "sha512-keYY+Hlj5w86hNp5JJPuZNbvW4jql7c1eXdBUHIJGTeN/+0QFutU3GrS+c27L+NTmzi73yhtojHk+lr2+502Mw==", + "cpu": [ + "mips64el" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/@jridgewell/set-array": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", - "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", + "node_modules/@esbuild/linux-ppc64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.4.tgz", + "integrity": "sha512-tQ92n0WMXyEsCH4m32S21fND8VxNiVazUbU4IUGVXQpWiaAxOBvtOtbEt3cXIV3GEBydYsY8pyeRMJx9kn3rvw==", + "cpu": [ + "ppc64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": ">=6.0.0" + "node": ">=12" } }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", - "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", + "node_modules/@esbuild/linux-riscv64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.4.tgz", + "integrity": "sha512-tRRBey6fG9tqGH6V75xH3lFPpj9E8BH+N+zjSUCnFOX93kEzqS0WdyJHkta/mmJHn7MBaa++9P4ARiU4ykjhig==", + "cpu": [ + "riscv64" + ], "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.0", - "@jridgewell/trace-mapping": "^0.3.9" + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" } }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.14", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", - "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.18", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", - "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", + "node_modules/@esbuild/linux-s390x": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.4.tgz", + "integrity": "sha512-152aLpQqKZYhThiJ+uAM4PcuLCAOxDsCekIbnGzPKVBRUDlgaaAfaUl5NYkB1hgY6WN4sPkejxKlANgVcGl9Qg==", + "cpu": [ + "s390x" + ], "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "3.1.0", - "@jridgewell/sourcemap-codec": "1.4.14" + "optional": true, + "os": [ + "linux" + ], + "peer": true, + "engines": { + "node": ">=12" } }, - "node_modules/@mole-inc/bin-wrapper": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@mole-inc/bin-wrapper/-/bin-wrapper-8.0.1.tgz", - "integrity": "sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==", + "node_modules/@esbuild/linux-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.4.tgz", + "integrity": "sha512-Mi4aNA3rz1BNFtB7aGadMD0MavmzuuXNTaYL6/uiYIs08U7YMPETpgNn5oue3ICr+inKwItOwSsJDYkrE9ekVg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "bin-check": "^4.1.0", - "bin-version-check": "^5.0.0", - "content-disposition": "^0.5.4", - "ext-name": "^5.0.0", - "file-type": "^17.1.6", - "filenamify": "^5.0.2", - "got": "^11.8.5", - "os-filter-obj": "^2.0.0" - }, + "optional": true, + "os": [ + "linux" + ], + "peer": true, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "node": ">=12" } }, - "node_modules/@nodelib/fs.scandir": { - "version": "2.1.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", - "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "node_modules/@esbuild/netbsd-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.4.tgz", + "integrity": "sha512-9+Wxx1i5N/CYo505CTT7T+ix4lVzEdz0uCoYGxM5JDVlP2YdDC1Bdz+Khv6IbqmisT0Si928eAxbmGkcbiuM/A==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@nodelib/fs.stat": "2.0.5", - "run-parallel": "^1.1.9" - }, + "optional": true, + "os": [ + "netbsd" + ], + "peer": true, "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/@nodelib/fs.stat": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", - "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "node_modules/@esbuild/openbsd-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.4.tgz", + "integrity": "sha512-MFsHleM5/rWRW9EivFssop+OulYVUoVcqkyOkjiynKBCGBj9Lihl7kh9IzrreDyXa4sNkquei5/DTP4uCk25xw==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "openbsd" + ], + "peer": true, "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/@nodelib/fs.walk": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", - "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "node_modules/@esbuild/sunos-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.4.tgz", + "integrity": "sha512-6Xq8SpK46yLvrGxjp6HftkDwPP49puU4OF0hEL4dTxqCbfx09LyrbUj/D7tmIRMj5D5FCUPksBbxyQhp8tmHzw==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@nodelib/fs.scandir": "2.1.5", - "fastq": "^1.6.0" - }, + "optional": true, + "os": [ + "sunos" + ], + "peer": true, "engines": { - "node": ">= 8" + "node": ">=12" } }, - "node_modules/@pkgjs/parseargs": { - "version": "0.11.0", - "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", - "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "node_modules/@esbuild/win32-arm64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.4.tgz", + "integrity": "sha512-PkIl7Jq4mP6ke7QKwyg4fD4Xvn8PXisagV/+HntWoDEdmerB2LTukRZg728Yd1Fj+LuEX75t/hKXE2Ppk8Hh1w==", + "cpu": [ + "arm64" + ], "dev": true, "optional": true, + "os": [ + "win32" + ], + "peer": true, "engines": { - "node": ">=14" + "node": ">=12" } }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", + "node_modules/@esbuild/win32-ia32": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.4.tgz", + "integrity": "sha512-ga676Hnvw7/ycdKB53qPusvsKdwrWzEyJ+AtItHGoARszIqvjffTwaaW3b2L6l90i7MO9i+dlAW415INuRhSGg==", + "cpu": [ + "ia32" + ], "dev": true, + "optional": true, + "os": [ + "win32" + ], + "peer": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" + "node": ">=12" } }, - "node_modules/@swc/cli": { - "version": "0.1.62", - "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.1.62.tgz", - "integrity": "sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==", - "dev": true, + "node_modules/@esbuild/win32-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.4.tgz", + "integrity": "sha512-HP0GDNla1T3ZL8Ko/SHAS2GgtjOg+VmWnnYLhuTksr++EnduYB0f3Y2LzHsUwb2iQ13JGoY6G3R8h6Du/WG6uA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "peer": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, "dependencies": { - "@mole-inc/bin-wrapper": "^8.0.1", - "commander": "^7.1.0", - "fast-glob": "^3.2.5", - "semver": "^7.3.8", - "slash": "3.0.0", - "source-map": "^0.7.3" - }, - "bin": { - "spack": "bin/spack.js", - "swc": "bin/swc.js", - "swcx": "bin/swcx.js" + "eslint-visitor-keys": "^3.3.0" }, "engines": { - "node": ">= 12.13" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "peerDependencies": { - "@swc/core": "^1.2.66", - "chokidar": "^3.5.1" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" } }, - "node_modules/@swc/cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "node_modules/@eslint-community/regexpp": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.6.2.tgz", + "integrity": "sha512-pPTNuaAG3QMH+buKyBIGJs3g/S5y0caxw0ygM3YyE6yJFySwiGGSzA+mM3KJ8QQvzeLh3blwgSonkFjgQdxzMw==", "dev": true, "engines": { - "node": ">= 10" + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" } }, - "node_modules/@swc/cli/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "node_modules/@eslint/eslintrc": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.2.tgz", + "integrity": "sha512-+wvgpDsrB1YqAMdEUCcnTlpfVBH7Vqn6A/NT3D8WVXFIaKMlErPIZT3oCIAVCOtarRpMtelZLqJeU3t7WY6X6g==", "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, "engines": { - "node": ">= 8" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/@swc/core": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.93.tgz", - "integrity": "sha512-690GRr1wUGmGYZHk7fUduX/JUwViMF2o74mnZYIWEcJaCcd9MQfkhsxPBtjeg6tF+h266/Cf3RPYhsFBzzxXcA==", + "node_modules/@eslint/eslintrc/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "hasInstallScript": true, "dependencies": { - "@swc/counter": "^0.1.1", - "@swc/types": "^0.1.5" + "ms": "2.1.2" }, "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/swc" - }, - "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.93", - "@swc/core-darwin-x64": "1.3.93", - "@swc/core-linux-arm-gnueabihf": "1.3.93", - "@swc/core-linux-arm64-gnu": "1.3.93", - "@swc/core-linux-arm64-musl": "1.3.93", - "@swc/core-linux-x64-gnu": "1.3.93", - "@swc/core-linux-x64-musl": "1.3.93", - "@swc/core-win32-arm64-msvc": "1.3.93", - "@swc/core-win32-ia32-msvc": "1.3.93", - "@swc/core-win32-x64-msvc": "1.3.93" - }, - "peerDependencies": { - "@swc/helpers": "^0.5.0" + "node": ">=6.0" }, "peerDependenciesMeta": { - "@swc/helpers": { + "supports-color": { "optional": true } } }, - "node_modules/@swc/core/node_modules/@swc/core-darwin-arm64": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.93.tgz", - "integrity": "sha512-gEKgk7FVIgltnIfDO6GntyuQBBlAYg5imHpRgLxB1zSI27ijVVkksc6QwISzFZAhKYaBWIsFSVeL9AYSziAF7A==", - "cpu": [ - "arm64" - ], + "node_modules/@eslint/eslintrc/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@eslint/js": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.51.0.tgz", + "integrity": "sha512-HxjQ8Qn+4SI3/AFv6sOrDB+g6PpUTDwSJiQqOrnneEk8L71161srI9gjzzZvYVbzHiVg/BvcH95+cK/zfIt4pg==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" } }, - "node_modules/@swc/core/node_modules/@swc/core-darwin-x64": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.93.tgz", - "integrity": "sha512-ZQPxm/fXdDQtn3yrYSL/gFfA8OfZ5jTi33yFQq6vcg/Y8talpZ+MgdSlYM0FkLrZdMTYYTNFiuBQuuvkA+av+Q==", - "cpu": [ - "x64" - ], + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.11", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.11.tgz", + "integrity": "sha512-N2brEuAadi0CcdeMXUkhbZB84eskAc8MEX1By6qEchoVywSgXPIjou4rYsl0V3Hj0ZnuGycGCjdNgockbzeWNA==", "dev": true, - "optional": true, - "os": [ - "darwin" - ], + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.1", + "debug": "^4.1.1", + "minimatch": "^3.0.5" + }, "engines": { - "node": ">=10" + "node": ">=10.10.0" } }, - "node_modules/@swc/core/node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.93.tgz", - "integrity": "sha512-OYFMMI2yV+aNe3wMgYhODxHdqUB/jrK0SEMHHS44GZpk8MuBXEF+Mcz4qjkY5Q1EH7KVQqXb/gVWwdgTHpjM2A==", - "cpu": [ - "arm" - ], + "node_modules/@humanwhocodes/config-array/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "ms": "2.1.2" + }, "engines": { - "node": ">=10" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/@swc/core/node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.93.tgz", - "integrity": "sha512-BT4dT78odKnJMNiq5HdjBsv29CiIdcCcImAPxeFqAeFw1LL6gh9nzI8E96oWc+0lVT5lfhoesCk4Qm7J6bty8w==", - "cpu": [ - "arm64" - ], + "node_modules/@humanwhocodes/config-array/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=10" + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" } }, - "node_modules/@swc/core/node_modules/@swc/core-linux-arm64-musl": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.93.tgz", - "integrity": "sha512-yH5fWEl1bktouC0mhh0Chuxp7HEO4uCtS/ly1Vmf18gs6wZ8DOOkgAEVv2dNKIryy+Na++ljx4Ym7C8tSJTrLw==", - "cpu": [ - "arm64" - ], + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "dev": true + }, + "node_modules/@isaacs/cliui": { + "version": "8.0.2", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-8.0.2.tgz", + "integrity": "sha512-O8jcjabXaleOG9DQ0+ARXWZBTfnP4WNAqzuiJK7ll44AmxGKv/J2M4TPjxjY3znBCfvBXFzucm1twdyFybFqEA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "string-width": "^5.1.2", + "string-width-cjs": "npm:string-width@^4.2.0", + "strip-ansi": "^7.0.1", + "strip-ansi-cjs": "npm:strip-ansi@^6.0.1", + "wrap-ansi": "^8.1.0", + "wrap-ansi-cjs": "npm:wrap-ansi@^7.0.0" + }, "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/@swc/core/node_modules/@swc/core-linux-x64-gnu": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.93.tgz", - "integrity": "sha512-OFUdx64qvrGJhXKEyxosHxgoUVgba2ztYh7BnMiU5hP8lbI8G13W40J0SN3CmFQwPP30+3oEbW7LWzhKEaYjlg==", - "cpu": [ - "x64" - ], + "node_modules/@isaacs/cliui/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "optional": true, - "os": [ - "linux" - ], "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/@swc/core/node_modules/@swc/core-linux-x64-musl": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.93.tgz", - "integrity": "sha512-4B8lSRwEq1XYm6xhxHhvHmKAS7pUp1Q7E33NQ2TlmFhfKvCOh86qvThcjAOo57x8DRwmpvEVrqvpXtYagMN6Ig==", - "cpu": [ - "x64" - ], + "node_modules/@isaacs/cliui/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, - "optional": true, - "os": [ - "linux" - ], + "dependencies": { + "ansi-regex": "^6.0.1" + }, "engines": { - "node": ">=10" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/@swc/core/node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.93.tgz", - "integrity": "sha512-BHShlxtkven8ZjjvZ5QR6sC5fZCJ9bMujEkiha6W4cBUTY7ce7qGFyHmQd+iPC85d9kD/0cCiX/Xez8u0BhO7w==", - "cpu": [ - "arm64" - ], + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.3.tgz", + "integrity": "sha512-HLhSWOLRi875zjjMG/r+Nv0oCW8umGb0BgEhyX3dDX3egwZtB8PqLnjz3yedt8R5StBrzcg4aBpnh8UA9D1BoQ==", "dev": true, - "optional": true, - "os": [ - "win32" - ], + "dependencies": { + "@jridgewell/set-array": "^1.0.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.9" + }, "engines": { - "node": ">=10" + "node": ">=6.0.0" } }, - "node_modules/@swc/core/node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.93.tgz", - "integrity": "sha512-nEwNWnz4JzYAK6asVvb92yeylfxMYih7eMQOnT7ZVlZN5ba9WF29xJ6kcQKs9HRH6MvWhz9+wRgv3FcjlU6HYA==", - "cpu": [ - "ia32" - ], + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.0.tgz", + "integrity": "sha512-F2msla3tad+Mfht5cJq7LSXcdudKTWCVYUgw6pLFOOHSTtZlj6SWNYAp+AhuqLmWdBO2X5hPrLcu8cVP8fy28w==", "dev": true, - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">=10" + "node": ">=6.0.0" } }, - "node_modules/@swc/core/node_modules/@swc/core-win32-x64-msvc": { - "version": "1.3.93", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.93.tgz", - "integrity": "sha512-jibQ0zUr4kwJaQVwgmH+svS04bYTPnPw/ZkNInzxS+wFAtzINBYcU8s2PMWbDb2NGYiRSEeoSGyAvS9H+24JFA==", - "cpu": [ - "x64" - ], + "node_modules/@jridgewell/set-array": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.1.2.tgz", + "integrity": "sha512-xnkseuNADM0gt2bs+BvhO0p78Mk762YnZdsuzFV018NoG1Sj1SCQvpSqa7XUaTam5vAGasABV9qXASMKnFMwMw==", "dev": true, - "optional": true, - "os": [ - "win32" - ], "engines": { - "node": ">=10" + "node": ">=6.0.0" } }, - "node_modules/@swc/counter": { - "version": "0.1.1", - "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.1.tgz", - "integrity": "sha512-xVRaR4u9hcYjFvcSg71Lz5Bo4//CyjAAfMxa7UsaDSYxAshflUkVJWiyVWrfxC59z2kP1IzI4/1BEpnhI9o3Mw==", - "dev": true - }, - "node_modules/@swc/types": { - "version": "0.1.5", - "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", - "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", - "dev": true - }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "node_modules/@jridgewell/source-map": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", + "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", "dev": true, "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" + "@jridgewell/gen-mapping": "^0.3.0", + "@jridgewell/trace-mapping": "^0.3.9" } }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.4.14", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.14.tgz", + "integrity": "sha512-XPSJHWmi394fuUuzDnGz1wiKqWfo1yXecHQMRf2l6hztTO+nPru658AyDngaBe7isIxEkRsPR3FZh+s7iVa4Uw==", "dev": true }, - "node_modules/@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.18", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.18.tgz", + "integrity": "sha512-w+niJYzMHdd7USdiH2U6869nqhD2nbfZXND5Yp93qIbEmnDNk7PD48o+YchRVpzMU7M6jVCbenTR7PA1FLQ9pA==", "dev": true, "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" + "@jridgewell/resolve-uri": "3.1.0", + "@jridgewell/sourcemap-codec": "1.4.14" } }, - "node_modules/@types/dompurify": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.3.tgz", - "integrity": "sha512-odiGr/9/qMqjcBOe5UhcNLOFHSYmKFOyr+bJ/Xu3Qp4k1pNPAlNLUVNNLcLfjQI7+W7ObX58EdD3H+3p3voOvA==", + "node_modules/@mole-inc/bin-wrapper": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/@mole-inc/bin-wrapper/-/bin-wrapper-8.0.1.tgz", + "integrity": "sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==", + "dev": true, "dependencies": { - "@types/trusted-types": "*" + "bin-check": "^4.1.0", + "bin-version-check": "^5.0.0", + "content-disposition": "^0.5.4", + "ext-name": "^5.0.0", + "file-type": "^17.1.6", + "filenamify": "^5.0.2", + "got": "^11.8.5", + "os-filter-obj": "^2.0.0" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/@types/eslint": { - "version": "8.4.1", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", - "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", "dev": true, "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@types/eslint-scope": { - "version": "3.7.3", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", - "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", "dev": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" + "engines": { + "node": ">= 8" } }, - "node_modules/@types/estree": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", - "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", - "dev": true - }, - "node_modules/@types/hasher": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/hasher/-/hasher-0.0.33.tgz", - "integrity": "sha512-G9uTuvEWoSlXFTDcw8/BE+DH3BGabFmLQeeBM11sZxdmkG47GkAVU9y6lzpszj56Ni9flHzuJ4DbiNFRLhxQMg==", + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", "dev": true, "dependencies": { - "@types/signals": "*" + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" } }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true - }, - "node_modules/@types/jquery": { - "version": "3.5.23", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.23.tgz", - "integrity": "sha512-LwtD05mlY8iPF/1aB8dOZaYhRDothbHA7csnAxhyqMnQxj90Fo3J4nPhmHiA0OMTwHhjwZdE1Lpd6UK+b+C6Bw==", - "dependencies": { - "@types/sizzle": "*" + "node_modules/@pkgjs/parseargs": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/@pkgjs/parseargs/-/parseargs-0.11.0.tgz", + "integrity": "sha512-+1VkjdD0QBLPodGrJUeqarH8VAIvQODIbwh9XpP5Syisf7YoQgsJKPNFoqqLQlu+VQ/tVSshMR6loPMn8U+dPg==", + "dev": true, + "optional": true, + "engines": { + "node": ">=14" } }, - "node_modules/@types/jqueryui": { - "version": "1.12.18", - "resolved": "https://registry.npmjs.org/@types/jqueryui/-/jqueryui-1.12.18.tgz", - "integrity": "sha512-crlmH8kFzIiU+4aBFgvYUjykSaOTP5RDw7NqkFkcSNWFAF/SMPrr7sY1uNXDEhite/2pEwUoZlufQoy87A22LA==", + "node_modules/@sindresorhus/is": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", + "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", "dev": true, - "dependencies": { - "@types/jquery": "*" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/is?sponsor=1" } }, - "node_modules/@types/json-schema": { - "version": "7.0.12", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", - "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", - "dev": true - }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "node_modules/@swc/cli": { + "version": "0.1.62", + "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.1.62.tgz", + "integrity": "sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==", "dev": true, "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/mousetrap": { - "version": "1.6.12", + "@mole-inc/bin-wrapper": "^8.0.1", + "commander": "^7.1.0", + "fast-glob": "^3.2.5", + "semver": "^7.3.8", + "slash": "3.0.0", + "source-map": "^0.7.3" + }, + "bin": { + "spack": "bin/spack.js", + "swc": "bin/swc.js", + "swcx": "bin/swcx.js" + }, + "engines": { + "node": ">= 12.13" + }, + "peerDependencies": { + "@swc/core": "^1.2.66", + "chokidar": "^3.5.1" + }, + "peerDependenciesMeta": { + "chokidar": { + "optional": true + } + } + }, + "node_modules/@swc/cli/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "dev": true, + "engines": { + "node": ">= 10" + } + }, + "node_modules/@swc/cli/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@swc/core": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.93.tgz", + "integrity": "sha512-690GRr1wUGmGYZHk7fUduX/JUwViMF2o74mnZYIWEcJaCcd9MQfkhsxPBtjeg6tF+h266/Cf3RPYhsFBzzxXcA==", + "dev": true, + "hasInstallScript": true, + "dependencies": { + "@swc/counter": "^0.1.1", + "@swc/types": "^0.1.5" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/swc" + }, + "optionalDependencies": { + "@swc/core-darwin-arm64": "1.3.93", + "@swc/core-darwin-x64": "1.3.93", + "@swc/core-linux-arm-gnueabihf": "1.3.93", + "@swc/core-linux-arm64-gnu": "1.3.93", + "@swc/core-linux-arm64-musl": "1.3.93", + "@swc/core-linux-x64-gnu": "1.3.93", + "@swc/core-linux-x64-musl": "1.3.93", + "@swc/core-win32-arm64-msvc": "1.3.93", + "@swc/core-win32-ia32-msvc": "1.3.93", + "@swc/core-win32-x64-msvc": "1.3.93" + }, + "peerDependencies": { + "@swc/helpers": "^0.5.0" + }, + "peerDependenciesMeta": { + "@swc/helpers": { + "optional": true + } + } + }, + "node_modules/@swc/core-darwin-arm64": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.91.tgz", + "integrity": "sha512-7kHGiQ1he5khcEeJuHDmLZPM3rRL/ith5OTmV6bOPsoHi46kLeixORW+ts1opC3tC9vu6xbk16xgX0QAJchc1w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-darwin-x64": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.91.tgz", + "integrity": "sha512-8SpU18FbFpZDVzsHsAwdI1thF/picQGxq9UFxa8W+T9SDnbsqwFJv/6RqKJeJoDV6qFdl2OLjuO0OL7xrp0qnQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.91.tgz", + "integrity": "sha512-fOq4Cy8UbwX1yf0WB0d8hWZaIKCnPtPGguRqdXGLfwvhjZ9SIErT6PnmGTGRbQCNCIkOZWHKyTU0r8t2dN3haQ==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.91.tgz", + "integrity": "sha512-fki4ioRP/Esy4vdp8T34RCV+V9dqkRmOt763pf74pdiyFV2dPLXa5lnw/XvR1RTfPGknrYgjEQLCfZlReTryRw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.91.tgz", + "integrity": "sha512-XrG+DUUqNtfVLcJ20imby7fpBwQNG5VsEQBzQndSonPyUOa2YkTbBb60YDondfQGDABopuHH8gHN8o2H2/VCnQ==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.91.tgz", + "integrity": "sha512-d11bYhX+YPBr/Frcjc6eVn3C0LuS/9U1Li9EmQ+6s9EpYtYRl2ygSlC8eueLbaiazBnCVYFnc8bU4o0kc5B9sw==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.91.tgz", + "integrity": "sha512-2SRp5Dke2P4jCQePkDx9trkkTstnRpZJVw5r3jvYdk0zeO6iC4+ZPvvoWXJLigqQv/fZnIiSUfJ6ssOoaEqTzQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.91.tgz", + "integrity": "sha512-l9qKXikOxj42UIjbeZpz9xtBmr736jOMqInNP8mVF2/U+ws5sI8zJjcOFFtfis4ru7vWCXhB1wtltdlJYO2vGA==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.91.tgz", + "integrity": "sha512-+s+52O0QVPmzOgjEe/rcb0AK6q/J7EHKwAyJCu/FaYO9df5ovE0HJjSKP6HAF0dGPO5hkENrXuNGujofUH9vtQ==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.91.tgz", + "integrity": "sha512-7u9HDQhjUC3Gv43EFW84dZtduWCSa4MgltK+Sp9zEGti6WXqDPu/ESjvDsQEVYTBEMEvZs/xVAXPgLVHorV5nQ==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core/node_modules/@swc/core-darwin-arm64": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.93.tgz", + "integrity": "sha512-gEKgk7FVIgltnIfDO6GntyuQBBlAYg5imHpRgLxB1zSI27ijVVkksc6QwISzFZAhKYaBWIsFSVeL9AYSziAF7A==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core/node_modules/@swc/core-darwin-x64": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.93.tgz", + "integrity": "sha512-ZQPxm/fXdDQtn3yrYSL/gFfA8OfZ5jTi33yFQq6vcg/Y8talpZ+MgdSlYM0FkLrZdMTYYTNFiuBQuuvkA+av+Q==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core/node_modules/@swc/core-linux-arm-gnueabihf": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.93.tgz", + "integrity": "sha512-OYFMMI2yV+aNe3wMgYhODxHdqUB/jrK0SEMHHS44GZpk8MuBXEF+Mcz4qjkY5Q1EH7KVQqXb/gVWwdgTHpjM2A==", + "cpu": [ + "arm" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core/node_modules/@swc/core-linux-arm64-gnu": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.93.tgz", + "integrity": "sha512-BT4dT78odKnJMNiq5HdjBsv29CiIdcCcImAPxeFqAeFw1LL6gh9nzI8E96oWc+0lVT5lfhoesCk4Qm7J6bty8w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core/node_modules/@swc/core-linux-arm64-musl": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.93.tgz", + "integrity": "sha512-yH5fWEl1bktouC0mhh0Chuxp7HEO4uCtS/ly1Vmf18gs6wZ8DOOkgAEVv2dNKIryy+Na++ljx4Ym7C8tSJTrLw==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core/node_modules/@swc/core-linux-x64-gnu": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.93.tgz", + "integrity": "sha512-OFUdx64qvrGJhXKEyxosHxgoUVgba2ztYh7BnMiU5hP8lbI8G13W40J0SN3CmFQwPP30+3oEbW7LWzhKEaYjlg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core/node_modules/@swc/core-linux-x64-musl": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.93.tgz", + "integrity": "sha512-4B8lSRwEq1XYm6xhxHhvHmKAS7pUp1Q7E33NQ2TlmFhfKvCOh86qvThcjAOo57x8DRwmpvEVrqvpXtYagMN6Ig==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core/node_modules/@swc/core-win32-arm64-msvc": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.93.tgz", + "integrity": "sha512-BHShlxtkven8ZjjvZ5QR6sC5fZCJ9bMujEkiha6W4cBUTY7ce7qGFyHmQd+iPC85d9kD/0cCiX/Xez8u0BhO7w==", + "cpu": [ + "arm64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core/node_modules/@swc/core-win32-ia32-msvc": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.93.tgz", + "integrity": "sha512-nEwNWnz4JzYAK6asVvb92yeylfxMYih7eMQOnT7ZVlZN5ba9WF29xJ6kcQKs9HRH6MvWhz9+wRgv3FcjlU6HYA==", + "cpu": [ + "ia32" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/core/node_modules/@swc/core-win32-x64-msvc": { + "version": "1.3.93", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.93.tgz", + "integrity": "sha512-jibQ0zUr4kwJaQVwgmH+svS04bYTPnPw/ZkNInzxS+wFAtzINBYcU8s2PMWbDb2NGYiRSEeoSGyAvS9H+24JFA==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=10" + } + }, + "node_modules/@swc/counter": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.1.tgz", + "integrity": "sha512-xVRaR4u9hcYjFvcSg71Lz5Bo4//CyjAAfMxa7UsaDSYxAshflUkVJWiyVWrfxC59z2kP1IzI4/1BEpnhI9o3Mw==", + "dev": true + }, + "node_modules/@swc/types": { + "version": "0.1.5", + "resolved": "https://registry.npmjs.org/@swc/types/-/types-0.1.5.tgz", + "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", + "dev": true + }, + "node_modules/@szmarczak/http-timer": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", + "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", + "dev": true, + "dependencies": { + "defer-to-connect": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/@tokenizer/token": { + "version": "0.3.0", + "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", + "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", + "dev": true + }, + "node_modules/@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/@types/cacheable-request": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", + "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", + "dev": true, + "dependencies": { + "@types/http-cache-semantics": "*", + "@types/keyv": "^3.1.4", + "@types/node": "*", + "@types/responselike": "^1.0.0" + } + }, + "node_modules/@types/dompurify": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.3.tgz", + "integrity": "sha512-odiGr/9/qMqjcBOe5UhcNLOFHSYmKFOyr+bJ/Xu3Qp4k1pNPAlNLUVNNLcLfjQI7+W7ObX58EdD3H+3p3voOvA==", + "dependencies": { + "@types/trusted-types": "*" + } + }, + "node_modules/@types/eslint": { + "version": "8.4.1", + "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", + "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", + "dev": true, + "dependencies": { + "@types/estree": "*", + "@types/json-schema": "*" + } + }, + "node_modules/@types/eslint-scope": { + "version": "3.7.3", + "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", + "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", + "dev": true, + "dependencies": { + "@types/eslint": "*", + "@types/estree": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", + "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", + "dev": true + }, + "node_modules/@types/hasher": { + "version": "0.0.33", + "resolved": "https://registry.npmjs.org/@types/hasher/-/hasher-0.0.33.tgz", + "integrity": "sha512-G9uTuvEWoSlXFTDcw8/BE+DH3BGabFmLQeeBM11sZxdmkG47GkAVU9y6lzpszj56Ni9flHzuJ4DbiNFRLhxQMg==", + "dev": true, + "dependencies": { + "@types/signals": "*" + } + }, + "node_modules/@types/http-cache-semantics": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", + "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", + "dev": true + }, + "node_modules/@types/jquery": { + "version": "3.5.22", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.22.tgz", + "integrity": "sha512-ISQFeUK5GwRftLK4PVvKTWEVCxZ2BpaqBz0TWkIq5w4vGojxZP9+XkqgcPjxoqmPeew+HLyWthCBvK7GdF5NYA==", + "dependencies": { + "@types/sizzle": "*" + } + }, + "node_modules/@types/jqueryui": { + "version": "1.12.18", + "resolved": "https://registry.npmjs.org/@types/jqueryui/-/jqueryui-1.12.18.tgz", + "integrity": "sha512-crlmH8kFzIiU+4aBFgvYUjykSaOTP5RDw7NqkFkcSNWFAF/SMPrr7sY1uNXDEhite/2pEwUoZlufQoy87A22LA==", + "dev": true, + "dependencies": { + "@types/jquery": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.12", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", + "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", + "dev": true + }, + "node_modules/@types/keyv": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", + "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/mousetrap": { + "version": "1.6.12", "resolved": "https://registry.npmjs.org/@types/mousetrap/-/mousetrap-1.6.12.tgz", "integrity": "sha512-tzXGzMbvXt815z0Z7FE45wmRVRitMTaPgfVcdGhOS6LtEOWBZBokFJxEdatVA8cj+cQxvdFLmlMC4c12TNqv9A==" }, - "node_modules/@types/nanoid": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/@types/nanoid/-/nanoid-3.0.0.tgz", - "integrity": "sha512-UXitWSmXCwhDmAKe7D3hNQtQaHeHt5L8LO1CB8GF8jlYVzOv5cBWDNqiJ+oPEWrWei3i3dkZtHY/bUtd0R/uOQ==", + "node_modules/@types/nanoid": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@types/nanoid/-/nanoid-3.0.0.tgz", + "integrity": "sha512-UXitWSmXCwhDmAKe7D3hNQtQaHeHt5L8LO1CB8GF8jlYVzOv5cBWDNqiJ+oPEWrWei3i3dkZtHY/bUtd0R/uOQ==", + "dev": true, + "dependencies": { + "nanoid": "*" + } + }, + "node_modules/@types/node": { + "version": "17.0.1", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.1.tgz", + "integrity": "sha512-NXKvBVUzIbs6ylBwmOwHFkZS2EXCcjnqr8ZCRNaXBkHAf+3mn/rPcJxwrzuc6movh8fxQAsUUfYklJ/EG+hZqQ==", + "dev": true + }, + "node_modules/@types/owasp-password-strength-test": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@types/owasp-password-strength-test/-/owasp-password-strength-test-1.3.0.tgz", + "integrity": "sha512-eKYl6svyRua5OVUFm+AXSxdBrKo7snzrCcFv0KoqKNvNgB3fJzRq3s/xphf+jNTllqYxgsx1uWLeAcL4MjLWQQ==", + "dev": true + }, + "node_modules/@types/q": { + "version": "1.5.6", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.6.tgz", + "integrity": "sha512-IKjZ8RjTSwD4/YG+2gtj7BPFRB/lNbWKTiSj3M7U/TD2B7HfYCxvp2Zz6xA2WIY7pAuL1QOUPw8gQRbUrrq4fQ==", + "dev": true + }, + "node_modules/@types/responselike": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", + "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/semver": { + "version": "7.5.3", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", + "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", + "dev": true + }, + "node_modules/@types/signals": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@types/signals/-/signals-1.0.1.tgz", + "integrity": "sha512-t6qsSE/nUiDN4MO5pZIR7XdhCNt0No0oJL1y1JSYovQL7+GvWzdBI0eD0ADZ2gW4Lg+CB4/d0j1nXe9lMpEHow==", + "dev": true + }, + "node_modules/@types/sizzle": { + "version": "2.3.2", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz", + "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==" + }, + "node_modules/@types/slickgrid": { + "version": "2.1.36", + "resolved": "https://registry.npmjs.org/@types/slickgrid/-/slickgrid-2.1.36.tgz", + "integrity": "sha512-fBBrjhAakD23OYXKHjmUIyPVH/SRCQoX7JaXXRdN2qBtnh5rpCgDzRDYdy4JQdsoBmm9gI+WYcMG7MFQf6rejA==", + "dependencies": { + "@types/jquery": "*" + } + }, + "node_modules/@types/trusted-types": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.0.tgz", + "integrity": "sha512-I8MnZqNXsOLHsU111oHbn3khtvKMi5Bn4qVFsIWSJcCP1KKDiXX5AEw8UPk0nSopeC+Hvxt6yAy1/a5PailFqg==" + }, + "node_modules/@types/validator": { + "version": "13.11.3", + "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.3.tgz", + "integrity": "sha512-jxjhh33aTYDHnrV1vZ3AvWQHfrGx2f5UxKjaP13l5q04fG+/hCKKm0MfodIoCqxevhbcfBb6ZjynyHuQ/jueGQ==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.5.tgz", + "integrity": "sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.7.5", + "@typescript-eslint/type-utils": "6.7.5", + "@typescript-eslint/utils": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/eslint-plugin/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.5.tgz", + "integrity": "sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.7.5", + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/typescript-estree": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz", + "integrity": "sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.5.tgz", + "integrity": "sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.7.5", + "@typescript-eslint/utils": "6.7.5", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/type-utils/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/types": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.5.tgz", + "integrity": "sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz", + "integrity": "sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.5.tgz", + "integrity": "sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.7.5", + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/typescript-estree": "6.7.5", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz", + "integrity": "sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.7.5", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@webassemblyjs/ast": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz", + "integrity": "sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/helper-numbers": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5" + } + }, + "node_modules/@webassemblyjs/floating-point-hex-parser": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz", + "integrity": "sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-api-error": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz", + "integrity": "sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-buffer": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz", + "integrity": "sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-numbers": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz", + "integrity": "sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==", + "dev": true, + "dependencies": { + "@webassemblyjs/floating-point-hex-parser": "1.11.5", + "@webassemblyjs/helper-api-error": "1.11.5", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/helper-wasm-bytecode": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz", + "integrity": "sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==", + "dev": true + }, + "node_modules/@webassemblyjs/helper-wasm-section": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz", + "integrity": "sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-buffer": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/wasm-gen": "1.11.5" + } + }, + "node_modules/@webassemblyjs/ieee754": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz", + "integrity": "sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==", + "dev": true, + "dependencies": { + "@xtuc/ieee754": "^1.2.0" + } + }, + "node_modules/@webassemblyjs/leb128": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz", + "integrity": "sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==", + "dev": true, + "dependencies": { + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webassemblyjs/utf8": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz", + "integrity": "sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==", + "dev": true + }, + "node_modules/@webassemblyjs/wasm-edit": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz", + "integrity": "sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-buffer": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/helper-wasm-section": "1.11.5", + "@webassemblyjs/wasm-gen": "1.11.5", + "@webassemblyjs/wasm-opt": "1.11.5", + "@webassemblyjs/wasm-parser": "1.11.5", + "@webassemblyjs/wast-printer": "1.11.5" + } + }, + "node_modules/@webassemblyjs/wasm-gen": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz", + "integrity": "sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/ieee754": "1.11.5", + "@webassemblyjs/leb128": "1.11.5", + "@webassemblyjs/utf8": "1.11.5" + } + }, + "node_modules/@webassemblyjs/wasm-opt": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz", + "integrity": "sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-buffer": "1.11.5", + "@webassemblyjs/wasm-gen": "1.11.5", + "@webassemblyjs/wasm-parser": "1.11.5" + } + }, + "node_modules/@webassemblyjs/wasm-parser": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz", + "integrity": "sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.5", + "@webassemblyjs/helper-api-error": "1.11.5", + "@webassemblyjs/helper-wasm-bytecode": "1.11.5", + "@webassemblyjs/ieee754": "1.11.5", + "@webassemblyjs/leb128": "1.11.5", + "@webassemblyjs/utf8": "1.11.5" + } + }, + "node_modules/@webassemblyjs/wast-printer": { + "version": "1.11.5", + "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz", + "integrity": "sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==", + "dev": true, + "dependencies": { + "@webassemblyjs/ast": "1.11.5", + "@xtuc/long": "4.2.2" + } + }, + "node_modules/@webpack-cli/configtest": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", + "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/info": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", + "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + } + }, + "node_modules/@webpack-cli/serve": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", + "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "dev": true, + "engines": { + "node": ">=14.15.0" + }, + "peerDependencies": { + "webpack": "5.x.x", + "webpack-cli": "5.x.x" + }, + "peerDependenciesMeta": { + "webpack-dev-server": { + "optional": true + } + } + }, + "node_modules/@xtuc/ieee754": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", + "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "dev": true + }, + "node_modules/@xtuc/long": { + "version": "4.2.2", + "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", + "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "dev": true + }, + "node_modules/abab": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", + "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "dev": true + }, + "node_modules/acorn": { + "version": "8.10.0", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", + "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-import-assertions": { + "version": "1.9.0", + "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", + "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "dev": true, + "peerDependencies": { + "acorn": "^8" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", + "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "dev": true, + "dependencies": { + "ajv": "^8.0.0" + }, + "peerDependencies": { + "ajv": "^8.0.0" + }, + "peerDependenciesMeta": { + "ajv": { + "optional": true + } + } + }, + "node_modules/ajv-formats/node_modules/ajv": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ajv-formats/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/ajv-keywords": { + "version": "3.5.2", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", + "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", + "dev": true + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/arch": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", + "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/autoprefixer": { + "version": "10.4.16", + "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", + "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/autoprefixer" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "browserslist": "^4.21.10", + "caniuse-lite": "^1.0.30001538", + "fraction.js": "^4.3.6", + "normalize-range": "^0.1.2", + "picocolors": "^1.0.0", + "postcss-value-parser": "^4.2.0" + }, + "bin": { + "autoprefixer": "bin/autoprefixer" + }, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.1.0" + } + }, + "node_modules/available-typed-arrays": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", + "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/balanced-match": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", + "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/bin-check": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", + "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==", + "dev": true, + "dependencies": { + "execa": "^0.7.0", + "executable": "^4.1.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/bin-version": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-6.0.0.tgz", + "integrity": "sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "find-versions": "^5.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bin-version-check": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-5.0.0.tgz", + "integrity": "sha512-Q3FMQnS5eZmrBGqmDXLs4dbAn/f+52voP6ykJYmweSA60t6DyH4UTSwZhtbK5UH+LBoWvDljILUQMLRUtsynsA==", + "dev": true, + "dependencies": { + "bin-version": "^6.0.0", + "semver": "^7.3.5", + "semver-truncate": "^2.0.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bin-version/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/bin-version/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bin-version/node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/bin-version/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", + "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "dev": true, + "dependencies": { + "fill-range": "^7.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.22.1", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", + "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001541", + "electron-to-chromium": "^1.4.535", + "node-releases": "^2.0.13", + "update-browserslist-db": "^1.0.13" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/browserslist-config-enonic": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/browserslist-config-enonic/-/browserslist-config-enonic-1.0.8.tgz", + "integrity": "sha512-X5eXFvoGIeN4Q1So+mTxZCkLgf4UNa5fte+7OM9AGHSbRspKp8foFwuFkwyhXnitRSzDK0QM2qWu1Sirp2svrQ==", + "dev": true, + "engines": { + "node": ">= 14.15.0", + "npm": ">= 6.14.8" + } + }, + "node_modules/buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bundle-require": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-4.0.2.tgz", + "integrity": "sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==", + "dev": true, + "dependencies": { + "load-tsconfig": "^0.2.3" + }, + "engines": { + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "peerDependencies": { + "esbuild": ">=0.17" + } + }, + "node_modules/cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-lookup": { + "version": "5.0.4", + "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", + "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "dev": true, + "engines": { + "node": ">=10.6.0" + } + }, + "node_modules/cacheable-request": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", + "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "dev": true, + "dependencies": { + "clone-response": "^1.0.2", + "get-stream": "^5.1.0", + "http-cache-semantics": "^4.0.0", + "keyv": "^4.0.0", + "lowercase-keys": "^2.0.0", + "normalize-url": "^6.0.1", + "responselike": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cacheable-request/node_modules/get-stream": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", + "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "dev": true, + "dependencies": { + "pump": "^3.0.0" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/call-bind": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", + "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1", + "get-intrinsic": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/caniuse-api": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", + "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "dev": true, + "dependencies": { + "browserslist": "^4.0.0", + "caniuse-lite": "^1.0.0", + "lodash.memoize": "^4.1.2", + "lodash.uniq": "^4.5.0" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001549", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz", + "integrity": "sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/chalk/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "dependencies": { - "nanoid": "*" + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" } }, - "node_modules/@types/node": { - "version": "17.0.1", - "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.1.tgz", - "integrity": "sha512-NXKvBVUzIbs6ylBwmOwHFkZS2EXCcjnqr8ZCRNaXBkHAf+3mn/rPcJxwrzuc6movh8fxQAsUUfYklJ/EG+hZqQ==", + "node_modules/chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://paulmillr.com/funding/" + } + ], + "dependencies": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "engines": { + "node": ">= 8.10.0" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/chokidar/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true, + "engines": { + "node": ">=6.0" + } + }, + "node_modules/circular-dependency-plugin": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", + "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/cliui/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/cliui/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/cliui/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@types/owasp-password-strength-test": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@types/owasp-password-strength-test/-/owasp-password-strength-test-1.3.0.tgz", - "integrity": "sha512-eKYl6svyRua5OVUFm+AXSxdBrKo7snzrCcFv0KoqKNvNgB3fJzRq3s/xphf+jNTllqYxgsx1uWLeAcL4MjLWQQ==", + "node_modules/cliui/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", "dev": true }, - "node_modules/@types/q": { - "version": "1.5.6", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.6.tgz", - "integrity": "sha512-IKjZ8RjTSwD4/YG+2gtj7BPFRB/lNbWKTiSj3M7U/TD2B7HfYCxvp2Zz6xA2WIY7pAuL1QOUPw8gQRbUrrq4fQ==", + "node_modules/cliui/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/cliui/node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/clone-deep": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", + "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "dev": true, + "dependencies": { + "is-plain-object": "^2.0.4", + "kind-of": "^6.0.2", + "shallow-clone": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/clone-response": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", + "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "dev": true, + "dependencies": { + "mimic-response": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, - "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", + "node_modules/colord": { + "version": "2.9.3", + "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", + "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", + "dev": true + }, + "node_modules/colorette": { + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", + "dev": true + }, + "node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "dev": true + }, + "node_modules/concurrently": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.1.tgz", + "integrity": "sha512-nVraf3aXOpIcNud5pB9M82p1tynmZkrSGQ1p6X/VY8cJ+2LMVqAgXsJxYYefACSHbTYlm92O1xuhdGTjwoEvbQ==", "dev": true, "dependencies": { - "@types/node": "*" + "chalk": "^4.1.2", + "date-fns": "^2.30.0", + "lodash": "^4.17.21", + "rxjs": "^7.8.1", + "shell-quote": "^1.8.1", + "spawn-command": "0.0.2", + "supports-color": "^8.1.1", + "tree-kill": "^1.2.2", + "yargs": "^17.7.2" + }, + "bin": { + "conc": "dist/bin/concurrently.js", + "concurrently": "dist/bin/concurrently.js" + }, + "engines": { + "node": "^14.13.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/open-cli-tools/concurrently?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/concurrently/node_modules/chalk/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/concurrently/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" } }, - "node_modules/@types/semver": { - "version": "7.5.3", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", - "integrity": "sha512-OxepLK9EuNEIPxWNME+C6WwbRAOOI2o2BaQEGzz5Lu2e4Z5eDnEo+/aVEDMIXywoJitJ7xWd641wrGLZdtwRyw==", - "dev": true - }, - "node_modules/@types/signals": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/@types/signals/-/signals-1.0.1.tgz", - "integrity": "sha512-t6qsSE/nUiDN4MO5pZIR7XdhCNt0No0oJL1y1JSYovQL7+GvWzdBI0eD0ADZ2gW4Lg+CB4/d0j1nXe9lMpEHow==", + "node_modules/concurrently/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "node_modules/@types/sizzle": { - "version": "2.3.2", - "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.2.tgz", - "integrity": "sha512-7EJYyKTL7tFR8+gDbB6Wwz/arpGa0Mywk1TJbNzKzHtzbwVmY4HR9WqS5VV7dsBUKQmPNr192jHr/VpBluj/hg==" + "node_modules/concurrently/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/@types/slickgrid": { - "version": "2.1.36", - "resolved": "https://registry.npmjs.org/@types/slickgrid/-/slickgrid-2.1.36.tgz", - "integrity": "sha512-fBBrjhAakD23OYXKHjmUIyPVH/SRCQoX7JaXXRdN2qBtnh5rpCgDzRDYdy4JQdsoBmm9gI+WYcMG7MFQf6rejA==", + "node_modules/concurrently/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, "dependencies": { - "@types/jquery": "*" + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/@types/trusted-types": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.0.tgz", - "integrity": "sha512-I8MnZqNXsOLHsU111oHbn3khtvKMi5Bn4qVFsIWSJcCP1KKDiXX5AEw8UPk0nSopeC+Hvxt6yAy1/a5PailFqg==" + "node_modules/content-disposition": { + "version": "0.5.4", + "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", + "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "dev": true, + "dependencies": { + "safe-buffer": "5.2.1" + }, + "engines": { + "node": ">= 0.6" + } }, - "node_modules/@types/validator": { - "version": "13.11.3", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.3.tgz", - "integrity": "sha512-jxjhh33aTYDHnrV1vZ3AvWQHfrGx2f5UxKjaP13l5q04fG+/hCKKm0MfodIoCqxevhbcfBb6ZjynyHuQ/jueGQ==", - "dev": true + "node_modules/copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "dependencies": { + "is-what": "^3.14.1" + }, + "funding": { + "url": "https://github.com/sponsors/mesqueeb" + } }, - "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz", - "integrity": "sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==", + "node_modules/copy-webpack-plugin": { + "version": "11.0.0", + "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", + "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", "dev": true, "dependencies": { - "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.8.0", - "@typescript-eslint/type-utils": "6.8.0", - "@typescript-eslint/utils": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0", - "debug": "^4.3.4", - "graphemer": "^1.4.0", - "ignore": "^5.2.4", - "natural-compare": "^1.4.0", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "fast-glob": "^3.2.11", + "glob-parent": "^6.0.1", + "globby": "^13.1.1", + "normalize-path": "^3.0.0", + "schema-utils": "^4.0.0", + "serialize-javascript": "^6.0.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">= 14.15.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", - "eslint": "^7.0.0 || ^8.0.0" + "webpack": "^5.1.0" + } + }, + "node_modules/copy-webpack-plugin/node_modules/ajv": { + "version": "8.12.0", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", + "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/copy-webpack-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, "dependencies": { - "ms": "2.1.2" + "fast-deep-equal": "^3.1.3" + }, + "peerDependencies": { + "ajv": "^8.8.2" + } + }, + "node_modules/copy-webpack-plugin/node_modules/globby": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", + "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" }, "engines": { - "node": ">=6.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/eslint-plugin/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", "dev": true }, - "node_modules/@typescript-eslint/parser": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.8.0.tgz", - "integrity": "sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==", + "node_modules/copy-webpack-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.8.0", - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/typescript-estree": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0", - "debug": "^4.3.4" + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">= 12.13.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "url": "https://opencollective.com/webpack" + } + }, + "node_modules/copy-webpack-plugin/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true, + "engines": { + "node": ">=12" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@typescript-eslint/parser/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/cosmiconfig": { + "version": "8.2.0", + "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", + "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", "dev": true, "dependencies": { - "ms": "2.1.2" + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "parse-json": "^5.0.0", + "path-type": "^4.0.0" }, "engines": { - "node": ">=6.0" + "node": ">=14" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "funding": { + "url": "https://github.com/sponsors/d-fischer" } }, - "node_modules/@typescript-eslint/parser/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } }, - "node_modules/@typescript-eslint/scope-manager": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz", - "integrity": "sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==", + "node_modules/css-declaration-sorter": { + "version": "6.4.0", + "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz", + "integrity": "sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew==", + "dev": true, + "engines": { + "node": "^10 || ^12 || >=14" + }, + "peerDependencies": { + "postcss": "^8.0.9" + } + }, + "node_modules/css-loader": { + "version": "6.8.1", + "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", + "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0" + "icss-utils": "^5.1.0", + "postcss": "^8.4.21", + "postcss-modules-extract-imports": "^3.0.0", + "postcss-modules-local-by-default": "^4.0.3", + "postcss-modules-scope": "^3.0.0", + "postcss-modules-values": "^4.0.0", + "postcss-value-parser": "^4.2.0", + "semver": "^7.3.8" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">= 12.13.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.0.0" } }, - "node_modules/@typescript-eslint/type-utils": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz", - "integrity": "sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==", + "node_modules/css-select": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", + "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.8.0", - "@typescript-eslint/utils": "6.8.0", - "debug": "^4.3.4", - "ts-api-utils": "^1.0.1" - }, - "engines": { - "node": "^16.0.0 || >=18.0.0" + "boolbase": "^1.0.0", + "css-what": "^6.1.0", + "domhandler": "^5.0.2", + "domutils": "^3.0.1", + "nth-check": "^2.0.1" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" - }, - "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" - }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/css-tree": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", + "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", "dev": true, "dependencies": { - "ms": "2.1.2" + "mdn-data": "2.0.30", + "source-map-js": "^1.0.1" }, "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" } }, - "node_modules/@typescript-eslint/type-utils/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@typescript-eslint/types": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.8.0.tgz", - "integrity": "sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==", + "node_modules/css-what": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", + "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", "dev": true, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": ">= 6" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://github.com/sponsors/fb55" } }, - "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz", - "integrity": "sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==", + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/cssnano": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.0.1.tgz", + "integrity": "sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0", - "debug": "^4.3.4", - "globby": "^11.1.0", - "is-glob": "^4.0.3", - "semver": "^7.5.4", - "ts-api-utils": "^1.0.1" + "cssnano-preset-default": "^6.0.1", + "lilconfig": "^2.1.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" + "node": "^14 || ^16 || >=18.0" }, "funding": { "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "url": "https://opencollective.com/cssnano" }, - "peerDependenciesMeta": { - "typescript": { - "optional": true - } + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "node_modules/cssnano-preset-default": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz", + "integrity": "sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ==", "dev": true, "dependencies": { - "ms": "2.1.2" + "css-declaration-sorter": "^6.3.1", + "cssnano-utils": "^4.0.0", + "postcss-calc": "^9.0.0", + "postcss-colormin": "^6.0.0", + "postcss-convert-values": "^6.0.0", + "postcss-discard-comments": "^6.0.0", + "postcss-discard-duplicates": "^6.0.0", + "postcss-discard-empty": "^6.0.0", + "postcss-discard-overridden": "^6.0.0", + "postcss-merge-longhand": "^6.0.0", + "postcss-merge-rules": "^6.0.1", + "postcss-minify-font-values": "^6.0.0", + "postcss-minify-gradients": "^6.0.0", + "postcss-minify-params": "^6.0.0", + "postcss-minify-selectors": "^6.0.0", + "postcss-normalize-charset": "^6.0.0", + "postcss-normalize-display-values": "^6.0.0", + "postcss-normalize-positions": "^6.0.0", + "postcss-normalize-repeat-style": "^6.0.0", + "postcss-normalize-string": "^6.0.0", + "postcss-normalize-timing-functions": "^6.0.0", + "postcss-normalize-unicode": "^6.0.0", + "postcss-normalize-url": "^6.0.0", + "postcss-normalize-whitespace": "^6.0.0", + "postcss-ordered-values": "^6.0.0", + "postcss-reduce-initial": "^6.0.0", + "postcss-reduce-transforms": "^6.0.0", + "postcss-svgo": "^6.0.0", + "postcss-unique-selectors": "^6.0.0" }, "engines": { - "node": ">=6.0" + "node": "^14 || ^16 || >=18.0" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/@typescript-eslint/typescript-estree/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/@typescript-eslint/utils": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.8.0.tgz", - "integrity": "sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==", + "node_modules/cssnano-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.0.tgz", + "integrity": "sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw==", "dev": true, - "dependencies": { - "@eslint-community/eslint-utils": "^4.4.0", - "@types/json-schema": "^7.0.12", - "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.8.0", - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/typescript-estree": "6.8.0", - "semver": "^7.5.4" - }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "eslint": "^7.0.0 || ^8.0.0" + "postcss": "^8.2.15" } }, - "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz", - "integrity": "sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==", + "node_modules/csso": { + "version": "5.0.5", + "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", + "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.8.0", - "eslint-visitor-keys": "^3.4.1" + "css-tree": "~2.2.0" }, "engines": { - "node": "^16.0.0 || >=18.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/typescript-eslint" + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/@webassemblyjs/ast": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz", - "integrity": "sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==", + "node_modules/csso/node_modules/css-tree": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", + "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", "dev": true, "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5" + "mdn-data": "2.0.28", + "source-map-js": "^1.0.1" + }, + "engines": { + "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", + "npm": ">=7.0.0" } }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz", - "integrity": "sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz", - "integrity": "sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==", + "node_modules/csso/node_modules/mdn-data": { + "version": "2.0.28", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", + "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", "dev": true }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz", - "integrity": "sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==", + "node_modules/cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==", "dev": true }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz", - "integrity": "sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==", + "node_modules/date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", "dev": true, "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", - "@xtuc/long": "4.2.2" + "@babel/runtime": "^7.21.0" + }, + "engines": { + "node": ">=0.11" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/date-fns" } }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz", - "integrity": "sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==", - "dev": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz", - "integrity": "sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==", + "node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", "dev": true, + "optional": true, "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5" + "ms": "^2.1.1" } }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz", - "integrity": "sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==", + "node_modules/decompress-response": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", + "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", "dev": true, "dependencies": { - "@xtuc/ieee754": "^1.2.0" + "mimic-response": "^3.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz", - "integrity": "sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==", + "node_modules/decompress-response/node_modules/mimic-response": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", + "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", "dev": true, - "dependencies": { - "@xtuc/long": "4.2.2" + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz", - "integrity": "sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==", + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz", - "integrity": "sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==", + "node_modules/defer-to-connect": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", + "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/helper-wasm-section": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-opt": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5", - "@webassemblyjs/wast-printer": "1.11.5" + "engines": { + "node": ">=10" } }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz", - "integrity": "sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==", + "node_modules/define-properties": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", + "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz", - "integrity": "sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==", + "node_modules/dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", "dev": true, - "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-buffer": "1.11.5", - "@webassemblyjs/wasm-gen": "1.11.5", - "@webassemblyjs/wasm-parser": "1.11.5" + "engines": { + "node": ">= 0.6.0" } }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz", - "integrity": "sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==", + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@webassemblyjs/helper-api-error": "1.11.5", - "@webassemblyjs/helper-wasm-bytecode": "1.11.5", - "@webassemblyjs/ieee754": "1.11.5", - "@webassemblyjs/leb128": "1.11.5", - "@webassemblyjs/utf8": "1.11.5" + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.11.5", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz", - "integrity": "sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==", + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", "dev": true, "dependencies": { - "@webassemblyjs/ast": "1.11.5", - "@xtuc/long": "4.2.2" + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" } }, - "node_modules/@webpack-cli/configtest": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", - "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", + "node_modules/dom-serializer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", + "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", "dev": true, - "engines": { - "node": ">=14.15.0" + "dependencies": { + "domelementtype": "^2.3.0", + "domhandler": "^5.0.2", + "entities": "^4.2.0" }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "funding": { + "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" } }, - "node_modules/@webpack-cli/info": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", - "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", + "node_modules/domelementtype": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", + "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/fb55" + } + ] + }, + "node_modules/domhandler": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", + "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", "dev": true, + "dependencies": { + "domelementtype": "^2.3.0" + }, "engines": { - "node": ">=14.15.0" + "node": ">= 4" }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "funding": { + "url": "https://github.com/fb55/domhandler?sponsor=1" } }, - "node_modules/@webpack-cli/serve": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", - "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", + "node_modules/dompurify": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.6.tgz", + "integrity": "sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w==" + }, + "node_modules/domutils": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", + "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" + "dependencies": { + "dom-serializer": "^2.0.0", + "domelementtype": "^2.3.0", + "domhandler": "^5.0.3" }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } + "funding": { + "url": "https://github.com/fb55/domutils?sponsor=1" } }, - "node_modules/@xtuc/ieee754": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", - "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", + "node_modules/eastasianwidth": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", + "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", "dev": true }, - "node_modules/@xtuc/long": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", - "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", + "node_modules/electron-to-chromium": { + "version": "1.4.554", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.554.tgz", + "integrity": "sha512-Q0umzPJjfBrrj8unkONTgbKQXzXRrH7sVV7D9ea2yBV3Oaogz991yhbpfvo2LMNkJItmruXTEzVpP9cp7vaIiQ==", "dev": true }, - "node_modules/abab": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/abab/-/abab-2.0.6.tgz", - "integrity": "sha512-j2afSsaIENvHZN2B8GOpF566vZ5WVk5opAiMTvWgaQT8DkbOqsTfvNAvHoRGU2zzP8cPoqys+xHTRDWW8L+/BA==", + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, - "node_modules/acorn": { - "version": "8.10.0", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.10.0.tgz", - "integrity": "sha512-F0SAmZ8iUtS//m8DmCTA0jlh6TDKkHQyK6xc6V4KDTyZKA9dnvX9/3sRTVQrWm79glUAZbnmmNcdYwUIHWVybw==", + "node_modules/end-of-stream": { + "version": "1.4.4", + "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", + "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", "dev": true, - "bin": { - "acorn": "bin/acorn" - }, - "engines": { - "node": ">=0.4.0" + "dependencies": { + "once": "^1.4.0" } }, - "node_modules/acorn-import-assertions": { - "version": "1.9.0", - "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", - "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", + "node_modules/enhanced-resolve": { + "version": "5.15.0", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", + "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, - "peerDependencies": { - "acorn": "^8" + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" } }, - "node_modules/acorn-jsx": { - "version": "5.3.2", - "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", - "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "node_modules/enonic-admin-artifacts": { + "version": "1.8.5", + "resolved": "https://registry.npmjs.org/enonic-admin-artifacts/-/enonic-admin-artifacts-1.8.5.tgz", + "integrity": "sha512-J4J7EJfynyO4NvpmM2dYBUGPoIC5W+fyulNyzKqcgT39ZvyJDLnCHQo8z7XSshcfEzkyQXYx7P6ClbWzLM/5mQ==", "dev": true, - "peerDependencies": { - "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + "engines": { + "node": ">= 16.16.0", + "npm": ">= 8.11.0" } }, - "node_modules/ajv": { - "version": "6.12.6", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", - "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "node_modules/entities": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", + "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "fast-json-stable-stringify": "^2.0.0", - "json-schema-traverse": "^0.4.1", - "uri-js": "^4.2.2" + "engines": { + "node": ">=0.12" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", + "node_modules/envinfo": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", + "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" + "bin": { + "envinfo": "dist/cli.js" }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } + "engines": { + "node": ">=4" } }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "node_modules/errno": { + "version": "0.1.8", + "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", + "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", "dev": true, + "optional": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "prr": "~1.0.1" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "bin": { + "errno": "cli.js" } }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/ajv-keywords": { - "version": "3.5.2", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", - "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } }, - "node_modules/ansi-regex": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", - "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "node_modules/error-logger-webpack-plugin": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/error-logger-webpack-plugin/-/error-logger-webpack-plugin-1.1.1.tgz", + "integrity": "sha512-77h8dMaOuwd/KHUaHbdr7ywnfuGJ4UtOkOZUojqa/ZMshqF3dzMtoiH3ZuNhFovS2t1xqYClsXTsK0t13tYSEQ==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 14.15.0", + "npm": ">= 6.14.8" } }, - "node_modules/ansi-styles": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", - "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "node_modules/es-abstract": { + "version": "1.21.1", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", + "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", "dev": true, "dependencies": { - "color-convert": "^1.9.0" + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "es-set-tostringtag": "^2.0.1", + "es-to-primitive": "^1.2.1", + "function-bind": "^1.1.1", + "function.prototype.name": "^1.1.5", + "get-intrinsic": "^1.1.3", + "get-symbol-description": "^1.0.0", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has": "^1.0.3", + "has-property-descriptors": "^1.0.0", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.4", + "is-array-buffer": "^3.0.1", + "is-callable": "^1.2.7", + "is-negative-zero": "^2.0.2", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.10", + "is-weakref": "^1.0.2", + "object-inspect": "^1.12.2", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.4.3", + "safe-regex-test": "^1.0.0", + "string.prototype.trimend": "^1.0.6", + "string.prototype.trimstart": "^1.0.6", + "typed-array-length": "^1.0.4", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.9" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/argparse": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", - "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "node_modules/es-module-lexer": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", + "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", "dev": true }, - "node_modules/array-union": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", - "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/autoprefixer": { - "version": "10.4.16", - "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.16.tgz", - "integrity": "sha512-7vd3UC6xKp0HLfua5IjZlcXvGAGy7cBAXTg2lyQ/8WpNhd6SiZ8Be+xm3FyBSYJx5GKcpRCzBh7RH4/0dnY+uQ==", + "node_modules/es-set-tostringtag": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", + "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/autoprefixer" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "dependencies": { - "browserslist": "^4.21.10", - "caniuse-lite": "^1.0.30001538", - "fraction.js": "^4.3.6", - "normalize-range": "^0.1.2", - "picocolors": "^1.0.0", - "postcss-value-parser": "^4.2.0" - }, - "bin": { - "autoprefixer": "bin/autoprefixer" + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": "^10 || ^12 || >=14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "node": ">= 0.4" } }, - "node_modules/available-typed-arrays": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.5.tgz", - "integrity": "sha512-DMD0KiN46eipeziST1LPP/STfDU0sufISXmjSgvVsoU2tqxctQeASejWcfNtxYKqETM1UxQ8sp2OrSBWpHY6sw==", + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, "engines": { "node": ">= 0.4" }, @@ -1682,812 +3815,813 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/balanced-match": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", - "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", + "node_modules/esbuild": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.4.tgz", + "integrity": "sha512-x7jL0tbRRpv4QUyuDMjONtWFciygUxWaUM1kMX2zWxI0X2YWOt7MSA0g4UdeSiHM8fcYVzpQhKYOycZwxTdZkA==", + "dev": true, + "hasInstallScript": true, + "peer": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.19.4", + "@esbuild/android-arm64": "0.19.4", + "@esbuild/android-x64": "0.19.4", + "@esbuild/darwin-arm64": "0.19.4", + "@esbuild/darwin-x64": "0.19.4", + "@esbuild/freebsd-arm64": "0.19.4", + "@esbuild/freebsd-x64": "0.19.4", + "@esbuild/linux-arm": "0.19.4", + "@esbuild/linux-arm64": "0.19.4", + "@esbuild/linux-ia32": "0.19.4", + "@esbuild/linux-loong64": "0.19.4", + "@esbuild/linux-mips64el": "0.19.4", + "@esbuild/linux-ppc64": "0.19.4", + "@esbuild/linux-riscv64": "0.19.4", + "@esbuild/linux-s390x": "0.19.4", + "@esbuild/linux-x64": "0.19.4", + "@esbuild/netbsd-x64": "0.19.4", + "@esbuild/openbsd-x64": "0.19.4", + "@esbuild/sunos-x64": "0.19.4", + "@esbuild/win32-arm64": "0.19.4", + "@esbuild/win32-ia32": "0.19.4", + "@esbuild/win32-x64": "0.19.4" + } + }, + "node_modules/esbuild-plugin-external-global": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esbuild-plugin-external-global/-/esbuild-plugin-external-global-1.0.1.tgz", + "integrity": "sha512-NDzYHRoShpvLqNcrgV8ZQh61sMIFAry5KLTQV83BPG5iTXCCu7h72SCfJ97bW0GqtuqDD/1aqLbKinI/rNgUsg==", "dev": true }, - "node_modules/bin-check": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", - "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==", + "node_modules/esbuild-plugin-globals": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/esbuild-plugin-globals/-/esbuild-plugin-globals-0.2.0.tgz", + "integrity": "sha512-y+6utQVWrETQWs0J8EGLV5gEOP59mmjX+fKWoQHn4TYwFMaj0FxQYflc566tHuokBCzl+uNW2iIlM1o1jfNy6w==", + "dev": true, + "engines": { + "node": ">=7" + } + }, + "node_modules/escalade": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", + "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", "dev": true, - "dependencies": { - "execa": "^0.7.0", - "executable": "^4.1.0" - }, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/bin-version": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-6.0.0.tgz", - "integrity": "sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==", + "node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true, - "dependencies": { - "execa": "^5.0.0", - "find-versions": "^5.0.0" - }, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.8.0" } }, - "node_modules/bin-version-check": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-5.0.0.tgz", - "integrity": "sha512-Q3FMQnS5eZmrBGqmDXLs4dbAn/f+52voP6ykJYmweSA60t6DyH4UTSwZhtbK5UH+LBoWvDljILUQMLRUtsynsA==", + "node_modules/eslint": { + "version": "8.51.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", + "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", "dev": true, "dependencies": { - "bin-version": "^6.0.0", - "semver": "^7.3.5", - "semver-truncate": "^2.0.0" + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.2", + "@eslint/js": "8.51.0", + "@humanwhocodes/config-array": "^0.11.11", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" }, "engines": { - "node": ">=12" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/bin-version/node_modules/execa": { + "node_modules/eslint-scope": { "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" + "node": ">=8.0.0" } }, - "node_modules/bin-version/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", "dev": true, "engines": { - "node": ">=10" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://opencollective.com/eslint" } }, - "node_modules/bin-version/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "node_modules/eslint/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, "engines": { "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/bin-version/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "node_modules/eslint/node_modules/chalk": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", + "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", "dev": true, "dependencies": { - "path-key": "^3.0.0" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" }, "engines": { - "node": ">=8" - } - }, - "node_modules/boolbase": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", - "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", - "dev": true - }, - "node_modules/brace-expansion": { - "version": "1.1.11", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", - "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/braces": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", - "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", + "node_modules/eslint/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "fill-range": "^7.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/browserslist": { - "version": "4.22.1", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.22.1.tgz", - "integrity": "sha512-FEVc202+2iuClEhZhrWy6ZiAcRLvNMyYcxZ8raemul1DYVOVdFsbqckWLdsixQZCpJlwe77Z3UTalE7jsjnKfQ==", + "node_modules/eslint/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/eslint/node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/browserslist" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], "dependencies": { - "caniuse-lite": "^1.0.30001541", - "electron-to-chromium": "^1.4.535", - "node-releases": "^2.0.13", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" + "ms": "2.1.2" }, "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "node_modules/browserslist-config-enonic": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/browserslist-config-enonic/-/browserslist-config-enonic-1.0.8.tgz", - "integrity": "sha512-X5eXFvoGIeN4Q1So+mTxZCkLgf4UNa5fte+7OM9AGHSbRspKp8foFwuFkwyhXnitRSzDK0QM2qWu1Sirp2svrQ==", - "dev": true, - "engines": { - "node": ">= 14.15.0", - "npm": ">= 6.14.8" + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true - }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", + "node_modules/eslint/node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", "dev": true, "engines": { - "node": ">=10.6.0" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", + "node_modules/eslint/node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", "dev": true, "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, "engines": { - "node": ">=8" + "node": ">=4.0" } }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", + "node_modules/eslint/node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", "dev": true, "dependencies": { - "pump": "^3.0.0" + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", + "node_modules/eslint/node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=8" } }, - "node_modules/caniuse-api": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/caniuse-api/-/caniuse-api-3.0.0.tgz", - "integrity": "sha512-bsTwuIg/BZZK/vreVTYYbSWoe2F+71P7K5QGEX+pT250DZbfU1MQ5prOKpPR+LL6uWKK3KMwMCAS74QB3Um1uw==", + "node_modules/eslint/node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", "dev": true, "dependencies": { - "browserslist": "^4.0.0", - "caniuse-lite": "^1.0.0", - "lodash.memoize": "^4.1.2", - "lodash.uniq": "^4.5.0" + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/caniuse-lite": { - "version": "1.0.30001550", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001550.tgz", - "integrity": "sha512-p82WjBYIypO0ukTsd/FG3Xxs+4tFeaY9pfT4amQL8KWtYH7H9nYwReGAbMTJ0hsmRO8IfDtsS6p3ZWj8+1c2RQ==", - "dev": true, - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/browserslist" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/caniuse-lite" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ] + "node_modules/eslint/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true }, - "node_modules/chalk": { - "version": "2.4.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", - "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "node_modules/eslint/node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "escape-string-regexp": "^1.0.5", - "supports-color": "^5.3.0" + "p-limit": "^3.0.2" }, "engines": { - "node": ">=4" + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/chalk/node_modules/supports-color": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", - "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", "dev": true, "dependencies": { - "has-flag": "^3.0.0" + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" }, "engines": { - "node": ">=4" + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" } }, - "node_modules/chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "node_modules/esquery": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", + "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, "engines": { - "node": ">=6.0" + "node": ">=0.10" } }, - "node_modules/circular-dependency-plugin": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", - "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", "dev": true, "engines": { - "node": ">=6.0.0" + "node": ">=4.0" } }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", "dev": true, "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" + "estraverse": "^5.2.0" }, "engines": { - "node": ">=6" + "node": ">=4.0" } }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", + "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=4.0" } }, - "node_modules/color-convert": { - "version": "1.9.3", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", - "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, - "dependencies": { - "color-name": "1.1.3" + "engines": { + "node": ">=4.0" } }, - "node_modules/color-name": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", - "dev": true - }, - "node_modules/colord": { - "version": "2.9.3", - "resolved": "https://registry.npmjs.org/colord/-/colord-2.9.3.tgz", - "integrity": "sha512-jeC1axXpnb0/2nn/Y1LPuLdgXBLH7aDcHu4KEKfqw3CUhX7ZpfBSlPKyqXE6btIgEzfWtrX3/tyBCaCvXvMkOw==", - "dev": true - }, - "node_modules/colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", - "dev": true - }, - "node_modules/commander": { - "version": "2.20.3", - "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", - "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", - "dev": true - }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", "dev": true, - "dependencies": { - "safe-buffer": "5.2.1" - }, "engines": { - "node": ">= 0.6" + "node": ">=0.10.0" } }, - "node_modules/copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, - "dependencies": { - "is-what": "^3.14.1" - }, - "funding": { - "url": "https://github.com/sponsors/mesqueeb" + "engines": { + "node": ">=0.8.x" } }, - "node_modules/copy-webpack-plugin": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", - "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", + "node_modules/execa": { + "version": "0.7.0", + "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", + "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", "dev": true, "dependencies": { - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.1", - "globby": "^13.1.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" }, "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" + "node": ">=4" } }, - "node_modules/copy-webpack-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", + "node_modules/execa/node_modules/cross-spawn": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", + "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } }, - "node_modules/copy-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/execa/node_modules/lru-cache": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", + "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, - "node_modules/copy-webpack-plugin/node_modules/globby": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", - "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", + "node_modules/execa/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" + "shebang-regex": "^1.0.0" }, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": { + "node_modules/execa/node_modules/shebang-regex": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "which": "bin/which" + } + }, + "node_modules/execa/node_modules/yallist": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", + "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", "dev": true }, - "node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "node_modules/executable": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", + "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "pify": "^2.2.0" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": ">=4" } }, - "node_modules/copy-webpack-plugin/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "node_modules/executable/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/cosmiconfig": { - "version": "8.2.0", - "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", - "integrity": "sha512-3rTMnFJA1tCOPwRxtgF4wd7Ab2qvDbL8jX+3smjIbS4HlZBagTlpERbdN7iAbWlrfxE3M8c27kTwTawQ7st+OQ==", + "node_modules/ext-list": { + "version": "2.2.2", + "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", + "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", "dev": true, "dependencies": { - "import-fresh": "^3.2.1", - "js-yaml": "^4.1.0", - "parse-json": "^5.0.0", - "path-type": "^4.0.0" + "mime-db": "^1.28.0" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/d-fischer" + "node": ">=0.10.0" } }, - "node_modules/cross-spawn": { - "version": "7.0.3", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.3.tgz", - "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "node_modules/ext-name": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", + "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", "dev": true, "dependencies": { - "path-key": "^3.1.0", - "shebang-command": "^2.0.0", - "which": "^2.0.1" + "ext-list": "^2.0.0", + "sort-keys-length": "^1.0.0" }, "engines": { - "node": ">= 8" + "node": ">=4" } }, - "node_modules/css-declaration-sorter": { - "version": "6.4.0", - "resolved": "https://registry.npmjs.org/css-declaration-sorter/-/css-declaration-sorter-6.4.0.tgz", - "integrity": "sha512-jDfsatwWMWN0MODAFuHszfjphEXfNw9JUAhmY4pLu3TyTU+ohUpsbVtbU+1MZn4a47D9kqh03i4eyOm+74+zew==", + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", + "dev": true + }, + "node_modules/fast-glob": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, - "engines": { - "node": "^10 || ^12 || >=14" + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" }, - "peerDependencies": { - "postcss": "^8.0.9" + "engines": { + "node": ">=8.6.0" } }, - "node_modules/css-loader": { - "version": "6.8.1", - "resolved": "https://registry.npmjs.org/css-loader/-/css-loader-6.8.1.tgz", - "integrity": "sha512-xDAXtEVGlD0gJ07iclwWVkLoZOpEvAWaSyf6W18S2pOC//K8+qUDIx8IIT3D+HjnmkJPQeesOPv5aiUaJsCM2g==", + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", "dev": true, "dependencies": { - "icss-utils": "^5.1.0", - "postcss": "^8.4.21", - "postcss-modules-extract-imports": "^3.0.0", - "postcss-modules-local-by-default": "^4.0.3", - "postcss-modules-scope": "^3.0.0", - "postcss-modules-values": "^4.0.0", - "postcss-value-parser": "^4.2.0", - "semver": "^7.3.8" + "is-glob": "^4.0.1" }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" + "node": ">= 6" } }, - "node_modules/css-select": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/css-select/-/css-select-5.1.0.tgz", - "integrity": "sha512-nwoRF1rvRRnnCqqY7updORDsuqKzqYJ28+oSMaJMMgOauh3fvwHqMS7EZpIPqK8GL+g9mKxF1vP/ZjSeNjEVHg==", + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastest-levenshtein": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", + "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.11.0", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", + "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", "dev": true, "dependencies": { - "boolbase": "^1.0.0", - "css-what": "^6.1.0", - "domhandler": "^5.0.2", - "domutils": "^3.0.1", - "nth-check": "^2.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/fb55" + "reusify": "^1.0.4" } }, - "node_modules/css-tree": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.3.1.tgz", - "integrity": "sha512-6Fv1DV/TYw//QF5IzQdqsNDjx/wc8TrMBZsqjL9eW01tWb7R7k/mq+/VXfJCl7SoD5emsJop9cOByJZfs8hYIw==", + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", "dev": true, "dependencies": { - "mdn-data": "2.0.30", - "source-map-js": "^1.0.1" + "flat-cache": "^3.0.4" }, "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0" - } - }, - "node_modules/css-what": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/css-what/-/css-what-6.1.0.tgz", - "integrity": "sha512-HTUrgRJ7r4dsZKU6GjmpfRK1O76h97Z8MfS1G0FozR+oF2kG6Vfe8JE6zwrkbxigziPHinCJ+gCPjA9EaBDtRw==", + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/file-type": { + "version": "17.1.6", + "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz", + "integrity": "sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==", "dev": true, + "dependencies": { + "readable-web-to-node-stream": "^3.0.2", + "strtok3": "^7.0.0-alpha.9", + "token-types": "^5.0.0-alpha.2" + }, "engines": { - "node": ">= 6" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "url": "https://github.com/sponsors/fb55" + "url": "https://github.com/sindresorhus/file-type?sponsor=1" } }, - "node_modules/cssesc": { + "node_modules/filename-reserved-regex": { "version": "3.0.0", - "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", - "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz", + "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==", "dev": true, - "bin": { - "cssesc": "bin/cssesc" - }, "engines": { - "node": ">=4" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cssnano": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/cssnano/-/cssnano-6.0.1.tgz", - "integrity": "sha512-fVO1JdJ0LSdIGJq68eIxOqFpIJrZqXUsBt8fkrBcztCQqAjQD51OhZp7tc0ImcbwXD4k7ny84QTV90nZhmqbkg==", + "node_modules/filenamify": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-5.1.1.tgz", + "integrity": "sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==", "dev": true, "dependencies": { - "cssnano-preset-default": "^6.0.1", - "lilconfig": "^2.1.0" + "filename-reserved-regex": "^3.0.0", + "strip-outer": "^2.0.0", + "trim-repeated": "^2.0.0" }, "engines": { - "node": "^14 || ^16 || >=18.0" + "node": ">=12.20" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/cssnano" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/cssnano-preset-default": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/cssnano-preset-default/-/cssnano-preset-default-6.0.1.tgz", - "integrity": "sha512-7VzyFZ5zEB1+l1nToKyrRkuaJIx0zi/1npjvZfbBwbtNTzhLtlvYraK/7/uqmX2Wb2aQtd983uuGw79jAjLSuQ==", + "node_modules/fill-range": { + "version": "7.0.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", + "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", "dev": true, "dependencies": { - "css-declaration-sorter": "^6.3.1", - "cssnano-utils": "^4.0.0", - "postcss-calc": "^9.0.0", - "postcss-colormin": "^6.0.0", - "postcss-convert-values": "^6.0.0", - "postcss-discard-comments": "^6.0.0", - "postcss-discard-duplicates": "^6.0.0", - "postcss-discard-empty": "^6.0.0", - "postcss-discard-overridden": "^6.0.0", - "postcss-merge-longhand": "^6.0.0", - "postcss-merge-rules": "^6.0.1", - "postcss-minify-font-values": "^6.0.0", - "postcss-minify-gradients": "^6.0.0", - "postcss-minify-params": "^6.0.0", - "postcss-minify-selectors": "^6.0.0", - "postcss-normalize-charset": "^6.0.0", - "postcss-normalize-display-values": "^6.0.0", - "postcss-normalize-positions": "^6.0.0", - "postcss-normalize-repeat-style": "^6.0.0", - "postcss-normalize-string": "^6.0.0", - "postcss-normalize-timing-functions": "^6.0.0", - "postcss-normalize-unicode": "^6.0.0", - "postcss-normalize-url": "^6.0.0", - "postcss-normalize-whitespace": "^6.0.0", - "postcss-ordered-values": "^6.0.0", - "postcss-reduce-initial": "^6.0.0", - "postcss-reduce-transforms": "^6.0.0", - "postcss-svgo": "^6.0.0", - "postcss-unique-selectors": "^6.0.0" + "to-regex-range": "^5.0.1" }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=8" } }, - "node_modules/cssnano-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/cssnano-utils/-/cssnano-utils-4.0.0.tgz", - "integrity": "sha512-Z39TLP+1E0KUcd7LGyF4qMfu8ZufI0rDzhdyAMsa/8UyNUU8wpS0fhdBxbQbv32r64ea00h4878gommRVg2BHw==", + "node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", "dev": true, - "engines": { - "node": "^14 || ^16 || >=18.0" + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" }, - "peerDependencies": { - "postcss": "^8.2.15" + "engines": { + "node": ">=8" } }, - "node_modules/csso": { - "version": "5.0.5", - "resolved": "https://registry.npmjs.org/csso/-/csso-5.0.5.tgz", - "integrity": "sha512-0LrrStPOdJj+SPCCrGhzryycLjwcgUSHBtxNA8aIDxf0GLsRh1cKYhB00Gd1lDOS4yGH69+SNn13+TWbVHETFQ==", + "node_modules/find-versions": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", + "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", "dev": true, "dependencies": { - "css-tree": "~2.2.0" + "semver-regex": "^4.0.5" }, "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/csso/node_modules/css-tree": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/css-tree/-/css-tree-2.2.1.tgz", - "integrity": "sha512-OA0mILzGc1kCOCSJerOeqDxDQ4HOh+G8NbOJFOTgOCzpw7fCBubk0fEyxp8AgOL/jvLgYA/uV0cMbe43ElF1JA==", + "node_modules/fine-uploader": { + "version": "5.16.2", + "resolved": "https://registry.npmjs.org/fine-uploader/-/fine-uploader-5.16.2.tgz", + "integrity": "sha1-DYeNoc0nU/gGg6wJHfXa/5/7jEQ=" + }, + "node_modules/flat-cache": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", + "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", "dev": true, "dependencies": { - "mdn-data": "2.0.28", - "source-map-js": "^1.0.1" + "flatted": "^3.1.0", + "rimraf": "^3.0.2" }, "engines": { - "node": "^10 || ^12.20.0 || ^14.13.0 || >=15.0.0", - "npm": ">=7.0.0" + "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/csso/node_modules/mdn-data": { - "version": "2.0.28", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.28.tgz", - "integrity": "sha512-aylIc7Z9y4yzHYAJNuESG3hfhC+0Ibp/MAMiaOZgNv4pmEdFyfZhhhny4MNiAfWdBQ1RQ2mfDWmM1x8SvGyp8g==", + "node_modules/flatted": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.1.tgz", + "integrity": "sha512-OMQjaErSFHmHqZe+PSidH5n8j3O0F2DdnVh8JB4j4eUQ2k6KvB0qGfrKIhapvez5JerBbmWkaLYUYWISaESoXg==", "dev": true }, - "node_modules/debug": { - "version": "3.2.7", - "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", - "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", "dev": true, - "optional": true, "dependencies": { - "ms": "^2.1.1" + "is-callable": "^1.1.3" } }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", + "node_modules/foreground-child": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", + "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", "dev": true, "dependencies": { - "mimic-response": "^3.1.0" + "cross-spawn": "^7.0.0", + "signal-exit": "^4.0.1" }, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", + "node_modules/foreground-child/node_modules/signal-exit": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", + "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", "dev": true, "engines": { - "node": ">=10" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/deep-is": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", - "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "node_modules/fraction.js": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz", + "integrity": "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==", + "dev": true, + "engines": { + "node": "*" + }, + "funding": { + "type": "patreon", + "url": "https://github.com/sponsors/rawify" + } + }, + "node_modules/fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + }, + "engines": { + "node": ">=14.14" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", "dev": true, + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=10" + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" } }, - "node_modules/define-properties": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", - "integrity": "sha512-uckOqKcfaVvtBdsVkdPv3XjveQJsNQqmhXgRi8uhvWWuPYZCNlzT8qAyblUgNoXdHdjMTzAqeGjAoli8f+bzPA==", + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/function.prototype.name": { + "version": "1.1.5", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", + "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", "dev": true, "dependencies": { - "has-property-descriptors": "^1.0.0", - "object-keys": "^1.1.1" + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "es-abstract": "^1.19.0", + "functions-have-names": "^1.2.2" }, "engines": { "node": ">= 0.4" @@ -2496,1708 +4630,1699 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/dir-glob": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", - "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", "dev": true, - "dependencies": { - "path-type": "^4.0.0" - }, "engines": { - "node": ">=8" + "node": "6.* || 8.* || >= 10.*" } }, - "node_modules/doctrine": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", - "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "node_modules/get-intrinsic": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", + "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", "dev": true, "dependencies": { - "esutils": "^2.0.2" + "function-bind": "^1.1.1", + "has": "^1.0.3", + "has-symbols": "^1.0.3" }, - "engines": { - "node": ">=6.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/dom-serializer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/dom-serializer/-/dom-serializer-2.0.0.tgz", - "integrity": "sha512-wIkAryiqt/nV5EQKqQpo3SToSOV9J0DnbJqwK7Wv/Trc92zIAYZ4FlMu+JPFW1DfGFt81ZTCGgDEabffXeLyJg==", + "node_modules/get-stdin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", "dev": true, - "dependencies": { - "domelementtype": "^2.3.0", - "domhandler": "^5.0.2", - "entities": "^4.2.0" + "engines": { + "node": ">=12" }, "funding": { - "url": "https://github.com/cheeriojs/dom-serializer?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/domelementtype": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/domelementtype/-/domelementtype-2.3.0.tgz", - "integrity": "sha512-OLETBj6w0OsagBwdXnPdN0cnMfF9opN69co+7ZrbfPGrdpPVNBUj02spi6B1N7wChLQiPn4CSH/zJvXw56gmHw==", + "node_modules/get-stream": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", + "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/fb55" - } - ] + "engines": { + "node": ">=4" + } }, - "node_modules/domhandler": { - "version": "5.0.3", - "resolved": "https://registry.npmjs.org/domhandler/-/domhandler-5.0.3.tgz", - "integrity": "sha512-cgwlv/1iFQiFnU96XXgROh8xTeetsnJiDsTc7TYCLFd9+/WNkIqPTxiM/8pSd8VIrhXGTf1Ny1q1hquVqDJB5w==", + "node_modules/get-symbol-description": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", + "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", "dev": true, "dependencies": { - "domelementtype": "^2.3.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.1" }, "engines": { - "node": ">= 4" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/fb55/domhandler?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/dompurify": { - "version": "3.0.6", - "resolved": "https://registry.npmjs.org/dompurify/-/dompurify-3.0.6.tgz", - "integrity": "sha512-ilkD8YEnnGh1zJ240uJsW7AzE+2qpbOUYjacomn3AvJ6J4JhKGSZ2nh4wUIXPZrEPppaCLx5jFe8T89Rk8tQ7w==" - }, - "node_modules/domutils": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/domutils/-/domutils-3.1.0.tgz", - "integrity": "sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==", + "node_modules/glob": { + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, "dependencies": { - "dom-serializer": "^2.0.0", - "domelementtype": "^2.3.0", - "domhandler": "^5.0.3" + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/fb55/domutils?sponsor=1" - } - }, - "node_modules/eastasianwidth": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", - "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==", - "dev": true - }, - "node_modules/electron-to-chromium": { - "version": "1.4.557", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.557.tgz", - "integrity": "sha512-6x0zsxyMXpnMJnHrondrD3SuAeKcwij9S+83j2qHAQPXbGTDDfgImzzwgGlzrIcXbHQ42tkG4qA6U860cImNhw==", - "dev": true - }, - "node_modules/emoji-regex": { - "version": "9.2.2", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", - "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/enhanced-resolve": { - "version": "5.15.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", - "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", "dev": true, "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" + "is-glob": "^4.0.3" }, "engines": { "node": ">=10.13.0" } }, - "node_modules/enonic-admin-artifacts": { - "version": "1.8.5", - "resolved": "https://registry.npmjs.org/enonic-admin-artifacts/-/enonic-admin-artifacts-1.8.5.tgz", - "integrity": "sha512-J4J7EJfynyO4NvpmM2dYBUGPoIC5W+fyulNyzKqcgT39ZvyJDLnCHQo8z7XSshcfEzkyQXYx7P6ClbWzLM/5mQ==", + "node_modules/glob-to-regexp": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", + "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", + "dev": true + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", "dev": true, - "engines": { - "node": ">= 16.16.0", - "npm": ">= 8.11.0" + "dependencies": { + "balanced-match": "^1.0.0" } }, - "node_modules/entities": { - "version": "4.4.0", - "resolved": "https://registry.npmjs.org/entities/-/entities-4.4.0.tgz", - "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", + "node_modules/glob/node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, "engines": { - "node": ">=0.12" + "node": ">=16 || 14 >=14.17" }, "funding": { - "url": "https://github.com/fb55/entities?sponsor=1" + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", + "node_modules/globals": { + "version": "13.21.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", + "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", "dev": true, - "bin": { - "envinfo": "dist/cli.js" + "dependencies": { + "type-fest": "^0.20.2" }, "engines": { - "node": ">=4" - } - }, - "node_modules/errno": { - "version": "0.1.8", - "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", - "integrity": "sha512-dJ6oBr5SQ1VSd9qkk7ByRgb/1SH4JZjCHSW/mr63/QcXO9zLVxvJ6Oy13nio03rxpSnVDDjFor75SjVeZWPW/A==", - "dev": true, - "optional": true, - "dependencies": { - "prr": "~1.0.1" + "node": ">=8" }, - "bin": { - "errno": "cli.js" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/error-ex": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", - "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "node_modules/globalthis": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", + "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", "dev": true, "dependencies": { - "is-arrayish": "^0.2.1" - } - }, - "node_modules/error-logger-webpack-plugin": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/error-logger-webpack-plugin/-/error-logger-webpack-plugin-1.1.1.tgz", - "integrity": "sha512-77h8dMaOuwd/KHUaHbdr7ywnfuGJ4UtOkOZUojqa/ZMshqF3dzMtoiH3ZuNhFovS2t1xqYClsXTsK0t13tYSEQ==", - "dev": true, + "define-properties": "^1.1.3" + }, "engines": { - "node": ">= 14.15.0", - "npm": ">= 6.14.8" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-abstract": { - "version": "1.21.1", - "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", - "integrity": "sha512-QudMsPOz86xYz/1dG1OuGBKOELjCh99IIWHLzy5znUB6j8xG2yMA7bfTV86VSqKF+Y/H08vQPR+9jyXpuC6hfg==", - "dev": true, - "dependencies": { - "available-typed-arrays": "^1.0.5", - "call-bind": "^1.0.2", - "es-set-tostringtag": "^2.0.1", - "es-to-primitive": "^1.2.1", - "function-bind": "^1.1.1", - "function.prototype.name": "^1.1.5", - "get-intrinsic": "^1.1.3", - "get-symbol-description": "^1.0.0", - "globalthis": "^1.0.3", - "gopd": "^1.0.1", - "has": "^1.0.3", - "has-property-descriptors": "^1.0.0", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "internal-slot": "^1.0.4", - "is-array-buffer": "^3.0.1", - "is-callable": "^1.2.7", - "is-negative-zero": "^2.0.2", - "is-regex": "^1.1.4", - "is-shared-array-buffer": "^1.0.2", - "is-string": "^1.0.7", - "is-typed-array": "^1.1.10", - "is-weakref": "^1.0.2", - "object-inspect": "^1.12.2", - "object-keys": "^1.1.1", - "object.assign": "^4.1.4", - "regexp.prototype.flags": "^1.4.3", - "safe-regex-test": "^1.0.0", - "string.prototype.trimend": "^1.0.6", - "string.prototype.trimstart": "^1.0.6", - "typed-array-length": "^1.0.4", - "unbox-primitive": "^1.0.2", - "which-typed-array": "^1.1.9" + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/es-module-lexer": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", - "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", - "dev": true - }, - "node_modules/es-set-tostringtag": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.1.tgz", - "integrity": "sha512-g3OMbtlwY3QewlqAiMLI47KywjWZoEytKr8pf6iTC8uJq5bIAH52Z9pnQ8pVL6whrCto53JZDuUIsifGeLorTg==", + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "has-tostringtag": "^1.0.0" + "get-intrinsic": "^1.1.3" }, - "engines": { - "node": ">= 0.4" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/es-to-primitive": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", - "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "node_modules/got": { + "version": "11.8.6", + "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", + "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", "dev": true, "dependencies": { - "is-callable": "^1.1.4", - "is-date-object": "^1.0.1", - "is-symbol": "^1.0.2" + "@sindresorhus/is": "^4.0.0", + "@szmarczak/http-timer": "^4.0.5", + "@types/cacheable-request": "^6.0.1", + "@types/responselike": "^1.0.0", + "cacheable-lookup": "^5.0.3", + "cacheable-request": "^7.0.2", + "decompress-response": "^6.0.0", + "http2-wrapper": "^1.0.0-beta.5.2", + "lowercase-keys": "^2.0.0", + "p-cancelable": "^2.0.0", + "responselike": "^2.0.0" }, "engines": { - "node": ">= 0.4" + "node": ">=10.19.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sindresorhus/got?sponsor=1" } }, - "node_modules/escalade": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", - "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, "engines": { - "node": ">=6" + "node": ">= 0.4.0" } }, - "node_modules/escape-string-regexp": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true, "engines": { - "node": ">=0.8.0" + "node": ">=4" } }, - "node_modules/eslint": { - "version": "8.51.0", - "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.51.0.tgz", - "integrity": "sha512-2WuxRZBrlwnXi+/vFSJyjMqrNjtJqiasMzehF0shoLaW7DzS3/9Yvrmq5JiT66+pNjiX4UBnLDiKHcWAr/OInA==", + "node_modules/has-property-descriptors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", + "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", "dev": true, "dependencies": { - "@eslint-community/eslint-utils": "^4.2.0", - "@eslint-community/regexpp": "^4.6.1", - "@eslint/eslintrc": "^2.1.2", - "@eslint/js": "8.51.0", - "@humanwhocodes/config-array": "^0.11.11", - "@humanwhocodes/module-importer": "^1.0.1", - "@nodelib/fs.walk": "^1.2.8", - "ajv": "^6.12.4", - "chalk": "^4.0.0", - "cross-spawn": "^7.0.2", - "debug": "^4.3.2", - "doctrine": "^3.0.0", - "escape-string-regexp": "^4.0.0", - "eslint-scope": "^7.2.2", - "eslint-visitor-keys": "^3.4.3", - "espree": "^9.6.1", - "esquery": "^1.4.2", - "esutils": "^2.0.2", - "fast-deep-equal": "^3.1.3", - "file-entry-cache": "^6.0.1", - "find-up": "^5.0.0", - "glob-parent": "^6.0.2", - "globals": "^13.19.0", - "graphemer": "^1.4.0", - "ignore": "^5.2.0", - "imurmurhash": "^0.1.4", - "is-glob": "^4.0.0", - "is-path-inside": "^3.0.3", - "js-yaml": "^4.1.0", - "json-stable-stringify-without-jsonify": "^1.0.1", - "levn": "^0.4.1", - "lodash.merge": "^4.6.2", - "minimatch": "^3.1.2", - "natural-compare": "^1.4.0", - "optionator": "^0.9.3", - "strip-ansi": "^6.0.1", - "text-table": "^0.2.0" - }, - "bin": { - "eslint": "bin/eslint.js" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "get-intrinsic": "^1.1.1" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, "engines": { - "node": ">=8.0.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint-visitor-keys": { - "version": "3.4.3", - "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", - "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", "dev": true, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "node": ">= 0.4" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/has-tostringtag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", + "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "has-symbols": "^1.0.2" }, "engines": { - "node": ">=8" + "node": ">= 0.4" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/eslint/node_modules/chalk": { + "node_modules/hasher": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/hasher/-/hasher-1.2.0.tgz", + "integrity": "sha1-i1NBw0lhJLBySshVX7uMo2Pru3M=", + "dependencies": { + "signals": ">0.7 <2.0" + } + }, + "node_modules/hosted-git-info": { + "version": "2.8.9", + "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", + "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", + "dev": true + }, + "node_modules/http-cache-semantics": { "version": "4.1.1", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.1.tgz", - "integrity": "sha512-diHzdDKxcU+bAsUboHLPEDQiw0qEe0qd7SYUn3HgcFlWgbDcfLGswOHYeGrHKzG9z6UYf01d9VFMfZxPM1xZSg==", + "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", + "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", + "dev": true + }, + "node_modules/http2-wrapper": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", + "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", "dev": true, "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" + "quick-lru": "^5.1.1", + "resolve-alpn": "^1.0.0" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "node": ">=10.19.0" } }, - "node_modules/eslint/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "safer-buffer": ">= 2.1.2 < 3.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=0.10.0" } }, - "node_modules/eslint/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/eslint/node_modules/debug": { - "version": "4.3.3", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", - "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "node_modules/icss-utils": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", + "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", "dev": true, - "dependencies": { - "ms": "2.1.2" - }, "engines": { - "node": ">=6.0" + "node": "^10 || ^12 || >= 14" }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/eslint/node_modules/escape-string-regexp": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", - "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.2.4", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", + "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", "dev": true, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 4" } }, - "node_modules/eslint/node_modules/eslint-scope": { - "version": "7.2.2", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", - "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "node_modules/image-size": { + "version": "0.5.5", + "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", + "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", "dev": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^5.2.0" + "optional": true, + "bin": { + "image-size": "bin/image-size.js" }, "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" - }, - "funding": { - "url": "https://opencollective.com/eslint" + "node": ">=0.10.0" } }, - "node_modules/eslint/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, "engines": { - "node": ">=4.0" + "node": ">=6" } }, - "node_modules/eslint/node_modules/find-up": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", - "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "node_modules/import-local": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", + "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", "dev": true, "dependencies": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" }, - "engines": { - "node": ">=10" + "bin": { + "import-local-fixture": "fixtures/cli.js" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "engines": { + "node": ">=8" } }, - "node_modules/eslint/node_modules/is-path-inside": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", - "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", "dev": true, "engines": { - "node": ">=8" + "node": ">=0.8.19" } }, - "node_modules/eslint/node_modules/locate-path": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", - "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "dependencies": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "once": "^1.3.0", + "wrappy": "1" } }, - "node_modules/eslint/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", "dev": true }, - "node_modules/eslint/node_modules/p-locate": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", - "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "node_modules/internal-slot": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", + "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", "dev": true, "dependencies": { - "p-limit": "^3.0.2" + "get-intrinsic": "^1.1.3", + "has": "^1.0.3", + "side-channel": "^1.0.4" }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">= 0.4" } }, - "node_modules/espree": { - "version": "9.6.1", - "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", - "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "node_modules/is-array-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", + "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", "dev": true, "dependencies": { - "acorn": "^8.9.0", - "acorn-jsx": "^5.3.2", - "eslint-visitor-keys": "^3.4.1" - }, - "engines": { - "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-typed-array": "^1.1.10" }, "funding": { - "url": "https://opencollective.com/eslint" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/esquery": { - "version": "1.4.2", - "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.4.2.tgz", - "integrity": "sha512-JVSoLdTlTDkmjFmab7H/9SL9qGSyjElT3myyKp7krqjVFQCDLmj1QFaCLRFBszBKI0XVZaiiXvuPIX3ZwHe1Ng==", + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "dev": true + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", "dev": true, "dependencies": { - "estraverse": "^5.1.0" + "has-bigints": "^1.0.1" }, - "engines": { - "node": ">=0.10" - } - }, - "node_modules/esquery/node_modules/estraverse": { - "version": "5.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", - "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", - "dev": true, - "engines": { - "node": ">=4.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/esrecurse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", - "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", "dev": true, "dependencies": { - "estraverse": "^5.2.0" + "binary-extensions": "^2.0.0" }, "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/node_modules/estraverse": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.2.0.tgz", - "integrity": "sha512-BxbNGGNm0RyRYvUdHpIwv9IWzeM9XClbOxwoATuFdOE7ZE6wHL+HQ5T8hoPM+zHvmKzzsEqhgy0GrQ5X13afiQ==", - "dev": true, - "engines": { - "node": ">=4.0" + "node": ">=8" } }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, "engines": { - "node": ">=4.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/esutils": { - "version": "2.0.3", - "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", - "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "node_modules/is-core-module": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", + "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", "dev": true, - "engines": { - "node": ">=0.8.x" + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", "dev": true, "dependencies": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/execa/node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", "dev": true, - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/execa/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" + "engines": { + "node": ">=8" } }, - "node_modules/execa/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", "dev": true, "dependencies": { - "shebang-regex": "^1.0.0" + "is-extglob": "^2.1.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/execa/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "node_modules/is-negative-zero": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", + "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/execa/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" + "engines": { + "node": ">=0.12.0" } }, - "node_modules/execa/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true - }, - "node_modules/executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", "dev": true, "dependencies": { - "pify": "^2.2.0" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/executable/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "node_modules/is-plain-obj": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", + "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/ext-list": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", - "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", "dev": true, "dependencies": { - "mime-db": "^1.28.0" + "isobject": "^3.0.1" }, "engines": { "node": ">=0.10.0" } }, - "node_modules/ext-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", - "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", "dev": true, "dependencies": { - "ext-list": "^2.0.0", - "sort-keys-length": "^1.0.0" + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">=4" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fast-deep-equal": { - "version": "3.1.3", - "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", - "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==", - "dev": true - }, - "node_modules/fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "node_modules/is-shared-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", + "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", "dev": true, "dependencies": { - "@nodelib/fs.stat": "^2.0.2", - "@nodelib/fs.walk": "^1.2.3", - "glob-parent": "^5.1.2", - "merge2": "^1.3.0", - "micromatch": "^4.0.4" + "call-bind": "^1.0.2" }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", + "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "dev": true, "engines": { - "node": ">=8.6.0" + "node": ">=0.10.0" } }, - "node_modules/fast-glob/node_modules/glob-parent": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", - "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", "dev": true, "dependencies": { - "is-glob": "^4.0.1" + "has-tostringtag": "^1.0.0" }, "engines": { - "node": ">= 6" + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/fast-json-stable-stringify": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", - "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", - "dev": true - }, - "node_modules/fast-levenshtein": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", - "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", - "dev": true - }, - "node_modules/fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true - }, - "node_modules/fastq": { - "version": "1.11.0", - "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", - "integrity": "sha512-7Eczs8gIPDrVzT+EksYBcupqMyxSHXXrHOLRRxU2/DicV8789MRBRR8+Hc2uWzUupOs4YS4JzBmBxjjCVBxD/g==", + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", "dev": true, "dependencies": { - "reusify": "^1.0.4" + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/file-entry-cache": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", - "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "node_modules/is-typed-array": { + "version": "1.1.10", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", + "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", "dev": true, "dependencies": { - "flat-cache": "^3.0.4" + "available-typed-arrays": "^1.0.5", + "call-bind": "^1.0.2", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" }, - "engines": { - "node": "^10.12.0 || >=12.0.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/file-type": { - "version": "17.1.6", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz", - "integrity": "sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==", + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", "dev": true, "dependencies": { - "readable-web-to-node-stream": "^3.0.2", - "strtok3": "^7.0.0-alpha.9", - "token-types": "^5.0.0-alpha.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + "call-bind": "^1.0.2" }, "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/filename-reserved-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz", - "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==", + "node_modules/is-what": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", + "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", "dev": true, "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=0.10.0" } }, - "node_modules/filenamify": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-5.1.1.tgz", - "integrity": "sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==", + "node_modules/jackspeak": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.5.tgz", + "integrity": "sha512-Ratx+B8WeXLAtRJn26hrhY8S1+Jz6pxPMrkrdkgb/NstTNiqMhX0/oFVu5wX+g5n6JlEu2LPsDJmY8nRP4+alw==", "dev": true, "dependencies": { - "filename-reserved-regex": "^3.0.0", - "strip-outer": "^2.0.0", - "trim-repeated": "^2.0.0" + "@isaacs/cliui": "^8.0.2" }, "engines": { - "node": ">=12.20" + "node": ">=14" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/sponsors/isaacs" + }, + "optionalDependencies": { + "@pkgjs/parseargs": "^0.11.0" } }, - "node_modules/fill-range": { - "version": "7.0.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", - "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", + "node_modules/jest-worker": { + "version": "27.4.5", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.5.tgz", + "integrity": "sha512-f2s8kEdy15cv9r7q4KkzGXvlY0JTcmCbMHZBfSQDwW77REr45IDWwd0lksDFeVHH2jJ5pqb90T77XscrjeGzzg==", "dev": true, "dependencies": { - "to-regex-range": "^5.0.1" + "@types/node": "*", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" }, "engines": { - "node": ">=8" + "node": ">= 10.13.0" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "node_modules/jest-worker/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, "engines": { "node": ">=8" } }, - "node_modules/find-versions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", - "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "dependencies": { - "semver-regex": "^4.0.5" + "has-flag": "^4.0.0" }, "engines": { - "node": ">=12" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/fine-uploader": { - "version": "5.16.2", - "resolved": "https://registry.npmjs.org/fine-uploader/-/fine-uploader-5.16.2.tgz", - "integrity": "sha1-DYeNoc0nU/gGg6wJHfXa/5/7jEQ=" + "node_modules/jiti": { + "version": "1.18.2", + "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz", + "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==", + "dev": true, + "bin": { + "jiti": "bin/jiti.js" + } }, - "node_modules/flat-cache": { - "version": "3.0.4", - "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.0.4.tgz", - "integrity": "sha512-dm9s5Pw7Jc0GvMYbshN6zchCA9RgQlzzEZX3vylR9IqFfS8XciblUXOKfW6SiuJ0e13eDYZoZV5wdrev7P3Nwg==", + "node_modules/joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", "dev": true, - "dependencies": { - "flatted": "^3.1.0", - "rimraf": "^3.0.2" - }, "engines": { - "node": "^10.12.0 || >=12.0.0" + "node": ">=10" } }, - "node_modules/flatted": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.2.1.tgz", - "integrity": "sha512-OMQjaErSFHmHqZe+PSidH5n8j3O0F2DdnVh8JB4j4eUQ2k6KvB0qGfrKIhapvez5JerBbmWkaLYUYWISaESoXg==", - "dev": true + "node_modules/jquery": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", + "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" }, - "node_modules/for-each": { - "version": "0.3.3", - "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", - "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "node_modules/jquery-simulate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/jquery-simulate/-/jquery-simulate-1.0.2.tgz", + "integrity": "sha512-Bq610fSrwTwvH5d06z5oskYaX/79s0BNrKiJZjZOiXRib3iL4ZkSn/wvLwzhf3P9KeXCEpk9wlIaGui/1arOpQ==" + }, + "node_modules/jquery-ui": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.2.tgz", + "integrity": "sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q==", "dev": true, "dependencies": { - "is-callable": "^1.1.3" + "jquery": ">=1.8.0 <4.0.0" } }, - "node_modules/foreground-child": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/foreground-child/-/foreground-child-3.1.1.tgz", - "integrity": "sha512-TMKDUnIte6bfb5nWv7V/caI169OHgvwjb7V4WkeUvbQQdjr5rWKqHFiKWb/fcOwB+CzBT+qbWjvj+DVwRskpIg==", - "dev": true, + "node_modules/jquery-ui-dist": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/jquery-ui-dist/-/jquery-ui-dist-1.13.2.tgz", + "integrity": "sha512-oVDRd1NLtTbBwpRKAYdIRgpWVDzeBhfy7Gu0RmY6JEaZtmBq6kDn1pm5SgDiAotrnDS+RoTRXO6xvcNTxA9tOA==", "dependencies": { - "cross-spawn": "^7.0.0", - "signal-exit": "^4.0.1" - }, - "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "jquery": ">=1.8.0 <4.0.0" } }, - "node_modules/foreground-child/node_modules/signal-exit": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-4.0.2.tgz", - "integrity": "sha512-MY2/qGx4enyjprQnFaZsHib3Yadh3IXyV2C321GY0pjGfVBu4un0uDJkwgdxqO+Rdx8JMT8IfJIRwbYVz3Ob3Q==", + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", "dev": true, - "engines": { - "node": ">=14" + "dependencies": { + "argparse": "^2.0.1" }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "bin": { + "js-yaml": "bin/js-yaml.js" } }, - "node_modules/fraction.js": { - "version": "4.3.6", - "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.3.6.tgz", - "integrity": "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==", + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-better-errors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", + "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", + "dev": true + }, + "node_modules/jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", "dev": true, - "engines": { - "node": "*" + "dependencies": { + "universalify": "^2.0.0" }, - "funding": { - "type": "patreon", - "url": "https://github.com/sponsors/rawify" + "optionalDependencies": { + "graceful-fs": "^4.1.6" } }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", - "dev": true + "node_modules/keyv": { + "version": "4.5.2", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", + "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } }, - "node_modules/function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", - "dev": true + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } }, - "node_modules/function.prototype.name": { - "version": "1.1.5", - "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.5.tgz", - "integrity": "sha512-uN7m/BzVKQnCUF/iW8jYea67v++2u7m5UgENbHRtdDVclOUP+FMPlCNdmk0h/ysGyo2tavMJEDqJAkJdRa1vMA==", + "node_modules/less": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", + "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "es-abstract": "^1.19.0", - "functions-have-names": "^1.2.2" + "copy-anything": "^2.0.1", + "parse-node-version": "^1.0.1", + "tslib": "^2.3.0" + }, + "bin": { + "lessc": "bin/lessc" }, "engines": { - "node": ">= 0.4" + "node": ">=6" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "optionalDependencies": { + "errno": "^0.1.1", + "graceful-fs": "^4.1.2", + "image-size": "~0.5.0", + "make-dir": "^2.1.0", + "mime": "^1.4.1", + "needle": "^3.1.0", + "source-map": "~0.6.0" } }, - "node_modules/functions-have-names": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", - "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "node_modules/less-loader": { + "version": "11.1.3", + "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.3.tgz", + "integrity": "sha512-A5b7O8dH9xpxvkosNrP0dFp2i/dISOJa9WwGF3WJflfqIERE2ybxh1BFDj5CovC2+jCE4M354mk90hN6ziXlVw==", "dev": true, + "engines": { + "node": ">= 14.15.0" + }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "less": "^3.5.0 || ^4.0.0", + "webpack": "^5.0.0" } }, - "node_modules/get-intrinsic": { - "version": "1.1.3", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", - "integrity": "sha512-QJVz1Tj7MS099PevUG5jvnt9tSkXN8K14dxQlikJuPt4uD9hHAHjLyLBiLR5zELelBdD9QNRAXZzsJx0WaDL9A==", + "node_modules/less/node_modules/make-dir": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", + "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", "dev": true, + "optional": true, "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.3" + "pify": "^4.0.1", + "semver": "^5.6.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6" } }, - "node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", + "node_modules/less/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "engines": { - "node": ">=4" + "optional": true, + "bin": { + "semver": "bin/semver" } }, - "node_modules/get-symbol-description": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", - "integrity": "sha512-2EmdH1YvIQiZpltCNgkuiUnyukzxM/R6NDJX31Ke3BG1Nq5b0S2PhX59UKi9vZpPDQVdqn+1IcaAwnzTT5vCjw==", + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.1" + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.8.0" } }, - "node_modules/glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "node_modules/lilconfig": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", + "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "node": ">=10" } }, - "node_modules/glob-parent": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", - "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/load-json-file": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", + "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", "dev": true, "dependencies": { - "is-glob": "^4.0.3" + "graceful-fs": "^4.1.2", + "parse-json": "^4.0.0", + "pify": "^3.0.0", + "strip-bom": "^3.0.0" }, "engines": { - "node": ">=10.13.0" + "node": ">=4" } }, - "node_modules/glob-to-regexp": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", - "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true - }, - "node_modules/globals": { - "version": "13.21.0", - "resolved": "https://registry.npmjs.org/globals/-/globals-13.21.0.tgz", - "integrity": "sha512-ybyme3s4yy/t/3s35bewwXKOf7cvzfreG2lH0lZl0JB7I4GxRP2ghxOK/Nb9EkRXdbBXZLfq/p/0W2JUONB/Gg==", + "node_modules/load-json-file/node_modules/parse-json": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", + "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", "dev": true, "dependencies": { - "type-fest": "^0.20.2" + "error-ex": "^1.3.1", + "json-parse-better-errors": "^1.0.1" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=4" } }, - "node_modules/globalthis": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.3.tgz", - "integrity": "sha512-sFdI5LyBiNTHjRd7cGPWapiHWMOXKyuBNX/cWJ3NfzrZQVa8GI/8cofCl74AOVqq9W5kNmguTIzJ/1s2gyI9wA==", + "node_modules/load-json-file/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, - "dependencies": { - "define-properties": "^1.1.3" - }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/globby": { - "version": "11.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", - "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "node_modules/load-tsconfig": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", "dev": true, - "dependencies": { - "array-union": "^2.1.0", - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.9", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^3.0.0" - }, "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" } }, - "node_modules/gopd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", - "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "node_modules/loader-runner": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", + "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", "dev": true, - "dependencies": { - "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=6.11.5" } }, - "node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", + "node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" + "p-locate": "^4.1.0" }, "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" + "node": ">=8" } }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", - "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==", + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "dev": true }, - "node_modules/graphemer": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", - "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "node_modules/lodash.memoize": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", + "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", + "dev": true + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true + }, + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", "dev": true }, - "node_modules/has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "node_modules/lowercase-keys": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", + "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", "dev": true, - "dependencies": { - "function-bind": "^1.1.1" - }, "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-bigints": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", - "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", - "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8" } }, - "node_modules/has-flag": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "node_modules/lru-cache": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", + "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", "dev": true, + "dependencies": { + "yallist": "^4.0.0" + }, "engines": { - "node": ">=4" + "node": ">=10" } }, - "node_modules/has-property-descriptors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.0.tgz", - "integrity": "sha512-62DVLZGoiEBDHQyqG4w9xCuZ7eJEwNmJRWw2VY84Oedb7WFcA27fiEVe8oUQx9hAUJ4ekurquucTGwsyO1XGdQ==", + "node_modules/make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.1" + "semver": "^6.0.0" + }, + "engines": { + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "node_modules/make-dir/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/mdn-data": { + "version": "2.0.30", + "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", + "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", + "dev": true + }, + "node_modules/memorystream": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", + "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 0.10.0" } }, - "node_modules/has-symbols": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", - "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">= 8" } }, - "node_modules/has-tostringtag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.0.tgz", - "integrity": "sha512-kFjcSNhnlGV1kyoGk7OXKSawH5JOb/LzUc5w9B02hOTO0dfFRjbHQKvg1d6cf3HbeUmtU9VbbV3qzZ2Teh97WQ==", + "node_modules/micromatch": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", + "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", "dev": true, "dependencies": { - "has-symbols": "^1.0.2" + "braces": "^3.0.1", + "picomatch": "^2.2.3" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=8.6" } }, - "node_modules/hasher": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/hasher/-/hasher-1.2.0.tgz", - "integrity": "sha1-i1NBw0lhJLBySshVX7uMo2Pru3M=", - "dependencies": { - "signals": ">0.7 <2.0" + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "dev": true, + "optional": true, + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" } }, - "node_modules/hosted-git-info": { - "version": "2.8.9", - "resolved": "https://registry.npmjs.org/hosted-git-info/-/hosted-git-info-2.8.9.tgz", - "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", - "dev": true - }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true + "node_modules/mime-db": { + "version": "1.47.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", + "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", + "dev": true, + "engines": { + "node": ">= 0.6" + } }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", + "node_modules/mime-types": { + "version": "2.1.30", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", "dev": true, "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" + "mime-db": "1.47.0" }, "engines": { - "node": ">=10.19.0" + "node": ">= 0.6" } }, - "node_modules/human-signals": { + "node_modules/mimic-fn": { "version": "2.1.0", - "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", - "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", "dev": true, "engines": { - "node": ">=10.17.0" + "node": ">=6" } }, - "node_modules/iconv-lite": { - "version": "0.6.3", - "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", - "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "node_modules/mimic-response": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", + "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", "dev": true, - "dependencies": { - "safer-buffer": ">= 2.1.2 < 3.0.0" - }, "engines": { - "node": ">=0.10.0" + "node": ">=4" } }, - "node_modules/icss-utils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/icss-utils/-/icss-utils-5.1.0.tgz", - "integrity": "sha512-soFhflCVWLfRNOPU3iv5Z9VUdT44xFRbzjLsEzSr5AQmgqPMTHdU3PMT1Cf1ssx8fLNJDA1juftYl+PUcv3MqA==", + "node_modules/mini-css-extract-plugin": { + "version": "2.7.6", + "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", + "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", "dev": true, + "dependencies": { + "schema-utils": "^4.0.0" + }, "engines": { - "node": "^10 || ^12 || >= 14" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "postcss": "^8.1.0" + "webpack": "^5.0.0" } }, - "node_modules/ieee754": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", - "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "node_modules/ignore": { - "version": "5.2.4", - "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.2.4.tgz", - "integrity": "sha512-MAb38BcSbH0eHNBxn7ql2NH/kX33OkB3lZ1BNdh7ENeRChHTYsTvWrMubiIAMNS2llXEEgZ1MUOBtXChP3kaFQ==", + "node_modules/mini-css-extract-plugin/node_modules/ajv": { + "version": "8.8.2", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", + "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", "dev": true, - "engines": { - "node": ">= 4" + "dependencies": { + "fast-deep-equal": "^3.1.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/image-size": { - "version": "0.5.5", - "resolved": "https://registry.npmjs.org/image-size/-/image-size-0.5.5.tgz", - "integrity": "sha512-6TDAlDPZxUFCv+fuOkIoXT/V/f3Qbq8e37p+YOiYrUv3v9cc3/6x78VdfPgFVaB9dZYeLUfKgHRebpkm/oP2VQ==", + "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", + "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", "dev": true, - "optional": true, - "bin": { - "image-size": "bin/image-size.js" + "dependencies": { + "fast-deep-equal": "^3.1.3" }, - "engines": { - "node": ">=0.10.0" + "peerDependencies": { + "ajv": "^8.8.2" } }, - "node_modules/import-fresh": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", - "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "dev": true + }, + "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", + "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", "dev": true, "dependencies": { - "parent-module": "^1.0.0", - "resolve-from": "^4.0.0" + "@types/json-schema": "^7.0.9", + "ajv": "^8.8.0", + "ajv-formats": "^2.1.1", + "ajv-keywords": "^5.0.0" }, "engines": { - "node": ">=6" + "node": ">= 12.13.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/import-local": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", - "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", + "node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dev": true, "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" + "node": "*" } }, - "node_modules/imurmurhash": { - "version": "0.1.4", - "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", - "integrity": "sha1-khi5srkoojixPcT7a21XbyMUU+o=", + "node_modules/minipass": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", + "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==", "dev": true, "engines": { - "node": ">=0.8.19" + "node": ">=16 || 14 >=14.17" } }, - "node_modules/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", - "dev": true, - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } + "node_modules/mousetrap": { + "version": "1.6.5", + "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz", + "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==" }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", - "dev": true + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "dev": true, + "optional": true }, - "node_modules/internal-slot": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.4.tgz", - "integrity": "sha512-tA8URYccNzMo94s5MQZgH8NB/XTa6HsOo0MLfXTKKEnHVVdegzaQoFZ7Jp44bdvLvY2waT5dc+j5ICEswhi7UQ==", + "node_modules/mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", "dev": true, "dependencies": { - "get-intrinsic": "^1.1.3", - "has": "^1.0.3", - "side-channel": "^1.0.4" + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, + "node_modules/nanoid": { + "version": "5.0.2", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.2.tgz", + "integrity": "sha512-2ustYUX1R2rL/Br5B/FMhi8d5/QzvkJ912rBYxskcpu0myTHzSZfTr1LAS2Sm7jxRUObRrSBFoyzwAhL49aVSg==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.js" }, "engines": { - "node": ">= 0.4" + "node": "^18 || >=20" } }, - "node_modules/is-array-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.1.tgz", - "integrity": "sha512-ASfLknmY8Xa2XtB4wmbz13Wu202baeA18cJBCeCy0wXUHZF0IPyVEXqKEcd+t2fNSLLL1vC6k7lxZEojNbISXQ==", + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", + "dev": true + }, + "node_modules/needle": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", + "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", "dev": true, + "optional": true, "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-typed-array": "^1.1.10" + "debug": "^3.2.6", + "iconv-lite": "^0.6.3", + "sax": "^1.2.4" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "needle": "bin/needle" + }, + "engines": { + "node": ">= 4.4.x" } }, - "node_modules/is-arrayish": { - "version": "0.2.1", - "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", - "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=", + "node_modules/neo-async": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", + "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", "dev": true }, - "node_modules/is-bigint": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", - "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "node_modules/nice-try": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", + "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.13", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", + "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", + "dev": true + }, + "node_modules/normalize-package-data": { + "version": "2.5.0", + "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", + "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", "dev": true, "dependencies": { - "has-bigints": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "hosted-git-info": "^2.1.4", + "resolve": "^1.10.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, - "node_modules/is-boolean-object": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", - "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "node_modules/normalize-package-data/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "bin": { + "semver": "bin/semver" } }, - "node_modules/is-callable": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", - "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/is-core-module": { - "version": "2.11.0", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.11.0.tgz", - "integrity": "sha512-RRjxlvLDkD1YJwDbroBHMb+cukurkDWNyHx7D3oNB5x9rb5ogcksMC5wHCadcXoo67gVr/+3GFySh3134zi6rw==", + "node_modules/normalize-range": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", + "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true, - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "engines": { + "node": ">=0.10.0" } }, - "node_modules/is-date-object": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", - "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "node_modules/normalize-url": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", + "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, "engines": { - "node": ">= 0.4" + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-extglob": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", - "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=", - "dev": true, - "engines": { - "node": ">=0.10.0" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/is-fullwidth-code-point": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", - "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "node_modules/npm-run-all": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", + "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "chalk": "^2.4.1", + "cross-spawn": "^6.0.5", + "memorystream": "^0.3.1", + "minimatch": "^3.0.4", + "pidtree": "^0.3.0", + "read-pkg": "^3.0.0", + "shell-quote": "^1.6.1", + "string.prototype.padend": "^3.0.0" + }, + "bin": { + "npm-run-all": "bin/npm-run-all/index.js", + "run-p": "bin/run-p/index.js", + "run-s": "bin/run-s/index.js" + }, "engines": { - "node": ">=8" + "node": ">= 4" } }, - "node_modules/is-glob": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", - "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "node_modules/npm-run-all/node_modules/cross-spawn": { + "version": "6.0.5", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", + "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", "dev": true, "dependencies": { - "is-extglob": "^2.1.1" + "nice-try": "^1.0.4", + "path-key": "^2.0.1", + "semver": "^5.5.0", + "shebang-command": "^1.2.0", + "which": "^1.2.9" }, "engines": { - "node": ">=0.10.0" + "node": ">=4.8" } }, - "node_modules/is-negative-zero": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.2.tgz", - "integrity": "sha512-dqJvarLawXsFbNDeJW7zAz8ItJ9cd28YufuuFzh0G8pNHjJMnY08Dv7sYX2uF5UpQOwieAeOExEYAWWfu7ZZUA==", + "node_modules/npm-run-all/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", "dev": true, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/is-number": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", - "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "node_modules/npm-run-all/node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, - "engines": { - "node": ">=0.12.0" + "bin": { + "semver": "bin/semver" } }, - "node_modules/is-number-object": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", - "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "node_modules/npm-run-all/node_modules/shebang-command": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", + "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", "dev": true, "dependencies": { - "has-tostringtag": "^1.0.0" + "shebang-regex": "^1.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=0.10.0" } }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", + "node_modules/npm-run-all/node_modules/shebang-regex": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", + "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "node_modules/npm-run-all/node_modules/which": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", + "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", "dev": true, "dependencies": { - "isobject": "^3.0.1" + "isexe": "^2.0.0" }, - "engines": { - "node": ">=0.10.0" + "bin": { + "which": "bin/which" } }, - "node_modules/is-regex": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", - "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "node_modules/npm-run-path": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", + "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "has-tostringtag": "^1.0.0" + "path-key": "^2.0.0" }, "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=4" } }, - "node_modules/is-shared-array-buffer": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.2.tgz", - "integrity": "sha512-sqN2UDu1/0y6uvXyStCOzyhAjCSlHceFoMKJW8W9EU9cvic/QdsZ0kEU93HEy3IUEFZIiH/3w+AH/UQbPHNdhA==", + "node_modules/npm-run-path/node_modules/path-key": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", + "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", "dev": true, "dependencies": { - "call-bind": "^1.0.2" + "boolbase": "^1.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/fb55/nth-check?sponsor=1" } }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", "dev": true, "engines": { "node": ">=0.10.0" } }, - "node_modules/is-string": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", - "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "node_modules/object-inspect": { + "version": "1.12.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", + "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", "dev": true, - "dependencies": { - "has-tostringtag": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-symbol": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", - "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", "dev": true, - "dependencies": { - "has-symbols": "^1.0.2" - }, "engines": { "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-typed-array": { - "version": "1.1.10", - "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.10.tgz", - "integrity": "sha512-PJqgEHiWZvMpaFZ3uTc8kHPM4+4ADTlDniuQL7cU/UDA0Ql7F70yGfHph3cLNe+c9toaigv+DFzTJKhc2CtO6A==", + "node_modules/object.assign": { + "version": "4.1.4", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", + "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", "dev": true, "dependencies": { - "available-typed-arrays": "^1.0.5", "call-bind": "^1.0.2", - "for-each": "^0.3.3", - "gopd": "^1.0.1", - "has-tostringtag": "^1.0.0" + "define-properties": "^1.1.4", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" }, "engines": { "node": ">= 0.4" @@ -4206,1919 +6331,1874 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-weakref": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", - "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "dependencies": { - "call-bind": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "wrappy": "1" } }, - "node_modules/is-what": { - "version": "3.14.1", - "resolved": "https://registry.npmjs.org/is-what/-/is-what-3.14.1.tgz", - "integrity": "sha512-sNxgpk9793nzSs7bA6JQJGeIuRBQhAaNGG77kzYQgMkrID+lS6SlK07K5LaptscDlSaIgH+GPFzf+d75FVxozA==", - "dev": true - }, - "node_modules/isexe": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", - "dev": true - }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, "engines": { - "node": ">=0.10.0" + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jackspeak": { - "version": "2.3.5", - "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.5.tgz", - "integrity": "sha512-Ratx+B8WeXLAtRJn26hrhY8S1+Jz6pxPMrkrdkgb/NstTNiqMhX0/oFVu5wX+g5n6JlEu2LPsDJmY8nRP4+alw==", + "node_modules/optionator": { + "version": "0.9.3", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", + "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", "dev": true, "dependencies": { - "@isaacs/cliui": "^8.0.2" + "@aashutoshrathi/word-wrap": "^1.2.3", + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0" }, "engines": { - "node": ">=14" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - }, - "optionalDependencies": { - "@pkgjs/parseargs": "^0.11.0" + "node": ">= 0.8.0" } }, - "node_modules/jest-worker": { - "version": "27.4.5", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.5.tgz", - "integrity": "sha512-f2s8kEdy15cv9r7q4KkzGXvlY0JTcmCbMHZBfSQDwW77REr45IDWwd0lksDFeVHH2jJ5pqb90T77XscrjeGzzg==", + "node_modules/os-filter-obj": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz", + "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==", "dev": true, "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" + "arch": "^2.1.0" }, "engines": { - "node": ">= 10.13.0" + "node": ">=4" + } + }, + "node_modules/owasp-password-strength-test": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/owasp-password-strength-test/-/owasp-password-strength-test-1.3.0.tgz", + "integrity": "sha1-T2KeQpA+j20nmyMNZXq2HljkSxI=" + }, + "node_modules/p-cancelable": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", + "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/jest-worker/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/p-finally": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", + "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", "dev": true, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/jest-worker/node_modules/supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", "dev": true, "dependencies": { - "has-flag": "^4.0.0" + "yocto-queue": "^0.1.0" }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/jiti": { - "version": "1.18.2", - "resolved": "https://registry.npmjs.org/jiti/-/jiti-1.18.2.tgz", - "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==", + "node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", "dev": true, - "bin": { - "jiti": "bin/jiti.js" - } - }, - "node_modules/jquery": { - "version": "3.7.1", - "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", - "integrity": "sha512-m4avr8yL8kmFN8psrbFFFmB/If14iN5o9nw/NgnnM+kybDJpRsAynV2BsfpTYrTRysYUdADVD7CkUUizgkpLfg==" - }, - "node_modules/jquery-simulate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/jquery-simulate/-/jquery-simulate-1.0.2.tgz", - "integrity": "sha512-Bq610fSrwTwvH5d06z5oskYaX/79s0BNrKiJZjZOiXRib3iL4ZkSn/wvLwzhf3P9KeXCEpk9wlIaGui/1arOpQ==" - }, - "node_modules/jquery-ui": { - "version": "1.13.2", - "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.2.tgz", - "integrity": "sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q==", "dependencies": { - "jquery": ">=1.8.0 <4.0.0" + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" } }, - "node_modules/js-tokens": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", - "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", - "dev": true - }, - "node_modules/js-yaml": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", - "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "node_modules/p-locate/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", "dev": true, "dependencies": { - "argparse": "^2.0.1" + "p-try": "^2.0.0" }, - "bin": { - "js-yaml": "bin/js-yaml.js" + "engines": { + "node": ">=6" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, - "node_modules/json-parse-better-errors": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", - "integrity": "sha512-mrqyZKfX5EhL7hvqcV6WG1yYjnjeuYDzDhhcAAUrq8Po85NBQBJP+ZDUT75qZQ98IkUoBqdkExkukOU7Ts2wrw==", - "dev": true - }, - "node_modules/json-parse-even-better-errors": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", - "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", - "dev": true - }, - "node_modules/json-schema-traverse": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", - "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", - "dev": true + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } }, - "node_modules/json-stable-stringify-without-jsonify": { + "node_modules/parent-module": { "version": "1.0.1", - "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", - "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", - "dev": true - }, - "node_modules/keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", "dev": true, "dependencies": { - "json-buffer": "3.0.1" + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" } }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "node_modules/parent-module/node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">=6" } }, - "node_modules/less": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", - "integrity": "sha512-P3b3HJDBtSzsXUl0im2L7gTO5Ubg8mEN6G8qoTS77iXxXX4Hvu4Qj540PZDvQ8V6DmX6iXo98k7Md0Cm1PrLaA==", + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", "dev": true, "dependencies": { - "copy-anything": "^2.0.1", - "parse-node-version": "^1.0.1", - "tslib": "^2.3.0" - }, - "bin": { - "lessc": "bin/lessc" + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" }, "engines": { - "node": ">=6" + "node": ">=8" }, - "optionalDependencies": { - "errno": "^0.1.1", - "graceful-fs": "^4.1.2", - "image-size": "~0.5.0", - "make-dir": "^2.1.0", - "mime": "^1.4.1", - "needle": "^3.1.0", - "source-map": "~0.6.0" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/less-loader": { - "version": "11.1.3", - "resolved": "https://registry.npmjs.org/less-loader/-/less-loader-11.1.3.tgz", - "integrity": "sha512-A5b7O8dH9xpxvkosNrP0dFp2i/dISOJa9WwGF3WJflfqIERE2ybxh1BFDj5CovC2+jCE4M354mk90hN6ziXlVw==", + "node_modules/parse-node-version": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", + "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", "dev": true, "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "less": "^3.5.0 || ^4.0.0", - "webpack": "^5.0.0" + "node": ">= 0.10" } }, - "node_modules/less/node_modules/make-dir": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-2.1.0.tgz", - "integrity": "sha512-LS9X+dc8KLxXCb8dni79fLIIUA5VyZoyjSMCwTluaXA0o27cCK0bhXkpgw+sTXVpPy/lSO57ilRixqk0vDmtRA==", + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", "dev": true, - "optional": true, - "dependencies": { - "pify": "^4.0.1", - "semver": "^5.6.0" - }, "engines": { - "node": ">=6" + "node": ">=8" } }, - "node_modules/less/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true, - "optional": true, - "bin": { - "semver": "bin/semver" + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" } }, - "node_modules/less/node_modules/tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", "dev": true }, - "node_modules/levn": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", - "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "node_modules/path-scurry": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", + "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", "dev": true, "dependencies": { - "prelude-ls": "^1.2.1", - "type-check": "~0.4.0" + "lru-cache": "^9.1.1 || ^10.0.0", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/lilconfig": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.1.0.tgz", - "integrity": "sha512-utWOt/GHzuUxnLKxB6dk81RoOeoNeHgbrXiuGk4yyF5qlRz+iIVWu56E2fqGHFrXz0QNUhLB/8nKqvRH66JKGQ==", + "node_modules/path-scurry/node_modules/lru-cache": { + "version": "10.0.0", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz", + "integrity": "sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==", + "dev": true, + "engines": { + "node": "14 || >=16.14" + } + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/peek-readable": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", + "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", "dev": true, "engines": { - "node": ">=10" + "node": ">=14.16" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/lines-and-columns": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", - "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", - "dev": true + "node_modules/picocolors": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", + "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" }, - "node_modules/load-json-file": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/load-json-file/-/load-json-file-4.0.0.tgz", - "integrity": "sha512-Kx8hMakjX03tiGTLAIdJ+lL0htKnXjEZN6hk/tozf/WOuYGdZBJrZ+rCJRbVCugsjB3jMLn9746NsQIf5VjBMw==", + "node_modules/picomatch": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", + "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", "dev": true, - "dependencies": { - "graceful-fs": "^4.1.2", - "parse-json": "^4.0.0", - "pify": "^3.0.0", - "strip-bom": "^3.0.0" - }, "engines": { - "node": ">=4" + "node": ">=8.6" } }, - "node_modules/load-json-file/node_modules/parse-json": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-4.0.0.tgz", - "integrity": "sha512-aOIos8bujGN93/8Ox/jPLh7RwVnPEysynVFE+fQZyg6jKELEHwzgKdLRFHUgXJL6kylijVSBC4BvN9OmsB48Rw==", + "node_modules/pidtree": { + "version": "0.3.1", + "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", + "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", "dev": true, - "dependencies": { - "error-ex": "^1.3.1", - "json-parse-better-errors": "^1.0.1" + "bin": { + "pidtree": "bin/pidtree.js" }, "engines": { - "node": ">=4" + "node": ">=0.10" } }, - "node_modules/load-json-file/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", + "node_modules/pify": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", + "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", "dev": true, + "optional": true, "engines": { - "node": ">=4" + "node": ">=6" } }, - "node_modules/loader-runner": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", - "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "dev": true, "engines": { - "node": ">=6.11.5" + "node": ">= 6" } }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", "dev": true, "dependencies": { - "p-locate": "^4.1.0" + "find-up": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/lodash.memoize": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", - "integrity": "sha512-t7j+NzmgnQzTAYXcsHYLgimltOV1MXHtlOWf6GjL9Kj8GK5FInw5JotxvbOs+IvV1/Dzo04/fCGfLVs7aXb4Ag==", - "dev": true - }, - "node_modules/lodash.merge": { - "version": "4.6.2", - "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", - "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", - "dev": true - }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true + "node_modules/postcss": { + "version": "8.4.31", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", + "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.6", + "picocolors": "^1.0.0", + "source-map-js": "^1.0.2" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", + "node_modules/postcss-browser-comments": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", + "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", "dev": true, "engines": { "node": ">=8" + }, + "peerDependencies": { + "browserslist": ">=4", + "postcss": ">=8" } }, - "node_modules/lru-cache": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", - "integrity": "sha512-Jo6dJ04CmSjuznwJSS3pUeWmd/H0ffTlkXXgwZi+eq1UCmqQwCh+eLsYOYCwY991i2Fah4h1BEMCx4qThGbsiA==", + "node_modules/postcss-calc": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.0.tgz", + "integrity": "sha512-B9BNW/SVh4SMJfoCQ6D9h1Wo7Yjqks7UdbiARJ16J5TIsQn5NEqwMF5joSgOYb26oJPUR5Uv3fCQ/4PvmZWeJQ==", "dev": true, "dependencies": { - "yallist": "^4.0.0" + "postcss-selector-parser": "^6.0.11", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=10" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.2" } }, - "node_modules/mdn-data": { - "version": "2.0.30", - "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", - "integrity": "sha512-GaqWWShW4kv/G9IEucWScBx9G1/vsFZZJUO+tD26M8J8z3Kw5RDQjaoZe03YAClgeS/SWPOcb4nkFBTEi5DUEA==", - "dev": true - }, - "node_modules/memorystream": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/memorystream/-/memorystream-0.3.1.tgz", - "integrity": "sha512-S3UwM3yj5mtUSEfP41UZmt/0SCoVYUcU1rkXv+BQ5Ig8ndL4sPoJNBUJERafdPb5jjHJGuMgytgKvKIf58XNBw==", + "node_modules/postcss-cli": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-10.1.0.tgz", + "integrity": "sha512-Zu7PLORkE9YwNdvOeOVKPmWghprOtjFQU3srMUGbdz3pHJiFh7yZ4geiZFMkjMfB0mtTFR3h8RemR62rPkbOPA==", "dev": true, + "dependencies": { + "chokidar": "^3.3.0", + "dependency-graph": "^0.11.0", + "fs-extra": "^11.0.0", + "get-stdin": "^9.0.0", + "globby": "^13.0.0", + "picocolors": "^1.0.0", + "postcss-load-config": "^4.0.0", + "postcss-reporter": "^7.0.0", + "pretty-hrtime": "^1.0.3", + "read-cache": "^1.0.0", + "slash": "^5.0.0", + "yargs": "^17.0.0" + }, + "bin": { + "postcss": "index.js" + }, "engines": { - "node": ">= 0.10.0" + "node": ">=14" + }, + "peerDependencies": { + "postcss": "^8.0.0" } }, - "node_modules/merge-stream": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", - "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", - "dev": true - }, - "node_modules/merge2": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", - "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "node_modules/postcss-cli/node_modules/globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", "dev": true, + "dependencies": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, "engines": { - "node": ">= 8" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/micromatch": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.4.tgz", - "integrity": "sha512-pRmzw/XUcwXGpD9aI9q/0XOwLNygjETJ8y0ao0wdqprrzDa4YnxLcz7fQRZr8voh8V10kGhABbNcHVk5wHgWwg==", + "node_modules/postcss-cli/node_modules/globby/node_modules/slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", "dev": true, - "dependencies": { - "braces": "^3.0.1", - "picomatch": "^2.2.3" - }, "engines": { - "node": ">=8.6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mime": { - "version": "1.6.0", - "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", - "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "node_modules/postcss-cli/node_modules/slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", "dev": true, - "optional": true, - "bin": { - "mime": "cli.js" - }, "engines": { - "node": ">=4" + "node": ">=14.16" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/mime-db": { - "version": "1.47.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", - "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", + "node_modules/postcss-colormin": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.0.0.tgz", + "integrity": "sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw==", "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "colord": "^2.9.1", + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">= 0.6" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/mime-types": { - "version": "2.1.30", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", - "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "node_modules/postcss-convert-values": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.0.0.tgz", + "integrity": "sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw==", "dev": true, "dependencies": { - "mime-db": "1.47.0" + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">= 0.6" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "node_modules/postcss-discard-comments": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.0.tgz", + "integrity": "sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw==", "dev": true, "engines": { - "node": ">=6" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", + "node_modules/postcss-discard-duplicates": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.0.tgz", + "integrity": "sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA==", "dev": true, "engines": { - "node": ">=4" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/mini-css-extract-plugin": { - "version": "2.7.6", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", - "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", + "node_modules/postcss-discard-empty": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.0.tgz", + "integrity": "sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ==", "dev": true, - "dependencies": { - "schema-utils": "^4.0.0" - }, "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "node": "^14 || ^16 || >=18.0" }, "peerDependencies": { - "webpack": "^5.0.0" + "postcss": "^8.2.15" } }, - "node_modules/mini-css-extract-plugin/node_modules/ajv": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", + "node_modules/postcss-discard-overridden": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.0.tgz", + "integrity": "sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw==", "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" + "engines": { + "node": "^14 || ^16 || >=18.0" }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", + "node_modules/postcss-load-config": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", + "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", "dev": true, "dependencies": { - "fast-deep-equal": "^3.1.3" + "lilconfig": "^2.0.5", + "yaml": "^2.1.1" + }, + "engines": { + "node": ">= 14" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" }, "peerDependencies": { - "ajv": "^8.8.2" + "postcss": ">=8.0.9", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "postcss": { + "optional": true + }, + "ts-node": { + "optional": true + } } }, - "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "node_modules/postcss-loader": { + "version": "7.3.3", + "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz", + "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==", "dev": true, "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "cosmiconfig": "^8.2.0", + "jiti": "^1.18.2", + "semver": "^7.3.8" }, "engines": { - "node": ">= 12.13.0" + "node": ">= 14.15.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "postcss": "^7.0.0 || ^8.0.1", + "webpack": "^5.0.0" } }, - "node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "node_modules/postcss-merge-longhand": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.0.tgz", + "integrity": "sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg==", "dev": true, "dependencies": { - "brace-expansion": "^1.1.7" + "postcss-value-parser": "^4.2.0", + "stylehacks": "^6.0.0" }, "engines": { - "node": "*" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/minipass": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.0.2.tgz", - "integrity": "sha512-eL79dXrE1q9dBbDCLg7xfn/vl7MS4F1gvJAgjJrQli/jbQWdUttuVawphqpffoIYfRdq78LHx6GP4bU/EQ2ATA==", + "node_modules/postcss-merge-rules": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz", + "integrity": "sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw==", "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0", + "cssnano-utils": "^4.0.0", + "postcss-selector-parser": "^6.0.5" + }, "engines": { - "node": ">=16 || 14 >=14.17" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/mousetrap": { - "version": "1.6.5", - "resolved": "https://registry.npmjs.org/mousetrap/-/mousetrap-1.6.5.tgz", - "integrity": "sha512-QNo4kEepaIBwiT8CDhP98umTetp+JNfQYBWvC1pc6/OAibuXtRcxZ58Qz8skvEHYvURne/7R8T5VoOI7rDsEUA==" - }, - "node_modules/ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "node_modules/postcss-minify-font-values": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.0.tgz", + "integrity": "sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA==", "dev": true, - "optional": true - }, - "node_modules/nanoid": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.2.tgz", - "integrity": "sha512-2ustYUX1R2rL/Br5B/FMhi8d5/QzvkJ912rBYxskcpu0myTHzSZfTr1LAS2Sm7jxRUObRrSBFoyzwAhL49aVSg==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.js" + "dependencies": { + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": "^18 || >=20" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/natural-compare": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", - "integrity": "sha1-Sr6/7tdUHywnrPspvbvRXI1bpPc=", - "dev": true - }, - "node_modules/needle": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/needle/-/needle-3.2.0.tgz", - "integrity": "sha512-oUvzXnyLiVyVGoianLijF9O/RecZUf7TkBfimjGrLM4eQhXyeJwM6GeAWccwfQ9aa4gMCZKqhAOuLaMIcQxajQ==", + "node_modules/postcss-minify-gradients": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.0.tgz", + "integrity": "sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA==", "dev": true, - "optional": true, "dependencies": { - "debug": "^3.2.6", - "iconv-lite": "^0.6.3", - "sax": "^1.2.4" - }, - "bin": { - "needle": "bin/needle" + "colord": "^2.9.1", + "cssnano-utils": "^4.0.0", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">= 4.4.x" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/neo-async": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", - "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true - }, - "node_modules/nice-try": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/nice-try/-/nice-try-1.0.5.tgz", - "integrity": "sha512-1nh45deeb5olNY7eX82BkPO7SSxR5SSYJiPTrTdFUVYwAl8CKMA5N9PjTYkHiRjisVcxcQ1HXdLhx2qxxJzLNQ==", - "dev": true - }, - "node_modules/node-releases": { - "version": "2.0.13", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.13.tgz", - "integrity": "sha512-uYr7J37ae/ORWdZeQ1xxMJe3NtdmqMC/JZK+geofDrkLUApKRHPd18/TxtBOJ4A0/+uUIliorNrfYV6s1b02eQ==", - "dev": true - }, - "node_modules/normalize-package-data": { - "version": "2.5.0", - "resolved": "https://registry.npmjs.org/normalize-package-data/-/normalize-package-data-2.5.0.tgz", - "integrity": "sha512-/5CMN3T0R4XTj4DcGaexo+roZSdSFW/0AOOTROrjxzCG1wrWXEsGbRKevjlIL+ZDE4sZlJr5ED4YW0yqmkK+eA==", + "node_modules/postcss-minify-params": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.0.0.tgz", + "integrity": "sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ==", "dev": true, "dependencies": { - "hosted-git-info": "^2.1.4", - "resolve": "^1.10.0", - "semver": "2 || 3 || 4 || 5", - "validate-npm-package-license": "^3.0.1" - } - }, - "node_modules/normalize-package-data/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/normalize-path": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", - "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", - "dev": true, + "browserslist": "^4.21.4", + "cssnano-utils": "^4.0.0", + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=0.10.0" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/normalize-range": { - "version": "0.1.2", - "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", - "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", + "node_modules/postcss-minify-selectors": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.0.tgz", + "integrity": "sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g==", "dev": true, + "dependencies": { + "postcss-selector-parser": "^6.0.5" + }, "engines": { - "node": ">=0.10.0" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", + "node_modules/postcss-modules-extract-imports": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", + "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", "dev": true, "engines": { - "node": ">=10" + "node": "^10 || ^12 || >= 14" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/npm-run-all": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", - "integrity": "sha512-Oo82gJDAVcaMdi3nuoKFavkIHBRVqQ1qvMb+9LHk/cF4P6B2m8aP04hGf7oL6wZ9BuGwX1onlLhpuoofSyoQDQ==", + "node_modules/postcss-modules-local-by-default": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", + "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", "dev": true, "dependencies": { - "ansi-styles": "^3.2.1", - "chalk": "^2.4.1", - "cross-spawn": "^6.0.5", - "memorystream": "^0.3.1", - "minimatch": "^3.0.4", - "pidtree": "^0.3.0", - "read-pkg": "^3.0.0", - "shell-quote": "^1.6.1", - "string.prototype.padend": "^3.0.0" - }, - "bin": { - "npm-run-all": "bin/npm-run-all/index.js", - "run-p": "bin/run-p/index.js", - "run-s": "bin/run-s/index.js" + "icss-utils": "^5.0.0", + "postcss-selector-parser": "^6.0.2", + "postcss-value-parser": "^4.1.0" }, "engines": { - "node": ">= 4" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/npm-run-all/node_modules/cross-spawn": { - "version": "6.0.5", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-6.0.5.tgz", - "integrity": "sha512-eTVLrBSt7fjbDygz805pMnstIs2VTBNkRm0qxZd+M7A5XDdxVRWO5MxGBXZhjY4cqLYLdtrGqRf8mBPmzwSpWQ==", + "node_modules/postcss-modules-scope": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", + "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", "dev": true, "dependencies": { - "nice-try": "^1.0.4", - "path-key": "^2.0.1", - "semver": "^5.5.0", - "shebang-command": "^1.2.0", - "which": "^1.2.9" + "postcss-selector-parser": "^6.0.4" }, "engines": { - "node": ">=4.8" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/npm-run-all/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "node_modules/postcss-modules-values": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", + "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", "dev": true, + "dependencies": { + "icss-utils": "^5.0.0" + }, "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-all/node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "dev": true, - "bin": { - "semver": "bin/semver" + "node": "^10 || ^12 || >= 14" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/npm-run-all/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", + "node_modules/postcss-normalize": { + "version": "10.0.1", + "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", + "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", "dev": true, "dependencies": { - "shebang-regex": "^1.0.0" + "@csstools/normalize.css": "*", + "postcss-browser-comments": "^4", + "sanitize.css": "*" }, "engines": { - "node": ">=0.10.0" + "node": ">= 12" + }, + "peerDependencies": { + "browserslist": ">= 4", + "postcss": ">= 8" } }, - "node_modules/npm-run-all/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", + "node_modules/postcss-normalize-charset": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.0.tgz", + "integrity": "sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/npm-run-all/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", + "node_modules/postcss-normalize-display-values": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.0.tgz", + "integrity": "sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw==", "dev": true, "dependencies": { - "isexe": "^2.0.0" + "postcss-value-parser": "^4.2.0" }, - "bin": { - "which": "bin/which" + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", + "node_modules/postcss-normalize-positions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.0.tgz", + "integrity": "sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg==", "dev": true, "dependencies": { - "path-key": "^2.0.0" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=4" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", + "node_modules/postcss-normalize-repeat-style": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.0.tgz", + "integrity": "sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A==", "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">=4" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/nth-check": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", - "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "node_modules/postcss-normalize-string": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.0.tgz", + "integrity": "sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w==", "dev": true, "dependencies": { - "boolbase": "^1.0.0" + "postcss-value-parser": "^4.2.0" }, - "funding": { - "url": "https://github.com/fb55/nth-check?sponsor=1" + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/object-inspect": { - "version": "1.12.2", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", - "integrity": "sha512-z+cPxW0QGUp0mcqcsgQyLVRDoXFQbXOwBaqyF7VIgI4TWNQsDHrBpUQslRmIfAoYWdYzs6UlKJtB2XJpTaNSpQ==", + "node_modules/postcss-normalize-timing-functions": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.0.tgz", + "integrity": "sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg==", "dev": true, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "dependencies": { + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/object-keys": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", - "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "node_modules/postcss-normalize-unicode": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.0.tgz", + "integrity": "sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg==", "dev": true, + "dependencies": { + "browserslist": "^4.21.4", + "postcss-value-parser": "^4.2.0" + }, "engines": { - "node": ">= 0.4" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/object.assign": { - "version": "4.1.4", - "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.4.tgz", - "integrity": "sha512-1mxKf0e58bvyjSCtKYY4sRe9itRk3PJpquJOjeIkz885CczcI4IvJJDLPS72oowuSh+pBxUFROpX+TU++hxhZQ==", - "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "has-symbols": "^1.0.3", - "object-keys": "^1.1.1" + "node_modules/postcss-normalize-url": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.0.tgz", + "integrity": "sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw==", + "dev": true, + "dependencies": { + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">= 0.4" + "node": "^14 || ^16 || >=18.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "node_modules/postcss-normalize-whitespace": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.0.tgz", + "integrity": "sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw==", "dev": true, "dependencies": { - "wrappy": "1" + "postcss-value-parser": "^4.2.0" + }, + "engines": { + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/onetime": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", - "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "node_modules/postcss-ordered-values": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.0.tgz", + "integrity": "sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg==", "dev": true, "dependencies": { - "mimic-fn": "^2.1.0" + "cssnano-utils": "^4.0.0", + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=6" + "node": "^14 || ^16 || >=18.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/optionator": { - "version": "0.9.3", - "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.3.tgz", - "integrity": "sha512-JjCoypp+jKn1ttEFExxhetCKeJt9zhAgAve5FXHixTvFDW/5aEktX9bufBKLRRMdU7bNtpLfcGu94B3cdEJgjg==", + "node_modules/postcss-reduce-initial": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.0.0.tgz", + "integrity": "sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA==", "dev": true, "dependencies": { - "@aashutoshrathi/word-wrap": "^1.2.3", - "deep-is": "^0.1.3", - "fast-levenshtein": "^2.0.6", - "levn": "^0.4.1", - "prelude-ls": "^1.2.1", - "type-check": "^0.4.0" + "browserslist": "^4.21.4", + "caniuse-api": "^3.0.0" }, "engines": { - "node": ">= 0.8.0" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/os-filter-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz", - "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==", + "node_modules/postcss-reduce-transforms": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.0.tgz", + "integrity": "sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w==", "dev": true, "dependencies": { - "arch": "^2.1.0" + "postcss-value-parser": "^4.2.0" }, "engines": { - "node": ">=4" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/owasp-password-strength-test": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/owasp-password-strength-test/-/owasp-password-strength-test-1.3.0.tgz", - "integrity": "sha1-T2KeQpA+j20nmyMNZXq2HljkSxI=" - }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", + "node_modules/postcss-reporter": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.0.5.tgz", + "integrity": "sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==", "dev": true, + "dependencies": { + "picocolors": "^1.0.0", + "thenby": "^1.3.4" + }, "engines": { - "node": ">=8" + "node": ">=10" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + "peerDependencies": { + "postcss": "^8.1.0" } }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", + "node_modules/postcss-selector-parser": { + "version": "6.0.12", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz", + "integrity": "sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==", "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, "engines": { "node": ">=4" } }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "node_modules/postcss-sort-media-queries": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz", + "integrity": "sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==", "dev": true, "dependencies": { - "yocto-queue": "^0.1.0" + "sort-css-media-queries": "2.2.0" }, "engines": { - "node": ">=10" + "node": ">=14.0.0" }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "peerDependencies": { + "postcss": "^8.4.23" } }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "node_modules/postcss-svgo": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.0.tgz", + "integrity": "sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw==", "dev": true, "dependencies": { - "p-limit": "^2.2.0" + "postcss-value-parser": "^4.2.0", + "svgo": "^3.0.2" }, "engines": { - "node": ">=8" + "node": "^14 || ^16 || >= 18" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "node_modules/postcss-unique-selectors": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.0.tgz", + "integrity": "sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw==", "dev": true, "dependencies": { - "p-try": "^2.0.0" + "postcss-selector-parser": "^6.0.5" }, "engines": { - "node": ">=6" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/parent-module": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", - "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "node_modules/postcss-url": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-10.1.3.tgz", + "integrity": "sha512-FUzyxfI5l2tKmXdYc6VTu3TWZsInayEKPbiyW+P6vmmIrrb4I6CGX0BFoewgYHLK+oIL5FECEK02REYRpBvUCw==", "dev": true, "dependencies": { - "callsites": "^3.0.0" + "make-dir": "~3.1.0", + "mime": "~2.5.2", + "minimatch": "~3.0.4", + "xxhashjs": "~0.2.2" }, "engines": { - "node": ">=6" + "node": ">=10" + }, + "peerDependencies": { + "postcss": "^8.0.0" } }, - "node_modules/parent-module/node_modules/callsites": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", - "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "node_modules/postcss-url/node_modules/mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", "dev": true, + "bin": { + "mime": "cli.js" + }, "engines": { - "node": ">=6" + "node": ">=4.0.0" } }, - "node_modules/parse-json": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", - "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "node_modules/postcss-url/node_modules/minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", "dev": true, "dependencies": { - "@babel/code-frame": "^7.0.0", - "error-ex": "^1.3.1", - "json-parse-even-better-errors": "^2.3.0", - "lines-and-columns": "^1.1.6" + "brace-expansion": "^1.1.7" }, "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": "*" } }, - "node_modules/parse-node-version": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-node-version/-/parse-node-version-1.0.1.tgz", - "integrity": "sha512-3YHlOa/JgH6Mnpr05jP9eDG254US9ek25LyIxZlDItp2iJtwyaXQb57lBYLdT3MowkUFYEV2XXNAYIPlESvJlA==", - "dev": true, + "node_modules/postcss-value-parser": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", + "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", + "dev": true + }, + "node_modules/postcss/node_modules/nanoid": { + "version": "3.3.6", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", + "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, "engines": { - "node": ">= 0.10" + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" } }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 0.8.0" } }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "node_modules/pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", "dev": true, "engines": { - "node": ">=0.10.0" + "node": ">= 0.8" } }, - "node_modules/path-key": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", - "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "node_modules/prr": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", + "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", "dev": true, - "engines": { - "node": ">=8" - } + "optional": true }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "node_modules/pseudomap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", + "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", "dev": true }, - "node_modules/path-scurry": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-1.10.1.tgz", - "integrity": "sha512-MkhCqzzBEpPvxxQ71Md0b1Kk51W01lrYvlMzSUaIzNsODdd7mqhiimSZlr+VegAz5Z6Vzt9Xg2ttE//XBhH3EQ==", + "node_modules/pump": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", + "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", "dev": true, "dependencies": { - "lru-cache": "^9.1.1 || ^10.0.0", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" + "end-of-stream": "^1.1.0", + "once": "^1.3.1" } }, - "node_modules/path-scurry/node_modules/lru-cache": { - "version": "10.0.0", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.0.0.tgz", - "integrity": "sha512-svTf/fzsKHffP42sujkO/Rjs37BCIsQVRCeNYIm9WN8rgT7ffoUnRtZCqU+6BqcSBdv8gwJeTz8knJpgACeQMw==", + "node_modules/punycode": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", + "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", "dev": true, "engines": { - "node": "14 || >=16.14" + "node": ">=6" } }, - "node_modules/path-type": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", - "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", - "dev": true, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", "engines": { - "node": ">=8" + "node": ">=0.6.0", + "teleport": ">=0.2.0" } }, - "node_modules/peek-readable": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", - "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quick-lru": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", + "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", "dev": true, "engines": { - "node": ">=14.16" + "node": ">=10" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" - }, - "node_modules/picomatch": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.0.tgz", - "integrity": "sha512-lY1Q/PiJGC2zOv/z391WOTD+Z02bCgsFfvxoXXf6h7kv9o+WmsmzYqrAwY63sNgOxE4xEdq0WyUnXfKeBrSvYw==", + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, - "engines": { - "node": ">=8.6" + "dependencies": { + "safe-buffer": "^5.1.0" } }, - "node_modules/pidtree": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/pidtree/-/pidtree-0.3.1.tgz", - "integrity": "sha512-qQbW94hLHEqCg7nhby4yRC7G2+jYHY4Rguc2bjw7Uug4GIJuu1tvf2uHaZv5Q8zdt+WKJ6qK1FOI6amaWUo5FA==", + "node_modules/read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", "dev": true, - "bin": { - "pidtree": "bin/pidtree.js" - }, - "engines": { - "node": ">=0.10" + "dependencies": { + "pify": "^2.3.0" } }, - "node_modules/pify": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/pify/-/pify-4.0.1.tgz", - "integrity": "sha512-uB80kBFb/tfd68bVleG9T5GGsGPjJrLAUpR5PZIrhBnIaRTQRjqdJSsIKkOP6OAIFbj7GOrcudc5pNjZ+geV2g==", + "node_modules/read-cache/node_modules/pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", "dev": true, - "optional": true, "engines": { - "node": ">=6" + "node": ">=0.10.0" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "node_modules/read-pkg": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", + "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", "dev": true, "dependencies": { - "find-up": "^4.0.0" + "load-json-file": "^4.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^3.0.0" }, "engines": { - "node": ">=8" + "node": ">=4" } }, - "node_modules/postcss": { - "version": "8.4.31", - "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", - "integrity": "sha512-PS08Iboia9mts/2ygV3eLpY5ghnUcfLV/EXTOW1E2qYxJKGGBUtNjN76FYHnMs36RmARn41bC0AZmn+rR0OVpQ==", - "funding": [ - { - "type": "opencollective", - "url": "https://opencollective.com/postcss/" - }, - { - "type": "tidelift", - "url": "https://tidelift.com/funding/github/npm/postcss" - }, - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], + "node_modules/read-pkg/node_modules/path-type": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", + "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "dev": true, "dependencies": { - "nanoid": "^3.3.6", - "picocolors": "^1.0.0", - "source-map-js": "^1.0.2" + "pify": "^3.0.0" }, "engines": { - "node": "^10 || ^12 || >=14" + "node": ">=4" } }, - "node_modules/postcss-browser-comments": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-browser-comments/-/postcss-browser-comments-4.0.0.tgz", - "integrity": "sha512-X9X9/WN3KIvY9+hNERUqX9gncsgBA25XaeR+jshHz2j8+sYyHktHw1JdKuMjeLpGktXidqDhA7b/qm1mrBDmgg==", + "node_modules/read-pkg/node_modules/pify": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", + "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", "dev": true, "engines": { - "node": ">=8" - }, - "peerDependencies": { - "browserslist": ">=4", - "postcss": ">=8" + "node": ">=4" } }, - "node_modules/postcss-calc": { - "version": "9.0.0", - "resolved": "https://registry.npmjs.org/postcss-calc/-/postcss-calc-9.0.0.tgz", - "integrity": "sha512-B9BNW/SVh4SMJfoCQ6D9h1Wo7Yjqks7UdbiARJ16J5TIsQn5NEqwMF5joSgOYb26oJPUR5Uv3fCQ/4PvmZWeJQ==", + "node_modules/readable-stream": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", + "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", "dev": true, "dependencies": { - "postcss-selector-parser": "^6.0.11", - "postcss-value-parser": "^4.2.0" + "inherits": "^2.0.3", + "string_decoder": "^1.1.1", + "util-deprecate": "^1.0.1" }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.2" + "node": ">= 6" } }, - "node_modules/postcss-colormin": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.0.0.tgz", - "integrity": "sha512-EuO+bAUmutWoZYgHn2T1dG1pPqHU6L4TjzPlu4t1wZGXQ/fxV16xg2EJmYi0z+6r+MGV1yvpx1BHkUaRrPa2bw==", + "node_modules/readable-web-to-node-stream": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", + "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", "dev": true, "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "colord": "^2.9.1", - "postcss-value-parser": "^4.2.0" + "readable-stream": "^3.6.0" }, "engines": { - "node": "^14 || ^16 || >=18.0" + "node": ">=8" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "type": "github", + "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/postcss-convert-values": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-convert-values/-/postcss-convert-values-6.0.0.tgz", - "integrity": "sha512-U5D8QhVwqT++ecmy8rnTb+RL9n/B806UVaS3m60lqle4YDFcpbS3ae5bTQIh3wOGUSDHSEtMYLs/38dNG7EYFw==", + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", "dev": true, "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" + "picomatch": "^2.2.1" }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=8.10.0" } }, - "node_modules/postcss-discard-comments": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-discard-comments/-/postcss-discard-comments-6.0.0.tgz", - "integrity": "sha512-p2skSGqzPMZkEQvJsgnkBhCn8gI7NzRH2683EEjrIkoMiwRELx68yoUJ3q3DGSGuQ8Ug9Gsn+OuDr46yfO+eFw==", - "dev": true, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" - } + "node_modules/regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "dev": true }, - "node_modules/postcss-discard-duplicates": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-discard-duplicates/-/postcss-discard-duplicates-6.0.0.tgz", - "integrity": "sha512-bU1SXIizMLtDW4oSsi5C/xHKbhLlhek/0/yCnoMQany9k3nPBq+Ctsv/9oMmyqbR96HYHxZcHyK2HR5P/mqoGA==", + "node_modules/regexp.prototype.flags": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", + "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.3", + "functions-have-names": "^1.2.2" + }, "engines": { - "node": "^14 || ^16 || >=18.0" + "node": ">= 0.4" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/ljharb" } - }, - "node_modules/postcss-discard-empty": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-discard-empty/-/postcss-discard-empty-6.0.0.tgz", - "integrity": "sha512-b+h1S1VT6dNhpcg+LpyiUrdnEZfICF0my7HAKgJixJLW7BnNmpRH34+uw/etf5AhOlIhIAuXApSzzDzMI9K/gQ==", + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.10.0" } }, - "node_modules/postcss-discard-overridden": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-discard-overridden/-/postcss-discard-overridden-6.0.0.tgz", - "integrity": "sha512-4VELwssYXDFigPYAZ8vL4yX4mUepF/oCBeeIT4OXsJPYOtvJumyz9WflmJWTfDwCUcpDR+z0zvCWBXgTx35SVw==", + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", "dev": true, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.10.0" } }, - "node_modules/postcss-loader": { - "version": "7.3.3", - "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz", - "integrity": "sha512-YgO/yhtevGO/vJePCQmTxiaEwER94LABZN0ZMT4A0vsak9TpO+RvKRs7EmJ8peIlB9xfXCsS7M8LjqncsUZ5HA==", + "node_modules/resolve": { + "version": "1.22.1", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", + "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", "dev": true, "dependencies": { - "cosmiconfig": "^8.2.0", - "jiti": "^1.18.2", - "semver": "^7.3.8" + "is-core-module": "^2.9.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" }, - "engines": { - "node": ">= 14.15.0" + "bin": { + "resolve": "bin/resolve" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "postcss": "^7.0.0 || ^8.0.1", - "webpack": "^5.0.0" + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-merge-longhand": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-merge-longhand/-/postcss-merge-longhand-6.0.0.tgz", - "integrity": "sha512-4VSfd1lvGkLTLYcxFuISDtWUfFS4zXe0FpF149AyziftPFQIWxjvFSKhA4MIxMe4XM3yTDgQMbSNgzIVxChbIg==", + "node_modules/resolve-alpn": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", + "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", + "dev": true + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", "dev": true, "dependencies": { - "postcss-value-parser": "^4.2.0", - "stylehacks": "^6.0.0" + "resolve-from": "^5.0.0" }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=8" } }, - "node_modules/postcss-merge-rules": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/postcss-merge-rules/-/postcss-merge-rules-6.0.1.tgz", - "integrity": "sha512-a4tlmJIQo9SCjcfiCcCMg/ZCEe0XTkl/xK0XHBs955GWg9xDX3NwP9pwZ78QUOWB8/0XCjZeJn98Dae0zg6AAw==", + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true, - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0", - "cssnano-utils": "^4.0.0", - "postcss-selector-parser": "^6.0.5" - }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=8" } }, - "node_modules/postcss-minify-font-values": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-minify-font-values/-/postcss-minify-font-values-6.0.0.tgz", - "integrity": "sha512-zNRAVtyh5E8ndZEYXA4WS8ZYsAp798HiIQ1V2UF/C/munLp2r1UGHwf1+6JFu7hdEhJFN+W1WJQKBrtjhFgEnA==", + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=4" } }, - "node_modules/postcss-minify-gradients": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-minify-gradients/-/postcss-minify-gradients-6.0.0.tgz", - "integrity": "sha512-wO0F6YfVAR+K1xVxF53ueZJza3L+R3E6cp0VwuXJQejnNUH0DjcAFe3JEBeTY1dLwGa0NlDWueCA1VlEfiKgAA==", + "node_modules/responselike": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", + "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", "dev": true, "dependencies": { - "colord": "^2.9.1", - "cssnano-utils": "^4.0.0", - "postcss-value-parser": "^4.2.0" + "lowercase-keys": "^2.0.0" }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "iojs": ">=1.0.0", + "node": ">=0.10.0" } }, - "node_modules/postcss-minify-params": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-minify-params/-/postcss-minify-params-6.0.0.tgz", - "integrity": "sha512-Fz/wMQDveiS0n5JPcvsMeyNXOIMrwF88n7196puSuQSWSa+/Ofc1gDOSY2xi8+A4PqB5dlYCKk/WfqKqsI+ReQ==", + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", "dev": true, "dependencies": { - "browserslist": "^4.21.4", - "cssnano-utils": "^4.0.0", - "postcss-value-parser": "^4.2.0" + "glob": "^7.1.3" }, - "engines": { - "node": "^14 || ^16 || >=18.0" + "bin": { + "rimraf": "bin.js" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-minify-selectors": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-minify-selectors/-/postcss-minify-selectors-6.0.0.tgz", - "integrity": "sha512-ec/q9JNCOC2CRDNnypipGfOhbYPuUkewGwLnbv6omue/PSASbHSU7s6uSQ0tcFRVv731oMIx8k0SP4ZX6be/0g==", + "node_modules/rimraf/node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "dependencies": { - "postcss-selector-parser": "^6.0.5" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": "^14 || ^16 || >=18.0" + "node": "*" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/postcss-modules-extract-imports": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-extract-imports/-/postcss-modules-extract-imports-3.0.0.tgz", - "integrity": "sha512-bdHleFnP3kZ4NYDhuGlVK+CMrQ/pqUm8bx/oGL93K6gVwiclvX5x0n76fYMKuIGKzlABOy13zsvqjb0f92TEXw==", + "node_modules/rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", "dev": true, + "bin": { + "rollup": "dist/bin/rollup" + }, "engines": { - "node": "^10 || ^12 || >= 14" + "node": ">=14.18.0", + "npm": ">=8.0.0" }, - "peerDependencies": { - "postcss": "^8.1.0" + "optionalDependencies": { + "fsevents": "~2.3.2" } }, - "node_modules/postcss-modules-local-by-default": { - "version": "4.0.3", - "resolved": "https://registry.npmjs.org/postcss-modules-local-by-default/-/postcss-modules-local-by-default-4.0.3.tgz", - "integrity": "sha512-2/u2zraspoACtrbFRnTijMiQtb4GW4BvatjaG/bCjYQo8kLTdevCUlwuBHx2sCnSyrI3x3qj4ZK1j5LQBgzmwA==", + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", "dev": true, "dependencies": { - "icss-utils": "^5.0.0", - "postcss-selector-parser": "^6.0.2", - "postcss-value-parser": "^4.1.0" - }, - "engines": { - "node": "^10 || ^12 || >= 14" - }, - "peerDependencies": { - "postcss": "^8.1.0" + "tslib": "^2.1.0" } }, - "node_modules/postcss-modules-scope": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-scope/-/postcss-modules-scope-3.0.0.tgz", - "integrity": "sha512-hncihwFA2yPath8oZ15PZqvWGkWf+XUfQgUGamS4LqoP1anQLOsOJw0vr7J7IwLpoY9fatA2qiGUGmuZL0Iqlg==", + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "dev": true + }, + "node_modules/safe-regex-test": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", + "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", "dev": true, "dependencies": { - "postcss-selector-parser": "^6.0.4" - }, - "engines": { - "node": "^10 || ^12 || >= 14" + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "is-regex": "^1.1.4" }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-modules-values": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/postcss-modules-values/-/postcss-modules-values-4.0.0.tgz", - "integrity": "sha512-RDxHkAiEGI78gS2ofyvCsu7iycRv7oqw5xMWn9iMoR0N/7mf9D50ecQqUo5BZ9Zh2vH4bCUR/ktCqbB9m8vJjQ==", + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", + "dev": true + }, + "node_modules/sanitize.css": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", + "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==", + "dev": true + }, + "node_modules/sax": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", + "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", + "dev": true, + "optional": true + }, + "node_modules/schema-utils": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", + "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, "dependencies": { - "icss-utils": "^5.0.0" + "@types/json-schema": "^7.0.8", + "ajv": "^6.12.5", + "ajv-keywords": "^3.5.2" }, "engines": { - "node": "^10 || ^12 || >= 14" + "node": ">= 10.13.0" }, - "peerDependencies": { - "postcss": "^8.1.0" + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" } }, - "node_modules/postcss-normalize": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/postcss-normalize/-/postcss-normalize-10.0.1.tgz", - "integrity": "sha512-+5w18/rDev5mqERcG3W5GZNMJa1eoYYNGo8gB7tEwaos0ajk3ZXAI4mHGcNT47NE+ZnZD1pEpUOFLvltIwmeJA==", + "node_modules/semver": { + "version": "7.5.4", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", + "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", "dev": true, "dependencies": { - "@csstools/normalize.css": "*", - "postcss-browser-comments": "^4", - "sanitize.css": "*" + "lru-cache": "^6.0.0" }, - "engines": { - "node": ">= 12" + "bin": { + "semver": "bin/semver.js" }, - "peerDependencies": { - "browserslist": ">= 4", - "postcss": ">= 8" - } - }, - "node_modules/postcss-normalize-charset": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-charset/-/postcss-normalize-charset-6.0.0.tgz", - "integrity": "sha512-cqundwChbu8yO/gSWkuFDmKrCZ2vJzDAocheT2JTd0sFNA4HMGoKMfbk2B+J0OmO0t5GUkiAkSM5yF2rSLUjgQ==", - "dev": true, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=10" } }, - "node_modules/postcss-normalize-display-values": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-display-values/-/postcss-normalize-display-values-6.0.0.tgz", - "integrity": "sha512-Qyt5kMrvy7dJRO3OjF7zkotGfuYALETZE+4lk66sziWSPzlBEt7FrUshV6VLECkI4EN8Z863O6Nci4NXQGNzYw==", + "node_modules/semver-regex": { + "version": "4.0.5", + "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", + "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, "engines": { - "node": "^14 || ^16 || >=18.0" + "node": ">=12" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/postcss-normalize-positions": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-positions/-/postcss-normalize-positions-6.0.0.tgz", - "integrity": "sha512-mPCzhSV8+30FZyWhxi6UoVRYd3ZBJgTRly4hOkaSifo0H+pjDYcii/aVT4YE6QpOil15a5uiv6ftnY3rm0igPg==", + "node_modules/semver-truncate": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-2.0.0.tgz", + "integrity": "sha512-Rh266MLDYNeML5h90ttdMwfXe1+Nc4LAWd9X1KdJe8pPHP4kFmvLZALtsMNHNdvTyQygbEC0D59sIz47DIaq8w==", "dev": true, "dependencies": { - "postcss-value-parser": "^4.2.0" + "semver": "^6.0.0" }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=8" } }, - "node_modules/postcss-normalize-repeat-style": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-repeat-style/-/postcss-normalize-repeat-style-6.0.0.tgz", - "integrity": "sha512-50W5JWEBiOOAez2AKBh4kRFm2uhrT3O1Uwdxz7k24aKtbD83vqmcVG7zoIwo6xI2FZ/HDlbrCopXhLeTpQib1A==", + "node_modules/semver-truncate/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "bin": { + "semver": "bin/semver.js" } }, - "node_modules/postcss-normalize-string": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-string/-/postcss-normalize-string-6.0.0.tgz", - "integrity": "sha512-KWkIB7TrPOiqb8ZZz6homet2KWKJwIlysF5ICPZrXAylGe2hzX/HSf4NTX2rRPJMAtlRsj/yfkrWGavFuB+c0w==", + "node_modules/serialize-javascript": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", + "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "randombytes": "^2.1.0" } }, - "node_modules/postcss-normalize-timing-functions": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-timing-functions/-/postcss-normalize-timing-functions-6.0.0.tgz", - "integrity": "sha512-tpIXWciXBp5CiFs8sem90IWlw76FV4oi6QEWfQwyeREVwUy39VSeSqjAT7X0Qw650yAimYW5gkl2Gd871N5SQg==", + "node_modules/shallow-clone": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", + "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", "dev": true, "dependencies": { - "postcss-value-parser": "^4.2.0" + "kind-of": "^6.0.2" }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=8" } }, - "node_modules/postcss-normalize-unicode": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-unicode/-/postcss-normalize-unicode-6.0.0.tgz", - "integrity": "sha512-ui5crYkb5ubEUDugDc786L/Me+DXp2dLg3fVJbqyAl0VPkAeALyAijF2zOsnZyaS1HyfPuMH0DwyY18VMFVNkg==", + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", "dev": true, "dependencies": { - "browserslist": "^4.21.4", - "postcss-value-parser": "^4.2.0" + "shebang-regex": "^3.0.0" }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=8" } }, - "node_modules/postcss-normalize-url": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-url/-/postcss-normalize-url-6.0.0.tgz", - "integrity": "sha512-98mvh2QzIPbb02YDIrYvAg4OUzGH7s1ZgHlD3fIdTHLgPLRpv1ZTKJDnSAKr4Rt21ZQFzwhGMXxpXlfrUBKFHw==", + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=8" } }, - "node_modules/postcss-normalize-whitespace": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-normalize-whitespace/-/postcss-normalize-whitespace-6.0.0.tgz", - "integrity": "sha512-7cfE1AyLiK0+ZBG6FmLziJzqQCpTQY+8XjMhMAz8WSBSCsCNNUKujgIgjCAmDT3cJ+3zjTXFkoD15ZPsckArVw==", + "node_modules/shell-quote": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true, - "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-ordered-values": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-ordered-values/-/postcss-ordered-values-6.0.0.tgz", - "integrity": "sha512-K36XzUDpvfG/nWkjs6d1hRBydeIxGpKS2+n+ywlKPzx1nMYDYpoGbcjhj5AwVYJK1qV2/SDoDEnHzlPD6s3nMg==", + "node_modules/side-channel": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", "dev": true, "dependencies": { - "cssnano-utils": "^4.0.0", - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" }, - "peerDependencies": { - "postcss": "^8.2.15" + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/postcss-reduce-initial": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-initial/-/postcss-reduce-initial-6.0.0.tgz", - "integrity": "sha512-s2UOnidpVuXu6JiiI5U+fV2jamAw5YNA9Fdi/GRK0zLDLCfXmSGqQtzpUPtfN66RtCbb9fFHoyZdQaxOB3WxVA==", + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/signals": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/signals/-/signals-1.0.0.tgz", + "integrity": "sha1-ZfDBWZNSs1Ny7KrlolDmEHN27Wk=" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", "dev": true, - "dependencies": { - "browserslist": "^4.21.4", - "caniuse-api": "^3.0.0" - }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=8" } }, - "node_modules/postcss-reduce-transforms": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-reduce-transforms/-/postcss-reduce-transforms-6.0.0.tgz", - "integrity": "sha512-FQ9f6xM1homnuy1wLe9lP1wujzxnwt1EwiigtWwuyf8FsqqXUDUp2Ulxf9A5yjlUOTdCJO6lonYjg1mgqIIi2w==", - "dev": true, + "node_modules/slickgrid": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/slickgrid/-/slickgrid-4.0.1.tgz", + "integrity": "sha512-5eB8S7QnqUM+h2aVzVgeZ1HtlqNXV82M9WYrd5/sFgYErD50PMZ2gpzXhloemqg8z2eaDysvgzGREoLLp180Lg==", "dependencies": { - "postcss-value-parser": "^4.2.0" - }, - "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "sortablejs": "^1.15.0" } }, - "node_modules/postcss-selector-parser": { - "version": "6.0.12", - "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz", - "integrity": "sha512-NdxGCAZdRrwVI1sy59+Wzrh+pMMHxapGnpfenDVlMEXoOcvt4pGE0JLK9YY2F5dLxcFYA/YbVQKhcGU+FtSYQg==", - "dev": true, - "dependencies": { - "cssesc": "^3.0.0", - "util-deprecate": "^1.0.2" - }, + "node_modules/sort-css-media-queries": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz", + "integrity": "sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==", + "dev": true, "engines": { - "node": ">=4" + "node": ">= 6.3.0" } }, - "node_modules/postcss-sort-media-queries": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/postcss-sort-media-queries/-/postcss-sort-media-queries-5.2.0.tgz", - "integrity": "sha512-AZ5fDMLD8SldlAYlvi8NIqo0+Z8xnXU2ia0jxmuhxAU+Lqt9K+AlmLNJ/zWEnE9x+Zx3qL3+1K20ATgNOr3fAA==", + "node_modules/sort-keys": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", + "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", "dev": true, "dependencies": { - "sort-css-media-queries": "2.2.0" + "is-plain-obj": "^1.0.0" }, "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "postcss": "^8.4.23" + "node": ">=0.10.0" } }, - "node_modules/postcss-svgo": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-svgo/-/postcss-svgo-6.0.0.tgz", - "integrity": "sha512-r9zvj/wGAoAIodn84dR/kFqwhINp5YsJkLoujybWG59grR/IHx+uQ2Zo+IcOwM0jskfYX3R0mo+1Kip1VSNcvw==", + "node_modules/sort-keys-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", + "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", "dev": true, "dependencies": { - "postcss-value-parser": "^4.2.0", - "svgo": "^3.0.2" + "sort-keys": "^1.0.0" }, "engines": { - "node": "^14 || ^16 || >= 18" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.10.0" } }, - "node_modules/postcss-unique-selectors": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/postcss-unique-selectors/-/postcss-unique-selectors-6.0.0.tgz", - "integrity": "sha512-EPQzpZNxOxP7777t73RQpZE5e9TrnCrkvp7AH7a0l89JmZiPnS82y216JowHXwpBCQitfyxrof9TK3rYbi7/Yw==", + "node_modules/sortablejs": { + "version": "1.15.0", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.0.tgz", + "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", "dev": true, - "dependencies": { - "postcss-selector-parser": "^6.0.5" - }, "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=0.10.0" } }, - "node_modules/postcss-value-parser": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", - "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==", - "dev": true - }, - "node_modules/postcss/node_modules/nanoid": { - "version": "3.3.6", - "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.6.tgz", - "integrity": "sha512-BGcqMMJuToF7i1rt+2PWSNVnWIkGCU78jBG3RxO/bZlnZPK2Cmi2QaffxGO/2RvWi9sL+FAiRiXMgsyxQ1DIDA==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/ai" - } - ], - "bin": { - "nanoid": "bin/nanoid.cjs" - }, + "node_modules/source-map-js": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", + "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", "engines": { - "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + "node": ">=0.10.0" } }, - "node_modules/prelude-ls": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", - "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "node_modules/source-map-loader": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.1.tgz", + "integrity": "sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==", "dev": true, + "dependencies": { + "abab": "^2.0.6", + "iconv-lite": "^0.6.3", + "source-map-js": "^1.0.2" + }, "engines": { - "node": ">= 0.8.0" + "node": ">= 14.15.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/webpack" + }, + "peerDependencies": { + "webpack": "^5.72.1" } }, - "node_modules/prr": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", - "integrity": "sha512-yPw4Sng1gWghHQWj0B3ZggWUm4qVbPwPFcRG8KyxiU7J2OHFSoEHKS+EZ3fv5l1t9CyCiop6l/ZYeWbrgoQejw==", + "node_modules/source-map-support": { + "version": "0.5.21", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", + "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, - "optional": true + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", + "node_modules/spawn-command": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", + "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", "dev": true }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", + "node_modules/spdx-correct": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", + "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", "dev": true, "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, - "node_modules/punycode": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", - "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/queue-microtask": { - "version": "1.2.3", - "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", - "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] + "node_modules/spdx-exceptions": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", + "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "dev": true }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", + "node_modules/spdx-expression-parse": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", + "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "dependencies": { + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "node_modules/spdx-license-ids": { + "version": "3.0.12", + "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", + "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", + "dev": true + }, + "node_modules/string_decoder": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", + "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", "dev": true, "dependencies": { - "safe-buffer": "^5.1.0" + "safe-buffer": "~5.2.0" } }, - "node_modules/read-pkg": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", - "integrity": "sha512-BLq/cCO9two+lBgiTYNqD6GdtK8s4NpaWrl6/rCO9w0TUS8oJl7cmToOZfRYllKTISY6nt1U7jQ53brmKqY6BA==", + "node_modules/string-width": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", + "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", "dev": true, "dependencies": { - "load-json-file": "^4.0.0", - "normalize-package-data": "^2.3.2", - "path-type": "^3.0.0" + "eastasianwidth": "^0.2.0", + "emoji-regex": "^9.2.2", + "strip-ansi": "^7.0.1" }, "engines": { - "node": ">=4" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/read-pkg/node_modules/path-type": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/path-type/-/path-type-3.0.0.tgz", - "integrity": "sha512-T2ZUsdZFHgA3u4e5PfPbjd7HDDpxPnQb5jN0SrDsjNSuVXHJqtwTnWqG0B1jZrgmJ/7lj1EmVIByWt1gxGkWvg==", + "node_modules/string-width-cjs": { + "name": "string-width", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", "dev": true, "dependencies": { - "pify": "^3.0.0" + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" }, "engines": { - "node": ">=4" - } - }, - "node_modules/read-pkg/node_modules/pify": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-3.0.0.tgz", - "integrity": "sha512-C3FsVNH1udSEX48gGX1xfvwTWfsYWj5U+8/uK15BGzIGrKoUpghX8hWZwa/OFnakBiiVNmBvemTJR5mcy7iPcg==", - "dev": true, - "engines": { - "node": ">=4" + "node": ">=8" } }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", + "node_modules/string-width-cjs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string-width/node_modules/ansi-regex": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", + "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, "engines": { - "node": ">= 6" + "node": ">=12" + }, + "funding": { + "url": "https://github.com/chalk/ansi-regex?sponsor=1" } }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", + "node_modules/string-width/node_modules/strip-ansi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", + "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", "dev": true, "dependencies": { - "readable-stream": "^3.6.0" + "ansi-regex": "^6.0.1" }, "engines": { - "node": ">=8" + "node": ">=12" }, "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" + "url": "https://github.com/chalk/strip-ansi?sponsor=1" } }, - "node_modules/regexp.prototype.flags": { - "version": "1.4.3", - "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", - "integrity": "sha512-fjggEOO3slI6Wvgjwflkc4NFRCTZAu5CnNfBd5qOMYhWdn67nJBBu34/TkD++eeFmd8C9r9jfXJ27+nSiRkSUA==", + "node_modules/string.prototype.padend": { + "version": "3.1.4", + "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", + "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==", "dev": true, "dependencies": { "call-bind": "^1.0.2", - "define-properties": "^1.1.3", - "functions-have-names": "^1.2.2" + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "engines": { "node": ">= 0.4" @@ -6127,954 +8207,1060 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "node_modules/string.prototype.trimend": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", + "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", "dev": true, - "engines": { - "node": ">=0.10.0" + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", - "integrity": "sha512-nBpuuYuY5jFsli/JIs1oldw6fOQCBioohqWZg/2hiaOybXOft4lonv85uDOKXdf8rhyK159cxU5cDcK/NKk8zw==", + "node_modules/string.prototype.trimstart": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", + "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", "dev": true, "dependencies": { - "is-core-module": "^2.9.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" + "call-bind": "^1.0.2", + "define-properties": "^1.1.4", + "es-abstract": "^1.20.4" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, "dependencies": { - "resolve-from": "^5.0.0" + "ansi-regex": "^5.0.1" }, "engines": { "node": ">=8" } }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "node_modules/strip-ansi-cjs": { + "name": "strip-ansi", + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, "engines": { "node": ">=8" } }, - "node_modules/resolve-from": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", - "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true, "engines": { "node": ">=4" } }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dev": true, - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/reusify": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", - "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "node_modules/strip-eof": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", + "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", "dev": true, "engines": { - "iojs": ">=1.0.0", "node": ">=0.10.0" } }, - "node_modules/rimraf": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", - "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", - "dev": true, - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/run-parallel": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", - "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "dependencies": { - "queue-microtask": "^1.2.2" + "engines": { + "node": ">=6" } }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true - }, - "node_modules/safe-regex-test": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.0.tgz", - "integrity": "sha512-JBUUzyOgEwXQY1NuPtvcj/qcBDbDmEvWufhlnXZIm75DEHp+afM1r1ujJpJsV/gSM4t59tpDyPi1sd6ZaPFfsA==", + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true, - "dependencies": { - "call-bind": "^1.0.2", - "get-intrinsic": "^1.1.3", - "is-regex": "^1.1.4" + "engines": { + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/safer-buffer": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", - "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==", - "dev": true - }, - "node_modules/sanitize.css": { - "version": "13.0.0", - "resolved": "https://registry.npmjs.org/sanitize.css/-/sanitize.css-13.0.0.tgz", - "integrity": "sha512-ZRwKbh/eQ6w9vmTjkuG0Ioi3HBwPFce0O+v//ve+aOq1oeCy7jMV2qzzAlpsNuqpqCBjjriM1lbtZbF/Q8jVyA==", - "dev": true - }, - "node_modules/sax": { - "version": "1.2.4", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", - "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", - "dev": true, - "optional": true - }, - "node_modules/schema-utils": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", - "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", + "node_modules/strip-outer": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-2.0.0.tgz", + "integrity": "sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==", "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, "engines": { - "node": ">= 10.13.0" + "node": "^12.20.0 || ^14.13.1 || >=16.0.0" }, "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/semver": { - "version": "7.5.4", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.5.4.tgz", - "integrity": "sha512-1bCSESV6Pv+i21Hvpxp3Dx+pSD8lIPt8uVjRrxAUt/nbswYc+tK6Y2btiULjd4+fnq15PX+nqQDC7Oft7WkwcA==", + "node_modules/strtok3": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", + "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", "dev": true, "dependencies": { - "lru-cache": "^6.0.0" - }, - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/semver-regex": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", - "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", - "dev": true, + "@tokenizer/token": "^0.3.0", + "peek-readable": "^5.0.0" + }, "engines": { - "node": ">=12" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/semver-truncate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-2.0.0.tgz", - "integrity": "sha512-Rh266MLDYNeML5h90ttdMwfXe1+Nc4LAWd9X1KdJe8pPHP4kFmvLZALtsMNHNdvTyQygbEC0D59sIz47DIaq8w==", + "node_modules/stylehacks": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.0.0.tgz", + "integrity": "sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw==", "dev": true, "dependencies": { - "semver": "^6.0.0" + "browserslist": "^4.21.4", + "postcss-selector-parser": "^6.0.4" }, "engines": { - "node": ">=8" + "node": "^14 || ^16 || >=18.0" + }, + "peerDependencies": { + "postcss": "^8.2.15" } }, - "node_modules/semver-truncate/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "node_modules/sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, "bin": { - "semver": "bin/semver.js" + "sucrase": "bin/sucrase", + "sucrase-node": "bin/sucrase-node" + }, + "engines": { + "node": ">=8" } }, - "node_modules/serialize-javascript": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", - "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", + "node_modules/sucrase/node_modules/commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", "dev": true, - "dependencies": { - "randombytes": "^2.1.0" + "engines": { + "node": ">= 6" } }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", + "node_modules/sucrase/node_modules/glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", "dev": true, "dependencies": { - "kind-of": "^6.0.2" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" }, "engines": { - "node": ">=8" + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/shebang-command": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", - "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", "dev": true, "dependencies": { - "shebang-regex": "^3.0.0" + "has-flag": "^4.0.0" }, "engines": { "node": ">=8" } }, - "node_modules/shebang-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", - "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "node_modules/supports-color/node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, "engines": { "node": ">=8" } }, - "node_modules/shell-quote": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", - "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "dev": true, + "engines": { + "node": ">= 0.4" + }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "node_modules/svgo": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz", + "integrity": "sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==", "dev": true, "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" + "@trysound/sax": "0.2.0", + "commander": "^7.2.0", + "css-select": "^5.1.0", + "css-tree": "^2.2.1", + "csso": "^5.0.5", + "picocolors": "^1.0.0" + }, + "bin": { + "svgo": "bin/svgo" + }, + "engines": { + "node": ">=14.0.0" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "type": "opencollective", + "url": "https://opencollective.com/svgo" } }, - "node_modules/signal-exit": { - "version": "3.0.7", - "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", - "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", - "dev": true - }, - "node_modules/signals": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/signals/-/signals-1.0.0.tgz", - "integrity": "sha1-ZfDBWZNSs1Ny7KrlolDmEHN27Wk=" - }, - "node_modules/slash": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", - "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "node_modules/svgo/node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", "dev": true, "engines": { - "node": ">=8" + "node": ">= 10" } }, - "node_modules/slickgrid": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/slickgrid/-/slickgrid-4.0.1.tgz", - "integrity": "sha512-5eB8S7QnqUM+h2aVzVgeZ1HtlqNXV82M9WYrd5/sFgYErD50PMZ2gpzXhloemqg8z2eaDysvgzGREoLLp180Lg==", - "dependencies": { - "sortablejs": "^1.15.0" + "node_modules/swc-loader": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.3.tgz", + "integrity": "sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A==", + "dev": true, + "peerDependencies": { + "@swc/core": "^1.2.147", + "webpack": ">=2" } }, - "node_modules/sort-css-media-queries": { + "node_modules/tapable": { "version": "2.2.0", - "resolved": "https://registry.npmjs.org/sort-css-media-queries/-/sort-css-media-queries-2.2.0.tgz", - "integrity": "sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", + "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", "dev": true, "engines": { - "node": ">= 6.3.0" + "node": ">=6" } }, - "node_modules/sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", + "node_modules/terser": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", + "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", "dev": true, "dependencies": { - "is-plain-obj": "^1.0.0" + "@jridgewell/source-map": "^0.3.2", + "acorn": "^8.5.0", + "commander": "^2.20.0", + "source-map-support": "~0.5.20" }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sort-keys-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", - "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", - "dev": true, - "dependencies": { - "sort-keys": "^1.0.0" + "bin": { + "terser": "bin/terser" }, "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sortablejs": { - "version": "1.15.0", - "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.0.tgz", - "integrity": "sha512-bv9qgVMjUMf89wAvM6AxVvS/4MX3sPeN0+agqShejLU5z5GX4C75ow1O2e5k4L6XItUyAK3gH6AxSbXrOM5e8w==" - }, - "node_modules/source-map": { - "version": "0.6.1", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", - "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/source-map-js": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", - "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==", - "engines": { - "node": ">=0.10.0" + "node": ">=10" } }, - "node_modules/source-map-loader": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/source-map-loader/-/source-map-loader-4.0.1.tgz", - "integrity": "sha512-oqXpzDIByKONVY8g1NUPOTQhe0UTU5bWUl32GSkqK2LjJj0HmwTMVKxcUip0RgAYhY1mqgOxjbQM48a0mmeNfA==", + "node_modules/terser-webpack-plugin": { + "version": "5.3.9", + "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", + "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, "dependencies": { - "abab": "^2.0.6", - "iconv-lite": "^0.6.3", - "source-map-js": "^1.0.2" + "@jridgewell/trace-mapping": "^0.3.17", + "jest-worker": "^27.4.5", + "schema-utils": "^3.1.1", + "serialize-javascript": "^6.0.1", + "terser": "^5.16.8" }, "engines": { - "node": ">= 14.15.0" + "node": ">= 10.13.0" }, "funding": { "type": "opencollective", "url": "https://opencollective.com/webpack" }, "peerDependencies": { - "webpack": "^5.72.1" - } - }, - "node_modules/source-map-support": { - "version": "0.5.21", - "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", - "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", - "dev": true, - "dependencies": { - "buffer-from": "^1.0.0", - "source-map": "^0.6.0" + "webpack": "^5.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "esbuild": { + "optional": true + }, + "uglify-js": { + "optional": true + } } }, - "node_modules/spdx-correct": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", - "integrity": "sha512-cOYcUWwhCuHCXi49RhFRCyJEK3iPj1Ziz9DpViV3tbZOwXD49QzIN3MpOLJNxh2qwq2lJJZaKMVw9qNi4jTC0w==", - "dev": true, - "dependencies": { - "spdx-expression-parse": "^3.0.0", - "spdx-license-ids": "^3.0.0" - } + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", + "dev": true }, - "node_modules/spdx-exceptions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/spdx-exceptions/-/spdx-exceptions-2.3.0.tgz", - "integrity": "sha512-/tTrYOC7PPI1nUAgx34hUpqXuyJG+DTHJTnIULG4rDygi4xu/tfgmq1e1cIRwRzwZgo4NLySi+ricLkZkw4i5A==", + "node_modules/thenby": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", + "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==", "dev": true }, - "node_modules/spdx-expression-parse": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/spdx-expression-parse/-/spdx-expression-parse-3.0.1.tgz", - "integrity": "sha512-cbqHunsQWnJNE6KhVSMsMeH5H/L9EpymbzqTQ3uLwNCLZ1Q481oWaofqH7nO6V07xlXwY6PhQdQ2IedWx/ZK4Q==", + "node_modules/thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", "dev": true, "dependencies": { - "spdx-exceptions": "^2.1.0", - "spdx-license-ids": "^3.0.0" + "any-promise": "^1.0.0" } }, - "node_modules/spdx-license-ids": { - "version": "3.0.12", - "resolved": "https://registry.npmjs.org/spdx-license-ids/-/spdx-license-ids-3.0.12.tgz", - "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", - "dev": true + "node_modules/thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "dependencies": { + "thenify": ">= 3.1.0 < 4" + }, + "engines": { + "node": ">=0.8" + } }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", "dev": true, "dependencies": { - "safe-buffer": "~5.2.0" + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" } }, - "node_modules/string-width": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", - "integrity": "sha512-HnLOCR3vjcY8beoNLtcjZ5/nxn2afmME6lhrDrebokqMap+XbeW8n9TXpPDOqdGK5qcI3oT0GKTW6wC7EMiVqA==", + "node_modules/token-types": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", + "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", "dev": true, "dependencies": { - "eastasianwidth": "^0.2.0", - "emoji-regex": "^9.2.2", - "strip-ansi": "^7.0.1" + "@tokenizer/token": "^0.3.0", + "ieee754": "^1.2.1" }, "engines": { - "node": ">=12" + "node": ">=14.16" }, "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "type": "github", + "url": "https://github.com/sponsors/Borewit" } }, - "node_modules/string-width-cjs": { - "name": "string-width", - "version": "4.2.3", - "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", - "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "node_modules/tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", "dev": true, "dependencies": { - "emoji-regex": "^8.0.0", - "is-fullwidth-code-point": "^3.0.0", - "strip-ansi": "^6.0.1" + "punycode": "^2.1.0" + } + }, + "node_modules/tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true, + "bin": { + "tree-kill": "cli.js" + } + }, + "node_modules/trim-repeated": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-2.0.0.tgz", + "integrity": "sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^5.0.0" }, "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/string-width-cjs/node_modules/emoji-regex": { - "version": "8.0.0", - "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", - "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", - "dev": true - }, - "node_modules/string-width/node_modules/ansi-regex": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-6.0.1.tgz", - "integrity": "sha512-n5M855fKb2SsfMIiFFoVrABHJC8QtHwVx+mHWP3QcEqBHYienj5dHSgjbxtC0WEZXYt4wcD6zrQElDPhFuZgfA==", + "node_modules/trim-repeated/node_modules/escape-string-regexp": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", + "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", "dev": true, "engines": { "node": ">=12" }, "funding": { - "url": "https://github.com/chalk/ansi-regex?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/string-width/node_modules/strip-ansi": { - "version": "7.1.0", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-7.1.0.tgz", - "integrity": "sha512-iq6eVVI64nQQTRYq2KtEg2d2uU7LElhTJwsH4YzIHZshxlgZms/wIc4VoDQTlG/IvVIrBKG06CrZnp0qv7hkcQ==", + "node_modules/ts-api-utils": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", + "integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==", "dev": true, - "dependencies": { - "ansi-regex": "^6.0.1" - }, "engines": { - "node": ">=12" + "node": ">=16.13.0" }, - "funding": { - "url": "https://github.com/chalk/strip-ansi?sponsor=1" + "peerDependencies": { + "typescript": ">=4.2.0" } }, - "node_modules/string.prototype.padend": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/string.prototype.padend/-/string.prototype.padend-3.1.4.tgz", - "integrity": "sha512-67otBXoksdjsnXXRUq+KMVTdlVRZ2af422Y0aTyTjVaoQkGr3mxl2Bc5emi7dOQ3OGVVQQskmLEWwFXwommpNw==", + "node_modules/ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, + "node_modules/ts-loader": { + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz", + "integrity": "sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "chalk": "^4.1.0", + "enhanced-resolve": "^5.0.0", + "micromatch": "^4.0.0", + "semver": "^7.3.4" }, "engines": { - "node": ">= 0.4" + "node": ">=12.0.0" }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "peerDependencies": { + "typescript": "*", + "webpack": "^5.0.0" } }, - "node_modules/string.prototype.trimend": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.6.tgz", - "integrity": "sha512-JySq+4mrPf9EsDBEDYMOb/lM7XQLulwg5R/m1r0PXEFqrV0qHvl58sdTilSXtKOflCsK2E8jxf+GKC0T07RWwQ==", + "node_modules/ts-loader/node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/ansi-styles?sponsor=1" } }, - "node_modules/string.prototype.trimstart": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.6.tgz", - "integrity": "sha512-omqjMDaY92pbn5HOX7f9IccLA+U1tA9GvtU4JrodiXFfYB7jPzzHpRzpglLAjtUV6bB557zwClJezTqnAiYnQA==", + "node_modules/ts-loader/node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", "dev": true, "dependencies": { - "call-bind": "^1.0.2", - "define-properties": "^1.1.4", - "es-abstract": "^1.20.4" + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" }, "funding": { - "url": "https://github.com/sponsors/ljharb" + "url": "https://github.com/chalk/chalk?sponsor=1" } }, - "node_modules/strip-ansi": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/ts-loader/node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "color-name": "~1.1.4" }, "engines": { - "node": ">=8" + "node": ">=7.0.0" } }, - "node_modules/strip-ansi-cjs": { - "name": "strip-ansi", - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", - "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "node_modules/ts-loader/node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "node_modules/tsup": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-7.2.0.tgz", + "integrity": "sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==", "dev": true, "dependencies": { - "ansi-regex": "^5.0.1" + "bundle-require": "^4.0.0", + "cac": "^6.7.12", + "chokidar": "^3.5.1", + "debug": "^4.3.1", + "esbuild": "^0.18.2", + "execa": "^5.0.0", + "globby": "^11.0.3", + "joycon": "^3.0.1", + "postcss-load-config": "^4.0.1", + "resolve-from": "^5.0.0", + "rollup": "^3.2.5", + "source-map": "0.8.0-beta.0", + "sucrase": "^3.20.3", + "tree-kill": "^1.2.2" + }, + "bin": { + "tsup": "dist/cli-default.js", + "tsup-node": "dist/cli-node.js" }, "engines": { - "node": ">=8" + "node": ">=16.14" + }, + "peerDependencies": { + "@swc/core": "^1", + "postcss": "^8.4.12", + "typescript": ">=4.1.0" + }, + "peerDependenciesMeta": { + "@swc/core": { + "optional": true + }, + "postcss": { + "optional": true + }, + "typescript": { + "optional": true + } } }, - "node_modules/strip-bom": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", - "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "node_modules/tsup/node_modules/@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "cpu": [ + "arm" + ], "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=4" + "node": ">=12" } }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", + "node_modules/tsup/node_modules/@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "android" + ], "engines": { - "node": ">=0.10.0" + "node": ">=12" } }, - "node_modules/strip-final-newline": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", - "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "node_modules/tsup/node_modules/@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "cpu": [ + "x64" + ], + "dev": true, + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/tsup/node_modules/@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "node_modules/tsup/node_modules/@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "darwin" + ], "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/strip-outer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-2.0.0.tgz", - "integrity": "sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==", + "node_modules/tsup/node_modules/@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "cpu": [ + "arm64" + ], "dev": true, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" + "node": ">=12" } }, - "node_modules/strtok3": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", - "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", + "node_modules/tsup/node_modules/@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^5.0.0" - }, + "optional": true, + "os": [ + "freebsd" + ], "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" + "node": ">=12" } }, - "node_modules/stylehacks": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.0.0.tgz", - "integrity": "sha512-+UT589qhHPwz6mTlCLSt/vMNTJx8dopeJlZAlBMJPWA3ORqu6wmQY7FBXf+qD+FsqoBJODyqNxOUP3jdntFRdw==", + "node_modules/tsup/node_modules/@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "cpu": [ + "arm" + ], "dev": true, - "dependencies": { - "browserslist": "^4.21.4", - "postcss-selector-parser": "^6.0.4" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": "^14 || ^16 || >=18.0" - }, - "peerDependencies": { - "postcss": "^8.2.15" + "node": ">=12" } }, - "node_modules/supports-color": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", - "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "node_modules/tsup/node_modules/@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "has-flag": "^4.0.0" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/supports-color/node_modules/has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "node_modules/tsup/node_modules/@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "cpu": [ + "ia32" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=8" + "node": ">=12" } }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "node_modules/tsup/node_modules/@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "cpu": [ + "loong64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" + "node": ">=12" } }, - "node_modules/svgo": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/svgo/-/svgo-3.0.2.tgz", - "integrity": "sha512-Z706C1U2pb1+JGP48fbazf3KxHrWOsLme6Rv7imFBn5EnuanDW1GPaA/P1/dvObE670JDePC3mnj0k0B7P0jjQ==", + "node_modules/tsup/node_modules/@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "cpu": [ + "mips64el" + ], "dev": true, - "dependencies": { - "@trysound/sax": "0.2.0", - "commander": "^7.2.0", - "css-select": "^5.1.0", - "css-tree": "^2.2.1", - "csso": "^5.0.5", - "picocolors": "^1.0.0" - }, - "bin": { - "svgo": "bin/svgo" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=14.0.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/svgo" + "node": ">=12" } }, - "node_modules/svgo/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "node_modules/tsup/node_modules/@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "cpu": [ + "ppc64" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">= 10" + "node": ">=12" } }, - "node_modules/swc-loader": { - "version": "0.2.3", - "resolved": "https://registry.npmjs.org/swc-loader/-/swc-loader-0.2.3.tgz", - "integrity": "sha512-D1p6XXURfSPleZZA/Lipb3A8pZ17fP4NObZvFCDjK/OKljroqDpPmsBdTraWhVBqUNpcWBQY1imWdoPScRlQ7A==", + "node_modules/tsup/node_modules/@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "cpu": [ + "riscv64" + ], "dev": true, - "peerDependencies": { - "@swc/core": "^1.2.147", - "webpack": ">=2" + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" } }, - "node_modules/tapable": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", - "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", + "node_modules/tsup/node_modules/@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "cpu": [ + "s390x" + ], "dev": true, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=6" + "node": ">=12" } }, - "node_modules/terser": { - "version": "5.17.1", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", - "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", + "node_modules/tsup/node_modules/@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.2", - "acorn": "^8.5.0", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, + "optional": true, + "os": [ + "linux" + ], "engines": { - "node": ">=10" + "node": ">=12" } }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.9", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", - "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", + "node_modules/tsup/node_modules/@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.17", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.16.8" - }, + "optional": true, + "os": [ + "netbsd" + ], "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - }, - "peerDependenciesMeta": { - "@swc/core": { - "optional": true - }, - "esbuild": { - "optional": true - }, - "uglify-js": { - "optional": true - } + "node": ">=12" } }, - "node_modules/text-table": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", - "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", - "dev": true - }, - "node_modules/to-regex-range": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", - "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "node_modules/tsup/node_modules/@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "is-number": "^7.0.0" - }, + "optional": true, + "os": [ + "openbsd" + ], "engines": { - "node": ">=8.0" + "node": ">=12" } }, - "node_modules/token-types": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", - "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", + "node_modules/tsup/node_modules/@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "cpu": [ + "x64" + ], "dev": true, - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, + "optional": true, + "os": [ + "sunos" + ], "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" + "node": ">=12" } }, - "node_modules/trim-repeated": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-2.0.0.tgz", - "integrity": "sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==", + "node_modules/tsup/node_modules/@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "cpu": [ + "arm64" + ], "dev": true, - "dependencies": { - "escape-string-regexp": "^5.0.0" - }, + "optional": true, + "os": [ + "win32" + ], "engines": { "node": ">=12" } }, - "node_modules/trim-repeated/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", + "node_modules/tsup/node_modules/@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "cpu": [ + "ia32" + ], "dev": true, + "optional": true, + "os": [ + "win32" + ], "engines": { "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ts-api-utils": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", - "integrity": "sha512-lC/RGlPmwdrIBFTX59wwNzqh7aR2otPNPR/5brHZm/XKFYKsfqxihXUe9pU3JI+3vGkl+vyCoNNnPhJn3aLK1A==", + "node_modules/tsup/node_modules/@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "cpu": [ + "x64" + ], "dev": true, + "optional": true, + "os": [ + "win32" + ], "engines": { - "node": ">=16.13.0" - }, - "peerDependencies": { - "typescript": ">=4.2.0" + "node": ">=12" } }, - "node_modules/ts-loader": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.0.tgz", - "integrity": "sha512-LLlB/pkB4q9mW2yLdFMnK3dEHbrBjeZTYguaaIfusyojBgAGf5kF+O6KcWqiGzWqHk0LBsoolrp4VftEURhybg==", + "node_modules/tsup/node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", "dev": true, "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4", - "source-map": "^0.7.4" + "ms": "2.1.2" }, "engines": { - "node": ">=12.0.0" + "node": ">=6.0" }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "node_modules/ts-loader/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "node_modules/tsup/node_modules/esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "node_modules/tsup/node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", "dev": true, "dependencies": { - "color-convert": "^2.0.1" + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" }, "engines": { - "node": ">=8" + "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" + "url": "https://github.com/sindresorhus/execa?sponsor=1" } }, - "node_modules/ts-loader/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "node_modules/tsup/node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, "engines": { "node": ">=10" }, "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" + "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/ts-loader/node_modules/color-convert": { + "node_modules/tsup/node_modules/is-stream": { "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/tsup/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/tsup/node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", "dev": true, "dependencies": { - "color-name": "~1.1.4" + "path-key": "^3.0.0" }, "engines": { - "node": ">=7.0.0" + "node": ">=8" } }, - "node_modules/ts-loader/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true + "node_modules/tsup/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } }, - "node_modules/ts-loader/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "node_modules/tsup/node_modules/source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", "dev": true, + "dependencies": { + "whatwg-url": "^7.0.0" + }, "engines": { "node": ">= 8" } @@ -7145,6 +9331,15 @@ "url": "https://github.com/sponsors/ljharb" } }, + "node_modules/universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true, + "engines": { + "node": ">= 10.0.0" + } + }, "node_modules/update-browserslist-db": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", @@ -7221,6 +9416,12 @@ "node": ">=10.13.0" } }, + "node_modules/webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, "node_modules/webpack": { "version": "5.89.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", @@ -7365,6 +9566,17 @@ "node": ">=10.13.0" } }, + "node_modules/whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "dependencies": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -7555,12 +9767,95 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "node_modules/xxh3-ts": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/xxh3-ts/-/xxh3-ts-1.0.6.tgz", + "integrity": "sha512-mFdXT/i6svQNNmwICmszSfKgnYBGBIaCKzPxYHfpM6e1hxYX2gfGPrI9mKRzSnFpi6ieBIK88TGlaudcPYZW5g==", + "dev": true, + "dependencies": { + "buffer": "^6.0.3" + } + }, + "node_modules/xxhashjs": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", + "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", + "dev": true, + "dependencies": { + "cuint": "^0.2.2" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, "node_modules/yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "node_modules/yaml": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.3.tgz", + "integrity": "sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==", + "dev": true, + "engines": { + "node": ">= 14" + } + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/yargs/node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, "node_modules/yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", @@ -7607,6 +9902,45 @@ "js-tokens": "^4.0.0" } }, + "@babel/runtime": { + "version": "7.23.2", + "resolved": "https://registry.npmjs.org/@babel/runtime/-/runtime-7.23.2.tgz", + "integrity": "sha512-mM8eg4yl5D6i3lu2QKPuPH4FArvJ8KhTofbE7jwMUv9KX5mBvwPAqnV3MlyBNqdp9RyRKP6Yck8TrfYrPvX3bg==", + "dev": true, + "requires": { + "regenerator-runtime": "^0.14.0" + } + }, + "@cjs-exporter/globby": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/@cjs-exporter/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-rxSVbUhNmIYTZKzrtb6cJIUfFk0PDxzeR4+dzi8edKYmmbqRBO/k7N+tW///QmtY6OznemXiLMSZ20E6DHegxQ==", + "dev": true, + "requires": { + "globby": "13.1.3" + }, + "dependencies": { + "globby": { + "version": "13.1.3", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", + "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", + "dev": true, + "requires": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.11", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^4.0.0" + } + }, + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + } + } + }, "@csstools/normalize.css": { "version": "12.0.0", "resolved": "https://registry.npmjs.org/@csstools/normalize.css/-/normalize.css-12.0.0.tgz", @@ -7619,6 +9953,77 @@ "integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==", "dev": true }, + "@enonic-types/core": { + "version": "7.13.3", + "resolved": "https://registry.npmjs.org/@enonic-types/core/-/core-7.13.3.tgz", + "integrity": "sha512-wi4mNgs+6Pyhs/Zik0NVmPecNjlSR3JvgzHeglGReDVhiEzwQkMvFKx83rO/0HR5+WBX8b4YVlms8i5020E1HQ==", + "dev": true + }, + "@enonic-types/global": { + "version": "7.13.3", + "resolved": "https://registry.npmjs.org/@enonic-types/global/-/global-7.13.3.tgz", + "integrity": "sha512-V2etTglryEW+6i/WP8b64f6ZospVRme5Ku+1IW+biRsXpZqHbS3VGj0BlEeAnaGmBNS1WRVqHN0cGXGH29VRvw==", + "dev": true + }, + "@enonic-types/lib-admin": { + "version": "7.13.3", + "resolved": "https://registry.npmjs.org/@enonic-types/lib-admin/-/lib-admin-7.13.3.tgz", + "integrity": "sha512-UA62DOCN5x7Jj4F8MxDpa6l+7GfkZI0O59xvoT5BfJF8JGoKWbhaUadRZsMJiaDhKkQUMjcPLF4bD3FZVGkuPA==", + "dev": true + }, + "@enonic-types/lib-auth": { + "version": "7.13.3", + "resolved": "https://registry.npmjs.org/@enonic-types/lib-auth/-/lib-auth-7.13.3.tgz", + "integrity": "sha512-HEme70wCpzqpfWGi2DSMffq2KDKI+u8QJLAeu1k+g49RFWwYcdtC0AXdvu0GN4dzIW/2ITs72JFLW/fAMXM+tw==", + "dev": true, + "requires": { + "@enonic-types/core": "7.13.3" + } + }, + "@enonic-types/lib-i18n": { + "version": "7.13.3", + "resolved": "https://registry.npmjs.org/@enonic-types/lib-i18n/-/lib-i18n-7.13.3.tgz", + "integrity": "sha512-7/eHD0PWuacER+/XbJM2WbL010NbH6gEJLxsg8LKmOXg1Dz+T6KQlSTVK+nyG2SoGt+8kJjFZVNXLirQezbaPg==", + "dev": true + }, + "@enonic-types/lib-io": { + "version": "7.13.3", + "resolved": "https://registry.npmjs.org/@enonic-types/lib-io/-/lib-io-7.13.3.tgz", + "integrity": "sha512-JjFwV1RH44QrSOMPsouTfEbh3eecpd+mWhE6FNj+gdwNV8JkKLqGZuXEYrgB+SLC/aN+Qt7rIa7fog/tTwP8VQ==", + "dev": true, + "requires": { + "@enonic-types/core": "7.13.3" + } + }, + "@enonic-types/lib-node": { + "version": "7.13.3", + "resolved": "https://registry.npmjs.org/@enonic-types/lib-node/-/lib-node-7.13.3.tgz", + "integrity": "sha512-uyT5S2bbHrWPYOejVyOSaCDyc9QVW/4sG1A9jXVj57KEN5ZvokkRUPz2RSXHQLgg7wCT+Vl8aqDWUPeyUzpw1g==", + "dev": true, + "requires": { + "@enonic-types/core": "7.13.3" + } + }, + "@enonic-types/lib-portal": { + "version": "7.13.3", + "resolved": "https://registry.npmjs.org/@enonic-types/lib-portal/-/lib-portal-7.13.3.tgz", + "integrity": "sha512-Bhy8po+HA6HQsI709Qcxg0i1B7p46IJMO3WZB4YdVDeO6dC56yV1cnsFcuV9PSPSPO51ZOZ7O3zc5SuJ7B5w/g==", + "dev": true, + "requires": { + "@enonic-types/core": "7.13.3" + } + }, + "@enonic/esbuild-plugin-copy-with-hash": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@enonic/esbuild-plugin-copy-with-hash/-/esbuild-plugin-copy-with-hash-0.0.1.tgz", + "integrity": "sha512-HUEF1znqgEJyjd9TUsIZeIo9VL59xgaIpwoHeICAtWLmcUIQ2OBjPw8udBepM/mrI2jf0tVDT47IB+85bqjVvw==", + "dev": true, + "requires": { + "@cjs-exporter/globby": "^13.1.3", + "colorette": "^2.0.20", + "xxh3-ts": "^1.0.6" + } + }, "@enonic/eslint-config": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@enonic/eslint-config/-/eslint-config-1.2.0.tgz", @@ -7631,17 +10036,17 @@ "requires": { "@enonic/eslint-config": "^1.2.0", "@swc/cli": "^0.1.62", - "@swc/core": "1.3.93", + "@swc/core": "1.3.91", "@types/dompurify": "^3.0.3", - "@types/jquery": "^3.5.22", + "@types/jquery": "^3.5.20", "@types/jqueryui": "^1.12.18", "@types/mousetrap": "^1.6.12", "@types/q": "^1.5.6", "@types/semver": "^7.5.3", "@types/slickgrid": "^2.1.36", - "@types/validator": "^13.11.3", - "@typescript-eslint/eslint-plugin": "^6.8.0", - "@typescript-eslint/parser": "^6.8.0", + "@types/validator": "^13.11.2", + "@typescript-eslint/eslint-plugin": "^6.7.4", + "@typescript-eslint/parser": "^6.7.4", "autoprefixer": "^10.4.16", "browserslist": "^4.22.1", "browserslist-config-enonic": "^1.0.8", @@ -7650,12 +10055,11 @@ "css-loader": "^6.8.1", "cssnano": "^6.0.1", "dompurify": "^3.0.6", - "enonic-admin-artifacts": "^1.8.5", + "enonic-admin-artifacts": "^1.8.3", "error-logger-webpack-plugin": "^1.1.1", - "eslint": "^8.51.0", + "eslint": "^8.50.0", "fine-uploader": "^5.16.2", "glob": "^10.3.10", - "jquery": "^3.7.1", "jquery-simulate": "^1.0.2", "jquery-ui": "^1.13.2", "less": "^4.2.0", @@ -7670,46 +10074,220 @@ "slickgrid": "^4.0.1", "swc-loader": "^0.2.3", "terser-webpack-plugin": "^5.3.9", - "ts-loader": "^9.5.0", + "ts-loader": "^9.4.4", "typescript": "^5.2.2", "validator": "^13.11.0", - "webpack": "^5.89.0", + "webpack": "^5.88.2", "webpack-cli": "^5.1.4" }, "dependencies": { - "brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "requires": { - "balanced-match": "^1.0.0" - } - }, - "glob": { - "version": "10.3.10", - "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", - "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", - "dev": true, - "requires": { - "foreground-child": "^3.1.0", - "jackspeak": "^2.3.5", - "minimatch": "^9.0.1", - "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", - "path-scurry": "^1.10.1" - } - }, - "minimatch": { - "version": "9.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.1.tgz", - "integrity": "sha512-0jWhJpD/MdhPXwPuiRkCbfYfSKp2qnn2eOc279qI7f+osl/l+prKSrvhg157zSYvx/1nmgn2NqdT6k2Z7zSH9w==", + "@swc/core": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.91.tgz", + "integrity": "sha512-r950d0fdlZ8qbSDyvApn3HyCojiZE8xpgJzQvypeMi32dalYwugdJKWyLB55JIGMRGJ8+lmVvY4MPGkSR3kXgA==", "dev": true, "requires": { - "brace-expansion": "^2.0.1" + "@swc/core-darwin-arm64": "1.3.91", + "@swc/core-darwin-x64": "1.3.91", + "@swc/core-linux-arm-gnueabihf": "1.3.91", + "@swc/core-linux-arm64-gnu": "1.3.91", + "@swc/core-linux-arm64-musl": "1.3.91", + "@swc/core-linux-x64-gnu": "1.3.91", + "@swc/core-linux-x64-musl": "1.3.91", + "@swc/core-win32-arm64-msvc": "1.3.91", + "@swc/core-win32-ia32-msvc": "1.3.91", + "@swc/core-win32-x64-msvc": "1.3.91", + "@swc/counter": "^0.1.1", + "@swc/types": "^0.1.5" } } } }, + "@enonic/tsup-plugin-manifest": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@enonic/tsup-plugin-manifest/-/tsup-plugin-manifest-0.0.1.tgz", + "integrity": "sha512-AL3X7xm6S8iE6bDbFP4Fnb9pOUembe/YpiAVw5/Dfj494ckiT42eeRb3HEFEFyiWrRjqP5weGb18t+sqL+GZfw==", + "dev": true, + "requires": { + "colorette": "^2.0.20" + } + }, + "@esbuild/android-arm": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.19.4.tgz", + "integrity": "sha512-uBIbiYMeSsy2U0XQoOGVVcpIktjLMEKa7ryz2RLr7L/vTnANNEsPVAh4xOv7ondGz6ac1zVb0F8Jx20rQikffQ==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/android-arm64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.19.4.tgz", + "integrity": "sha512-mRsi2vJsk4Bx/AFsNBqOH2fqedxn5L/moT58xgg51DjX1la64Z3Npicut2VbhvDFO26qjWtPMsVxCd80YTFVeg==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/android-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.19.4.tgz", + "integrity": "sha512-4iPufZ1TMOD3oBlGFqHXBpa3KFT46aLl6Vy7gwed0ZSYgHaZ/mihbYb4t7Z9etjkC9Al3ZYIoOaHrU60gcMy7g==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/darwin-arm64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.19.4.tgz", + "integrity": "sha512-Lviw8EzxsVQKpbS+rSt6/6zjn9ashUZ7Tbuvc2YENgRl0yZTktGlachZ9KMJUsVjZEGFVu336kl5lBgDN6PmpA==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/darwin-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.19.4.tgz", + "integrity": "sha512-YHbSFlLgDwglFn0lAO3Zsdrife9jcQXQhgRp77YiTDja23FrC2uwnhXMNkAucthsf+Psr7sTwYEryxz6FPAVqw==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.19.4.tgz", + "integrity": "sha512-vz59ijyrTG22Hshaj620e5yhs2dU1WJy723ofc+KUgxVCM6zxQESmWdMuVmUzxtGqtj5heHyB44PjV/HKsEmuQ==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/freebsd-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.19.4.tgz", + "integrity": "sha512-3sRbQ6W5kAiVQRBWREGJNd1YE7OgzS0AmOGjDmX/qZZecq8NFlQsQH0IfXjjmD0XtUYqr64e0EKNFjMUlPL3Cw==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/linux-arm": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.19.4.tgz", + "integrity": "sha512-z/4ArqOo9EImzTi4b6Vq+pthLnepFzJ92BnofU1jgNlcVb+UqynVFdoXMCFreTK7FdhqAzH0vmdwW5373Hm9pg==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/linux-arm64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.19.4.tgz", + "integrity": "sha512-ZWmWORaPbsPwmyu7eIEATFlaqm0QGt+joRE9sKcnVUG3oBbr/KYdNE2TnkzdQwX6EDRdg/x8Q4EZQTXoClUqqA==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/linux-ia32": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.19.4.tgz", + "integrity": "sha512-EGc4vYM7i1GRUIMqRZNCTzJh25MHePYsnQfKDexD8uPTCm9mK56NIL04LUfX2aaJ+C9vyEp2fJ7jbqFEYgO9lQ==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/linux-loong64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.19.4.tgz", + "integrity": "sha512-WVhIKO26kmm8lPmNrUikxSpXcgd6HDog0cx12BUfA2PkmURHSgx9G6vA19lrlQOMw+UjMZ+l3PpbtzffCxFDRg==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/linux-mips64el": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.19.4.tgz", + "integrity": "sha512-keYY+Hlj5w86hNp5JJPuZNbvW4jql7c1eXdBUHIJGTeN/+0QFutU3GrS+c27L+NTmzi73yhtojHk+lr2+502Mw==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/linux-ppc64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.19.4.tgz", + "integrity": "sha512-tQ92n0WMXyEsCH4m32S21fND8VxNiVazUbU4IUGVXQpWiaAxOBvtOtbEt3cXIV3GEBydYsY8pyeRMJx9kn3rvw==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/linux-riscv64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.19.4.tgz", + "integrity": "sha512-tRRBey6fG9tqGH6V75xH3lFPpj9E8BH+N+zjSUCnFOX93kEzqS0WdyJHkta/mmJHn7MBaa++9P4ARiU4ykjhig==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/linux-s390x": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.19.4.tgz", + "integrity": "sha512-152aLpQqKZYhThiJ+uAM4PcuLCAOxDsCekIbnGzPKVBRUDlgaaAfaUl5NYkB1hgY6WN4sPkejxKlANgVcGl9Qg==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/linux-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.19.4.tgz", + "integrity": "sha512-Mi4aNA3rz1BNFtB7aGadMD0MavmzuuXNTaYL6/uiYIs08U7YMPETpgNn5oue3ICr+inKwItOwSsJDYkrE9ekVg==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/netbsd-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.19.4.tgz", + "integrity": "sha512-9+Wxx1i5N/CYo505CTT7T+ix4lVzEdz0uCoYGxM5JDVlP2YdDC1Bdz+Khv6IbqmisT0Si928eAxbmGkcbiuM/A==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/openbsd-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.19.4.tgz", + "integrity": "sha512-MFsHleM5/rWRW9EivFssop+OulYVUoVcqkyOkjiynKBCGBj9Lihl7kh9IzrreDyXa4sNkquei5/DTP4uCk25xw==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/sunos-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.19.4.tgz", + "integrity": "sha512-6Xq8SpK46yLvrGxjp6HftkDwPP49puU4OF0hEL4dTxqCbfx09LyrbUj/D7tmIRMj5D5FCUPksBbxyQhp8tmHzw==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/win32-arm64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.19.4.tgz", + "integrity": "sha512-PkIl7Jq4mP6ke7QKwyg4fD4Xvn8PXisagV/+HntWoDEdmerB2LTukRZg728Yd1Fj+LuEX75t/hKXE2Ppk8Hh1w==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/win32-ia32": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.19.4.tgz", + "integrity": "sha512-ga676Hnvw7/ycdKB53qPusvsKdwrWzEyJ+AtItHGoARszIqvjffTwaaW3b2L6l90i7MO9i+dlAW415INuRhSGg==", + "dev": true, + "optional": true, + "peer": true + }, + "@esbuild/win32-x64": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.19.4.tgz", + "integrity": "sha512-HP0GDNla1T3ZL8Ko/SHAS2GgtjOg+VmWnnYLhuTksr++EnduYB0f3Y2LzHsUwb2iQ13JGoY6G3R8h6Du/WG6uA==", + "dev": true, + "optional": true, + "peer": true + }, "@eslint-community/eslint-utils": { "version": "4.4.0", "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", @@ -8060,6 +10638,76 @@ } } }, + "@swc/core-darwin-arm64": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.91.tgz", + "integrity": "sha512-7kHGiQ1he5khcEeJuHDmLZPM3rRL/ith5OTmV6bOPsoHi46kLeixORW+ts1opC3tC9vu6xbk16xgX0QAJchc1w==", + "dev": true, + "optional": true + }, + "@swc/core-darwin-x64": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.91.tgz", + "integrity": "sha512-8SpU18FbFpZDVzsHsAwdI1thF/picQGxq9UFxa8W+T9SDnbsqwFJv/6RqKJeJoDV6qFdl2OLjuO0OL7xrp0qnQ==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm-gnueabihf": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.91.tgz", + "integrity": "sha512-fOq4Cy8UbwX1yf0WB0d8hWZaIKCnPtPGguRqdXGLfwvhjZ9SIErT6PnmGTGRbQCNCIkOZWHKyTU0r8t2dN3haQ==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm64-gnu": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.91.tgz", + "integrity": "sha512-fki4ioRP/Esy4vdp8T34RCV+V9dqkRmOt763pf74pdiyFV2dPLXa5lnw/XvR1RTfPGknrYgjEQLCfZlReTryRw==", + "dev": true, + "optional": true + }, + "@swc/core-linux-arm64-musl": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.91.tgz", + "integrity": "sha512-XrG+DUUqNtfVLcJ20imby7fpBwQNG5VsEQBzQndSonPyUOa2YkTbBb60YDondfQGDABopuHH8gHN8o2H2/VCnQ==", + "dev": true, + "optional": true + }, + "@swc/core-linux-x64-gnu": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.91.tgz", + "integrity": "sha512-d11bYhX+YPBr/Frcjc6eVn3C0LuS/9U1Li9EmQ+6s9EpYtYRl2ygSlC8eueLbaiazBnCVYFnc8bU4o0kc5B9sw==", + "dev": true, + "optional": true + }, + "@swc/core-linux-x64-musl": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.91.tgz", + "integrity": "sha512-2SRp5Dke2P4jCQePkDx9trkkTstnRpZJVw5r3jvYdk0zeO6iC4+ZPvvoWXJLigqQv/fZnIiSUfJ6ssOoaEqTzQ==", + "dev": true, + "optional": true + }, + "@swc/core-win32-arm64-msvc": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.91.tgz", + "integrity": "sha512-l9qKXikOxj42UIjbeZpz9xtBmr736jOMqInNP8mVF2/U+ws5sI8zJjcOFFtfis4ru7vWCXhB1wtltdlJYO2vGA==", + "dev": true, + "optional": true + }, + "@swc/core-win32-ia32-msvc": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.91.tgz", + "integrity": "sha512-+s+52O0QVPmzOgjEe/rcb0AK6q/J7EHKwAyJCu/FaYO9df5ovE0HJjSKP6HAF0dGPO5hkENrXuNGujofUH9vtQ==", + "dev": true, + "optional": true + }, + "@swc/core-win32-x64-msvc": { + "version": "1.3.91", + "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.91.tgz", + "integrity": "sha512-7u9HDQhjUC3Gv43EFW84dZtduWCSa4MgltK+Sp9zEGti6WXqDPu/ESjvDsQEVYTBEMEvZs/xVAXPgLVHorV5nQ==", + "dev": true, + "optional": true + }, "@swc/counter": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.1.tgz", @@ -8155,9 +10803,9 @@ "dev": true }, "@types/jquery": { - "version": "3.5.23", - "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.23.tgz", - "integrity": "sha512-LwtD05mlY8iPF/1aB8dOZaYhRDothbHA7csnAxhyqMnQxj90Fo3J4nPhmHiA0OMTwHhjwZdE1Lpd6UK+b+C6Bw==", + "version": "3.5.22", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.22.tgz", + "integrity": "sha512-ISQFeUK5GwRftLK4PVvKTWEVCxZ2BpaqBz0TWkIq5w4vGojxZP9+XkqgcPjxoqmPeew+HLyWthCBvK7GdF5NYA==", "requires": { "@types/sizzle": "*" } @@ -8264,16 +10912,16 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz", - "integrity": "sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==", + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.5.tgz", + "integrity": "sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==", "dev": true, "requires": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.8.0", - "@typescript-eslint/type-utils": "6.8.0", - "@typescript-eslint/utils": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0", + "@typescript-eslint/scope-manager": "6.7.5", + "@typescript-eslint/type-utils": "6.7.5", + "@typescript-eslint/utils": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -8300,15 +10948,15 @@ } }, "@typescript-eslint/parser": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.8.0.tgz", - "integrity": "sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==", + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.5.tgz", + "integrity": "sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "6.8.0", - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/typescript-estree": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0", + "@typescript-eslint/scope-manager": "6.7.5", + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/typescript-estree": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5", "debug": "^4.3.4" }, "dependencies": { @@ -8330,23 +10978,23 @@ } }, "@typescript-eslint/scope-manager": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz", - "integrity": "sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==", + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz", + "integrity": "sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==", "dev": true, "requires": { - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0" + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5" } }, "@typescript-eslint/type-utils": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz", - "integrity": "sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==", + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.5.tgz", + "integrity": "sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "6.8.0", - "@typescript-eslint/utils": "6.8.0", + "@typescript-eslint/typescript-estree": "6.7.5", + "@typescript-eslint/utils": "6.7.5", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -8369,19 +11017,19 @@ } }, "@typescript-eslint/types": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.8.0.tgz", - "integrity": "sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==", + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.5.tgz", + "integrity": "sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz", - "integrity": "sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==", + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz", + "integrity": "sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==", "dev": true, "requires": { - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/visitor-keys": "6.8.0", + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/visitor-keys": "6.7.5", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -8407,27 +11055,27 @@ } }, "@typescript-eslint/utils": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.8.0.tgz", - "integrity": "sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==", + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.5.tgz", + "integrity": "sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.8.0", - "@typescript-eslint/types": "6.8.0", - "@typescript-eslint/typescript-estree": "6.8.0", + "@typescript-eslint/scope-manager": "6.7.5", + "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/typescript-estree": "6.7.5", "semver": "^7.5.4" } }, "@typescript-eslint/visitor-keys": { - "version": "6.8.0", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz", - "integrity": "sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==", + "version": "6.7.5", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz", + "integrity": "sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==", "dev": true, "requires": { - "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/types": "6.7.5", "eslint-visitor-keys": "^3.4.1" } }, @@ -8698,6 +11346,22 @@ "color-convert": "^1.9.0" } }, + "any-promise": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/any-promise/-/any-promise-1.3.0.tgz", + "integrity": "sha512-7UvmKalWRt1wgjL1RrGxoSJW/0QZFIegpeGvZG9kjp8vrRu55XTHbwnqq2GpXm9uLbcuhxm3IqX9OB4MZR1b2A==", + "dev": true + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, "arch": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", @@ -8742,6 +11406,12 @@ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c=", "dev": true }, + "base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "dev": true + }, "bin-check": { "version": "4.1.0", "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", @@ -8813,6 +11483,12 @@ "semver-truncate": "^2.0.0" } }, + "binary-extensions": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", + "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==", + "dev": true + }, "boolbase": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", @@ -8856,12 +11532,37 @@ "integrity": "sha512-X5eXFvoGIeN4Q1So+mTxZCkLgf4UNa5fte+7OM9AGHSbRspKp8foFwuFkwyhXnitRSzDK0QM2qWu1Sirp2svrQ==", "dev": true }, + "buffer": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/buffer/-/buffer-6.0.3.tgz", + "integrity": "sha512-FTiCpNxtwiZZHEZbcbTIcZjERVICn9yq/pDFkTl95/AxzD1naBctN7YO68riM/gLSDY7sdrMby8hofADYuuqOA==", + "dev": true, + "requires": { + "base64-js": "^1.3.1", + "ieee754": "^1.2.1" + } + }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", "dev": true }, + "bundle-require": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/bundle-require/-/bundle-require-4.0.2.tgz", + "integrity": "sha512-jwzPOChofl67PSTW2SGubV9HBQAhhR2i6nskiOThauo9dzwDUgOWQScFVaJkjEfYX+UXiD+LEx8EblQMc2wIag==", + "dev": true, + "requires": { + "load-tsconfig": "^0.2.3" + } + }, + "cac": { + "version": "6.7.14", + "resolved": "https://registry.npmjs.org/cac/-/cac-6.7.14.tgz", + "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", + "dev": true + }, "cacheable-lookup": { "version": "5.0.4", "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", @@ -8917,9 +11618,9 @@ } }, "caniuse-lite": { - "version": "1.0.30001550", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001550.tgz", - "integrity": "sha512-p82WjBYIypO0ukTsd/FG3Xxs+4tFeaY9pfT4amQL8KWtYH7H9nYwReGAbMTJ0hsmRO8IfDtsS6p3ZWj8+1c2RQ==", + "version": "1.0.30001549", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001549.tgz", + "integrity": "sha512-qRp48dPYSCYaP+KurZLhDYdVE+yEyht/3NlmcJgVQ2VMGt6JL36ndQ/7rgspdZsJuxDPFIo/OzBT2+GmIJ53BA==", "dev": true }, "chalk": { @@ -8939,23 +11640,115 @@ "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", "dev": true, "requires": { - "has-flag": "^3.0.0" + "has-flag": "^3.0.0" + } + } + } + }, + "chokidar": { + "version": "3.5.3", + "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", + "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", + "dev": true, + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + }, + "dependencies": { + "glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "requires": { + "is-glob": "^4.0.1" + } + } + } + }, + "chrome-trace-event": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", + "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", + "dev": true + }, + "circular-dependency-plugin": { + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", + "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", + "dev": true + }, + "cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" } } } }, - "chrome-trace-event": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", - "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true - }, - "circular-dependency-plugin": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", - "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", - "dev": true - }, "clone-deep": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", @@ -8998,9 +11791,9 @@ "dev": true }, "colorette": { - "version": "2.0.19", - "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.19.tgz", - "integrity": "sha512-3tlv/dIP7FWvj3BsbHrGLJ6l/oKh1O3TcgBqMn+yyCagOxc23fyzDS6HypQbgxWbkpDnf52p1LuR4eWDQ/K9WQ==", + "version": "2.0.20", + "resolved": "https://registry.npmjs.org/colorette/-/colorette-2.0.20.tgz", + "integrity": "sha512-IfEDxwoWIjkeXL1eXcDiow4UbKjhLdq6/EuSVR9GMN7KVH3r9gQ83e73hsz1Nd1T3ijd5xv1wcWRYO+D6kCI2w==", "dev": true }, "commander": { @@ -9015,6 +11808,85 @@ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, + "concurrently": { + "version": "8.2.1", + "resolved": "https://registry.npmjs.org/concurrently/-/concurrently-8.2.1.tgz", + "integrity": "sha512-nVraf3aXOpIcNud5pB9M82p1tynmZkrSGQ1p6X/VY8cJ+2LMVqAgXsJxYYefACSHbTYlm92O1xuhdGTjwoEvbQ==", + "dev": true, + "requires": { + "chalk": "^4.1.2", + "date-fns": "^2.30.0", + "lodash": "^4.17.21", + "rxjs": "^7.8.1", + "shell-quote": "^1.8.1", + "spawn-command": "0.0.2", + "supports-color": "^8.1.1", + "tree-kill": "^1.2.2", + "yargs": "^17.7.2" + }, + "dependencies": { + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "requires": { + "color-convert": "^2.0.1" + } + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, "content-disposition": { "version": "0.5.4", "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", @@ -9269,6 +12141,21 @@ } } }, + "cuint": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/cuint/-/cuint-0.2.2.tgz", + "integrity": "sha512-d4ZVpCW31eWwCMe1YT3ur7mUDnTXbgwyzaL320DrcRT45rfjYxkt5QWLrmOJ+/UEAI2+fQgKe/fCjR8l4TpRgw==", + "dev": true + }, + "date-fns": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/date-fns/-/date-fns-2.30.0.tgz", + "integrity": "sha512-fnULvOpxnC5/Vg3NCiWelDsLiUc9bRwAPs/+LfTLNvetFCtCTN+yQz15C/fs4AwX1R9K5GLtLfn8QW+dWisaAw==", + "dev": true, + "requires": { + "@babel/runtime": "^7.21.0" + } + }, "debug": { "version": "3.2.7", "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", @@ -9318,6 +12205,12 @@ "object-keys": "^1.1.1" } }, + "dependency-graph": { + "version": "0.11.0", + "resolved": "https://registry.npmjs.org/dependency-graph/-/dependency-graph-0.11.0.tgz", + "integrity": "sha512-JeMq7fEshyepOWDfcfHK06N3MhyPhz++vtqWhMT5O9A3K42rdsEDpfdVqjaqaAhsw6a+ZqeDvQVtD0hFHQWrzg==", + "dev": true + }, "dir-glob": { "version": "3.0.1", "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", @@ -9385,9 +12278,9 @@ "dev": true }, "electron-to-chromium": { - "version": "1.4.557", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.557.tgz", - "integrity": "sha512-6x0zsxyMXpnMJnHrondrD3SuAeKcwij9S+83j2qHAQPXbGTDDfgImzzwgGlzrIcXbHQ42tkG4qA6U860cImNhw==", + "version": "1.4.554", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.554.tgz", + "integrity": "sha512-Q0umzPJjfBrrj8unkONTgbKQXzXRrH7sVV7D9ea2yBV3Oaogz991yhbpfvo2LMNkJItmruXTEzVpP9cp7vaIiQ==", "dev": true }, "emoji-regex": { @@ -9527,6 +12420,49 @@ "is-symbol": "^1.0.2" } }, + "esbuild": { + "version": "0.19.4", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.19.4.tgz", + "integrity": "sha512-x7jL0tbRRpv4QUyuDMjONtWFciygUxWaUM1kMX2zWxI0X2YWOt7MSA0g4UdeSiHM8fcYVzpQhKYOycZwxTdZkA==", + "dev": true, + "peer": true, + "requires": { + "@esbuild/android-arm": "0.19.4", + "@esbuild/android-arm64": "0.19.4", + "@esbuild/android-x64": "0.19.4", + "@esbuild/darwin-arm64": "0.19.4", + "@esbuild/darwin-x64": "0.19.4", + "@esbuild/freebsd-arm64": "0.19.4", + "@esbuild/freebsd-x64": "0.19.4", + "@esbuild/linux-arm": "0.19.4", + "@esbuild/linux-arm64": "0.19.4", + "@esbuild/linux-ia32": "0.19.4", + "@esbuild/linux-loong64": "0.19.4", + "@esbuild/linux-mips64el": "0.19.4", + "@esbuild/linux-ppc64": "0.19.4", + "@esbuild/linux-riscv64": "0.19.4", + "@esbuild/linux-s390x": "0.19.4", + "@esbuild/linux-x64": "0.19.4", + "@esbuild/netbsd-x64": "0.19.4", + "@esbuild/openbsd-x64": "0.19.4", + "@esbuild/sunos-x64": "0.19.4", + "@esbuild/win32-arm64": "0.19.4", + "@esbuild/win32-ia32": "0.19.4", + "@esbuild/win32-x64": "0.19.4" + } + }, + "esbuild-plugin-external-global": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/esbuild-plugin-external-global/-/esbuild-plugin-external-global-1.0.1.tgz", + "integrity": "sha512-NDzYHRoShpvLqNcrgV8ZQh61sMIFAry5KLTQV83BPG5iTXCCu7h72SCfJ97bW0GqtuqDD/1aqLbKinI/rNgUsg==", + "dev": true + }, + "esbuild-plugin-globals": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/esbuild-plugin-globals/-/esbuild-plugin-globals-0.2.0.tgz", + "integrity": "sha512-y+6utQVWrETQWs0J8EGLV5gEOP59mmjX+fKWoQHn4TYwFMaj0FxQYflc566tHuokBCzl+uNW2iIlM1o1jfNy6w==", + "dev": true + }, "escalade": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", @@ -9881,9 +12817,9 @@ "dev": true }, "fast-glob": { - "version": "3.2.11", - "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", - "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.1.tgz", + "integrity": "sha512-kNFPyjhh5cKjrUltxs+wFx+ZkbRaxxmZ+X0ZU31SOsxCEtP9VPgtq2teZw1DebupL5GmDaNQ6yKMMVcM41iqDg==", "dev": true, "requires": { "@nodelib/fs.stat": "^2.0.2", @@ -10050,12 +12986,30 @@ "integrity": "sha512-n2aZ9tNfYDwaHhvFTkhFErqOMIb8uyzSQ+vGJBjZyanAKZVbGUQ1sngfk9FdkBw7G26O7AgNjLcecLffD1c7eg==", "dev": true }, + "fs-extra": { + "version": "11.1.1", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.1.1.tgz", + "integrity": "sha512-MGIE4HOvQCeUCzmlHs0vXpih4ysz4wg9qiSAu6cd42lVwPbTM1TjV7RusoyQqMmk/95gdQZX72u+YW+c3eEpFQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.2.0", + "jsonfile": "^6.0.1", + "universalify": "^2.0.0" + } + }, "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", "dev": true }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "dev": true, + "optional": true + }, "function-bind": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", @@ -10080,6 +13034,12 @@ "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", "dev": true }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true + }, "get-intrinsic": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.3.tgz", @@ -10091,6 +13051,12 @@ "has-symbols": "^1.0.3" } }, + "get-stdin": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/get-stdin/-/get-stdin-9.0.0.tgz", + "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", + "dev": true + }, "get-stream": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", @@ -10108,17 +13074,36 @@ } }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "10.3.10", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.3.10.tgz", + "integrity": "sha512-fa46+tv1Ak0UPK1TOy/pZrIybNNt4HCv7SDzwyfiOZkvZLEbjsZkJBPtDHVshZjbecAoAGSC20MjLDG/qr679g==", "dev": true, "requires": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" + "foreground-child": "^3.1.0", + "jackspeak": "^2.3.5", + "minimatch": "^9.0.1", + "minipass": "^5.0.0 || ^6.0.2 || ^7.0.0", + "path-scurry": "^1.10.1" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0" + } + }, + "minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "requires": { + "brace-expansion": "^2.0.1" + } + } } }, "glob-parent": { @@ -10359,7 +13344,7 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "dev": true, "requires": { "once": "^1.3.0", @@ -10409,6 +13394,15 @@ "has-bigints": "^1.0.1" } }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dev": true, + "requires": { + "binary-extensions": "^2.0.0" + } + }, "is-boolean-object": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", @@ -10627,6 +13621,12 @@ "integrity": "sha512-QAdOptna2NYiSSpv0O/BwoHBSmz4YhpzJHyi+fnMRTXFjp7B8i/YG5Z8IfusxB1ufjcD2Sre1F3R+nX3fvy7gg==", "dev": true }, + "joycon": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/joycon/-/joycon-3.1.1.tgz", + "integrity": "sha512-34wB/Y7MW7bzjKRjUKTa46I2Z7eV62Rkhva+KkopW7Qvv/OSWBqvkSY7vusOPrNuZcUG3tApvdVgNB8POj3SPw==", + "dev": true + }, "jquery": { "version": "3.7.1", "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.7.1.tgz", @@ -10641,6 +13641,15 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.2.tgz", "integrity": "sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q==", + "dev": true, + "requires": { + "jquery": ">=1.8.0 <4.0.0" + } + }, + "jquery-ui-dist": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/jquery-ui-dist/-/jquery-ui-dist-1.13.2.tgz", + "integrity": "sha512-oVDRd1NLtTbBwpRKAYdIRgpWVDzeBhfy7Gu0RmY6JEaZtmBq6kDn1pm5SgDiAotrnDS+RoTRXO6xvcNTxA9tOA==", "requires": { "jquery": ">=1.8.0 <4.0.0" } @@ -10690,6 +13699,16 @@ "integrity": "sha1-nbe1lJatPzz+8wp1FC0tkwrXJlE=", "dev": true }, + "jsonfile": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", + "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", + "dev": true, + "requires": { + "graceful-fs": "^4.1.6", + "universalify": "^2.0.0" + } + }, "keyv": { "version": "4.5.2", "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", @@ -10740,12 +13759,6 @@ "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "dev": true, "optional": true - }, - "tslib": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.4.1.tgz", - "integrity": "sha512-tGyy4dAjRIEwI7BzsB0lynWgOpfqjUdq91XXAlIWD2OwKBH7oCl/GZG/HT4BOHrTlPMOASlMQ7veyTqpmRcrNA==", - "dev": true } } }, @@ -10808,6 +13821,12 @@ } } }, + "load-tsconfig": { + "version": "0.2.5", + "resolved": "https://registry.npmjs.org/load-tsconfig/-/load-tsconfig-0.2.5.tgz", + "integrity": "sha512-IXO6OCs9yg8tMKzfPZ1YmheJbZCiEsnBdcB03l0OcfK9prKnJb96siuHCr5Fl37/yo9DnKU+TLpxzTUspw9shg==", + "dev": true + }, "loader-runner": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", @@ -10823,6 +13842,12 @@ "p-locate": "^4.1.0" } }, + "lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", + "dev": true + }, "lodash.memoize": { "version": "4.1.2", "resolved": "https://registry.npmjs.org/lodash.memoize/-/lodash.memoize-4.1.2.tgz", @@ -10835,6 +13860,12 @@ "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", "dev": true }, + "lodash.sortby": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/lodash.sortby/-/lodash.sortby-4.7.0.tgz", + "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", + "dev": true + }, "lodash.uniq": { "version": "4.5.0", "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", @@ -10856,6 +13887,23 @@ "yallist": "^4.0.0" } }, + "make-dir": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-3.1.0.tgz", + "integrity": "sha512-g3FeP20LNwhALb/6Cz6Dd4F2ngze0jz7tbzrD2wAV+o9FeNHe4rL+yK2md0J/fiSf1sa1ADhXqi5+oVwOM/eGw==", + "dev": true, + "requires": { + "semver": "^6.0.0" + }, + "dependencies": { + "semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true + } + } + }, "mdn-data": { "version": "2.0.30", "resolved": "https://registry.npmjs.org/mdn-data/-/mdn-data-2.0.30.tgz", @@ -11001,6 +14049,17 @@ "dev": true, "optional": true }, + "mz": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/mz/-/mz-2.7.0.tgz", + "integrity": "sha512-z81GNO7nnYMEhrGh9LeymoE4+Yr0Wn5McHIZMK5cfQCl+NDX08sCZgUc9/6MHni9IWuFLm1Z3HTCXu2z9fN62Q==", + "dev": true, + "requires": { + "any-promise": "^1.0.0", + "object-assign": "^4.0.1", + "thenify-all": "^1.0.0" + } + }, "nanoid": { "version": "5.0.2", "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.2.tgz", @@ -11174,6 +14233,12 @@ "boolbase": "^1.0.0" } }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true + }, "object-inspect": { "version": "1.12.2", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.2.tgz", @@ -11335,7 +14400,7 @@ "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "dev": true }, "path-key": { @@ -11404,6 +14469,12 @@ "dev": true, "optional": true }, + "pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true + }, "pkg-dir": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", @@ -11447,6 +14518,55 @@ "postcss-value-parser": "^4.2.0" } }, + "postcss-cli": { + "version": "10.1.0", + "resolved": "https://registry.npmjs.org/postcss-cli/-/postcss-cli-10.1.0.tgz", + "integrity": "sha512-Zu7PLORkE9YwNdvOeOVKPmWghprOtjFQU3srMUGbdz3pHJiFh7yZ4geiZFMkjMfB0mtTFR3h8RemR62rPkbOPA==", + "dev": true, + "requires": { + "chokidar": "^3.3.0", + "dependency-graph": "^0.11.0", + "fs-extra": "^11.0.0", + "get-stdin": "^9.0.0", + "globby": "^13.0.0", + "picocolors": "^1.0.0", + "postcss-load-config": "^4.0.0", + "postcss-reporter": "^7.0.0", + "pretty-hrtime": "^1.0.3", + "read-cache": "^1.0.0", + "slash": "^5.0.0", + "yargs": "^17.0.0" + }, + "dependencies": { + "globby": { + "version": "13.2.2", + "resolved": "https://registry.npmjs.org/globby/-/globby-13.2.2.tgz", + "integrity": "sha512-Y1zNGV+pzQdh7H39l9zgB4PJqjRNqydvdYCDG4HFXM4XuvSaQQlEc91IU1yALL8gUTDomgBAfz3XJdmUS+oo0w==", + "dev": true, + "requires": { + "dir-glob": "^3.0.1", + "fast-glob": "^3.3.0", + "ignore": "^5.2.4", + "merge2": "^1.4.1", + "slash": "^4.0.0" + }, + "dependencies": { + "slash": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", + "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", + "dev": true + } + } + }, + "slash": { + "version": "5.1.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-5.1.0.tgz", + "integrity": "sha512-ZA6oR3T/pEyuqwMgAKT0/hAv8oAXckzbkmR0UkUosQ+Mc4RxGoJkRmwHgHufaenlyAgE1Mxgpdcrf75y6XcnDg==", + "dev": true + } + } + }, "postcss-colormin": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/postcss-colormin/-/postcss-colormin-6.0.0.tgz", @@ -11497,6 +14617,16 @@ "dev": true, "requires": {} }, + "postcss-load-config": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-4.0.1.tgz", + "integrity": "sha512-vEJIc8RdiBRu3oRAI0ymerOn+7rPuMvRXslTvZUKZonDHFIczxztIyJ1urxM1x9JXEikvpWWTUUqal5j/8QgvA==", + "dev": true, + "requires": { + "lilconfig": "^2.0.5", + "yaml": "^2.1.1" + } + }, "postcss-loader": { "version": "7.3.3", "resolved": "https://registry.npmjs.org/postcss-loader/-/postcss-loader-7.3.3.tgz", @@ -11726,6 +14856,16 @@ "postcss-value-parser": "^4.2.0" } }, + "postcss-reporter": { + "version": "7.0.5", + "resolved": "https://registry.npmjs.org/postcss-reporter/-/postcss-reporter-7.0.5.tgz", + "integrity": "sha512-glWg7VZBilooZGOFPhN9msJ3FQs19Hie7l5a/eE6WglzYqVeH3ong3ShFcp9kDWJT1g2Y/wd59cocf9XxBtkWA==", + "dev": true, + "requires": { + "picocolors": "^1.0.0", + "thenby": "^1.3.4" + } + }, "postcss-selector-parser": { "version": "6.0.12", "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.12.tgz", @@ -11764,6 +14904,35 @@ "postcss-selector-parser": "^6.0.5" } }, + "postcss-url": { + "version": "10.1.3", + "resolved": "https://registry.npmjs.org/postcss-url/-/postcss-url-10.1.3.tgz", + "integrity": "sha512-FUzyxfI5l2tKmXdYc6VTu3TWZsInayEKPbiyW+P6vmmIrrb4I6CGX0BFoewgYHLK+oIL5FECEK02REYRpBvUCw==", + "dev": true, + "requires": { + "make-dir": "~3.1.0", + "mime": "~2.5.2", + "minimatch": "~3.0.4", + "xxhashjs": "~0.2.2" + }, + "dependencies": { + "mime": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/mime/-/mime-2.5.2.tgz", + "integrity": "sha512-tqkh47FzKeCPD2PUiPB6pkbMzsCasjxAfC62/Wap5qrUWcb+sFasXUC5I3gYM5iBM8v/Qpn4UK0x+j0iHyFPDg==", + "dev": true + }, + "minimatch": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.8.tgz", + "integrity": "sha512-6FsRAQsxQ61mw+qP1ZzbL9Bc78x2p5OqNgNpnoAFLTrX8n5Kxph0CsnhmKKNXTWjXqU5L0pGPR7hYk+XWZr60Q==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, "postcss-value-parser": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", @@ -11776,6 +14945,12 @@ "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", "dev": true }, + "pretty-hrtime": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/pretty-hrtime/-/pretty-hrtime-1.0.3.tgz", + "integrity": "sha512-66hKPCr+72mlfiSjlEB1+45IjXSqvVAIy6mocupoww4tBFE9R9IhwwUGoI4G++Tc9Aq+2rxOt0RFU6gPcrte0A==", + "dev": true + }, "prr": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/prr/-/prr-1.0.1.tgz", @@ -11831,6 +15006,23 @@ "safe-buffer": "^5.1.0" } }, + "read-cache": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/read-cache/-/read-cache-1.0.0.tgz", + "integrity": "sha512-Owdv/Ft7IjOgm/i0xvNDZ1LrRANRfew4b2prF3OWMQLxLfu3bS8FVhCsrSCMK4lR56Y9ya+AThoTpDCTxCmpRA==", + "dev": true, + "requires": { + "pify": "^2.3.0" + }, + "dependencies": { + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", + "dev": true + } + } + }, "read-pkg": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/read-pkg/-/read-pkg-3.0.0.tgz", @@ -11876,9 +15068,24 @@ "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", "dev": true, "requires": { - "readable-stream": "^3.6.0" + "readable-stream": "^3.6.0" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dev": true, + "requires": { + "picomatch": "^2.2.1" } }, + "regenerator-runtime": { + "version": "0.14.0", + "resolved": "https://registry.npmjs.org/regenerator-runtime/-/regenerator-runtime-0.14.0.tgz", + "integrity": "sha512-srw17NI0TUWHuGa5CFGGmhfNIeja30WMBfbslPNhf6JrqQlLN5gcrvig1oqPxiVaXb0oW0XRKtH6Nngs5lKCIA==", + "dev": true + }, "regexp.prototype.flags": { "version": "1.4.3", "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.4.3.tgz", @@ -11890,6 +15097,12 @@ "functions-have-names": "^1.2.2" } }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true + }, "require-from-string": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", @@ -11958,6 +15171,31 @@ "dev": true, "requires": { "glob": "^7.1.3" + }, + "dependencies": { + "glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "rollup": { + "version": "3.29.4", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-3.29.4.tgz", + "integrity": "sha512-oWzmBZwvYrU0iJHtDmhsm662rC15FRXmcjCk1xD771dFDx5jJ02ufAQQTn0etB2emNk4J9EZg/yWKpsn9BWGRw==", + "dev": true, + "requires": { + "fsevents": "~2.3.2" } }, "run-parallel": { @@ -11969,6 +15207,15 @@ "queue-microtask": "^1.2.2" } }, + "rxjs": { + "version": "7.8.1", + "resolved": "https://registry.npmjs.org/rxjs/-/rxjs-7.8.1.tgz", + "integrity": "sha512-AA3TVj+0A2iuIoQkWEK/tqFjBq2j+6PO6Y0zJcvzLAFhEFIO3HL0vls9hWLncZbAAbK0mar7oZ4V079I/qPMxg==", + "dev": true, + "requires": { + "tslib": "^2.1.0" + } + }, "safe-buffer": { "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", @@ -12082,9 +15329,9 @@ "dev": true }, "shell-quote": { - "version": "1.7.4", - "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.7.4.tgz", - "integrity": "sha512-8o/QEhSSRb1a5i7TFR0iM4G16Z0vYB2OQVs4G3aAFXjn3T6yEx8AZxy1PgDF7I00LZHYA3WxaSYIf5e5sAX8Rw==", + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/shell-quote/-/shell-quote-1.8.1.tgz", + "integrity": "sha512-6j1W9l1iAs/4xYBI1SYOVZyFcCis9b4KCLQ8fgAGG07QvzaRLVVRQvAy85yNmmZSjYjg4MWh4gNvlPujU/5LpA==", "dev": true }, "side-channel": { @@ -12184,6 +15431,12 @@ "source-map": "^0.6.0" } }, + "spawn-command": { + "version": "0.0.2", + "resolved": "https://registry.npmjs.org/spawn-command/-/spawn-command-0.0.2.tgz", + "integrity": "sha512-zC8zGoGkmc8J9ndvml8Xksr1Amk9qBujgbF0JAIWO7kXr43w0h/0GJNM/Vustixu+YE8N/MTrQ7N31FvHUACxQ==", + "dev": true + }, "spdx-correct": { "version": "3.1.1", "resolved": "https://registry.npmjs.org/spdx-correct/-/spdx-correct-3.1.1.tgz", @@ -12373,6 +15626,43 @@ "postcss-selector-parser": "^6.0.4" } }, + "sucrase": { + "version": "3.34.0", + "resolved": "https://registry.npmjs.org/sucrase/-/sucrase-3.34.0.tgz", + "integrity": "sha512-70/LQEZ07TEcxiU2dz51FKaE6hCTWC6vr7FOk3Gr0U60C3shtAN+H+BFr9XlYe5xqf3RA8nrc+VIwzCfnxuXJw==", + "dev": true, + "requires": { + "@jridgewell/gen-mapping": "^0.3.2", + "commander": "^4.0.0", + "glob": "7.1.6", + "lines-and-columns": "^1.1.6", + "mz": "^2.7.0", + "pirates": "^4.0.1", + "ts-interface-checker": "^0.1.9" + }, + "dependencies": { + "commander": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/commander/-/commander-4.1.1.tgz", + "integrity": "sha512-NOKm8xhkzAjzFx8B2v5OAHT+u5pRQc2UCa2Vq9jYL/31o2wi9mxBA7LIFs3sV5VSC49z6pEhfbMULvShKj26WA==", + "dev": true + }, + "glob": { + "version": "7.1.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz", + "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, "supports-color": { "version": "7.2.0", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", @@ -12462,6 +15752,30 @@ "integrity": "sha1-f17oI66AUgfACvLfSoTsP8+lcLQ=", "dev": true }, + "thenby": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/thenby/-/thenby-1.3.4.tgz", + "integrity": "sha512-89Gi5raiWA3QZ4b2ePcEwswC3me9JIg+ToSgtE0JWeCynLnLxNr/f9G+xfo9K+Oj4AFdom8YNJjibIARTJmapQ==", + "dev": true + }, + "thenify": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/thenify/-/thenify-3.3.1.tgz", + "integrity": "sha512-RVZSIV5IG10Hk3enotrhvz0T9em6cyHBLkH/YAZuKqd8hRkKhSfCGIcP2KUY0EPxndzANBmNllzWPwak+bheSw==", + "dev": true, + "requires": { + "any-promise": "^1.0.0" + } + }, + "thenify-all": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/thenify-all/-/thenify-all-1.6.0.tgz", + "integrity": "sha512-RNxQH/qI8/t3thXJDwcstUO4zeqo64+Uy/+sNVRBx4Xn2OX+OZ9oP+iJnNFqplFra2ZUVeKCSa2oVWi3T4uVmA==", + "dev": true, + "requires": { + "thenify": ">= 3.1.0 < 4" + } + }, "to-regex-range": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", @@ -12481,6 +15795,21 @@ "ieee754": "^1.2.1" } }, + "tr46": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", + "integrity": "sha512-dTpowEjclQ7Kgx5SdBkqRzVhERQXov8/l9Ft9dVM9fmg0W0KQSVaXX9T4i6twCPNtYiZM53lpSSUAwJbFPOHxA==", + "dev": true, + "requires": { + "punycode": "^2.1.0" + } + }, + "tree-kill": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/tree-kill/-/tree-kill-1.2.2.tgz", + "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", + "dev": true + }, "trim-repeated": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-2.0.0.tgz", @@ -12505,17 +15834,22 @@ "dev": true, "requires": {} }, + "ts-interface-checker": { + "version": "0.1.13", + "resolved": "https://registry.npmjs.org/ts-interface-checker/-/ts-interface-checker-0.1.13.tgz", + "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", + "dev": true + }, "ts-loader": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.0.tgz", - "integrity": "sha512-LLlB/pkB4q9mW2yLdFMnK3dEHbrBjeZTYguaaIfusyojBgAGf5kF+O6KcWqiGzWqHk0LBsoolrp4VftEURhybg==", + "version": "9.4.4", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz", + "integrity": "sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==", "dev": true, "requires": { "chalk": "^4.1.0", "enhanced-resolve": "^5.0.0", "micromatch": "^4.0.0", - "semver": "^7.3.4", - "source-map": "^0.7.4" + "semver": "^7.3.4" }, "dependencies": { "ansi-styles": { @@ -12551,12 +15885,288 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true + } + } + }, + "tslib": { + "version": "2.6.2", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", + "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==", + "dev": true + }, + "tsup": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/tsup/-/tsup-7.2.0.tgz", + "integrity": "sha512-vDHlczXbgUvY3rWvqFEbSqmC1L7woozbzngMqTtL2PGBODTtWlRwGDDawhvWzr5c1QjKe4OAKqJGfE1xeXUvtQ==", + "dev": true, + "requires": { + "bundle-require": "^4.0.0", + "cac": "^6.7.12", + "chokidar": "^3.5.1", + "debug": "^4.3.1", + "esbuild": "^0.18.2", + "execa": "^5.0.0", + "globby": "^11.0.3", + "joycon": "^3.0.1", + "postcss-load-config": "^4.0.1", + "resolve-from": "^5.0.0", + "rollup": "^3.2.5", + "source-map": "0.8.0-beta.0", + "sucrase": "^3.20.3", + "tree-kill": "^1.2.2" + }, + "dependencies": { + "@esbuild/android-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.18.20.tgz", + "integrity": "sha512-fyi7TDI/ijKKNZTUJAQqiG5T7YjJXgnzkURqmGj13C6dCqckZBLdl4h7bkhHt/t0WP+zO9/zwroDvANaOqO5Sw==", + "dev": true, + "optional": true }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "@esbuild/android-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.18.20.tgz", + "integrity": "sha512-Nz4rJcchGDtENV0eMKUNa6L12zz2zBDXuhj/Vjh18zGqB44Bi7MBMSXjgunJgjRhCmKOjnPuZp4Mb6OKqtMHLQ==", + "dev": true, + "optional": true + }, + "@esbuild/android-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.18.20.tgz", + "integrity": "sha512-8GDdlePJA8D6zlZYJV/jnrRAi6rOiNaCC/JclcXpB+KIuvfBN4owLtgzY2bsxnx666XjJx2kDPUmnTtR8qKQUg==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.18.20.tgz", + "integrity": "sha512-bxRHW5kHU38zS2lPTPOyuyTm+S+eobPUnTNkdJEfAddYgEcll4xkT8DB9d2008DtTbl7uJag2HuE5NZAZgnNEA==", + "dev": true, + "optional": true + }, + "@esbuild/darwin-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.18.20.tgz", + "integrity": "sha512-pc5gxlMDxzm513qPGbCbDukOdsGtKhfxD1zJKXjCCcU7ju50O7MeAZ8c4krSJcOIJGFR+qx21yMMVYwiQvyTyQ==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.18.20.tgz", + "integrity": "sha512-yqDQHy4QHevpMAaxhhIwYPMv1NECwOvIpGCZkECn8w2WFHXjEwrBn3CeNIYsibZ/iZEUemj++M26W3cNR5h+Tw==", + "dev": true, + "optional": true + }, + "@esbuild/freebsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.18.20.tgz", + "integrity": "sha512-tgWRPPuQsd3RmBZwarGVHZQvtzfEBOreNuxEMKFcd5DaDn2PbBxfwLcj4+aenoh7ctXcbXmOQIn8HI6mCSw5MQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.18.20.tgz", + "integrity": "sha512-/5bHkMWnq1EgKr1V+Ybz3s1hWXok7mDFUMQ4cG10AfW3wL02PSZi5kFpYKrptDsgb2WAJIvRcDm+qIvXf/apvg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.18.20.tgz", + "integrity": "sha512-2YbscF+UL7SQAVIpnWvYwM+3LskyDmPhe31pE7/aoTMFKKzIc9lLbyGUpmmb8a8AixOL61sQ/mFh3jEjHYFvdA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.18.20.tgz", + "integrity": "sha512-P4etWwq6IsReT0E1KHU40bOnzMHoH73aXp96Fs8TIT6z9Hu8G6+0SHSw9i2isWrD2nbx2qo5yUqACgdfVGx7TA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-loong64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.18.20.tgz", + "integrity": "sha512-nXW8nqBTrOpDLPgPY9uV+/1DjxoQ7DoB2N8eocyq8I9XuqJ7BiAMDMf9n1xZM9TgW0J8zrquIb/A7s3BJv7rjg==", + "dev": true, + "optional": true + }, + "@esbuild/linux-mips64el": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.18.20.tgz", + "integrity": "sha512-d5NeaXZcHp8PzYy5VnXV3VSd2D328Zb+9dEq5HE6bw6+N86JVPExrA6O68OPwobntbNJ0pzCpUFZTo3w0GyetQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-ppc64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.18.20.tgz", + "integrity": "sha512-WHPyeScRNcmANnLQkq6AfyXRFr5D6N2sKgkFo2FqguP44Nw2eyDlbTdZwd9GYk98DZG9QItIiTlFLHJHjxP3FA==", + "dev": true, + "optional": true + }, + "@esbuild/linux-riscv64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.18.20.tgz", + "integrity": "sha512-WSxo6h5ecI5XH34KC7w5veNnKkju3zBRLEQNY7mv5mtBmrP/MjNBCAlsM2u5hDBlS3NGcTQpoBvRzqBcRtpq1A==", + "dev": true, + "optional": true + }, + "@esbuild/linux-s390x": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.18.20.tgz", + "integrity": "sha512-+8231GMs3mAEth6Ja1iK0a1sQ3ohfcpzpRLH8uuc5/KVDFneH6jtAJLFGafpzpMRO6DzJ6AvXKze9LfFMrIHVQ==", + "dev": true, + "optional": true + }, + "@esbuild/linux-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.18.20.tgz", + "integrity": "sha512-UYqiqemphJcNsFEskc73jQ7B9jgwjWrSayxawS6UVFZGWrAAtkzjxSqnoclCXxWtfwLdzU+vTpcNYhpn43uP1w==", + "dev": true, + "optional": true + }, + "@esbuild/netbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.18.20.tgz", + "integrity": "sha512-iO1c++VP6xUBUmltHZoMtCUdPlnPGdBom6IrO4gyKPFFVBKioIImVooR5I83nTew5UOYrk3gIJhbZh8X44y06A==", + "dev": true, + "optional": true + }, + "@esbuild/openbsd-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.18.20.tgz", + "integrity": "sha512-e5e4YSsuQfX4cxcygw/UCPIEP6wbIL+se3sxPdCiMbFLBWu0eiZOJ7WoD+ptCLrmjZBK1Wk7I6D/I3NglUGOxg==", + "dev": true, + "optional": true + }, + "@esbuild/sunos-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.18.20.tgz", + "integrity": "sha512-kDbFRFp0YpTQVVrqUd5FTYmWo45zGaXe0X8E1G/LKFC0v8x0vWrhOWSLITcCn63lmZIxfOMXtCfti/RxN/0wnQ==", + "dev": true, + "optional": true + }, + "@esbuild/win32-arm64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.18.20.tgz", + "integrity": "sha512-ddYFR6ItYgoaq4v4JmQQaAI5s7npztfV4Ag6NrhiaW0RrnOXqBkgwZLofVTlq1daVTQNhtI5oieTvkRPfZrePg==", + "dev": true, + "optional": true + }, + "@esbuild/win32-ia32": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.18.20.tgz", + "integrity": "sha512-Wv7QBi3ID/rROT08SABTS7eV4hX26sVduqDOTe1MvGMjNd3EjOz4b7zeexIR62GTIEKrfJXKL9LFxTYgkyeu7g==", + "dev": true, + "optional": true + }, + "@esbuild/win32-x64": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.18.20.tgz", + "integrity": "sha512-kTdfRcSiDfQca/y9QIkng02avJ+NCaQvrMejlsB3RRv5sE9rRoeBPISaZpKxHELzRxZyLvNts1P27W3wV+8geQ==", + "dev": true, + "optional": true + }, + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "esbuild": { + "version": "0.18.20", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.18.20.tgz", + "integrity": "sha512-ceqxoedUrcayh7Y7ZX6NdbbDzGROiyVBgC4PriJThBKSVPWnnFHZAkfI1lJT8QFkOwH4qOS2SJkS4wvpGl8BpA==", + "dev": true, + "requires": { + "@esbuild/android-arm": "0.18.20", + "@esbuild/android-arm64": "0.18.20", + "@esbuild/android-x64": "0.18.20", + "@esbuild/darwin-arm64": "0.18.20", + "@esbuild/darwin-x64": "0.18.20", + "@esbuild/freebsd-arm64": "0.18.20", + "@esbuild/freebsd-x64": "0.18.20", + "@esbuild/linux-arm": "0.18.20", + "@esbuild/linux-arm64": "0.18.20", + "@esbuild/linux-ia32": "0.18.20", + "@esbuild/linux-loong64": "0.18.20", + "@esbuild/linux-mips64el": "0.18.20", + "@esbuild/linux-ppc64": "0.18.20", + "@esbuild/linux-riscv64": "0.18.20", + "@esbuild/linux-s390x": "0.18.20", + "@esbuild/linux-x64": "0.18.20", + "@esbuild/netbsd-x64": "0.18.20", + "@esbuild/openbsd-x64": "0.18.20", + "@esbuild/sunos-x64": "0.18.20", + "@esbuild/win32-arm64": "0.18.20", + "@esbuild/win32-ia32": "0.18.20", + "@esbuild/win32-x64": "0.18.20" + } + }, + "execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "requires": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + } + }, + "get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "dev": true + }, + "is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "requires": { + "path-key": "^3.0.0" + } + }, + "resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", "dev": true + }, + "source-map": { + "version": "0.8.0-beta.0", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.8.0-beta.0.tgz", + "integrity": "sha512-2ymg6oRBpebeZi9UUNsgQ89bhx01TcTkmNTGnNO88imTmbSgy4nfujrgVEFKWpMTEGA11EDkTt7mqObTPdigIA==", + "dev": true, + "requires": { + "whatwg-url": "^7.0.0" + } } } }, @@ -12604,6 +16214,12 @@ "which-boxed-primitive": "^1.0.2" } }, + "universalify": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.0.tgz", + "integrity": "sha512-hAZsKq7Yy11Zu1DE0OzWjw7nnLZmJZYTDZZyEFHZdUhV8FkH5MCfoU1XMaxXovpyW5nq5scPqq0ZDP9Zyl04oQ==", + "dev": true + }, "update-browserslist-db": { "version": "1.0.13", "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", @@ -12654,6 +16270,12 @@ "graceful-fs": "^4.1.2" } }, + "webidl-conversions": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-4.0.2.tgz", + "integrity": "sha512-YQ+BmxuTgd6UXZW3+ICGfyqRyHXVlD5GtQr5+qjiNW7bF0cqrzX500HVXPBOvgXb5YnzDd+h0zqyv61KUD7+Sg==", + "dev": true + }, "webpack": { "version": "5.89.0", "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", @@ -12746,6 +16368,17 @@ "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true }, + "whatwg-url": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-7.1.0.tgz", + "integrity": "sha512-WUu7Rg1DroM7oQvGWfOiAK21n74Gg+T4elXEQYkOhtyLeWiJFoOGLXPKI/9gzIie9CtwVLm8wtw6YJdKyxSjeg==", + "dev": true, + "requires": { + "lodash.sortby": "^4.7.0", + "tr46": "^1.0.1", + "webidl-conversions": "^4.0.2" + } + }, "which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -12882,12 +16515,82 @@ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, + "xxh3-ts": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/xxh3-ts/-/xxh3-ts-1.0.6.tgz", + "integrity": "sha512-mFdXT/i6svQNNmwICmszSfKgnYBGBIaCKzPxYHfpM6e1hxYX2gfGPrI9mKRzSnFpi6ieBIK88TGlaudcPYZW5g==", + "dev": true, + "requires": { + "buffer": "^6.0.3" + } + }, + "xxhashjs": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/xxhashjs/-/xxhashjs-0.2.2.tgz", + "integrity": "sha512-AkTuIuVTET12tpsVIQo+ZU6f/qDmKuRUcjaqR+OIvm+aCBsZ95i7UVY5WJ9TMsSaZ0DA2WxoZ4acu0sPH+OKAw==", + "dev": true, + "requires": { + "cuint": "^0.2.2" + } + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true + }, "yallist": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/yallist/-/yallist-4.0.0.tgz", "integrity": "sha512-3wdGidZyq5PB084XLES5TpOSRA3wjXAlIWMhum2kRcv/41Sn2emQ0dycQW4uZXLejwKvg6EsvbdlVL+FYEct7A==", "dev": true }, + "yaml": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/yaml/-/yaml-2.3.3.tgz", + "integrity": "sha512-zw0VAJxgeZ6+++/su5AFoqBbZbrEakwu+X0M5HmcwUiBL7AzcuPKjj5we4xfQLp78LkEMpD0cOnUhmgOVy3KdQ==", + "dev": true + }, + "yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "requires": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "dependencies": { + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + } + } + }, + "yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true + }, "yocto-queue": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", From 8b49e67835b5250b48eb1046f316d15334e9713c Mon Sep 17 00:00:00 2001 From: alansemenov Date: Wed, 18 Oct 2023 17:08:59 +0200 Subject: [PATCH 40/43] Updated package-lock.json --- package-lock.json | 529 +++++++++++----------------------------------- 1 file changed, 128 insertions(+), 401 deletions(-) diff --git a/package-lock.json b/package-lock.json index 5004e2552..56d87201a 100644 --- a/package-lock.json +++ b/package-lock.json @@ -65,7 +65,7 @@ }, ".xp/dev/lib-admin-ui": { "name": "@enonic/lib-admin-ui", - "version": "4.8.0", + "version": "4.9.0", "license": "GPL-3.0", "dependencies": { "@types/dompurify": "^3.0.3", @@ -82,14 +82,14 @@ "devDependencies": { "@enonic/eslint-config": "^1.2.0", "@swc/cli": "^0.1.62", - "@swc/core": "1.3.91", - "@types/jquery": "^3.5.20", + "@swc/core": "1.3.93", + "@types/jquery": "^3.5.22", "@types/jqueryui": "^1.12.18", "@types/q": "^1.5.6", "@types/semver": "^7.5.3", - "@types/validator": "^13.11.2", - "@typescript-eslint/eslint-plugin": "^6.7.4", - "@typescript-eslint/parser": "^6.7.4", + "@types/validator": "^13.11.3", + "@typescript-eslint/eslint-plugin": "^6.8.0", + "@typescript-eslint/parser": "^6.8.0", "autoprefixer": "^10.4.16", "browserslist": "^4.22.1", "browserslist-config-enonic": "^1.0.8", @@ -97,9 +97,9 @@ "copy-webpack-plugin": "^11.0.0", "css-loader": "^6.8.1", "cssnano": "^6.0.1", - "enonic-admin-artifacts": "^1.8.3", + "enonic-admin-artifacts": "^1.8.5", "error-logger-webpack-plugin": "^1.1.1", - "eslint": "^8.50.0", + "eslint": "^8.51.0", "glob": "^10.3.10", "jquery-ui": "^1.13.2", "less": "^4.2.0", @@ -111,9 +111,9 @@ "postcss-sort-media-queries": "^5.2.0", "swc-loader": "^0.2.3", "terser-webpack-plugin": "^5.3.9", - "ts-loader": "^9.4.4", + "ts-loader": "^9.5.0", "typescript": "^5.2.2", - "webpack": "^5.88.2", + "webpack": "^5.89.0", "webpack-cli": "^5.1.4" }, "engines": { @@ -126,44 +126,6 @@ "postcss": "^8.2.2" } }, - ".xp/dev/lib-admin-ui/node_modules/@swc/core": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.91.tgz", - "integrity": "sha512-r950d0fdlZ8qbSDyvApn3HyCojiZE8xpgJzQvypeMi32dalYwugdJKWyLB55JIGMRGJ8+lmVvY4MPGkSR3kXgA==", - "dev": true, - "hasInstallScript": true, - "dependencies": { - "@swc/counter": "^0.1.1", - "@swc/types": "^0.1.5" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/swc" - }, - "optionalDependencies": { - "@swc/core-darwin-arm64": "1.3.91", - "@swc/core-darwin-x64": "1.3.91", - "@swc/core-linux-arm-gnueabihf": "1.3.91", - "@swc/core-linux-arm64-gnu": "1.3.91", - "@swc/core-linux-arm64-musl": "1.3.91", - "@swc/core-linux-x64-gnu": "1.3.91", - "@swc/core-linux-x64-musl": "1.3.91", - "@swc/core-win32-arm64-msvc": "1.3.91", - "@swc/core-win32-ia32-msvc": "1.3.91", - "@swc/core-win32-x64-msvc": "1.3.91" - }, - "peerDependencies": { - "@swc/helpers": "^0.5.0" - }, - "peerDependenciesMeta": { - "@swc/helpers": { - "optional": true - } - } - }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", @@ -1151,166 +1113,6 @@ } } }, - "node_modules/@swc/core-darwin-arm64": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.91.tgz", - "integrity": "sha512-7kHGiQ1he5khcEeJuHDmLZPM3rRL/ith5OTmV6bOPsoHi46kLeixORW+ts1opC3tC9vu6xbk16xgX0QAJchc1w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-darwin-x64": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.91.tgz", - "integrity": "sha512-8SpU18FbFpZDVzsHsAwdI1thF/picQGxq9UFxa8W+T9SDnbsqwFJv/6RqKJeJoDV6qFdl2OLjuO0OL7xrp0qnQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm-gnueabihf": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.91.tgz", - "integrity": "sha512-fOq4Cy8UbwX1yf0WB0d8hWZaIKCnPtPGguRqdXGLfwvhjZ9SIErT6PnmGTGRbQCNCIkOZWHKyTU0r8t2dN3haQ==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-gnu": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.91.tgz", - "integrity": "sha512-fki4ioRP/Esy4vdp8T34RCV+V9dqkRmOt763pf74pdiyFV2dPLXa5lnw/XvR1RTfPGknrYgjEQLCfZlReTryRw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-arm64-musl": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.91.tgz", - "integrity": "sha512-XrG+DUUqNtfVLcJ20imby7fpBwQNG5VsEQBzQndSonPyUOa2YkTbBb60YDondfQGDABopuHH8gHN8o2H2/VCnQ==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-gnu": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.91.tgz", - "integrity": "sha512-d11bYhX+YPBr/Frcjc6eVn3C0LuS/9U1Li9EmQ+6s9EpYtYRl2ygSlC8eueLbaiazBnCVYFnc8bU4o0kc5B9sw==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-linux-x64-musl": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.91.tgz", - "integrity": "sha512-2SRp5Dke2P4jCQePkDx9trkkTstnRpZJVw5r3jvYdk0zeO6iC4+ZPvvoWXJLigqQv/fZnIiSUfJ6ssOoaEqTzQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-arm64-msvc": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.91.tgz", - "integrity": "sha512-l9qKXikOxj42UIjbeZpz9xtBmr736jOMqInNP8mVF2/U+ws5sI8zJjcOFFtfis4ru7vWCXhB1wtltdlJYO2vGA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-ia32-msvc": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.91.tgz", - "integrity": "sha512-+s+52O0QVPmzOgjEe/rcb0AK6q/J7EHKwAyJCu/FaYO9df5ovE0HJjSKP6HAF0dGPO5hkENrXuNGujofUH9vtQ==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, - "node_modules/@swc/core-win32-x64-msvc": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.91.tgz", - "integrity": "sha512-7u9HDQhjUC3Gv43EFW84dZtduWCSa4MgltK+Sp9zEGti6WXqDPu/ESjvDsQEVYTBEMEvZs/xVAXPgLVHorV5nQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ], - "engines": { - "node": ">=10" - } - }, "node_modules/@swc/core/node_modules/@swc/core-darwin-arm64": { "version": "1.3.93", "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.93.tgz", @@ -1681,16 +1483,16 @@ "dev": true }, "node_modules/@typescript-eslint/eslint-plugin": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.5.tgz", - "integrity": "sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz", + "integrity": "sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==", "dev": true, "dependencies": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.7.5", - "@typescript-eslint/type-utils": "6.7.5", - "@typescript-eslint/utils": "6.7.5", - "@typescript-eslint/visitor-keys": "6.7.5", + "@typescript-eslint/scope-manager": "6.8.0", + "@typescript-eslint/type-utils": "6.8.0", + "@typescript-eslint/utils": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -1739,15 +1541,15 @@ "dev": true }, "node_modules/@typescript-eslint/parser": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.5.tgz", - "integrity": "sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.8.0.tgz", + "integrity": "sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==", "dev": true, "dependencies": { - "@typescript-eslint/scope-manager": "6.7.5", - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/typescript-estree": "6.7.5", - "@typescript-eslint/visitor-keys": "6.7.5", + "@typescript-eslint/scope-manager": "6.8.0", + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/typescript-estree": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0", "debug": "^4.3.4" }, "engines": { @@ -1790,13 +1592,13 @@ "dev": true }, "node_modules/@typescript-eslint/scope-manager": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz", - "integrity": "sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz", + "integrity": "sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/visitor-keys": "6.7.5" + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0" }, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -1807,13 +1609,13 @@ } }, "node_modules/@typescript-eslint/type-utils": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.5.tgz", - "integrity": "sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz", + "integrity": "sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==", "dev": true, "dependencies": { - "@typescript-eslint/typescript-estree": "6.7.5", - "@typescript-eslint/utils": "6.7.5", + "@typescript-eslint/typescript-estree": "6.8.0", + "@typescript-eslint/utils": "6.8.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -1857,9 +1659,9 @@ "dev": true }, "node_modules/@typescript-eslint/types": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.5.tgz", - "integrity": "sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.8.0.tgz", + "integrity": "sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==", "dev": true, "engines": { "node": "^16.0.0 || >=18.0.0" @@ -1870,13 +1672,13 @@ } }, "node_modules/@typescript-eslint/typescript-estree": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz", - "integrity": "sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz", + "integrity": "sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/visitor-keys": "6.7.5", + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -1920,17 +1722,17 @@ "dev": true }, "node_modules/@typescript-eslint/utils": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.5.tgz", - "integrity": "sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.8.0.tgz", + "integrity": "sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==", "dev": true, "dependencies": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.7.5", - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/typescript-estree": "6.7.5", + "@typescript-eslint/scope-manager": "6.8.0", + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/typescript-estree": "6.8.0", "semver": "^7.5.4" }, "engines": { @@ -1945,12 +1747,12 @@ } }, "node_modules/@typescript-eslint/visitor-keys": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz", - "integrity": "sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz", + "integrity": "sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==", "dev": true, "dependencies": { - "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/types": "6.8.0", "eslint-visitor-keys": "^3.4.1" }, "engines": { @@ -8655,15 +8457,16 @@ "dev": true }, "node_modules/ts-loader": { - "version": "9.4.4", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz", - "integrity": "sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.0.tgz", + "integrity": "sha512-LLlB/pkB4q9mW2yLdFMnK3dEHbrBjeZTYguaaIfusyojBgAGf5kF+O6KcWqiGzWqHk0LBsoolrp4VftEURhybg==", "dev": true, "dependencies": { "chalk": "^4.1.0", "enhanced-resolve": "^5.0.0", "micromatch": "^4.0.0", - "semver": "^7.3.4" + "semver": "^7.3.4", + "source-map": "^0.7.4" }, "engines": { "node": ">=12.0.0" @@ -8722,6 +8525,15 @@ "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, + "node_modules/ts-loader/node_modules/source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -10036,17 +9848,17 @@ "requires": { "@enonic/eslint-config": "^1.2.0", "@swc/cli": "^0.1.62", - "@swc/core": "1.3.91", + "@swc/core": "1.3.93", "@types/dompurify": "^3.0.3", - "@types/jquery": "^3.5.20", + "@types/jquery": "^3.5.22", "@types/jqueryui": "^1.12.18", "@types/mousetrap": "^1.6.12", "@types/q": "^1.5.6", "@types/semver": "^7.5.3", "@types/slickgrid": "^2.1.36", - "@types/validator": "^13.11.2", - "@typescript-eslint/eslint-plugin": "^6.7.4", - "@typescript-eslint/parser": "^6.7.4", + "@types/validator": "^13.11.3", + "@typescript-eslint/eslint-plugin": "^6.8.0", + "@typescript-eslint/parser": "^6.8.0", "autoprefixer": "^10.4.16", "browserslist": "^4.22.1", "browserslist-config-enonic": "^1.0.8", @@ -10055,9 +9867,9 @@ "css-loader": "^6.8.1", "cssnano": "^6.0.1", "dompurify": "^3.0.6", - "enonic-admin-artifacts": "^1.8.3", + "enonic-admin-artifacts": "^1.8.5", "error-logger-webpack-plugin": "^1.1.1", - "eslint": "^8.50.0", + "eslint": "^8.51.0", "fine-uploader": "^5.16.2", "glob": "^10.3.10", "jquery-simulate": "^1.0.2", @@ -10074,33 +9886,11 @@ "slickgrid": "^4.0.1", "swc-loader": "^0.2.3", "terser-webpack-plugin": "^5.3.9", - "ts-loader": "^9.4.4", + "ts-loader": "^9.5.0", "typescript": "^5.2.2", "validator": "^13.11.0", - "webpack": "^5.88.2", + "webpack": "^5.89.0", "webpack-cli": "^5.1.4" - }, - "dependencies": { - "@swc/core": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.91.tgz", - "integrity": "sha512-r950d0fdlZ8qbSDyvApn3HyCojiZE8xpgJzQvypeMi32dalYwugdJKWyLB55JIGMRGJ8+lmVvY4MPGkSR3kXgA==", - "dev": true, - "requires": { - "@swc/core-darwin-arm64": "1.3.91", - "@swc/core-darwin-x64": "1.3.91", - "@swc/core-linux-arm-gnueabihf": "1.3.91", - "@swc/core-linux-arm64-gnu": "1.3.91", - "@swc/core-linux-arm64-musl": "1.3.91", - "@swc/core-linux-x64-gnu": "1.3.91", - "@swc/core-linux-x64-musl": "1.3.91", - "@swc/core-win32-arm64-msvc": "1.3.91", - "@swc/core-win32-ia32-msvc": "1.3.91", - "@swc/core-win32-x64-msvc": "1.3.91", - "@swc/counter": "^0.1.1", - "@swc/types": "^0.1.5" - } - } } }, "@enonic/tsup-plugin-manifest": { @@ -10638,76 +10428,6 @@ } } }, - "@swc/core-darwin-arm64": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-arm64/-/core-darwin-arm64-1.3.91.tgz", - "integrity": "sha512-7kHGiQ1he5khcEeJuHDmLZPM3rRL/ith5OTmV6bOPsoHi46kLeixORW+ts1opC3tC9vu6xbk16xgX0QAJchc1w==", - "dev": true, - "optional": true - }, - "@swc/core-darwin-x64": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core-darwin-x64/-/core-darwin-x64-1.3.91.tgz", - "integrity": "sha512-8SpU18FbFpZDVzsHsAwdI1thF/picQGxq9UFxa8W+T9SDnbsqwFJv/6RqKJeJoDV6qFdl2OLjuO0OL7xrp0qnQ==", - "dev": true, - "optional": true - }, - "@swc/core-linux-arm-gnueabihf": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm-gnueabihf/-/core-linux-arm-gnueabihf-1.3.91.tgz", - "integrity": "sha512-fOq4Cy8UbwX1yf0WB0d8hWZaIKCnPtPGguRqdXGLfwvhjZ9SIErT6PnmGTGRbQCNCIkOZWHKyTU0r8t2dN3haQ==", - "dev": true, - "optional": true - }, - "@swc/core-linux-arm64-gnu": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-gnu/-/core-linux-arm64-gnu-1.3.91.tgz", - "integrity": "sha512-fki4ioRP/Esy4vdp8T34RCV+V9dqkRmOt763pf74pdiyFV2dPLXa5lnw/XvR1RTfPGknrYgjEQLCfZlReTryRw==", - "dev": true, - "optional": true - }, - "@swc/core-linux-arm64-musl": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core-linux-arm64-musl/-/core-linux-arm64-musl-1.3.91.tgz", - "integrity": "sha512-XrG+DUUqNtfVLcJ20imby7fpBwQNG5VsEQBzQndSonPyUOa2YkTbBb60YDondfQGDABopuHH8gHN8o2H2/VCnQ==", - "dev": true, - "optional": true - }, - "@swc/core-linux-x64-gnu": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-gnu/-/core-linux-x64-gnu-1.3.91.tgz", - "integrity": "sha512-d11bYhX+YPBr/Frcjc6eVn3C0LuS/9U1Li9EmQ+6s9EpYtYRl2ygSlC8eueLbaiazBnCVYFnc8bU4o0kc5B9sw==", - "dev": true, - "optional": true - }, - "@swc/core-linux-x64-musl": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core-linux-x64-musl/-/core-linux-x64-musl-1.3.91.tgz", - "integrity": "sha512-2SRp5Dke2P4jCQePkDx9trkkTstnRpZJVw5r3jvYdk0zeO6iC4+ZPvvoWXJLigqQv/fZnIiSUfJ6ssOoaEqTzQ==", - "dev": true, - "optional": true - }, - "@swc/core-win32-arm64-msvc": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core-win32-arm64-msvc/-/core-win32-arm64-msvc-1.3.91.tgz", - "integrity": "sha512-l9qKXikOxj42UIjbeZpz9xtBmr736jOMqInNP8mVF2/U+ws5sI8zJjcOFFtfis4ru7vWCXhB1wtltdlJYO2vGA==", - "dev": true, - "optional": true - }, - "@swc/core-win32-ia32-msvc": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core-win32-ia32-msvc/-/core-win32-ia32-msvc-1.3.91.tgz", - "integrity": "sha512-+s+52O0QVPmzOgjEe/rcb0AK6q/J7EHKwAyJCu/FaYO9df5ovE0HJjSKP6HAF0dGPO5hkENrXuNGujofUH9vtQ==", - "dev": true, - "optional": true - }, - "@swc/core-win32-x64-msvc": { - "version": "1.3.91", - "resolved": "https://registry.npmjs.org/@swc/core-win32-x64-msvc/-/core-win32-x64-msvc-1.3.91.tgz", - "integrity": "sha512-7u9HDQhjUC3Gv43EFW84dZtduWCSa4MgltK+Sp9zEGti6WXqDPu/ESjvDsQEVYTBEMEvZs/xVAXPgLVHorV5nQ==", - "dev": true, - "optional": true - }, "@swc/counter": { "version": "0.1.1", "resolved": "https://registry.npmjs.org/@swc/counter/-/counter-0.1.1.tgz", @@ -10912,16 +10632,16 @@ "dev": true }, "@typescript-eslint/eslint-plugin": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.7.5.tgz", - "integrity": "sha512-JhtAwTRhOUcP96D0Y6KYnwig/MRQbOoLGXTON2+LlyB/N35SP9j1boai2zzwXb7ypKELXMx3DVk9UTaEq1vHEw==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz", + "integrity": "sha512-GosF4238Tkes2SHPQ1i8f6rMtG6zlKwMEB0abqSJ3Npvos+doIlc/ATG+vX1G9coDF3Ex78zM3heXHLyWEwLUw==", "dev": true, "requires": { "@eslint-community/regexpp": "^4.5.1", - "@typescript-eslint/scope-manager": "6.7.5", - "@typescript-eslint/type-utils": "6.7.5", - "@typescript-eslint/utils": "6.7.5", - "@typescript-eslint/visitor-keys": "6.7.5", + "@typescript-eslint/scope-manager": "6.8.0", + "@typescript-eslint/type-utils": "6.8.0", + "@typescript-eslint/utils": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0", "debug": "^4.3.4", "graphemer": "^1.4.0", "ignore": "^5.2.4", @@ -10948,15 +10668,15 @@ } }, "@typescript-eslint/parser": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.7.5.tgz", - "integrity": "sha512-bIZVSGx2UME/lmhLcjdVc7ePBwn7CLqKarUBL4me1C5feOd663liTGjMBGVcGr+BhnSLeP4SgwdvNnnkbIdkCw==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.8.0.tgz", + "integrity": "sha512-5tNs6Bw0j6BdWuP8Fx+VH4G9fEPDxnVI7yH1IAPkQH5RUtvKwRoqdecAPdQXv4rSOADAaz1LFBZvZG7VbXivSg==", "dev": true, "requires": { - "@typescript-eslint/scope-manager": "6.7.5", - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/typescript-estree": "6.7.5", - "@typescript-eslint/visitor-keys": "6.7.5", + "@typescript-eslint/scope-manager": "6.8.0", + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/typescript-estree": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0", "debug": "^4.3.4" }, "dependencies": { @@ -10978,23 +10698,23 @@ } }, "@typescript-eslint/scope-manager": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.7.5.tgz", - "integrity": "sha512-GAlk3eQIwWOJeb9F7MKQ6Jbah/vx1zETSDw8likab/eFcqkjSD7BI75SDAeC5N2L0MmConMoPvTsmkrg71+B1A==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.8.0.tgz", + "integrity": "sha512-xe0HNBVwCph7rak+ZHcFD6A+q50SMsFwcmfdjs9Kz4qDh5hWhaPhFjRs/SODEhroBI5Ruyvyz9LfwUJ624O40g==", "dev": true, "requires": { - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/visitor-keys": "6.7.5" + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0" } }, "@typescript-eslint/type-utils": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.7.5.tgz", - "integrity": "sha512-Gs0qos5wqxnQrvpYv+pf3XfcRXW6jiAn9zE/K+DlmYf6FcpxeNYN0AIETaPR7rHO4K2UY+D0CIbDP9Ut0U4m1g==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.8.0.tgz", + "integrity": "sha512-RYOJdlkTJIXW7GSldUIHqc/Hkto8E+fZN96dMIFhuTJcQwdRoGN2rEWA8U6oXbLo0qufH7NPElUb+MceHtz54g==", "dev": true, "requires": { - "@typescript-eslint/typescript-estree": "6.7.5", - "@typescript-eslint/utils": "6.7.5", + "@typescript-eslint/typescript-estree": "6.8.0", + "@typescript-eslint/utils": "6.8.0", "debug": "^4.3.4", "ts-api-utils": "^1.0.1" }, @@ -11017,19 +10737,19 @@ } }, "@typescript-eslint/types": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.7.5.tgz", - "integrity": "sha512-WboQBlOXtdj1tDFPyIthpKrUb+kZf2VroLZhxKa/VlwLlLyqv/PwUNgL30BlTVZV1Wu4Asu2mMYPqarSO4L5ZQ==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.8.0.tgz", + "integrity": "sha512-p5qOxSum7W3k+llc7owEStXlGmSl8FcGvhYt8Vjy7FqEnmkCVlM3P57XQEGj58oqaBWDQXbJDZxwUWMS/EAPNQ==", "dev": true }, "@typescript-eslint/typescript-estree": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.7.5.tgz", - "integrity": "sha512-NhJiJ4KdtwBIxrKl0BqG1Ur+uw7FiOnOThcYx9DpOGJ/Abc9z2xNzLeirCG02Ig3vkvrc2qFLmYSSsaITbKjlg==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.8.0.tgz", + "integrity": "sha512-ISgV0lQ8XgW+mvv5My/+iTUdRmGspducmQcDw5JxznasXNnZn3SKNrTRuMsEXv+V/O+Lw9AGcQCfVaOPCAk/Zg==", "dev": true, "requires": { - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/visitor-keys": "6.7.5", + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/visitor-keys": "6.8.0", "debug": "^4.3.4", "globby": "^11.1.0", "is-glob": "^4.0.3", @@ -11055,27 +10775,27 @@ } }, "@typescript-eslint/utils": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.7.5.tgz", - "integrity": "sha512-pfRRrH20thJbzPPlPc4j0UNGvH1PjPlhlCMq4Yx7EGjV7lvEeGX0U6MJYe8+SyFutWgSHsdbJ3BXzZccYggezA==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.8.0.tgz", + "integrity": "sha512-dKs1itdE2qFG4jr0dlYLQVppqTE+Itt7GmIf/vX6CSvsW+3ov8PbWauVKyyfNngokhIO9sKZeRGCUo1+N7U98Q==", "dev": true, "requires": { "@eslint-community/eslint-utils": "^4.4.0", "@types/json-schema": "^7.0.12", "@types/semver": "^7.5.0", - "@typescript-eslint/scope-manager": "6.7.5", - "@typescript-eslint/types": "6.7.5", - "@typescript-eslint/typescript-estree": "6.7.5", + "@typescript-eslint/scope-manager": "6.8.0", + "@typescript-eslint/types": "6.8.0", + "@typescript-eslint/typescript-estree": "6.8.0", "semver": "^7.5.4" } }, "@typescript-eslint/visitor-keys": { - "version": "6.7.5", - "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.7.5.tgz", - "integrity": "sha512-3MaWdDZtLlsexZzDSdQWsFQ9l9nL8B80Z4fImSpyllFC/KLqWQRdEcB+gGGO+N3Q2uL40EsG66wZLsohPxNXvg==", + "version": "6.8.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.8.0.tgz", + "integrity": "sha512-oqAnbA7c+pgOhW2OhGvxm0t1BULX5peQI/rLsNDpGM78EebV3C9IGbX5HNZabuZ6UQrYveCLjKo8Iy/lLlBkkg==", "dev": true, "requires": { - "@typescript-eslint/types": "6.7.5", + "@typescript-eslint/types": "6.8.0", "eslint-visitor-keys": "^3.4.1" } }, @@ -15841,15 +15561,16 @@ "dev": true }, "ts-loader": { - "version": "9.4.4", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.4.4.tgz", - "integrity": "sha512-MLukxDHBl8OJ5Dk3y69IsKVFRA/6MwzEqBgh+OXMPB/OD01KQuWPFd1WAQP8a5PeSCAxfnkhiuWqfmFJzJQt9w==", + "version": "9.5.0", + "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.0.tgz", + "integrity": "sha512-LLlB/pkB4q9mW2yLdFMnK3dEHbrBjeZTYguaaIfusyojBgAGf5kF+O6KcWqiGzWqHk0LBsoolrp4VftEURhybg==", "dev": true, "requires": { "chalk": "^4.1.0", "enhanced-resolve": "^5.0.0", "micromatch": "^4.0.0", - "semver": "^7.3.4" + "semver": "^7.3.4", + "source-map": "^0.7.4" }, "dependencies": { "ansi-styles": { @@ -15885,6 +15606,12 @@ "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true + }, + "source-map": { + "version": "0.7.4", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", + "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", + "dev": true } } }, From 72aa3c95279452c287b02615e364df24c8db2ea4 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Wed, 1 Nov 2023 13:11:07 +0100 Subject: [PATCH 41/43] Use @enonic/legacy-slickgrid --- .eslintrc.js | 2 +- gradle/node.gradle | 2 +- package-lock.json | 3204 ++--------------- package.json | 3 +- .../{static => _static}/app/Router.ts | 0 .../{static => _static}/app/UserAppPanel.ts | 0 .../app/access/IdProviderAccess.ts | 0 .../access/IdProviderAccessControlEntry.ts | 0 .../IdProviderAccessControlEntryJson.ts | 0 .../app/access/IdProviderAccessControlList.ts | 0 .../app/browse/BaseUserEvent.ts | 0 .../app/browse/EditPrincipalEvent.ts | 0 .../app/browse/NewPrincipalEvent.ts | 0 .../app/browse/PrincipalDuplicatedEvent.ts | 0 .../app/browse/PrincipalSynchronizedEvent.ts | 0 .../app/browse/ShowNewPrincipalDialogEvent.ts | 0 .../app/browse/UpdatePrincipalEvent.ts | 0 .../app/browse/UserBrowseItemPanel.ts | 0 .../app/browse/UserBrowsePanel.ts | 0 .../app/browse/UserBrowseToolbar.ts | 0 .../app/browse/UserItemDeletePromptEvent.ts | 0 .../app/browse/UserItemType.ts | 0 .../app/browse/UserItemsRowFormatter.ts | 0 .../app/browse/UserItemsTreeGrid.ts | 0 .../app/browse/UserTreeGridActions.ts | 0 .../app/browse/UserTreeGridItem.ts | 0 .../app/browse/UserTreeGridItemViewer.ts | 0 .../browse/action/DeletePrincipalAction.ts | 0 .../app/browse/action/EditPrincipalAction.ts | 0 .../app/browse/action/NewPrincipalAction.ts | 0 .../app/browse/action/SyncPrincipalAction.ts | 0 .../filter/PrincipalBrowseFilterPanel.ts | 0 .../filter/PrincipalBrowseSearchData.ts | 0 .../app/browse/serviceaccount/PublicKey.ts | 0 .../app/create/NewPrincipalDialog.ts | 0 .../app/create/UserItemTypesRowFormatter.ts | 0 .../app/create/UserItemTypesTreeGrid.ts | 0 .../app/create/UserTypeTreeGridItem.ts | 0 .../app/create/UserTypesTreeGridItemViewer.ts | 0 .../app/event/PrincipalServerChange.ts | 0 .../app/event/PrincipalServerChangeItem.ts | 0 .../app/event/PrincipalServerEvent.ts | 0 .../app/event/PrincipalServerEventsHandler.ts | 0 .../app/event/ReportServerChange.ts | 0 .../app/event/ReportServerChangeItem.ts | 0 .../app/event/ReportServerEvent.ts | 0 .../app/event/UserFilteredDataScrollEvent.ts | 0 .../app/event/UserItemCreatedEvent.ts | 0 .../app/event/UserItemDeletedEvent.ts | 0 .../app/event/UserItemNamedEvent.ts | 0 .../app/event/UserItemUpdatedEvent.ts | 0 .../app/event/UserItemsStopScrollEvent.ts | 0 .../app/event/UsersServerEventsListener.ts | 0 .../app/event/UsersServerEventsTranslator.ts | 0 .../AuthApplicationComboBox.ts | 0 .../AuthApplicationLoader.ts | 0 .../AuthApplicationSelectedOptionView.ts | 0 .../AuthApplicationSelectedOptionsView.ts | 0 .../AuthApplicationSelector.ts | 0 .../app/inputtype/index.ts | 0 .../inputtype/selector/PrincipalSelector.ts | 0 .../app/principal/FindPrincipalsRequest.ts | 0 .../principal/GetPrincipalsByKeysRequest.ts | 0 .../app/principal/Group.ts | 0 .../app/principal/GroupJson.ts | 0 .../app/principal/IdProvider.ts | 0 .../app/principal/IdProviderJson.ts | 0 .../app/principal/Members.ts | 0 .../app/principal/MembersJson.ts | 0 .../app/principal/PrincipalLoader.ts | 0 .../app/principal/PublicKeyJson.ts | 0 .../{static => _static}/app/principal/Role.ts | 0 .../app/principal/RoleJson.ts | 0 .../{static => _static}/app/principal/User.ts | 0 .../app/principal/UserJson.ts | 0 .../{static => _static}/app/report/Report.ts | 0 .../app/report/Repository.ts | 0 .../app/report/RepositoryComboBox.ts | 0 .../app/report/RepositoryLoader.ts | 0 .../app/report/RepositoryViewer.ts | 0 .../ListIdProviderApplicationsRequest.ts | 0 .../app/view/MembersListing.ts | 0 .../app/view/PublicKeysGrid.ts | 0 .../app/view/UserItemStatisticsHeader.ts | 0 .../app/view/UserItemStatisticsPanel.ts | 0 .../app/wizard/ChangeUserPasswordDialog.ts | 0 .../app/wizard/GroupWizardPanel.ts | 0 .../wizard/IdProviderAccessControlComboBox.ts | 0 .../IdProviderAccessControlEntryView.ts | 0 .../app/wizard/IdProviderAccessSelector.ts | 0 .../app/wizard/IdProviderWizardActions.ts | 0 .../app/wizard/IdProviderWizardDataLoader.ts | 0 .../app/wizard/IdProviderWizardPanel.ts | 0 .../app/wizard/IdProviderWizardPanelParams.ts | 0 .../app/wizard/IdProviderWizardStepForm.ts | 0 .../app/wizard/MembersWizardPanel.ts | 0 .../app/wizard/MembersWizardStepForm.ts | 0 .../app/wizard/NewPublicKeyDialog.ts | 0 .../wizard/OpenChangePasswordDialogEvent.ts | 0 .../app/wizard/PasswordGenerator.ts | 0 .../app/wizard/PasswordStrengthBlock.ts | 0 .../PrincipalDescriptionWizardStepForm.ts | 0 .../app/wizard/PrincipalWizardDataLoader.ts | 0 .../app/wizard/PrincipalWizardPanel.ts | 0 .../app/wizard/PrincipalWizardPanelParams.ts | 0 .../app/wizard/PublicKeyDetailsDialog.ts | 0 .../app/wizard/RoleWizardPanel.ts | 0 .../app/wizard/RolesWizardStepForm.ts | 0 .../app/wizard/SecurityWizardStepForm.ts | 0 .../app/wizard/SetUserPasswordRequest.ts | 0 .../app/wizard/UserEmailWizardStepForm.ts | 0 .../app/wizard/UserItemWizardPanel.ts | 0 .../app/wizard/UserItemWizardPanelParams.ts | 0 .../app/wizard/UserItemWizardStepForm.ts | 0 .../app/wizard/UserKeyDetailsDialog.ts | 0 .../wizard/UserMembershipsWizardStepForm.ts | 0 .../app/wizard/UserPasswordWizardStepForm.ts | 0 .../app/wizard/UserWizardPanel.ts | 0 .../app/wizard/action/DeleteUserItemAction.ts | 0 .../wizard/action/UserItemWizardActions.ts | 0 .../graphql/GraphQlRequest.ts | 0 .../graphql/ListGraphQlRequest.ts | 0 .../aggregation/UserItemAggregationHelper.ts | 0 .../UserItemBucketAggregationJson.ts | 0 .../idprovider/CreateIdProviderRequest.ts | 0 .../idprovider/DeleteIdProviderRequest.ts | 0 .../idprovider/GetDefaultIdProviderRequest.ts | 0 .../idprovider/GetIdProviderByKeyRequest.ts | 0 .../idprovider/IdProviderListResult.ts | 0 .../idprovider/ListIdProvidersRequest.ts | 0 .../idprovider/SaveIdProviderRequest.ts | 0 .../idprovider/UpdateIdProviderRequest.ts | 0 .../principal/DeletePrincipalRequest.ts | 0 .../principal/GetPrincipalByKeyRequest.ts | 0 .../principal/GetPrincipalsByKeysRequest.ts | 0 .../GetPrincipalsExistenceRequest.ts | 0 .../graphql/principal/ListItemsRequest.ts | 0 .../principal/ListPrincipalsNamesRequest.ts | 0 .../principal/ListPrincipalsRequest.ts | 0 .../graphql/principal/ListTypesRequest.ts | 0 .../graphql/principal/ListUserItemsRequest.ts | 0 .../principal/group/CreateGroupRequest.ts | 0 .../principal/group/UpdateGroupRequest.ts | 0 .../principal/role/CreateRoleRequest.ts | 0 .../principal/role/UpdateRoleRequest.ts | 0 .../principal/user/AddPublicKeyRequest.ts | 0 .../principal/user/CreateUserRequest.ts | 0 .../principal/user/DeletePublicKeyRequest.ts | 0 .../principal/user/UpdatePasswordRequest.ts | 0 .../principal/user/UpdateUserRequest.ts | 0 .../repository/ListRepositoriesRequest.ts | 0 .../graphql/useritem/DeleteUserItemJson.ts | 0 .../graphql/useritem/DeleteUserItemRequest.ts | 0 .../graphql/useritem/DeleteUserItemResult.ts | 0 .../resources/{static => _static}/main.ts | 26 + .../{static => _static}/tsconfig.json | 0 .../{static => _static}/util/CryptoWorker.ts | 0 .../{static => _static}/util/UrlHelper.ts | 0 .../worker/RSAKeysWorker.ts | 0 src/main/resources/admin/tools/main/main.html | 8 +- src/main/resources/admin/tools/main/main.ts | 22 +- src/main/resources/constants.ts | 2 +- src/main/resources/lib/users/urlHelper.ts | 5 + src/main/resources/tsconfig.json | 2 +- tsup.config.ts | 3 +- tsup/assets.ts | 13 +- tsup/constants.ts | 4 +- tsup/static.ts | 50 +- 168 files changed, 345 insertions(+), 3001 deletions(-) rename src/main/resources/{static => _static}/app/Router.ts (100%) rename src/main/resources/{static => _static}/app/UserAppPanel.ts (100%) rename src/main/resources/{static => _static}/app/access/IdProviderAccess.ts (100%) rename src/main/resources/{static => _static}/app/access/IdProviderAccessControlEntry.ts (100%) rename src/main/resources/{static => _static}/app/access/IdProviderAccessControlEntryJson.ts (100%) rename src/main/resources/{static => _static}/app/access/IdProviderAccessControlList.ts (100%) rename src/main/resources/{static => _static}/app/browse/BaseUserEvent.ts (100%) rename src/main/resources/{static => _static}/app/browse/EditPrincipalEvent.ts (100%) rename src/main/resources/{static => _static}/app/browse/NewPrincipalEvent.ts (100%) rename src/main/resources/{static => _static}/app/browse/PrincipalDuplicatedEvent.ts (100%) rename src/main/resources/{static => _static}/app/browse/PrincipalSynchronizedEvent.ts (100%) rename src/main/resources/{static => _static}/app/browse/ShowNewPrincipalDialogEvent.ts (100%) rename src/main/resources/{static => _static}/app/browse/UpdatePrincipalEvent.ts (100%) rename src/main/resources/{static => _static}/app/browse/UserBrowseItemPanel.ts (100%) rename src/main/resources/{static => _static}/app/browse/UserBrowsePanel.ts (100%) rename src/main/resources/{static => _static}/app/browse/UserBrowseToolbar.ts (100%) rename src/main/resources/{static => _static}/app/browse/UserItemDeletePromptEvent.ts (100%) rename src/main/resources/{static => _static}/app/browse/UserItemType.ts (100%) rename src/main/resources/{static => _static}/app/browse/UserItemsRowFormatter.ts (100%) rename src/main/resources/{static => _static}/app/browse/UserItemsTreeGrid.ts (100%) rename src/main/resources/{static => _static}/app/browse/UserTreeGridActions.ts (100%) rename src/main/resources/{static => _static}/app/browse/UserTreeGridItem.ts (100%) rename src/main/resources/{static => _static}/app/browse/UserTreeGridItemViewer.ts (100%) rename src/main/resources/{static => _static}/app/browse/action/DeletePrincipalAction.ts (100%) rename src/main/resources/{static => _static}/app/browse/action/EditPrincipalAction.ts (100%) rename src/main/resources/{static => _static}/app/browse/action/NewPrincipalAction.ts (100%) rename src/main/resources/{static => _static}/app/browse/action/SyncPrincipalAction.ts (100%) rename src/main/resources/{static => _static}/app/browse/filter/PrincipalBrowseFilterPanel.ts (100%) rename src/main/resources/{static => _static}/app/browse/filter/PrincipalBrowseSearchData.ts (100%) rename src/main/resources/{static => _static}/app/browse/serviceaccount/PublicKey.ts (100%) rename src/main/resources/{static => _static}/app/create/NewPrincipalDialog.ts (100%) rename src/main/resources/{static => _static}/app/create/UserItemTypesRowFormatter.ts (100%) rename src/main/resources/{static => _static}/app/create/UserItemTypesTreeGrid.ts (100%) rename src/main/resources/{static => _static}/app/create/UserTypeTreeGridItem.ts (100%) rename src/main/resources/{static => _static}/app/create/UserTypesTreeGridItemViewer.ts (100%) rename src/main/resources/{static => _static}/app/event/PrincipalServerChange.ts (100%) rename src/main/resources/{static => _static}/app/event/PrincipalServerChangeItem.ts (100%) rename src/main/resources/{static => _static}/app/event/PrincipalServerEvent.ts (100%) rename src/main/resources/{static => _static}/app/event/PrincipalServerEventsHandler.ts (100%) rename src/main/resources/{static => _static}/app/event/ReportServerChange.ts (100%) rename src/main/resources/{static => _static}/app/event/ReportServerChangeItem.ts (100%) rename src/main/resources/{static => _static}/app/event/ReportServerEvent.ts (100%) rename src/main/resources/{static => _static}/app/event/UserFilteredDataScrollEvent.ts (100%) rename src/main/resources/{static => _static}/app/event/UserItemCreatedEvent.ts (100%) rename src/main/resources/{static => _static}/app/event/UserItemDeletedEvent.ts (100%) rename src/main/resources/{static => _static}/app/event/UserItemNamedEvent.ts (100%) rename src/main/resources/{static => _static}/app/event/UserItemUpdatedEvent.ts (100%) rename src/main/resources/{static => _static}/app/event/UserItemsStopScrollEvent.ts (100%) rename src/main/resources/{static => _static}/app/event/UsersServerEventsListener.ts (100%) rename src/main/resources/{static => _static}/app/event/UsersServerEventsTranslator.ts (100%) rename src/main/resources/{static => _static}/app/inputtype/authapplicationselector/AuthApplicationComboBox.ts (100%) rename src/main/resources/{static => _static}/app/inputtype/authapplicationselector/AuthApplicationLoader.ts (100%) rename src/main/resources/{static => _static}/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionView.ts (100%) rename src/main/resources/{static => _static}/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionsView.ts (100%) rename src/main/resources/{static => _static}/app/inputtype/authapplicationselector/AuthApplicationSelector.ts (100%) rename src/main/resources/{static => _static}/app/inputtype/index.ts (100%) rename src/main/resources/{static => _static}/app/inputtype/selector/PrincipalSelector.ts (100%) rename src/main/resources/{static => _static}/app/principal/FindPrincipalsRequest.ts (100%) rename src/main/resources/{static => _static}/app/principal/GetPrincipalsByKeysRequest.ts (100%) rename src/main/resources/{static => _static}/app/principal/Group.ts (100%) rename src/main/resources/{static => _static}/app/principal/GroupJson.ts (100%) rename src/main/resources/{static => _static}/app/principal/IdProvider.ts (100%) rename src/main/resources/{static => _static}/app/principal/IdProviderJson.ts (100%) rename src/main/resources/{static => _static}/app/principal/Members.ts (100%) rename src/main/resources/{static => _static}/app/principal/MembersJson.ts (100%) rename src/main/resources/{static => _static}/app/principal/PrincipalLoader.ts (100%) rename src/main/resources/{static => _static}/app/principal/PublicKeyJson.ts (100%) rename src/main/resources/{static => _static}/app/principal/Role.ts (100%) rename src/main/resources/{static => _static}/app/principal/RoleJson.ts (100%) rename src/main/resources/{static => _static}/app/principal/User.ts (100%) rename src/main/resources/{static => _static}/app/principal/UserJson.ts (100%) rename src/main/resources/{static => _static}/app/report/Report.ts (100%) rename src/main/resources/{static => _static}/app/report/Repository.ts (100%) rename src/main/resources/{static => _static}/app/report/RepositoryComboBox.ts (100%) rename src/main/resources/{static => _static}/app/report/RepositoryLoader.ts (100%) rename src/main/resources/{static => _static}/app/report/RepositoryViewer.ts (100%) rename src/main/resources/{static => _static}/app/resource/ListIdProviderApplicationsRequest.ts (100%) rename src/main/resources/{static => _static}/app/view/MembersListing.ts (100%) rename src/main/resources/{static => _static}/app/view/PublicKeysGrid.ts (100%) rename src/main/resources/{static => _static}/app/view/UserItemStatisticsHeader.ts (100%) rename src/main/resources/{static => _static}/app/view/UserItemStatisticsPanel.ts (100%) rename src/main/resources/{static => _static}/app/wizard/ChangeUserPasswordDialog.ts (100%) rename src/main/resources/{static => _static}/app/wizard/GroupWizardPanel.ts (100%) rename src/main/resources/{static => _static}/app/wizard/IdProviderAccessControlComboBox.ts (100%) rename src/main/resources/{static => _static}/app/wizard/IdProviderAccessControlEntryView.ts (100%) rename src/main/resources/{static => _static}/app/wizard/IdProviderAccessSelector.ts (100%) rename src/main/resources/{static => _static}/app/wizard/IdProviderWizardActions.ts (100%) rename src/main/resources/{static => _static}/app/wizard/IdProviderWizardDataLoader.ts (100%) rename src/main/resources/{static => _static}/app/wizard/IdProviderWizardPanel.ts (100%) rename src/main/resources/{static => _static}/app/wizard/IdProviderWizardPanelParams.ts (100%) rename src/main/resources/{static => _static}/app/wizard/IdProviderWizardStepForm.ts (100%) rename src/main/resources/{static => _static}/app/wizard/MembersWizardPanel.ts (100%) rename src/main/resources/{static => _static}/app/wizard/MembersWizardStepForm.ts (100%) rename src/main/resources/{static => _static}/app/wizard/NewPublicKeyDialog.ts (100%) rename src/main/resources/{static => _static}/app/wizard/OpenChangePasswordDialogEvent.ts (100%) rename src/main/resources/{static => _static}/app/wizard/PasswordGenerator.ts (100%) rename src/main/resources/{static => _static}/app/wizard/PasswordStrengthBlock.ts (100%) rename src/main/resources/{static => _static}/app/wizard/PrincipalDescriptionWizardStepForm.ts (100%) rename src/main/resources/{static => _static}/app/wizard/PrincipalWizardDataLoader.ts (100%) rename src/main/resources/{static => _static}/app/wizard/PrincipalWizardPanel.ts (100%) rename src/main/resources/{static => _static}/app/wizard/PrincipalWizardPanelParams.ts (100%) rename src/main/resources/{static => _static}/app/wizard/PublicKeyDetailsDialog.ts (100%) rename src/main/resources/{static => _static}/app/wizard/RoleWizardPanel.ts (100%) rename src/main/resources/{static => _static}/app/wizard/RolesWizardStepForm.ts (100%) rename src/main/resources/{static => _static}/app/wizard/SecurityWizardStepForm.ts (100%) rename src/main/resources/{static => _static}/app/wizard/SetUserPasswordRequest.ts (100%) rename src/main/resources/{static => _static}/app/wizard/UserEmailWizardStepForm.ts (100%) rename src/main/resources/{static => _static}/app/wizard/UserItemWizardPanel.ts (100%) rename src/main/resources/{static => _static}/app/wizard/UserItemWizardPanelParams.ts (100%) rename src/main/resources/{static => _static}/app/wizard/UserItemWizardStepForm.ts (100%) rename src/main/resources/{static => _static}/app/wizard/UserKeyDetailsDialog.ts (100%) rename src/main/resources/{static => _static}/app/wizard/UserMembershipsWizardStepForm.ts (100%) rename src/main/resources/{static => _static}/app/wizard/UserPasswordWizardStepForm.ts (100%) rename src/main/resources/{static => _static}/app/wizard/UserWizardPanel.ts (100%) rename src/main/resources/{static => _static}/app/wizard/action/DeleteUserItemAction.ts (100%) rename src/main/resources/{static => _static}/app/wizard/action/UserItemWizardActions.ts (100%) rename src/main/resources/{static => _static}/graphql/GraphQlRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/ListGraphQlRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/aggregation/UserItemAggregationHelper.ts (100%) rename src/main/resources/{static => _static}/graphql/aggregation/UserItemBucketAggregationJson.ts (100%) rename src/main/resources/{static => _static}/graphql/idprovider/CreateIdProviderRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/idprovider/DeleteIdProviderRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/idprovider/GetDefaultIdProviderRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/idprovider/GetIdProviderByKeyRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/idprovider/IdProviderListResult.ts (100%) rename src/main/resources/{static => _static}/graphql/idprovider/ListIdProvidersRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/idprovider/SaveIdProviderRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/idprovider/UpdateIdProviderRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/principal/DeletePrincipalRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/principal/GetPrincipalByKeyRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/principal/GetPrincipalsByKeysRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/principal/GetPrincipalsExistenceRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/principal/ListItemsRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/principal/ListPrincipalsNamesRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/principal/ListPrincipalsRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/principal/ListTypesRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/principal/ListUserItemsRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/principal/group/CreateGroupRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/principal/group/UpdateGroupRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/principal/role/CreateRoleRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/principal/role/UpdateRoleRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/principal/user/AddPublicKeyRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/principal/user/CreateUserRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/principal/user/DeletePublicKeyRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/principal/user/UpdatePasswordRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/principal/user/UpdateUserRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/repository/ListRepositoriesRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/useritem/DeleteUserItemJson.ts (100%) rename src/main/resources/{static => _static}/graphql/useritem/DeleteUserItemRequest.ts (100%) rename src/main/resources/{static => _static}/graphql/useritem/DeleteUserItemResult.ts (100%) rename src/main/resources/{static => _static}/main.ts (74%) rename src/main/resources/{static => _static}/tsconfig.json (100%) rename src/main/resources/{static => _static}/util/CryptoWorker.ts (100%) rename src/main/resources/{static => _static}/util/UrlHelper.ts (100%) rename src/main/resources/{static => _static}/worker/RSAKeysWorker.ts (100%) diff --git a/.eslintrc.js b/.eslintrc.js index e4d68f329..ab9fe9235 100644 --- a/.eslintrc.js +++ b/.eslintrc.js @@ -3,7 +3,7 @@ module.exports = { parserOptions: { project: [ './src/main/resources/tsconfig.json', - './src/main/resources/static/tsconfig.json', + './src/main/resources/_static/tsconfig.json', './src/test/resources/tsconfig.json', ], // tsconfigRootDir: __dirname, diff --git a/gradle/node.gradle b/gradle/node.gradle index 911262f7e..2def80545 100644 --- a/gradle/node.gradle +++ b/gradle/node.gradle @@ -1,7 +1,7 @@ apply plugin: 'com.github.node-gradle.node' node { - version = '18.17.1' + version = '18.18.1' download = true } diff --git a/package-lock.json b/package-lock.json index 56d87201a..9ae0eb1b0 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,6 +9,7 @@ "version": "1.0.0", "license": "GPL-3.0", "dependencies": { + "@enonic/legacy-slickgrid": "^0.0.1", "@enonic/lib-admin-ui": "file:./.xp/dev/lib-admin-ui", "hasher": "^1.2.0", "jquery": "^3.7.1", @@ -63,69 +64,6 @@ "npm": ">= 9.6.7" } }, - ".xp/dev/lib-admin-ui": { - "name": "@enonic/lib-admin-ui", - "version": "4.9.0", - "license": "GPL-3.0", - "dependencies": { - "@types/dompurify": "^3.0.3", - "@types/mousetrap": "^1.6.12", - "@types/slickgrid": "^2.1.36", - "dompurify": "^3.0.6", - "fine-uploader": "^5.16.2", - "jquery-simulate": "^1.0.2", - "mousetrap": "^1.6.5", - "q": "^1.5.1", - "slickgrid": "^4.0.1", - "validator": "^13.11.0" - }, - "devDependencies": { - "@enonic/eslint-config": "^1.2.0", - "@swc/cli": "^0.1.62", - "@swc/core": "1.3.93", - "@types/jquery": "^3.5.22", - "@types/jqueryui": "^1.12.18", - "@types/q": "^1.5.6", - "@types/semver": "^7.5.3", - "@types/validator": "^13.11.3", - "@typescript-eslint/eslint-plugin": "^6.8.0", - "@typescript-eslint/parser": "^6.8.0", - "autoprefixer": "^10.4.16", - "browserslist": "^4.22.1", - "browserslist-config-enonic": "^1.0.8", - "circular-dependency-plugin": "^5.2.2", - "copy-webpack-plugin": "^11.0.0", - "css-loader": "^6.8.1", - "cssnano": "^6.0.1", - "enonic-admin-artifacts": "^1.8.5", - "error-logger-webpack-plugin": "^1.1.1", - "eslint": "^8.51.0", - "glob": "^10.3.10", - "jquery-ui": "^1.13.2", - "less": "^4.2.0", - "less-loader": "^11.1.3", - "mini-css-extract-plugin": "^2.7.6", - "npm-run-all": "^4.1.5", - "postcss-loader": "^7.3.3", - "postcss-normalize": "^10.0.1", - "postcss-sort-media-queries": "^5.2.0", - "swc-loader": "^0.2.3", - "terser-webpack-plugin": "^5.3.9", - "ts-loader": "^9.5.0", - "typescript": "^5.2.2", - "webpack": "^5.89.0", - "webpack-cli": "^5.1.4" - }, - "engines": { - "node": ">= 18.17.1", - "npm": ">= 9.6.7" - }, - "peerDependencies": { - "jquery": "^3.7.1", - "jquery-ui-dist": "^1.13.2", - "postcss": "^8.2.2" - } - }, "node_modules/@aashutoshrathi/word-wrap": { "version": "1.2.6", "resolved": "https://registry.npmjs.org/@aashutoshrathi/word-wrap/-/word-wrap-1.2.6.tgz", @@ -228,15 +166,6 @@ "integrity": "sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==", "dev": true }, - "node_modules/@discoveryjs/json-ext": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz", - "integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==", - "dev": true, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/@enonic-types/core": { "version": "7.13.3", "resolved": "https://registry.npmjs.org/@enonic-types/core/-/core-7.13.3.tgz", @@ -323,9 +252,49 @@ "typescript": ">=4.3.5" } }, + "node_modules/@enonic/legacy-slickgrid": { + "version": "0.0.1", + "resolved": "file:../npm-legacy-slickgrid", + "license": "MIT", + "peerDependencies": { + "jquery": "^3.7.1", + "jquery-ui": "^1.13.2", + "jquery-ui-dist": "^1.13.2" + }, + "peerDependenciesMeta": { + "jquery-ui": { + "optional": true + }, + "jquery-ui-dist": { + "optional": true + } + } + }, "node_modules/@enonic/lib-admin-ui": { - "resolved": ".xp/dev/lib-admin-ui", - "link": true + "version": "4.8.0", + "resolved": "file:.xp/dev/lib-admin-ui", + "license": "GPL-3.0", + "dependencies": { + "@types/dompurify": "^3.0.3", + "@types/mousetrap": "^1.6.12", + "@types/slickgrid": "^2.1.36", + "dompurify": "^3.0.6", + "fine-uploader": "^5.16.2", + "jquery-simulate": "^1.0.2", + "mousetrap": "^1.6.5", + "q": "^1.5.1", + "slickgrid": "^4.0.1", + "validator": "^13.11.0" + }, + "engines": { + "node": ">= 18.17.1", + "npm": ">= 9.6.7" + }, + "peerDependencies": { + "jquery": "^3.7.1", + "jquery-ui-dist": "^1.13.2", + "postcss": "^8.2.2" + } }, "node_modules/@enonic/tsup-plugin-manifest": { "version": "0.0.1", @@ -929,6 +898,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", "dev": true, + "peer": true, "dependencies": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -950,25 +920,6 @@ "@jridgewell/sourcemap-codec": "1.4.14" } }, - "node_modules/@mole-inc/bin-wrapper": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@mole-inc/bin-wrapper/-/bin-wrapper-8.0.1.tgz", - "integrity": "sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==", - "dev": true, - "dependencies": { - "bin-check": "^4.1.0", - "bin-version-check": "^5.0.0", - "content-disposition": "^0.5.4", - "ext-name": "^5.0.0", - "file-type": "^17.1.6", - "filenamify": "^5.0.2", - "got": "^11.8.5", - "os-filter-obj": "^2.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - } - }, "node_modules/@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -1014,67 +965,6 @@ "node": ">=14" } }, - "node_modules/@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/is?sponsor=1" - } - }, - "node_modules/@swc/cli": { - "version": "0.1.62", - "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.1.62.tgz", - "integrity": "sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==", - "dev": true, - "dependencies": { - "@mole-inc/bin-wrapper": "^8.0.1", - "commander": "^7.1.0", - "fast-glob": "^3.2.5", - "semver": "^7.3.8", - "slash": "3.0.0", - "source-map": "^0.7.3" - }, - "bin": { - "spack": "bin/spack.js", - "swc": "bin/swc.js", - "swcx": "bin/swcx.js" - }, - "engines": { - "node": ">= 12.13" - }, - "peerDependencies": { - "@swc/core": "^1.2.66", - "chokidar": "^3.5.1" - }, - "peerDependenciesMeta": { - "chokidar": { - "optional": true - } - } - }, - "node_modules/@swc/cli/node_modules/commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true, - "engines": { - "node": ">= 10" - } - }, - "node_modules/@swc/cli/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/@swc/core": { "version": "1.3.93", "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.93.tgz", @@ -1285,24 +1175,6 @@ "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", "dev": true }, - "node_modules/@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dev": true, - "dependencies": { - "defer-to-connect": "^2.0.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", - "dev": true - }, "node_modules/@trysound/sax": { "version": "0.2.0", "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", @@ -1312,18 +1184,6 @@ "node": ">=10.13.0" } }, - "node_modules/@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "dev": true, - "dependencies": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" - } - }, "node_modules/@types/dompurify": { "version": "3.0.3", "resolved": "https://registry.npmjs.org/@types/dompurify/-/dompurify-3.0.3.tgz", @@ -1337,6 +1197,7 @@ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", "dev": true, + "peer": true, "dependencies": { "@types/estree": "*", "@types/json-schema": "*" @@ -1347,6 +1208,7 @@ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", "dev": true, + "peer": true, "dependencies": { "@types/eslint": "*", "@types/estree": "*" @@ -1356,7 +1218,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@types/hasher": { "version": "0.0.33", @@ -1367,12 +1230,6 @@ "@types/signals": "*" } }, - "node_modules/@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true - }, "node_modules/@types/jquery": { "version": "3.5.22", "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.22.tgz", @@ -1381,30 +1238,12 @@ "@types/sizzle": "*" } }, - "node_modules/@types/jqueryui": { - "version": "1.12.18", - "resolved": "https://registry.npmjs.org/@types/jqueryui/-/jqueryui-1.12.18.tgz", - "integrity": "sha512-crlmH8kFzIiU+4aBFgvYUjykSaOTP5RDw7NqkFkcSNWFAF/SMPrr7sY1uNXDEhite/2pEwUoZlufQoy87A22LA==", - "dev": true, - "dependencies": { - "@types/jquery": "*" - } - }, "node_modules/@types/json-schema": { "version": "7.0.12", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", "dev": true }, - "node_modules/@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/mousetrap": { "version": "1.6.12", "resolved": "https://registry.npmjs.org/@types/mousetrap/-/mousetrap-1.6.12.tgz", @@ -1423,7 +1262,8 @@ "version": "17.0.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.1.tgz", "integrity": "sha512-NXKvBVUzIbs6ylBwmOwHFkZS2EXCcjnqr8ZCRNaXBkHAf+3mn/rPcJxwrzuc6movh8fxQAsUUfYklJ/EG+hZqQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@types/owasp-password-strength-test": { "version": "1.3.0", @@ -1437,15 +1277,6 @@ "integrity": "sha512-IKjZ8RjTSwD4/YG+2gtj7BPFRB/lNbWKTiSj3M7U/TD2B7HfYCxvp2Zz6xA2WIY7pAuL1QOUPw8gQRbUrrq4fQ==", "dev": true }, - "node_modules/@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "dev": true, - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/semver": { "version": "7.5.3", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", @@ -1476,12 +1307,6 @@ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.0.tgz", "integrity": "sha512-I8MnZqNXsOLHsU111oHbn3khtvKMi5Bn4qVFsIWSJcCP1KKDiXX5AEw8UPk0nSopeC+Hvxt6yAy1/a5PailFqg==" }, - "node_modules/@types/validator": { - "version": "13.11.3", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.3.tgz", - "integrity": "sha512-jxjhh33aTYDHnrV1vZ3AvWQHfrGx2f5UxKjaP13l5q04fG+/hCKKm0MfodIoCqxevhbcfBb6ZjynyHuQ/jueGQ==", - "dev": true - }, "node_modules/@typescript-eslint/eslint-plugin": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz", @@ -1768,6 +1593,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz", "integrity": "sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==", "dev": true, + "peer": true, "dependencies": { "@webassemblyjs/helper-numbers": "1.11.5", "@webassemblyjs/helper-wasm-bytecode": "1.11.5" @@ -1777,25 +1603,29 @@ "version": "1.11.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz", "integrity": "sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@webassemblyjs/helper-api-error": { "version": "1.11.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz", "integrity": "sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@webassemblyjs/helper-buffer": { "version": "1.11.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz", "integrity": "sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@webassemblyjs/helper-numbers": { "version": "1.11.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz", "integrity": "sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==", "dev": true, + "peer": true, "dependencies": { "@webassemblyjs/floating-point-hex-parser": "1.11.5", "@webassemblyjs/helper-api-error": "1.11.5", @@ -1806,13 +1636,15 @@ "version": "1.11.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz", "integrity": "sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@webassemblyjs/helper-wasm-section": { "version": "1.11.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz", "integrity": "sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==", "dev": true, + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.11.5", "@webassemblyjs/helper-buffer": "1.11.5", @@ -1825,6 +1657,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz", "integrity": "sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==", "dev": true, + "peer": true, "dependencies": { "@xtuc/ieee754": "^1.2.0" } @@ -1834,6 +1667,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz", "integrity": "sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==", "dev": true, + "peer": true, "dependencies": { "@xtuc/long": "4.2.2" } @@ -1842,13 +1676,15 @@ "version": "1.11.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz", "integrity": "sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@webassemblyjs/wasm-edit": { "version": "1.11.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz", "integrity": "sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==", "dev": true, + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.11.5", "@webassemblyjs/helper-buffer": "1.11.5", @@ -1865,6 +1701,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz", "integrity": "sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==", "dev": true, + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.11.5", "@webassemblyjs/helper-wasm-bytecode": "1.11.5", @@ -1878,6 +1715,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz", "integrity": "sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==", "dev": true, + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.11.5", "@webassemblyjs/helper-buffer": "1.11.5", @@ -1890,6 +1728,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz", "integrity": "sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==", "dev": true, + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.11.5", "@webassemblyjs/helper-api-error": "1.11.5", @@ -1904,66 +1743,25 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz", "integrity": "sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==", "dev": true, + "peer": true, "dependencies": { "@webassemblyjs/ast": "1.11.5", "@xtuc/long": "4.2.2" } }, - "node_modules/@webpack-cli/configtest": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", - "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", - "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - } - }, - "node_modules/@webpack-cli/info": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", - "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", - "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - } - }, - "node_modules/@webpack-cli/serve": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", - "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", - "dev": true, - "engines": { - "node": ">=14.15.0" - }, - "peerDependencies": { - "webpack": "5.x.x", - "webpack-cli": "5.x.x" - }, - "peerDependenciesMeta": { - "webpack-dev-server": { - "optional": true - } - } - }, "node_modules/@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "dev": true, + "peer": true }, "node_modules/@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/abab": { "version": "2.0.6", @@ -1988,6 +1786,7 @@ "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, + "peer": true, "peerDependencies": { "acorn": "^8" } @@ -2017,50 +1816,12 @@ "url": "https://github.com/sponsors/epoberezkin" } }, - "node_modules/ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "dependencies": { - "ajv": "^8.0.0" - }, - "peerDependencies": { - "ajv": "^8.0.0" - }, - "peerDependenciesMeta": { - "ajv": { - "optional": true - } - } - }, - "node_modules/ajv-formats/node_modules/ajv": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/ajv-formats/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, "node_modules/ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/ansi-regex": { "version": "5.0.1", @@ -2102,26 +1863,6 @@ "node": ">= 8" } }, - "node_modules/arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, "node_modules/argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -2212,111 +1953,6 @@ } ] }, - "node_modules/bin-check": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", - "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==", - "dev": true, - "dependencies": { - "execa": "^0.7.0", - "executable": "^4.1.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/bin-version": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-6.0.0.tgz", - "integrity": "sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==", - "dev": true, - "dependencies": { - "execa": "^5.0.0", - "find-versions": "^5.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bin-version-check": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-5.0.0.tgz", - "integrity": "sha512-Q3FMQnS5eZmrBGqmDXLs4dbAn/f+52voP6ykJYmweSA60t6DyH4UTSwZhtbK5UH+LBoWvDljILUQMLRUtsynsA==", - "dev": true, - "dependencies": { - "bin-version": "^6.0.0", - "semver": "^7.3.5", - "semver-truncate": "^2.0.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bin-version/node_modules/execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "dependencies": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sindresorhus/execa?sponsor=1" - } - }, - "node_modules/bin-version/node_modules/get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bin-version/node_modules/is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/bin-version/node_modules/npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "dependencies": { - "path-key": "^3.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -2424,7 +2060,8 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/bundle-require": { "version": "4.0.2", @@ -2450,48 +2087,6 @@ "node": ">=8" } }, - "node_modules/cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "dev": true, - "engines": { - "node": ">=10.6.0" - } - }, - "node_modules/cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", - "dev": true, - "dependencies": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/cacheable-request/node_modules/get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "dependencies": { - "pump": "^3.0.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -2607,19 +2202,11 @@ "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", "dev": true, + "peer": true, "engines": { "node": ">=6.0" } }, - "node_modules/circular-dependency-plugin": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", - "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, "node_modules/cliui": { "version": "8.0.1", "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", @@ -2704,32 +2291,6 @@ "url": "https://github.com/chalk/wrap-ansi?sponsor=1" } }, - "node_modules/clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "dependencies": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dev": true, - "dependencies": { - "mimic-response": "^1.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -2761,7 +2322,8 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/concat-map": { "version": "0.0.1", @@ -2881,18 +2443,6 @@ "url": "https://github.com/chalk/supports-color?sponsor=1" } }, - "node_modules/content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "dependencies": { - "safe-buffer": "5.2.1" - }, - "engines": { - "node": ">= 0.6" - } - }, "node_modules/copy-anything": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", @@ -2905,114 +2455,6 @@ "url": "https://github.com/sponsors/mesqueeb" } }, - "node_modules/copy-webpack-plugin": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", - "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", - "dev": true, - "dependencies": { - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.1", - "globby": "^13.1.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" - }, - "engines": { - "node": ">= 14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.1.0" - } - }, - "node_modules/copy-webpack-plugin/node_modules/ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/copy-webpack-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/copy-webpack-plugin/node_modules/globby": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", - "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", - "dev": true, - "dependencies": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/copy-webpack-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/copy-webpack-plugin/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/copy-webpack-plugin/node_modules/slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/cosmiconfig": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", @@ -3276,48 +2718,12 @@ "ms": "^2.1.1" } }, - "node_modules/decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "dependencies": { - "mimic-response": "^3.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/decompress-response/node_modules/mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "node_modules/defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true, - "engines": { - "node": ">=10" - } - }, "node_modules/define-properties": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", @@ -3443,22 +2849,14 @@ "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", - "dev": true - }, - "node_modules/end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "dependencies": { - "once": "^1.4.0" - } + "dev": true }, "node_modules/enhanced-resolve": { "version": "5.15.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, + "peer": true, "dependencies": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -3489,18 +2887,6 @@ "url": "https://github.com/fb55/entities?sponsor=1" } }, - "node_modules/envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true, - "bin": { - "envinfo": "dist/cli.js" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/errno": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", @@ -3523,16 +2909,6 @@ "is-arrayish": "^0.2.1" } }, - "node_modules/error-logger-webpack-plugin": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/error-logger-webpack-plugin/-/error-logger-webpack-plugin-1.1.1.tgz", - "integrity": "sha512-77h8dMaOuwd/KHUaHbdr7ywnfuGJ4UtOkOZUojqa/ZMshqF3dzMtoiH3ZuNhFovS2t1xqYClsXTsK0t13tYSEQ==", - "dev": true, - "engines": { - "node": ">= 14.15.0", - "npm": ">= 6.14.8" - } - }, "node_modules/es-abstract": { "version": "1.21.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", @@ -3584,7 +2960,8 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", - "dev": true + "dev": true, + "peer": true }, "node_modules/es-set-tostringtag": { "version": "2.0.1", @@ -3747,6 +3124,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "peer": true, "dependencies": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -3995,6 +3373,7 @@ "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", "dev": true, + "peer": true, "engines": { "node": ">=4.0" } @@ -4013,134 +3392,11 @@ "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", "dev": true, + "peer": true, "engines": { "node": ">=0.8.x" } }, - "node_modules/execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", - "dev": true, - "dependencies": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/execa/node_modules/cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", - "dev": true, - "dependencies": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "node_modules/execa/node_modules/lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "dependencies": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "node_modules/execa/node_modules/shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "dependencies": { - "shebang-regex": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa/node_modules/shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/execa/node_modules/which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "dependencies": { - "isexe": "^2.0.0" - }, - "bin": { - "which": "bin/which" - } - }, - "node_modules/execa/node_modules/yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true - }, - "node_modules/executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "dev": true, - "dependencies": { - "pify": "^2.2.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/executable/node_modules/pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ext-list": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", - "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", - "dev": true, - "dependencies": { - "mime-db": "^1.28.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/ext-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", - "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", - "dev": true, - "dependencies": { - "ext-list": "^2.0.0", - "sort-keys-length": "^1.0.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/fast-deep-equal": { "version": "3.1.3", "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", @@ -4187,12 +3443,6 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, - "node_modules/fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true - }, "node_modules/fastq": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", @@ -4214,52 +3464,6 @@ "node": "^10.12.0 || >=12.0.0" } }, - "node_modules/file-type": { - "version": "17.1.6", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz", - "integrity": "sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==", - "dev": true, - "dependencies": { - "readable-web-to-node-stream": "^3.0.2", - "strtok3": "^7.0.0-alpha.9", - "token-types": "^5.0.0-alpha.2" - }, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/file-type?sponsor=1" - } - }, - "node_modules/filename-reserved-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz", - "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/filenamify": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-5.1.1.tgz", - "integrity": "sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==", - "dev": true, - "dependencies": { - "filename-reserved-regex": "^3.0.0", - "strip-outer": "^2.0.0", - "trim-repeated": "^2.0.0" - }, - "engines": { - "node": ">=12.20" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -4272,34 +3476,6 @@ "node": ">=8" } }, - "node_modules/find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "dependencies": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/find-versions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", - "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", - "dev": true, - "dependencies": { - "semver-regex": "^4.0.5" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/fine-uploader": { "version": "5.16.2", "resolved": "https://registry.npmjs.org/fine-uploader/-/fine-uploader-5.16.2.tgz", @@ -4476,15 +3652,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/get-symbol-description": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", @@ -4539,7 +3706,8 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true + "dev": true, + "peer": true }, "node_modules/glob/node_modules/brace-expansion": { "version": "2.0.1", @@ -4627,31 +3795,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "dev": true, - "dependencies": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - }, - "engines": { - "node": ">=10.19.0" - }, - "funding": { - "url": "https://github.com/sindresorhus/got?sponsor=1" - } - }, "node_modules/graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -4759,25 +3902,6 @@ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, - "node_modules/http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "node_modules/http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dev": true, - "dependencies": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - }, - "engines": { - "node": ">=10.19.0" - } - }, "node_modules/human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -4866,22 +3990,6 @@ "node": ">=6" } }, - "node_modules/import-local": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", - "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", - "dev": true, - "dependencies": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - }, - "bin": { - "import-local-fixture": "fixtures/cli.js" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -5086,27 +4194,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "dependencies": { - "isobject": "^3.0.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -5135,15 +4222,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", @@ -5217,15 +4295,6 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "node_modules/isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/jackspeak": { "version": "2.3.5", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.5.tgz", @@ -5249,6 +4318,7 @@ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.5.tgz", "integrity": "sha512-f2s8kEdy15cv9r7q4KkzGXvlY0JTcmCbMHZBfSQDwW77REr45IDWwd0lksDFeVHH2jJ5pqb90T77XscrjeGzzg==", "dev": true, + "peer": true, "dependencies": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -5263,6 +4333,7 @@ "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", "dev": true, + "peer": true, "engines": { "node": ">=8" } @@ -5272,6 +4343,7 @@ "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "peer": true, "dependencies": { "has-flag": "^4.0.0" }, @@ -5314,7 +4386,8 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.2.tgz", "integrity": "sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q==", - "dev": true, + "optional": true, + "peer": true, "dependencies": { "jquery": ">=1.8.0 <4.0.0" } @@ -5345,12 +4418,6 @@ "js-yaml": "bin/js-yaml.js" } }, - "node_modules/json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, "node_modules/json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -5387,24 +4454,6 @@ "graceful-fs": "^4.1.6" } }, - "node_modules/keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", - "dev": true, - "dependencies": { - "json-buffer": "3.0.1" - } - }, - "node_modules/kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/less": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", @@ -5551,22 +4600,11 @@ "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", "dev": true, + "peer": true, "engines": { "node": ">=6.11.5" } }, - "node_modules/locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", - "dev": true, - "dependencies": { - "p-locate": "^4.1.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/lodash": { "version": "4.17.21", "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", @@ -5591,20 +4629,11 @@ "integrity": "sha512-HDWXG8isMntAyRF5vZ7xKuEvOhT4AhlRt/3czTSjvGUxjYCBVRQY48ViDHyfYz9VIoBkW4TMGQNapx+l3RUwdA==", "dev": true }, - "node_modules/lodash.uniq": { - "version": "4.5.0", - "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", - "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", - "dev": true - }, - "node_modules/lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true, - "engines": { - "node": ">=8" - } + "node_modules/lodash.uniq": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/lodash.uniq/-/lodash.uniq-4.5.0.tgz", + "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", + "dev": true }, "node_modules/lru-cache": { "version": "6.0.0", @@ -5703,6 +4732,7 @@ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", "dev": true, + "peer": true, "engines": { "node": ">= 0.6" } @@ -5712,6 +4742,7 @@ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", "dev": true, + "peer": true, "dependencies": { "mime-db": "1.47.0" }, @@ -5728,87 +4759,6 @@ "node": ">=6" } }, - "node_modules/mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true, - "engines": { - "node": ">=4" - } - }, - "node_modules/mini-css-extract-plugin": { - "version": "2.7.6", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", - "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", - "dev": true, - "dependencies": { - "schema-utils": "^4.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/ajv": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/epoberezkin" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "dependencies": { - "fast-deep-equal": "^3.1.3" - }, - "peerDependencies": { - "ajv": "^8.8.2" - } - }, - "node_modules/mini-css-extract-plugin/node_modules/json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "node_modules/mini-css-extract-plugin/node_modules/schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "dependencies": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - }, - "engines": { - "node": ">= 12.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, "node_modules/minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -5898,7 +4848,8 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "dev": true, + "peer": true }, "node_modules/nice-try": { "version": "1.0.5", @@ -5951,18 +4902,6 @@ "node": ">=0.10.0" } }, - "node_modules/normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/npm-run-all": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", @@ -6055,27 +4994,6 @@ "which": "bin/which" } }, - "node_modules/npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "dependencies": { - "path-key": "^2.0.0" - }, - "engines": { - "node": ">=4" - } - }, - "node_modules/npm-run-path/node_modules/path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -6174,41 +5092,11 @@ "node": ">= 0.8.0" } }, - "node_modules/os-filter-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz", - "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==", - "dev": true, - "dependencies": { - "arch": "^2.1.0" - }, - "engines": { - "node": ">=4" - } - }, "node_modules/owasp-password-strength-test": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/owasp-password-strength-test/-/owasp-password-strength-test-1.3.0.tgz", "integrity": "sha1-T2KeQpA+j20nmyMNZXq2HljkSxI=" }, - "node_modules/p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true, - "engines": { - "node": ">=4" - } - }, "node_modules/p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -6224,39 +5112,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "dependencies": { - "p-limit": "^2.2.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/p-locate/node_modules/p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "dependencies": { - "p-try": "^2.0.0" - }, - "engines": { - "node": ">=6" - } - }, - "node_modules/p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true, - "engines": { - "node": ">=6" - } - }, "node_modules/parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -6372,19 +5227,6 @@ "node": ">=8" } }, - "node_modules/peek-readable": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", - "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", - "dev": true, - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "node_modules/picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -6430,18 +5272,6 @@ "node": ">= 6" } }, - "node_modules/pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "dependencies": { - "find-up": "^4.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", @@ -7227,22 +6057,6 @@ "dev": true, "optional": true }, - "node_modules/pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "dev": true - }, - "node_modules/pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "dependencies": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "node_modules/punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -7281,23 +6095,12 @@ } ] }, - "node_modules/quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "peer": true, "dependencies": { "safe-buffer": "^5.1.0" } @@ -7355,36 +6158,6 @@ "node": ">=4" } }, - "node_modules/readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "dependencies": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - }, - "engines": { - "node": ">= 6" - } - }, - "node_modules/readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "dev": true, - "dependencies": { - "readable-stream": "^3.6.0" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "node_modules/readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -7429,15 +6202,6 @@ "node": ">=0.10.0" } }, - "node_modules/require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -7455,33 +6219,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true - }, - "node_modules/resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "dependencies": { - "resolve-from": "^5.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/resolve-cwd/node_modules/resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true, - "engines": { - "node": ">=8" - } - }, "node_modules/resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", @@ -7491,18 +6228,6 @@ "node": ">=4" } }, - "node_modules/responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dev": true, - "dependencies": { - "lowercase-keys": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -7600,7 +6325,8 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "dev": true, + "peer": true }, "node_modules/safe-regex-test": { "version": "1.0.0", @@ -7640,6 +6366,7 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "peer": true, "dependencies": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -7668,58 +6395,14 @@ "node": ">=10" } }, - "node_modules/semver-regex": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", - "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/semver-truncate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-2.0.0.tgz", - "integrity": "sha512-Rh266MLDYNeML5h90ttdMwfXe1+Nc4LAWd9X1KdJe8pPHP4kFmvLZALtsMNHNdvTyQygbEC0D59sIz47DIaq8w==", - "dev": true, - "dependencies": { - "semver": "^6.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/semver-truncate/node_modules/semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true, - "bin": { - "semver": "bin/semver.js" - } - }, "node_modules/serialize-javascript": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "dependencies": { - "kind-of": "^6.0.2" - }, - "engines": { - "node": ">=8" + "peer": true, + "dependencies": { + "randombytes": "^2.1.0" } }, "node_modules/shebang-command": { @@ -7803,30 +6486,6 @@ "node": ">= 6.3.0" } }, - "node_modules/sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", - "dev": true, - "dependencies": { - "is-plain-obj": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/sort-keys-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", - "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", - "dev": true, - "dependencies": { - "sort-keys": "^1.0.0" - }, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/sortablejs": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.0.tgz", @@ -7875,6 +6534,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, + "peer": true, "dependencies": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -7918,15 +6578,6 @@ "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, - "node_modules/string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "dependencies": { - "safe-buffer": "~5.2.0" - } - }, "node_modules/string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -8071,15 +6722,6 @@ "node": ">=4" } }, - "node_modules/strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, "node_modules/strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -8101,35 +6743,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/strip-outer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-2.0.0.tgz", - "integrity": "sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==", - "dev": true, - "engines": { - "node": "^12.20.0 || ^14.13.1 || >=16.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/strtok3": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", - "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", - "dev": true, - "dependencies": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^5.0.0" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "node_modules/stylehacks": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.0.0.tgz", @@ -8278,6 +6891,7 @@ "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", "dev": true, + "peer": true, "engines": { "node": ">=6" } @@ -8287,6 +6901,7 @@ "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", "dev": true, + "peer": true, "dependencies": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", @@ -8305,6 +6920,7 @@ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, + "peer": true, "dependencies": { "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", @@ -8379,23 +6995,6 @@ "node": ">=8.0" } }, - "node_modules/token-types": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", - "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", - "dev": true, - "dependencies": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - }, - "engines": { - "node": ">=14.16" - }, - "funding": { - "type": "github", - "url": "https://github.com/sponsors/Borewit" - } - }, "node_modules/tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", @@ -8414,30 +7013,6 @@ "tree-kill": "cli.js" } }, - "node_modules/trim-repeated": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-2.0.0.tgz", - "integrity": "sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==", - "dev": true, - "dependencies": { - "escape-string-regexp": "^5.0.0" - }, - "engines": { - "node": ">=12" - } - }, - "node_modules/trim-repeated/node_modules/escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, "node_modules/ts-api-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", @@ -8456,84 +7031,6 @@ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "dev": true }, - "node_modules/ts-loader": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.0.tgz", - "integrity": "sha512-LLlB/pkB4q9mW2yLdFMnK3dEHbrBjeZTYguaaIfusyojBgAGf5kF+O6KcWqiGzWqHk0LBsoolrp4VftEURhybg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4", - "source-map": "^0.7.4" - }, - "engines": { - "node": ">=12.0.0" - }, - "peerDependencies": { - "typescript": "*", - "webpack": "^5.0.0" - } - }, - "node_modules/ts-loader/node_modules/ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "dependencies": { - "color-convert": "^2.0.1" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/chalk/ansi-styles?sponsor=1" - } - }, - "node_modules/ts-loader/node_modules/chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "dependencies": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/chalk?sponsor=1" - } - }, - "node_modules/ts-loader/node_modules/color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "dependencies": { - "color-name": "~1.1.4" - }, - "engines": { - "node": ">=7.0.0" - } - }, - "node_modules/ts-loader/node_modules/color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "node_modules/ts-loader/node_modules/source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true, - "engines": { - "node": ">= 8" - } - }, "node_modules/tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -9220,6 +7717,7 @@ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, + "peer": true, "dependencies": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -9239,6 +7737,7 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", "dev": true, + "peer": true, "dependencies": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.0", @@ -9281,99 +7780,12 @@ } } }, - "node_modules/webpack-cli": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", - "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", - "dev": true, - "dependencies": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^2.1.1", - "@webpack-cli/info": "^2.0.2", - "@webpack-cli/serve": "^2.0.5", - "colorette": "^2.0.14", - "commander": "^10.0.1", - "cross-spawn": "^7.0.3", - "envinfo": "^7.7.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^3.1.1", - "rechoir": "^0.8.0", - "webpack-merge": "^5.7.3" - }, - "bin": { - "webpack-cli": "bin/cli.js" - }, - "engines": { - "node": ">=14.15.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependencies": { - "webpack": "5.x.x" - }, - "peerDependenciesMeta": { - "@webpack-cli/generators": { - "optional": true - }, - "webpack-bundle-analyzer": { - "optional": true - }, - "webpack-dev-server": { - "optional": true - } - } - }, - "node_modules/webpack-cli/node_modules/commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true, - "engines": { - "node": ">=14" - } - }, - "node_modules/webpack-cli/node_modules/interpret": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", - "dev": true, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack-cli/node_modules/rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", - "dev": true, - "dependencies": { - "resolve": "^1.20.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "node_modules/webpack-merge": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", - "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", - "dev": true, - "dependencies": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - }, - "engines": { - "node": ">=10.0.0" - } - }, "node_modules/webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", "dev": true, + "peer": true, "engines": { "node": ">=10.13.0" } @@ -9440,12 +7852,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, "node_modules/wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", @@ -9759,12 +8165,6 @@ "integrity": "sha512-M0qqxAcwCsIVfpFQSlGN5XjXWu8l5JDZN+fPt1LeW5SZexQTgnaEvgXAY+CeygRw0EeppWHi12JxESWiWrB0Sg==", "dev": true }, - "@discoveryjs/json-ext": { - "version": "0.5.3", - "resolved": "https://registry.npmjs.org/@discoveryjs/json-ext/-/json-ext-0.5.3.tgz", - "integrity": "sha512-Fxt+AfXgjMoin2maPIYzFZnQjAXjAL0PHscM5pRTtatFqB+vZxAM9tLp2Optnuw3QOQC40jTNeGYFOMvyf7v9g==", - "dev": true - }, "@enonic-types/core": { "version": "7.13.3", "resolved": "https://registry.npmjs.org/@enonic-types/core/-/core-7.13.3.tgz", @@ -9843,54 +8243,23 @@ "dev": true, "requires": {} }, + "@enonic/legacy-slickgrid": { + "version": "0.0.1", + "requires": {} + }, "@enonic/lib-admin-ui": { - "version": "file:.xp/dev/lib-admin-ui", + "version": "4.8.0", "requires": { - "@enonic/eslint-config": "^1.2.0", - "@swc/cli": "^0.1.62", - "@swc/core": "1.3.93", "@types/dompurify": "^3.0.3", - "@types/jquery": "^3.5.22", - "@types/jqueryui": "^1.12.18", "@types/mousetrap": "^1.6.12", - "@types/q": "^1.5.6", - "@types/semver": "^7.5.3", "@types/slickgrid": "^2.1.36", - "@types/validator": "^13.11.3", - "@typescript-eslint/eslint-plugin": "^6.8.0", - "@typescript-eslint/parser": "^6.8.0", - "autoprefixer": "^10.4.16", - "browserslist": "^4.22.1", - "browserslist-config-enonic": "^1.0.8", - "circular-dependency-plugin": "^5.2.2", - "copy-webpack-plugin": "^11.0.0", - "css-loader": "^6.8.1", - "cssnano": "^6.0.1", "dompurify": "^3.0.6", - "enonic-admin-artifacts": "^1.8.5", - "error-logger-webpack-plugin": "^1.1.1", - "eslint": "^8.51.0", "fine-uploader": "^5.16.2", - "glob": "^10.3.10", "jquery-simulate": "^1.0.2", - "jquery-ui": "^1.13.2", - "less": "^4.2.0", - "less-loader": "^11.1.3", - "mini-css-extract-plugin": "^2.7.6", "mousetrap": "^1.6.5", - "npm-run-all": "^4.1.5", - "postcss-loader": "^7.3.3", - "postcss-normalize": "^10.0.1", - "postcss-sort-media-queries": "^5.2.0", "q": "^1.5.1", "slickgrid": "^4.0.1", - "swc-loader": "^0.2.3", - "terser-webpack-plugin": "^5.3.9", - "ts-loader": "^9.5.0", - "typescript": "^5.2.2", - "validator": "^13.11.0", - "webpack": "^5.89.0", - "webpack-cli": "^5.1.4" + "validator": "^13.11.0" } }, "@enonic/tsup-plugin-manifest": { @@ -10232,6 +8601,7 @@ "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.3.tgz", "integrity": "sha512-b+fsZXeLYi9fEULmfBrhxn4IrPlINf8fiNarzTof004v3lFdntdwa9PF7vFJqm3mg7s+ScJMxXaE3Acp1irZcg==", "dev": true, + "peer": true, "requires": { "@jridgewell/gen-mapping": "^0.3.0", "@jridgewell/trace-mapping": "^0.3.9" @@ -10253,22 +8623,6 @@ "@jridgewell/sourcemap-codec": "1.4.14" } }, - "@mole-inc/bin-wrapper": { - "version": "8.0.1", - "resolved": "https://registry.npmjs.org/@mole-inc/bin-wrapper/-/bin-wrapper-8.0.1.tgz", - "integrity": "sha512-sTGoeZnjI8N4KS+sW2AN95gDBErhAguvkw/tWdCjeM8bvxpz5lqrnd0vOJABA1A+Ic3zED7PYoLP/RANLgVotA==", - "dev": true, - "requires": { - "bin-check": "^4.1.0", - "bin-version-check": "^5.0.0", - "content-disposition": "^0.5.4", - "ext-name": "^5.0.0", - "file-type": "^17.1.6", - "filenamify": "^5.0.2", - "got": "^11.8.5", - "os-filter-obj": "^2.0.0" - } - }, "@nodelib/fs.scandir": { "version": "2.1.5", "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", @@ -10302,40 +8656,6 @@ "dev": true, "optional": true }, - "@sindresorhus/is": { - "version": "4.6.0", - "resolved": "https://registry.npmjs.org/@sindresorhus/is/-/is-4.6.0.tgz", - "integrity": "sha512-t09vSN3MdfsyCHoFcTRCH/iUtG7OJ0CsjzB8cjAmKc/va/kIgeDI/TxsigdncE/4be734m0cvIYwNaV4i2XqAw==", - "dev": true - }, - "@swc/cli": { - "version": "0.1.62", - "resolved": "https://registry.npmjs.org/@swc/cli/-/cli-0.1.62.tgz", - "integrity": "sha512-kOFLjKY3XH1DWLfXL1/B5MizeNorHR8wHKEi92S/Zi9Md/AK17KSqR8MgyRJ6C1fhKHvbBCl8wboyKAFXStkYw==", - "dev": true, - "requires": { - "@mole-inc/bin-wrapper": "^8.0.1", - "commander": "^7.1.0", - "fast-glob": "^3.2.5", - "semver": "^7.3.8", - "slash": "3.0.0", - "source-map": "^0.7.3" - }, - "dependencies": { - "commander": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", - "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", - "dev": true - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true - } - } - }, "@swc/core": { "version": "1.3.93", "resolved": "https://registry.npmjs.org/@swc/core/-/core-1.3.93.tgz", @@ -10440,38 +8760,11 @@ "integrity": "sha512-myfUej5naTBWnqOCc/MdVOLVjXUXtIA+NpDrDBKJtLLg2shUjBu3cZmB/85RyitKc55+lUUyl7oRfLOvkr2hsw==", "dev": true }, - "@szmarczak/http-timer": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/@szmarczak/http-timer/-/http-timer-4.0.6.tgz", - "integrity": "sha512-4BAffykYOgO+5nzBWYwE3W90sBgLJoUPRWWcL8wlyiM8IB8ipJz3UMJ9KXQd1RKQXpKp8Tutn80HZtWsu2u76w==", - "dev": true, - "requires": { - "defer-to-connect": "^2.0.0" - } - }, - "@tokenizer/token": { - "version": "0.3.0", - "resolved": "https://registry.npmjs.org/@tokenizer/token/-/token-0.3.0.tgz", - "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", - "dev": true - }, - "@trysound/sax": { - "version": "0.2.0", - "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", - "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", - "dev": true - }, - "@types/cacheable-request": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", - "integrity": "sha512-IQ3EbTzGxIigb1I3qPZc1rWJnH0BmSKv5QYTalEwweFvyBDLSAe24zP0le/hyi7ecGfZVlIVAg4BZqb8WBwKqw==", - "dev": true, - "requires": { - "@types/http-cache-semantics": "*", - "@types/keyv": "^3.1.4", - "@types/node": "*", - "@types/responselike": "^1.0.0" - } + "@trysound/sax": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/@trysound/sax/-/sax-0.2.0.tgz", + "integrity": "sha512-L7z9BgrNEcYyUYtF+HaEfiS5ebkh9jXqbszz7pC0hRBPaatV0XjSD3+eHrpqFemQfgwiFF0QPIarnIihIDn7OA==", + "dev": true }, "@types/dompurify": { "version": "3.0.3", @@ -10486,6 +8779,7 @@ "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.4.1.tgz", "integrity": "sha512-GE44+DNEyxxh2Kc6ro/VkIj+9ma0pO0bwv9+uHSyBrikYOHr8zYcdPvnBOp1aw8s+CjRvuSx7CyWqRrNFQ59mA==", "dev": true, + "peer": true, "requires": { "@types/estree": "*", "@types/json-schema": "*" @@ -10496,6 +8790,7 @@ "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.3.tgz", "integrity": "sha512-PB3ldyrcnAicT35TWPs5IcwKD8S333HMaa2VVv4+wdvebJkjWuW/xESoB8IwRcog8HYVYamb1g/R31Qv5Bx03g==", "dev": true, + "peer": true, "requires": { "@types/eslint": "*", "@types/estree": "*" @@ -10505,7 +8800,8 @@ "version": "1.0.0", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.0.tgz", "integrity": "sha512-WulqXMDUTYAXCjZnk6JtIHPigp55cVtDgDrO2gHRwhyJto21+1zbVCtOYB2L1F9w4qCQ0rOGWBnBe0FNTiEJIQ==", - "dev": true + "dev": true, + "peer": true }, "@types/hasher": { "version": "0.0.33", @@ -10516,12 +8812,6 @@ "@types/signals": "*" } }, - "@types/http-cache-semantics": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/@types/http-cache-semantics/-/http-cache-semantics-4.0.1.tgz", - "integrity": "sha512-SZs7ekbP8CN0txVG2xVRH6EgKmEm31BOxA07vkFaETzZz1xh+cbt8BcI0slpymvwhx5dlFnQG2rTlPVQn+iRPQ==", - "dev": true - }, "@types/jquery": { "version": "3.5.22", "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.22.tgz", @@ -10530,30 +8820,12 @@ "@types/sizzle": "*" } }, - "@types/jqueryui": { - "version": "1.12.18", - "resolved": "https://registry.npmjs.org/@types/jqueryui/-/jqueryui-1.12.18.tgz", - "integrity": "sha512-crlmH8kFzIiU+4aBFgvYUjykSaOTP5RDw7NqkFkcSNWFAF/SMPrr7sY1uNXDEhite/2pEwUoZlufQoy87A22LA==", - "dev": true, - "requires": { - "@types/jquery": "*" - } - }, "@types/json-schema": { "version": "7.0.12", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.12.tgz", "integrity": "sha512-Hr5Jfhc9eYOQNPYO5WLDq/n4jqijdHNlDXjuAQkkt+mWdQR+XJToOHrsD4cPaMXpn6KO7y2+wM8AZEs8VpBLVA==", "dev": true }, - "@types/keyv": { - "version": "3.1.4", - "resolved": "https://registry.npmjs.org/@types/keyv/-/keyv-3.1.4.tgz", - "integrity": "sha512-BQ5aZNSCpj7D6K2ksrRCTmKRLEpnPvWDiLPfoGyhZ++8YtiK9d/3DBKPJgry359X/P1PfruyYwvnvwFjuEiEIg==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "@types/mousetrap": { "version": "1.6.12", "resolved": "https://registry.npmjs.org/@types/mousetrap/-/mousetrap-1.6.12.tgz", @@ -10572,7 +8844,8 @@ "version": "17.0.1", "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.1.tgz", "integrity": "sha512-NXKvBVUzIbs6ylBwmOwHFkZS2EXCcjnqr8ZCRNaXBkHAf+3mn/rPcJxwrzuc6movh8fxQAsUUfYklJ/EG+hZqQ==", - "dev": true + "dev": true, + "peer": true }, "@types/owasp-password-strength-test": { "version": "1.3.0", @@ -10586,15 +8859,6 @@ "integrity": "sha512-IKjZ8RjTSwD4/YG+2gtj7BPFRB/lNbWKTiSj3M7U/TD2B7HfYCxvp2Zz6xA2WIY7pAuL1QOUPw8gQRbUrrq4fQ==", "dev": true }, - "@types/responselike": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/@types/responselike/-/responselike-1.0.0.tgz", - "integrity": "sha512-85Y2BjiufFzaMIlvJDvTTB8Fxl2xfLo4HgmHzVBz08w4wDePCTjYw66PdrolO0kzli3yam/YCgRufyo1DdQVTA==", - "dev": true, - "requires": { - "@types/node": "*" - } - }, "@types/semver": { "version": "7.5.3", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.3.tgz", @@ -10625,12 +8889,6 @@ "resolved": "https://registry.npmjs.org/@types/trusted-types/-/trusted-types-2.0.0.tgz", "integrity": "sha512-I8MnZqNXsOLHsU111oHbn3khtvKMi5Bn4qVFsIWSJcCP1KKDiXX5AEw8UPk0nSopeC+Hvxt6yAy1/a5PailFqg==" }, - "@types/validator": { - "version": "13.11.3", - "resolved": "https://registry.npmjs.org/@types/validator/-/validator-13.11.3.tgz", - "integrity": "sha512-jxjhh33aTYDHnrV1vZ3AvWQHfrGx2f5UxKjaP13l5q04fG+/hCKKm0MfodIoCqxevhbcfBb6ZjynyHuQ/jueGQ==", - "dev": true - }, "@typescript-eslint/eslint-plugin": { "version": "6.8.0", "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.8.0.tgz", @@ -10804,6 +9062,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.11.5.tgz", "integrity": "sha512-LHY/GSAZZRpsNQH+/oHqhRQ5FT7eoULcBqgfyTB5nQHogFnK3/7QoN7dLnwSE/JkUAF0SrRuclT7ODqMFtWxxQ==", "dev": true, + "peer": true, "requires": { "@webassemblyjs/helper-numbers": "1.11.5", "@webassemblyjs/helper-wasm-bytecode": "1.11.5" @@ -10813,25 +9072,29 @@ "version": "1.11.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.5.tgz", "integrity": "sha512-1j1zTIC5EZOtCplMBG/IEwLtUojtwFVwdyVMbL/hwWqbzlQoJsWCOavrdnLkemwNoC/EOwtUFch3fuo+cbcXYQ==", - "dev": true + "dev": true, + "peer": true }, "@webassemblyjs/helper-api-error": { "version": "1.11.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.5.tgz", "integrity": "sha512-L65bDPmfpY0+yFrsgz8b6LhXmbbs38OnwDCf6NpnMUYqa+ENfE5Dq9E42ny0qz/PdR0LJyq/T5YijPnU8AXEpA==", - "dev": true + "dev": true, + "peer": true }, "@webassemblyjs/helper-buffer": { "version": "1.11.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.11.5.tgz", "integrity": "sha512-fDKo1gstwFFSfacIeH5KfwzjykIE6ldh1iH9Y/8YkAZrhmu4TctqYjSh7t0K2VyDSXOZJ1MLhht/k9IvYGcIxg==", - "dev": true + "dev": true, + "peer": true }, "@webassemblyjs/helper-numbers": { "version": "1.11.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.5.tgz", "integrity": "sha512-DhykHXM0ZABqfIGYNv93A5KKDw/+ywBFnuWybZZWcuzWHfbp21wUfRkbtz7dMGwGgT4iXjWuhRMA2Mzod6W4WA==", "dev": true, + "peer": true, "requires": { "@webassemblyjs/floating-point-hex-parser": "1.11.5", "@webassemblyjs/helper-api-error": "1.11.5", @@ -10842,13 +9105,15 @@ "version": "1.11.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.5.tgz", "integrity": "sha512-oC4Qa0bNcqnjAowFn7MPCETQgDYytpsfvz4ujZz63Zu/a/v71HeCAAmZsgZ3YVKec3zSPYytG3/PrRCqbtcAvA==", - "dev": true + "dev": true, + "peer": true }, "@webassemblyjs/helper-wasm-section": { "version": "1.11.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.11.5.tgz", "integrity": "sha512-uEoThA1LN2NA+K3B9wDo3yKlBfVtC6rh0i4/6hvbz071E8gTNZD/pT0MsBf7MeD6KbApMSkaAK0XeKyOZC7CIA==", "dev": true, + "peer": true, "requires": { "@webassemblyjs/ast": "1.11.5", "@webassemblyjs/helper-buffer": "1.11.5", @@ -10861,6 +9126,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.5.tgz", "integrity": "sha512-37aGq6qVL8A8oPbPrSGMBcp38YZFXcHfiROflJn9jxSdSMMM5dS5P/9e2/TpaJuhE+wFrbukN2WI6Hw9MH5acg==", "dev": true, + "peer": true, "requires": { "@xtuc/ieee754": "^1.2.0" } @@ -10870,6 +9136,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.5.tgz", "integrity": "sha512-ajqrRSXaTJoPW+xmkfYN6l8VIeNnR4vBOTQO9HzR7IygoCcKWkICbKFbVTNMjMgMREqXEr0+2M6zukzM47ZUfQ==", "dev": true, + "peer": true, "requires": { "@xtuc/long": "4.2.2" } @@ -10878,13 +9145,15 @@ "version": "1.11.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.5.tgz", "integrity": "sha512-WiOhulHKTZU5UPlRl53gHR8OxdGsSOxqfpqWeA2FmcwBMaoEdz6b2x2si3IwC9/fSPLfe8pBMRTHVMk5nlwnFQ==", - "dev": true + "dev": true, + "peer": true }, "@webassemblyjs/wasm-edit": { "version": "1.11.5", "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.11.5.tgz", "integrity": "sha512-C0p9D2fAu3Twwqvygvf42iGCQ4av8MFBLiTb+08SZ4cEdwzWx9QeAHDo1E2k+9s/0w1DM40oflJOpkZ8jW4HCQ==", "dev": true, + "peer": true, "requires": { "@webassemblyjs/ast": "1.11.5", "@webassemblyjs/helper-buffer": "1.11.5", @@ -10901,6 +9170,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.11.5.tgz", "integrity": "sha512-14vteRlRjxLK9eSyYFvw1K8Vv+iPdZU0Aebk3j6oB8TQiQYuO6hj9s4d7qf6f2HJr2khzvNldAFG13CgdkAIfA==", "dev": true, + "peer": true, "requires": { "@webassemblyjs/ast": "1.11.5", "@webassemblyjs/helper-wasm-bytecode": "1.11.5", @@ -10914,6 +9184,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.11.5.tgz", "integrity": "sha512-tcKwlIXstBQgbKy1MlbDMlXaxpucn42eb17H29rawYLxm5+MsEmgPzeCP8B1Cl69hCice8LeKgZpRUAPtqYPgw==", "dev": true, + "peer": true, "requires": { "@webassemblyjs/ast": "1.11.5", "@webassemblyjs/helper-buffer": "1.11.5", @@ -10926,6 +9197,7 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.11.5.tgz", "integrity": "sha512-SVXUIwsLQlc8srSD7jejsfTU83g7pIGr2YYNb9oHdtldSxaOhvA5xwvIiWIfcX8PlSakgqMXsLpLfbbJ4cBYew==", "dev": true, + "peer": true, "requires": { "@webassemblyjs/ast": "1.11.5", "@webassemblyjs/helper-api-error": "1.11.5", @@ -10940,43 +9212,25 @@ "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.11.5.tgz", "integrity": "sha512-f7Pq3wvg3GSPUPzR0F6bmI89Hdb+u9WXrSKc4v+N0aV0q6r42WoF92Jp2jEorBEBRoRNXgjp53nBniDXcqZYPA==", "dev": true, + "peer": true, "requires": { "@webassemblyjs/ast": "1.11.5", "@xtuc/long": "4.2.2" } }, - "@webpack-cli/configtest": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/@webpack-cli/configtest/-/configtest-2.1.1.tgz", - "integrity": "sha512-wy0mglZpDSiSS0XHrVR+BAdId2+yxPSoJW8fsna3ZpYSlufjvxnP4YbKTCBZnNIcGN4r6ZPXV55X4mYExOfLmw==", - "dev": true, - "requires": {} - }, - "@webpack-cli/info": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/@webpack-cli/info/-/info-2.0.2.tgz", - "integrity": "sha512-zLHQdI/Qs1UyT5UBdWNqsARasIA+AaF8t+4u2aS2nEpBQh2mWIVb8qAklq0eUENnC5mOItrIB4LiS9xMtph18A==", - "dev": true, - "requires": {} - }, - "@webpack-cli/serve": { - "version": "2.0.5", - "resolved": "https://registry.npmjs.org/@webpack-cli/serve/-/serve-2.0.5.tgz", - "integrity": "sha512-lqaoKnRYBdo1UgDX8uF24AfGMifWK19TxPmM5FHc2vAGxrJ/qtyUyFBWoY1tISZdelsQ5fBcOusifo5o5wSJxQ==", - "dev": true, - "requires": {} - }, "@xtuc/ieee754": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/@xtuc/ieee754/-/ieee754-1.2.0.tgz", "integrity": "sha512-DX8nKgqcGwsc0eJSqYt5lwP4DH5FlHnmuWWBRy7X0NcaGR0ZtuyeESgMwTYVEtxmsNGY+qit4QYT/MIYTOTPeA==", - "dev": true + "dev": true, + "peer": true }, "@xtuc/long": { "version": "4.2.2", "resolved": "https://registry.npmjs.org/@xtuc/long/-/long-4.2.2.tgz", "integrity": "sha512-NuHqBY1PB/D8xU6s/thBgOAiAP7HOYDQ32+BFZILJ8ivkUkAHQnWfn6WhL79Owj1qmUnoN/YPhktdIoucipkAQ==", - "dev": true + "dev": true, + "peer": true }, "abab": { "version": "2.0.6", @@ -10995,6 +9249,7 @@ "resolved": "https://registry.npmjs.org/acorn-import-assertions/-/acorn-import-assertions-1.9.0.tgz", "integrity": "sha512-cmMwop9x+8KFhxvKrKfPYmN6/pKTYYHBqLa0DfvVZcKMJWNyWLnaqND7dx/qn66R7ewM1UX5XMaDVP5wlVTaVA==", "dev": true, + "peer": true, "requires": {} }, "acorn-jsx": { @@ -11016,40 +9271,12 @@ "uri-js": "^4.2.2" } }, - "ajv-formats": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/ajv-formats/-/ajv-formats-2.1.1.tgz", - "integrity": "sha512-Wx0Kx52hxE7C18hkMEggYlEifqWZtYaRgouJor+WMdPnQyEK13vgEWyVNup7SoeeoLMsr4kf5h6dOW11I15MUA==", - "dev": true, - "requires": { - "ajv": "^8.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - } - } - }, "ajv-keywords": { "version": "3.5.2", "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-3.5.2.tgz", "integrity": "sha512-5p6WTN0DdTGVQk6VjcEju19IgaHudalcfabD7yhDGeA6bcQnmL+CpveLJq/3hvfwd1aof6L386Ougkx6RfyMIQ==", - "dev": true + "dev": true, + "peer": true }, "ansi-regex": { "version": "5.0.1", @@ -11082,12 +9309,6 @@ "picomatch": "^2.0.4" } }, - "arch": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/arch/-/arch-2.2.0.tgz", - "integrity": "sha512-Of/R0wqp83cgHozfIYLbBMnej79U/SVGOOyuB3VVFv1NRM/PSFMK12x9KVtiYzJqmnU5WR2qp0Z5rHb7sWGnFQ==", - "dev": true - }, "argparse": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", @@ -11132,77 +9353,6 @@ "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", "dev": true }, - "bin-check": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/bin-check/-/bin-check-4.1.0.tgz", - "integrity": "sha512-b6weQyEUKsDGFlACWSIOfveEnImkJyK/FGW6FAG42loyoquvjdtOIqO6yBFzHyqyVVhNgNkQxxx09SFLK28YnA==", - "dev": true, - "requires": { - "execa": "^0.7.0", - "executable": "^4.1.0" - } - }, - "bin-version": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/bin-version/-/bin-version-6.0.0.tgz", - "integrity": "sha512-nk5wEsP4RiKjG+vF+uG8lFsEn4d7Y6FVDamzzftSunXOoOcOOkzcWdKVlGgFFwlUQCj63SgnUkLLGF8v7lufhw==", - "dev": true, - "requires": { - "execa": "^5.0.0", - "find-versions": "^5.0.0" - }, - "dependencies": { - "execa": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", - "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", - "dev": true, - "requires": { - "cross-spawn": "^7.0.3", - "get-stream": "^6.0.0", - "human-signals": "^2.1.0", - "is-stream": "^2.0.0", - "merge-stream": "^2.0.0", - "npm-run-path": "^4.0.1", - "onetime": "^5.1.2", - "signal-exit": "^3.0.3", - "strip-final-newline": "^2.0.0" - } - }, - "get-stream": { - "version": "6.0.1", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", - "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", - "dev": true - }, - "is-stream": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", - "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", - "dev": true - }, - "npm-run-path": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", - "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", - "dev": true, - "requires": { - "path-key": "^3.0.0" - } - } - } - }, - "bin-version-check": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/bin-version-check/-/bin-version-check-5.0.0.tgz", - "integrity": "sha512-Q3FMQnS5eZmrBGqmDXLs4dbAn/f+52voP6ykJYmweSA60t6DyH4UTSwZhtbK5UH+LBoWvDljILUQMLRUtsynsA==", - "dev": true, - "requires": { - "bin-version": "^6.0.0", - "semver": "^7.3.5", - "semver-truncate": "^2.0.0" - } - }, "binary-extensions": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", @@ -11266,7 +9416,8 @@ "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", - "dev": true + "dev": true, + "peer": true }, "bundle-require": { "version": "4.0.2", @@ -11283,38 +9434,6 @@ "integrity": "sha512-b6Ilus+c3RrdDk+JhLKUAQfzzgLEPy6wcXqS7f/xe1EETvsDP6GORG7SFuOs6cID5YkqchW/LXZbX5bc8j7ZcQ==", "dev": true }, - "cacheable-lookup": { - "version": "5.0.4", - "resolved": "https://registry.npmjs.org/cacheable-lookup/-/cacheable-lookup-5.0.4.tgz", - "integrity": "sha512-2/kNscPhpcxrOigMZzbiWF7dz8ilhb/nIHU3EyZiXWXpeq/au8qJ8VhdftMkty3n7Gj6HIGalQG8oiBNB3AJgA==", - "dev": true - }, - "cacheable-request": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/cacheable-request/-/cacheable-request-7.0.2.tgz", - "integrity": "sha512-pouW8/FmiPQbuGpkXQ9BAPv/Mo5xDGANgSNXzTzJ8DrKGuXOssM4wIQRjfanNRh3Yu5cfYPvcorqbhg2KIJtew==", - "dev": true, - "requires": { - "clone-response": "^1.0.2", - "get-stream": "^5.1.0", - "http-cache-semantics": "^4.0.0", - "keyv": "^4.0.0", - "lowercase-keys": "^2.0.0", - "normalize-url": "^6.0.1", - "responselike": "^2.0.0" - }, - "dependencies": { - "get-stream": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-5.2.0.tgz", - "integrity": "sha512-nBF+F1rAZVCu/p7rjzgA+Yb4lfYXrpl7a6VmJrU8wF9I1CKvP/QwPNZHnOlwbTkY6dvtFIzFMSyQXbLoTQPRpA==", - "dev": true, - "requires": { - "pump": "^3.0.0" - } - } - } - }, "call-bind": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", @@ -11396,13 +9515,8 @@ "version": "1.0.3", "resolved": "https://registry.npmjs.org/chrome-trace-event/-/chrome-trace-event-1.0.3.tgz", "integrity": "sha512-p3KULyQg4S7NIHixdwbGX+nFHkoBiA4YQmyWtjb8XngSKV124nJmRysgAeujbUVb15vh+RvFUfCPqU7rXk+hZg==", - "dev": true - }, - "circular-dependency-plugin": { - "version": "5.2.2", - "resolved": "https://registry.npmjs.org/circular-dependency-plugin/-/circular-dependency-plugin-5.2.2.tgz", - "integrity": "sha512-g38K9Cm5WRwlaH6g03B9OEz/0qRizI+2I7n+Gz+L5DxXJAPAiWQvwlYNm1V1jkdpUv95bOe/ASm2vfi/G560jQ==", - "dev": true + "dev": true, + "peer": true }, "cliui": { "version": "8.0.1", @@ -11469,26 +9583,6 @@ } } }, - "clone-deep": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/clone-deep/-/clone-deep-4.0.1.tgz", - "integrity": "sha512-neHB9xuzh/wk0dIHweyAXv2aPGZIVk3pLMe+/RNzINf17fe0OG96QroktYAUm7SM1PBnzTabaLboqqxDyMU+SQ==", - "dev": true, - "requires": { - "is-plain-object": "^2.0.4", - "kind-of": "^6.0.2", - "shallow-clone": "^3.0.0" - } - }, - "clone-response": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/clone-response/-/clone-response-1.0.3.tgz", - "integrity": "sha512-ROoL94jJH2dUVML2Y/5PEDNaSHgeOdSDicUyS7izcF63G6sTc/FTjLub4b8Il9S8S0beOfYt0TaA5qvFK+w0wA==", - "dev": true, - "requires": { - "mimic-response": "^1.0.0" - } - }, "color-convert": { "version": "1.9.3", "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", @@ -11520,7 +9614,8 @@ "version": "2.20.3", "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==", - "dev": true + "dev": true, + "peer": true }, "concat-map": { "version": "0.0.1", @@ -11580,125 +9675,42 @@ "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "has-flag": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", - "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true - }, - "supports-color": { - "version": "8.1.1", - "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", - "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", - "dev": true, - "requires": { - "has-flag": "^4.0.0" - } - } - } - }, - "content-disposition": { - "version": "0.5.4", - "resolved": "https://registry.npmjs.org/content-disposition/-/content-disposition-0.5.4.tgz", - "integrity": "sha512-FveZTNuGw04cxlAiWbzi6zTAL/lhehaWbTtgluJh4/E95DqMwTmha3KZN1aAWA8cFIhHzMZUvLevkw5Rqk+tSQ==", - "dev": true, - "requires": { - "safe-buffer": "5.2.1" - } - }, - "copy-anything": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", - "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", - "dev": true, - "requires": { - "is-what": "^3.14.1" - } - }, - "copy-webpack-plugin": { - "version": "11.0.0", - "resolved": "https://registry.npmjs.org/copy-webpack-plugin/-/copy-webpack-plugin-11.0.0.tgz", - "integrity": "sha512-fX2MWpamkW0hZxMEg0+mYnA40LTosOSa5TqZ9GYIBzyJa9C3QUaMPSE2xAi/buNr8u89SfD9wHSQVBzrRa/SOQ==", - "dev": true, - "requires": { - "fast-glob": "^3.2.11", - "glob-parent": "^6.0.1", - "globby": "^13.1.1", - "normalize-path": "^3.0.0", - "schema-utils": "^4.0.0", - "serialize-javascript": "^6.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.12.0", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.12.0.tgz", - "integrity": "sha512-sRu1kpcO9yLtYxBKvqfTeh9KzZEwO3STyX1HT+4CaDzC6HpTGYhIhPIzj9XuKU7KYDwnaeh5hcOwjy1QuJzBPA==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "globby": { - "version": "13.1.3", - "resolved": "https://registry.npmjs.org/globby/-/globby-13.1.3.tgz", - "integrity": "sha512-8krCNHXvlCgHDpegPzleMq07yMYTO2sXKASmZmquEYWEmCx6J5UTRbp5RwMJkTJGtcQ44YpiUYUiN0b9mzy8Bw==", - "dev": true, - "requires": { - "dir-glob": "^3.0.1", - "fast-glob": "^3.2.11", - "ignore": "^5.2.0", - "merge2": "^1.4.1", - "slash": "^4.0.0" + "requires": { + "color-name": "~1.1.4" } }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", + "color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", "dev": true }, - "schema-utils": { + "has-flag": { "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" + "has-flag": "^4.0.0" } - }, - "slash": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/slash/-/slash-4.0.0.tgz", - "integrity": "sha512-3dOsAHXXUkQTpOYcoAxLIorMTp4gIQr5IW3iVb7A7lFIp0VHhnynm9izx6TssdrIcVIESAlVjtnO2K8bg+Coew==", - "dev": true } } }, + "copy-anything": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/copy-anything/-/copy-anything-2.0.6.tgz", + "integrity": "sha512-1j20GZTsvKNkc4BY3NpMOM8tt///wY3FpIzozTOFO2ffuZcV61nojHXVKIy3WM+7ADCy5FVhdZYHYDdgTU0yJw==", + "dev": true, + "requires": { + "is-what": "^3.14.1" + } + }, "cosmiconfig": { "version": "8.2.0", "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-8.2.0.tgz", @@ -11886,35 +9898,12 @@ "ms": "^2.1.1" } }, - "decompress-response": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/decompress-response/-/decompress-response-6.0.0.tgz", - "integrity": "sha512-aW35yZM6Bb/4oJlZncMH2LCoZtJXTRxES17vE3hoRiowU2kWHaJKFkSBDnDR+cm9J+9QhXmREyIfv0pji9ejCQ==", - "dev": true, - "requires": { - "mimic-response": "^3.1.0" - }, - "dependencies": { - "mimic-response": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-3.1.0.tgz", - "integrity": "sha512-z0yWI+4FDrrweS8Zmt4Ej5HdJmky15+L2e6Wgn3+iK5fWzb6T3fhNFq2+MeTRb064c6Wr4N/wv0DzQTjNzHNGQ==", - "dev": true - } - } - }, "deep-is": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", "dev": true }, - "defer-to-connect": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/defer-to-connect/-/defer-to-connect-2.0.1.tgz", - "integrity": "sha512-4tvttepXG1VaYGrRibk5EwJd1t4udunSOVMdLSAL6mId1ix438oPwPZMALY41FCijukO1L0twNcGsdzS7dHgDg==", - "dev": true - }, "define-properties": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.1.4.tgz", @@ -12009,20 +9998,12 @@ "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", "dev": true }, - "end-of-stream": { - "version": "1.4.4", - "resolved": "https://registry.npmjs.org/end-of-stream/-/end-of-stream-1.4.4.tgz", - "integrity": "sha512-+uw1inIHVPQoaVuHzRyXd21icM+cnt4CzD5rW+NC1wjOUSTOs+Te7FOv7AhN7vS9x/oIyhLP5PR1H+phQAHu5Q==", - "dev": true, - "requires": { - "once": "^1.4.0" - } - }, "enhanced-resolve": { "version": "5.15.0", "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.15.0.tgz", "integrity": "sha512-LXYT42KJ7lpIKECr2mAXIaMldcNCh/7E0KBKOu4KSfkHmP+mZmSs+8V5gBAqisWBy0OO4W5Oyys0GO1Y8KtdKg==", "dev": true, + "peer": true, "requires": { "graceful-fs": "^4.2.4", "tapable": "^2.2.0" @@ -12040,12 +10021,6 @@ "integrity": "sha512-oYp7156SP8LkeGD0GF85ad1X9Ai79WtRsZ2gxJqtBuzH+98YUV6jkHEKlZkMbcrjJjIVJNIDP/3WL9wQkoPbWA==", "dev": true }, - "envinfo": { - "version": "7.8.1", - "resolved": "https://registry.npmjs.org/envinfo/-/envinfo-7.8.1.tgz", - "integrity": "sha512-/o+BXHmB7ocbHEAs6F2EnG0ogybVVUdkRunTT2glZU9XAaGmhqskrvKwqXuDfNjEO0LZKWdejEEpnq8aM0tOaw==", - "dev": true - }, "errno": { "version": "0.1.8", "resolved": "https://registry.npmjs.org/errno/-/errno-0.1.8.tgz", @@ -12065,12 +10040,6 @@ "is-arrayish": "^0.2.1" } }, - "error-logger-webpack-plugin": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/error-logger-webpack-plugin/-/error-logger-webpack-plugin-1.1.1.tgz", - "integrity": "sha512-77h8dMaOuwd/KHUaHbdr7ywnfuGJ4UtOkOZUojqa/ZMshqF3dzMtoiH3ZuNhFovS2t1xqYClsXTsK0t13tYSEQ==", - "dev": true - }, "es-abstract": { "version": "1.21.1", "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.21.1.tgz", @@ -12116,7 +10085,8 @@ "version": "1.2.1", "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.2.1.tgz", "integrity": "sha512-9978wrXM50Y4rTMmW5kXIC09ZdXQZqkE4mxhwkd8VbzsGkXGPgV4zWuqQJgCEzYngdo2dYDa0l8xhX4fkSwJSg==", - "dev": true + "dev": true, + "peer": true }, "es-set-tostringtag": { "version": "2.0.1", @@ -12352,6 +10322,7 @@ "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", "dev": true, + "peer": true, "requires": { "esrecurse": "^4.3.0", "estraverse": "^4.1.1" @@ -12412,7 +10383,8 @@ "version": "4.3.0", "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true + "dev": true, + "peer": true }, "esutils": { "version": "2.0.3", @@ -12424,111 +10396,8 @@ "version": "3.3.0", "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true - }, - "execa": { - "version": "0.7.0", - "resolved": "https://registry.npmjs.org/execa/-/execa-0.7.0.tgz", - "integrity": "sha512-RztN09XglpYI7aBBrJCPW95jEH7YF1UEPOoX9yDhUTPdp7mK+CQvnLTuD10BNXZ3byLTu2uehZ8EcKT/4CGiFw==", - "dev": true, - "requires": { - "cross-spawn": "^5.0.1", - "get-stream": "^3.0.0", - "is-stream": "^1.1.0", - "npm-run-path": "^2.0.0", - "p-finally": "^1.0.0", - "signal-exit": "^3.0.0", - "strip-eof": "^1.0.0" - }, - "dependencies": { - "cross-spawn": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-5.1.0.tgz", - "integrity": "sha512-pTgQJ5KC0d2hcY8eyL1IzlBPYjTkyH72XRZPnLyKus2mBfNjQs3klqbJU2VILqZryAZUt9JOb3h/mWMy23/f5A==", - "dev": true, - "requires": { - "lru-cache": "^4.0.1", - "shebang-command": "^1.2.0", - "which": "^1.2.9" - } - }, - "lru-cache": { - "version": "4.1.5", - "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-4.1.5.tgz", - "integrity": "sha512-sWZlbEP2OsHNkXrMl5GYk/jKk70MBng6UU4YI/qGDYbgf6YbP4EvmqISbXCoJiRKs+1bSpFHVgQxvJ17F2li5g==", - "dev": true, - "requires": { - "pseudomap": "^1.0.2", - "yallist": "^2.1.2" - } - }, - "shebang-command": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-1.2.0.tgz", - "integrity": "sha512-EV3L1+UQWGor21OmnvojK36mhg+TyIKDh3iFBKBohr5xeXIhNBcx8oWdgkTEEQ+BEFFYdLRuqMfd5L84N1V5Vg==", - "dev": true, - "requires": { - "shebang-regex": "^1.0.0" - } - }, - "shebang-regex": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-1.0.0.tgz", - "integrity": "sha512-wpoSFAxys6b2a2wHZ1XpDSgD7N9iVjg29Ph9uV/uaP9Ex/KXlkTZTeddxDPSYQpgvzKLGJke2UU0AzoGCjNIvQ==", - "dev": true - }, - "which": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz", - "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==", - "dev": true, - "requires": { - "isexe": "^2.0.0" - } - }, - "yallist": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/yallist/-/yallist-2.1.2.tgz", - "integrity": "sha512-ncTzHV7NvsQZkYe1DW7cbDLm0YpzHmZF5r/iyP3ZnQtMiJ+pjzisCiMNI+Sj+xQF5pXhSHxSB3uDbsBTzY/c2A==", - "dev": true - } - } - }, - "executable": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/executable/-/executable-4.1.1.tgz", - "integrity": "sha512-8iA79xD3uAch729dUG8xaaBBFGaEa0wdD2VkYLFHwlqosEj/jT66AzcreRDSgV7ehnNLBW2WR5jIXwGKjVdTLg==", - "dev": true, - "requires": { - "pify": "^2.2.0" - }, - "dependencies": { - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==", - "dev": true - } - } - }, - "ext-list": { - "version": "2.2.2", - "resolved": "https://registry.npmjs.org/ext-list/-/ext-list-2.2.2.tgz", - "integrity": "sha512-u+SQgsubraE6zItfVA0tBuCBhfU9ogSRnsvygI7wht9TS510oLkBRXBsqopeUG/GBOIQyKZO9wjTqIu/sf5zFA==", - "dev": true, - "requires": { - "mime-db": "^1.28.0" - } - }, - "ext-name": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/ext-name/-/ext-name-5.0.0.tgz", - "integrity": "sha512-yblEwXAbGv1VQDmow7s38W77hzAgJAO50ztBLMcUyUBfxv1HC+LGwtiEN+Co6LtlqT/5uwVOxsD4TNIilWhwdQ==", "dev": true, - "requires": { - "ext-list": "^2.0.0", - "sort-keys-length": "^1.0.0" - } + "peer": true }, "fast-deep-equal": { "version": "3.1.3", @@ -12572,12 +10441,6 @@ "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", "dev": true }, - "fastest-levenshtein": { - "version": "1.0.12", - "resolved": "https://registry.npmjs.org/fastest-levenshtein/-/fastest-levenshtein-1.0.12.tgz", - "integrity": "sha512-On2N+BpYJ15xIC974QNVuYGMOlEVt4s0EOI3wwMqOmK1fdDY+FN/zltPV8vosq4ad4c/gJ1KHScUn/6AWIgiow==", - "dev": true - }, "fastq": { "version": "1.11.0", "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.11.0.tgz", @@ -12596,34 +10459,6 @@ "flat-cache": "^3.0.4" } }, - "file-type": { - "version": "17.1.6", - "resolved": "https://registry.npmjs.org/file-type/-/file-type-17.1.6.tgz", - "integrity": "sha512-hlDw5Ev+9e883s0pwUsuuYNu4tD7GgpUnOvykjv1Gya0ZIjuKumthDRua90VUn6/nlRKAjcxLUnHNTIUWwWIiw==", - "dev": true, - "requires": { - "readable-web-to-node-stream": "^3.0.2", - "strtok3": "^7.0.0-alpha.9", - "token-types": "^5.0.0-alpha.2" - } - }, - "filename-reserved-regex": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/filename-reserved-regex/-/filename-reserved-regex-3.0.0.tgz", - "integrity": "sha512-hn4cQfU6GOT/7cFHXBqeBg2TbrMBgdD0kcjLhvSQYYwm3s4B6cjvBfb7nBALJLAXqmU5xajSa7X2NnUud/VCdw==", - "dev": true - }, - "filenamify": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/filenamify/-/filenamify-5.1.1.tgz", - "integrity": "sha512-M45CbrJLGACfrPOkrTp3j2EcO9OBkKUYME0eiqOCa7i2poaklU0jhlIaMlr8ijLorT0uLAzrn3qXOp5684CkfA==", - "dev": true, - "requires": { - "filename-reserved-regex": "^3.0.0", - "strip-outer": "^2.0.0", - "trim-repeated": "^2.0.0" - } - }, "fill-range": { "version": "7.0.1", "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", @@ -12633,25 +10468,6 @@ "to-regex-range": "^5.0.1" } }, - "find-up": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", - "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", - "dev": true, - "requires": { - "locate-path": "^5.0.0", - "path-exists": "^4.0.0" - } - }, - "find-versions": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/find-versions/-/find-versions-5.1.0.tgz", - "integrity": "sha512-+iwzCJ7C5v5KgcBuueqVoNiHVoQpwiUK5XFLjf0affFTep+Wcw93tPvmb8tqujDNmzhBDPddnWV/qgWSXgq+Hg==", - "dev": true, - "requires": { - "semver-regex": "^4.0.5" - } - }, "fine-uploader": { "version": "5.16.2", "resolved": "https://registry.npmjs.org/fine-uploader/-/fine-uploader-5.16.2.tgz", @@ -12777,12 +10593,6 @@ "integrity": "sha512-dVKBjfWisLAicarI2Sf+JuBE/DghV4UzNAVe9yhEJuzeREd3JhOTE9cUaJTeSa77fsbQUK3pcOpJfM59+VKZaA==", "dev": true }, - "get-stream": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-3.0.0.tgz", - "integrity": "sha512-GlhdIUuVakc8SJ6kK0zAFbiGzRFzNnY4jUuEbV9UROo4Y+0Ny4fjvcZFVTeDA4odpFyOQzaw6hXukJSq/f28sQ==", - "dev": true - }, "get-symbol-description": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.0.tgz", @@ -12839,7 +10649,8 @@ "version": "0.4.1", "resolved": "https://registry.npmjs.org/glob-to-regexp/-/glob-to-regexp-0.4.1.tgz", "integrity": "sha512-lkX1HJXwyMcprw/5YUZc2s7DrpAiHB21/V+E1rHUrVNokkvB6bqMzT0VfV6/86ZNabt1k14YOIaT7nDvOX3Iiw==", - "dev": true + "dev": true, + "peer": true }, "globals": { "version": "13.21.0", @@ -12882,25 +10693,6 @@ "get-intrinsic": "^1.1.3" } }, - "got": { - "version": "11.8.6", - "resolved": "https://registry.npmjs.org/got/-/got-11.8.6.tgz", - "integrity": "sha512-6tfZ91bOr7bOXnK7PRDCGBLa1H4U080YHNaAQ2KsMGlLEzRbk44nsZF2E1IeRc3vtJHPVbKCYgdFbaGO2ljd8g==", - "dev": true, - "requires": { - "@sindresorhus/is": "^4.0.0", - "@szmarczak/http-timer": "^4.0.5", - "@types/cacheable-request": "^6.0.1", - "@types/responselike": "^1.0.0", - "cacheable-lookup": "^5.0.3", - "cacheable-request": "^7.0.2", - "decompress-response": "^6.0.0", - "http2-wrapper": "^1.0.0-beta.5.2", - "lowercase-keys": "^2.0.0", - "p-cancelable": "^2.0.0", - "responselike": "^2.0.0" - } - }, "graceful-fs": { "version": "4.2.10", "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", @@ -12978,22 +10770,6 @@ "integrity": "sha512-mxIDAb9Lsm6DoOJ7xH+5+X4y1LU/4Hi50L9C5sIswK3JzULS4bwk1FvjdBgvYR4bzT4tuUQiC15FE2f5HbLvYw==", "dev": true }, - "http-cache-semantics": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/http-cache-semantics/-/http-cache-semantics-4.1.1.tgz", - "integrity": "sha512-er295DKPVsV82j5kw1Gjt+ADA/XYHsajl82cGNQG2eyoPkvgUhX+nDIyelzhIWbbsXP39EHcI6l5tYs2FYqYXQ==", - "dev": true - }, - "http2-wrapper": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", - "integrity": "sha512-V+23sDMr12Wnz7iTcDeJr3O6AIxlnvT/bmaAAAP/Xda35C90p9599p0F1eHR/N1KILWSoWVAiOMFjBBXaXSMxg==", - "dev": true, - "requires": { - "quick-lru": "^5.1.1", - "resolve-alpn": "^1.0.0" - } - }, "human-signals": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", @@ -13045,16 +10821,6 @@ "resolve-from": "^4.0.0" } }, - "import-local": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.0.2.tgz", - "integrity": "sha512-vjL3+w0oulAVZ0hBHnxa/Nm5TAurf9YLQJDhqRZyqb+VKGOB6LU8t9H1Nr5CIo16vh9XfJTOoHwU0B71S557gA==", - "dev": true, - "requires": { - "pkg-dir": "^4.2.0", - "resolve-cwd": "^3.0.0" - } - }, "imurmurhash": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", @@ -13199,21 +10965,6 @@ "has-tostringtag": "^1.0.0" } }, - "is-plain-obj": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-1.1.0.tgz", - "integrity": "sha512-yvkRyxmFKEOQ4pNXCmJG5AEQNlXJS5LaONXo5/cLdTZdWvsZ1ioJEonLGAosKlMWE8lwUy/bJzMjcw8az73+Fg==", - "dev": true - }, - "is-plain-object": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", - "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", - "dev": true, - "requires": { - "isobject": "^3.0.1" - } - }, "is-regex": { "version": "1.1.4", "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", @@ -13233,12 +10984,6 @@ "call-bind": "^1.0.2" } }, - "is-stream": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-1.1.0.tgz", - "integrity": "sha512-uQPm8kcs47jx38atAcWTVxyltQYoPT68y9aWYdV6yWXSyW8mzSat0TL6CiWdZeCdF3KrAvpVtnHbTv4RN+rqdQ==", - "dev": true - }, "is-string": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", @@ -13291,12 +11036,6 @@ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, - "isobject": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", - "integrity": "sha1-TkMekrEalzFjaqH5yNHMvP2reN8=", - "dev": true - }, "jackspeak": { "version": "2.3.5", "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-2.3.5.tgz", @@ -13312,6 +11051,7 @@ "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.4.5.tgz", "integrity": "sha512-f2s8kEdy15cv9r7q4KkzGXvlY0JTcmCbMHZBfSQDwW77REr45IDWwd0lksDFeVHH2jJ5pqb90T77XscrjeGzzg==", "dev": true, + "peer": true, "requires": { "@types/node": "*", "merge-stream": "^2.0.0", @@ -13322,13 +11062,15 @@ "version": "4.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", - "dev": true + "dev": true, + "peer": true }, "supports-color": { "version": "8.1.1", "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", "dev": true, + "peer": true, "requires": { "has-flag": "^4.0.0" } @@ -13361,7 +11103,8 @@ "version": "1.13.2", "resolved": "https://registry.npmjs.org/jquery-ui/-/jquery-ui-1.13.2.tgz", "integrity": "sha512-wBZPnqWs5GaYJmo1Jj0k/mrSkzdQzKDwhXNtHKcBdAcKVxMM3KNYFq+iJ2i1rwiG53Z8M4mTn3Qxrm17uH1D4Q==", - "dev": true, + "optional": true, + "peer": true, "requires": { "jquery": ">=1.8.0 <4.0.0" } @@ -13389,12 +11132,6 @@ "argparse": "^2.0.1" } }, - "json-buffer": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", - "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", - "dev": true - }, "json-parse-better-errors": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/json-parse-better-errors/-/json-parse-better-errors-1.0.2.tgz", @@ -13429,21 +11166,6 @@ "universalify": "^2.0.0" } }, - "keyv": { - "version": "4.5.2", - "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.2.tgz", - "integrity": "sha512-5MHbFaKn8cNSmVW7BYnijeAVlE4cYA/SVkifVgrh7yotnfhKmjuXpDKjrABLnT0SfHWV21P8ow07OGfRrNDg8g==", - "dev": true, - "requires": { - "json-buffer": "3.0.1" - } - }, - "kind-of": { - "version": "6.0.3", - "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", - "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", - "dev": true - }, "less": { "version": "4.2.0", "resolved": "https://registry.npmjs.org/less/-/less-4.2.0.tgz", @@ -13551,16 +11273,8 @@ "version": "4.2.0", "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.2.0.tgz", "integrity": "sha512-92+huvxMvYlMzMt0iIOukcwYBFpkYJdpl2xsZ7LrlayO7E8SOv+JJUEK17B/dJIHAOLMfh2dZZ/Y18WgmGtYNw==", - "dev": true - }, - "locate-path": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", - "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", "dev": true, - "requires": { - "p-locate": "^4.1.0" - } + "peer": true }, "lodash": { "version": "4.17.21", @@ -13592,12 +11306,6 @@ "integrity": "sha512-xfBaXQd9ryd9dlSDvnvI0lvxfLJlYAZzXomUYzLKtUeOQvOP5piqAWuGtrhWeqaXK9hhoM/iyJc5AV+XfsX3HQ==", "dev": true }, - "lowercase-keys": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/lowercase-keys/-/lowercase-keys-2.0.0.tgz", - "integrity": "sha512-tqNXrS78oMOE73NMxK4EMLQsQowWf8jKooH9g7xPavRT706R6bkQJ6DY2Te7QukaZsulxa30wQ7bk0pm4XiHmA==", - "dev": true - }, "lru-cache": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-6.0.0.tgz", @@ -13669,79 +11377,25 @@ "version": "1.47.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.47.0.tgz", "integrity": "sha512-QBmA/G2y+IfeS4oktet3qRZ+P5kPhCKRXxXnQEudYqUaEioAU1/Lq2us3D/t1Jfo4hE9REQPrbB7K5sOczJVIw==", - "dev": true + "dev": true, + "peer": true }, "mime-types": { "version": "2.1.30", "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.30.tgz", - "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", - "dev": true, - "requires": { - "mime-db": "1.47.0" - } - }, - "mimic-fn": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", - "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", - "dev": true - }, - "mimic-response": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/mimic-response/-/mimic-response-1.0.1.tgz", - "integrity": "sha512-j5EctnkH7amfV/q5Hgmoal1g2QHFJRraOtmx0JpIqkxhBhI/lJSl1nMpQ45hVarwNETOoWEimndZ4QK0RHxuxQ==", - "dev": true - }, - "mini-css-extract-plugin": { - "version": "2.7.6", - "resolved": "https://registry.npmjs.org/mini-css-extract-plugin/-/mini-css-extract-plugin-2.7.6.tgz", - "integrity": "sha512-Qk7HcgaPkGG6eD77mLvZS1nmxlao3j+9PkrT9Uc7HAE1id3F41+DdBRYRYkbyfNRGzm8/YWtzhw7nVPmwhqTQw==", - "dev": true, - "requires": { - "schema-utils": "^4.0.0" - }, - "dependencies": { - "ajv": { - "version": "8.8.2", - "resolved": "https://registry.npmjs.org/ajv/-/ajv-8.8.2.tgz", - "integrity": "sha512-x9VuX+R/jcFj1DHo/fCp99esgGDWiHENrKxaCENuCxpoMCmAt/COCGVDwA7kleEpEzJjDnvh3yGoOuLu0Dtllw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.1", - "json-schema-traverse": "^1.0.0", - "require-from-string": "^2.0.2", - "uri-js": "^4.2.2" - } - }, - "ajv-keywords": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/ajv-keywords/-/ajv-keywords-5.1.0.tgz", - "integrity": "sha512-YCS/JNFAUyr5vAuhk1DWm1CBxRHW9LbJ2ozWeemrIqpbsqKjHVxYPyi5GC0rjZIT5JxJ3virVTS8wk4i/Z+krw==", - "dev": true, - "requires": { - "fast-deep-equal": "^3.1.3" - } - }, - "json-schema-traverse": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", - "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==", - "dev": true - }, - "schema-utils": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-4.0.0.tgz", - "integrity": "sha512-1edyXKgh6XnJsJSQ8mKWXnN/BVaIbFMLpouRUrXgVq7WYne5kw3MW7UPhO44uRXQSIpTSXoJbmrR2X0w9kUTyg==", - "dev": true, - "requires": { - "@types/json-schema": "^7.0.9", - "ajv": "^8.8.0", - "ajv-formats": "^2.1.1", - "ajv-keywords": "^5.0.0" - } - } + "integrity": "sha512-crmjA4bLtR8m9qLpHvgxSChT+XoSlZi8J4n/aIdn3z92e/U47Z0V/yl+Wh9W046GgFVAmoNR/fmdbZYcSSIUeg==", + "dev": true, + "peer": true, + "requires": { + "mime-db": "1.47.0" } }, + "mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true + }, "minimatch": { "version": "3.1.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", @@ -13807,7 +11461,8 @@ "version": "2.6.2", "resolved": "https://registry.npmjs.org/neo-async/-/neo-async-2.6.2.tgz", "integrity": "sha512-Yd3UES5mWCSqR+qNT93S3UoYUkqAZ9lLg8a7g9rimsWmYGK8cVToA4/sF3RrshdyV3sAGMXVUmpMYOw+dLpOuw==", - "dev": true + "dev": true, + "peer": true }, "nice-try": { "version": "1.0.5", @@ -13853,12 +11508,6 @@ "integrity": "sha512-bdok/XvKII3nUpklnV6P2hxtMNrCboOjAcyBuQnWEhO665FwrSNRxU+AqpsyvO6LgGYPspN+lu5CLtw4jPRKNA==", "dev": true }, - "normalize-url": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/normalize-url/-/normalize-url-6.1.0.tgz", - "integrity": "sha512-DlL+XwOy3NxAQ8xuC0okPgK46iuVNAK01YN7RueYBqqFeGsBjV9XmCAzAdgt+667bCl5kPh9EqKKDwnaPG1I7A==", - "dev": true - }, "npm-run-all": { "version": "4.1.5", "resolved": "https://registry.npmjs.org/npm-run-all/-/npm-run-all-4.1.5.tgz", @@ -13927,23 +11576,6 @@ } } }, - "npm-run-path": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-2.0.2.tgz", - "integrity": "sha512-lJxZYlT4DW/bRUtFh1MQIWqmLwQfAxnqWG4HhEdjMlkrJYnJn0Jrr2u3mgxqaWsdiBc76TYkTG/mhrnYTuzfHw==", - "dev": true, - "requires": { - "path-key": "^2.0.0" - }, - "dependencies": { - "path-key": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/path-key/-/path-key-2.0.1.tgz", - "integrity": "sha512-fEHGKCSmUSDPv4uoj8AlD+joPlq3peND+HRYyxFz4KPw4z926S/b8rIuFs2FYJg3BwsxJf6A9/3eIdLaYC+9Dw==", - "dev": true - } - } - }, "nth-check": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", @@ -14015,32 +11647,11 @@ "type-check": "^0.4.0" } }, - "os-filter-obj": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/os-filter-obj/-/os-filter-obj-2.0.0.tgz", - "integrity": "sha512-uksVLsqG3pVdzzPvmAHpBK0wKxYItuzZr7SziusRPoz67tGV8rL1szZ6IdeUrbqLjGDwApBtN29eEE3IqGHOjg==", - "dev": true, - "requires": { - "arch": "^2.1.0" - } - }, "owasp-password-strength-test": { "version": "1.3.0", "resolved": "https://registry.npmjs.org/owasp-password-strength-test/-/owasp-password-strength-test-1.3.0.tgz", "integrity": "sha1-T2KeQpA+j20nmyMNZXq2HljkSxI=" }, - "p-cancelable": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/p-cancelable/-/p-cancelable-2.1.1.tgz", - "integrity": "sha512-BZOr3nRQHOntUjTrH8+Lh54smKHoHyur8We1V8DSMVrl5A2malOOwuJRnKRDjSnkoeBh4at6BwEnb5I7Jl31wg==", - "dev": true - }, - "p-finally": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/p-finally/-/p-finally-1.0.0.tgz", - "integrity": "sha512-LICb2p9CB7FS+0eR1oqWnHhp0FljGLZCWBE9aix0Uye9W8LTQPwMTYVGWQWIw9RdQiDg4+epXQODwIYJtSJaow==", - "dev": true - }, "p-limit": { "version": "3.1.0", "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", @@ -14050,32 +11661,6 @@ "yocto-queue": "^0.1.0" } }, - "p-locate": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", - "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", - "dev": true, - "requires": { - "p-limit": "^2.2.0" - }, - "dependencies": { - "p-limit": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", - "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", - "dev": true, - "requires": { - "p-try": "^2.0.0" - } - } - } - }, - "p-try": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", - "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", - "dev": true - }, "parent-module": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", @@ -14159,12 +11744,6 @@ "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", "dev": true }, - "peek-readable": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/peek-readable/-/peek-readable-5.0.0.tgz", - "integrity": "sha512-YtCKvLUOvwtMGmrniQPdO7MwPjgkFBtFIrmfSbYmYuq3tKDV/mcfAhBth1+C3ru7uXIZasc/pHnb+YDYNkkj4A==", - "dev": true - }, "picocolors": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", @@ -14195,15 +11774,6 @@ "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", "dev": true }, - "pkg-dir": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", - "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", - "dev": true, - "requires": { - "find-up": "^4.0.0" - } - }, "postcss": { "version": "8.4.31", "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.31.tgz", @@ -14678,22 +12248,6 @@ "dev": true, "optional": true }, - "pseudomap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/pseudomap/-/pseudomap-1.0.2.tgz", - "integrity": "sha512-b/YwNhb8lk1Zz2+bXXpS/LK9OisiZZ1SNsSLxN1x2OXVEhW2Ckr/7mWE5vrC1ZTiJlD9g19jWszTmJsB+oEpFQ==", - "dev": true - }, - "pump": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/pump/-/pump-3.0.0.tgz", - "integrity": "sha512-LwZy+p3SFs1Pytd/jYct4wpv49HiYCqd9Rlc5ZVdk0V+8Yzv6jR5Blk3TRmPL1ft69TxP0IMZGJ+WPFU2BFhww==", - "dev": true, - "requires": { - "end-of-stream": "^1.1.0", - "once": "^1.3.1" - } - }, "punycode": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz", @@ -14711,17 +12265,12 @@ "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", "dev": true }, - "quick-lru": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", - "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==", - "dev": true - }, "randombytes": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", "dev": true, + "peer": true, "requires": { "safe-buffer": "^5.1.0" } @@ -14771,26 +12320,6 @@ } } }, - "readable-stream": { - "version": "3.6.0", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-3.6.0.tgz", - "integrity": "sha512-BViHy7LKeTz4oNnkcLJ+lVSL6vpiFeX6/d3oSH8zCW7UxP2onchk+vTGB143xuFjHS3deTgkKoXXymXqymiIdA==", - "dev": true, - "requires": { - "inherits": "^2.0.3", - "string_decoder": "^1.1.1", - "util-deprecate": "^1.0.1" - } - }, - "readable-web-to-node-stream": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/readable-web-to-node-stream/-/readable-web-to-node-stream-3.0.2.tgz", - "integrity": "sha512-ePeK6cc1EcKLEhJFt/AebMCLL+GgSKhuygrZ/GLaKZYEecIgIECf4UaUuaByiGtzckwR4ain9VzUh95T1exYGw==", - "dev": true, - "requires": { - "readable-stream": "^3.6.0" - } - }, "readdirp": { "version": "3.6.0", "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", @@ -14823,12 +12352,6 @@ "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, - "require-from-string": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/require-from-string/-/require-from-string-2.0.2.tgz", - "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", - "dev": true - }, "resolve": { "version": "1.22.1", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.1.tgz", @@ -14840,44 +12363,12 @@ "supports-preserve-symlinks-flag": "^1.0.0" } }, - "resolve-alpn": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/resolve-alpn/-/resolve-alpn-1.2.1.tgz", - "integrity": "sha512-0a1F4l73/ZFZOakJnQ3FvkJ2+gSTQWz/r2KE5OdDY0TxPm5h4GkqkWWfM47T7HsbnOtcJVEF4epCVy6u7Q3K+g==", - "dev": true - }, - "resolve-cwd": { - "version": "3.0.0", - "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", - "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", - "dev": true, - "requires": { - "resolve-from": "^5.0.0" - }, - "dependencies": { - "resolve-from": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", - "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", - "dev": true - } - } - }, "resolve-from": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", "dev": true }, - "responselike": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/responselike/-/responselike-2.0.1.tgz", - "integrity": "sha512-4gl03wn3hj1HP3yzgdI7d3lCkF95F21Pz4BPGvKHinyQzALR5CapwC8yIi0Rh58DEMQ/SguC03wFj2k0M/mHhw==", - "dev": true, - "requires": { - "lowercase-keys": "^2.0.0" - } - }, "reusify": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", @@ -14940,7 +12431,8 @@ "version": "5.2.1", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true + "dev": true, + "peer": true }, "safe-regex-test": { "version": "1.0.0", @@ -14977,6 +12469,7 @@ "resolved": "https://registry.npmjs.org/schema-utils/-/schema-utils-3.3.0.tgz", "integrity": "sha512-pN/yOAvcC+5rQ5nERGuwrjLlYvLTbCibnZ1I7B1LaiAz9BRBlE9GMgE/eqV30P7aJQUf7Ddimy/RsbYO/GrVGg==", "dev": true, + "peer": true, "requires": { "@types/json-schema": "^7.0.8", "ajv": "^6.12.5", @@ -14992,47 +12485,16 @@ "lru-cache": "^6.0.0" } }, - "semver-regex": { - "version": "4.0.5", - "resolved": "https://registry.npmjs.org/semver-regex/-/semver-regex-4.0.5.tgz", - "integrity": "sha512-hunMQrEy1T6Jr2uEVjrAIqjwWcQTgOAcIM52C8MY1EZSD3DDNft04XzvYKPqjED65bNVVko0YI38nYeEHCX3yw==", - "dev": true - }, - "semver-truncate": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/semver-truncate/-/semver-truncate-2.0.0.tgz", - "integrity": "sha512-Rh266MLDYNeML5h90ttdMwfXe1+Nc4LAWd9X1KdJe8pPHP4kFmvLZALtsMNHNdvTyQygbEC0D59sIz47DIaq8w==", - "dev": true, - "requires": { - "semver": "^6.0.0" - }, - "dependencies": { - "semver": { - "version": "6.3.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", - "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", - "dev": true - } - } - }, "serialize-javascript": { "version": "6.0.1", "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.1.tgz", "integrity": "sha512-owoXEFjWRllis8/M1Q+Cw5k8ZH40e3zhp/ovX+Xr/vi1qj6QesbyXXViFbpNvWvPNAD62SutwEXavefrLJWj7w==", "dev": true, + "peer": true, "requires": { "randombytes": "^2.1.0" } }, - "shallow-clone": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/shallow-clone/-/shallow-clone-3.0.1.tgz", - "integrity": "sha512-/6KqX+GVUdqPuPPd2LxDDxzX6CAbjJehAAOKlNpqqUpAqPM6HeL8f+o3a+JsyGjn2lv0WY8UsTgUJjU9Ok55NA==", - "dev": true, - "requires": { - "kind-of": "^6.0.2" - } - }, "shebang-command": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", @@ -15096,24 +12558,6 @@ "integrity": "sha512-0xtkGhWCC9MGt/EzgnvbbbKhqWjl1+/rncmhTh5qCpbYguXh6S/qwePfv/JQ8jePXXmqingylxoC49pCkSPIbA==", "dev": true }, - "sort-keys": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/sort-keys/-/sort-keys-1.1.2.tgz", - "integrity": "sha512-vzn8aSqKgytVik0iwdBEi+zevbTYZogewTUM6dtpmGwEcdzbub/TX4bCzRhebDCRC3QzXgJsLRKB2V/Oof7HXg==", - "dev": true, - "requires": { - "is-plain-obj": "^1.0.0" - } - }, - "sort-keys-length": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/sort-keys-length/-/sort-keys-length-1.0.1.tgz", - "integrity": "sha512-GRbEOUqCxemTAk/b32F2xa8wDTs+Z1QHOkbhJDQTvv/6G3ZkbJ+frYWsTcc7cBB3Fu4wy4XlLCuNtJuMn7Gsvw==", - "dev": true, - "requires": { - "sort-keys": "^1.0.0" - } - }, "sortablejs": { "version": "1.15.0", "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.15.0.tgz", @@ -15146,6 +12590,7 @@ "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.21.tgz", "integrity": "sha512-uBHU3L3czsIyYXKX88fdrGovxdSCoTGDRZ6SYXtSRxLZUzHg5P/66Ht6uoUlHu9EZod+inXhKo3qQgwXUT/y1w==", "dev": true, + "peer": true, "requires": { "buffer-from": "^1.0.0", "source-map": "^0.6.0" @@ -15189,15 +12634,6 @@ "integrity": "sha512-rr+VVSXtRhO4OHbXUiAF7xW3Bo9DuuF6C5jH+q/x15j2jniycgKbxU09Hr0WqlSLUs4i4ltHGXqTe7VHclYWyA==", "dev": true }, - "string_decoder": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.3.0.tgz", - "integrity": "sha512-hkRX8U1WjJFd8LsDJ2yQ/wWWxaopEsABU1XfkM8A+j0+85JAGppt16cr1Whg6KIbb4okU6Mql6BOj+uup/wKeA==", - "dev": true, - "requires": { - "safe-buffer": "~5.2.0" - } - }, "string-width": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/string-width/-/string-width-5.1.2.tgz", @@ -15302,12 +12738,6 @@ "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", "dev": true }, - "strip-eof": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/strip-eof/-/strip-eof-1.0.0.tgz", - "integrity": "sha512-7FCwGGmx8mD5xQd3RPUvnSpUXHM3BWuzjtpD4TXsfcZ9EL4azvVVUscFYwD9nx8Kh+uCBC00XBtAykoMHwTh8Q==", - "dev": true - }, "strip-final-newline": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", @@ -15320,22 +12750,6 @@ "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", "dev": true }, - "strip-outer": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/strip-outer/-/strip-outer-2.0.0.tgz", - "integrity": "sha512-A21Xsm1XzUkK0qK1ZrytDUvqsQWict2Cykhvi0fBQntGG5JSprESasEyV1EZ/4CiR5WB5KjzLTrP/bO37B0wPg==", - "dev": true - }, - "strtok3": { - "version": "7.0.0", - "resolved": "https://registry.npmjs.org/strtok3/-/strtok3-7.0.0.tgz", - "integrity": "sha512-pQ+V+nYQdC5H3Q7qBZAz/MO6lwGhoC2gOAjuouGf/VO0m7vQRh8QNMl2Uf6SwAtzZ9bOw3UIeBukEGNJl5dtXQ==", - "dev": true, - "requires": { - "@tokenizer/token": "^0.3.0", - "peek-readable": "^5.0.0" - } - }, "stylehacks": { "version": "6.0.0", "resolved": "https://registry.npmjs.org/stylehacks/-/stylehacks-6.0.0.tgz", @@ -15439,13 +12853,15 @@ "version": "2.2.0", "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.0.tgz", "integrity": "sha512-FBk4IesMV1rBxX2tfiK8RAmogtWn53puLOQlvO8XuwlgxcYbP4mVPS9Ph4aeamSyyVjOl24aYWAuc8U5kCVwMw==", - "dev": true + "dev": true, + "peer": true }, "terser": { "version": "5.17.1", "resolved": "https://registry.npmjs.org/terser/-/terser-5.17.1.tgz", "integrity": "sha512-hVl35zClmpisy6oaoKALOpS0rDYLxRFLHhRuDlEGTKey9qHjS1w9GMORjuwIMt70Wan4lwsLYyWDVnWgF+KUEw==", "dev": true, + "peer": true, "requires": { "@jridgewell/source-map": "^0.3.2", "acorn": "^8.5.0", @@ -15458,6 +12874,7 @@ "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.9.tgz", "integrity": "sha512-ZuXsqE07EcggTWQjXUj+Aot/OMcD0bMKGgF63f7UxYcu5/AJF53aIpK1YoP5xR9l6s/Hy2b+t1AM0bLNPRuhwA==", "dev": true, + "peer": true, "requires": { "@jridgewell/trace-mapping": "^0.3.17", "jest-worker": "^27.4.5", @@ -15505,16 +12922,6 @@ "is-number": "^7.0.0" } }, - "token-types": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/token-types/-/token-types-5.0.1.tgz", - "integrity": "sha512-Y2fmSnZjQdDb9W4w4r1tswlMHylzWIeOKpx0aZH9BgGtACHhrk3OkT52AzwcuqTRBZtvvnTjDBh8eynMulu8Vg==", - "dev": true, - "requires": { - "@tokenizer/token": "^0.3.0", - "ieee754": "^1.2.1" - } - }, "tr46": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/tr46/-/tr46-1.0.1.tgz", @@ -15530,23 +12937,6 @@ "integrity": "sha512-L0Orpi8qGpRG//Nd+H90vFB+3iHnue1zSSGmNOOCh1GLJ7rUKVwV2HvijphGQS2UmhUZewS9VgvxYIdgr+fG1A==", "dev": true }, - "trim-repeated": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/trim-repeated/-/trim-repeated-2.0.0.tgz", - "integrity": "sha512-QUHBFTJGdOwmp0tbOG505xAgOp/YliZP/6UgafFXYZ26WT1bvQmSMJUvkeVSASuJJHbqsFbynTvkd5W8RBTipg==", - "dev": true, - "requires": { - "escape-string-regexp": "^5.0.0" - }, - "dependencies": { - "escape-string-regexp": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-5.0.0.tgz", - "integrity": "sha512-/veY75JbMK4j1yjvuUxuVsiS/hr/4iHs9FTT6cgTexxdE0Ly/glccBAkloH/DofkjRbZU3bnoj38mOmhkZ0lHw==", - "dev": true - } - } - }, "ts-api-utils": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.0.1.tgz", @@ -15560,61 +12950,6 @@ "integrity": "sha512-Y/arvbn+rrz3JCKl9C4kVNfTfSm2/mEp5FSz5EsZSANGPSlQrpRI5M4PKF+mJnE52jOO90PnPSc3Ur3bTQw0gA==", "dev": true }, - "ts-loader": { - "version": "9.5.0", - "resolved": "https://registry.npmjs.org/ts-loader/-/ts-loader-9.5.0.tgz", - "integrity": "sha512-LLlB/pkB4q9mW2yLdFMnK3dEHbrBjeZTYguaaIfusyojBgAGf5kF+O6KcWqiGzWqHk0LBsoolrp4VftEURhybg==", - "dev": true, - "requires": { - "chalk": "^4.1.0", - "enhanced-resolve": "^5.0.0", - "micromatch": "^4.0.0", - "semver": "^7.3.4", - "source-map": "^0.7.4" - }, - "dependencies": { - "ansi-styles": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", - "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", - "dev": true, - "requires": { - "color-convert": "^2.0.1" - } - }, - "chalk": { - "version": "4.1.2", - "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", - "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", - "dev": true, - "requires": { - "ansi-styles": "^4.1.0", - "supports-color": "^7.1.0" - } - }, - "color-convert": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", - "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", - "dev": true, - "requires": { - "color-name": "~1.1.4" - } - }, - "color-name": { - "version": "1.1.4", - "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", - "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", - "dev": true - }, - "source-map": { - "version": "0.7.4", - "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.7.4.tgz", - "integrity": "sha512-l3BikUxvPOcn5E74dZiq5BGsTb5yEwhaTSzccU6t4sDOH8NWJCstKO5QT2CvtFoK6F0saL7p9xHAqHOlCPJygA==", - "dev": true - } - } - }, "tslib": { "version": "2.6.2", "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", @@ -15992,6 +13327,7 @@ "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.0.tgz", "integrity": "sha512-Lcvm7MGST/4fup+ifyKi2hjyIAwcdI4HRgtvTpIUxBRhB+RFtUh8XtDOxUfctVCnhVi+QQj49i91OyvzkJl6cg==", "dev": true, + "peer": true, "requires": { "glob-to-regexp": "^0.4.1", "graceful-fs": "^4.1.2" @@ -16008,6 +13344,7 @@ "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.89.0.tgz", "integrity": "sha512-qyfIC10pOr70V+jkmud8tMfajraGCZMBWJtrmuBymQKCrLTRejBI8STDp1MCyZu/QTdZSeacCQYpYNQVOzX5kw==", "dev": true, + "peer": true, "requires": { "@types/eslint-scope": "^3.7.3", "@types/estree": "^1.0.0", @@ -16035,65 +13372,12 @@ "webpack-sources": "^3.2.3" } }, - "webpack-cli": { - "version": "5.1.4", - "resolved": "https://registry.npmjs.org/webpack-cli/-/webpack-cli-5.1.4.tgz", - "integrity": "sha512-pIDJHIEI9LR0yxHXQ+Qh95k2EvXpWzZ5l+d+jIo+RdSm9MiHfzazIxwwni/p7+x4eJZuvG1AJwgC4TNQ7NRgsg==", - "dev": true, - "requires": { - "@discoveryjs/json-ext": "^0.5.0", - "@webpack-cli/configtest": "^2.1.1", - "@webpack-cli/info": "^2.0.2", - "@webpack-cli/serve": "^2.0.5", - "colorette": "^2.0.14", - "commander": "^10.0.1", - "cross-spawn": "^7.0.3", - "envinfo": "^7.7.3", - "fastest-levenshtein": "^1.0.12", - "import-local": "^3.0.2", - "interpret": "^3.1.1", - "rechoir": "^0.8.0", - "webpack-merge": "^5.7.3" - }, - "dependencies": { - "commander": { - "version": "10.0.1", - "resolved": "https://registry.npmjs.org/commander/-/commander-10.0.1.tgz", - "integrity": "sha512-y4Mg2tXshplEbSGzx7amzPwKKOCGuoSRP/CjEdwwk0FOGlUbq6lKuoyDZTNZkmxHdJtp54hdfY/JUrdL7Xfdug==", - "dev": true - }, - "interpret": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-3.1.1.tgz", - "integrity": "sha512-6xwYfHbajpoF0xLW+iwLkhwgvLoZDfjYfoFNu8ftMoXINzwuymNLd9u/KmwtdT2GbR+/Cz66otEGEVVUHX9QLQ==", - "dev": true - }, - "rechoir": { - "version": "0.8.0", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.8.0.tgz", - "integrity": "sha512-/vxpCXddiX8NGfGO/mTafwjq4aFa/71pvamip0++IQk3zG8cbCj0fifNPrjjF1XMXUne91jL9OoxmdykoEtifQ==", - "dev": true, - "requires": { - "resolve": "^1.20.0" - } - } - } - }, - "webpack-merge": { - "version": "5.7.3", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-5.7.3.tgz", - "integrity": "sha512-6/JUQv0ELQ1igjGDzHkXbVDRxkfA57Zw7PfiupdLFJYrgFqY5ZP8xxbpp2lU3EPwYx89ht5Z/aDkD40hFCm5AA==", - "dev": true, - "requires": { - "clone-deep": "^4.0.1", - "wildcard": "^2.0.0" - } - }, "webpack-sources": { "version": "3.2.3", "resolved": "https://registry.npmjs.org/webpack-sources/-/webpack-sources-3.2.3.tgz", "integrity": "sha512-/DyMEOrDgLKKIG0fmvtz+4dUX/3Ghozwgm6iPp8KRhvn+eQf9+Q7GWxVNMk3+uCPWfdXYC4ExGBckIXdFEfH1w==", - "dev": true + "dev": true, + "peer": true }, "whatwg-url": { "version": "7.1.0", @@ -16142,12 +13426,6 @@ "is-typed-array": "^1.1.10" } }, - "wildcard": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/wildcard/-/wildcard-2.0.0.tgz", - "integrity": "sha512-JcKqAHLPxcdb9KM49dufGXn2x3ssnfjbcaQdLlfZsL9rH9wgDQjUtDxbo8NE0F6SFvydeu1VhZe7hZuHsB2/pw==", - "dev": true - }, "wrap-ansi": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-8.1.0.tgz", diff --git a/package.json b/package.json index f24e32aeb..448bb093f 100644 --- a/package.json +++ b/package.json @@ -11,7 +11,7 @@ "build": "concurrently -c auto -g --timings npm:build:main:*", "build:main:css": "postcss -o build/resources/main/assets/styles/main.css build/less/main.css", "build:main:server": "tsup -d build/resources/main", - "build:main:static": "tsup -d build/resources/main/static", + "build:main:static": "tsup -d build/resources/main/_static", "build:tests": "tsup -d build/resources/test", "check:types": "tsc --pretty --skipLibCheck --noEmit", "clean": "del build", @@ -22,6 +22,7 @@ }, "dependencies": { "@enonic/lib-admin-ui": "file:./.xp/dev/lib-admin-ui", + "@enonic/legacy-slickgrid": "^0.0.1", "hasher": "^1.2.0", "jquery": "^3.7.1", "jquery-ui-dist": "^1.13.2", diff --git a/src/main/resources/static/app/Router.ts b/src/main/resources/_static/app/Router.ts similarity index 100% rename from src/main/resources/static/app/Router.ts rename to src/main/resources/_static/app/Router.ts diff --git a/src/main/resources/static/app/UserAppPanel.ts b/src/main/resources/_static/app/UserAppPanel.ts similarity index 100% rename from src/main/resources/static/app/UserAppPanel.ts rename to src/main/resources/_static/app/UserAppPanel.ts diff --git a/src/main/resources/static/app/access/IdProviderAccess.ts b/src/main/resources/_static/app/access/IdProviderAccess.ts similarity index 100% rename from src/main/resources/static/app/access/IdProviderAccess.ts rename to src/main/resources/_static/app/access/IdProviderAccess.ts diff --git a/src/main/resources/static/app/access/IdProviderAccessControlEntry.ts b/src/main/resources/_static/app/access/IdProviderAccessControlEntry.ts similarity index 100% rename from src/main/resources/static/app/access/IdProviderAccessControlEntry.ts rename to src/main/resources/_static/app/access/IdProviderAccessControlEntry.ts diff --git a/src/main/resources/static/app/access/IdProviderAccessControlEntryJson.ts b/src/main/resources/_static/app/access/IdProviderAccessControlEntryJson.ts similarity index 100% rename from src/main/resources/static/app/access/IdProviderAccessControlEntryJson.ts rename to src/main/resources/_static/app/access/IdProviderAccessControlEntryJson.ts diff --git a/src/main/resources/static/app/access/IdProviderAccessControlList.ts b/src/main/resources/_static/app/access/IdProviderAccessControlList.ts similarity index 100% rename from src/main/resources/static/app/access/IdProviderAccessControlList.ts rename to src/main/resources/_static/app/access/IdProviderAccessControlList.ts diff --git a/src/main/resources/static/app/browse/BaseUserEvent.ts b/src/main/resources/_static/app/browse/BaseUserEvent.ts similarity index 100% rename from src/main/resources/static/app/browse/BaseUserEvent.ts rename to src/main/resources/_static/app/browse/BaseUserEvent.ts diff --git a/src/main/resources/static/app/browse/EditPrincipalEvent.ts b/src/main/resources/_static/app/browse/EditPrincipalEvent.ts similarity index 100% rename from src/main/resources/static/app/browse/EditPrincipalEvent.ts rename to src/main/resources/_static/app/browse/EditPrincipalEvent.ts diff --git a/src/main/resources/static/app/browse/NewPrincipalEvent.ts b/src/main/resources/_static/app/browse/NewPrincipalEvent.ts similarity index 100% rename from src/main/resources/static/app/browse/NewPrincipalEvent.ts rename to src/main/resources/_static/app/browse/NewPrincipalEvent.ts diff --git a/src/main/resources/static/app/browse/PrincipalDuplicatedEvent.ts b/src/main/resources/_static/app/browse/PrincipalDuplicatedEvent.ts similarity index 100% rename from src/main/resources/static/app/browse/PrincipalDuplicatedEvent.ts rename to src/main/resources/_static/app/browse/PrincipalDuplicatedEvent.ts diff --git a/src/main/resources/static/app/browse/PrincipalSynchronizedEvent.ts b/src/main/resources/_static/app/browse/PrincipalSynchronizedEvent.ts similarity index 100% rename from src/main/resources/static/app/browse/PrincipalSynchronizedEvent.ts rename to src/main/resources/_static/app/browse/PrincipalSynchronizedEvent.ts diff --git a/src/main/resources/static/app/browse/ShowNewPrincipalDialogEvent.ts b/src/main/resources/_static/app/browse/ShowNewPrincipalDialogEvent.ts similarity index 100% rename from src/main/resources/static/app/browse/ShowNewPrincipalDialogEvent.ts rename to src/main/resources/_static/app/browse/ShowNewPrincipalDialogEvent.ts diff --git a/src/main/resources/static/app/browse/UpdatePrincipalEvent.ts b/src/main/resources/_static/app/browse/UpdatePrincipalEvent.ts similarity index 100% rename from src/main/resources/static/app/browse/UpdatePrincipalEvent.ts rename to src/main/resources/_static/app/browse/UpdatePrincipalEvent.ts diff --git a/src/main/resources/static/app/browse/UserBrowseItemPanel.ts b/src/main/resources/_static/app/browse/UserBrowseItemPanel.ts similarity index 100% rename from src/main/resources/static/app/browse/UserBrowseItemPanel.ts rename to src/main/resources/_static/app/browse/UserBrowseItemPanel.ts diff --git a/src/main/resources/static/app/browse/UserBrowsePanel.ts b/src/main/resources/_static/app/browse/UserBrowsePanel.ts similarity index 100% rename from src/main/resources/static/app/browse/UserBrowsePanel.ts rename to src/main/resources/_static/app/browse/UserBrowsePanel.ts diff --git a/src/main/resources/static/app/browse/UserBrowseToolbar.ts b/src/main/resources/_static/app/browse/UserBrowseToolbar.ts similarity index 100% rename from src/main/resources/static/app/browse/UserBrowseToolbar.ts rename to src/main/resources/_static/app/browse/UserBrowseToolbar.ts diff --git a/src/main/resources/static/app/browse/UserItemDeletePromptEvent.ts b/src/main/resources/_static/app/browse/UserItemDeletePromptEvent.ts similarity index 100% rename from src/main/resources/static/app/browse/UserItemDeletePromptEvent.ts rename to src/main/resources/_static/app/browse/UserItemDeletePromptEvent.ts diff --git a/src/main/resources/static/app/browse/UserItemType.ts b/src/main/resources/_static/app/browse/UserItemType.ts similarity index 100% rename from src/main/resources/static/app/browse/UserItemType.ts rename to src/main/resources/_static/app/browse/UserItemType.ts diff --git a/src/main/resources/static/app/browse/UserItemsRowFormatter.ts b/src/main/resources/_static/app/browse/UserItemsRowFormatter.ts similarity index 100% rename from src/main/resources/static/app/browse/UserItemsRowFormatter.ts rename to src/main/resources/_static/app/browse/UserItemsRowFormatter.ts diff --git a/src/main/resources/static/app/browse/UserItemsTreeGrid.ts b/src/main/resources/_static/app/browse/UserItemsTreeGrid.ts similarity index 100% rename from src/main/resources/static/app/browse/UserItemsTreeGrid.ts rename to src/main/resources/_static/app/browse/UserItemsTreeGrid.ts diff --git a/src/main/resources/static/app/browse/UserTreeGridActions.ts b/src/main/resources/_static/app/browse/UserTreeGridActions.ts similarity index 100% rename from src/main/resources/static/app/browse/UserTreeGridActions.ts rename to src/main/resources/_static/app/browse/UserTreeGridActions.ts diff --git a/src/main/resources/static/app/browse/UserTreeGridItem.ts b/src/main/resources/_static/app/browse/UserTreeGridItem.ts similarity index 100% rename from src/main/resources/static/app/browse/UserTreeGridItem.ts rename to src/main/resources/_static/app/browse/UserTreeGridItem.ts diff --git a/src/main/resources/static/app/browse/UserTreeGridItemViewer.ts b/src/main/resources/_static/app/browse/UserTreeGridItemViewer.ts similarity index 100% rename from src/main/resources/static/app/browse/UserTreeGridItemViewer.ts rename to src/main/resources/_static/app/browse/UserTreeGridItemViewer.ts diff --git a/src/main/resources/static/app/browse/action/DeletePrincipalAction.ts b/src/main/resources/_static/app/browse/action/DeletePrincipalAction.ts similarity index 100% rename from src/main/resources/static/app/browse/action/DeletePrincipalAction.ts rename to src/main/resources/_static/app/browse/action/DeletePrincipalAction.ts diff --git a/src/main/resources/static/app/browse/action/EditPrincipalAction.ts b/src/main/resources/_static/app/browse/action/EditPrincipalAction.ts similarity index 100% rename from src/main/resources/static/app/browse/action/EditPrincipalAction.ts rename to src/main/resources/_static/app/browse/action/EditPrincipalAction.ts diff --git a/src/main/resources/static/app/browse/action/NewPrincipalAction.ts b/src/main/resources/_static/app/browse/action/NewPrincipalAction.ts similarity index 100% rename from src/main/resources/static/app/browse/action/NewPrincipalAction.ts rename to src/main/resources/_static/app/browse/action/NewPrincipalAction.ts diff --git a/src/main/resources/static/app/browse/action/SyncPrincipalAction.ts b/src/main/resources/_static/app/browse/action/SyncPrincipalAction.ts similarity index 100% rename from src/main/resources/static/app/browse/action/SyncPrincipalAction.ts rename to src/main/resources/_static/app/browse/action/SyncPrincipalAction.ts diff --git a/src/main/resources/static/app/browse/filter/PrincipalBrowseFilterPanel.ts b/src/main/resources/_static/app/browse/filter/PrincipalBrowseFilterPanel.ts similarity index 100% rename from src/main/resources/static/app/browse/filter/PrincipalBrowseFilterPanel.ts rename to src/main/resources/_static/app/browse/filter/PrincipalBrowseFilterPanel.ts diff --git a/src/main/resources/static/app/browse/filter/PrincipalBrowseSearchData.ts b/src/main/resources/_static/app/browse/filter/PrincipalBrowseSearchData.ts similarity index 100% rename from src/main/resources/static/app/browse/filter/PrincipalBrowseSearchData.ts rename to src/main/resources/_static/app/browse/filter/PrincipalBrowseSearchData.ts diff --git a/src/main/resources/static/app/browse/serviceaccount/PublicKey.ts b/src/main/resources/_static/app/browse/serviceaccount/PublicKey.ts similarity index 100% rename from src/main/resources/static/app/browse/serviceaccount/PublicKey.ts rename to src/main/resources/_static/app/browse/serviceaccount/PublicKey.ts diff --git a/src/main/resources/static/app/create/NewPrincipalDialog.ts b/src/main/resources/_static/app/create/NewPrincipalDialog.ts similarity index 100% rename from src/main/resources/static/app/create/NewPrincipalDialog.ts rename to src/main/resources/_static/app/create/NewPrincipalDialog.ts diff --git a/src/main/resources/static/app/create/UserItemTypesRowFormatter.ts b/src/main/resources/_static/app/create/UserItemTypesRowFormatter.ts similarity index 100% rename from src/main/resources/static/app/create/UserItemTypesRowFormatter.ts rename to src/main/resources/_static/app/create/UserItemTypesRowFormatter.ts diff --git a/src/main/resources/static/app/create/UserItemTypesTreeGrid.ts b/src/main/resources/_static/app/create/UserItemTypesTreeGrid.ts similarity index 100% rename from src/main/resources/static/app/create/UserItemTypesTreeGrid.ts rename to src/main/resources/_static/app/create/UserItemTypesTreeGrid.ts diff --git a/src/main/resources/static/app/create/UserTypeTreeGridItem.ts b/src/main/resources/_static/app/create/UserTypeTreeGridItem.ts similarity index 100% rename from src/main/resources/static/app/create/UserTypeTreeGridItem.ts rename to src/main/resources/_static/app/create/UserTypeTreeGridItem.ts diff --git a/src/main/resources/static/app/create/UserTypesTreeGridItemViewer.ts b/src/main/resources/_static/app/create/UserTypesTreeGridItemViewer.ts similarity index 100% rename from src/main/resources/static/app/create/UserTypesTreeGridItemViewer.ts rename to src/main/resources/_static/app/create/UserTypesTreeGridItemViewer.ts diff --git a/src/main/resources/static/app/event/PrincipalServerChange.ts b/src/main/resources/_static/app/event/PrincipalServerChange.ts similarity index 100% rename from src/main/resources/static/app/event/PrincipalServerChange.ts rename to src/main/resources/_static/app/event/PrincipalServerChange.ts diff --git a/src/main/resources/static/app/event/PrincipalServerChangeItem.ts b/src/main/resources/_static/app/event/PrincipalServerChangeItem.ts similarity index 100% rename from src/main/resources/static/app/event/PrincipalServerChangeItem.ts rename to src/main/resources/_static/app/event/PrincipalServerChangeItem.ts diff --git a/src/main/resources/static/app/event/PrincipalServerEvent.ts b/src/main/resources/_static/app/event/PrincipalServerEvent.ts similarity index 100% rename from src/main/resources/static/app/event/PrincipalServerEvent.ts rename to src/main/resources/_static/app/event/PrincipalServerEvent.ts diff --git a/src/main/resources/static/app/event/PrincipalServerEventsHandler.ts b/src/main/resources/_static/app/event/PrincipalServerEventsHandler.ts similarity index 100% rename from src/main/resources/static/app/event/PrincipalServerEventsHandler.ts rename to src/main/resources/_static/app/event/PrincipalServerEventsHandler.ts diff --git a/src/main/resources/static/app/event/ReportServerChange.ts b/src/main/resources/_static/app/event/ReportServerChange.ts similarity index 100% rename from src/main/resources/static/app/event/ReportServerChange.ts rename to src/main/resources/_static/app/event/ReportServerChange.ts diff --git a/src/main/resources/static/app/event/ReportServerChangeItem.ts b/src/main/resources/_static/app/event/ReportServerChangeItem.ts similarity index 100% rename from src/main/resources/static/app/event/ReportServerChangeItem.ts rename to src/main/resources/_static/app/event/ReportServerChangeItem.ts diff --git a/src/main/resources/static/app/event/ReportServerEvent.ts b/src/main/resources/_static/app/event/ReportServerEvent.ts similarity index 100% rename from src/main/resources/static/app/event/ReportServerEvent.ts rename to src/main/resources/_static/app/event/ReportServerEvent.ts diff --git a/src/main/resources/static/app/event/UserFilteredDataScrollEvent.ts b/src/main/resources/_static/app/event/UserFilteredDataScrollEvent.ts similarity index 100% rename from src/main/resources/static/app/event/UserFilteredDataScrollEvent.ts rename to src/main/resources/_static/app/event/UserFilteredDataScrollEvent.ts diff --git a/src/main/resources/static/app/event/UserItemCreatedEvent.ts b/src/main/resources/_static/app/event/UserItemCreatedEvent.ts similarity index 100% rename from src/main/resources/static/app/event/UserItemCreatedEvent.ts rename to src/main/resources/_static/app/event/UserItemCreatedEvent.ts diff --git a/src/main/resources/static/app/event/UserItemDeletedEvent.ts b/src/main/resources/_static/app/event/UserItemDeletedEvent.ts similarity index 100% rename from src/main/resources/static/app/event/UserItemDeletedEvent.ts rename to src/main/resources/_static/app/event/UserItemDeletedEvent.ts diff --git a/src/main/resources/static/app/event/UserItemNamedEvent.ts b/src/main/resources/_static/app/event/UserItemNamedEvent.ts similarity index 100% rename from src/main/resources/static/app/event/UserItemNamedEvent.ts rename to src/main/resources/_static/app/event/UserItemNamedEvent.ts diff --git a/src/main/resources/static/app/event/UserItemUpdatedEvent.ts b/src/main/resources/_static/app/event/UserItemUpdatedEvent.ts similarity index 100% rename from src/main/resources/static/app/event/UserItemUpdatedEvent.ts rename to src/main/resources/_static/app/event/UserItemUpdatedEvent.ts diff --git a/src/main/resources/static/app/event/UserItemsStopScrollEvent.ts b/src/main/resources/_static/app/event/UserItemsStopScrollEvent.ts similarity index 100% rename from src/main/resources/static/app/event/UserItemsStopScrollEvent.ts rename to src/main/resources/_static/app/event/UserItemsStopScrollEvent.ts diff --git a/src/main/resources/static/app/event/UsersServerEventsListener.ts b/src/main/resources/_static/app/event/UsersServerEventsListener.ts similarity index 100% rename from src/main/resources/static/app/event/UsersServerEventsListener.ts rename to src/main/resources/_static/app/event/UsersServerEventsListener.ts diff --git a/src/main/resources/static/app/event/UsersServerEventsTranslator.ts b/src/main/resources/_static/app/event/UsersServerEventsTranslator.ts similarity index 100% rename from src/main/resources/static/app/event/UsersServerEventsTranslator.ts rename to src/main/resources/_static/app/event/UsersServerEventsTranslator.ts diff --git a/src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationComboBox.ts b/src/main/resources/_static/app/inputtype/authapplicationselector/AuthApplicationComboBox.ts similarity index 100% rename from src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationComboBox.ts rename to src/main/resources/_static/app/inputtype/authapplicationselector/AuthApplicationComboBox.ts diff --git a/src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationLoader.ts b/src/main/resources/_static/app/inputtype/authapplicationselector/AuthApplicationLoader.ts similarity index 100% rename from src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationLoader.ts rename to src/main/resources/_static/app/inputtype/authapplicationselector/AuthApplicationLoader.ts diff --git a/src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionView.ts b/src/main/resources/_static/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionView.ts similarity index 100% rename from src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionView.ts rename to src/main/resources/_static/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionView.ts diff --git a/src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionsView.ts b/src/main/resources/_static/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionsView.ts similarity index 100% rename from src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionsView.ts rename to src/main/resources/_static/app/inputtype/authapplicationselector/AuthApplicationSelectedOptionsView.ts diff --git a/src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationSelector.ts b/src/main/resources/_static/app/inputtype/authapplicationselector/AuthApplicationSelector.ts similarity index 100% rename from src/main/resources/static/app/inputtype/authapplicationselector/AuthApplicationSelector.ts rename to src/main/resources/_static/app/inputtype/authapplicationselector/AuthApplicationSelector.ts diff --git a/src/main/resources/static/app/inputtype/index.ts b/src/main/resources/_static/app/inputtype/index.ts similarity index 100% rename from src/main/resources/static/app/inputtype/index.ts rename to src/main/resources/_static/app/inputtype/index.ts diff --git a/src/main/resources/static/app/inputtype/selector/PrincipalSelector.ts b/src/main/resources/_static/app/inputtype/selector/PrincipalSelector.ts similarity index 100% rename from src/main/resources/static/app/inputtype/selector/PrincipalSelector.ts rename to src/main/resources/_static/app/inputtype/selector/PrincipalSelector.ts diff --git a/src/main/resources/static/app/principal/FindPrincipalsRequest.ts b/src/main/resources/_static/app/principal/FindPrincipalsRequest.ts similarity index 100% rename from src/main/resources/static/app/principal/FindPrincipalsRequest.ts rename to src/main/resources/_static/app/principal/FindPrincipalsRequest.ts diff --git a/src/main/resources/static/app/principal/GetPrincipalsByKeysRequest.ts b/src/main/resources/_static/app/principal/GetPrincipalsByKeysRequest.ts similarity index 100% rename from src/main/resources/static/app/principal/GetPrincipalsByKeysRequest.ts rename to src/main/resources/_static/app/principal/GetPrincipalsByKeysRequest.ts diff --git a/src/main/resources/static/app/principal/Group.ts b/src/main/resources/_static/app/principal/Group.ts similarity index 100% rename from src/main/resources/static/app/principal/Group.ts rename to src/main/resources/_static/app/principal/Group.ts diff --git a/src/main/resources/static/app/principal/GroupJson.ts b/src/main/resources/_static/app/principal/GroupJson.ts similarity index 100% rename from src/main/resources/static/app/principal/GroupJson.ts rename to src/main/resources/_static/app/principal/GroupJson.ts diff --git a/src/main/resources/static/app/principal/IdProvider.ts b/src/main/resources/_static/app/principal/IdProvider.ts similarity index 100% rename from src/main/resources/static/app/principal/IdProvider.ts rename to src/main/resources/_static/app/principal/IdProvider.ts diff --git a/src/main/resources/static/app/principal/IdProviderJson.ts b/src/main/resources/_static/app/principal/IdProviderJson.ts similarity index 100% rename from src/main/resources/static/app/principal/IdProviderJson.ts rename to src/main/resources/_static/app/principal/IdProviderJson.ts diff --git a/src/main/resources/static/app/principal/Members.ts b/src/main/resources/_static/app/principal/Members.ts similarity index 100% rename from src/main/resources/static/app/principal/Members.ts rename to src/main/resources/_static/app/principal/Members.ts diff --git a/src/main/resources/static/app/principal/MembersJson.ts b/src/main/resources/_static/app/principal/MembersJson.ts similarity index 100% rename from src/main/resources/static/app/principal/MembersJson.ts rename to src/main/resources/_static/app/principal/MembersJson.ts diff --git a/src/main/resources/static/app/principal/PrincipalLoader.ts b/src/main/resources/_static/app/principal/PrincipalLoader.ts similarity index 100% rename from src/main/resources/static/app/principal/PrincipalLoader.ts rename to src/main/resources/_static/app/principal/PrincipalLoader.ts diff --git a/src/main/resources/static/app/principal/PublicKeyJson.ts b/src/main/resources/_static/app/principal/PublicKeyJson.ts similarity index 100% rename from src/main/resources/static/app/principal/PublicKeyJson.ts rename to src/main/resources/_static/app/principal/PublicKeyJson.ts diff --git a/src/main/resources/static/app/principal/Role.ts b/src/main/resources/_static/app/principal/Role.ts similarity index 100% rename from src/main/resources/static/app/principal/Role.ts rename to src/main/resources/_static/app/principal/Role.ts diff --git a/src/main/resources/static/app/principal/RoleJson.ts b/src/main/resources/_static/app/principal/RoleJson.ts similarity index 100% rename from src/main/resources/static/app/principal/RoleJson.ts rename to src/main/resources/_static/app/principal/RoleJson.ts diff --git a/src/main/resources/static/app/principal/User.ts b/src/main/resources/_static/app/principal/User.ts similarity index 100% rename from src/main/resources/static/app/principal/User.ts rename to src/main/resources/_static/app/principal/User.ts diff --git a/src/main/resources/static/app/principal/UserJson.ts b/src/main/resources/_static/app/principal/UserJson.ts similarity index 100% rename from src/main/resources/static/app/principal/UserJson.ts rename to src/main/resources/_static/app/principal/UserJson.ts diff --git a/src/main/resources/static/app/report/Report.ts b/src/main/resources/_static/app/report/Report.ts similarity index 100% rename from src/main/resources/static/app/report/Report.ts rename to src/main/resources/_static/app/report/Report.ts diff --git a/src/main/resources/static/app/report/Repository.ts b/src/main/resources/_static/app/report/Repository.ts similarity index 100% rename from src/main/resources/static/app/report/Repository.ts rename to src/main/resources/_static/app/report/Repository.ts diff --git a/src/main/resources/static/app/report/RepositoryComboBox.ts b/src/main/resources/_static/app/report/RepositoryComboBox.ts similarity index 100% rename from src/main/resources/static/app/report/RepositoryComboBox.ts rename to src/main/resources/_static/app/report/RepositoryComboBox.ts diff --git a/src/main/resources/static/app/report/RepositoryLoader.ts b/src/main/resources/_static/app/report/RepositoryLoader.ts similarity index 100% rename from src/main/resources/static/app/report/RepositoryLoader.ts rename to src/main/resources/_static/app/report/RepositoryLoader.ts diff --git a/src/main/resources/static/app/report/RepositoryViewer.ts b/src/main/resources/_static/app/report/RepositoryViewer.ts similarity index 100% rename from src/main/resources/static/app/report/RepositoryViewer.ts rename to src/main/resources/_static/app/report/RepositoryViewer.ts diff --git a/src/main/resources/static/app/resource/ListIdProviderApplicationsRequest.ts b/src/main/resources/_static/app/resource/ListIdProviderApplicationsRequest.ts similarity index 100% rename from src/main/resources/static/app/resource/ListIdProviderApplicationsRequest.ts rename to src/main/resources/_static/app/resource/ListIdProviderApplicationsRequest.ts diff --git a/src/main/resources/static/app/view/MembersListing.ts b/src/main/resources/_static/app/view/MembersListing.ts similarity index 100% rename from src/main/resources/static/app/view/MembersListing.ts rename to src/main/resources/_static/app/view/MembersListing.ts diff --git a/src/main/resources/static/app/view/PublicKeysGrid.ts b/src/main/resources/_static/app/view/PublicKeysGrid.ts similarity index 100% rename from src/main/resources/static/app/view/PublicKeysGrid.ts rename to src/main/resources/_static/app/view/PublicKeysGrid.ts diff --git a/src/main/resources/static/app/view/UserItemStatisticsHeader.ts b/src/main/resources/_static/app/view/UserItemStatisticsHeader.ts similarity index 100% rename from src/main/resources/static/app/view/UserItemStatisticsHeader.ts rename to src/main/resources/_static/app/view/UserItemStatisticsHeader.ts diff --git a/src/main/resources/static/app/view/UserItemStatisticsPanel.ts b/src/main/resources/_static/app/view/UserItemStatisticsPanel.ts similarity index 100% rename from src/main/resources/static/app/view/UserItemStatisticsPanel.ts rename to src/main/resources/_static/app/view/UserItemStatisticsPanel.ts diff --git a/src/main/resources/static/app/wizard/ChangeUserPasswordDialog.ts b/src/main/resources/_static/app/wizard/ChangeUserPasswordDialog.ts similarity index 100% rename from src/main/resources/static/app/wizard/ChangeUserPasswordDialog.ts rename to src/main/resources/_static/app/wizard/ChangeUserPasswordDialog.ts diff --git a/src/main/resources/static/app/wizard/GroupWizardPanel.ts b/src/main/resources/_static/app/wizard/GroupWizardPanel.ts similarity index 100% rename from src/main/resources/static/app/wizard/GroupWizardPanel.ts rename to src/main/resources/_static/app/wizard/GroupWizardPanel.ts diff --git a/src/main/resources/static/app/wizard/IdProviderAccessControlComboBox.ts b/src/main/resources/_static/app/wizard/IdProviderAccessControlComboBox.ts similarity index 100% rename from src/main/resources/static/app/wizard/IdProviderAccessControlComboBox.ts rename to src/main/resources/_static/app/wizard/IdProviderAccessControlComboBox.ts diff --git a/src/main/resources/static/app/wizard/IdProviderAccessControlEntryView.ts b/src/main/resources/_static/app/wizard/IdProviderAccessControlEntryView.ts similarity index 100% rename from src/main/resources/static/app/wizard/IdProviderAccessControlEntryView.ts rename to src/main/resources/_static/app/wizard/IdProviderAccessControlEntryView.ts diff --git a/src/main/resources/static/app/wizard/IdProviderAccessSelector.ts b/src/main/resources/_static/app/wizard/IdProviderAccessSelector.ts similarity index 100% rename from src/main/resources/static/app/wizard/IdProviderAccessSelector.ts rename to src/main/resources/_static/app/wizard/IdProviderAccessSelector.ts diff --git a/src/main/resources/static/app/wizard/IdProviderWizardActions.ts b/src/main/resources/_static/app/wizard/IdProviderWizardActions.ts similarity index 100% rename from src/main/resources/static/app/wizard/IdProviderWizardActions.ts rename to src/main/resources/_static/app/wizard/IdProviderWizardActions.ts diff --git a/src/main/resources/static/app/wizard/IdProviderWizardDataLoader.ts b/src/main/resources/_static/app/wizard/IdProviderWizardDataLoader.ts similarity index 100% rename from src/main/resources/static/app/wizard/IdProviderWizardDataLoader.ts rename to src/main/resources/_static/app/wizard/IdProviderWizardDataLoader.ts diff --git a/src/main/resources/static/app/wizard/IdProviderWizardPanel.ts b/src/main/resources/_static/app/wizard/IdProviderWizardPanel.ts similarity index 100% rename from src/main/resources/static/app/wizard/IdProviderWizardPanel.ts rename to src/main/resources/_static/app/wizard/IdProviderWizardPanel.ts diff --git a/src/main/resources/static/app/wizard/IdProviderWizardPanelParams.ts b/src/main/resources/_static/app/wizard/IdProviderWizardPanelParams.ts similarity index 100% rename from src/main/resources/static/app/wizard/IdProviderWizardPanelParams.ts rename to src/main/resources/_static/app/wizard/IdProviderWizardPanelParams.ts diff --git a/src/main/resources/static/app/wizard/IdProviderWizardStepForm.ts b/src/main/resources/_static/app/wizard/IdProviderWizardStepForm.ts similarity index 100% rename from src/main/resources/static/app/wizard/IdProviderWizardStepForm.ts rename to src/main/resources/_static/app/wizard/IdProviderWizardStepForm.ts diff --git a/src/main/resources/static/app/wizard/MembersWizardPanel.ts b/src/main/resources/_static/app/wizard/MembersWizardPanel.ts similarity index 100% rename from src/main/resources/static/app/wizard/MembersWizardPanel.ts rename to src/main/resources/_static/app/wizard/MembersWizardPanel.ts diff --git a/src/main/resources/static/app/wizard/MembersWizardStepForm.ts b/src/main/resources/_static/app/wizard/MembersWizardStepForm.ts similarity index 100% rename from src/main/resources/static/app/wizard/MembersWizardStepForm.ts rename to src/main/resources/_static/app/wizard/MembersWizardStepForm.ts diff --git a/src/main/resources/static/app/wizard/NewPublicKeyDialog.ts b/src/main/resources/_static/app/wizard/NewPublicKeyDialog.ts similarity index 100% rename from src/main/resources/static/app/wizard/NewPublicKeyDialog.ts rename to src/main/resources/_static/app/wizard/NewPublicKeyDialog.ts diff --git a/src/main/resources/static/app/wizard/OpenChangePasswordDialogEvent.ts b/src/main/resources/_static/app/wizard/OpenChangePasswordDialogEvent.ts similarity index 100% rename from src/main/resources/static/app/wizard/OpenChangePasswordDialogEvent.ts rename to src/main/resources/_static/app/wizard/OpenChangePasswordDialogEvent.ts diff --git a/src/main/resources/static/app/wizard/PasswordGenerator.ts b/src/main/resources/_static/app/wizard/PasswordGenerator.ts similarity index 100% rename from src/main/resources/static/app/wizard/PasswordGenerator.ts rename to src/main/resources/_static/app/wizard/PasswordGenerator.ts diff --git a/src/main/resources/static/app/wizard/PasswordStrengthBlock.ts b/src/main/resources/_static/app/wizard/PasswordStrengthBlock.ts similarity index 100% rename from src/main/resources/static/app/wizard/PasswordStrengthBlock.ts rename to src/main/resources/_static/app/wizard/PasswordStrengthBlock.ts diff --git a/src/main/resources/static/app/wizard/PrincipalDescriptionWizardStepForm.ts b/src/main/resources/_static/app/wizard/PrincipalDescriptionWizardStepForm.ts similarity index 100% rename from src/main/resources/static/app/wizard/PrincipalDescriptionWizardStepForm.ts rename to src/main/resources/_static/app/wizard/PrincipalDescriptionWizardStepForm.ts diff --git a/src/main/resources/static/app/wizard/PrincipalWizardDataLoader.ts b/src/main/resources/_static/app/wizard/PrincipalWizardDataLoader.ts similarity index 100% rename from src/main/resources/static/app/wizard/PrincipalWizardDataLoader.ts rename to src/main/resources/_static/app/wizard/PrincipalWizardDataLoader.ts diff --git a/src/main/resources/static/app/wizard/PrincipalWizardPanel.ts b/src/main/resources/_static/app/wizard/PrincipalWizardPanel.ts similarity index 100% rename from src/main/resources/static/app/wizard/PrincipalWizardPanel.ts rename to src/main/resources/_static/app/wizard/PrincipalWizardPanel.ts diff --git a/src/main/resources/static/app/wizard/PrincipalWizardPanelParams.ts b/src/main/resources/_static/app/wizard/PrincipalWizardPanelParams.ts similarity index 100% rename from src/main/resources/static/app/wizard/PrincipalWizardPanelParams.ts rename to src/main/resources/_static/app/wizard/PrincipalWizardPanelParams.ts diff --git a/src/main/resources/static/app/wizard/PublicKeyDetailsDialog.ts b/src/main/resources/_static/app/wizard/PublicKeyDetailsDialog.ts similarity index 100% rename from src/main/resources/static/app/wizard/PublicKeyDetailsDialog.ts rename to src/main/resources/_static/app/wizard/PublicKeyDetailsDialog.ts diff --git a/src/main/resources/static/app/wizard/RoleWizardPanel.ts b/src/main/resources/_static/app/wizard/RoleWizardPanel.ts similarity index 100% rename from src/main/resources/static/app/wizard/RoleWizardPanel.ts rename to src/main/resources/_static/app/wizard/RoleWizardPanel.ts diff --git a/src/main/resources/static/app/wizard/RolesWizardStepForm.ts b/src/main/resources/_static/app/wizard/RolesWizardStepForm.ts similarity index 100% rename from src/main/resources/static/app/wizard/RolesWizardStepForm.ts rename to src/main/resources/_static/app/wizard/RolesWizardStepForm.ts diff --git a/src/main/resources/static/app/wizard/SecurityWizardStepForm.ts b/src/main/resources/_static/app/wizard/SecurityWizardStepForm.ts similarity index 100% rename from src/main/resources/static/app/wizard/SecurityWizardStepForm.ts rename to src/main/resources/_static/app/wizard/SecurityWizardStepForm.ts diff --git a/src/main/resources/static/app/wizard/SetUserPasswordRequest.ts b/src/main/resources/_static/app/wizard/SetUserPasswordRequest.ts similarity index 100% rename from src/main/resources/static/app/wizard/SetUserPasswordRequest.ts rename to src/main/resources/_static/app/wizard/SetUserPasswordRequest.ts diff --git a/src/main/resources/static/app/wizard/UserEmailWizardStepForm.ts b/src/main/resources/_static/app/wizard/UserEmailWizardStepForm.ts similarity index 100% rename from src/main/resources/static/app/wizard/UserEmailWizardStepForm.ts rename to src/main/resources/_static/app/wizard/UserEmailWizardStepForm.ts diff --git a/src/main/resources/static/app/wizard/UserItemWizardPanel.ts b/src/main/resources/_static/app/wizard/UserItemWizardPanel.ts similarity index 100% rename from src/main/resources/static/app/wizard/UserItemWizardPanel.ts rename to src/main/resources/_static/app/wizard/UserItemWizardPanel.ts diff --git a/src/main/resources/static/app/wizard/UserItemWizardPanelParams.ts b/src/main/resources/_static/app/wizard/UserItemWizardPanelParams.ts similarity index 100% rename from src/main/resources/static/app/wizard/UserItemWizardPanelParams.ts rename to src/main/resources/_static/app/wizard/UserItemWizardPanelParams.ts diff --git a/src/main/resources/static/app/wizard/UserItemWizardStepForm.ts b/src/main/resources/_static/app/wizard/UserItemWizardStepForm.ts similarity index 100% rename from src/main/resources/static/app/wizard/UserItemWizardStepForm.ts rename to src/main/resources/_static/app/wizard/UserItemWizardStepForm.ts diff --git a/src/main/resources/static/app/wizard/UserKeyDetailsDialog.ts b/src/main/resources/_static/app/wizard/UserKeyDetailsDialog.ts similarity index 100% rename from src/main/resources/static/app/wizard/UserKeyDetailsDialog.ts rename to src/main/resources/_static/app/wizard/UserKeyDetailsDialog.ts diff --git a/src/main/resources/static/app/wizard/UserMembershipsWizardStepForm.ts b/src/main/resources/_static/app/wizard/UserMembershipsWizardStepForm.ts similarity index 100% rename from src/main/resources/static/app/wizard/UserMembershipsWizardStepForm.ts rename to src/main/resources/_static/app/wizard/UserMembershipsWizardStepForm.ts diff --git a/src/main/resources/static/app/wizard/UserPasswordWizardStepForm.ts b/src/main/resources/_static/app/wizard/UserPasswordWizardStepForm.ts similarity index 100% rename from src/main/resources/static/app/wizard/UserPasswordWizardStepForm.ts rename to src/main/resources/_static/app/wizard/UserPasswordWizardStepForm.ts diff --git a/src/main/resources/static/app/wizard/UserWizardPanel.ts b/src/main/resources/_static/app/wizard/UserWizardPanel.ts similarity index 100% rename from src/main/resources/static/app/wizard/UserWizardPanel.ts rename to src/main/resources/_static/app/wizard/UserWizardPanel.ts diff --git a/src/main/resources/static/app/wizard/action/DeleteUserItemAction.ts b/src/main/resources/_static/app/wizard/action/DeleteUserItemAction.ts similarity index 100% rename from src/main/resources/static/app/wizard/action/DeleteUserItemAction.ts rename to src/main/resources/_static/app/wizard/action/DeleteUserItemAction.ts diff --git a/src/main/resources/static/app/wizard/action/UserItemWizardActions.ts b/src/main/resources/_static/app/wizard/action/UserItemWizardActions.ts similarity index 100% rename from src/main/resources/static/app/wizard/action/UserItemWizardActions.ts rename to src/main/resources/_static/app/wizard/action/UserItemWizardActions.ts diff --git a/src/main/resources/static/graphql/GraphQlRequest.ts b/src/main/resources/_static/graphql/GraphQlRequest.ts similarity index 100% rename from src/main/resources/static/graphql/GraphQlRequest.ts rename to src/main/resources/_static/graphql/GraphQlRequest.ts diff --git a/src/main/resources/static/graphql/ListGraphQlRequest.ts b/src/main/resources/_static/graphql/ListGraphQlRequest.ts similarity index 100% rename from src/main/resources/static/graphql/ListGraphQlRequest.ts rename to src/main/resources/_static/graphql/ListGraphQlRequest.ts diff --git a/src/main/resources/static/graphql/aggregation/UserItemAggregationHelper.ts b/src/main/resources/_static/graphql/aggregation/UserItemAggregationHelper.ts similarity index 100% rename from src/main/resources/static/graphql/aggregation/UserItemAggregationHelper.ts rename to src/main/resources/_static/graphql/aggregation/UserItemAggregationHelper.ts diff --git a/src/main/resources/static/graphql/aggregation/UserItemBucketAggregationJson.ts b/src/main/resources/_static/graphql/aggregation/UserItemBucketAggregationJson.ts similarity index 100% rename from src/main/resources/static/graphql/aggregation/UserItemBucketAggregationJson.ts rename to src/main/resources/_static/graphql/aggregation/UserItemBucketAggregationJson.ts diff --git a/src/main/resources/static/graphql/idprovider/CreateIdProviderRequest.ts b/src/main/resources/_static/graphql/idprovider/CreateIdProviderRequest.ts similarity index 100% rename from src/main/resources/static/graphql/idprovider/CreateIdProviderRequest.ts rename to src/main/resources/_static/graphql/idprovider/CreateIdProviderRequest.ts diff --git a/src/main/resources/static/graphql/idprovider/DeleteIdProviderRequest.ts b/src/main/resources/_static/graphql/idprovider/DeleteIdProviderRequest.ts similarity index 100% rename from src/main/resources/static/graphql/idprovider/DeleteIdProviderRequest.ts rename to src/main/resources/_static/graphql/idprovider/DeleteIdProviderRequest.ts diff --git a/src/main/resources/static/graphql/idprovider/GetDefaultIdProviderRequest.ts b/src/main/resources/_static/graphql/idprovider/GetDefaultIdProviderRequest.ts similarity index 100% rename from src/main/resources/static/graphql/idprovider/GetDefaultIdProviderRequest.ts rename to src/main/resources/_static/graphql/idprovider/GetDefaultIdProviderRequest.ts diff --git a/src/main/resources/static/graphql/idprovider/GetIdProviderByKeyRequest.ts b/src/main/resources/_static/graphql/idprovider/GetIdProviderByKeyRequest.ts similarity index 100% rename from src/main/resources/static/graphql/idprovider/GetIdProviderByKeyRequest.ts rename to src/main/resources/_static/graphql/idprovider/GetIdProviderByKeyRequest.ts diff --git a/src/main/resources/static/graphql/idprovider/IdProviderListResult.ts b/src/main/resources/_static/graphql/idprovider/IdProviderListResult.ts similarity index 100% rename from src/main/resources/static/graphql/idprovider/IdProviderListResult.ts rename to src/main/resources/_static/graphql/idprovider/IdProviderListResult.ts diff --git a/src/main/resources/static/graphql/idprovider/ListIdProvidersRequest.ts b/src/main/resources/_static/graphql/idprovider/ListIdProvidersRequest.ts similarity index 100% rename from src/main/resources/static/graphql/idprovider/ListIdProvidersRequest.ts rename to src/main/resources/_static/graphql/idprovider/ListIdProvidersRequest.ts diff --git a/src/main/resources/static/graphql/idprovider/SaveIdProviderRequest.ts b/src/main/resources/_static/graphql/idprovider/SaveIdProviderRequest.ts similarity index 100% rename from src/main/resources/static/graphql/idprovider/SaveIdProviderRequest.ts rename to src/main/resources/_static/graphql/idprovider/SaveIdProviderRequest.ts diff --git a/src/main/resources/static/graphql/idprovider/UpdateIdProviderRequest.ts b/src/main/resources/_static/graphql/idprovider/UpdateIdProviderRequest.ts similarity index 100% rename from src/main/resources/static/graphql/idprovider/UpdateIdProviderRequest.ts rename to src/main/resources/_static/graphql/idprovider/UpdateIdProviderRequest.ts diff --git a/src/main/resources/static/graphql/principal/DeletePrincipalRequest.ts b/src/main/resources/_static/graphql/principal/DeletePrincipalRequest.ts similarity index 100% rename from src/main/resources/static/graphql/principal/DeletePrincipalRequest.ts rename to src/main/resources/_static/graphql/principal/DeletePrincipalRequest.ts diff --git a/src/main/resources/static/graphql/principal/GetPrincipalByKeyRequest.ts b/src/main/resources/_static/graphql/principal/GetPrincipalByKeyRequest.ts similarity index 100% rename from src/main/resources/static/graphql/principal/GetPrincipalByKeyRequest.ts rename to src/main/resources/_static/graphql/principal/GetPrincipalByKeyRequest.ts diff --git a/src/main/resources/static/graphql/principal/GetPrincipalsByKeysRequest.ts b/src/main/resources/_static/graphql/principal/GetPrincipalsByKeysRequest.ts similarity index 100% rename from src/main/resources/static/graphql/principal/GetPrincipalsByKeysRequest.ts rename to src/main/resources/_static/graphql/principal/GetPrincipalsByKeysRequest.ts diff --git a/src/main/resources/static/graphql/principal/GetPrincipalsExistenceRequest.ts b/src/main/resources/_static/graphql/principal/GetPrincipalsExistenceRequest.ts similarity index 100% rename from src/main/resources/static/graphql/principal/GetPrincipalsExistenceRequest.ts rename to src/main/resources/_static/graphql/principal/GetPrincipalsExistenceRequest.ts diff --git a/src/main/resources/static/graphql/principal/ListItemsRequest.ts b/src/main/resources/_static/graphql/principal/ListItemsRequest.ts similarity index 100% rename from src/main/resources/static/graphql/principal/ListItemsRequest.ts rename to src/main/resources/_static/graphql/principal/ListItemsRequest.ts diff --git a/src/main/resources/static/graphql/principal/ListPrincipalsNamesRequest.ts b/src/main/resources/_static/graphql/principal/ListPrincipalsNamesRequest.ts similarity index 100% rename from src/main/resources/static/graphql/principal/ListPrincipalsNamesRequest.ts rename to src/main/resources/_static/graphql/principal/ListPrincipalsNamesRequest.ts diff --git a/src/main/resources/static/graphql/principal/ListPrincipalsRequest.ts b/src/main/resources/_static/graphql/principal/ListPrincipalsRequest.ts similarity index 100% rename from src/main/resources/static/graphql/principal/ListPrincipalsRequest.ts rename to src/main/resources/_static/graphql/principal/ListPrincipalsRequest.ts diff --git a/src/main/resources/static/graphql/principal/ListTypesRequest.ts b/src/main/resources/_static/graphql/principal/ListTypesRequest.ts similarity index 100% rename from src/main/resources/static/graphql/principal/ListTypesRequest.ts rename to src/main/resources/_static/graphql/principal/ListTypesRequest.ts diff --git a/src/main/resources/static/graphql/principal/ListUserItemsRequest.ts b/src/main/resources/_static/graphql/principal/ListUserItemsRequest.ts similarity index 100% rename from src/main/resources/static/graphql/principal/ListUserItemsRequest.ts rename to src/main/resources/_static/graphql/principal/ListUserItemsRequest.ts diff --git a/src/main/resources/static/graphql/principal/group/CreateGroupRequest.ts b/src/main/resources/_static/graphql/principal/group/CreateGroupRequest.ts similarity index 100% rename from src/main/resources/static/graphql/principal/group/CreateGroupRequest.ts rename to src/main/resources/_static/graphql/principal/group/CreateGroupRequest.ts diff --git a/src/main/resources/static/graphql/principal/group/UpdateGroupRequest.ts b/src/main/resources/_static/graphql/principal/group/UpdateGroupRequest.ts similarity index 100% rename from src/main/resources/static/graphql/principal/group/UpdateGroupRequest.ts rename to src/main/resources/_static/graphql/principal/group/UpdateGroupRequest.ts diff --git a/src/main/resources/static/graphql/principal/role/CreateRoleRequest.ts b/src/main/resources/_static/graphql/principal/role/CreateRoleRequest.ts similarity index 100% rename from src/main/resources/static/graphql/principal/role/CreateRoleRequest.ts rename to src/main/resources/_static/graphql/principal/role/CreateRoleRequest.ts diff --git a/src/main/resources/static/graphql/principal/role/UpdateRoleRequest.ts b/src/main/resources/_static/graphql/principal/role/UpdateRoleRequest.ts similarity index 100% rename from src/main/resources/static/graphql/principal/role/UpdateRoleRequest.ts rename to src/main/resources/_static/graphql/principal/role/UpdateRoleRequest.ts diff --git a/src/main/resources/static/graphql/principal/user/AddPublicKeyRequest.ts b/src/main/resources/_static/graphql/principal/user/AddPublicKeyRequest.ts similarity index 100% rename from src/main/resources/static/graphql/principal/user/AddPublicKeyRequest.ts rename to src/main/resources/_static/graphql/principal/user/AddPublicKeyRequest.ts diff --git a/src/main/resources/static/graphql/principal/user/CreateUserRequest.ts b/src/main/resources/_static/graphql/principal/user/CreateUserRequest.ts similarity index 100% rename from src/main/resources/static/graphql/principal/user/CreateUserRequest.ts rename to src/main/resources/_static/graphql/principal/user/CreateUserRequest.ts diff --git a/src/main/resources/static/graphql/principal/user/DeletePublicKeyRequest.ts b/src/main/resources/_static/graphql/principal/user/DeletePublicKeyRequest.ts similarity index 100% rename from src/main/resources/static/graphql/principal/user/DeletePublicKeyRequest.ts rename to src/main/resources/_static/graphql/principal/user/DeletePublicKeyRequest.ts diff --git a/src/main/resources/static/graphql/principal/user/UpdatePasswordRequest.ts b/src/main/resources/_static/graphql/principal/user/UpdatePasswordRequest.ts similarity index 100% rename from src/main/resources/static/graphql/principal/user/UpdatePasswordRequest.ts rename to src/main/resources/_static/graphql/principal/user/UpdatePasswordRequest.ts diff --git a/src/main/resources/static/graphql/principal/user/UpdateUserRequest.ts b/src/main/resources/_static/graphql/principal/user/UpdateUserRequest.ts similarity index 100% rename from src/main/resources/static/graphql/principal/user/UpdateUserRequest.ts rename to src/main/resources/_static/graphql/principal/user/UpdateUserRequest.ts diff --git a/src/main/resources/static/graphql/repository/ListRepositoriesRequest.ts b/src/main/resources/_static/graphql/repository/ListRepositoriesRequest.ts similarity index 100% rename from src/main/resources/static/graphql/repository/ListRepositoriesRequest.ts rename to src/main/resources/_static/graphql/repository/ListRepositoriesRequest.ts diff --git a/src/main/resources/static/graphql/useritem/DeleteUserItemJson.ts b/src/main/resources/_static/graphql/useritem/DeleteUserItemJson.ts similarity index 100% rename from src/main/resources/static/graphql/useritem/DeleteUserItemJson.ts rename to src/main/resources/_static/graphql/useritem/DeleteUserItemJson.ts diff --git a/src/main/resources/static/graphql/useritem/DeleteUserItemRequest.ts b/src/main/resources/_static/graphql/useritem/DeleteUserItemRequest.ts similarity index 100% rename from src/main/resources/static/graphql/useritem/DeleteUserItemRequest.ts rename to src/main/resources/_static/graphql/useritem/DeleteUserItemRequest.ts diff --git a/src/main/resources/static/graphql/useritem/DeleteUserItemResult.ts b/src/main/resources/_static/graphql/useritem/DeleteUserItemResult.ts similarity index 100% rename from src/main/resources/static/graphql/useritem/DeleteUserItemResult.ts rename to src/main/resources/_static/graphql/useritem/DeleteUserItemResult.ts diff --git a/src/main/resources/static/main.ts b/src/main/resources/_static/main.ts similarity index 74% rename from src/main/resources/static/main.ts rename to src/main/resources/_static/main.ts index 5ce48d1ff..9f090610f 100644 --- a/src/main/resources/static/main.ts +++ b/src/main/resources/_static/main.ts @@ -1,3 +1,21 @@ +import {Store} from '@enonic/lib-admin-ui/store/Store'; +import {StyleHelper} from '@enonic/lib-admin-ui/StyleHelper'; + +import '@enonic/lib-admin-ui/form/inputtype/support/NoInputTypeFoundView'; +import '@enonic/lib-admin-ui/form/inputtype/checkbox/Checkbox'; +import '@enonic/lib-admin-ui/form/inputtype/combobox/ComboBox'; +import '@enonic/lib-admin-ui/form/inputtype/time/Date'; +import '@enonic/lib-admin-ui/form/inputtype/time/DateTime'; +import '@enonic/lib-admin-ui/form/inputtype/time/DateTimeRange'; +import '@enonic/lib-admin-ui/form/inputtype/time/Time'; +import '@enonic/lib-admin-ui/form/inputtype/number/Double'; +import '@enonic/lib-admin-ui/form/inputtype/number/Long'; +import '@enonic/lib-admin-ui/form/inputtype/geo/GeoPoint'; +import '@enonic/lib-admin-ui/form/inputtype/principal/PrincipalSelector'; +import '@enonic/lib-admin-ui/form/inputtype/radiobutton/RadioButton'; +import '@enonic/lib-admin-ui/form/inputtype/text/TextArea'; +import '@enonic/lib-admin-ui/form/inputtype/text/TextLine'; + import {UserAppPanel} from './app/UserAppPanel'; import {ChangeUserPasswordDialog} from './app/wizard/ChangeUserPasswordDialog'; import {Router} from './app/Router'; @@ -5,6 +23,7 @@ import {ShowNewPrincipalDialogEvent} from './app/browse/ShowNewPrincipalDialogEv import {NewPrincipalDialog} from './app/create/NewPrincipalDialog'; import {PrincipalServerEventsHandler} from './app/event/PrincipalServerEventsHandler'; import {UsersServerEventsListener} from './app/event/UsersServerEventsListener'; + import {Body} from '@enonic/lib-admin-ui/dom/Body'; import {Application} from '@enonic/lib-admin-ui/app/Application'; import {Path} from '@enonic/lib-admin-ui/rest/Path'; @@ -21,6 +40,13 @@ import { PrincipalSelector } from './app/inputtype/'; +const hasJQuery = Store.instance().has('$'); +if (!hasJQuery) { + Store.instance().set('$', $); +} + +StyleHelper.setCurrentPrefix(StyleHelper.ADMIN_PREFIX); + const body = Body.get(); InputTypeManager.register(new Class('AuthApplicationSelector', AuthApplicationSelector)); diff --git a/src/main/resources/static/tsconfig.json b/src/main/resources/_static/tsconfig.json similarity index 100% rename from src/main/resources/static/tsconfig.json rename to src/main/resources/_static/tsconfig.json diff --git a/src/main/resources/static/util/CryptoWorker.ts b/src/main/resources/_static/util/CryptoWorker.ts similarity index 100% rename from src/main/resources/static/util/CryptoWorker.ts rename to src/main/resources/_static/util/CryptoWorker.ts diff --git a/src/main/resources/static/util/UrlHelper.ts b/src/main/resources/_static/util/UrlHelper.ts similarity index 100% rename from src/main/resources/static/util/UrlHelper.ts rename to src/main/resources/_static/util/UrlHelper.ts diff --git a/src/main/resources/static/worker/RSAKeysWorker.ts b/src/main/resources/_static/worker/RSAKeysWorker.ts similarity index 100% rename from src/main/resources/static/worker/RSAKeysWorker.ts rename to src/main/resources/_static/worker/RSAKeysWorker.ts diff --git a/src/main/resources/admin/tools/main/main.html b/src/main/resources/admin/tools/main/main.html index fa81d3452..4fc509761 100644 --- a/src/main/resources/admin/tools/main/main.html +++ b/src/main/resources/admin/tools/main/main.html @@ -1,8 +1,14 @@ + + + + + + @@ -34,8 +40,6 @@ - - diff --git a/src/main/resources/admin/tools/main/main.ts b/src/main/resources/admin/tools/main/main.ts index 75f5aa1e4..ef1e54f69 100644 --- a/src/main/resources/admin/tools/main/main.ts +++ b/src/main/resources/admin/tools/main/main.ts @@ -17,7 +17,7 @@ import { serviceUrl } from '/lib/xp/portal'; import {localize} from '/lib/xp/i18n'; -import {immutableGetter, getAdminUrl} from '/lib/users/urlHelper'; +import {immutableGetter, getAdminUrl, getAdminNodeModuleUrl} from '/lib/users/urlHelper'; import { // FILEPATH_MANIFEST_CJS, FILEPATH_MANIFEST_NODE_MODULES, @@ -46,14 +46,15 @@ function get(_request: Request): Response { locale: getLocales() }), configServiceUrl: serviceUrl({service: 'config'}), - jqueryUrl: getAdminUrl({ - manifestPath: FILEPATH_MANIFEST_NODE_MODULES, - path: 'jquery/dist/jquery.min.js', - }, TOOL_NAME), - jqueryUiUrl: getAdminUrl({ - manifestPath: FILEPATH_MANIFEST_NODE_MODULES, - path: 'jquery-ui-dist/jquery-ui.min.js', - }, TOOL_NAME), + dompurifyUrl: getAdminNodeModuleUrl('dompurify/dist/purify.min.js', TOOL_NAME), + signalsUrl: getAdminNodeModuleUrl('signals/dist/signals.min.js', TOOL_NAME), + hasherUrl: getAdminNodeModuleUrl('hasher/dist/js/hasher.min.js', TOOL_NAME), + jqueryUrl: getAdminNodeModuleUrl('jquery/dist/jquery.min.js', TOOL_NAME), + jqueryUiUrl: getAdminNodeModuleUrl('jquery-ui-dist/jquery-ui.min.js', TOOL_NAME), + mousetrapUrl: getAdminNodeModuleUrl('mousetrap/mousetrap.min.js', TOOL_NAME), + owaspUrl: getAdminNodeModuleUrl('owasp-password-strength-test/owasp-password-strength-test.js', TOOL_NAME), + // qUrl: getAdminNodeModuleUrl('q/q.js', TOOL_NAME), + legacySlickgridUrl: getAdminNodeModuleUrl('@enonic/legacy-slickgrid/index.js', TOOL_NAME), launcherPath: getLauncherPath(), }; @@ -66,7 +67,6 @@ function get(_request: Request): Response { }; } -router.get('', (r: Request) => get(r)); // Default admin tool path -router.get('/', (r: Request) => get(r)); // Just in case someone adds a slash on the end +router.get('/?', (r: Request) => get(r)); export const all = (r: Request) => router.dispatch(r); diff --git a/src/main/resources/constants.ts b/src/main/resources/constants.ts index 245a4afc9..fcc2a3f03 100644 --- a/src/main/resources/constants.ts +++ b/src/main/resources/constants.ts @@ -1,4 +1,4 @@ -export const GETTER_ROOT = 'static'; +export const GETTER_ROOT = '_static'; export const FILEPATH_MANIFEST_CJS = `/${GETTER_ROOT}/manifest.cjs.json`; // export const FILEPATH_MANIFEST_ESM = `/${GETTER_ROOT}/manifest.esm.json`; export const FILEPATH_MANIFEST_NODE_MODULES = `/${GETTER_ROOT}/node_modules-manifest.json`; diff --git a/src/main/resources/lib/users/urlHelper.ts b/src/main/resources/lib/users/urlHelper.ts index 617e577b0..19e989d55 100644 --- a/src/main/resources/lib/users/urlHelper.ts +++ b/src/main/resources/lib/users/urlHelper.ts @@ -51,6 +51,11 @@ export const getAdminUrl = ({ }); }; +export const getAdminNodeModuleUrl = (path: string, tool: string) => getAdminUrl({ + manifestPath: FILEPATH_MANIFEST_NODE_MODULES, + path, +}, tool); + export const immutableGetter = buildGetter({ etag: false, // default is true in production and false in development getCleanPath: (request: Request) => { diff --git a/src/main/resources/tsconfig.json b/src/main/resources/tsconfig.json index 86b99c14e..54f39c872 100644 --- a/src/main/resources/tsconfig.json +++ b/src/main/resources/tsconfig.json @@ -30,7 +30,7 @@ }, "exclude": [ "./assets/**/*", - "./static/**/*", + "./_static/**/*", ], "include": [ "./**/*.ts" diff --git a/tsup.config.ts b/tsup.config.ts index 30a76b867..a6611987f 100644 --- a/tsup.config.ts +++ b/tsup.config.ts @@ -3,6 +3,7 @@ import type { Options } from './tsup'; import { defineConfig } from 'tsup'; import { DIR_DST, + DIR_DST_STATIC, DIR_DST_TEST } from './tsup/constants'; @@ -17,7 +18,7 @@ export default defineConfig((options: Options) => { if (options.d === 'build/resources/main/assets') { return import('./tsup/assets').then(m => m.default()); } - if (options.d === 'build/resources/main/static') { + if (options.d === DIR_DST_STATIC) { return import('./tsup/static').then(m => m.default()); } throw new Error(`Unconfigured directory:${options.d}!`) diff --git a/tsup/assets.ts b/tsup/assets.ts index a457b4ed9..fb27156b7 100644 --- a/tsup/assets.ts +++ b/tsup/assets.ts @@ -1,15 +1,18 @@ import type { Options } from '.'; import esbuildPluginExternalGlobal from 'esbuild-plugin-external-global'; - +import { + DIR_DST_ASSETS, + DIR_SRC_ASSETS +} from './constants'; export default function buildAssetConfig(): Options { return { bundle: true, dts: false, // d.ts files are use useless at runtime entry: { - 'js/app-users-bundle': 'src/main/resources/assets/js/main.ts', - 'js/crypto-worker': 'src/main/resources/assets/js/worker/RSAKeysWorker.ts', + 'js/app-users-bundle': `${DIR_SRC_ASSETS}/js/main.ts`, + 'js/crypto-worker': `${DIR_SRC_ASSETS}/js/worker/RSAKeysWorker.ts`, }, esbuildOptions(options, context) { options.banner = { @@ -33,10 +36,10 @@ export default function buildAssetConfig(): Options { 'owasp-password-strength-test', 'q' ], - outDir: 'build/resources/main/assets', + outDir: DIR_DST_ASSETS, platform: 'browser', silent: ['QUIET', 'WARN'].includes(process.env.LOG_LEVEL_FROM_GRADLE||''), sourcemap: process.env.NODE_ENV === 'development', - tsconfig: 'src/main/resources/assets/tsconfig.json', + tsconfig: `${DIR_SRC_ASSETS}/tsconfig.json`, }; } diff --git a/tsup/constants.ts b/tsup/constants.ts index d5a8772b0..9638c5bb6 100644 --- a/tsup/constants.ts +++ b/tsup/constants.ts @@ -1,7 +1,9 @@ export const DIR_DST = 'build/resources/main'; +export const DIR_DST_ASSETS = `${DIR_DST}/assets`; +export const DIR_DST_STATIC = `${DIR_DST}/_static`; export const DIR_DST_TEST = 'build/resources/test'; export const DIR_SRC = 'src/main/resources'; export const DIR_SRC_ASSETS = `${DIR_SRC}/assets`; -export const DIR_SRC_STATIC = `${DIR_SRC}/static`; +export const DIR_SRC_STATIC = `${DIR_SRC}/_static`; export const DIR_SRC_TEST = 'src/test/resources'; diff --git a/tsup/static.ts b/tsup/static.ts index 080a8c3a3..cd88f677b 100644 --- a/tsup/static.ts +++ b/tsup/static.ts @@ -3,34 +3,51 @@ import type { Options } from '.'; import CopyWithHashPlugin from '@enonic/esbuild-plugin-copy-with-hash'; import TsupPluginManifest from '@enonic/tsup-plugin-manifest'; +import GlobalsPlugin from 'esbuild-plugin-globals'; + import { - DIR_DST, + DIR_DST_STATIC, DIR_SRC_STATIC } from './constants'; -const DIR_DST_STATIC = `${DIR_DST}/static`; - - export default function buildStaticConfig(): Options { return { bundle: true, dts: false, - // entry, entry: { - 'app-users-bundle': 'src/main/resources/static/main.ts', - 'crypto-worker': 'src/main/resources/static/worker/RSAKeysWorker.ts', + 'app-users-bundle': `${DIR_SRC_STATIC}/main.ts`, + 'crypto-worker': `${DIR_SRC_STATIC}/worker/RSAKeysWorker.ts`, }, esbuildOptions(options, context) { options.keepNames = true; }, esbuildPlugins: [ + GlobalsPlugin({ + '@enonic/legacy-slickgrid.*'(modulename) { + return 'Slick'; + }, + 'dompurify': 'DOMPurify', + 'hasher': 'hasher', + 'jquery': '$', + 'mousetrap': 'Mousetrap', + 'owasp-password-strength-test': 'owaspPasswordStrengthTest', + // 'q': 'Q', + 'signals': 'signals', + }), CopyWithHashPlugin({ context: 'node_modules', manifest: `node_modules-manifest.json`, patterns: [ + '@enonic/legacy-slickgrid/index.js', + 'dompurify/dist/*.js', + 'hasher/dist/js/*.js', 'jquery/dist/*.*', 'jquery-ui-dist/*.*', + 'mousetrap/mousetrap*.js', + 'owasp-password-strength-test/owasp-password-strength-test.js', + // 'q/*.js', + 'signals/dist/*.js', ] }), TsupPluginManifest({ @@ -54,14 +71,21 @@ export default function buildStaticConfig(): Options { minify: false, - noExternal: [ // Same as dependencies in package.json + // NOTE: By default tsup bundles all import-ed modules except dependencies and peerDependencies. + noExternal: [ /@enonic\/lib-admin-ui.*/, + 'nanoid', // nanoid@5 can't be CJS globalized + 'q', // There are errors when trying to use Q as a global + // These need to be listed here for esbuildPluginExternalGlobal to work + /@enonic\/legacy-slickgrid.*/, + 'dompurify', + 'jquery', 'hasher', - 'nanoid', + 'mousetrap', 'owasp-password-strength-test', - 'q' + 'signals' ], - outDir: 'build/resources/main/static', + outDir: DIR_DST_STATIC, platform: 'browser', silent: ['QUIET', 'WARN'].includes(process.env.LOG_LEVEL_FROM_GRADLE||''), splitting: false, @@ -70,6 +94,6 @@ export default function buildStaticConfig(): Options { // INFO: Sourcemaps works when target is set here, rather than in tsconfig.json target: 'es2020', - tsconfig: 'src/main/resources/static/tsconfig.json', - }; + tsconfig: `${DIR_SRC_STATIC}/tsconfig.json`, + } as Options; } From 6cd1fb9cfc253be85abf5326e62d6dfa5e0dfc54 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Wed, 1 Nov 2023 14:32:53 +0100 Subject: [PATCH 42/43] Use @enonic/legacy-slickgrid from npm, not file: --- package-lock.json | 6 ++++-- package.json | 2 +- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/package-lock.json b/package-lock.json index 9ae0eb1b0..b5914cfe4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -254,8 +254,8 @@ }, "node_modules/@enonic/legacy-slickgrid": { "version": "0.0.1", - "resolved": "file:../npm-legacy-slickgrid", - "license": "MIT", + "resolved": "https://registry.npmjs.org/@enonic/legacy-slickgrid/-/legacy-slickgrid-0.0.1.tgz", + "integrity": "sha512-9HVwJg+ZQ0+KA0e3yF2p9n8q+FqZUJg/zuG9n5mO/bhsniNjTwfZzH43bALN67VHz2zcyIOYZfxZZcHjr4j4Pw==", "peerDependencies": { "jquery": "^3.7.1", "jquery-ui": "^1.13.2", @@ -8245,6 +8245,8 @@ }, "@enonic/legacy-slickgrid": { "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@enonic/legacy-slickgrid/-/legacy-slickgrid-0.0.1.tgz", + "integrity": "sha512-9HVwJg+ZQ0+KA0e3yF2p9n8q+FqZUJg/zuG9n5mO/bhsniNjTwfZzH43bALN67VHz2zcyIOYZfxZZcHjr4j4Pw==", "requires": {} }, "@enonic/lib-admin-ui": { diff --git a/package.json b/package.json index 448bb093f..e47e3b1ef 100644 --- a/package.json +++ b/package.json @@ -21,8 +21,8 @@ "prebuild:main:css": "npm run less" }, "dependencies": { - "@enonic/lib-admin-ui": "file:./.xp/dev/lib-admin-ui", "@enonic/legacy-slickgrid": "^0.0.1", + "@enonic/lib-admin-ui": "file:./.xp/dev/lib-admin-ui", "hasher": "^1.2.0", "jquery": "^3.7.1", "jquery-ui-dist": "^1.13.2", From 8fc6dc174d96185d94d5976f347ea0bf598e93d3 Mon Sep 17 00:00:00 2001 From: Christian Westgaard Date: Wed, 8 Nov 2023 10:20:55 +0100 Subject: [PATCH 43/43] With the new launcher Q can be a global --- src/main/resources/admin/tools/main/main.html | 1 + src/main/resources/admin/tools/main/main.ts | 2 +- tsup/static.ts | 6 +++--- 3 files changed, 5 insertions(+), 4 deletions(-) diff --git a/src/main/resources/admin/tools/main/main.html b/src/main/resources/admin/tools/main/main.html index 4fc509761..39a52e750 100644 --- a/src/main/resources/admin/tools/main/main.html +++ b/src/main/resources/admin/tools/main/main.html @@ -1,6 +1,7 @@ + diff --git a/src/main/resources/admin/tools/main/main.ts b/src/main/resources/admin/tools/main/main.ts index ef1e54f69..4eb3d7e76 100644 --- a/src/main/resources/admin/tools/main/main.ts +++ b/src/main/resources/admin/tools/main/main.ts @@ -53,7 +53,7 @@ function get(_request: Request): Response { jqueryUiUrl: getAdminNodeModuleUrl('jquery-ui-dist/jquery-ui.min.js', TOOL_NAME), mousetrapUrl: getAdminNodeModuleUrl('mousetrap/mousetrap.min.js', TOOL_NAME), owaspUrl: getAdminNodeModuleUrl('owasp-password-strength-test/owasp-password-strength-test.js', TOOL_NAME), - // qUrl: getAdminNodeModuleUrl('q/q.js', TOOL_NAME), + qUrl: getAdminNodeModuleUrl('q/q.js', TOOL_NAME), legacySlickgridUrl: getAdminNodeModuleUrl('@enonic/legacy-slickgrid/index.js', TOOL_NAME), launcherPath: getLauncherPath(), }; diff --git a/tsup/static.ts b/tsup/static.ts index cd88f677b..68c7f1736 100644 --- a/tsup/static.ts +++ b/tsup/static.ts @@ -32,7 +32,7 @@ export default function buildStaticConfig(): Options { 'jquery': '$', 'mousetrap': 'Mousetrap', 'owasp-password-strength-test': 'owaspPasswordStrengthTest', - // 'q': 'Q', + 'q': 'Q', 'signals': 'signals', }), CopyWithHashPlugin({ @@ -46,7 +46,7 @@ export default function buildStaticConfig(): Options { 'jquery-ui-dist/*.*', 'mousetrap/mousetrap*.js', 'owasp-password-strength-test/owasp-password-strength-test.js', - // 'q/*.js', + 'q/*.js', 'signals/dist/*.js', ] }), @@ -75,7 +75,6 @@ export default function buildStaticConfig(): Options { noExternal: [ /@enonic\/lib-admin-ui.*/, 'nanoid', // nanoid@5 can't be CJS globalized - 'q', // There are errors when trying to use Q as a global // These need to be listed here for esbuildPluginExternalGlobal to work /@enonic\/legacy-slickgrid.*/, 'dompurify', @@ -83,6 +82,7 @@ export default function buildStaticConfig(): Options { 'hasher', 'mousetrap', 'owasp-password-strength-test', + 'q', 'signals' ], outDir: DIR_DST_STATIC,