From a838951063f4c42830f022533ed7f703dd5378cb Mon Sep 17 00:00:00 2001 From: Ilya Goncharov Date: Mon, 12 Aug 2024 13:39:13 +0000 Subject: [PATCH] [Wasm] Use kotlin-web-helpers instead of kotlin-test-js-runner ^KT-70621 fixed ^KT-70297 fixed --- .gitignore | 1 - .space/CODEOWNERS | 1 - build.gradle.kts | 1 - .../gradle/targets/js/NpmPackages.kt | 1 + .../src/main/resources/NpmVersions.kt.vm | 2 - .../targets/js/KotlinGradleNpmPackage.kt | 15 - .../kotlin/gradle/targets/js/NpmVersions.kt | 3 +- .../resolver/KotlinCompilationNpmResolver.kt | 3 - .../targets/js/testing/karma/KotlinKarma.kt | 19 +- .../targets/js/testing/mocha/KotlinMocha.kt | 7 +- .../targets/js/webpack/KotlinWebpackConfig.kt | 6 +- .../tools/kotlin-test-js-runner/README.md | 6 - .../kotlin-test-js-runner/build.gradle.kts | 142 - libraries/tools/kotlin-test-js-runner/env.ts | 3 - .../karma-debug-framework.js | 34 - .../karma-debug-runner.js | 39 - .../karma-kotlin-debug-plugin.js | 8 - .../karma-kotlin-reporter.js | 284 -- .../karma-webpack-output.js | 10 - .../tools/kotlin-test-js-runner/karma.ts | 37 - .../mocha-kotlin-reporter.js | 142 - .../kotlin-test-js-runner/nodejs-empty.ts | 5 - .../tools/kotlin-test-js-runner/nodejs.ts | 16 - .../kotlin-test-js-runner/package-lock.json | 2388 ----------------- .../tools/kotlin-test-js-runner/package.json | 22 - .../kotlin-test-js-runner/rollup.config.mjs | 131 - .../kotlin-test-js-runner/src/Adapter.ts | 40 - .../src/CliArgsParser.ts | 153 -- .../src/CliFiltertingConfiguration.ts | 52 - .../src/DebugConfigurator.js | 101 - .../src/EmptyKotlinTestRunner.ts | 15 - .../src/KarmaWebpackOutputFramework.mjs | 27 - .../src/KotlinTestRunner.ts | 5 - .../src/KotlinTestTeamCityConsoleAdapter.ts | 80 - .../src/KotlinTestsFilter.ts | 198 -- .../src/KotlinTestsFilterDebug.ts | 32 - .../src/TeamCityMessagesFlow.ts | 24 - .../src/teamcity-format.d.ts | 21 - .../src/teamcity-format.js | 60 - .../tools/kotlin-test-js-runner/src/utils.ts | 70 - .../kotlin-test-js-runner/static/context.html | 30 - .../kotlin-test-js-runner/static/debug.html | 32 - .../kotlin-test-js-runner/tc-log-appender.js | 35 - .../tc-log-error-webpack.js | 61 - .../test/karma-webpack-output.test.mjs | 29 - .../tools/kotlin-test-js-runner/tsconfig.json | 12 - .../kotlin-test-js-runner/webpack-5-debug.js | 26 - .../tools/kotlin-test-js-runner/window.d.ts | 24 - license/README.md | 19 - .../kotlin-test-js-runner.pom | 29 - .../kotlin/code/CodeConformanceTest.kt | 6 - .../src/main/kotlin/jps.gradle.kts | 1 - .../buildsrc-compat/src/main/kotlin/tasks.kt | 1 - scripts/upgrade-lock-files.sh | 11 +- settings.gradle | 2 - 55 files changed, 22 insertions(+), 4500 deletions(-) delete mode 100644 libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinGradleNpmPackage.kt delete mode 100644 libraries/tools/kotlin-test-js-runner/README.md delete mode 100644 libraries/tools/kotlin-test-js-runner/build.gradle.kts delete mode 100644 libraries/tools/kotlin-test-js-runner/env.ts delete mode 100644 libraries/tools/kotlin-test-js-runner/karma-debug-framework.js delete mode 100644 libraries/tools/kotlin-test-js-runner/karma-debug-runner.js delete mode 100644 libraries/tools/kotlin-test-js-runner/karma-kotlin-debug-plugin.js delete mode 100644 libraries/tools/kotlin-test-js-runner/karma-kotlin-reporter.js delete mode 100644 libraries/tools/kotlin-test-js-runner/karma-webpack-output.js delete mode 100755 libraries/tools/kotlin-test-js-runner/karma.ts delete mode 100644 libraries/tools/kotlin-test-js-runner/mocha-kotlin-reporter.js delete mode 100755 libraries/tools/kotlin-test-js-runner/nodejs-empty.ts delete mode 100755 libraries/tools/kotlin-test-js-runner/nodejs.ts delete mode 100644 libraries/tools/kotlin-test-js-runner/package-lock.json delete mode 100644 libraries/tools/kotlin-test-js-runner/package.json delete mode 100644 libraries/tools/kotlin-test-js-runner/rollup.config.mjs delete mode 100644 libraries/tools/kotlin-test-js-runner/src/Adapter.ts delete mode 100644 libraries/tools/kotlin-test-js-runner/src/CliArgsParser.ts delete mode 100644 libraries/tools/kotlin-test-js-runner/src/CliFiltertingConfiguration.ts delete mode 100644 libraries/tools/kotlin-test-js-runner/src/DebugConfigurator.js delete mode 100644 libraries/tools/kotlin-test-js-runner/src/EmptyKotlinTestRunner.ts delete mode 100644 libraries/tools/kotlin-test-js-runner/src/KarmaWebpackOutputFramework.mjs delete mode 100644 libraries/tools/kotlin-test-js-runner/src/KotlinTestRunner.ts delete mode 100644 libraries/tools/kotlin-test-js-runner/src/KotlinTestTeamCityConsoleAdapter.ts delete mode 100644 libraries/tools/kotlin-test-js-runner/src/KotlinTestsFilter.ts delete mode 100644 libraries/tools/kotlin-test-js-runner/src/KotlinTestsFilterDebug.ts delete mode 100644 libraries/tools/kotlin-test-js-runner/src/TeamCityMessagesFlow.ts delete mode 100644 libraries/tools/kotlin-test-js-runner/src/teamcity-format.d.ts delete mode 100644 libraries/tools/kotlin-test-js-runner/src/teamcity-format.js delete mode 100644 libraries/tools/kotlin-test-js-runner/src/utils.ts delete mode 100644 libraries/tools/kotlin-test-js-runner/static/context.html delete mode 100644 libraries/tools/kotlin-test-js-runner/static/debug.html delete mode 100644 libraries/tools/kotlin-test-js-runner/tc-log-appender.js delete mode 100644 libraries/tools/kotlin-test-js-runner/tc-log-error-webpack.js delete mode 100644 libraries/tools/kotlin-test-js-runner/test/karma-webpack-output.test.mjs delete mode 100644 libraries/tools/kotlin-test-js-runner/tsconfig.json delete mode 100644 libraries/tools/kotlin-test-js-runner/webpack-5-debug.js delete mode 100644 libraries/tools/kotlin-test-js-runner/window.d.ts delete mode 100644 repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-test-js-runner/kotlin-test-js-runner.pom diff --git a/.gitignore b/.gitignore index 402382da80bea..ecc69cead53db 100644 --- a/.gitignore +++ b/.gitignore @@ -50,7 +50,6 @@ build/ .idea/uiDesigner.xml node_modules/ .rpt2_cache/ -libraries/tools/kotlin-test-js-runner/lib/ local.properties buildSrcTmp/ distTmp/ diff --git a/.space/CODEOWNERS b/.space/CODEOWNERS index de6be70c6821d..fd17cc7b7b82f 100644 --- a/.space/CODEOWNERS +++ b/.space/CODEOWNERS @@ -347,7 +347,6 @@ /libraries/tools/kotlin-stdlib-docs/ A.Qurbonzoda Vsevolod.Tolstopyato Ilya.Gorbunov Filipp.Zhinkin /libraries/tools/kotlin-stdlib-docs-legacy/ A.Qurbonzoda Vsevolod.Tolstopyato Ilya.Gorbunov Filipp.Zhinkin /libraries/tools/kotlin-stdlib-gen/ A.Qurbonzoda Vsevolod.Tolstopyato Ilya.Gorbunov Filipp.Zhinkin -/libraries/tools/kotlin-test-js-runner/ "Kotlin Wasm" /libraries/tools/kotlin-tooling-core/ "Kotlin Build Tools" "Kotlin in Fleet" /libraries/tools/kotlin-tooling-metadata/ "Kotlin Build Tools" /libraries/tools/kotlinp/ "Kotlin JVM" "Kotlin Common Backend" diff --git a/build.gradle.kts b/build.gradle.kts index 507ca8a4a9ec4..b12ae4ba45112 100644 --- a/build.gradle.kts +++ b/build.gradle.kts @@ -782,7 +782,6 @@ tasks { register("jsCompilerTest") { dependsOn(":js:js.tests:jsTest") dependsOn(":js:js.tests:runMocha") - dependsOn(":kotlin-test-js-runner:test") } register("jsFirCompilerTest") { diff --git a/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/NpmPackages.kt b/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/NpmPackages.kt index 74a3df5bae2ba..c0fbdd5279760 100644 --- a/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/NpmPackages.kt +++ b/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/kotlin/org/jetbrains/kotlin/generators/gradle/targets/js/NpmPackages.kt @@ -29,6 +29,7 @@ val npmPackages = listOf( NpmPackage("karma-webpack"), NpmPackage("karma-sourcemap-loader"), NpmPackage("typescript"), + NpmPackage("kotlin-web-helpers"), ) data class NpmPackage( diff --git a/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/resources/NpmVersions.kt.vm b/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/resources/NpmVersions.kt.vm index 9204c55863715..a5c4b3b556707 100644 --- a/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/resources/NpmVersions.kt.vm +++ b/libraries/tools/kotlin-gradle-plugin-npm-versions-codegen/src/main/resources/NpmVersions.kt.vm @@ -15,6 +15,4 @@ class $class : Serializable { #foreach( $dep in $dependencies ) val $dep.camelize() = NpmPackageVersion("$dep.name", "$dep.version") #end - - val kotlinJsTestRunner = KotlinGradleNpmPackage("test-js-runner") } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinGradleNpmPackage.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinGradleNpmPackage.kt deleted file mode 100644 index 2ac79ca83302a..0000000000000 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/KotlinGradleNpmPackage.kt +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -package org.jetbrains.kotlin.gradle.targets.js - -import org.gradle.api.Project -import org.gradle.api.artifacts.Dependency -import java.io.Serializable - -data class KotlinGradleNpmPackage(val simpleModuleName: String) : Serializable { - fun createDependency(project: Project): Dependency = - project.dependencies.create("org.jetbrains.kotlin:kotlin-$simpleModuleName") -} \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/NpmVersions.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/NpmVersions.kt index ab65f518a4f23..c4501b5f1a959 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/NpmVersions.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/NpmVersions.kt @@ -35,6 +35,5 @@ class NpmVersions : Serializable { val karmaWebpack = NpmPackageVersion("karma-webpack", "5.0.1") val karmaSourcemapLoader = NpmPackageVersion("karma-sourcemap-loader", "0.4.0") val typescript = NpmPackageVersion("typescript", "5.5.4") - - val kotlinJsTestRunner = KotlinGradleNpmPackage("test-js-runner") + val kotlinWebHelpers = NpmPackageVersion("kotlin-web-helpers", "2.0.0") } \ No newline at end of file diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt index 2863fc1fcb3de..3e75d39b98751 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/npm/resolver/KotlinCompilationNpmResolver.kt @@ -153,9 +153,6 @@ class KotlinCompilationNpmResolver( } } - // We don't have `kotlin-js-test-runner` in NPM yet - all.dependencies.add(rootResolver.versions.kotlinJsTestRunner.createDependency(project)) - return all } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt index 53f24013059de..1d1517b18f061 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/karma/KotlinKarma.kt @@ -101,6 +101,7 @@ class KotlinKarma( init { requiredDependencies.add(versions.karma) + requiredDependencies.add(versions.kotlinWebHelpers) useKotlinReporter() useWebpackOutputPlugin() @@ -152,11 +153,11 @@ class KotlinKarma( it.appendLine( """ config.plugins = config.plugins || []; - config.plugins.push('kotlin-test-js-runner/karma-kotlin-reporter.js'); + config.plugins.push('kotlin-web-helpers/dist/karma-kotlin-reporter.js'); config.loggers = [ { - type: 'kotlin-test-js-runner/tc-log-appender.js', + type: 'kotlin-web-helpers/dist/tc-log-appender.js', //default layout layout: { type: 'pattern', pattern: '%[%d{DATETIME}:%p [%c]: %]%m' } } @@ -176,7 +177,7 @@ class KotlinKarma( it.appendLine( """ config.plugins = config.plugins || []; - config.plugins.push('kotlin-test-js-runner/karma-webpack-output.js'); + config.plugins.push('kotlin-web-helpers/dist/karma-webpack-output.js'); """.trimIndent() ) } @@ -312,7 +313,7 @@ class KotlinKarma( ${ """ // https://github.com/webpack/webpack/issues/12951 - const PatchSourceMapSource = require('kotlin-test-js-runner/webpack-5-debug'); + const PatchSourceMapSource = require('kotlin-web-helpers/dist/webpack-5-debug'); config.plugins.push(new PatchSourceMapSource()) """ } @@ -358,7 +359,7 @@ class KotlinKarma( val file = task.inputFileProperty.getFile() val fileString = file.toString() - config.files.add(npmProject.require("kotlin-test-js-runner/kotlin-test-karma-runner.js")) + config.files.add(npmProject.require("kotlin-web-helpers/dist/kotlin-test-karma-runner.js")) if (!debug) { if (platformType == KotlinPlatformType.wasm) { val wasmFile = file.parentFile.resolve("${file.nameWithoutExtension}.wasm") @@ -375,8 +376,8 @@ class KotlinKarma( createLoadWasm(npmProject.dir.getFile(), file).normalize().absolutePath ) - config.customContextFile = npmProject.require("kotlin-test-js-runner/static/context.html") - config.customDebugFile = npmProject.require("kotlin-test-js-runner/static/debug.html") + config.customContextFile = npmProject.require("kotlin-web-helpers/dist/static/context.html") + config.customDebugFile = npmProject.require("kotlin-web-helpers/dist/static/debug.html") } else { config.files.add(fileString) } @@ -394,7 +395,7 @@ class KotlinKarma( config.plugins.push('karma-*'); // default } - config.plugins.push('kotlin-test-js-runner/karma-kotlin-debug-plugin.js'); + config.plugins.push('kotlin-web-helpers/dist/karma-kotlin-debug-plugin.js'); """.trimIndent() ) } @@ -470,7 +471,7 @@ class KotlinKarma( val karmaConfigAbsolutePath = karmaConfJs.absolutePath val args = if (debug) { nodeJsArgs + listOf( - npmProject.require("kotlin-test-js-runner/karma-debug-runner.js"), + npmProject.require("kotlin-web-helpers/dist/karma-debug-runner.js"), karmaConfigAbsolutePath ) } else { diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/mocha/KotlinMocha.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/mocha/KotlinMocha.kt index 87b6039af7ad5..83f8d0d2b437c 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/mocha/KotlinMocha.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/testing/mocha/KotlinMocha.kt @@ -43,6 +43,7 @@ class KotlinMocha(@Transient override val compilation: KotlinJsIrCompilation, pr get() = setOf( versions.mocha, versions.sourceMapSupport, + versions.kotlinWebHelpers, ) override fun getPath() = "$basePath:kotlinMocha" @@ -85,8 +86,8 @@ class KotlinMocha(@Transient override val compilation: KotlinJsIrCompilation, pr add(mocha) add(file) addAll(cliArgs.toList()) - addAll(cliArg("--reporter", "kotlin-test-js-runner/mocha-kotlin-reporter.js")) - addAll(cliArg("--require", npmProject.require("kotlin-test-js-runner/kotlin-test-nodejs-runner.js"))) + addAll(cliArg("--reporter", "kotlin-web-helpers/dist/mocha-kotlin-reporter.js")) + addAll(cliArg("--require", npmProject.require("kotlin-web-helpers/dist/kotlin-test-nodejs-runner.js"))) if (debug) { add(NO_TIMEOUT_ARG) } else { @@ -104,7 +105,7 @@ class KotlinMocha(@Transient override val compilation: KotlinJsIrCompilation, pr add(mocha) add(file) addAll(cliArgs.toList()) - addAll(cliArg("--require", npmProject.require("kotlin-test-js-runner/kotlin-test-nodejs-empty-runner.js"))) + addAll(cliArg("--require", npmProject.require("kotlin-web-helpers/dist/kotlin-test-nodejs-empty-runner.js"))) } } diff --git a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpackConfig.kt b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpackConfig.kt index 3c205bfe10fea..f88acda7e2535 100644 --- a/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpackConfig.kt +++ b/libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/webpack/KotlinWebpackConfig.kt @@ -63,6 +63,10 @@ data class KotlinWebpackConfig( versions.webpackCli ) + it.add( + versions.kotlinWebHelpers + ) + if (sourceMaps) { it.add( versions.sourceMapLoader @@ -296,7 +300,7 @@ data class KotlinWebpackConfig( """ // noinspection JSUnnecessarySemicolon ;(function(config) { - const tcErrorPlugin = require('kotlin-test-js-runner/tc-log-error-webpack'); + const tcErrorPlugin = require('kotlin-web-helpers/dist/tc-log-error-webpack'); config.plugins.push(new tcErrorPlugin()) config.stats = config.stats || {} Object.assign(config.stats, config.stats, { diff --git a/libraries/tools/kotlin-test-js-runner/README.md b/libraries/tools/kotlin-test-js-runner/README.md deleted file mode 100644 index 023c5242bd4fe..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/README.md +++ /dev/null @@ -1,6 +0,0 @@ -Kotlin/JS TeamCity tests results reporter. - -### Usage - -`yarn add @kotlin/js-tests-teamcity --dev` -`yarn run kotlin-js-tests` \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/build.gradle.kts b/libraries/tools/kotlin-test-js-runner/build.gradle.kts deleted file mode 100644 index f7bc00f8ce328..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/build.gradle.kts +++ /dev/null @@ -1,142 +0,0 @@ -import com.github.gradle.node.npm.task.NpxTask - -description = "Simple Kotlin/JS tests runner with TeamCity reporter" - -plugins { - id("base") - alias(libs.plugins.gradle.node) -} - -publish(sbom = false) - -val sbom by configurations.creating { - isCanBeResolved = true - extendsFrom(configurations.publishedRuntime.get()) -} - -configureSbom( - gradleConfigurations = setOf(sbom.name) -) - - -val default = configurations.getByName(Dependency.DEFAULT_CONFIGURATION) -default.extendsFrom(configurations.publishedRuntime.get()) - -node { - version.set(nodejsVersion) - download.set(true) - nodeProjectDir.set(projectDir) - npmInstallCommand.set("ci") -} - -dependencies { - implicitDependencies("org.nodejs:node:$nodejsVersion:win-x64@zip") - implicitDependencies("org.nodejs:node:$nodejsVersion:linux-x64@tar.gz") - implicitDependencies("org.nodejs:node:$nodejsVersion:darwin-x64@tar.gz") - implicitDependencies("org.nodejs:node:$nodejsVersion:darwin-arm64@tar.gz") -} - -tasks { - npmInstall { - val nodeModulesDir = projectDir.resolve("node_modules") - outputs.upToDateWhen { - nodeModulesDir.isDirectory - } - args.add("--ignore-scripts") - } - - val cleanLib by registering(Delete::class) { - group = "build" - - delete = setOf( - "lib", - ) - } - - val fromStaticToLib by registering(Copy::class) { - group = "build" - - dependsOn(cleanLib) - - from(projectDir.resolve("static")) - into("lib/static") - } - - val cleanNpm by registering(Delete::class) { - group = "build" - - dependsOn(cleanLib) - - delete = setOf( - "node_modules", - ) - } - - val test by registering(NpxTask::class) { - group = "verification" - - val isTeamcityBuild = project.kotlinBuildProperties.isTeamcityBuild - - dependsOn(npmInstall) - - command.set("mocha") - - if (isTeamcityBuild) { - args.addAll( - "--reporter", - "mocha-teamcity-reporter" - ) - } - } - - val npmBuild by registering(NpxTask::class) { - group = "build" - - dependsOn(npmInstall, cleanLib, fromStaticToLib) - - command.set("rollup") - workingDir.set(projectDir) - args.set(listOf("-c", "rollup.config.mjs", "--silent")) - - inputs.dir("src") - inputs.files( - "nodejs.ts", - "nodejs-empty.ts", - "nodejs-idle.ts", - "karma.ts", - "karma-kotlin-reporter.js", - "karma-kotlin-debug-plugin.js", - "karma-debug-runner.js", - "karma-debug-framework.js", - "karma-webpack-output.js", - "mocha-kotlin-reporter.js", - "tc-log-appender.js", - "tc-log-error-webpack.js", - "webpack-5-debug.js", - "package.json", - "rollup.config.mjs", - "tsconfig.json", - "package-lock.json" - ) - outputs.dir("lib") - } - - check { - dependsOn(test) - } - - clean { - dependsOn(cleanNpm) - } - - val jar by registering(Jar::class) { - dependsOn(npmBuild) - from(projectDir.resolve("lib")) - from(projectDir.resolve("package.json")) - } - - artifacts { - add(configurations.archives.name, jar) - add(configurations.publishedRuntime.name, jar) - } -} diff --git a/libraries/tools/kotlin-test-js-runner/env.ts b/libraries/tools/kotlin-test-js-runner/env.ts deleted file mode 100644 index 7d1d223b476fd..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/env.ts +++ /dev/null @@ -1,3 +0,0 @@ -declare const DEBUG: boolean; -declare const VERSION: string; -declare const DESCRIPTION: string; \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/karma-debug-framework.js b/libraries/tools/kotlin-test-js-runner/karma-debug-framework.js deleted file mode 100644 index f805c2ba784d1..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/karma-debug-framework.js +++ /dev/null @@ -1,34 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -'use strict'; - -const initDebug = function (injector) { - configureTimeouts(injector) -}; - -function configureTimeouts(injector) { - const webServer = injector.get('webServer'); - if (webServer) { - // IDE posts http '/run' request to trigger tests (see intellijRunner.js). - // If a request executes more than `httpServer.timeout`, it will be timed out. - // Disable timeout, as by default httpServer.timeout=120 seconds, not enough for suspended execution. - webServer.timeout = 0 - } - const socketServer = injector.get('socketServer'); - if (socketServer && typeof socketServer.set === 'function') { - // Disable socket.io heartbeat (ping) to avoid browser disconnecting when debugging tests, - // because no ping requests are sent when test execution is suspended on a breakpoint. - // Default values are not enough for suspended execution: - // 'heartbeat timeout' (pingTimeout) = 60000 ms - // 'heartbeat interval' (pingInterval) = 25000 ms - socketServer.set('heartbeat timeout', 24 * 60 * 60 * 1000); - socketServer.set('heartbeat interval', 24 * 60 * 60 * 1000) - } -} - -initDebug.$inject = ['injector']; - -module.exports = initDebug; \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/karma-debug-runner.js b/libraries/tools/kotlin-test-js-runner/karma-debug-runner.js deleted file mode 100644 index 1e95a9743986c..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/karma-debug-runner.js +++ /dev/null @@ -1,39 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -'use strict'; - -import {configureBrowsers, fixBrowserActivityTimeout, fixMochaTimeout} from "./src/DebugConfigurator"; - -const karma = require('karma'); - -const cfg = karma.config; - -const karmaConfig = cfg.parseConfig(process.argv[2]); - -karmaConfig.singleRun = false; - -configureBrowsers(karmaConfig); -fixMochaTimeout(karmaConfig); -fixBrowserActivityTimeout(karmaConfig); - -const Server = karma.Server; -const server = new Server(karmaConfig, function (exitCode) { - console.log('Karma has exited with ' + exitCode); -}); - -server.on('browsers_ready', function () { - // It is unreliable decision, but we need some delay for debugger attaching - setTimeout(function () { - karma.runner.run(karmaConfig, function (exitCode) { - console.log('Runner has exited with ' + exitCode); - karma.stopper.stop(karmaConfig, function (exitCode) { - console.log('Stopper has exited with ' + exitCode); - }) - }) - }, 1000) -}); - -server.start(); \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/karma-kotlin-debug-plugin.js b/libraries/tools/kotlin-test-js-runner/karma-kotlin-debug-plugin.js deleted file mode 100644 index 644432f07e645..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/karma-kotlin-debug-plugin.js +++ /dev/null @@ -1,8 +0,0 @@ -/* - * Copyright 2010-2023 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -module.exports = { - 'framework:karma-kotlin-debug': ['factory', require("./karma-debug-framework")], -}; \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/karma-kotlin-reporter.js b/libraries/tools/kotlin-test-js-runner/karma-kotlin-reporter.js deleted file mode 100644 index 95e50af5600f6..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/karma-kotlin-reporter.js +++ /dev/null @@ -1,284 +0,0 @@ -import { - BLOCK_CLOSED, - BLOCK_OPENED, - formatMessage, - SUITE_END, - SUITE_START, - TEST_END, - TEST_FAILED, - TEST_IGNORED, - TEST_START -} from "./src/teamcity-format"; - -const resolve = require('path').resolve; -const SourceMapConsumer = require('source-map').SourceMapConsumer -const _ = require('lodash') -const PathUtils = require('karma/lib/utils/path-utils') - -/** - * From karma - * The MIT License - * Copyright (C) 2011-2019 Google, Inc. - */ -// This ErrorFormatter is copied from standard karma's, -// but without warning in case of failed original location finding -function createErrorFormatter(config, emitter, SourceMapConsumer) { - const basePath = config.basePath - const urlRoot = config.urlRoot === '/' ? '' : (config.urlRoot || '') - let lastServedFiles = [] - - emitter.on('file_list_modified', (files) => { - lastServedFiles = files.served - }) - - const URL_REGEXP = new RegExp('(?:https?:\\/\\/' + - config.hostname + '(?:\\:' + config.port + ')?' + ')?\\/?' + - urlRoot + '\\/?' + - '(base/|absolute)' + // prefix, including slash for base/ to create relative paths. - '((?:[A-z]\\:)?[^\\?\\s\\:]*)' + // path - '(\\?\\w*)?' + // sha - '(\\:(\\d+))?' + // line - '(\\:(\\d+))?' + // column - '', 'g') - - const cache = new WeakMap() - - function getSourceMapConsumer(sourceMap) { - if (!cache.has(sourceMap)) { - cache.set(sourceMap, new SourceMapConsumer(sourceMap)) - } - return cache.get(sourceMap) - } - - return function (input, indentation) { - indentation = _.isString(indentation) ? indentation : '' - if (_.isError(input)) { - input = input.message - } else if (_.isEmpty(input)) { - input = '' - } else if (!_.isString(input)) { - input = JSON.stringify(input, null, indentation) - } - - let msg = input.replace(URL_REGEXP, function (stackTracePath, prefix, path, __, ___, line, ____, column) { - const normalizedPath = prefix === 'base/' ? `${basePath}/${path}` : path - const file = lastServedFiles.find((file) => file.path === normalizedPath) - - if (file && file.sourceMap && line) { - line = +line - column = +column - - // When no column is given and we default to 0, it doesn't make sense to only search for smaller - // or equal columns in the sourcemap, let's search for equal or greater columns. - const bias = column ? SourceMapConsumer.GREATEST_LOWER_BOUND : SourceMapConsumer.LEAST_UPPER_BOUND - - try { - const zeroBasedColumn = Math.max(0, (column || 1) - 1) - const original = getSourceMapConsumer(file.sourceMap).originalPositionFor({line, column: zeroBasedColumn, bias}) - - // If there is no original position/source for the current stack trace path, then - // we return early with the formatted generated position. This handles the case of - // generated code which does not map to anything, see Case 1 of the source-map spec. - // https://sourcemaps.info/spec.html. - if (original.source === null) { - return PathUtils.formatPathMapping(path, line, column) - } - - // Source maps often only have a local file name, resolve to turn into a full path if - // the path is not absolute yet. - const oneBasedOriginalColumn = original.column == null ? original.column : original.column + 1 - return `${PathUtils.formatPathMapping(resolve(path, original.source), original.line, oneBasedOriginalColumn)} <- ${PathUtils.formatPathMapping(path, line, column)}` - } catch (e) { - // do nothing - } - } - - return PathUtils.formatPathMapping(path, line, column) || prefix - }) - - if (indentation) { - msg = indentation + msg.replace(/\n/g, '\n' + indentation) - } - - return config.formatError ? config.formatError(msg) : msg + '\n' - } -} - -/** - * From karma-teamcity-reporter. - * The MIT License - * Copyright (C) 2011-2013 Vojta Jína and contributors - */ -const hashString = function (s) { - let hash = 0 - let i - let chr - let len - - if (s === 0) return hash - for (i = 0, len = s.length; i < len; i++) { - chr = s.charCodeAt(i) - hash = ((hash << 5) - hash) + chr - hash |= 0 - } - return hash -} - -const withoutSurroundingApostrophes = function (s) { - if (s.startsWith("'") && s.endsWith("'")) - return s.slice(1, -1) - - return s -} - -// This reporter extends karma-teamcity-reporter -// It is necessary, because karma-teamcity-reporter can't write browser's log -// And additionally it overrides flushLogs, because flushLogs adds redundant spaces after some messages -const KarmaKotlinReporter = function (baseReporterDecorator, config, emitter) { - baseReporterDecorator(this) - const self = this - - const formatError = createErrorFormatter(config, emitter, SourceMapConsumer) - - const END_KOTLIN_TEST = "'--END_KOTLIN_TEST--" - - const reporter = this - const initializeBrowser = function (browser) { - reporter.browserResults[browser.id] = { - name: browser.name, - log: [], - consoleCollector: [], - consoleResultCollector: [], - lastSuite: null, - flowId: 'karmaTC' + hashString(browser.name + ((new Date()).getTime())) + browser.id - } - } - - this.onRunStart = function (browsers) { - this.write(formatMessage(BLOCK_OPENED, 'JavaScript Unit Tests')) - - this.browserResults = {} - // Support Karma 0.10 (TODO: remove) - browsers.forEach(initializeBrowser) - } - - this.onBrowserStart = function (browser) { - initializeBrowser(browser) - } - - const concatenateFqn = function (result) { - return `${result.suite.join(".")}.${result.description}` - }; - - this.onBrowserLog = (browser, log, type) => { - this.checkBrowserResult(browser) - const browserResult = this.browserResults[browser.id]; - - if (log.startsWith(END_KOTLIN_TEST)) { - const result = JSON.parse(log.substring(END_KOTLIN_TEST.length, log.length - 1)); - browserResult.consoleResultCollector[concatenateFqn(result)] = browserResult.consoleCollector; - browserResult.consoleCollector = []; - return - } - - if (browserResult) { - browserResult.consoleCollector.push(withoutSurroundingApostrophes(log)) - } - }; - - this.specSuccess = function (browser, result) { - this.checkBrowserResult(browser) - const log = this.getLog(browser, result) - const testName = result.description - - log.push(formatMessage(TEST_START, testName)) - this.browserResults[browser.id].consoleResultCollector[concatenateFqn(result)].forEach(item => { - log.push(item) - }); - - log.push(formatMessage(TEST_END, testName, result.time)) - } - - this.specFailure = function (browser, result) { - this.checkBrowserResult(browser) - const log = this.getLog(browser, result) - const testName = result.description - - log.push(formatMessage(TEST_START, testName)) - - this.browserResults[browser.id].consoleResultCollector[concatenateFqn(result)].forEach(item => { - log.push(item) - }); - - log.push(formatMessage(TEST_FAILED, testName, "FAILED", - result.log - .map(log => formatError(log)) - .join('\n\n') - )); - - log.push(formatMessage(TEST_END, testName, result.time)) - } - - this.specSkipped = function (browser, result) { - this.checkBrowserResult(browser) - const log = this.getLog(browser, result) - const testName = result.description - - log.push(formatMessage(TEST_IGNORED, testName)) - } - - this.onRunComplete = function () { - Object.keys(this.browserResults).forEach(function (browserId) { - const browserResult = self.browserResults[browserId] - const log = browserResult.log - if (browserResult.lastSuite) { - log.push(formatMessage(SUITE_END, browserResult.lastSuite)) - } - - self.flushLogs(browserResult) - }) - self.write(formatMessage(BLOCK_CLOSED, 'JavaScript Unit Tests')) - } - - this.checkBrowserResult = function (browser) { - if (!this.browserResults[browser.id]) { - initializeBrowser(browser) - } - } - - this.getLog = function (browser, result) { - const browserResult = this.browserResults[browser.id] - let suiteName = browser.name - const moduleName = result.suite.join(' ') - - if (moduleName) { - suiteName = moduleName.concat('.', suiteName) - } - - const log = browserResult.log - if (browserResult.lastSuite !== suiteName) { - if (browserResult.lastSuite) { - log.push(formatMessage(SUITE_END, browserResult.lastSuite)) - } - this.flushLogs(browserResult) - browserResult.lastSuite = suiteName - log.push(formatMessage(SUITE_START, suiteName)) - } - return log - } - - this.flushLogs = function (browserResult) { - while (browserResult.log.length > 0) { - let line = browserResult.log.shift(); - line = line.replace("flowId='%s'", "flowId='" + browserResult.flowId + "'"); - - this.write(line); - } - } -} - -KarmaKotlinReporter.$inject = ['baseReporterDecorator', 'config', 'emitter']; - -module.exports = { - 'reporter:karma-kotlin-reporter': ['type', KarmaKotlinReporter] -}; diff --git a/libraries/tools/kotlin-test-js-runner/karma-webpack-output.js b/libraries/tools/kotlin-test-js-runner/karma-webpack-output.js deleted file mode 100644 index bb170eb4b68e5..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/karma-webpack-output.js +++ /dev/null @@ -1,10 +0,0 @@ -/* - * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -import {KarmaWebpackOutputFramework} from "./src/KarmaWebpackOutputFramework"; - -module.exports = { - 'framework:webpack-output': ['factory', KarmaWebpackOutputFramework], -}; \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/karma.ts b/libraries/tools/kotlin-test-js-runner/karma.ts deleted file mode 100755 index 4b7646d4c6b52..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/karma.ts +++ /dev/null @@ -1,37 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -import {CliArgsParser, getDefaultCliDescription} from "./src/CliArgsParser"; -import {runWithFilteringAndConsoleAdapters} from "./src/Adapter"; -import {KotlinTestRunner} from "./src/KotlinTestRunner"; - -const parser = new CliArgsParser( - getDefaultCliDescription(), - (exitCode) => { - throw new Error(`Exit with ${exitCode}`) - } -); - -const untypedArgs = parser.parse(window.__karma__.config.args); - -let adapterTransformer: (current: KotlinTestRunner) => KotlinTestRunner -if (window.kotlinTest) { - const currentAdapterTransformer = window.kotlinTest.adapterTransformer; - adapterTransformer = current => - runWithFilteringAndConsoleAdapters(currentAdapterTransformer(current), untypedArgs); -} else { - adapterTransformer = current => - runWithFilteringAndConsoleAdapters(current, untypedArgs); -} - -window.kotlinTest = { - adapterTransformer: adapterTransformer -} - -const resultFun = window.__karma__.result; -window.__karma__.result = function (result) { - console.log(`--END_KOTLIN_TEST--\n${JSON.stringify(result)}`); - resultFun(result) -}; \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/mocha-kotlin-reporter.js b/libraries/tools/kotlin-test-js-runner/mocha-kotlin-reporter.js deleted file mode 100644 index 6322f79dc896e..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/mocha-kotlin-reporter.js +++ /dev/null @@ -1,142 +0,0 @@ -/** - * From mocha-teamcity-reporter - * The MIT License - * Copyright (c) 2016 Jamie Sherriff - */ - -/** - * Teamcity doc reference https://confluence.jetbrains.com/display/TCD10/Build+Script+Interaction+with+TeamCity - * - * Module dependencies. - */ -'use strict'; - -import { - formatMessage, - SUITE_END, - SUITE_END_NO_DURATION, - SUITE_START, - TEST_END, - TEST_END_NO_DURATION, - TEST_FAILED, - TEST_FAILED_COMPARISON, - TEST_IGNORED, - TEST_START -} from "./src/teamcity-format"; - -const processPID = process.pid.toString(); - -let Base, log, logError; - -Base = require('mocha').reporters.Base; -log = console.log; -logError = console.error; - -function isNil(value) { - return value == null; // eslint-disable-line -} - -/** - * Initialize a new `Teamcity` reporter. - * - * @param {Runner} runner - * @param {options} options - * @api public - */ - -function Teamcity(runner, options) { - options = options || {}; - const reporterOptions = options.reporterOptions || {}; - let flowId, useStdError, recordHookFailures, actualVsExpected; - (reporterOptions.flowId) ? flowId = reporterOptions.flowId : flowId = process.env['MOCHA_TEAMCITY_FLOWID'] || processPID; - (reporterOptions.useStdError) ? useStdError = reporterOptions.useStdError : useStdError = process.env['USE_STD_ERROR']; - (reporterOptions.recordHookFailures) ? recordHookFailures = reporterOptions.recordHookFailures : recordHookFailures = - process.env['RECORD_HOOK_FAILURES']; - (reporterOptions.actualVsExpected) ? actualVsExpected = reporterOptions.actualVsExpected : actualVsExpected = - process.env['ACTUAL_VS_EXPECTED']; - (useStdError) ? useStdError = (useStdError.toLowerCase() === 'true') : useStdError = false; - (recordHookFailures) ? recordHookFailures = (recordHookFailures.toLowerCase() === 'true') : recordHookFailures = false; - actualVsExpected ? actualVsExpected = (actualVsExpected.toLowerCase() === 'true') : actualVsExpected = false; - Base.call(this, runner); - let stats = this.stats; - const topLevelSuite = reporterOptions.topLevelSuite || process.env['MOCHA_TEAMCITY_TOP_LEVEL_SUITE']; - - runner.on('suite', function (suite) { - if (suite.root) { - if (topLevelSuite) { - log(formatMessage(SUITE_START, topLevelSuite, flowId)); - } - return; - } - suite.startDate = new Date(); - log(formatMessage(SUITE_START, suite.title, flowId)); - }); - - runner.on('test', function (test) { - log(formatMessage(TEST_START, test.title, flowId)); - }); - - runner.on('fail', function (test, err) { - if (actualVsExpected && (err.actual && err.expected)) { - if (useStdError) { - logError(formatMessage(TEST_FAILED_COMPARISON, test.title, err.message, err.stack, err.actual, - err.expected, flowId)); - } - else { - log(formatMessage(TEST_FAILED_COMPARISON, test.title, err.message, err.stack, err.actual, - err.expected, flowId)); - } - } - else { - if (useStdError) { - logError(formatMessage(TEST_FAILED, test.title, err.message, err.stack, flowId)); - } - else { - log(formatMessage(TEST_FAILED, test.title, err.message, err.stack, flowId)); - } - } - }); - - runner.on('pending', function (test) { - log(formatMessage(TEST_IGNORED, test.title, test.title, flowId)); - }); - - runner.on('test end', function (test) { - // This is necessary not to emit `test end` event on skipped tests - if (test.isPending()) return - - if (isNil(test.duration)) { - log(formatMessage(TEST_END_NO_DURATION, test.title, flowId)); - } - else { - log(formatMessage(TEST_END, test.title, test.duration.toString(), flowId)); - } - }); - - runner.on('hook', function (test) { - if (recordHookFailures) { - log(formatMessage(TEST_START, test.title, flowId)); - } - }); - - runner.on('suite end', function (suite) { - if (suite.root) return; - log(formatMessage(SUITE_END, suite.title, new Date() - suite.startDate, flowId)); - }); - - runner.on('end', function () { - let duration; - (typeof stats === 'undefined') ? duration = null : duration = stats.duration; - if (topLevelSuite) { - isNil(duration) ? log(formatMessage(SUITE_END_NO_DURATION, topLevelSuite, flowId)) : log( - formatMessage(SUITE_END, topLevelSuite, duration, flowId)); - } - }); -} - - -/** - * Expose `Teamcity`. - */ - -exports = module.exports = Teamcity; \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/nodejs-empty.ts b/libraries/tools/kotlin-test-js-runner/nodejs-empty.ts deleted file mode 100755 index fefda921a3348..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/nodejs-empty.ts +++ /dev/null @@ -1,5 +0,0 @@ -import {EmptyKotlinTestRunner} from "./src/EmptyKotlinTestRunner"; - -(globalThis as any).kotlinTest = { - adapterTransformer: () => new EmptyKotlinTestRunner() -} \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/nodejs.ts b/libraries/tools/kotlin-test-js-runner/nodejs.ts deleted file mode 100755 index 4433ed0715777..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/nodejs.ts +++ /dev/null @@ -1,16 +0,0 @@ -import {CliArgsParser, getDefaultCliDescription} from "./src/CliArgsParser"; -import {runWithFilteringAndConsoleAdapters} from "./src/Adapter"; -import {KotlinTestRunner} from "./src/KotlinTestRunner"; - -const parser = new CliArgsParser( - getDefaultCliDescription(), - process.exit -); -const untypedArgs = parser.parse(process.argv); - -const adapterTransformer: (current: KotlinTestRunner) => KotlinTestRunner = current => - runWithFilteringAndConsoleAdapters(current, untypedArgs); - -(globalThis as any).kotlinTest = { - adapterTransformer: adapterTransformer -} \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/package-lock.json b/libraries/tools/kotlin-test-js-runner/package-lock.json deleted file mode 100644 index dd4800fdce3f2..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/package-lock.json +++ /dev/null @@ -1,2388 +0,0 @@ -{ - "name": "kotlin-test-js-runner", - "version": "0.0.2", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "kotlin-test-js-runner", - "version": "0.0.2", - "license": "Apache-2.0", - "dependencies": { - "format-util": "^1.0.5" - }, - "devDependencies": { - "@rollup/plugin-commonjs": "^25.0.7", - "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/plugin-terser": "^0.4.4", - "@rollup/plugin-typescript": "^11.1.5", - "@types/node": "^18.11.18", - "karma-webpack": "^5.0.1", - "mocha": "^10.4.0", - "mocha-teamcity-reporter": "^4.2.0", - "rollup": "^4.8.0", - "tslib": "^2.6.2", - "typescript": "4.3.5" - } - }, - "node_modules/@jridgewell/gen-mapping": { - "version": "0.3.5", - "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", - "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", - "dev": true, - "dependencies": { - "@jridgewell/set-array": "^1.2.1", - "@jridgewell/sourcemap-codec": "^1.4.10", - "@jridgewell/trace-mapping": "^0.3.24" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/resolve-uri": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", - "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/set-array": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", - "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", - "dev": true, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/@jridgewell/source-map": { - "version": "0.3.6", - "resolved": "https://registry.npmjs.org/@jridgewell/source-map/-/source-map-0.3.6.tgz", - "integrity": "sha512-1ZJTZebgqllO79ue2bm3rIGud/bOe0pP5BjSRCRxxYkEZS8STV7zN84UBbiYu7jy+eCKSnVIUgoWWE/tt+shMQ==", - "dev": true, - "dependencies": { - "@jridgewell/gen-mapping": "^0.3.5", - "@jridgewell/trace-mapping": "^0.3.25" - } - }, - "node_modules/@jridgewell/sourcemap-codec": { - "version": "1.4.15", - "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.15.tgz", - "integrity": "sha512-eF2rxCRulEKXHTRiDrDy6erMYWqNw4LPdQ8UQA4huuxaQsVeRPFl2oM8oDGxMFhJUWZf9McpLtJasDDZb/Bpeg==", - "dev": true - }, - "node_modules/@jridgewell/trace-mapping": { - "version": "0.3.25", - "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", - "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", - "dev": true, - "dependencies": { - "@jridgewell/resolve-uri": "^3.1.0", - "@jridgewell/sourcemap-codec": "^1.4.14" - } - }, - "node_modules/@rollup/plugin-commonjs": { - "version": "25.0.7", - "resolved": "https://registry.npmjs.org/@rollup/plugin-commonjs/-/plugin-commonjs-25.0.7.tgz", - "integrity": "sha512-nEvcR+LRjEjsaSsc4x3XZfCCvZIaSMenZu/OiwOKGN2UhQpAYI7ru7czFvyWbErlpoGjnSX3D5Ch5FcMA3kRWQ==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "commondir": "^1.0.1", - "estree-walker": "^2.0.2", - "glob": "^8.0.3", - "is-reference": "1.2.1", - "magic-string": "^0.30.3" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.68.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-node-resolve": { - "version": "15.2.3", - "resolved": "https://registry.npmjs.org/@rollup/plugin-node-resolve/-/plugin-node-resolve-15.2.3.tgz", - "integrity": "sha512-j/lym8nf5E21LwBT4Df1VD6hRO2L2iwUeUmP7litikRsVp1H6NWx20NEp0Y7su+7XGc476GnXXc4kFeZNGmaSQ==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.0.1", - "@types/resolve": "1.20.2", - "deepmerge": "^4.2.2", - "is-builtin-module": "^3.2.1", - "is-module": "^1.0.0", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.78.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-terser": { - "version": "0.4.4", - "resolved": "https://registry.npmjs.org/@rollup/plugin-terser/-/plugin-terser-0.4.4.tgz", - "integrity": "sha512-XHeJC5Bgvs8LfukDwWZp7yeqin6ns8RTl2B9avbejt6tZqsqvVoWI7ZTQrcNsfKEDWBTnTxM8nMDkO2IFFbd0A==", - "dev": true, - "dependencies": { - "serialize-javascript": "^6.0.1", - "smob": "^1.0.0", - "terser": "^5.17.4" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/plugin-typescript": { - "version": "11.1.6", - "resolved": "https://registry.npmjs.org/@rollup/plugin-typescript/-/plugin-typescript-11.1.6.tgz", - "integrity": "sha512-R92yOmIACgYdJ7dJ97p4K69I8gg6IEHt8M7dUBxN3W6nrO8uUxX5ixl0yU/N3aZTi8WhPuICvOHXQvF6FaykAA==", - "dev": true, - "dependencies": { - "@rollup/pluginutils": "^5.1.0", - "resolve": "^1.22.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^2.14.0||^3.0.0||^4.0.0", - "tslib": "*", - "typescript": ">=3.7.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - }, - "tslib": { - "optional": true - } - } - }, - "node_modules/@rollup/pluginutils": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-5.1.0.tgz", - "integrity": "sha512-XTIWOPPcpvyKI6L1NHo0lFlCyznUEyPmPY1mc3KpPVDYulHSTvyeLNVW00QTLIAFNhR3kYnJTQHeGqU4M3n09g==", - "dev": true, - "dependencies": { - "@types/estree": "^1.0.0", - "estree-walker": "^2.0.2", - "picomatch": "^2.3.1" - }, - "engines": { - "node": ">=14.0.0" - }, - "peerDependencies": { - "rollup": "^1.20.0||^2.0.0||^3.0.0||^4.0.0" - }, - "peerDependenciesMeta": { - "rollup": { - "optional": true - } - } - }, - "node_modules/@rollup/rollup-android-arm-eabi": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.16.4.tgz", - "integrity": "sha512-GkhjAaQ8oUTOKE4g4gsZ0u8K/IHU1+2WQSgS1TwTcYvL+sjbaQjNHFXbOJ6kgqGHIO1DfUhI/Sphi9GkRT9K+Q==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-android-arm64": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.16.4.tgz", - "integrity": "sha512-Bvm6D+NPbGMQOcxvS1zUl8H7DWlywSXsphAeOnVeiZLQ+0J6Is8T7SrjGTH29KtYkiY9vld8ZnpV3G2EPbom+w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "android" - ] - }, - "node_modules/@rollup/rollup-darwin-arm64": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.16.4.tgz", - "integrity": "sha512-i5d64MlnYBO9EkCOGe5vPR/EeDwjnKOGGdd7zKFhU5y8haKhQZTN2DgVtpODDMxUr4t2K90wTUJg7ilgND6bXw==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-darwin-x64": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.16.4.tgz", - "integrity": "sha512-WZupV1+CdUYehaZqjaFTClJI72fjJEgTXdf4NbW69I9XyvdmztUExBtcI2yIIU6hJtYvtwS6pkTkHJz+k08mAQ==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "darwin" - ] - }, - "node_modules/@rollup/rollup-linux-arm-gnueabihf": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.16.4.tgz", - "integrity": "sha512-ADm/xt86JUnmAfA9mBqFcRp//RVRt1ohGOYF6yL+IFCYqOBNwy5lbEK05xTsEoJq+/tJzg8ICUtS82WinJRuIw==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm-musleabihf": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.16.4.tgz", - "integrity": "sha512-tJfJaXPiFAG+Jn3cutp7mCs1ePltuAgRqdDZrzb1aeE3TktWWJ+g7xK9SNlaSUFw6IU4QgOxAY4rA+wZUT5Wfg==", - "cpu": [ - "arm" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-gnu": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.16.4.tgz", - "integrity": "sha512-7dy1BzQkgYlUTapDTvK997cgi0Orh5Iu7JlZVBy1MBURk7/HSbHkzRnXZa19ozy+wwD8/SlpJnOOckuNZtJR9w==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-arm64-musl": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.16.4.tgz", - "integrity": "sha512-zsFwdUw5XLD1gQe0aoU2HVceI6NEW7q7m05wA46eUAyrkeNYExObfRFQcvA6zw8lfRc5BHtan3tBpo+kqEOxmg==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.16.4.tgz", - "integrity": "sha512-p8C3NnxXooRdNrdv6dBmRTddEapfESEUflpICDNKXpHvTjRRq1J82CbU5G3XfebIZyI3B0s074JHMWD36qOW6w==", - "cpu": [ - "ppc64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-riscv64-gnu": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.16.4.tgz", - "integrity": "sha512-Lh/8ckoar4s4Id2foY7jNgitTOUQczwMWNYi+Mjt0eQ9LKhr6sK477REqQkmy8YHY3Ca3A2JJVdXnfb3Rrwkng==", - "cpu": [ - "riscv64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-s390x-gnu": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.16.4.tgz", - "integrity": "sha512-1xwwn9ZCQYuqGmulGsTZoKrrn0z2fAur2ujE60QgyDpHmBbXbxLaQiEvzJWDrscRq43c8DnuHx3QorhMTZgisQ==", - "cpu": [ - "s390x" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-gnu": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.16.4.tgz", - "integrity": "sha512-LuOGGKAJ7dfRtxVnO1i3qWc6N9sh0Em/8aZ3CezixSTM+E9Oq3OvTsvC4sm6wWjzpsIlOCnZjdluINKESflJLA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-linux-x64-musl": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.16.4.tgz", - "integrity": "sha512-ch86i7KkJKkLybDP2AtySFTRi5fM3KXp0PnHocHuJMdZwu7BuyIKi35BE9guMlmTpwwBTB3ljHj9IQXnTCD0vA==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "linux" - ] - }, - "node_modules/@rollup/rollup-win32-arm64-msvc": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.16.4.tgz", - "integrity": "sha512-Ma4PwyLfOWZWayfEsNQzTDBVW8PZ6TUUN1uFTBQbF2Chv/+sjenE86lpiEwj2FiviSmSZ4Ap4MaAfl1ciF4aSA==", - "cpu": [ - "arm64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-ia32-msvc": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.16.4.tgz", - "integrity": "sha512-9m/ZDrQsdo/c06uOlP3W9G2ENRVzgzbSXmXHT4hwVaDQhYcRpi9bgBT0FTG9OhESxwK0WjQxYOSfv40cU+T69w==", - "cpu": [ - "ia32" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@rollup/rollup-win32-x64-msvc": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.16.4.tgz", - "integrity": "sha512-YunpoOAyGLDseanENHmbFvQSfVL5BxW3k7hhy0eN4rb3gS/ct75dVD0EXOWIqFT/nE8XYW6LP6vz6ctKRi0k9A==", - "cpu": [ - "x64" - ], - "dev": true, - "optional": true, - "os": [ - "win32" - ] - }, - "node_modules/@types/eslint": { - "version": "8.56.10", - "resolved": "https://registry.npmjs.org/@types/eslint/-/eslint-8.56.10.tgz", - "integrity": "sha512-Shavhk87gCtY2fhXDctcfS3e6FdxWkCx1iUZ9eEUbh7rTqlZT0/IzOkCOVt0fCjcFuZ9FPYfuezTBImfHCDBGQ==", - "dev": true, - "peer": true, - "dependencies": { - "@types/estree": "*", - "@types/json-schema": "*" - } - }, - "node_modules/@types/eslint-scope": { - "version": "3.7.7", - "resolved": "https://registry.npmjs.org/@types/eslint-scope/-/eslint-scope-3.7.7.tgz", - "integrity": "sha512-MzMFlSLBqNF2gcHWO0G1vP/YQyfvrxZ0bF+u7mzUdZ1/xK4A4sru+nraZz5i3iEIk1l1uyicaDVTB4QbbEkAYg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/eslint": "*", - "@types/estree": "*" - } - }, - "node_modules/@types/estree": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.5.tgz", - "integrity": "sha512-/kYRxGDLWzHOB7q+wtSUQlFrtcdUccpfy+X+9iMBpHK8QLLhx2wIPYuS5DYtR9Wa/YlZAbIovy7qVdB1Aq6Lyw==", - "dev": true - }, - "node_modules/@types/json-schema": { - "version": "7.0.15", - "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", - "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", - "dev": true, - "peer": true - }, - "node_modules/@types/node": { - "version": "18.19.31", - "resolved": "https://registry.npmjs.org/@types/node/-/node-18.19.31.tgz", - "integrity": "sha512-ArgCD39YpyyrtFKIqMDvjz79jto5fcI/SVUs2HwB+f0dAzq68yqOdyaSivLiLugSziTpNXLQrVb7RZFmdZzbhA==", - "dev": true, - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/resolve": { - "version": "1.20.2", - "resolved": "https://registry.npmjs.org/@types/resolve/-/resolve-1.20.2.tgz", - "integrity": "sha512-60BCwRFOZCQhDncwQdxxeOEEkbc5dIMccYLwbxsS4TUNeVECQ/pBJ0j09mrHOl/JJvpRPGwO9SvE4nR2Nb/a4Q==", - "dev": true - }, - "node_modules/@webassemblyjs/ast": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ast/-/ast-1.12.1.tgz", - "integrity": "sha512-EKfMUOPRRUTy5UII4qJDGPpqfwjOmZ5jeGFwid9mnoqIFK+e0vqoi1qH56JpmZSzEL53jKnNzScdmftJyG5xWg==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/helper-numbers": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6" - } - }, - "node_modules/@webassemblyjs/floating-point-hex-parser": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/floating-point-hex-parser/-/floating-point-hex-parser-1.11.6.tgz", - "integrity": "sha512-ejAj9hfRJ2XMsNHk/v6Fu2dGS+i4UaXBXGemOfQ/JfQ6mdQg/WXtwleQRLLS4OvfDhv8rYnVwH27YJLMyYsxhw==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/helper-api-error": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-api-error/-/helper-api-error-1.11.6.tgz", - "integrity": "sha512-o0YkoP4pVu4rN8aTJgAyj9hC2Sv5UlkzCHhxqWj8butaLvnpdc2jOwh4ewE6CX0txSfLn/UYaV/pheS2Txg//Q==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/helper-buffer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-buffer/-/helper-buffer-1.12.1.tgz", - "integrity": "sha512-nzJwQw99DNDKr9BVCOZcLuJJUlqkJh+kVzVl6Fmq/tI5ZtEyWT1KZMyOXltXLZJmDtvLCDgwsyrkohEtopTXCw==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/helper-numbers": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-numbers/-/helper-numbers-1.11.6.tgz", - "integrity": "sha512-vUIhZ8LZoIWHBohiEObxVm6hwP034jwmc9kuq5GdHZH0wiLVLIPcMCdpJzG4C11cHoQ25TFIQj9kaVADVX7N3g==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/floating-point-hex-parser": "1.11.6", - "@webassemblyjs/helper-api-error": "1.11.6", - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/helper-wasm-bytecode": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-bytecode/-/helper-wasm-bytecode-1.11.6.tgz", - "integrity": "sha512-sFFHKwcmBprO9e7Icf0+gddyWYDViL8bpPjJJl0WHxCdETktXdmtWLGVzoHbqUcY4Be1LkNfwTmXOJUFZYSJdA==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/helper-wasm-section": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/helper-wasm-section/-/helper-wasm-section-1.12.1.tgz", - "integrity": "sha512-Jif4vfB6FJlUlSbgEMHUyk1j234GTNG9dBJ4XJdOySoj518Xj0oGsNi59cUQF4RRMS9ouBUxDDdyBVfPTypa5g==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/wasm-gen": "1.12.1" - } - }, - "node_modules/@webassemblyjs/ieee754": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/ieee754/-/ieee754-1.11.6.tgz", - "integrity": "sha512-LM4p2csPNvbij6U1f19v6WR56QZ8JcHg3QIJTlSwzFcmx6WSORicYj6I63f9yU1kEUtrpG+kjkiIAkevHpDXrg==", - "dev": true, - "peer": true, - "dependencies": { - "@xtuc/ieee754": "^1.2.0" - } - }, - "node_modules/@webassemblyjs/leb128": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/leb128/-/leb128-1.11.6.tgz", - "integrity": "sha512-m7a0FhE67DQXgouf1tbN5XQcdWoNgaAuoULHIfGFIEVKA6tu/edls6XnIlkmS6FrXAquJRPni3ZZKjw6FSPjPQ==", - "dev": true, - "peer": true, - "dependencies": { - "@xtuc/long": "4.2.2" - } - }, - "node_modules/@webassemblyjs/utf8": { - "version": "1.11.6", - "resolved": "https://registry.npmjs.org/@webassemblyjs/utf8/-/utf8-1.11.6.tgz", - "integrity": "sha512-vtXf2wTQ3+up9Zsg8sa2yWiQpzSsMyXj0qViVP6xKGCUT8p8YJ6HqI7l5eCnWx1T/FYdsv07HQs2wTFbbof/RA==", - "dev": true, - "peer": true - }, - "node_modules/@webassemblyjs/wasm-edit": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-edit/-/wasm-edit-1.12.1.tgz", - "integrity": "sha512-1DuwbVvADvS5mGnXbE+c9NfA8QRcZ6iKquqjjmR10k6o+zzsRVesil54DKexiowcFCPdr/Q0qaMgB01+SQ1u6g==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/helper-wasm-section": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-opt": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1", - "@webassemblyjs/wast-printer": "1.12.1" - } - }, - "node_modules/@webassemblyjs/wasm-gen": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-gen/-/wasm-gen-1.12.1.tgz", - "integrity": "sha512-TDq4Ojh9fcohAw6OIMXqiIcTq5KUXTGRkVxbSo1hQnSy6lAM5GSdfwWeSxpAo0YzgsgF182E/U0mDNhuA0tW7w==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wasm-opt": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-opt/-/wasm-opt-1.12.1.tgz", - "integrity": "sha512-Jg99j/2gG2iaz3hijw857AVYekZe2SAskcqlWIZXjji5WStnOpVoat3gQfT/Q5tb2djnCjBtMocY/Su1GfxPBg==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-buffer": "1.12.1", - "@webassemblyjs/wasm-gen": "1.12.1", - "@webassemblyjs/wasm-parser": "1.12.1" - } - }, - "node_modules/@webassemblyjs/wasm-parser": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wasm-parser/-/wasm-parser-1.12.1.tgz", - "integrity": "sha512-xikIi7c2FHXysxXe3COrVUPSheuBtpcfhbpFj4gmu7KRLYOzANztwUU0IbsqvMqzuNK2+glRGWCEqZo1WCLyAQ==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@webassemblyjs/helper-api-error": "1.11.6", - "@webassemblyjs/helper-wasm-bytecode": "1.11.6", - "@webassemblyjs/ieee754": "1.11.6", - "@webassemblyjs/leb128": "1.11.6", - "@webassemblyjs/utf8": "1.11.6" - } - }, - "node_modules/@webassemblyjs/wast-printer": { - "version": "1.12.1", - "resolved": "https://registry.npmjs.org/@webassemblyjs/wast-printer/-/wast-printer-1.12.1.tgz", - "integrity": "sha512-+X4WAlOisVWQMikjbcvY2e0rwPsKQ9F688lksZhBcPycBBuii3O7m8FACbDMWDojpAqvjIncrG8J0XHKyQfVeA==", - "dev": true, - "peer": true, - "dependencies": { - "@webassemblyjs/ast": "1.12.1", - "@xtuc/long": "4.2.2" - } - }, - "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, - "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, - "peer": true - }, - "node_modules/acorn": { - "version": "8.11.3", - "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.11.3.tgz", - "integrity": "sha512-Y9rRfJG5jcKOE0CLisYbojUjIrIEE7AGMzA/Sm4BslANhbS+cDMpgBdcPT91oJ7OuJ9hYJBx59RjbhxVnrF8Xg==", - "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, - "peer": true, - "peerDependencies": { - "acorn": "^8" - } - }, - "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, - "peer": 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-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, - "peer": true, - "peerDependencies": { - "ajv": "^6.9.1" - } - }, - "node_modules/ansi-colors": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/ansi-colors/-/ansi-colors-4.1.1.tgz", - "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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": "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/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/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/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", - "dev": true - }, - "node_modules/binary-extensions": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.3.0.tgz", - "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/brace-expansion": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", - "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", - "dev": true, - "dependencies": { - "balanced-match": "^1.0.0" - } - }, - "node_modules/braces": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", - "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", - "dev": true, - "dependencies": { - "fill-range": "^7.1.1" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/browser-stdout": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/browser-stdout/-/browser-stdout-1.3.1.tgz", - "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==", - "dev": true - }, - "node_modules/browserslist": { - "version": "4.23.0", - "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.0.tgz", - "integrity": "sha512-QW8HiM1shhT2GuzkvklfjcKDiWFXHOeFCIA/huJPwHsslwcydgk7X+z2zXpEijP98UCY7HbubZt5J2Zgvf0CaQ==", - "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" - } - ], - "peer": true, - "dependencies": { - "caniuse-lite": "^1.0.30001587", - "electron-to-chromium": "^1.4.668", - "node-releases": "^2.0.14", - "update-browserslist-db": "^1.0.13" - }, - "bin": { - "browserslist": "cli.js" - }, - "engines": { - "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" - } - }, - "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/builtin-modules": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/builtin-modules/-/builtin-modules-3.3.0.tgz", - "integrity": "sha512-zhaCDicdLuWN5UbN5IMnFqNMhNfo919sH85y2/ea+5Yg9TsTkeZxpL+JLbp6cgYFS4sRLp3YV4S6yDuqVWHYOw==", - "dev": true, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/camelcase": { - "version": "6.3.0", - "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", - "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/caniuse-lite": { - "version": "1.0.30001612", - "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001612.tgz", - "integrity": "sha512-lFgnZ07UhaCcsSZgWW0K5j4e69dK1u/ltrL9lTUiFOwNHs12S3UMIEYgBV0Z6C6hRDev7iRnMzzYmKabYdXF9g==", - "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" - } - ], - "peer": true - }, - "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/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/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/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, - "peer": true, - "engines": { - "node": ">=6.0" - } - }, - "node_modules/cliui": { - "version": "7.0.4", - "resolved": "https://registry.npmjs.org/cliui/-/cliui-7.0.4.tgz", - "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", - "dev": true, - "dependencies": { - "string-width": "^4.2.0", - "strip-ansi": "^6.0.0", - "wrap-ansi": "^7.0.0" - } - }, - "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/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/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/commondir": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/commondir/-/commondir-1.0.1.tgz", - "integrity": "sha512-W9pAhw0ja1Edb5GVdIF1mjZw/ASI0AlShXM83UUGe2DVr5TdAPEA1OA8m/g8zWp9x6On7gqufY+FatDbC3MDQg==", - "dev": true - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", - "dev": true - }, - "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/debug/node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", - "dev": true - }, - "node_modules/decamelize": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-4.0.0.tgz", - "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/deepmerge": { - "version": "4.3.1", - "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", - "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/diff": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/diff/-/diff-5.0.0.tgz", - "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==", - "dev": true, - "engines": { - "node": ">=0.3.1" - } - }, - "node_modules/electron-to-chromium": { - "version": "1.4.748", - "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.748.tgz", - "integrity": "sha512-VWqjOlPZn70UZ8FTKUOkUvBLeTQ0xpty66qV0yJcAGY2/CthI4xyW9aEozRVtuwv3Kpf5xTesmJUcPwuJmgP4A==", - "dev": true, - "peer": true - }, - "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/enhanced-resolve": { - "version": "5.16.0", - "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.16.0.tgz", - "integrity": "sha512-O+QWCviPNSSLAD9Ucn8Awv+poAkqn3T1XY5/N7kR7rQO9yfSGWkYZDwpJ+iKF7B8rxaQKWngSqACpgzeapSyoA==", - "dev": true, - "peer": true, - "dependencies": { - "graceful-fs": "^4.2.4", - "tapable": "^2.2.0" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/es-module-lexer": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/es-module-lexer/-/es-module-lexer-1.5.0.tgz", - "integrity": "sha512-pqrTKmwEIgafsYZAGw9kszYzmagcE/n4dbgwGWLEXg7J4QFJVQRBld8j3Q3GNez79jzxZshq0bcT962QHOghjw==", - "dev": true, - "peer": true - }, - "node_modules/escalade": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.2.tgz", - "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", - "dev": true, - "engines": { - "node": ">=6" - } - }, - "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" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/eslint-scope": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-5.1.1.tgz", - "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", - "dev": true, - "peer": true, - "dependencies": { - "esrecurse": "^4.3.0", - "estraverse": "^4.1.1" - }, - "engines": { - "node": ">=8.0.0" - } - }, - "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, - "peer": true, - "dependencies": { - "estraverse": "^5.2.0" - }, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/esrecurse/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, - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estraverse": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-4.3.0.tgz", - "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", - "dev": true, - "peer": true, - "engines": { - "node": ">=4.0" - } - }, - "node_modules/estree-walker": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", - "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", - "dev": true - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "dev": true, - "peer": true, - "engines": { - "node": ">=0.8.x" - } - }, - "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, - "peer": true - }, - "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, - "peer": true - }, - "node_modules/fill-range": { - "version": "7.1.1", - "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", - "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", - "dev": true, - "dependencies": { - "to-regex-range": "^5.0.1" - }, - "engines": { - "node": ">=8" - } - }, - "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": { - "locate-path": "^6.0.0", - "path-exists": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/flat": { - "version": "5.0.2", - "resolved": "https://registry.npmjs.org/flat/-/flat-5.0.2.tgz", - "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", - "dev": true, - "bin": { - "flat": "cli.js" - } - }, - "node_modules/format-util": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/format-util/-/format-util-1.0.5.tgz", - "integrity": "sha512-varLbTj0e0yVyRpqQhuWV+8hlePAgaoFRhNFj50BNjEIrw1/DphHSObtqwskVCPWNgzwPoQrZAbfa/SBiicNeg==" - }, - "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/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": "^8.16.0 || ^10.6.0 || >=11.0.0" - } - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "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, - "engines": { - "node": "6.* || 8.* || >= 10.*" - } - }, - "node_modules/glob": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", - "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", - "dev": true, - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^5.0.1", - "once": "^1.3.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "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/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, - "peer": true - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", - "dev": true, - "peer": true - }, - "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/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dev": true, - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/he": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", - "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", - "dev": true, - "bin": { - "he": "bin/he" - } - }, - "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": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "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/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": { - "binary-extensions": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-builtin-module": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/is-builtin-module/-/is-builtin-module-3.2.1.tgz", - "integrity": "sha512-BSLE3HnV2syZ0FK0iMA/yUGplUeMmNz4AW5fnTunbCIqZi4vG3WjJT9FHMy5D69xmAYBHXQhJdALdpwVxV501A==", - "dev": true, - "dependencies": { - "builtin-modules": "^3.3.0" - }, - "engines": { - "node": ">=6" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dev": true, - "dependencies": { - "hasown": "^2.0.0" - }, - "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": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "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, - "engines": { - "node": ">=8" - } - }, - "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": { - "is-extglob": "^2.1.1" - }, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/is-module": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-module/-/is-module-1.0.0.tgz", - "integrity": "sha512-51ypPSPCoTEIN9dy5Oy+h4pShgJmPCygKfyRCISBI+JoWT/2oJvK8QPxmwv7b/p239jXrm9M1mlQbyKJ5A152g==", - "dev": true - }, - "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, - "engines": { - "node": ">=0.12.0" - } - }, - "node_modules/is-plain-obj": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/is-plain-obj/-/is-plain-obj-2.1.0.tgz", - "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "node_modules/is-reference": { - "version": "1.2.1", - "resolved": "https://registry.npmjs.org/is-reference/-/is-reference-1.2.1.tgz", - "integrity": "sha512-U82MsXXiFIrjCK4otLT+o2NA2Cd2g5MLoOVXUZjIOhLurrRxpEXzI8O0KZHr3IjLvlAH1kTPYSuqer5T9ZVBKQ==", - "dev": true, - "dependencies": { - "@types/estree": "*" - } - }, - "node_modules/is-unicode-supported": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", - "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/jest-worker": { - "version": "27.5.1", - "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-27.5.1.tgz", - "integrity": "sha512-7vuh85V5cdDofPyxn58nrPjBktZo0u9x1g8WtjQol+jZDaE+fhN+cIvTj11GndBnMnyfrUOG1sZQxCdjKh+DKg==", - "dev": true, - "peer": true, - "dependencies": { - "@types/node": "*", - "merge-stream": "^2.0.0", - "supports-color": "^8.0.0" - }, - "engines": { - "node": ">= 10.13.0" - } - }, - "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, - "dependencies": { - "argparse": "^2.0.1" - }, - "bin": { - "js-yaml": "bin/js-yaml.js" - } - }, - "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, - "peer": 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, - "peer": true - }, - "node_modules/karma-webpack": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/karma-webpack/-/karma-webpack-5.0.1.tgz", - "integrity": "sha512-oo38O+P3W2mSPCSUrQdySSPv1LvPpXP+f+bBimNomS5sW+1V4SuhCuW8TfJzV+rDv921w2fDSDw0xJbPe6U+kQ==", - "dev": true, - "dependencies": { - "glob": "^7.1.3", - "minimatch": "^9.0.3", - "webpack-merge": "^4.1.5" - }, - "engines": { - "node": ">= 18" - }, - "peerDependencies": { - "webpack": "^5.0.0" - } - }, - "node_modules/karma-webpack/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": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/karma-webpack/node_modules/glob/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/karma-webpack/node_modules/glob/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": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/karma-webpack/node_modules/minimatch": { - "version": "9.0.4", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.4.tgz", - "integrity": "sha512-KqWh+VchfxcMNRAJjj2tnsSJdNbHsVgnkBhTNrW7AjVo6OvLtxw8zfT9oLw1JSohlFzJ8jCoTgaoXvJ+kHt6fw==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=16 || 14 >=14.17" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/loader-runner": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/loader-runner/-/loader-runner-4.3.0.tgz", - "integrity": "sha512-3R/1M+yS3j5ou80Me59j7F9IMs4PXs3VqRrm0TU3AbKPxlmpoY1TNscJV/oGJXo8qCatFGTfDbY6W6ipGOYXfg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6.11.5" - } - }, - "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": { - "p-locate": "^5.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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/log-symbols": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/log-symbols/-/log-symbols-4.1.0.tgz", - "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", - "dev": true, - "dependencies": { - "chalk": "^4.1.0", - "is-unicode-supported": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/magic-string": { - "version": "0.30.10", - "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.10.tgz", - "integrity": "sha512-iIRwTIf0QKV3UAnYK4PU8uiEc4SRh5jX0mwpIwETPpHdhVM4f53RSwS/vXvN1JhGX+Cs7B8qIq3d6AH49O5fAQ==", - "dev": true, - "dependencies": { - "@jridgewell/sourcemap-codec": "^1.4.15" - } - }, - "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, - "peer": true - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "dev": true, - "peer": true, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dev": true, - "peer": true, - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha": { - "version": "10.4.0", - "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.4.0.tgz", - "integrity": "sha512-eqhGB8JKapEYcC4ytX/xrzKforgEc3j1pGlAXVy3eRwrtAy5/nIfT1SvgGzfN0XZZxeLq0aQWkOUAmqIJiv+bA==", - "dev": true, - "dependencies": { - "ansi-colors": "4.1.1", - "browser-stdout": "1.3.1", - "chokidar": "3.5.3", - "debug": "4.3.4", - "diff": "5.0.0", - "escape-string-regexp": "4.0.0", - "find-up": "5.0.0", - "glob": "8.1.0", - "he": "1.2.0", - "js-yaml": "4.1.0", - "log-symbols": "4.1.0", - "minimatch": "5.0.1", - "ms": "2.1.3", - "serialize-javascript": "6.0.0", - "strip-json-comments": "3.1.1", - "supports-color": "8.1.1", - "workerpool": "6.2.1", - "yargs": "16.2.0", - "yargs-parser": "20.2.4", - "yargs-unparser": "2.0.0" - }, - "bin": { - "_mocha": "bin/_mocha", - "mocha": "bin/mocha.js" - }, - "engines": { - "node": ">= 14.0.0" - } - }, - "node_modules/mocha-teamcity-reporter": { - "version": "4.2.0", - "resolved": "https://registry.npmjs.org/mocha-teamcity-reporter/-/mocha-teamcity-reporter-4.2.0.tgz", - "integrity": "sha512-H08IvAIsiCcdXAEObzp/VvJHFfLummxt5wpr0gU4yxx6pTb7ZmKnVjyXkFi+3gYi3bu/j2iJdoK9Aknz16mbBg==", - "dev": true, - "engines": { - "node": ">=6" - }, - "peerDependencies": { - "mocha": ">=6" - } - }, - "node_modules/mocha/node_modules/minimatch": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.0.1.tgz", - "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", - "dev": true, - "dependencies": { - "brace-expansion": "^2.0.1" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/mocha/node_modules/serialize-javascript": { - "version": "6.0.0", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.0.tgz", - "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "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 - }, - "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, - "peer": true - }, - "node_modules/node-releases": { - "version": "2.0.14", - "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.14.tgz", - "integrity": "sha512-y10wOWt8yZpqXmOgRo77WaHEmhYQYGNA6y421PKsKYWEK8aW+cqAphborZDhqfyKrbZEN92CN1X2KbafY2s7Yw==", - "dev": true, - "peer": true - }, - "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.10.0" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dev": true, - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/p-limit": { - "version": "3.1.0", - "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", - "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", - "dev": true, - "dependencies": { - "yocto-queue": "^0.1.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "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": { - "p-limit": "^3.0.2" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-exists": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", - "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", - "dev": true, - "engines": { - "node": ">=8" - } - }, - "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, - "engines": { - "node": ">=0.10.0" - } - }, - "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/picocolors": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", - "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==", - "dev": true, - "peer": true - }, - "node_modules/picomatch": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", - "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", - "dev": true, - "engines": { - "node": ">=8.6" - }, - "funding": { - "url": "https://github.com/sponsors/jonschlinkert" - } - }, - "node_modules/punycode": { - "version": "2.3.1", - "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", - "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/randombytes": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/randombytes/-/randombytes-2.1.0.tgz", - "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", - "dev": true, - "dependencies": { - "safe-buffer": "^5.1.0" - } - }, - "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": { - "picomatch": "^2.2.1" - }, - "engines": { - "node": ">=8.10.0" - } - }, - "node_modules/require-directory": { - "version": "2.1.1", - "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", - "dev": true, - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dev": true, - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/rollup": { - "version": "4.16.4", - "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.16.4.tgz", - "integrity": "sha512-kuaTJSUbz+Wsb2ATGvEknkI12XV40vIiHmLuFlejoo7HtDok/O5eDDD0UpCVY5bBX5U5RYo8wWP83H7ZsqVEnA==", - "dev": true, - "dependencies": { - "@types/estree": "1.0.5" - }, - "bin": { - "rollup": "dist/bin/rollup" - }, - "engines": { - "node": ">=18.0.0", - "npm": ">=8.0.0" - }, - "optionalDependencies": { - "@rollup/rollup-android-arm-eabi": "4.16.4", - "@rollup/rollup-android-arm64": "4.16.4", - "@rollup/rollup-darwin-arm64": "4.16.4", - "@rollup/rollup-darwin-x64": "4.16.4", - "@rollup/rollup-linux-arm-gnueabihf": "4.16.4", - "@rollup/rollup-linux-arm-musleabihf": "4.16.4", - "@rollup/rollup-linux-arm64-gnu": "4.16.4", - "@rollup/rollup-linux-arm64-musl": "4.16.4", - "@rollup/rollup-linux-powerpc64le-gnu": "4.16.4", - "@rollup/rollup-linux-riscv64-gnu": "4.16.4", - "@rollup/rollup-linux-s390x-gnu": "4.16.4", - "@rollup/rollup-linux-x64-gnu": "4.16.4", - "@rollup/rollup-linux-x64-musl": "4.16.4", - "@rollup/rollup-win32-arm64-msvc": "4.16.4", - "@rollup/rollup-win32-ia32-msvc": "4.16.4", - "@rollup/rollup-win32-x64-msvc": "4.16.4", - "fsevents": "~2.3.2" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "dev": true, - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ] - }, - "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, - "peer": true, - "dependencies": { - "@types/json-schema": "^7.0.8", - "ajv": "^6.12.5", - "ajv-keywords": "^3.5.2" - }, - "engines": { - "node": ">= 10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - } - }, - "node_modules/serialize-javascript": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/serialize-javascript/-/serialize-javascript-6.0.2.tgz", - "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", - "dev": true, - "dependencies": { - "randombytes": "^2.1.0" - } - }, - "node_modules/smob": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/smob/-/smob-1.5.0.tgz", - "integrity": "sha512-g6T+p7QO8npa+/hNx9ohv1E5pVCmWrVCUzUXJyLdMmftX6ER0oiWY/w9knEonLpnOp6b6FenKnMfR8gqwWdwig==", - "dev": true - }, - "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-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" - } - }, - "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/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/strip-json-comments": { - "version": "3.1.1", - "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", - "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", - "dev": true, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/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": { - "has-flag": "^4.0.0" - }, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/chalk/supports-color?sponsor=1" - } - }, - "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/tapable": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", - "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", - "dev": true, - "peer": true, - "engines": { - "node": ">=6" - } - }, - "node_modules/terser": { - "version": "5.30.4", - "resolved": "https://registry.npmjs.org/terser/-/terser-5.30.4.tgz", - "integrity": "sha512-xRdd0v64a8mFK9bnsKVdoNP9GQIKUAaJPTaqEQDL4w/J8WaW4sWXXoMZ+6SimPkfT5bElreXf8m9HnmPc3E1BQ==", - "dev": true, - "dependencies": { - "@jridgewell/source-map": "^0.3.3", - "acorn": "^8.8.2", - "commander": "^2.20.0", - "source-map-support": "~0.5.20" - }, - "bin": { - "terser": "bin/terser" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/terser-webpack-plugin": { - "version": "5.3.10", - "resolved": "https://registry.npmjs.org/terser-webpack-plugin/-/terser-webpack-plugin-5.3.10.tgz", - "integrity": "sha512-BKFPWlPDndPs+NGGCr1U59t0XScL5317Y0UReNrHaw9/FwhPENlq6bfgs+4yPfyP51vqC1bQ4rp1EfXW5ZSH9w==", - "dev": true, - "peer": true, - "dependencies": { - "@jridgewell/trace-mapping": "^0.3.20", - "jest-worker": "^27.4.5", - "schema-utils": "^3.1.1", - "serialize-javascript": "^6.0.1", - "terser": "^5.26.0" - }, - "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_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": { - "is-number": "^7.0.0" - }, - "engines": { - "node": ">=8.0" - } - }, - "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/typescript": { - "version": "4.3.5", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.3.5.tgz", - "integrity": "sha512-DqQgihaQ9cUrskJo9kIyW/+g0Vxsk8cDtZ52a3NGh0YNTfpUSArXSohyUGnvbPazEPLu398C0UxmKSOrPumUzA==", - "dev": true, - "bin": { - "tsc": "bin/tsc", - "tsserver": "bin/tsserver" - }, - "engines": { - "node": ">=4.2.0" - } - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", - "dev": true - }, - "node_modules/update-browserslist-db": { - "version": "1.0.13", - "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.0.13.tgz", - "integrity": "sha512-xebP81SNcPuNpPP3uzeW1NYXxI3rxyJzF3pD6sH4jE7o/IX+WtSpwnVU+qIsDPyk0d3hmFQ7mjqc6AtV604hbg==", - "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" - } - ], - "peer": true, - "dependencies": { - "escalade": "^3.1.1", - "picocolors": "^1.0.0" - }, - "bin": { - "update-browserslist-db": "cli.js" - }, - "peerDependencies": { - "browserslist": ">= 4.21.0" - } - }, - "node_modules/uri-js": { - "version": "4.4.1", - "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", - "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", - "dev": true, - "peer": true, - "dependencies": { - "punycode": "^2.1.0" - } - }, - "node_modules/watchpack": { - "version": "2.4.1", - "resolved": "https://registry.npmjs.org/watchpack/-/watchpack-2.4.1.tgz", - "integrity": "sha512-8wrBCMtVhqcXP2Sup1ctSkga6uc2Bx0IIvKyT7yTFier5AXHooSI+QyQQAtTb7+E0IUCCKyTFmXqdqgum2XWGg==", - "dev": true, - "peer": true, - "dependencies": { - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.1.2" - }, - "engines": { - "node": ">=10.13.0" - } - }, - "node_modules/webpack": { - "version": "5.91.0", - "resolved": "https://registry.npmjs.org/webpack/-/webpack-5.91.0.tgz", - "integrity": "sha512-rzVwlLeBWHJbmgTC/8TvAcu5vpJNII+MelQpylD4jNERPwpBJOE2lEcko1zJX3QJeLjTTAnQxn/OJ8bjDzVQaw==", - "dev": true, - "peer": true, - "dependencies": { - "@types/eslint-scope": "^3.7.3", - "@types/estree": "^1.0.5", - "@webassemblyjs/ast": "^1.12.1", - "@webassemblyjs/wasm-edit": "^1.12.1", - "@webassemblyjs/wasm-parser": "^1.12.1", - "acorn": "^8.7.1", - "acorn-import-assertions": "^1.9.0", - "browserslist": "^4.21.10", - "chrome-trace-event": "^1.0.2", - "enhanced-resolve": "^5.16.0", - "es-module-lexer": "^1.2.1", - "eslint-scope": "5.1.1", - "events": "^3.2.0", - "glob-to-regexp": "^0.4.1", - "graceful-fs": "^4.2.11", - "json-parse-even-better-errors": "^2.3.1", - "loader-runner": "^4.2.0", - "mime-types": "^2.1.27", - "neo-async": "^2.6.2", - "schema-utils": "^3.2.0", - "tapable": "^2.1.1", - "terser-webpack-plugin": "^5.3.10", - "watchpack": "^2.4.1", - "webpack-sources": "^3.2.3" - }, - "bin": { - "webpack": "bin/webpack.js" - }, - "engines": { - "node": ">=10.13.0" - }, - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/webpack" - }, - "peerDependenciesMeta": { - "webpack-cli": { - "optional": true - } - } - }, - "node_modules/webpack-merge": { - "version": "4.2.2", - "resolved": "https://registry.npmjs.org/webpack-merge/-/webpack-merge-4.2.2.tgz", - "integrity": "sha512-TUE1UGoTX2Cd42j3krGYqObZbOD+xF7u28WB7tfUordytSjbWTIjK/8V0amkBfTYN4/pB/GIDlJZZ657BGG19g==", - "dev": true, - "dependencies": { - "lodash": "^4.17.15" - } - }, - "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" - } - }, - "node_modules/workerpool": { - "version": "6.2.1", - "resolved": "https://registry.npmjs.org/workerpool/-/workerpool-6.2.1.tgz", - "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==", - "dev": true - }, - "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/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", - "dev": true - }, - "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/yargs": { - "version": "16.2.0", - "resolved": "https://registry.npmjs.org/yargs/-/yargs-16.2.0.tgz", - "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", - "dev": true, - "dependencies": { - "cliui": "^7.0.2", - "escalade": "^3.1.1", - "get-caller-file": "^2.0.5", - "require-directory": "^2.1.1", - "string-width": "^4.2.0", - "y18n": "^5.0.5", - "yargs-parser": "^20.2.2" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-parser": { - "version": "20.2.4", - "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-20.2.4.tgz", - "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==", - "dev": true, - "engines": { - "node": ">=10" - } - }, - "node_modules/yargs-unparser": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/yargs-unparser/-/yargs-unparser-2.0.0.tgz", - "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", - "dev": true, - "dependencies": { - "camelcase": "^6.0.0", - "decamelize": "^4.0.0", - "flat": "^5.0.2", - "is-plain-obj": "^2.1.0" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/yocto-queue": { - "version": "0.1.0", - "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", - "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", - "dev": true, - "engines": { - "node": ">=10" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - } - } -} diff --git a/libraries/tools/kotlin-test-js-runner/package.json b/libraries/tools/kotlin-test-js-runner/package.json deleted file mode 100644 index 936ad66a9b55d..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/package.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "name": "kotlin-test-js-runner", - "version": "0.0.2", - "description": "Simple Kotlin/JS tests runner with TeamCity reporter", - "license": "Apache-2.0", - "dependencies": { - "format-util": "^1.0.5" - }, - "devDependencies": { - "@types/node": "^18.11.18", - "rollup": "^4.8.0", - "@rollup/plugin-commonjs": "^25.0.7", - "@rollup/plugin-node-resolve": "^15.2.3", - "@rollup/plugin-typescript": "^11.1.5", - "@rollup/plugin-terser": "^0.4.4", - "typescript": "4.3.5", - "tslib": "^2.6.2", - "karma-webpack": "^5.0.1", - "mocha": "^10.4.0", - "mocha-teamcity-reporter": "^4.2.0" - } -} diff --git a/libraries/tools/kotlin-test-js-runner/rollup.config.mjs b/libraries/tools/kotlin-test-js-runner/rollup.config.mjs deleted file mode 100644 index f39f8a8716bd6..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/rollup.config.mjs +++ /dev/null @@ -1,131 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -import typescript from '@rollup/plugin-typescript'; -import nodeResolve from '@rollup/plugin-node-resolve'; -import commonjs from '@rollup/plugin-commonjs'; -import terser from '@rollup/plugin-terser'; - -import pckg from "./package.json" with { type: 'json' }; - -export default [ - { - input: './nodejs.ts', - output: { - file: 'lib/kotlin-test-nodejs-runner.js', - format: 'cjs', - banner: '#!/usr/bin/env node', - sourcemap: true - }, - plugins: plugins() - }, - { - input: './nodejs-empty.ts', - output: { - file: 'lib/kotlin-test-nodejs-empty-runner.js', - format: 'cjs', - banner: '#!/usr/bin/env node', - sourcemap: true - }, - plugins: plugins() - }, - { - input: './karma.ts', - output: { - file: 'lib/kotlin-test-karma-runner.js', - format: 'cjs', - sourcemap: true - }, - plugins: plugins() - }, - { - input: './karma-kotlin-debug-plugin.js', - output: { - file: 'lib/karma-kotlin-debug-plugin.js', - format: 'esm' - } - }, - { - input: './karma-debug-runner.js', - output: { - file: 'lib/karma-debug-runner.js', - format: 'cjs' - } - }, - { - input: './karma-debug-framework.js', - output: { - file: 'lib/karma-debug-framework.js', - format: 'cjs' - } - }, - { - input: './karma-kotlin-reporter.js', - external: ['path', 'util'], - output: { - file: 'lib/karma-kotlin-reporter.js', - format: 'cjs' - } - }, - { - input: './tc-log-appender.js', - output: { - file: 'lib/tc-log-appender.js', - format: 'cjs' - } - }, - { - input: './tc-log-error-webpack.js', - output: { - file: 'lib/tc-log-error-webpack.js', - format: 'cjs' - } - }, - { - input: './webpack-5-debug.js', - output: { - file: 'lib/webpack-5-debug.js', - format: 'cjs' - } - }, - { - input: './mocha-kotlin-reporter.js', - external: ['path', 'util'], - output: { - file: 'lib/mocha-kotlin-reporter.js', - format: 'cjs' - } - }, - { - input: './karma-webpack-output.js', - output: { - file: 'lib/karma-webpack-output.js', - format: 'cjs' - } - } -] - -function plugins() { - return [ - nodeResolve({ - jsnext: true, - main: true - }), - commonjs(), - typescript({ - tsconfig: "tsconfig.json" - }), - terser({ - compress: { - toplevel: true, - global_defs: { - DEBUG: false, - VERSION: pckg.version, - DESCRIPTION: pckg.description - } - } - }) - ] -} \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/src/Adapter.ts b/libraries/tools/kotlin-test-js-runner/src/Adapter.ts deleted file mode 100644 index 0f11092de0b09..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/src/Adapter.ts +++ /dev/null @@ -1,40 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -import {CliArgValues} from "./CliArgsParser"; -import {KotlinTestRunner} from "./KotlinTestRunner"; -import {configureFiltering} from "./CliFiltertingConfiguration"; -import {runWithTeamCityConsoleAdapter} from "./KotlinTestTeamCityConsoleAdapter"; -import {TeamCityMessagesFlow} from "./TeamCityMessagesFlow"; - -export function runWithFilteringAndConsoleAdapters( - initialAdapter: KotlinTestRunner, - cliArgsValue: CliArgValues -): KotlinTestRunner { - const realConsoleLog = console.log; - const teamCity = new TeamCityMessagesFlow(null, (payload) => realConsoleLog(payload)); - return runWithTeamCityConsoleAdapter( - runWithFilteringAdapter( - initialAdapter, - cliArgsValue - ), - teamCity - ) -} - -export function runWithFilteringAdapter( - initialAdapter: KotlinTestRunner, - cliArgsValue: CliArgValues -): KotlinTestRunner { - const args = { - include: cliArgsValue.include as string[], - exclude: cliArgsValue.exclude as string[], - }; - - let runner: KotlinTestRunner = initialAdapter; - runner = configureFiltering(runner, args.include, args.exclude); - - return runner; -} \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/src/CliArgsParser.ts b/libraries/tools/kotlin-test-js-runner/src/CliArgsParser.ts deleted file mode 100644 index 17ab83a06f555..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/src/CliArgsParser.ts +++ /dev/null @@ -1,153 +0,0 @@ -import {println, startsWith} from "./utils"; -import {IgnoredTestSuitesReporting} from "./KotlinTestTeamCityConsoleAdapter"; - -export type CliDescription = { - version: string, - description: string, - usage: string, - args: { - [k: string]: CliArgDescription, - }, - freeArgsTitle: string | null -} - -export type CliArgValues = { - [k: string]: string[] | string, - free: string[] -} - -export type CliArgDescription = { - keys: string[], - help: string, - values?: string[], - valuesHelp?: string[], - default?: string, - single?: true -} - -export class CliArgsParser { - constructor( - private description: CliDescription, - private onFail: (n: number) => never - ) { - } - - printUsage() { - const description = this.description; - - println(`v${description.version} - ${description.description}`); - println(); - println(`Usage: ${description.usage}`); - println(); - for (let key in description.args) { - const data = description.args[key]; - println(' ' + data.keys.join(', ')); - const indent = ' '; - println(`${indent}${data.help}`); - if (data.values && data.valuesHelp) { - println(`${indent}Possible values:`); - for (let i = 0; i < data.values.length; i++) { - const value = data.values[i]; - const help = data.valuesHelp[i]; - println(`${indent} - "${value}": ${help}`) - } - } - if (data.default) println(`${indent}By default: ${data.default}`); - println('') - } - } - - badArgsExit(message: string) { - println(message); - println(); - this.printUsage(); - this.onFail(1) - } - - parse(args: string[]): CliArgValues { - const description = this.description; - - const result: CliArgValues = { - free: [] - }; - for (let key in description.args) { - if (!description.args[key].single) { - result[key] = []; - } - } - - // process all arguments from left to right - args: while (args.length != 0) { - const arg = args.shift() as string; - - if (startsWith(arg, '--')) { - for (let argName in description.args) { - const argDescription = description.args[argName]; - if (argDescription.keys.indexOf(arg) != -1) { - if (args.length == 0) { - this.badArgsExit("Missed value after option " + arg); - } - - const value = args.shift() as string; - if (argDescription.values && argDescription.values.indexOf(value) == -1) { - this.badArgsExit("Unsupported value for option " + arg); - } - - if (argDescription.single) { - result[argName] = value; - } else { - (result[argName] as string[]).push(value); - } - - continue args; - } - } - } else { - result.free.push(arg) - } - } - - if (description.freeArgsTitle && result.free.length == 0) { - this.badArgsExit(`At least one ${description.freeArgsTitle} should be provided`) - } - - return result - } -} - -export function getDefaultCliDescription(): CliDescription { - return { - version: VERSION, - description: DESCRIPTION, - usage: "[-t --tests] [-e --exclude] , , ..", - args: { - include: { - keys: ['--tests', '--include'], - help: "Tests to include. Example: MySuite.test1,MySuite.MySubSuite.*,*unix*,!*windows*", - default: "*" - - }, - exclude: { - keys: ['--exclude'], - help: "Tests to exclude. Example: MySuite.test1,MySuite.MySubSuite.*,*unix*" - }, - ignoredTestSuites: { - keys: ['--ignoredTestSuites'], - help: "How to deal with ignored test suites", - single: true, - values: [ - IgnoredTestSuitesReporting.skip, - IgnoredTestSuitesReporting.reportAsIgnoredTest, - IgnoredTestSuitesReporting.reportAllInnerTestsAsIgnored - ], - valuesHelp: [ - "don't report ignored test suites", - "useful to speedup large ignored test suites", - "will cause visiting all inner tests", - ], - default: IgnoredTestSuitesReporting.reportAllInnerTestsAsIgnored - } - }, - freeArgsTitle: null - }; -} diff --git a/libraries/tools/kotlin-test-js-runner/src/CliFiltertingConfiguration.ts b/libraries/tools/kotlin-test-js-runner/src/CliFiltertingConfiguration.ts deleted file mode 100644 index 3aba5daa0097c..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/src/CliFiltertingConfiguration.ts +++ /dev/null @@ -1,52 +0,0 @@ -import {KotlinTestRunner} from "./KotlinTestRunner"; -import { - allTest, - CompositeTestFilter, - KotlinTestsFilter, - newKotlinTestsFilter, - runWithFilter -} from "./KotlinTestsFilter"; -import {flatMap, println, pushIfNotNull} from "./utils"; - -export function configureFiltering( - runner: KotlinTestRunner, - includeWildcards: string[], - excludeWildcards: string[] -): KotlinTestRunner { - const include: KotlinTestsFilter[] = []; - const exclude: KotlinTestsFilter[] = []; - - function collectWildcards( - value: string[], - positive: KotlinTestsFilter[], - negative: KotlinTestsFilter[] - ) { - flatMap(value, (t: string) => t.split(',')) - .map(t => { - if (t.length && t[0] == '!') { - pushIfNotNull(negative, newKotlinTestsFilter(t.substring(1))) - } else { - pushIfNotNull(positive, newKotlinTestsFilter(t)) - } - }) - } - - collectWildcards(includeWildcards, include, exclude); - collectWildcards(excludeWildcards, exclude, include); - - if (include.length == 0 && exclude.length == 0) { - return runner - } else { - if (include.length == 0) { - include.push(allTest) - } - - const filter = new CompositeTestFilter(include, exclude); - - if (DEBUG) { - println(filter.toString()); - } - - return runWithFilter(runner, filter) - } -} diff --git a/libraries/tools/kotlin-test-js-runner/src/DebugConfigurator.js b/libraries/tools/kotlin-test-js-runner/src/DebugConfigurator.js deleted file mode 100644 index b2fd88eef42ee..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/src/DebugConfigurator.js +++ /dev/null @@ -1,101 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -const REMOTE_DEBUGGING_PORT = '--remote-debugging-port'; - -export function configureBrowsers(config) { - let newBrowsers = config.browsers; - if (!Array.isArray(newBrowsers)) { - newBrowsers = []; - } - - let browser = newBrowsers.find(browserName => isDebuggableBrowser(browserName, config)); - - if (!browser) { - console.warn( - 'Unable to find debuggable browser: Only Google Chrome with 9222 remote debugging port supported\n', - 'Fallback on Chrome Headless' - ); - browser = 'ChromeHeadless' - } - - config.browsers = [browser]; -} - -function isDebuggableBrowser(browserName, config) { - if (isDebuggableBrowserName(browserName)) { - return true - } - - const customLaunchers = config.customLaunchers; - if (!customLaunchers) { - return false; - } - - let customLauncher = customLaunchers[browserName]; - if (!customLauncher) { - return false; - } - - if (isDebuggableBrowserName(customLauncher.base)) { - return true - } - - const flags = customLauncher.flags; - if (!Array.isArray(flags)) { - return false; - } - - const prefix = REMOTE_DEBUGGING_PORT + '='; - const value = flags.find(flag => typeof flag === 'string' && flag.indexOf(prefix) === 0); - if (value == null) { - return false; - } - - const port = parseInt(value.substring(prefix.length), 10); - if (isNaN(port) || port !== 9222) { - console.error(`Debugger expect 9222 port, but ${port} found`); - return false; - } - - return true; -} - -function isDebuggableBrowserName(browserName) { - return [ - 'ChromeHeadless', - 'ChromeCanaryHeadless', - 'ChromiumHeadless' - ].includes(browserName); -} - -export function fixMochaTimeout(config) { - let client = config.client; - if (typeof client === 'undefined') { - config.client = client = {}; - } - if (client === Object(client)) { - let mocha = client.mocha; - if (typeof mocha === 'undefined') { - client.mocha = mocha = {}; - } - if (mocha === Object(mocha)) { - mocha.timeout = 0; - } - else { - console.error('config.client.mocha is not an object'); - process.exit(1); - } - } - else { - console.error('config.client is not an object'); - process.exit(1); - } -} - -export function fixBrowserActivityTimeout(config) { - config.browserNoActivityTimeout = null - config.pingTimeout = 24 * 60 * 60 * 1000 -} \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/src/EmptyKotlinTestRunner.ts b/libraries/tools/kotlin-test-js-runner/src/EmptyKotlinTestRunner.ts deleted file mode 100644 index e3d3f483b0929..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/src/EmptyKotlinTestRunner.ts +++ /dev/null @@ -1,15 +0,0 @@ -/* - * Copyright 2010-2022 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -import {KotlinTestRunner} from "./KotlinTestRunner"; - -export class EmptyKotlinTestRunner implements KotlinTestRunner { - suite(name: string, isIgnored: boolean, fn: () => void): void { - } - - test(name: string, isIgnored: boolean, fn: () => void): void { - } - -} \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/src/KarmaWebpackOutputFramework.mjs b/libraries/tools/kotlin-test-js-runner/src/KarmaWebpackOutputFramework.mjs deleted file mode 100644 index 95e72b2be4e03..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/src/KarmaWebpackOutputFramework.mjs +++ /dev/null @@ -1,27 +0,0 @@ -/* - * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -export function KarmaWebpackOutputFramework(config) { - // This controller is instantiated and set during the preprocessor phase. - const controller = config.__karmaWebpackController; - - // only if webpack has instantiated its controller - if (!controller) { - console.warn( - "Webpack has not instantiated controller yet.\n" + - "Check if you have enabled webpack preprocessor and framework before this framework" - ) - return - } - - config.files.push({ - pattern: `${controller.outputPath}/**/*`, - included: false, - served: true, - watched: false - }) -} - -KarmaWebpackOutputFramework.$inject = ['config']; \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/src/KotlinTestRunner.ts b/libraries/tools/kotlin-test-js-runner/src/KotlinTestRunner.ts deleted file mode 100644 index 485587df3c646..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/src/KotlinTestRunner.ts +++ /dev/null @@ -1,5 +0,0 @@ -export interface KotlinTestRunner { - suite(name: string, isIgnored: boolean, fn: () => void): void - - test(name: string, isIgnored: boolean, fn: () => void): void -} \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/src/KotlinTestTeamCityConsoleAdapter.ts b/libraries/tools/kotlin-test-js-runner/src/KotlinTestTeamCityConsoleAdapter.ts deleted file mode 100644 index 4f85bfa1b26a7..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/src/KotlinTestTeamCityConsoleAdapter.ts +++ /dev/null @@ -1,80 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -import {KotlinTestRunner} from "./KotlinTestRunner"; -import {TeamCityMessageData, TeamCityMessagesFlow} from "./TeamCityMessagesFlow"; -const format = require("format-util"); - -// don't use enum as it is not minified by uglify -export type IgnoredTestSuitesReporting - = "skip" | "reportAsIgnoredTest" | "reportAllInnerTestsAsIgnored" -export const IgnoredTestSuitesReporting: { [key: string]: IgnoredTestSuitesReporting } = { - skip: "skip", - reportAsIgnoredTest: "reportAsIgnoredTest", - reportAllInnerTestsAsIgnored: "reportAllInnerTestsAsIgnored" -}; - -// to reduce minified code size -function withName(name: string, data?: TeamCityMessageData): TeamCityMessageData { - data = data || {}; - data["name"] = name; - return data -} - -const logTypes = ['log', 'info', 'warn', 'error', 'debug'] as const - -type LogType = typeof logTypes[number] - -export function runWithTeamCityConsoleAdapter( - runner: KotlinTestRunner, - teamCity: TeamCityMessagesFlow -): KotlinTestRunner { - return { - suite: function (name: string, isIgnored: boolean, fn: () => void) { - runner.suite(name, isIgnored, fn) - }, - test: function (name: string, isIgnored: boolean, fn: () => void) { - runner.test(name, isIgnored, () => { - const log = (type: LogType) => function (message?: any, ...optionalParams: any[]) { - message = String(message) - let messageType: 'testStdOut' | 'testStdErr' - if (type == 'warn' || type == 'error') { - messageType = 'testStdErr' - } else { - messageType = 'testStdOut' - } - - teamCity.sendMessage( - messageType, - withName( - name, - { - "out": `[${type}] ${format(message, ...optionalParams)}\n` - } - ) - ) - }; - - const globalConsole = console as unknown as { - [method: string]: (message?: any, ...optionalParams: any[]) => void - }; - - const revertLogMethods = logTypes - .map(method => { - const realMethod = globalConsole[method]; - globalConsole[method] = log(method); - return () => globalConsole[method] = realMethod - }); - try { - return fn(); - } catch (e) { - throw e; - } finally { - revertLogMethods.forEach(revert => revert()); - } - }); - } - } -} \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/src/KotlinTestsFilter.ts b/libraries/tools/kotlin-test-js-runner/src/KotlinTestsFilter.ts deleted file mode 100644 index 44cd70d44a6f5..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/src/KotlinTestsFilter.ts +++ /dev/null @@ -1,198 +0,0 @@ -import {escapeRegExp, startsWith, trim} from "./utils"; -import {KotlinTestRunner} from "./KotlinTestRunner"; - -export interface KotlinTestsFilter { - mayContainTestsFromSuite(fqn: string, alternativeFqn?: string): boolean; - - containsTest(fqn: string, alternativeFqn?: string): boolean; -} - -export function runWithFilter( - runner: KotlinTestRunner, - filter: KotlinTestsFilter, -): KotlinTestRunner { - let path: string[] = []; - - function jsClassName() { - // skip root - if (!path[0]) { - return path.slice(1).join('.') - } - - return path.join('.') - } - - // In Java (Gradle, IDEA) inner classes uses `$` as separator - function javaClassName() { - const javaClassName = `${path.slice(1).join('$')}`; - - // skip root - if (!path[0]) { - return javaClassName - } - - if (!javaClassName) { - return path[0] - } - - return `${path[0]}.${javaClassName}` - } - - return { - suite: function (name: string, isIgnored: boolean, fn: () => void) { - path.push(name); - - try { - if (path.length > 0 && !filter.mayContainTestsFromSuite(jsClassName(), javaClassName())) { - return; - } - - runner.suite(name, isIgnored, fn); - } finally { - path.pop() - } - }, - - test: function (name: string, isIgnored: boolean, fn: () => void) { - try { - if (!filter.containsTest(`${jsClassName()}.${name}`, `${javaClassName()}.${name}`)) - return; - - runner.test(name, isIgnored, fn); - } finally { - } - } - }; -} - -export function newKotlinTestsFilter(wildcard: string | null): KotlinTestsFilter | null { - if (wildcard == null) return null; - wildcard = trim(wildcard); - wildcard = wildcard.replace(/\*+/, '*'); // ** => * - if (wildcard.length == 0) return null; - else if (wildcard == '*') return allTest; - else if (wildcard.indexOf('*') == -1) return new ExactFilter(wildcard); - else if (startsWith(wildcard, '*')) return new RegExpKotlinTestsFilter(wildcard); - else { - // optimize for cases like "Something*", "Something*a*b" and so on. - // by adding explicit prefix matcher to not visit unneeded suites - // (RegExpKotlinTestsFilter doesn't support suites matching) - const [prefix, rest] = wildcard.split('*', 2); - return new StartsWithFilter(prefix, rest ? new RegExpKotlinTestsFilter(wildcard) : null) - } -} - -export const allTest = new class implements KotlinTestsFilter { - mayContainTestsFromSuite(fqn: string): boolean { - return true; - } - - containsTest(fqn: string): boolean { - return true; - } -}; - -export class StartsWithFilter implements KotlinTestsFilter { - constructor( - public readonly prefix: string, - public readonly filter: RegExpKotlinTestsFilter | null - ) { - } - - mayContainTestsFromSuite(fqn: string): boolean { - return startsWith(this.prefix, fqn) - || startsWith(fqn, this.prefix); - } - - containsAllTestsFromSuite(fqn: string): boolean { - return this.filter == null && startsWith(fqn, this.prefix); - } - - containsTest(fqn: string): boolean { - return startsWith(fqn, this.prefix) - && (this.filter == null || this.filter.containsTest(fqn)); - } -} - -export class ExactFilter implements KotlinTestsFilter { - private readonly classNameOnlyRegExp: RegExp; - - constructor(public fqn: string) { - // Exact filter by class name only - this.classNameOnlyRegExp = RegExp(`^${escapeRegExp(this.fqn + ".")}[^\.]+$`); - } - - mayContainTestsFromSuite(fqn: string): boolean { - return startsWith(this.fqn, fqn); - } - - containsTest(fqn: string): boolean { - if (fqn === this.fqn) { - return true - } - - return this.classNameOnlyRegExp.test(fqn) - } -} - -export class RegExpKotlinTestsFilter implements KotlinTestsFilter { - public readonly regexp: RegExp; - - constructor(wildcard: string) { - this.regexp = RegExp("^" + wildcard - .split('*') - .map(it => escapeRegExp(it)) - .join('.*') + "$" - ); - } - - mayContainTestsFromSuite(fqn: string): boolean { - return true - } - - containsTest(fqn: string): boolean { - return this.regexp!.test(fqn) - } - - toString(): string { - return this.regexp.toString() - } -} - -export class CompositeTestFilter implements KotlinTestsFilter { - private readonly excludePrefix: StartsWithFilter[] = []; - - constructor( - public include: KotlinTestsFilter[], - public exclude: KotlinTestsFilter[] - ) { - this.exclude.forEach(it => { - if (it instanceof StartsWithFilter && it.filter == null) - this.excludePrefix.push(it) - }) - } - - mayContainTestsFromSuite(fqn: string, alternativeFqn: string): boolean { - for (const excl of this.excludePrefix) { - if (excl.containsAllTestsFromSuite(fqn) || excl.containsAllTestsFromSuite(alternativeFqn)) { - return false - } - } - for (const incl of this.include) { - if (incl.mayContainTestsFromSuite(fqn) || incl.mayContainTestsFromSuite(alternativeFqn)) { - return true - } - } - return false; - } - - containsTest(fqn: string, alternativeFqn: string): boolean { - for (const excl of this.exclude) { - if (excl.containsTest(fqn) || excl.containsTest(alternativeFqn)) return false - } - for (const incl of this.include) { - if (incl.containsTest(fqn) || incl.containsTest(alternativeFqn)) return true - } - return false - } -} \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/src/KotlinTestsFilterDebug.ts b/libraries/tools/kotlin-test-js-runner/src/KotlinTestsFilterDebug.ts deleted file mode 100644 index 738fcc39074b4..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/src/KotlinTestsFilterDebug.ts +++ /dev/null @@ -1,32 +0,0 @@ -import { - allTest, - CompositeTestFilter, - ExactFilter, - RegExpKotlinTestsFilter, - StartsWithFilter -} from "./KotlinTestsFilter"; - -declare const DEBUG: boolean; - -if (DEBUG) { - allTest.toString = function () { - return "(ALL)" - }; - - StartsWithFilter.prototype.toString = function (): string { - return "(STARTS WITH " + this.prefix + (this.filter ? (" AND " + this.filter) : "") + ")" - }; - - RegExpKotlinTestsFilter.prototype.toString = function (): string { - return "(REGEXP " + this.regexp + ")" - }; - - ExactFilter.prototype.toString = function (): string { - return "(EXACT " + this.fqn + ")" - }; - - CompositeTestFilter.prototype.toString = function (): string { - return this.include.map(it => it.toString()).join(" OR ") - + "\n NOT (" + this.exclude.map(it => it.toString()).join(" OR ") + ")" - }; -} \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/src/TeamCityMessagesFlow.ts b/libraries/tools/kotlin-test-js-runner/src/TeamCityMessagesFlow.ts deleted file mode 100644 index ede859c53f43b..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/src/TeamCityMessagesFlow.ts +++ /dev/null @@ -1,24 +0,0 @@ -import {dateTimeWithoutTimeZone, newFlowId} from "./utils" -import {tcEscape} from "./teamcity-format"; - -export type TeamCityMessageData = { [key: string]: any } - -export class TeamCityMessagesFlow { - public readonly id: number; - - constructor(id: number | null, private readonly send: (payload: string) => void) { - this.id = id || newFlowId() - } - - sendMessage(type: string, args: TeamCityMessageData) { - args['flowId'] = this.id; - args['timestamp'] = dateTimeWithoutTimeZone(); - - const serializedArgs = Object - .keys(args) - .map((key) => `${key}='${tcEscape(args[key])}'`) - .join(' '); - - this.send(`##teamcity[${type} ${serializedArgs}]`) - } -} \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/src/teamcity-format.d.ts b/libraries/tools/kotlin-test-js-runner/src/teamcity-format.d.ts deleted file mode 100644 index fa3d4de1cfcf3..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/src/teamcity-format.d.ts +++ /dev/null @@ -1,21 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -export const TEST_IGNORED: string -export const SUITE_START: string -export const SUITE_END: string -export const SUITE_END_NO_DURATION: string -export const TEST_START: string -export const TEST_FAILED: string -export const TEST_FAILED_COMPARISON: string -export const TEST_END: string -export const TEST_END_NO_DURATION: string -export const BLOCK_OPENED: string -export const BLOCK_CLOSED: string -export const TYPED_MESSAGE: string - -export function tcEscape(str: string): string - -export function formatMessage(type: string, ...str: string[]): string \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/src/teamcity-format.js b/libraries/tools/kotlin-test-js-runner/src/teamcity-format.js deleted file mode 100644 index 6b6c72e9ffbcc..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/src/teamcity-format.js +++ /dev/null @@ -1,60 +0,0 @@ -/** - * From mocha-teamcity-reporter - * The MIT License - * Copyright (c) 2016 Jamie Sherriff - */ -export const TEST_IGNORED = `##teamcity[testIgnored name='%s' message='%s' flowId='%s']`; -export const SUITE_START = `##teamcity[testSuiteStarted name='%s' flowId='%s']`; -export const SUITE_END = `##teamcity[testSuiteFinished name='%s' duration='%s' flowId='%s']`; -export const SUITE_END_NO_DURATION = `##teamcity[testSuiteFinished name='%s' flowId='%s']`; -export const TEST_START = `##teamcity[testStarted name='%s' captureStandardOutput='true' flowId='%s']`; -export const TEST_FAILED = `##teamcity[testFailed name='%s' message='%s' details='%s' captureStandardOutput='true' flowId='%s']`; -export const TEST_FAILED_COMPARISON = `##teamcity[testFailed type='comparisonFailure' name='%s' message='%s' \ -details='%s' captureStandardOutput='true' actual='%s' expected='%s' flowId='%s']`; -export const TEST_END = `##teamcity[testFinished name='%s' duration='%s' flowId='%s']`; -export const TEST_END_NO_DURATION = `##teamcity[testFinished name='%s' flowId='%s']`; -export const BLOCK_OPENED = `##teamcity[blockOpened name='%s' flowId='%s']` -export const BLOCK_CLOSED = `##teamcity[blockClosed name='%s' flowId='%s']` - -export const TYPED_MESSAGE = `##teamcity[message text='%s' type='%s']` - -/** - * from teamcity-service-messages - * Copyright (c) 2013 Aaron Forsander - * - * Escape string for TeamCity output. - * @see https://confluence.jetbrains.com/display/TCD65/Build+Script+Interaction+with+TeamCity#BuildScriptInteractionwithTeamCity-servMsgsServiceMessages - */ - -const format = require('format-util'); - -export function tcEscape(str) { - if (!str) { - return ''; - } - - return str - .toString() - .replace(/\x1B.*?m/g, '') // eslint-disable-line no-control-regex - .replace(/\|/g, '||') - .replace(/\n/g, '|n') - .replace(/\r/g, '|r') - .replace(/\[/g, '|[') - .replace(/\]/g, '|]') - .replace(/\u0085/g, '|x') // next line - .replace(/\u2028/g, '|l') // line separator - .replace(/\u2029/g, '|p') // paragraph separator - .replace(/'/g, '|\''); -} - -export function formatMessage() { - let formattedArguments = []; - const args = Array.prototype.slice.call(arguments, 0); - // Format all arguments for TC display (it escapes using the pipe char). - let tcMessage = args.shift(); - args.forEach((param) => { - formattedArguments.push(tcEscape(param)); - }); - formattedArguments.unshift(tcMessage); - return format(...formattedArguments); -} \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/src/utils.ts b/libraries/tools/kotlin-test-js-runner/src/utils.ts deleted file mode 100644 index 5374588e80cf0..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/src/utils.ts +++ /dev/null @@ -1,70 +0,0 @@ -/** - * From teamcity-service-messages. - * Copyright 2013 Aaron Forsander - */ -export function newFlowId(): number { - return Math.floor(Math.random() * (1e10 - 1e6 + 1)) + 1e6; -} - -/** - * From teamcity-service-messages. - * Copyright 2013 Aaron Forsander - */ -export function dateTimeWithoutTimeZone(): string { - // TeamCity not fully support ISO 8601 (see TW-36173) so we need to cut off 'Z' at the end. - return new Date().toISOString().slice(0, -1); -} - -/** - * From lodash. - * Copyright JS Foundation and other contributors - */ -export function startsWith(string: string, target: string) { - return string.slice(0, target.length) == target; -} - -/** - * From lodash. - * Copyright JS Foundation and other contributors - */ -export function trim(str: string): string { - return str.replace(/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g, ''); -} - -/** - * Used to match `RegExp` - * [syntax characters](http://ecma-international.org/ecma-262/7.0/#sec-patterns). - */ -const reRegExpChar = /[\\^$.*+?()[\]{}|]/g, - reHasRegExpChar = RegExp(reRegExpChar.source); - -/** - * Escapes the `RegExp` special characters "^", "$", "\", ".", "*", "+", - * "?", "(", ")", "[", "]", "{", "}", and "|" in `string`. - * - * From lodash. - * Copyright JS Foundation and other contributors - */ -export function escapeRegExp(string: string) { - return (string && reHasRegExpChar.test(string)) - ? string.replace(reRegExpChar, '\\$&') - : string; -} - -export function pushIfNotNull(list: T[], value: T) { - if (value !== null) list.push(value) -} - -export function flatMap(arr: T[], f: (item: T) => T[]): T[] { - const result: T[] = []; - arr.forEach(item => { - f(item).forEach(x => { - result.push(x) - }) - }); - return result; -} - -export function println(message ?: string) { - console.log(message) -} \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/static/context.html b/libraries/tools/kotlin-test-js-runner/static/context.html deleted file mode 100644 index 8e6aa22e278d8..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/static/context.html +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - - - - - - - - %SCRIPTS% - - diff --git a/libraries/tools/kotlin-test-js-runner/static/debug.html b/libraries/tools/kotlin-test-js-runner/static/debug.html deleted file mode 100644 index dc29b5cf03b9e..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/static/debug.html +++ /dev/null @@ -1,32 +0,0 @@ - - - - - %X_UA_COMPATIBLE% - Karma DEBUG RUNNER - - - - - - - - - - - %SCRIPTS% - - diff --git a/libraries/tools/kotlin-test-js-runner/tc-log-appender.js b/libraries/tools/kotlin-test-js-runner/tc-log-appender.js deleted file mode 100644 index 57cf2c9bea91b..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/tc-log-appender.js +++ /dev/null @@ -1,35 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -'use strict'; - -import {formatMessage, TYPED_MESSAGE} from "./src/teamcity-format" - -const consoleLog = console.log.bind(console); - -function consoleAppender(layout, timezoneOffset) { - return (loggingEvent) => { - consoleLog( - formatMessage( - TYPED_MESSAGE, - layout( - loggingEvent, - timezoneOffset - ), - loggingEvent.level.toString() - ) - ); - }; -} - -function configure(config, layouts) { - let layout = layouts.colouredLayout; - if (config.layout) { - layout = layouts.layout(config.layout.type, config.layout); - } - return consoleAppender(layout, config.timezoneOffset); -} - -module.exports.configure = configure; \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/tc-log-error-webpack.js b/libraries/tools/kotlin-test-js-runner/tc-log-error-webpack.js deleted file mode 100644 index 275b3ed7a7316..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/tc-log-error-webpack.js +++ /dev/null @@ -1,61 +0,0 @@ -/* - * Copyright 2010-2020 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -'use strict'; - -import {formatMessage, TYPED_MESSAGE} from "./src/teamcity-format"; - -const ModuleNotFoundError = require("webpack/lib/ModuleNotFoundError") - -class TeamCityErrorPlugin { - warningsFilter(value) { - if (!Array.isArray(value)) { - value = value ? [value] : []; - } - return value.map(filter => { - if (typeof filter === "string") { - return (warning, warningString) => warningString.includes(filter); - } - if (filter instanceof RegExp) { - return (warning, warningString) => filter.test(warningString); - } - if (typeof filter === "function") { - return filter; - } - throw new Error( - `Can only filter warnings with Strings or RegExps. (Given: ${filter})` - ); - }); - } - - apply(compiler) { - compiler.hooks.done.tap('TeamCityErrorPlugin', (stats) => { - - const compilation = stats.compilation; - const warningsFilters = this.warningsFilter(compilation.options.ignoreWarnings); - - compilation.errors.forEach(error => { - const type = 'error'; - if (error instanceof ModuleNotFoundError) { - console[type]( - formatMessage(TYPED_MESSAGE, error.message, type) - ); - } else { - console[type](formatMessage(TYPED_MESSAGE, error.message, type)); - } - }); - - compilation.warnings - .filter(warning => warningsFilters.every(warningFilter => !warningFilter(warning, compilation))) - .forEach(warning => { - const type = 'warn'; - - console[type](formatMessage(TYPED_MESSAGE, warning.message, type)); - }); - }); - } -} - -module.exports = TeamCityErrorPlugin; \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/test/karma-webpack-output.test.mjs b/libraries/tools/kotlin-test-js-runner/test/karma-webpack-output.test.mjs deleted file mode 100644 index ae03fa7357811..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/test/karma-webpack-output.test.mjs +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright 2010-2024 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -import { KarmaWebpackOutputFramework } from "../src/KarmaWebpackOutputFramework.mjs"; -import assert from "node:assert"; - -describe('WebpackOutputFramework', () => { - it('Defaults', () => { - const controller = {outputPath: 'foo/'}; - const config = {files: [], __karmaWebpackController: controller}; - - KarmaWebpackOutputFramework(config); - - assert.equal(config.files.length, 1, "Expected file length should be 1"); - assert.deepEqual( - config.files, - [ - { - pattern: `${controller.outputPath}/**/*`, - included: false, - served: true, - watched: false - } - ] - ); - }); -}); \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/tsconfig.json b/libraries/tools/kotlin-test-js-runner/tsconfig.json deleted file mode 100644 index d704981740f99..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/tsconfig.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "compilerOptions": { - "target": "es5", - "module": "ESNext", - "strict": true, - "sourceMap": true, - "allowSyntheticDefaultImports": true - }, - "exclude": [ - "**/*Debug.ts" - ] -} \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/webpack-5-debug.js b/libraries/tools/kotlin-test-js-runner/webpack-5-debug.js deleted file mode 100644 index a2a6c5602c268..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/webpack-5-debug.js +++ /dev/null @@ -1,26 +0,0 @@ -"use strict"; - -const {SourceMapSource} = require("webpack-sources"); -const {absolutify} = require("webpack/lib/util/identifier"); - -// https://github.com/webpack/webpack/issues/12951 -class PatchSourceMapSourcePlugin { - apply(compiler) { - compiler.hooks.beforeRun.tap("PatchSourceMapSourcePlugin", compiler => { - const original = SourceMapSource.prototype._ensureSourceMapObject; - - SourceMapSource.prototype._ensureSourceMapObject = function () { - original.call(this) - this._sourceMapAsObject.sources = this._sourceMapAsObject - .sources - .map(source => { - if (!source.startsWith("webpack://")) return source - - return absolutify(compiler.options.context, source.slice(10)) - }) - } - }); - } -} - -module.exports = PatchSourceMapSourcePlugin; \ No newline at end of file diff --git a/libraries/tools/kotlin-test-js-runner/window.d.ts b/libraries/tools/kotlin-test-js-runner/window.d.ts deleted file mode 100644 index 29f8cca6ee9e6..0000000000000 --- a/libraries/tools/kotlin-test-js-runner/window.d.ts +++ /dev/null @@ -1,24 +0,0 @@ -/* - * Copyright 2010-2019 JetBrains s.r.o. and Kotlin Programming Language contributors. - * Use of this source code is governed by the Apache 2.0 license that can be found in the license/LICENSE.txt file. - */ - -import {KotlinTestRunner} from "./src/KotlinTestRunner"; - -declare global { - interface Window { - __karma__: { - config: { - args: string[] - }, - result: (result: BrowserResult) => void - } - - kotlinTest: { - adapterTransformer: (current: KotlinTestRunner) => KotlinTestRunner - } - } -} - -interface BrowserResult { -} \ No newline at end of file diff --git a/license/README.md b/license/README.md index e71e06fbc6356..f30c01e42feb8 100644 --- a/license/README.md +++ b/license/README.md @@ -257,25 +257,6 @@ any distributions of the tools or libraries: - Path: libraries/tools/kotlin-gradle-plugin/src/common/kotlin/org/jetbrains/kotlin/gradle/targets/js/nodejs/Platform.kt - License: Apache License 2.0 ([license/third_party/gradle-node-plugin_LICENSE.txt](third_party/gradle-node-plugin_LICENSE.txt)) - Origin: Copyright (c) 2013 node-gradle/gradle-node-plugin - - - Path: libraries/tools/kotlin-test-js-runner/karma-kotlin-reporter.js - - License: MIT ([license/third_party/karma_LICENSE.txt](third_party/karma_LICENSE.txt) - and [license/third_party/karma-teamcity-reporter_LICENSE.txt](third_party/karma-teamcity-reporter_LICENSE.txt)) - - Origin: Copyright (C) 2011-2019 Google, Inc. and Copyright (C) 2011-2013 Vojta Jína and contributors. - - - Path: libraries/tools/kotlin-test-js-runner/mocha-kotlin-reporter.js - - License: MIT ([license/third_party/mocha-teamcity-reporter_LICENSE.txt](third_party/mocha-teamcity-reporter_LICENSE.txt)) - - Origin: Copyright (c) 2016 Jamie Sherriff - - - Path: libraries/tools/kotlin-test-js-runner/src/utils.ts - - License: MIT ([license/third_party/teamcity-service-messages_LICENSE.txt](third_party/teamcity-service-messages_LICENSE.txt) - and [license/third_party/lodash_LICENSE.txt](third_party/lodash_LICENSE.txt)) - - Origin: Copyright (c) 2013 Aaron Forsander and Copyright JS Foundation and other contributors - - - Path: libraries/tools/kotlin-test-js-runner/src/teamcity-format.js - - License: MIT ([license/third_party/mocha-teamcity-reporter_LICENSE.txt](third_party/mocha-teamcity-reporter_LICENSE.txt) - and [license/third_party/teamcity-service-messages_LICENSE.txt](third_party/teamcity-service-messages_LICENSE.txt)) - - Origin: Copyright (c) 2016 Jamie Sherriff and Copyright (c) 2013 Aaron Forsander ## Example Code diff --git a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-test-js-runner/kotlin-test-js-runner.pom b/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-test-js-runner/kotlin-test-js-runner.pom deleted file mode 100644 index 663c85d8e2e88..0000000000000 --- a/repo/artifacts-tests/src/test/resources/org/jetbrains/kotlin/kotlin-test-js-runner/kotlin-test-js-runner.pom +++ /dev/null @@ -1,29 +0,0 @@ - - - 4.0.0 - org.jetbrains.kotlin - kotlin-test-js-runner - ArtifactsTest.version - Kotlin Test Js Runner - Simple Kotlin/JS tests runner with TeamCity reporter - https://kotlinlang.org/ - - - The Apache License, Version 2.0 - http://www.apache.org/licenses/LICENSE-2.0.txt - - - - - Kotlin Team - JetBrains - https://www.jetbrains.com - - - - scm:git:https://github.com/JetBrains/kotlin.git - scm:git:https://github.com/JetBrains/kotlin.git - https://github.com/JetBrains/kotlin - - diff --git a/repo/codebase-tests/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt b/repo/codebase-tests/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt index bca3e2a0d27c8..6871d219c9632 100644 --- a/repo/codebase-tests/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt +++ b/repo/codebase-tests/tests/org/jetbrains/kotlin/code/CodeConformanceTest.kt @@ -57,9 +57,6 @@ class CodeConformanceTest : TestCase() { "libraries/tools/kotlin-js-tests/src/test/web/qunit.js", "libraries/tools/kotlin-maven-plugin/target", "libraries/tools/kotlin-source-map-loader/.gradle", - "libraries/tools/kotlin-test-js-runner/.gradle", - "libraries/tools/kotlin-test-js-runner/lib", - "libraries/tools/kotlin-test-js-runner/node_modules", "libraries/tools/kotlin-test-nodejs-runner/.gradle", "libraries/tools/kotlin-test-nodejs-runner/node_modules", "libraries/tools/kotlinp/src", @@ -128,9 +125,6 @@ class CodeConformanceTest : TestCase() { "libraries/tools/kotlin-lombok/build", "libraries/tools/kotlin-maven-plugin-test/target", "libraries/tools/kotlin-noarg/build", - "libraries/tools/kotlin-test-js-runner/.gradle", - "libraries/tools/kotlin-test-js-runner/lib", - "libraries/tools/kotlin-test-js-runner/node_modules", "libraries/tools/kotlin-test-nodejs-runner/.gradle", "libraries/tools/kotlin-test-nodejs-runner/node_modules", "libraries/tools/kotlin-sam-with-receiver/build", diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/jps.gradle.kts b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/jps.gradle.kts index 13e587df5f3f9..34d59457240b3 100644 --- a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/jps.gradle.kts +++ b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/jps.gradle.kts @@ -61,7 +61,6 @@ fun updateCompilerXml() { "libraries/tools/kotlin-serialization-unshaded", "libraries/tools/kotlin-stdlib-docs", "libraries/tools/kotlin-stdlib-gen", - "libraries/tools/kotlin-test-js-runner", "libraries/tools/kotlin-tooling-metadata", "libraries/tools/maven-archetypes", "libraries/tools/mutability-annotations-compat", diff --git a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt index 4e5304bdbd66d..f651bb4ba50c7 100644 --- a/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt +++ b/repo/gradle-build-conventions/buildsrc-compat/src/main/kotlin/tasks.kt @@ -82,7 +82,6 @@ val kotlinGradlePluginAndItsRequired = arrayOf( ":kotlin-scripting-jvm", ":kotlin-scripting-compiler-embeddable", ":kotlin-scripting-compiler-impl-embeddable", - ":kotlin-test-js-runner", ":native:kotlin-klib-commonizer-embeddable", ":native:kotlin-klib-commonizer-api", ":native:swift:swift-export-embeddable", diff --git a/scripts/upgrade-lock-files.sh b/scripts/upgrade-lock-files.sh index 0ac639541c86e..c3f114974f47f 100755 --- a/scripts/upgrade-lock-files.sh +++ b/scripts/upgrade-lock-files.sh @@ -32,13 +32,4 @@ cd ./libraries/kotlin.test/js/it npm upgrade cd $root_dir -echo "End upgrade 'libraries/kotlin.test/js/it/package-lock.json'" - -# Upgrade libraries/tools/kotlin-test-js-runner/package-lock.json - -echo "Start upgrade 'libraries/tools/kotlin-test-js-runner/package-lock.json'" -cd ./libraries/tools/kotlin-test-js-runner -npm upgrade - -cd $root_dir -echo "End upgrade 'libraries/tools/kotlin-test-js-runner/package-lock.json'" \ No newline at end of file +echo "End upgrade 'libraries/kotlin.test/js/it/package-lock.json'" \ No newline at end of file diff --git a/settings.gradle b/settings.gradle index 14bda98202771..4901c02281174 100644 --- a/settings.gradle +++ b/settings.gradle @@ -205,7 +205,6 @@ include ":kotlin-imports-dumper-compiler-plugin", ":plugins:fir-plugin-prototype", ":plugins:fir-plugin-prototype:plugin-annotations", ":plugins:fir-plugin-prototype:fir-plugin-ic-test", - ":kotlin-test-js-runner", ":kotlin-metadata", ":kotlin-metadata-jvm", ":kotlinx-metadata-klib", @@ -707,7 +706,6 @@ include ":compiler:android-tests" rootProject.name = "kotlin" project(':kotlin-script-runtime').projectDir = "$rootDir/libraries/tools/script-runtime" as File -project(':kotlin-test-js-runner').projectDir = "$rootDir/libraries/tools/kotlin-test-js-runner" as File project(':kotlin-reflect').projectDir = "$rootDir/libraries/reflect" as File project(':kotlin-reflect-api').projectDir = "$rootDir/libraries/reflect/api" as File project(':kotlin-metadata').projectDir = "$rootDir/libraries/kotlinx-metadata" as File