diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 69f0e0041d80..98dfa51139f1 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -260,6 +260,8 @@ Tasks/GradleV2/ @microsoft/azure-pipelines-tasks-and-agent @tarunramsinghani Tasks/GradleV3/ @microsoft/azure-pipelines-tasks-and-agent @tarunramsinghani +Tasks/GradleV4/ @microsoft/azure-pipelines-tasks-and-agent @tarunramsinghani + Tasks/GruntV0/ @microsoft/azure-pipelines-tasks-and-agent @tarunramsinghani Tasks/GulpV0/ @microsoft/azure-pipelines-tasks-and-agent @tarunramsinghani diff --git a/Tasks/GradleV4/.npmrc b/Tasks/GradleV4/.npmrc new file mode 100644 index 000000000000..969ccea07661 --- /dev/null +++ b/Tasks/GradleV4/.npmrc @@ -0,0 +1,3 @@ +registry=https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ + +always-auth=true \ No newline at end of file diff --git a/Tasks/GradleV4/Modules/environment.ts b/Tasks/GradleV4/Modules/environment.ts new file mode 100644 index 000000000000..8124d08ccff2 --- /dev/null +++ b/Tasks/GradleV4/Modules/environment.ts @@ -0,0 +1,96 @@ +import * as tl from 'azure-pipelines-task-lib/task'; +import * as javaCommon from 'azure-pipelines-tasks-java-common/java-common'; +import { IExecOptions, ToolRunner } from 'azure-pipelines-task-lib/toolrunner'; + +// Setting the access token env var to both VSTS and AZURE_ARTIFACTS for +// backwards compatibility with repos that already use the older env var. +const accessTokenEnvSettingLegacy: string = 'VSTS_ENV_ACCESS_TOKEN'; +const accessTokenEnvSetting: string = 'AZURE_ARTIFACTS_ENV_ACCESS_TOKEN'; + +/** + * Extract system access token from endpoint + * @returns {string} access token to access account feeds or empty string + */ +function getSystemAccessToken(): string { + tl.debug('Getting credentials for account feeds'); + + const authorizationData: tl.EndpointAuthorization = tl.getEndpointAuthorization('SYSTEMVSSCONNECTION', false); + + if (authorizationData && authorizationData.scheme === 'OAuth') { + tl.debug('Got auth token'); + return authorizationData.parameters['AccessToken']; + } + + tl.warning(tl.loc('FeedTokenUnavailable')); + + return ''; +} + +/** + * Update JAVA_HOME if user selected specific JDK version or set path manually + * @param {string} javaHomeSelection - value of the `Set JAVA_HOME by` task input + */ +export function setJavaHome(javaHomeSelection: string): void { + let specifiedJavaHome: string; + let javaTelemetryData: any = {}; + + if (javaHomeSelection === 'JDKVersion') { + tl.debug('Using JDK version to find and set JAVA_HOME'); + + const jdkVersion: string = tl.getInput('jdkVersion'); + const jdkArchitecture: string = tl.getInput('jdkArchitecture'); + + javaTelemetryData = { 'jdkVersion': jdkVersion }; + + if (jdkVersion !== 'default') { + specifiedJavaHome = javaCommon.findJavaHome(jdkVersion, jdkArchitecture); + } + } else { + tl.debug('Using path from user input to set JAVA_HOME'); + + const jdkUserInputPath: string = tl.getPathInput('jdkUserInputPath', true, true); + specifiedJavaHome = jdkUserInputPath; + + javaTelemetryData = { 'jdkVersion': 'custom' }; + } + + javaCommon.publishJavaTelemetry('Gradle', javaTelemetryData); + + if (specifiedJavaHome) { + tl.debug(`Set JAVA_HOME to ${specifiedJavaHome}`); + process.env['JAVA_HOME'] = specifiedJavaHome; + } +} + +/** + * Get execution options for Gradle. + * + * This function does the following things: + * - Get a snapshot of the process environment variables + * - Update the snapshot to include system access token + * @returns {IExecOptions} object with execution options for Gradle + */ +export function getExecOptions(): IExecOptions { + const env: NodeJS.ProcessEnv = process.env; + env[accessTokenEnvSetting] = env[accessTokenEnvSettingLegacy] = getSystemAccessToken(); + return { + env: env + }; +} + +/** + * Configure the JVM associated with this run. + * @param {string} gradleOptions - Gradle options provided by the user + */ +export function setGradleOpts(gradleOptions: string): void { + if (gradleOptions) { + process.env['GRADLE_OPTS'] = gradleOptions; + tl.debug(`GRADLE_OPTS is now set to ${gradleOptions}`); + } +} + +export function extractGradleVersion(str: string): string { + const regex = /^Gradle (?\d+\.\d+(?:\.\d+)?.*$)/m; + const match = str.match(regex); + return match?.groups?.version || 'unknown'; +} diff --git a/Tasks/GradleV4/Modules/project-configuration.ts b/Tasks/GradleV4/Modules/project-configuration.ts new file mode 100644 index 000000000000..c3fd5652eb6e --- /dev/null +++ b/Tasks/GradleV4/Modules/project-configuration.ts @@ -0,0 +1,36 @@ +import * as fs from 'fs'; +import * as os from 'os'; +import * as tl from 'azure-pipelines-task-lib/task'; + + +/** + * Configure wrapper script: + * - For Windows - set `*.bat` extension + * - For Linux/macOS - set script as executable + * @param {string} wrapperScript - Relative path from the repository root to the Gradle Wrapper script. + * @returns {string} path to the wrapper script + */ +export function configureWrapperScript(wrapperScript: string): string { + let script: string = wrapperScript; + const isWindows: RegExpMatchArray = os.type().match(/^Win/); + + if (isWindows) { + // append .bat extension name on Windows platform + if (!script.endsWith('bat')) { + tl.debug('Append .bat extension name to gradlew script.'); + script += '.bat'; + } + } + + if (fs.existsSync(script)) { + try { + // Make sure the wrapper script is executable + fs.accessSync(script, fs.constants.X_OK) + } catch (err) { + // If not, show warning and chmodding the gradlew file to make it executable + tl.warning(tl.loc('chmodGradlew')); + fs.chmodSync(script, '755'); + } + } + return script; +} diff --git a/Tasks/GradleV4/Modules/publish-test-results.ts b/Tasks/GradleV4/Modules/publish-test-results.ts new file mode 100644 index 000000000000..1ef1788b6849 --- /dev/null +++ b/Tasks/GradleV4/Modules/publish-test-results.ts @@ -0,0 +1,46 @@ +import * as tl from 'azure-pipelines-task-lib/task'; + +const TESTRUN_SYSTEM = 'VSTS - gradle'; + + +/** + * Publish unit tests results to Azure DevOps + * @param {boolean} publishJUnitResults - if set to `true`, the result of the unit tests will be published otherwise publishing will be skipped + * @param {string} testResultsFiles - pattern for test results files + */ +export function publishTestResults(publishJUnitResults: boolean, testResultsFiles: string): number { + if (publishJUnitResults) { + let matchingTestResultsFiles: string[] = []; + + // check for pattern in testResultsFiles + if (testResultsFiles.indexOf('*') >= 0 || testResultsFiles.indexOf('?') >= 0) { + tl.debug('Pattern found in testResultsFiles parameter'); + + const buildFolder: string = tl.getVariable('System.DefaultWorkingDirectory'); + + // The find options are as default, except the `skipMissingFiles` option is set to `true` + // so there will be a warning instead of an error if an item will not be found + const findOptions: tl.FindOptions = { + allowBrokenSymbolicLinks: false, + followSpecifiedSymbolicLink: true, + followSymbolicLinks: true, + skipMissingFiles: true + }; + + matchingTestResultsFiles = tl.findMatch(buildFolder, testResultsFiles, findOptions, { matchBase: true }); + } else { + tl.debug('No pattern found in testResultsFiles parameter'); + matchingTestResultsFiles = [testResultsFiles]; + } + + if (!matchingTestResultsFiles || matchingTestResultsFiles.length === 0) { + console.log(tl.loc('NoTestResults', testResultsFiles)); + return 0; + } + + const tp: tl.TestPublisher = new tl.TestPublisher('JUnit'); + const testRunTitle = tl.getInput('testRunTitle'); + + tp.publish(matchingTestResultsFiles, 'true', '', '', testRunTitle, 'true', TESTRUN_SYSTEM); + } +} diff --git a/Tasks/GradleV4/Modules/utils.ts b/Tasks/GradleV4/Modules/utils.ts new file mode 100644 index 000000000000..ee8d6d831182 --- /dev/null +++ b/Tasks/GradleV4/Modules/utils.ts @@ -0,0 +1,32 @@ +import { ITaskResult, ICodeAnalysisResult } from '../interfaces'; +import { TaskResult } from 'azure-pipelines-task-lib'; + +/** + * Resolve task status based on code analysis run results + * @param {ICodeAnalysisResult} codeAnalysisResult - Code analysis run data + * @returns {ITaskResult} task status and message + */ +export function resolveTaskResult(codeAnalysisResult: ICodeAnalysisResult): ITaskResult { + let status: TaskResult; + let message: string = ''; + + if (codeAnalysisResult.gradleResult === 0) { + status = TaskResult.Succeeded; + message = 'Build succeeded.'; + } else if (codeAnalysisResult.gradleResult === -1) { + status = TaskResult.Failed; + + if (codeAnalysisResult.statusFailed) { + message = `Code analysis failed. Gradle exit code: ${codeAnalysisResult.gradleResult}. Error: ${codeAnalysisResult.analysisError}`; + } else { + message = `Build failed. Gradle exit code: ${codeAnalysisResult.gradleResult}`; + } + } + + const taskResult: ITaskResult = { + status: status, + message: message + }; + + return taskResult; +} diff --git a/Tasks/GradleV4/README.md b/Tasks/GradleV4/README.md new file mode 100644 index 000000000000..fd25c4cfcf4b --- /dev/null +++ b/Tasks/GradleV4/README.md @@ -0,0 +1,71 @@ +# Build your code using Gradle in Azure Pipelines + +### Parameters for Gradle build task are explained below + +- **Gradle Wrapper :** This is a Required field. The location in the repository of the gradlew wrapper used for the build. Note that on Windows build agents (including the hosted pool), you must use the `gradlew.bat` wrapper. Xplat build agents use the `gradlew` shell script. To Know more [click here](https://docs.gradle.org/current/userguide/gradle_wrapper.html) + +- **Options :** Specify any command line options you want to pass to the Gradle wrapper. To know more [click here](https://docs.gradle.org/current/userguide/gradle_command_line.html) + +- **Goal(s) :** The task(s) for Gradle to execute. A list of tasks can be taken from `gradlew tasks` issued from a command prompt. To know more [click here](https://docs.gradle.org/current/userguide/tutorial_using_tasks.html) + +#### JUnit Test Results +Use the next three options to manage your JUnit test results in Azure Pipelines + +- **Publish to Azure Pipelines :** Select this option to publish JUnit Test results produced by the Gradle build to Azure Pipelines/TFS. Each test result file matching `Test Results Files` will be published as a test run in Azure Pipelines. + +- **Test Results Files :** This option will appear if you select the above option. Here, provide Test results files path. Wildcards can be used. For example, `**/TEST-*.xml` for all xml files whose name starts with `TEST-."` + +- **Test Run Title :** This option will appear if you select the `Publish to Azure Pipelines/TFS` option. Here provide a name for the Test Run + +#### Advanced +Use the next options to manage your `JAVA_HOME` attribute by JDK Version and Path + +- **Working Directory :** Directory on the build agent where the Gradle wrapper will be invoked from. Defaults to the repository root. + +- **Set JAVA_HOME by :** Select to set `JAVA_HOME` either by providing a path or let Azure Pipelines set the `JAVA_HOME` based on JDK version choosen. By default it is set to `JDK Version` + +- **JDK Version :** Here provide the PATH to `JAVA_HOME` if you want to set it by path or select the appropriate JDK version. + +- **JDK Architecture :** Select the approriate JDK Architecture. By default it is set to `x86` + +#### Code Analysis + +- **Run SonarQube Analysis :** You can choose to run SonarQube analysis after executing the current goals. 'install' or 'package' goals should be executed first. To know more about this option [click here](https://devblogs.microsoft.com/devops/the-gradle-build-task-now-supports-sonarqube-analysis/) + +- **Run Checkstyle :** You can choose to run the Checkstyle static code analysis tool, which checks the compliance of your source code with coding rules. You will receive a code analysis report with the number of violations detected, as well as the original report files if there were any violations. + +- **Run PMD :** You can choose to run the PMD static code analysis tool, which examines your source code for possible bugs. You will receive a code analysis report with the number of violations detected, as well as the original report files if there were any violations. + +- **Run FindBugs :** You can choose to run the FindBugs static code analysis tool, which examines the bytecode of your program for possible bugs. You will receive a code analysis report with the number of violations detected, as well as the original report files if there were any violations. + +### Q&A + +#### How do I generate a wrapper from my Gradle project? + +The Gradle wrapper allows the build agent to download and configure the exact Gradle environment that is checked into the repository without having any software configuration on the build agent itself other than the JVM. + +- **1.** Create the Gradle wrapper by issuing the following command from the root project directory where your build.gradle resides: +`jamal@fabrikam> gradle wrapper` + + +- **2.** Upload your Gradle wrapper to your remote repository. + +There is a binary artifact that is generated by the gradle wrapper (located at `gradle/wrapper/gradle-wrapper.jar`). This binary file is small and doesn't require updating. If you need to change the Gradle configuration run on the build agent, you update the `gradle-wrapper.properties`. + +The repository should look something like this: + +```ssh +|-- gradle/ + `-- wrapper/ + `-- gradle-wrapper.jar + `-- gradle-wrapper.properties +|-- src/ +|-- .gitignore +|-- build.gradle +|-- gradlew +|-- gradlew.bat +``` + + + + diff --git a/Tasks/GradleV4/Strings/resources.resjson/de-DE/resources.resjson b/Tasks/GradleV4/Strings/resources.resjson/de-DE/resources.resjson new file mode 100644 index 000000000000..d0dfe596b230 --- /dev/null +++ b/Tasks/GradleV4/Strings/resources.resjson/de-DE/resources.resjson @@ -0,0 +1,85 @@ +{ + "loc.friendlyName": "Gradle", + "loc.helpMarkDown": "[Weitere Informationen zu dieser Aufgabe](https://go.microsoft.com/fwlink/?LinkID=613720) oder [Gradle-Dokumentation anzeigen](https://docs.gradle.org/current/userguide/userguide.html)", + "loc.description": "Mithilfe eines Gradle-Wrapperskripts erstellen", + "loc.instanceNameFormat": "gradlew $(tasks)", + "loc.releaseNotes": "Die Konfiguration der SonarQube-Analyse wurde in die Erweiterungen [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) oder [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) in der Aufgabe „Analysekonfiguration vorbereiten“ verschoben.", + "loc.group.displayName.junitTestResults": "JUnit-Testergebnisse", + "loc.group.displayName.advanced": "Erweitert", + "loc.group.displayName.CodeAnalysis": "Code Analysis", + "loc.input.label.wrapperScript": "Gradle-Wrapper", + "loc.input.help.wrapperScript": "Der relative Pfad vom Repositorystamm zum Gradle-Wrapperskript.", + "loc.input.label.cwd": "Arbeitsverzeichnis", + "loc.input.help.cwd": "Das Arbeitsverzeichnis, in dem der Gradle-Build ausgeführt werden soll. Wenn kein Angabe erfolgt, wird das Repositorystammverzeichnis als Standardwert verwendet.", + "loc.input.label.options": "Optionen", + "loc.input.label.tasks": "Aufgaben", + "loc.input.label.publishJUnitResults": "In Azure Pipelines veröffentlichen", + "loc.input.help.publishJUnitResults": "Wählen Sie diese Option aus, um vom Gradle-Build generierte JUnit-Testergebnisse in Azure Pipelines zu veröffentlichen. Jede Testergebnisdatei, die mit „Testergebnisdateien“ übereinstimmt, wird als Testlauf in Azure Pipelines veröffentlicht.", + "loc.input.label.testResultsFiles": "Testergebnisdateien", + "loc.input.help.testResultsFiles": "Pfad der Testergebnisdateien. Platzhalter können verwendet werden ([weitere Informationen](https://go.microsoft.com/fwlink/?linkid=856077)). Beispiel: „**/TEST-*.xml“ für alle XML-Dateien, deren Name mit „TEST-“ beginnt.", + "loc.input.label.testRunTitle": "Testlauftitel", + "loc.input.help.testRunTitle": "Geben Sie einen Namen für den Testlauf an.", + "loc.input.label.javaHomeSelection": "JAVA_HOME festlegen durch", + "loc.input.help.javaHomeSelection": "Legt JAVA_HOME durch Auswählen einer JDK-Version fest, die während der Erstellung von Builds oder durch manuelles Eingeben eines JDK-Pfads ermittelt wird.", + "loc.input.label.jdkVersion": "JDK-Version", + "loc.input.help.jdkVersion": "Versucht, den Pfad zur ausgewählten JDK-Version zu ermitteln und JAVA_HOME entsprechend festzulegen.", + "loc.input.label.jdkUserInputPath": "JDK-Pfad", + "loc.input.help.jdkUserInputPath": "Legt JAVA_HOME auf den angegebenen Pfad fest.", + "loc.input.label.jdkArchitecture": "JDK-Architektur", + "loc.input.help.jdkArchitecture": "Geben Sie optional die JDK-Architektur an (x86, x64).", + "loc.input.label.gradleOpts": "GRADLE_OPTS festlegen", + "loc.input.help.gradleOpts": "Legt die Umgebungsvariable GRADLE_OPTS fest, die zum Senden von Befehlszeilenargumenten zum Starten von JVM verwendet wird. Das Kennzeichen „xmx“ gibt den maximalen Arbeitsspeicher an, der für JVM verfügbar ist.", + "loc.input.label.sqAnalysisEnabled": "SonarQube- oder SonarCloud-Analyse ausführen", + "loc.input.help.sqAnalysisEnabled": "Diese Option wurde im Vergleich zu Version 1 der Aufgabe **Gradle** dahingehend geändert, dass jetzt die Marketplace-Erweiterungen [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) und [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) verwendet werden. Aktivieren Sie diese Option, um eine [SonarQube- oder SonarCloud-Analyse](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html) durchzuführen, nachdem Sie die Aufgaben im Feld **Aufgaben** ausgeführt haben. Sie müssen der Buildpipeline vor dieser Gradle-Aufgabe außerdem eine Aufgabe **Analysekonfiguration vorbereiten** aus einer der Erweiterungen hinzufügen.", + "loc.input.label.sqGradlePluginVersionChoice": "SonarQube Scanner für Gradle-Version", + "loc.input.help.sqGradlePluginVersionChoice": "Die Version des SonarQube-Gradle-Plug-Ins, die verwendet werden soll. Sie können die Version in Ihrer Gradle-Konfigurationsdatei deklarieren oder hier eine Version angeben.", + "loc.input.label.sqGradlePluginVersion": "Version des SonarQube Scanner für Gradle-Plug-Ins", + "loc.input.help.sqGradlePluginVersion": "Informationen zu allen verfügbaren Versionen finden Sie unter https://plugins.gradle.org/plugin/org.sonarqube.", + "loc.input.label.checkstyleAnalysisEnabled": "Checkstyle ausführen", + "loc.input.help.checkstyleAnalysisEnabled": "Führen Sie das Checkstyle-Tool mit den Sun-Standardüberprüfungen aus. Die Ergebnisse werden als Buildartefakte hochgeladen.", + "loc.input.label.findbugsAnalysisEnabled": "FindBugs ausführen", + "loc.input.help.findbugsAnalysisEnabled": "Verwenden Sie das statische Analysetool FindBugs, um nach Fehlern im Code zu suchen. Ergebnisse werden als Buildartefakt hochgeladen. In Gradle 6.0 wurde dieses Plug-In entfernt. Verwenden Sie stattdessen das Spotbugs-Plug-In. [Weitere Informationen] (https://docs.gradle.org/current/userguide/upgrading_version_5.html#the_findbugs_plugin_has_been_removed)", + "loc.input.label.pmdAnalysisEnabled": "PMD ausführen", + "loc.input.help.pmdAnalysisEnabled": "Verwenden Sie die statischen PMD-Analysetools von Java zum Suchen nach Fehlern im Code. Die Ergebnisse werden als Buildartefakte hochgeladen.", + "loc.input.label.spotBugsAnalysisEnabled": "SpotBugs ausführen", + "loc.input.help.spotBugsAnalysisEnabled": "Aktivieren Sie diese Option, um spotBugs auszuführen. Dieses Plug-in funktioniert mit Gradle v 5.6 oder höher. [Weitere Informationen] (https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)", + "loc.input.label.spotBugsGradlePluginVersionChoice": "Spotbugs-Plug-in-Version", + "loc.input.help.spotBugsGradlePluginVersionChoice": "Die Version des Spotbugs-Gradle-Plug-Ins, die verwendet werden soll. Sie können die Version in Ihrer Gradle-Konfigurationsdatei deklarieren oder hier eine Version angeben.", + "loc.input.label.spotbugsGradlePluginVersion": "Versionsnummer", + "loc.input.help.spotbugsGradlePluginVersion": "Alle verfügbaren Versionen finden Sie unter https://plugins.gradle.org/plugin/com.github.spotbugs.", + "loc.messages.sqCommon_CreateTaskReport_MissingField": "Fehler beim Erstellen des TaskReport-Objekts. Fehlendes Feld: %s", + "loc.messages.sqCommon_WaitingForAnalysis": "Warten, dass der SonarQube-Server den Build analysiert.", + "loc.messages.sqCommon_NotWaitingForAnalysis": "Der Build ist nicht für das Warten auf die SonarQube-Analyse konfiguriert. Der ausführliche Quality Gate-Status ist nicht verfügbar.", + "loc.messages.sqCommon_QualityGateStatusUnknown": "Der Quality Gate-Status wurde nicht erkannt, oder es wurde ein neuer Status eingeführt.", + "loc.messages.sqCommon_InvalidResponseFromServer": "Der Server hat mit einem ungültigen oder unerwarteten Antwortformat geantwortet.", + "loc.messages.codeAnalysis_ToolIsEnabled": "Die %s-Analyse ist aktiviert.", + "loc.messages.codeAnalysis_ToolFailed": "Fehler bei der %s-Analyse.", + "loc.messages.sqAnalysis_IncrementalMode": "Ein PR-Build wurde erkannt. Die SonarQube-Analyse wird im inkrementellen Modus ausgeführt.", + "loc.messages.sqAnalysis_BuildSummaryTitle": "SonarQube-Analysebericht", + "loc.messages.sqAnalysis_TaskReportInvalid": "Ungültiger oder fehlender Aufgabenbericht. Überprüfen Sie, ob SonarQube erfolgreich abgeschlossen wurde.", + "loc.messages.sqAnalysis_BuildSummary_LinkText": "Ausführlicher SonarQube-Bericht", + "loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate": "Authentifizierung beim SonarQube-Server nicht möglich. Überprüfen Sie die gespeicherten Dienstverbindungsdetails und den Status des Servers.", + "loc.messages.sqAnalysis_AnalysisTimeout": "Die Analyse wurde nicht in der vorgesehenen Zeit von %d Sekunden abgeschlossen.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary": "Pull Request-Build: Eine ausführliche SonarQube-Buildzusammenfassung ist nicht verfügbar.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker": "Pull Request-Build: Der Build wird bei einem Quality Gate-Fehler nicht beeinträchtigt.", + "loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure": "Fehler des diesem Build zugeordneten SonarQube Quality Gates.", + "loc.messages.sqAnalysis_QualityGatePassed": "Das diesem Build zugeordnete SonarQube Quality Gate hat bestanden (Status %s).", + "loc.messages.sqAnalysis_UnknownComparatorString": "Problem bei der SonarQube-Buildzusammenfassung: unbekannter Vergleichsoperator „%s“", + "loc.messages.sqAnalysis_NoUnitsFound": "Die Liste der SonarQube-Maßeinheiten konnte nicht vom Server abgerufen werden.", + "loc.messages.sqAnalysis_NoReportTask": "„report-task.txt“ wurde nicht gefunden. Mögliche Ursache: Die SonarQube-Analyse wurde nicht erfolgreich abgeschlossen.", + "loc.messages.sqAnalysis_MultipleReportTasks": "Es wurden mehrere Dateien „report-task.txt“ gefunden. Die erste wird ausgewählt. Die Buildzusammenfassung und der Build Breaker sind möglicherweise nicht genau. Mögliche Ursache: mehrere SonarQube-Analysen im selben Build, dies wird nicht unterstützt.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s hat %d Verstöße in %d Dateien gefunden.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s hat %d Verstöße in einer Datei gefunden.", + "loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s hat einen Verstoß in einer Datei gefunden.", + "loc.messages.codeAnalysisBuildSummaryLine_NoViolations": "%s hat keine Verstöße gefunden.", + "loc.messages.codeAnalysisBuildSummaryTitle": "Code Analysis-Bericht", + "loc.messages.codeAnalysisArtifactSummaryTitle": "Code Analysis-Ergebnisse", + "loc.messages.codeAnalysisDisabled": "Die Codeanalyse ist außerhalb der Buildumgebung deaktiviert. Es konnte kein Wert gefunden werden für: %s", + "loc.messages.LocateJVMBasedOnVersionAndArch": "JAVA_HOME für Java %s %s finden", + "loc.messages.UnsupportedJdkWarning": "JDK 9 und JDK 10 werden nicht unterstützt. Wechseln Sie in Ihrem Projekt und Ihrer Pipeline zu einer neueren Version. Es wird versucht, die Erstellung mit JDK 11 durchzuführen...", + "loc.messages.FailedToLocateSpecifiedJVM": "Die angegebene JDK-Version wurde nicht gefunden. Stellen Sie sicher, dass die angegebene JDK-Version auf dem Agent installiert und die Umgebungsvariable „%s“ vorhanden und auf den Speicherort eines entsprechenden JDK festgelegt ist. Sie können auch die Aufgabe [Installer für Java-Tools](https://go.microsoft.com/fwlink/?linkid=875287) verwenden, um das gewünschte JDK zu installieren.", + "loc.messages.InvalidBuildFile": "Ungültige oder nicht unterstützte Builddatei", + "loc.messages.FileNotFound": "Datei oder Ordner nicht vorhanden: %s", + "loc.messages.NoTestResults": "Es wurden keine Testergebnisdateien gefunden, die mit %s übereinstimmen. Das Veröffentlichen von JUnit-Testergebnissen wird daher übersprungen.", + "loc.messages.chmodGradlew": "Die Methode \"chmod\" wurde für die gradlew-Datei verwendet, um sie eine ausführbare Datei zu machen." +} \ No newline at end of file diff --git a/Tasks/GradleV4/Strings/resources.resjson/en-US/resources.resjson b/Tasks/GradleV4/Strings/resources.resjson/en-US/resources.resjson new file mode 100644 index 000000000000..d033a6f662a8 --- /dev/null +++ b/Tasks/GradleV4/Strings/resources.resjson/en-US/resources.resjson @@ -0,0 +1,86 @@ +{ + "loc.friendlyName": "Gradle", + "loc.helpMarkDown": "[Learn more about this task](https://go.microsoft.com/fwlink/?LinkID=613720) or [see the Gradle documentation](https://docs.gradle.org/current/userguide/userguide.html)", + "loc.description": "Build using a Gradle wrapper script", + "loc.instanceNameFormat": "gradlew $(tasks)", + "loc.releaseNotes": "The Code Coverage option is deprecated. Refer to the [PublishCodeCoverageResultsV2 Task] (https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/publish-code-coverage-results-v2?view=azure-pipelines) to get code coverage results.", + "loc.group.displayName.junitTestResults": "JUnit Test Results", + "loc.group.displayName.advanced": "Advanced", + "loc.group.displayName.CodeAnalysis": "Code Analysis", + "loc.input.label.wrapperScript": "Gradle wrapper", + "loc.input.help.wrapperScript": "Relative path from the repository root to the Gradle Wrapper script.", + "loc.input.label.cwd": "Working directory", + "loc.input.help.cwd": "Working directory in which to run the Gradle build. If not specified, the repository root directory is used.", + "loc.input.label.options": "Options", + "loc.input.label.tasks": "Tasks", + "loc.input.label.publishJUnitResults": "Publish to Azure Pipelines", + "loc.input.help.publishJUnitResults": "Select this option to publish JUnit test results produced by the Gradle build to Azure Pipelines. Each test results file matching `Test Results Files` will be published as a test run in Azure Pipelines.", + "loc.input.label.testResultsFiles": "Test results files", + "loc.input.help.testResultsFiles": "Test results files path. Wildcards can be used ([more information](https://go.microsoft.com/fwlink/?linkid=856077)). For example, `**/TEST-*.xml` for all XML files whose name starts with TEST-.", + "loc.input.label.testRunTitle": "Test run title", + "loc.input.help.testRunTitle": "Provide a name for the test run.", + "loc.input.label.javaHomeSelection": "Set JAVA_HOME by", + "loc.input.help.javaHomeSelection": "Sets JAVA_HOME either by selecting a JDK version that will be discovered during builds or by manually entering a JDK path.", + "loc.input.label.jdkVersion": "JDK version", + "loc.input.help.jdkVersion": "Will attempt to discover the path to the selected JDK version and set JAVA_HOME accordingly.", + "loc.input.label.jdkUserInputPath": "JDK path", + "loc.input.help.jdkUserInputPath": "Sets JAVA_HOME to the given path.", + "loc.input.label.jdkArchitecture": "JDK architecture", + "loc.input.help.jdkArchitecture": "Optionally supply the architecture (x86, x64) of the JDK.", + "loc.input.label.gradleOpts": "Set GRADLE_OPTS", + "loc.input.help.gradleOpts": "Sets the GRADLE_OPTS environment variable, which is used to send command-line arguments to start the JVM. The xmx flag specifies the maximum memory available to the JVM.", + "loc.input.label.sqAnalysisEnabled": "Run SonarQube or SonarCloud Analysis", + "loc.input.help.sqAnalysisEnabled": "This option has changed from version 1 of the **Gradle** task to use the [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) and [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) marketplace extensions. Enable this option to run [SonarQube or SonarCloud analysis](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html) after executing tasks in the **Tasks** field. You must also add a **Prepare Analysis Configuration** task from one of the extensions to the build pipeline before this Gradle task.", + "loc.input.label.sqGradlePluginVersionChoice": "SonarQube scanner for Gradle version", + "loc.input.help.sqGradlePluginVersionChoice": "The SonarQube Gradle plugin version to use. You can declare it in your Gradle configuration file, or specify a version here.", + "loc.input.label.sqGradlePluginVersion": "SonarQube scanner for Gradle plugin version", + "loc.input.help.sqGradlePluginVersion": "Refer to https://plugins.gradle.org/plugin/org.sonarqube for all available versions.", + "loc.input.label.checkstyleAnalysisEnabled": "Run Checkstyle", + "loc.input.help.checkstyleAnalysisEnabled": "Run the Checkstyle tool with the default Sun checks. Results are uploaded as build artifacts.", + "loc.input.label.findbugsAnalysisEnabled": "Run FindBugs", + "loc.input.help.findbugsAnalysisEnabled": "Use the FindBugs static analysis tool to look for bugs in the code. Results are uploaded as build artifacts. In Gradle 6.0 this plugin was removed. Use spotbugs plugin instead. [More info](https://docs.gradle.org/current/userguide/upgrading_version_5.html#the_findbugs_plugin_has_been_removed)", + "loc.input.label.pmdAnalysisEnabled": "Run PMD", + "loc.input.help.pmdAnalysisEnabled": "Use the PMD Java static analysis tool to look for bugs in the code. Results are uploaded as build artifacts.", + "loc.input.label.spotBugsAnalysisEnabled": "Run SpotBugs", + "loc.input.help.spotBugsAnalysisEnabled": "Enable this option to run spotBugs. This plugin works with Gradle v5.6 or later. [More info](https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)", + "loc.input.label.spotBugsGradlePluginVersionChoice": "Spotbugs plugin version", + "loc.input.help.spotBugsGradlePluginVersionChoice": "The Spotbugs Gradle plugin version to use. You can declare it in your Gradle configuration file, or specify a version here.", + "loc.input.label.spotbugsGradlePluginVersion": "Version number", + "loc.input.help.spotbugsGradlePluginVersion": "Refer to https://plugins.gradle.org/plugin/com.github.spotbugs for all available versions.", + "loc.messages.sqCommon_CreateTaskReport_MissingField": "Failed to create TaskReport object. Missing field: %s", + "loc.messages.sqCommon_WaitingForAnalysis": "Waiting for the SonarQube server to analyse the build.", + "loc.messages.sqCommon_NotWaitingForAnalysis": "Build not configured to wait for the SonarQube analysis. Detailed quality gate status will not be available.", + "loc.messages.sqCommon_QualityGateStatusUnknown": "Could not detect the quality gate status or a new status has been introduced.", + "loc.messages.sqCommon_InvalidResponseFromServer": "Server responded with an invalid or unexpected response format.", + "loc.messages.codeAnalysis_ToolIsEnabled": "%s analysis is enabled.", + "loc.messages.codeAnalysis_ToolFailed": "%s analysis failed.", + "loc.messages.sqAnalysis_IncrementalMode": "Detected a PR build - running the SonarQube analysis in incremental mode", + "loc.messages.sqAnalysis_BuildSummaryTitle": "SonarQube Analysis Report", + "loc.messages.sqAnalysis_TaskReportInvalid": "Invalid or missing task report. Check SonarQube finished successfully.", + "loc.messages.sqAnalysis_BuildSummary_LinkText": "Detailed SonarQube report", + "loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate": "Cannot authenticate to the SonarQube server. Check the saved service connection details and the status of the server.", + "loc.messages.sqAnalysis_AnalysisTimeout": "The analysis did not complete in the allotted time of %d seconds.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary": "Pull request build: detailed SonarQube build summary will not be available.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker": "Pull request build: build will not be broken if quality gate fails.", + "loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure": "The SonarQube quality gate associated with this build has failed.", + "loc.messages.sqAnalysis_QualityGatePassed": "The SonarQube quality gate associated with this build has passed (status %s)", + "loc.messages.sqAnalysis_UnknownComparatorString": "The SonarQube build summary encountered a problem: unknown comparator '%s'", + "loc.messages.sqAnalysis_NoUnitsFound": "The list of SonarQube measurement units could not be retrieved from the server.", + "loc.messages.sqAnalysis_NoReportTask": "Could not find report-task.txt. Possible cause: the SonarQube analysis did not complete successfully.", + "loc.messages.sqAnalysis_MultipleReportTasks": "Multiple report-task.txt files found. Choosing the first one. The build summary and the build breaker may not be accurate. Possible cause: multiple SonarQube analysis during the same build, which is not supported.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s found %d violations in %d files.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s found %d violations in 1 file.", + "loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s found 1 violation in 1 file.", + "loc.messages.codeAnalysisBuildSummaryLine_NoViolations": "%s found no violations.", + "loc.messages.codeAnalysisBuildSummaryTitle": "Code Analysis Report", + "loc.messages.codeAnalysisArtifactSummaryTitle": "Code Analysis Results", + "loc.messages.codeAnalysisDisabled": "Code analysis is disabled outside of the build environment. Could not find a value for: %s", + "loc.messages.LocateJVMBasedOnVersionAndArch": "Locate JAVA_HOME for Java %s %s", + "loc.messages.UnsupportedJdkWarning": "JDK 9 and JDK 10 are out of support. Please switch to a later version in your project and pipeline. Attempting to build with JDK 11...", + "loc.messages.FailedToLocateSpecifiedJVM": "Failed to find the specified JDK version. Please ensure the specified JDK version is installed on the agent and the environment variable '%s' exists and is set to the location of a corresponding JDK or use the [Java Tool Installer](https://go.microsoft.com/fwlink/?linkid=875287) task to install the desired JDK.", + "loc.messages.InvalidBuildFile": "Invalid or unsupported build file", + "loc.messages.FileNotFound": "File or folder doesn't exist: %s", + "loc.messages.NoTestResults": "No test result files matching %s were found, so publishing JUnit test results is being skipped.", + "loc.messages.chmodGradlew": "Used 'chmod' method for gradlew file to make it executable.", + "loc.messages.UnableToExtractGradleVersion": "Unable to extract Gradle version from gradle output." +} \ No newline at end of file diff --git a/Tasks/GradleV4/Strings/resources.resjson/es-ES/resources.resjson b/Tasks/GradleV4/Strings/resources.resjson/es-ES/resources.resjson new file mode 100644 index 000000000000..7401e205540c --- /dev/null +++ b/Tasks/GradleV4/Strings/resources.resjson/es-ES/resources.resjson @@ -0,0 +1,85 @@ +{ + "loc.friendlyName": "Gradle", + "loc.helpMarkDown": "[Obtener más información acerca de esta tarea](https://go.microsoft.com/fwlink/?LinkID=613720) o [consultar la documentación de Gradle](https://docs.gradle.org/current/userguide/userguide.html)", + "loc.description": "Compilar con un script contenedor de Gradle", + "loc.instanceNameFormat": "$(tasks) de Gradlew", + "loc.releaseNotes": "La configuración del análisis de SonarQube se movió a las extensiones de [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) o [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud), en la tarea \"Prepare Analysis Configuration\"", + "loc.group.displayName.junitTestResults": "Resultados de pruebas JUnit", + "loc.group.displayName.advanced": "Avanzado", + "loc.group.displayName.CodeAnalysis": "Análisis de código", + "loc.input.label.wrapperScript": "Contenedor de Gradle", + "loc.input.help.wrapperScript": "Ruta de acceso relativa de la raíz del repositorio al script contenedor de Gradle.", + "loc.input.label.cwd": "Directorio de trabajo", + "loc.input.help.cwd": "Directorio de trabajo donde se va a ejecutar la compilación de Gradle. Si no se especifica, se usa el directorio raíz del repositorio.", + "loc.input.label.options": "Opciones", + "loc.input.label.tasks": "Tareas", + "loc.input.label.publishJUnitResults": "Publicar en Azure Pipelines", + "loc.input.help.publishJUnitResults": "Seleccione esta opción para publicar los resultados de pruebas JUnit generados por la compilación de Gradle en Azure Pipelines. Cada archivo de resultados de pruebas que coincida con \"Archivos de resultados de pruebas\" se publicará como una serie de pruebas en Azure Pipelines.", + "loc.input.label.testResultsFiles": "Archivos de resultados de pruebas", + "loc.input.help.testResultsFiles": "Ruta de acceso de los archivos de resultados de pruebas. Puede usar caracteres comodín ([más información](https://go.microsoft.com/fwlink/?linkid=856077)). Por ejemplo, \"**\\\\*TEST-*.xml\" para todos los archivos XML cuyos nombres empiecen por TEST-.", + "loc.input.label.testRunTitle": "Título de la serie de pruebas", + "loc.input.help.testRunTitle": "Asigne un nombre a la serie de pruebas.", + "loc.input.label.javaHomeSelection": "Establecer JAVA_HOME por", + "loc.input.help.javaHomeSelection": "Establece JAVA_HOME seleccionando una versión de JDK que se detectará durante las compilaciones o especificando manualmente una ruta de acceso del JDK.", + "loc.input.label.jdkVersion": "Versión de JDK", + "loc.input.help.jdkVersion": "Se tratará de hallar la ruta de acceso a la versión de JDK seleccionada y establecer JAVA_HOME según sea el caso.", + "loc.input.label.jdkUserInputPath": "Ruta de acceso de JDK", + "loc.input.help.jdkUserInputPath": "Establece JAVA_HOME en la ruta de acceso especificada.", + "loc.input.label.jdkArchitecture": "Arquitectura JDK", + "loc.input.help.jdkArchitecture": "Indique opcionalmente la arquitectura (x86, x64) del JDK.", + "loc.input.label.gradleOpts": "Establecer GRADLE_OPTS", + "loc.input.help.gradleOpts": "Establece la variable de entorno GRADLE_OPTS, que se utiliza para enviar argumentos de línea de comandos para iniciar JVM. La marca xmx especifica la cantidad de memoria máxima disponible para JVM.", + "loc.input.label.sqAnalysisEnabled": "Ejecutar análisis de SonarQube o SonarCloud", + "loc.input.help.sqAnalysisEnabled": "Esta opción ha cambiado desde la versión 1 de la tarea de **Gradle** para usar las extensiones de Marketplace de [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) y [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud). Habilite esta opción para ejecutar el [análisis de SonarQube o SonarCloud](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html) después de ejecutar las tareas en el campo **Tasks**. También debe agregar una tarea **Prepare Analysis Configuration** de una de las extensiones a la definición de compilación antes de esta tarea de Gradle.", + "loc.input.label.sqGradlePluginVersionChoice": "Escáner de SonarQube para la versión de Gradle", + "loc.input.help.sqGradlePluginVersionChoice": "Versión del complemento SonarQube Gradle que debe usarse. Puede declararla en el archivo de configuración de Gradle o especificar aquí una versión.", + "loc.input.label.sqGradlePluginVersion": "Escáner de SonarQube para la versión del complemento de Gradle", + "loc.input.help.sqGradlePluginVersion": "Consulte https://plugins.gradle.org/plugin/org.sonarqube para ver todas las versiones disponibles.", + "loc.input.label.checkstyleAnalysisEnabled": "Ejecutar Checkstyle", + "loc.input.help.checkstyleAnalysisEnabled": "Ejecute la herramienta Checkstyle con las comprobaciones de Sun predeterminadas. Los resultados se cargan como artefactos de compilación.", + "loc.input.label.findbugsAnalysisEnabled": "Ejecutar FindBugs", + "loc.input.help.findbugsAnalysisEnabled": "Use la herramienta de análisis estático FindBugs para buscar errores en el código. Los resultados se cargan como artefactos de compilación. En Gradle 6,0, se quitó este complemento. Use el complemento spotbugs en su lugar. [Mas información] (https://docs.gradle.org/current/userguide/upgrading_version_5.html # the_findbugs_plugin_has_been_removed)", + "loc.input.label.pmdAnalysisEnabled": "Ejecutar PMD", + "loc.input.help.pmdAnalysisEnabled": "Use la herramienta de análisis estático de Java PMD para buscar errores en el código. Los resultados se cargan como artefactos de compilación.", + "loc.input.label.spotBugsAnalysisEnabled": "Ejecutar SpotBugs", + "loc.input.help.spotBugsAnalysisEnabled": "Habilite esta opción para ejecutar spotBugs. Este complemento funciona con Gradle v5.6 o posterior. [Más información] (https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)", + "loc.input.label.spotBugsGradlePluginVersionChoice": "Versión del complemento de Spotbugs", + "loc.input.help.spotBugsGradlePluginVersionChoice": "Versión del complemento Spotbugs Gradle que debe usarse. Puede declararla en el archivo de configuración de Gradle o especificar aquí una versión.", + "loc.input.label.spotbugsGradlePluginVersion": "Número de versión", + "loc.input.help.spotbugsGradlePluginVersion": "Consulte en https://plugins.gradle.org/plugin/com.github.spotbugs la lista de versiones disponibles.", + "loc.messages.sqCommon_CreateTaskReport_MissingField": "No se pudo crear el objeto TaskReport. Falta el campo: %s.", + "loc.messages.sqCommon_WaitingForAnalysis": "Esperando a que el servidor de SonarQube analice la compilación.", + "loc.messages.sqCommon_NotWaitingForAnalysis": "Compilación no configurada para esperar al análisis de SonarQube. El estado detallado de la puerta de calidad no estará disponible.", + "loc.messages.sqCommon_QualityGateStatusUnknown": "No se ha podido detectar el estado de la puerta de calidad o se ha introducido un nuevo estado.", + "loc.messages.sqCommon_InvalidResponseFromServer": "El servidor respondió con un formato de respuesta no válido o inesperado.", + "loc.messages.codeAnalysis_ToolIsEnabled": "El análisis de %s está habilitado.", + "loc.messages.codeAnalysis_ToolFailed": "Error en el análisis de %s.", + "loc.messages.sqAnalysis_IncrementalMode": "Se ha detectado una compilación PR; se está ejecutando el análisis de SonarQube en modo incremental.", + "loc.messages.sqAnalysis_BuildSummaryTitle": "Informe del análisis de SonarQube", + "loc.messages.sqAnalysis_TaskReportInvalid": "Falta el informe de tareas o no es válido. Compruebe que SonarQube finalizó correctamente.", + "loc.messages.sqAnalysis_BuildSummary_LinkText": "Informe de SonarQube detallado", + "loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate": "No se puede autenticar con el servidor de SonarQube. Compruebe los detalles de la conexión de servicio guardada y el estado del servidor.", + "loc.messages.sqAnalysis_AnalysisTimeout": "El análisis no se completó en el tiempo asignado de %d segundos.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary": "Compilación de solicitud de incorporación de cambios: el resumen detallado de la compilación de la solicitud de incorporación de cambios no estará disponible.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker": "Compilación de solicitud de incorporación de cambios: la compilación no se interrumpirá en caso de error en la puerta de calidad.", + "loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure": "Error en la puerta de calidad de SonarQube asociada con esta compilación.", + "loc.messages.sqAnalysis_QualityGatePassed": "La puerta de calidad de SonarQube asociada con esta compilación no ha dado errores (estado %s)", + "loc.messages.sqAnalysis_UnknownComparatorString": "Se ha producido un problema en el resumen de compilación de SonarQube: comparador desconocido \"%s\"", + "loc.messages.sqAnalysis_NoUnitsFound": "La lista de unidades de medida de SonarQube no se ha podido recuperar del servidor.", + "loc.messages.sqAnalysis_NoReportTask": "No se ha podido encontrar report-task.txt. Causa posible: el análisis de SonarQube no se ha completado correctamente.", + "loc.messages.sqAnalysis_MultipleReportTasks": "Se han encontrado varios archivos report-task.txt. Se elegirá el primero. Puede que el resumen de compilación y el interruptor de compilación no sean precisos. Causa posible: varios análisis de SonarQube durante la misma compilación, lo que no se admite.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s ha encontrado %d infracciones en %d archivos.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s ha encontrado %d infracciones en 1 archivo.", + "loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s ha encontrado 1 infracción en 1 archivo.", + "loc.messages.codeAnalysisBuildSummaryLine_NoViolations": "%s no ha encontrado infracciones.", + "loc.messages.codeAnalysisBuildSummaryTitle": "Informe de análisis del código", + "loc.messages.codeAnalysisArtifactSummaryTitle": "Resultados del análisis de código", + "loc.messages.codeAnalysisDisabled": "El análisis de código está deshabilitado fuera del entorno de compilación. No se encuentra ningún valor para: %s", + "loc.messages.LocateJVMBasedOnVersionAndArch": "Buscar JAVA_HOME para Java %s %s", + "loc.messages.UnsupportedJdkWarning": "JDK 9 y JDK 10 no tienen soporte técnico. Cambie a una versión posterior del proyecto y la canalización. Intentando compilar con JDK 11...", + "loc.messages.FailedToLocateSpecifiedJVM": "No se ha encontrado la versión de JDK especificada. Asegúrese de que dicha versión está instalada en el agente y de que la variable de entorno \"%s\" existe y está establecida en la ubicación de un JDK correspondiente. En caso contrario, use la tarea de [Instalador de herramientas de Java](https://go.microsoft.com/fwlink/?linkid=875287) para instalar el JDK deseado.", + "loc.messages.InvalidBuildFile": "Archivo de compilación incompatible o no válido", + "loc.messages.FileNotFound": "El archivo o la carpeta no existen: %s", + "loc.messages.NoTestResults": "No se han encontrado archivos de resultados de pruebas que coincidan con %s, por lo que se omite la publicación de los resultados de las pruebas JUnit.", + "loc.messages.chmodGradlew": "Se usó el método \"chmod\" para el archivo gradlew para convertirlo en ejecutable." +} \ No newline at end of file diff --git a/Tasks/GradleV4/Strings/resources.resjson/fr-FR/resources.resjson b/Tasks/GradleV4/Strings/resources.resjson/fr-FR/resources.resjson new file mode 100644 index 000000000000..e9c4c6dea553 --- /dev/null +++ b/Tasks/GradleV4/Strings/resources.resjson/fr-FR/resources.resjson @@ -0,0 +1,85 @@ +{ + "loc.friendlyName": "Gradle", + "loc.helpMarkDown": "[En savoir plus sur cette tâche](https://go.microsoft.com/fwlink/?LinkID=613720) ou [consulter la documentation de Gradle](https://docs.gradle.org/current/userguide/userguide.html)", + "loc.description": "Générer à l'aide d'un script du wrapper Gradle", + "loc.instanceNameFormat": "gradlew $(tasks)", + "loc.releaseNotes": "La configuration de l'analyse SonarQube a été déplacée vers les extensions [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) ou [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud), dans la tâche 'Préparer la configuration de l'analyse'", + "loc.group.displayName.junitTestResults": "Résultats du test JUnit", + "loc.group.displayName.advanced": "Avancé", + "loc.group.displayName.CodeAnalysis": "Analyse du code", + "loc.input.label.wrapperScript": "Wrapper Gradle", + "loc.input.help.wrapperScript": "Chemin relatif de la racine de dépôt au script du wrapper Gradle.", + "loc.input.label.cwd": "Répertoire de travail", + "loc.input.help.cwd": "Répertoire de travail dans lequel exécuter la build Gradle. S'il n'est pas indiqué, le répertoire racine du dépôt est utilisé.", + "loc.input.label.options": "Options", + "loc.input.label.tasks": "Tâches", + "loc.input.label.publishJUnitResults": "Publier sur Azure Pipelines", + "loc.input.help.publishJUnitResults": "Sélectionnez cette option pour publier les résultats des tests JUnit produits par la build Gradle sur Azure Pipelines. Chaque fichier de résultats des tests correspondant à 'Fichiers de résultats des tests' est publié en tant que série de tests dans Azure Pipelines.", + "loc.input.label.testResultsFiles": "Fichiers de résultats des tests", + "loc.input.help.testResultsFiles": "Chemin des fichiers de résultats des tests. Les caractères génériques sont autorisés. ([Plus d'informations](https://go.microsoft.com/fwlink/?linkid=856077)). Par exemple, '**/TEST-*.xml' pour tous les fichiers XML dont le nom commence par TEST-.", + "loc.input.label.testRunTitle": "Titre de la série de tests", + "loc.input.help.testRunTitle": "Indiquez le nom de la série de tests.", + "loc.input.label.javaHomeSelection": "Définir JAVA_HOME par", + "loc.input.help.javaHomeSelection": "Définit JAVA_HOME en sélectionnant une version de JDK qui sera découverte au moment des builds ou en tapant le chemin de JDK.", + "loc.input.label.jdkVersion": "Version du kit JDK", + "loc.input.help.jdkVersion": "Essaiera de découvrir le chemin d'accès à la version du JDK sélectionné et définira JAVA_HOME en conséquence.", + "loc.input.label.jdkUserInputPath": "Chemin du kit JDK", + "loc.input.help.jdkUserInputPath": "Définissez JAVA_HOME sur le chemin d'accès indiqué.", + "loc.input.label.jdkArchitecture": "Architecture du kit JDK", + "loc.input.help.jdkArchitecture": "Indiquez éventuellement l'architecture (x86, x64) du JDK.", + "loc.input.label.gradleOpts": "Définir GRADLE_OPTS", + "loc.input.help.gradleOpts": "Définit la variable d'environnement GRADLE_OPTS, qui permet d'envoyer des arguments de ligne de commande pour démarrer JVM. L'indicateur xmx spécifie la mémoire maximale disponible pour JVM.", + "loc.input.label.sqAnalysisEnabled": "Exécuter l'analyse SonarQube ou SonarCloud", + "loc.input.help.sqAnalysisEnabled": "Cette option a changé depuis la version 1 de la tâche **Gradle**. Elle utilise les extensions du Marketplace [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) et [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud). Activez cette option pour exécuter l'[analyse SonarQube ou SonarCloud](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html) après l'exécution des tâches du champ **Tâches**. Vous devez également ajouter une tâche **Préparer la configuration de l'analyse** à partir de l'une des extensions du pipeline de build avant cette tâche Gradle.", + "loc.input.label.sqGradlePluginVersionChoice": "Analyseur SonarQube pour la version de Gradle", + "loc.input.help.sqGradlePluginVersionChoice": "Version du plug-in SonarQube Gradle à utiliser. Vous pouvez la déclarer dans votre fichier config Gradle, ou spécifier une version ici.", + "loc.input.label.sqGradlePluginVersion": "Analyseur SonarQube pour la version du plug-in Gradle", + "loc.input.help.sqGradlePluginVersion": "Vous pouvez accéder à l'ensemble des versions disponibles sur https://plugins.gradle.org/plugin/org.sonarqube.", + "loc.input.label.checkstyleAnalysisEnabled": "Exécuter Checkstyle", + "loc.input.help.checkstyleAnalysisEnabled": "Exécutez l'outil Checkstyle avec les vérifications Sun par défaut. Les résultats sont chargés en tant qu'artefacts de build.", + "loc.input.label.findbugsAnalysisEnabled": "Exécuter FindBugs", + "loc.input.help.findbugsAnalysisEnabled": "Utilisez l’outil d’analyse statique FindBugs pour rechercher des bogues dans le code. Les résultats sont chargés en tant qu’artefacts de build. Dans Gradle 6.0, ce plug-in a été supprimé. Utilisez plutôt le plug-in spotbugs. [Plus d’informations] (https://docs.gradle.org/current/userguide/upgrading_version_5.html#the_findbugs_plugin_has_been_removed)", + "loc.input.label.pmdAnalysisEnabled": "Exécuter PMD", + "loc.input.help.pmdAnalysisEnabled": "Utilisez l'outil d'analyse statique Java PMD pour rechercher des bogues dans le code. Les résultats sont chargés en tant qu'artefacts de build.", + "loc.input.label.spotBugsAnalysisEnabled": "Exécuter des débogages", + "loc.input.help.spotBugsAnalysisEnabled": "Activez cette option pour exécuter des débogages. Ce plug-in fonctionne avec Gradle v5.6 ou une date ultérieure. [Plus d’informations] (https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)", + "loc.input.label.spotBugsGradlePluginVersionChoice": "Version du plug-in Spotbugs", + "loc.input.help.spotBugsGradlePluginVersionChoice": "Version du plug-in Spotbugs Gradle à utiliser. Vous pouvez le déclarer dans votre fichier de configuration Gradle, ou spécifier une version ici.", + "loc.input.label.spotbugsGradlePluginVersion": "Numéro de version", + "loc.input.help.spotbugsGradlePluginVersion": "Consultez la https://plugins.gradle.org/plugin/com.github.spotbugs pour toutes les versions disponibles.", + "loc.messages.sqCommon_CreateTaskReport_MissingField": "Échec de création de l'objet TaskReport. Champ manquant : %s", + "loc.messages.sqCommon_WaitingForAnalysis": "Attente de l'analyse de la build par le serveur SonarQube.", + "loc.messages.sqCommon_NotWaitingForAnalysis": "Build non configurée pour attendre l'analyse SonarQube. L'état détaillé de la barrière qualité n'est pas disponible.", + "loc.messages.sqCommon_QualityGateStatusUnknown": "Impossible de détecter la barrière qualité. Un nouvel état a peut-être été introduit.", + "loc.messages.sqCommon_InvalidResponseFromServer": "Le serveur a répondu dans un format non valide ou inattendu.", + "loc.messages.codeAnalysis_ToolIsEnabled": "L'analyse %s est activée.", + "loc.messages.codeAnalysis_ToolFailed": "Échec de l'analyse %s.", + "loc.messages.sqAnalysis_IncrementalMode": "Build PR détectée : exécution de l'analyse SonarQube en mode incrémentiel", + "loc.messages.sqAnalysis_BuildSummaryTitle": "Rapport d'analyse SonarQube", + "loc.messages.sqAnalysis_TaskReportInvalid": "Rapport des tâches non valide ou manquant. Vérifiez que SonarQube s'est achevé avec succès.", + "loc.messages.sqAnalysis_BuildSummary_LinkText": "Rapport SonarQube détaillé", + "loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate": "Impossible d'authentifier le serveur SonarQube. Vérifiez les détails de connexion de service enregistrés et l'état du serveur.", + "loc.messages.sqAnalysis_AnalysisTimeout": "L'analyse ne s'est pas achevée dans le temps imparti fixé à %d secondes.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary": "Build de demande de tirage : le résumé détaillé de la build SonarQube n'est pas disponible.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker": "Build de demande de tirage : la build n'est pas interrompue en cas d'échec de la barrière qualité.", + "loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure": "Échec de la barrière qualité SonarQube associée à cette build.", + "loc.messages.sqAnalysis_QualityGatePassed": "Réussite de la barrière qualité SonarQube associée à cette build (état %s)", + "loc.messages.sqAnalysis_UnknownComparatorString": "Le résumé de la génération SonarQube a rencontré un problème : comparateur inconnu '%s'", + "loc.messages.sqAnalysis_NoUnitsFound": "La liste des unités de mesure SonarQube n'a pas pu être récupérée sur le serveur.", + "loc.messages.sqAnalysis_NoReportTask": "Report-task.txt introuvable. Cause possible : L'analyse SonarQube ne s'est pas effectuée correctement.", + "loc.messages.sqAnalysis_MultipleReportTasks": "Plusieurs fichiers report-task.txt trouvés. Le premier fichier est choisi. Le résumé de la génération et l'interrupteur de génération ne sont peut-être pas exacts. Cause possible : plusieurs analyses SonarQube pendant la même génération, ce qui n'est pas pris en charge.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s a trouvé %d violations dans %d fichiers.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s a trouvé %d violations dans 1 fichier.", + "loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s a trouvé 1 violation dans 1 fichier.", + "loc.messages.codeAnalysisBuildSummaryLine_NoViolations": "%s n'a trouvé aucune violation.", + "loc.messages.codeAnalysisBuildSummaryTitle": "Rapport d'analyse du code", + "loc.messages.codeAnalysisArtifactSummaryTitle": "Résultats d'analyse du code", + "loc.messages.codeAnalysisDisabled": "L'analyse du code est désactivée en dehors de l'environnement de build. Valeur introuvable pour %s", + "loc.messages.LocateJVMBasedOnVersionAndArch": "Localiser JAVA_HOME pour Java %s %s", + "loc.messages.UnsupportedJdkWarning": "JDK 9 et JDK 10 ne sont plus pris en charge. Passez à une version plus récente de votre projet et de votre pipeline. Tentative de génération avec JDK 11...", + "loc.messages.FailedToLocateSpecifiedJVM": "Échec de la localisation de la version spécifiée du kit JDK. Vérifiez que la version spécifiée du kit JDK est installée sur l'agent, que la variable d'environnement '%s' existe et que sa valeur correspond à l'emplacement d'un kit JDK correspondant. Sinon, utilisez la tâche [Programme d'installation de l'outil Java] (https://go.microsoft.com/fwlink/?linkid=875287) pour installer le kit JDK souhaité.", + "loc.messages.InvalidBuildFile": "Fichier de build non valide ou non pris en charge", + "loc.messages.FileNotFound": "Le fichier ou le dossier n'existe pas : %s", + "loc.messages.NoTestResults": "Les fichiers de résultats des tests correspondant à %s sont introuvables. La publication des résultats des tests JUnit est ignorée.", + "loc.messages.chmodGradlew": "Méthode 'chmod' utilisée pour le fichier gradlew afin de le rendre exécutable." +} \ No newline at end of file diff --git a/Tasks/GradleV4/Strings/resources.resjson/it-IT/resources.resjson b/Tasks/GradleV4/Strings/resources.resjson/it-IT/resources.resjson new file mode 100644 index 000000000000..72beb14777e4 --- /dev/null +++ b/Tasks/GradleV4/Strings/resources.resjson/it-IT/resources.resjson @@ -0,0 +1,85 @@ +{ + "loc.friendlyName": "Gradle", + "loc.helpMarkDown": "[Altre informazioni su questa attività](https://go.microsoft.com/fwlink/?LinkID=613720). In alternativa [vedere la documentazione di Gradle](https://docs.gradle.org/current/userguide/userguide.html)", + "loc.description": "Consente di compilare con uno script wrapper di Gradle", + "loc.instanceNameFormat": "gradlew $(tasks)", + "loc.releaseNotes": "La configurazione dell'analisi SonarQube è stata spostata nell'attività `Prepara configurazione di analisi` dell'estensione [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) o [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud)", + "loc.group.displayName.junitTestResults": "Risultati del test JUnit", + "loc.group.displayName.advanced": "Avanzate", + "loc.group.displayName.CodeAnalysis": "Code Analysis", + "loc.input.label.wrapperScript": "Wrapper di Gradle", + "loc.input.help.wrapperScript": "Percorso relativo dalla radice del repository allo script wrapper di Gradle.", + "loc.input.label.cwd": "Cartella di lavoro", + "loc.input.help.cwd": "Directory di lavoro in cui eseguire la compilazione Gradle. Se non è specificata, viene usata la directory radice del repository.", + "loc.input.label.options": "Opzioni", + "loc.input.label.tasks": "Attività", + "loc.input.label.publishJUnitResults": "Pubblica in Azure Pipelines", + "loc.input.help.publishJUnitResults": "Selezionare questa opzione per pubblicare i risultati del test JUnit prodotti dalla compilazione Gradle in Azure Pipelines. Ogni file dei risultati del test corrispondente al valore di `File dei risultati del test` verrà pubblicato come esecuzione dei test in Azure Pipelines.", + "loc.input.label.testResultsFiles": "File dei risultati del test", + "loc.input.help.testResultsFiles": "Percorso dei file dei risultati del test. È possibile usare i caratteri jolly, ad esempio `**/TEST-*.xml` per individuare tutti i file XML il cui nome inizia con TEST-. [Altre informazioni](https://go.microsoft.com/fwlink/?linkid=856077)", + "loc.input.label.testRunTitle": "Titolo dell'esecuzione dei test", + "loc.input.help.testRunTitle": "Consente di specificare un nome per l'esecuzione dei test.", + "loc.input.label.javaHomeSelection": "Imposta JAVA_HOME per", + "loc.input.help.javaHomeSelection": "Consente di impostare JAVA_HOME selezionando una versione di JDK che verrà individuata durante le compilazioni oppure immettendo manualmente un percorso JDK.", + "loc.input.label.jdkVersion": "Versione del JDK", + "loc.input.help.jdkVersion": "Prova a individuare il percorso della versione selezionata di JDK e imposta JAVA_HOME di conseguenza.", + "loc.input.label.jdkUserInputPath": "Percorso del JDK", + "loc.input.help.jdkUserInputPath": "Consente di impostare JAVA_HOME sul percorso specificato.", + "loc.input.label.jdkArchitecture": "Architettura del JDK", + "loc.input.help.jdkArchitecture": "Consente facoltativamente di specificare l'architettura (x86, x64) di JDK.", + "loc.input.label.gradleOpts": "Imposta GRADLE_OPTS", + "loc.input.help.gradleOpts": "Consente di impostare la variabile di ambiente GRADLE_OPTS, che viene usata per inviare argomenti della riga di comando per avviare JVM. Il flag xmx specifica la memoria massima disponibile per JVM.", + "loc.input.label.sqAnalysisEnabled": "Esegui analisi SonarQube o SonarCloud", + "loc.input.help.sqAnalysisEnabled": "Questa opzione è stata modificata rispetto alla versione 1 dell'attività **Gradle** in modo da usare le estensioni [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) e [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) del Marketplace. Abilitare questa opzione per eseguire l'[analisi SonarQube o SonarCloud](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html) dopo aver eseguito le attività nel campo **Attività**. Prima di questa attività Gradle, è anche necessario aggiungere alla pipeline di compilazione un'attività **Prepara configurazione di analisi** da una delle estensioni.", + "loc.input.label.sqGradlePluginVersionChoice": "Versione di SonarQube Scanner per Gradle", + "loc.input.help.sqGradlePluginVersionChoice": "Versione del plug-in SonarQube Gradle da usare. È possibile dichiararla nel file di configurazione di Gradle o specificarne una qui.", + "loc.input.label.sqGradlePluginVersion": "Versione del plug-in SonarQube Scanner per Gradle", + "loc.input.help.sqGradlePluginVersion": "Per tutte le versioni disponibili, vedere https://plugins.gradle.org/plugin/org.sonarqube.", + "loc.input.label.checkstyleAnalysisEnabled": "Esegui Checkstyle", + "loc.input.help.checkstyleAnalysisEnabled": "Esegue lo strumento Checkstyle con i controlli Sun predefiniti. I risultati vengono caricati come artefatti di compilazione.", + "loc.input.label.findbugsAnalysisEnabled": "Esegui FindBugs", + "loc.input.help.findbugsAnalysisEnabled": "Usare lo strumento di analisi statica FindBugs per cercare i bug nel codice. I risultati vengono caricati come artefatti della compilazione. In Gradle 6.0 questo plug-in è stato rimosso. Utilizzare il plug-in SpotBugs. [Altre informazioni](https://docs.gradle.org/current/userguide/upgrading_version_5.html#the_findbugs_plugin_has_been_removed)", + "loc.input.label.pmdAnalysisEnabled": "Esegui PMD", + "loc.input.help.pmdAnalysisEnabled": "Consente di usare lo strumento di analisi statica Java PMD per cercare bug nel codice. I risultati vengono caricati come artefatti di compilazione.", + "loc.input.label.spotBugsAnalysisEnabled": "Esegui SpotBugs", + "loc.input.help.spotBugsAnalysisEnabled": "Abilitare questa opzione per eseguire SpotBugs. Questo plug-in è compatibile con Gradle v5.6 o versioni successive. [Altre informazioni](https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)", + "loc.input.label.spotBugsGradlePluginVersionChoice": "Versione del plug-in SpotBugs", + "loc.input.help.spotBugsGradlePluginVersionChoice": "Versione del plug-in SpotBugs di Gradle da usare. È possibile dichiararla nel file di configurazione di Gradle o specificarne una qui.", + "loc.input.label.spotbugsGradlePluginVersion": "Numero di versione", + "loc.input.help.spotbugsGradlePluginVersion": "Per tutte le versioni disponibili, vedere https://plugins.gradle.org/plugin/com.github.spotbugs.", + "loc.messages.sqCommon_CreateTaskReport_MissingField": "Non è stato possibile creare l'oggetto TaskReport. Campo mancante: %s", + "loc.messages.sqCommon_WaitingForAnalysis": "In attesa che il server SonarQube analizzi la compilazione.", + "loc.messages.sqCommon_NotWaitingForAnalysis": "La compilazione non è stata configurata per attendere l'analisi SonarQube. Lo stato dettagliato del quality gate non sarà disponibile.", + "loc.messages.sqCommon_QualityGateStatusUnknown": "Non è stato possibile rilevare lo stato del quality gate oppure è stato introdotto un nuovo stato.", + "loc.messages.sqCommon_InvalidResponseFromServer": "Il server ha risposto con un formato di risposta imprevisto o non valido.", + "loc.messages.codeAnalysis_ToolIsEnabled": "L'analisi di %s è abilitata.", + "loc.messages.codeAnalysis_ToolFailed": "L'analisi di %s non è riuscita.", + "loc.messages.sqAnalysis_IncrementalMode": "È stata rilevata una compilazione di richiesta pull. L'analisi SonarQube verrà eseguita in modalità incrementale", + "loc.messages.sqAnalysis_BuildSummaryTitle": "Report di analisi SonarQube", + "loc.messages.sqAnalysis_TaskReportInvalid": "Report attività assente o non valido. Verificare che SonarQube sia stato completato senza errori.", + "loc.messages.sqAnalysis_BuildSummary_LinkText": "Report dettagliato SonarQube", + "loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate": "Non è possibile eseguire l'autenticazione al server SonarQube. Verificare i dettagli salvati della connessione al servizio e lo stato del server.", + "loc.messages.sqAnalysis_AnalysisTimeout": "L'analisi non è stata completata nel tempo assegnato di %d secondi.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary": "Compilazione di richieste pull: il riepilogo della compilazione SonarQube non sarà disponibile.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker": "Compilazione di richieste pull: la compilazione non verrà interrotta se il quality gate non viene superato.", + "loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure": "Il quality gate di SonarQube associato a questa compilazione non è stato superato.", + "loc.messages.sqAnalysis_QualityGatePassed": "Il quality gate di SonarQube associato a questa compilazione è stato superato (stato %s)", + "loc.messages.sqAnalysis_UnknownComparatorString": "Il riepilogo della compilazione SonarQube ha rilevato un problema: il criterio di confronto '%s' è sconosciuto", + "loc.messages.sqAnalysis_NoUnitsFound": "Non è stato possibile recuperare dal server l'elenco di unità di misura SonarQube.", + "loc.messages.sqAnalysis_NoReportTask": "Non è stato possibile trovare il file report-task.txt. Causa possibile: l'analisi SonarQube non è stata completata correttamente.", + "loc.messages.sqAnalysis_MultipleReportTasks": "Sono stati trovati più file report-task.txt. Verrà scelto il primo. Il riepilogo e il breaker della compilazione potrebbero non essere precisi. Causa possibile: sono state rilevate più analisi SonarQube durante la stessa compilazione e questa condizione non è supportata.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s ha trovato %d violazioni in %d file.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s ha trovato %d violazioni in 1 file.", + "loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s ha trovato 1 violazione in 1 file.", + "loc.messages.codeAnalysisBuildSummaryLine_NoViolations": "%s non ha trovato violazioni.", + "loc.messages.codeAnalysisBuildSummaryTitle": "Report di Code Analysis", + "loc.messages.codeAnalysisArtifactSummaryTitle": "Risultati dell’analisi del codice", + "loc.messages.codeAnalysisDisabled": "Code Analysis è disabilitato dall'esterno dell'ambiente di compilazione. Non è stato possibile trovare alcun valore per %s", + "loc.messages.LocateJVMBasedOnVersionAndArch": "Individuare JAVA_HOME per Java %s %s", + "loc.messages.UnsupportedJdkWarning": "JDK 9 e JDK 10 non sono supportati. Passare a una versione più recente nel progetto e nella pipeline. Verrà effettuato un tentativo di compilazione con JDK 11...", + "loc.messages.FailedToLocateSpecifiedJVM": "La versione del JDK specificata non è stata trovata. Assicurarsi che sia installata nell'agente e che la variabile di ambiente '%s' sia presente e impostata sul percorso di un JDK corrispondente oppure usare l'attività [Programma di installazione strumenti Java](https://go.microsoft.com/fwlink/?linkid=875287) per installare il JDK desiderato.", + "loc.messages.InvalidBuildFile": "File di compilazione non valido o non supportato", + "loc.messages.FileNotFound": "Il file o la cartella non esiste: %s", + "loc.messages.NoTestResults": "Non sono stati trovati file dei risultati del test corrispondenti a %s, di conseguenza la pubblicazione dei risultati del test JUnit verrà ignorata.", + "loc.messages.chmodGradlew": "È stato usato il metodo 'chmod' per il file gradlew per renderlo eseguibile." +} \ No newline at end of file diff --git a/Tasks/GradleV4/Strings/resources.resjson/ja-JP/resources.resjson b/Tasks/GradleV4/Strings/resources.resjson/ja-JP/resources.resjson new file mode 100644 index 000000000000..d0eb9692c1b6 --- /dev/null +++ b/Tasks/GradleV4/Strings/resources.resjson/ja-JP/resources.resjson @@ -0,0 +1,85 @@ +{ + "loc.friendlyName": "Gradle", + "loc.helpMarkDown": "[このタスクの詳細情報](https://go.microsoft.com/fwlink/?LinkID=613720)または [Gradle ドキュメント](https://docs.gradle.org/current/userguide/userguide.html)を確認します", + "loc.description": "Gradle ラッパー スクリプトを使用してビルドします", + "loc.instanceNameFormat": "gradlew $(tasks)", + "loc.releaseNotes": "SonarQube 解析の構成は、[SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) または [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) 拡張機能の 'Prepare Analysis Configuration' タスクに移動しました", + "loc.group.displayName.junitTestResults": "JUnit のテスト結果", + "loc.group.displayName.advanced": "詳細", + "loc.group.displayName.CodeAnalysis": "コード分析", + "loc.input.label.wrapperScript": "Gradle ラッパー", + "loc.input.help.wrapperScript": "リポジトリのルートから Gradle のラッパー スクリプトへの相対パス。", + "loc.input.label.cwd": "作業ディレクトリ", + "loc.input.help.cwd": "Gradle ビルドの実行先の作業ディレクトリ。指定しない場合は、リポジトリのルート ディレクトリが使用されます。", + "loc.input.label.options": "オプション", + "loc.input.label.tasks": "タスク", + "loc.input.label.publishJUnitResults": "Azure Pipelines に公開する", + "loc.input.help.publishJUnitResults": "Gradle のビルドによって生成された JUnit のテスト結果を Azure Pipelines に公開するには、このオプションを選びます。'テスト結果ファイル' と一致する各テスト結果ファイルが、Azure Pipelines でテストの実行として公開されます。", + "loc.input.label.testResultsFiles": "テスト結果ファイル", + "loc.input.help.testResultsFiles": "テスト結果ファイルのパス。ワイルドカードを使用できます ([詳細情報](https://go.microsoft.com/fwlink/?linkid=856077))。たとえば、名前が TEST- で始まるすべての XML ファイルの場合は '**/TEST-*.xml' です。", + "loc.input.label.testRunTitle": "テストの実行のタイトル", + "loc.input.help.testRunTitle": "テストの実行の名前を指定します。", + "loc.input.label.javaHomeSelection": "次の条件で JAVA_HOME を設定します", + "loc.input.help.javaHomeSelection": "ビルド中に検出される JDK バージョンを選択するか、JDK パスを手動で入力して JAVA_HOME を設定します。", + "loc.input.label.jdkVersion": "JDK バージョン", + "loc.input.help.jdkVersion": "選択した JDK のバージョンへのパスの検出を試みて、それに従って JAVA_HOME を設定します。", + "loc.input.label.jdkUserInputPath": "JDK パス", + "loc.input.help.jdkUserInputPath": "指定したパスに JAVA_HOME を設定します。", + "loc.input.label.jdkArchitecture": "JDK アーキテクチャ", + "loc.input.help.jdkArchitecture": "必要に応じて、JDK のアーキテクチャ (x86、x64) を指定します。", + "loc.input.label.gradleOpts": "GRADLE_OPTS の設定", + "loc.input.help.gradleOpts": "JVM を起動するためにコマンド ライン引数を送信するときに使用する GRADLE_OPTS 環境変数を設定します。xmx フラグは JVM で使用可能な最大メモリを指定します。", + "loc.input.label.sqAnalysisEnabled": "SonarQube 解析または SonarCloud 解析の実行", + "loc.input.help.sqAnalysisEnabled": "このオプションはバージョン 1 の **Gradle** タスクから変更され、[SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) および [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) Marketplace 拡張機能を使用するようになりました。このオプションを有効にして、[**Tasks**] フィールドのタスクを実行した後に [SonarQube または SonarCloud 分析](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html) を実行するようにします。また、この Gradle タスクの前に、いずれか一方の拡張機能から **Prepare Analysis Configuration** タスクをビルド パイプラインに追加する必要があります。", + "loc.input.label.sqGradlePluginVersionChoice": "SonarQube scanner for Gradle のバージョン", + "loc.input.help.sqGradlePluginVersionChoice": "使用する SonarQube Gradle プラグイン バージョンです。Gradle 構成ファイルで宣言するか、ここでバージョンを指定できます。", + "loc.input.label.sqGradlePluginVersion": "SonarQube scanner for Gradle プラグインのバージョン", + "loc.input.help.sqGradlePluginVersion": "利用可能なすべてのバージョンについては、https://plugins.gradle.org/plugin/org.sonarqube を参照してください。", + "loc.input.label.checkstyleAnalysisEnabled": "Checkstyle の実行", + "loc.input.help.checkstyleAnalysisEnabled": "既定の Sun チェックを使用して Checkstyle ツールを実行します。結果はビルド成果物としてアップロードされます。", + "loc.input.label.findbugsAnalysisEnabled": "FindBugs の実行", + "loc.input.help.findbugsAnalysisEnabled": "FindBugs 静的分析ツールを使用して、コード内のバグを検索します。結果はビルド成果物としてアップロードされます。Gradle 6.0 ではこのプラグインは削除されました。代わりに、spotbug プラグインを使用してください。[詳細情報] (https://docs.gradle.org/current/userguide/upgrading_version_5.html # the_findbugs_plugin_has_been_removed)", + "loc.input.label.pmdAnalysisEnabled": "PMD の実行", + "loc.input.help.pmdAnalysisEnabled": "PMD Java スタティック分析ツールを使用して、コード内のバグを調べます。結果はビルド成果物としてアップロードされます。", + "loc.input.label.spotBugsAnalysisEnabled": "Run SpotBugs", + "loc.input.help.spotBugsAnalysisEnabled": "このオプションを有効にすると、spotBugs が実行されます。このプラグインは Gradle version 5.6 以降で動作します。[詳細情報] (https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)", + "loc.input.label.spotBugsGradlePluginVersionChoice": "Spotbugs プラグイン バージョン", + "loc.input.help.spotBugsGradlePluginVersionChoice": "使用する Spotbugs Gradle プラグイン バージョンです。Gradle 構成ファイルで宣言するか、ここでバージョンを指定できます。", + "loc.input.label.spotbugsGradlePluginVersion": "バージョン番号", + "loc.input.help.spotbugsGradlePluginVersion": "利用可能なすべてのバージョンについては、https://plugins.gradle.org/plugin/com.github.spotbugs をご覧ください。", + "loc.messages.sqCommon_CreateTaskReport_MissingField": "TaskReport オブジェクトの作成に失敗しました。フィールド %s が見つかりません", + "loc.messages.sqCommon_WaitingForAnalysis": "SonarQube サーバーによるビルドの分析を待機しています。", + "loc.messages.sqCommon_NotWaitingForAnalysis": "SonarQube 分析を待機するようビルドが構成されていません。詳細な品質ゲートの状態は提供されません。", + "loc.messages.sqCommon_QualityGateStatusUnknown": "品質ゲートの状態を検出できないか、新しい状態が導入されています。", + "loc.messages.sqCommon_InvalidResponseFromServer": "サーバーが無効または予期しない応答形式で応答しました。", + "loc.messages.codeAnalysis_ToolIsEnabled": "%s の解析が有効です。", + "loc.messages.codeAnalysis_ToolFailed": "%s の解析に失敗しました。", + "loc.messages.sqAnalysis_IncrementalMode": "PR ビルドが検出されました - インクリメンタル モードで SonarQube 解析を実行しています", + "loc.messages.sqAnalysis_BuildSummaryTitle": "SonarQube 解析レポート", + "loc.messages.sqAnalysis_TaskReportInvalid": "タスク レポートが無効であるか、見つかりません。SonarQube が正常に終了したことをご確認ください。", + "loc.messages.sqAnalysis_BuildSummary_LinkText": "詳しい SonarQube レポート", + "loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate": "SonarQube サーバーへ認証できません。保存したサービス接続の詳細とサーバーの状態を確認してください。", + "loc.messages.sqAnalysis_AnalysisTimeout": "%d 秒の所定時間内に分析が完了しませんでした。", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary": "プル要求ビルド: 詳しい SonarQube ビルドの概要は提供されません。", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker": "プル要求ビルド: 品質ゲートが失敗してもビルドは中断されません。", + "loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure": "このビルドに関連する SonarQube 品質ゲートが失敗しました。", + "loc.messages.sqAnalysis_QualityGatePassed": "このビルドに関連する SonarQube 品質ゲートに合格しました (状態 %s)", + "loc.messages.sqAnalysis_UnknownComparatorString": "SonarQube ビルドの概要で問題が発生しました: 不明な比較演算子 '%s'", + "loc.messages.sqAnalysis_NoUnitsFound": "SonarQube 測定単位のリストをサーバーから取得できませんでした。", + "loc.messages.sqAnalysis_NoReportTask": "report-task.txt が見つかりませんでした。考えられる原因: SonarQube 分析が正常に完了しませんでした。", + "loc.messages.sqAnalysis_MultipleReportTasks": "複数の report-task.txt ファイルが見つかりました。最初のファイルを選択します。ビルドの概要とビルドのブレーカーが正しくない可能性があります。考えられる原因: 同じビルド内に複数の SonarQube 分析がありますが、これはサポートされていません。", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s により、%d 件の違反が %d 個のファイルで見つかりました。", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s により、1 つのファイルで %d 件の違反が見つかりました。", + "loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s により、1 つのファイルで 1 件の違反が見つかりました。", + "loc.messages.codeAnalysisBuildSummaryLine_NoViolations": "%s で違反は見つかりませんでした。", + "loc.messages.codeAnalysisBuildSummaryTitle": "コード分析レポート", + "loc.messages.codeAnalysisArtifactSummaryTitle": "コード分析結果", + "loc.messages.codeAnalysisDisabled": "コード分析はビルド環境の外部では無効です。%s の値が見つかりませんでした", + "loc.messages.LocateJVMBasedOnVersionAndArch": "Java %s %s の JAVA_HOME を検索する", + "loc.messages.UnsupportedJdkWarning": "JDK 9 および JDK 10 はサポートされていません。プロジェクトとパイプラインで新しいバージョンに切り替えてください。JDK 11 でのビルドを試行しています...", + "loc.messages.FailedToLocateSpecifiedJVM": "指定された JDK バージョンが見つかりませんでした。指定された JDK バージョンがエージェントにインストールされており、環境変数 '%s' が存在し、対応する JDK の場所に設定されていることを確認するか、[Java ツール インストーラー](https://go.microsoft.com/fwlink/?linkid=875287) タスクを使用して目的の JDK をインストールしてください。", + "loc.messages.InvalidBuildFile": "無効またはサポートされていないビルド ファイル", + "loc.messages.FileNotFound": "ファイルまたはフォルダーが存在しません: %s", + "loc.messages.NoTestResults": "%s と一致するテスト結果ファイルが見つからないため、JUnit テスト結果の発行をスキップします。", + "loc.messages.chmodGradlew": "gradlew ファイルを実行可能にするために 'chmod' メソッドを使用しました。" +} \ No newline at end of file diff --git a/Tasks/GradleV4/Strings/resources.resjson/ko-KR/resources.resjson b/Tasks/GradleV4/Strings/resources.resjson/ko-KR/resources.resjson new file mode 100644 index 000000000000..7783bd5619cc --- /dev/null +++ b/Tasks/GradleV4/Strings/resources.resjson/ko-KR/resources.resjson @@ -0,0 +1,85 @@ +{ + "loc.friendlyName": "Gradle", + "loc.helpMarkDown": "[이 작업에 대한 자세한 정보](https://go.microsoft.com/fwlink/?LinkID=613720) 또는 [Gradle 설명서 참조](https://docs.gradle.org/current/userguide/userguide.html)", + "loc.description": "Gradle 래퍼 스크립트를 사용하여 빌드", + "loc.instanceNameFormat": "gradlew $(tasks)", + "loc.releaseNotes": "SonarQube 분석 구성이 [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) 또는 [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) 확장의 `분석 구성 준비` 작업으로 이동됨", + "loc.group.displayName.junitTestResults": "JUnit 테스트 결과", + "loc.group.displayName.advanced": "고급", + "loc.group.displayName.CodeAnalysis": "코드 분석", + "loc.input.label.wrapperScript": "Gradle 래퍼", + "loc.input.help.wrapperScript": "Gradle 래퍼 스크립트의 리포지토리 루트로부터의 상대 경로입니다.", + "loc.input.label.cwd": "작업 디렉터리", + "loc.input.help.cwd": "Gradle 빌드를 실행할 작업 디렉터리입니다. 지정되지 않은 경우 리포지토리 루트 디렉터리가 사용됩니다.", + "loc.input.label.options": "옵션", + "loc.input.label.tasks": "작업", + "loc.input.label.publishJUnitResults": "Azure Pipelines/에 게시", + "loc.input.help.publishJUnitResults": "Gradle 빌드에서 생성된 JUnit 테스트 결과를 Azure Pipelines에 게시하려면 이 옵션을 선택합니다. '테스트 결과 파일'과 일치하는 각 테스트 결과 파일이 Azure Pipelines에 테스트 실행으로 게시됩니다.", + "loc.input.label.testResultsFiles": "테스트 결과 파일", + "loc.input.help.testResultsFiles": "테스트 결과 파일 경로입니다. 와일드카드를 사용할 수 있습니다([자세한 정보](https://go.microsoft.com/fwlink/?linkid=856077)). 예를 들어 이름이 TEST-로 시작하는 모든 XML 파일을 표시하려면 '**/TEST-*.xml'을 지정합니다.", + "loc.input.label.testRunTitle": "테스트 실행 제목", + "loc.input.help.testRunTitle": "테스트 실행의 이름을 지정하세요.", + "loc.input.label.javaHomeSelection": "JAVA_HOME 설정 방법", + "loc.input.help.javaHomeSelection": "빌드 중에 검색될 JDK 버전을 선택하거나 수동으로 JDK 경로를 입력하여 JAVA_HOME을 설정합니다.", + "loc.input.label.jdkVersion": "JDK 버전", + "loc.input.help.jdkVersion": "선택한 JDK 버전의 경로에 대한 검색을 시도하고 그에 따라 JAVA_HOME을 설정하게 됩니다.", + "loc.input.label.jdkUserInputPath": "JDK 경로", + "loc.input.help.jdkUserInputPath": "JAVA_HOME을 지정된 경로로 설정합니다.", + "loc.input.label.jdkArchitecture": "JDK 아키텍처", + "loc.input.help.jdkArchitecture": "선택적으로 JDK의 아키텍처(x86, x64)를 제공하세요.", + "loc.input.label.gradleOpts": "GRADLE_OPTS 설정", + "loc.input.help.gradleOpts": "JVM을 시작하기 위해 명령줄 인수를 보내는 데 사용되는 GRADLE_OPTS 환경 변수를 설정합니다. xmx 플래그는 JVM에 사용 가능한 최대 메모리를 지정합니다.", + "loc.input.label.sqAnalysisEnabled": "SonarQube 또는 SonarCloud 분석 실행", + "loc.input.help.sqAnalysisEnabled": "이 옵션은 [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) 및 [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) Marketplace 확장을 사용하기 위해 **Gradle** 작업의 버전 1에서 변경되었습니다. **작업** 필드의 작업을 실행한 후 [SonarQube 또는 SonarCloud 분석](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html)을 실행하려면 이 옵션을 사용하도록 설정하세요. 또한 빌드 파이프라인에서 이 Gradle 작업 앞에 확장 중 하나의 **분석 구성 준비** 작업을 추가해야 합니다.", + "loc.input.label.sqGradlePluginVersionChoice": "SonarQube Scanner for Gradle 버전", + "loc.input.help.sqGradlePluginVersionChoice": "사용할 SonarQube Gradle 플러그 인 버전입니다. Gradle 구성 파일에서 선언하거나 여기서 버전을 지정할 수 있습니다.", + "loc.input.label.sqGradlePluginVersion": "SonarQube Scanner for Gradle 플러그 인 버전", + "loc.input.help.sqGradlePluginVersion": "사용 가능한 모든 버전을 보려면 https://plugins.gradle.org/plugin/org.sonarqube를 참조하세요.", + "loc.input.label.checkstyleAnalysisEnabled": "Checkstyle 실행", + "loc.input.help.checkstyleAnalysisEnabled": "기본 일요일 검사로 Checkstyle 도구를 실행하세요. 결과는 빌드 아티팩트로 업로드됩니다.", + "loc.input.label.findbugsAnalysisEnabled": "FindBugs 실행", + "loc.input.help.findbugsAnalysisEnabled": "정적 분석 도구인 FindBugs를 사용하여 코드에서 버그를 찾으세요. 결과는 빌드 아티팩트로 업로드됩니다. Gradle 6.0에서는 이 플러그 인이 제거되었으므로 대신 spotbugs 플러그 인을 사용하세요. [추가 정보] (https://docs.gradle.org/current/userguide/upgrading_version_5.html # the_findbugs_plugin_has_been_removed)", + "loc.input.label.pmdAnalysisEnabled": "PMD 실행", + "loc.input.help.pmdAnalysisEnabled": "PMD Java 정적 분석 도구를 사용하여 코드에서 버그를 찾아보세요. 결과는 빌드 아티팩트로 업로드됩니다.", + "loc.input.label.spotBugsAnalysisEnabled": "SpotBugs 실행", + "loc.input.help.spotBugsAnalysisEnabled": "이 옵션을 사용하여 spotBugs를 실행합니다. 이 플러그 인은 Gradle v5.6 이상에서 작동합니다. [추가 정보] (https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)", + "loc.input.label.spotBugsGradlePluginVersionChoice": "Spotbugs 플러그 인 버전", + "loc.input.help.spotBugsGradlePluginVersionChoice": "사용할 Spotbugs Gradle 플러그 인 버전입니다. Gradle 구성 파일에서 선언하거나 여기서 버전을 지정할 수 있습니다.", + "loc.input.label.spotbugsGradlePluginVersion": "버전 번호", + "loc.input.help.spotbugsGradlePluginVersion": "사용 가능한 모든 버전을 보려면 https://plugins.gradle.org/plugin/com.github.spotbugs를 참조하세요.", + "loc.messages.sqCommon_CreateTaskReport_MissingField": "TaskReport 개체를 만들지 못했습니다. 없는 필드: %s", + "loc.messages.sqCommon_WaitingForAnalysis": "SonarQube 서버에서 빌드가 분석될 때까지 대기하는 중입니다.", + "loc.messages.sqCommon_NotWaitingForAnalysis": "빌드가 SonarQube 분석을 기다리도록 구성되지 않았습니다. 자세한 품질 게이트 상태를 사용할 수 없습니다.", + "loc.messages.sqCommon_QualityGateStatusUnknown": "품질 게이트 상태를 검색할 수 없거나 새 상태가 발생했습니다.", + "loc.messages.sqCommon_InvalidResponseFromServer": "서버가 잘못되거나 예기치 않은 응답 형식으로 응답했습니다.", + "loc.messages.codeAnalysis_ToolIsEnabled": "%s 분석을 사용하도록 설정했습니다.", + "loc.messages.codeAnalysis_ToolFailed": "%s을(를) 분석하지 못했습니다.", + "loc.messages.sqAnalysis_IncrementalMode": "검색된 PR 빌드 - SonarQube 분석을 증분 모드에서 실행 중", + "loc.messages.sqAnalysis_BuildSummaryTitle": "SonarQube 분석 보고서", + "loc.messages.sqAnalysis_TaskReportInvalid": "작업 보고서가 잘못되었거나 없습니다. SonarQube가 완료되었는지 확인하세요.", + "loc.messages.sqAnalysis_BuildSummary_LinkText": "자세한 SonarQube 보고서", + "loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate": "SonarQube 서버에 인증할 수 없습니다. 저장된 서비스 연결 정보 및 서버 상태를 확인하세요.", + "loc.messages.sqAnalysis_AnalysisTimeout": "할당된 시간 %d초 내에 분석이 완료되지 않았습니다.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary": "끌어오기 요청 빌드: 자세한 SonarQube 빌드 요약을 사용할 수 없습니다.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker": "끌어오기 요청 빌드: 품질 게이트가 실패하면 빌드가 분할되지 않습니다.", + "loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure": "이 빌드와 연결된 SonarQube 품질 게이트가 실패했습니다.", + "loc.messages.sqAnalysis_QualityGatePassed": "이 빌드와 연결된 SonarQube 품질 게이트가 통과했습니다(상태 %s).", + "loc.messages.sqAnalysis_UnknownComparatorString": "SonarQube 빌드 요약에서 문제가 발생했습니다. 알 수 없는 비교 연산자 '%s'입니다.", + "loc.messages.sqAnalysis_NoUnitsFound": "서버에서 SonarQube 단위 목록을 검색할 수 없습니다.", + "loc.messages.sqAnalysis_NoReportTask": "report-task.txt를 찾을 수 없습니다. 예상 원인: SonarQube 분석이 완료되지 않았습니다.", + "loc.messages.sqAnalysis_MultipleReportTasks": "여러 report-task.txt 파일을 찾았습니다. 첫 번째 파일을 선택합니다. 빌드 요약 및 빌드 분리기가 정확하지 않을 수 있습니다. 예상 원인: 동일한 빌드 중에 SonarQube를 여러 번 분석할 수 없습니다.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s이(가) 위반 %d개를 %d개 파일에서 찾았습니다.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s이(가) 위반 %d개를 1개 파일에서 찾았습니다.", + "loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s이(가) 위반 1개를 1개 파일에서 찾았습니다.", + "loc.messages.codeAnalysisBuildSummaryLine_NoViolations": "%s이(가) 위반을 찾을 수 없습니다.", + "loc.messages.codeAnalysisBuildSummaryTitle": "코드 분석 보고서", + "loc.messages.codeAnalysisArtifactSummaryTitle": "코드 분석 결과", + "loc.messages.codeAnalysisDisabled": "빌드 환경 외부에서 코드 분석을 사용하지 않도록 설정되어 있습니다. %s에 대한 값을 찾을 수 없습니다.", + "loc.messages.LocateJVMBasedOnVersionAndArch": "Java %s %s에 대해 JAVA_HOME 찾기", + "loc.messages.UnsupportedJdkWarning": "JDK 9 및 JDK 10은 지원되지 않습니다. 프로젝트 및 파이프라인에서 최신 버전으로 전환하세요. JDK 11을 사용하여 빌드를 시도하는 중...", + "loc.messages.FailedToLocateSpecifiedJVM": "지정한 JDK 버전을 찾지 못했습니다. 지정한 JDK 버전이 에이전트에 설치되어 있으며 환경 변수 '%s'이(가) 있고 해당 JDK의 위치로 설정되었는지 확인하거나, [Java 도구 설치 관리자](https://go.microsoft.com/fwlink/?linkid=875287) 작업을 사용하여 원하는 JDK를 설치하세요.", + "loc.messages.InvalidBuildFile": "잘못되거나 지원되지 않는 빌드 파일입니다.", + "loc.messages.FileNotFound": "파일 또는 폴더가 없음: %s", + "loc.messages.NoTestResults": "%s과(와) 일치하는 테스트 결과 파일을 찾을 수 없으므로 JUnit 테스트 결과 게시를 건너뜁니다.", + "loc.messages.chmodGradlew": "gradlew 파일을 실행 가능하게 만들기 위해 'chmod' 메소드를 사용했습니다." +} \ No newline at end of file diff --git a/Tasks/GradleV4/Strings/resources.resjson/ru-RU/resources.resjson b/Tasks/GradleV4/Strings/resources.resjson/ru-RU/resources.resjson new file mode 100644 index 000000000000..06fe1e6a18ba --- /dev/null +++ b/Tasks/GradleV4/Strings/resources.resjson/ru-RU/resources.resjson @@ -0,0 +1,85 @@ +{ + "loc.friendlyName": "Gradle", + "loc.helpMarkDown": "[См. дополнительные сведения об этой задаче](https://go.microsoft.com/fwlink/?LinkID=613720) или [документацию по Gradle](https://docs.gradle.org/current/userguide/userguide.html)", + "loc.description": "Сборка с помощью скрипта программы-оболочки Gradle", + "loc.instanceNameFormat": "gradlew $(tasks)", + "loc.releaseNotes": "Конфигурация анализа SonarQube перемещена в расширения [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) или [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) в задаче \"Подготовка конфигурации анализа\"", + "loc.group.displayName.junitTestResults": "Результаты теста JUnit", + "loc.group.displayName.advanced": "Дополнительно", + "loc.group.displayName.CodeAnalysis": "Code Analysis", + "loc.input.label.wrapperScript": "Программа-оболочка Gradle", + "loc.input.help.wrapperScript": "Относительный путь от корня репозитория к скрипту оболочки Gradle.", + "loc.input.label.cwd": "Рабочий каталог", + "loc.input.help.cwd": "Рабочий каталог, в котором должна выполняться сборка Gradle. Если он не задан, используется корневой каталог репозитория.", + "loc.input.label.options": "Параметры", + "loc.input.label.tasks": "Задачи", + "loc.input.label.publishJUnitResults": "Опубликовать в Azure Pipelines", + "loc.input.help.publishJUnitResults": "Выберите этот параметр, чтобы опубликовать результаты теста JUnit, созданные сборкой Gradle, в Azure Pipelines. Каждый файл результатов теста, соответствующий запросу \"Файлы результатов тестов\", будет опубликован как тестовый запуск в Azure Pipelines.", + "loc.input.label.testResultsFiles": "Файлы результатов теста", + "loc.input.help.testResultsFiles": "Путь к файлам результатов тестов. Можно использовать подстановочные знаки ([дополнительные сведения](https://go.microsoft.com/fwlink/?linkid=856077)). Пример: \"**/TEST-*.xml\" для всех XML-файлов, имена которых начинаются с \"TEST-\".", + "loc.input.label.testRunTitle": "Название тестового запуска", + "loc.input.help.testRunTitle": "Укажите имя для тестового запуска.", + "loc.input.label.javaHomeSelection": "Установка JAVA_HOME с помощью", + "loc.input.help.javaHomeSelection": "Задается JAVA_HOME указанием версии JDK, которая будет обнаруживаться во время сборок, или указанием пути к JDK вручную.", + "loc.input.label.jdkVersion": "Версия JDK", + "loc.input.help.jdkVersion": "Пытается определить путь к выбранной версии JDK и установить переменную JAVA_HOME соответствующим образом.", + "loc.input.label.jdkUserInputPath": "Путь к JDK", + "loc.input.help.jdkUserInputPath": "Установка для JAVA_HOME определенного пути.", + "loc.input.label.jdkArchitecture": "Архитектура JDK", + "loc.input.help.jdkArchitecture": "Дополнительно укажите архитектуру JDK (x86, x64).", + "loc.input.label.gradleOpts": "Задать GRADLE_OPTS", + "loc.input.help.gradleOpts": "Задает переменную среды GRADLE_OPTS, которая используется для отправки аргументов командной строки, запускающих JVM. Флаг xmx указывает максимальный объем памяти, доступный JVM.", + "loc.input.label.sqAnalysisEnabled": "Запустить анализ SonarQube или SonarCloud", + "loc.input.help.sqAnalysisEnabled": "Этот параметр был изменен с версии 1 задачи **Gradle** для использования расширений Marketplace [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) и [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud). Включите его, чтобы запустить [анализ SonarQube или SonarCloud](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html) после выполнения задач в поле **Задачи**. Также необходимо добавить задачу **Подготовить конфигурацию анализа** из одного из расширений в конвейер сборки перед этой задачей Gradle.", + "loc.input.label.sqGradlePluginVersionChoice": "Версия сканера SonarQube для Gradle", + "loc.input.help.sqGradlePluginVersionChoice": "Используемая версия подключаемого модуля SonarQube Gradle. Ее можно объявить в файле конфигурации Gradle или указать здесь.", + "loc.input.label.sqGradlePluginVersion": "Версия подключаемого модуля сканера SonarQube для Gradle", + "loc.input.help.sqGradlePluginVersion": "Список всех доступных версий: https://plugins.gradle.org/plugin/org.sonarqube.", + "loc.input.label.checkstyleAnalysisEnabled": "Запустить Checkstyle", + "loc.input.help.checkstyleAnalysisEnabled": "Запустите средство Checkstyle с проверками Sun по умолчанию. Результаты передаются как артефакты сборки.", + "loc.input.label.findbugsAnalysisEnabled": "Запустить FindBugs", + "loc.input.help.findbugsAnalysisEnabled": "Используйте средство статического анализа FindBugs для поиска ошибок в коде. Результаты отправляются в виде артефактов сборки. Из Gradle 6.0 этот подключаемый модуль удален. Используйте подключаемый модуль SpotBugs вместо него. [Подробнее](https://docs.gradle.org/current/userguide/upgrading_version_5.html#the_findbugs_plugin_has_been_removed)", + "loc.input.label.pmdAnalysisEnabled": "Запустить PMD", + "loc.input.help.pmdAnalysisEnabled": "Используйте средство статического анализа Java PMD для поиска ошибок в коде. Результаты передаются как артефакты сборки.", + "loc.input.label.spotBugsAnalysisEnabled": "Запустить SpotBugs", + "loc.input.help.spotBugsAnalysisEnabled": "Включите этот параметр, чтобы запустить SpotBugs. Этот подключаемый модуль работает с Gradle 5.6 или более поздней версии. [Подробнее](https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)", + "loc.input.label.spotBugsGradlePluginVersionChoice": "Версия подключаемого модуля SpotBugs", + "loc.input.help.spotBugsGradlePluginVersionChoice": "Используемая версия подключаемого модуля SpotBugs Gradle. Ее можно объявить в файле конфигурации Gradle или указать здесь.", + "loc.input.label.spotbugsGradlePluginVersion": "Номер версии", + "loc.input.help.spotbugsGradlePluginVersion": "Список всех доступных версий приведен на странице https://plugins.gradle.org/plugin/com.github.spotbugs.", + "loc.messages.sqCommon_CreateTaskReport_MissingField": "Не удалось создать объект TaskReport. Отсутствует поле: %s", + "loc.messages.sqCommon_WaitingForAnalysis": "Ожидание анализа сборки сервером SonarQube.", + "loc.messages.sqCommon_NotWaitingForAnalysis": "Для сборки не настроено ожидание анализа SonarQube. Подробные данные о состоянии шлюза качества будут недоступны.", + "loc.messages.sqCommon_QualityGateStatusUnknown": "Не удалось обнаружить состояние шлюза качества или представлено новое состояние.", + "loc.messages.sqCommon_InvalidResponseFromServer": "Недопустимый или непредвиденный формат ответа сервера.", + "loc.messages.codeAnalysis_ToolIsEnabled": "Анализ %s включен.", + "loc.messages.codeAnalysis_ToolFailed": "Сбой анализа %s.", + "loc.messages.sqAnalysis_IncrementalMode": "Обнаружена сборка PR — анализ SonarQube выполняется в инкрементном режиме", + "loc.messages.sqAnalysis_BuildSummaryTitle": "Отчет об анализе SonarQube", + "loc.messages.sqAnalysis_TaskReportInvalid": "Отчет о задаче недопустим или отсутствует. Убедитесь в том, что работа SonarQube завершена успешно.", + "loc.messages.sqAnalysis_BuildSummary_LinkText": "Подробный отчет SonarQube", + "loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate": "Не удается пройти проверку подлинности на сервере SonarQube. Проверьте сохраненные сведения о подключении к службе и состояние сервера.", + "loc.messages.sqAnalysis_AnalysisTimeout": "Анализ не выполнен в течение отведенного времени (%d с).", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary": "Сборка запроса на вытягивание: подробная сводка по сборке SonarQube будет недоступна.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker": "Сборка запроса на вытягивание: сборка не будет нарушена в случае сбоя шлюза качества.", + "loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure": "Сбой шлюза качества SonarQube, связанного с этой сборкой.", + "loc.messages.sqAnalysis_QualityGatePassed": "Шлюз качества SonarQube, связанный с этой сборкой, передал состояние \"%s\".", + "loc.messages.sqAnalysis_UnknownComparatorString": "Обнаружена ошибка в сводке по сборке SonarQube: неизвестный блок сравнения \"%s\".", + "loc.messages.sqAnalysis_NoUnitsFound": "Не удается получить список единиц измерения SonarQube с сервера.", + "loc.messages.sqAnalysis_NoReportTask": "Не удалось найти файл report-task.txt. Возможная причина: анализ SonarQube не был успешно завершен.", + "loc.messages.sqAnalysis_MultipleReportTasks": "Обнаружено несколько файлов report-task.txt. Будет выбран первый из них. Сводка по сборке и причина прерывания сборки могут оказаться неточными. Возможная причина: в одной и той же сборке запущено несколько экземпляров анализа SonarQube, что не поддерживается.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s обнаружил нарушения (%d) в файлах (%d).", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s обнаружил нарушения (%d) в одном файле.", + "loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s обнаружил одно нарушение в одном файле.", + "loc.messages.codeAnalysisBuildSummaryLine_NoViolations": "%s не обнаружил нарушений.", + "loc.messages.codeAnalysisBuildSummaryTitle": "Отчет по Code Analysis", + "loc.messages.codeAnalysisArtifactSummaryTitle": "Результаты Code Analysis", + "loc.messages.codeAnalysisDisabled": "Анализ кода отключен вне среды сборки. Не удалось найти значение: %s", + "loc.messages.LocateJVMBasedOnVersionAndArch": "Найдите JAVA_HOME для Java %s %s", + "loc.messages.UnsupportedJdkWarning": "Поддержка JDK 9 и JDK 10 прекращена. Переключитесь на более позднюю версию в проекте и конвейере. Выполняется попытка сборки с помощью JDK 11...", + "loc.messages.FailedToLocateSpecifiedJVM": "Не удалось найти указанную версию JDK. Убедитесь в том, что указанная версия JDK установлена в агенте и что переменная среды \"%s\" существует и ее значением является расположение соответствующего пакета JDK, или используйте [установщик средств Java] (https://go.microsoft.com/fwlink/?linkid=875287), чтобы установить требуемую версию JDK.", + "loc.messages.InvalidBuildFile": "Файл сборки недопустим или не поддерживается", + "loc.messages.FileNotFound": "Файл или папка не существует: %s", + "loc.messages.NoTestResults": "Не найдены файлы результатов теста, соответствующие \"%s\". Публикация результатов теста JUnit пропускается.", + "loc.messages.chmodGradlew": "Использован метод \"chmod\" для файла gradlew, чтобы сделать его исполняемым." +} \ No newline at end of file diff --git a/Tasks/GradleV4/Strings/resources.resjson/zh-CN/resources.resjson b/Tasks/GradleV4/Strings/resources.resjson/zh-CN/resources.resjson new file mode 100644 index 000000000000..0946d1cf3b35 --- /dev/null +++ b/Tasks/GradleV4/Strings/resources.resjson/zh-CN/resources.resjson @@ -0,0 +1,85 @@ +{ + "loc.friendlyName": "Gradle", + "loc.helpMarkDown": "[详细了解此任务](https://go.microsoft.com/fwlink/?LinkID=613720)或[参阅 Gradle 文档](https://docs.gradle.org/current/userguide/userguide.html)", + "loc.description": "使用 Gradle 包装器脚本生成", + "loc.instanceNameFormat": "gradlew $(tasks)", + "loc.releaseNotes": "在“准备分析配置”任务中,已将 SonarQube 分析的配置移至 [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube)或 [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud)扩展", + "loc.group.displayName.junitTestResults": "JUnit 测试结果", + "loc.group.displayName.advanced": "高级", + "loc.group.displayName.CodeAnalysis": "代码分析", + "loc.input.label.wrapperScript": "Gradle 包装器", + "loc.input.help.wrapperScript": "从存储库根路径到“Gradle 包装器脚本”的相对路径。", + "loc.input.label.cwd": "工作目录", + "loc.input.help.cwd": "要在其中运行 Gradle 生成的工作目录。若未指定,则使用存储库根路径。", + "loc.input.label.options": "选项", + "loc.input.label.tasks": "任务", + "loc.input.label.publishJUnitResults": "发布到 Azure Pipelines", + "loc.input.help.publishJUnitResults": "选择此选项可将 Gradle 生成产生的 JUnit 测试结果发布到 Azure Pipelines。每个与 `Test Results Files` 匹配的测试结果文件都会在 Azure Pipelines 中发布为测试运行。", + "loc.input.label.testResultsFiles": "测试结果文件", + "loc.input.help.testResultsFiles": "测试结果文件路径。可以使用通配符([详细信息](https://go.microsoft.com/fwlink/?linkid=856077))。例如,\"**/TEST-*.xml\" 表示名称以 TEST- 开头的所有 xml 文件。", + "loc.input.label.testRunTitle": "测试运行标题", + "loc.input.help.testRunTitle": "为测试运行提供一个名称。", + "loc.input.label.javaHomeSelection": "JAVA_HOME 设置方法", + "loc.input.help.javaHomeSelection": "可通过选择将在生成期间发现的 JDK 版本或手动输入 JDK 路径来设置 JAVA_HOME。", + "loc.input.label.jdkVersion": "JDK 版本", + "loc.input.help.jdkVersion": "将尝试发现所选 JDK 版本的路径并相应地设置 JAVA_HOME。", + "loc.input.label.jdkUserInputPath": "JDK 路径", + "loc.input.help.jdkUserInputPath": "将 JAVA_HOME 设置到给定路径。", + "loc.input.label.jdkArchitecture": "JDK 体系结构", + "loc.input.help.jdkArchitecture": "可以选择提供 JDK 的体系结构(x86、x64)。", + "loc.input.label.gradleOpts": "设置 GRADLE_OPTS", + "loc.input.help.gradleOpts": "设置 GRADLE_OPTS 环境变量,此变量将用于发送命令行参数以启动 JVM。xmx 标志将指定 JVM 可用的最大内存。", + "loc.input.label.sqAnalysisEnabled": "运行 SonarQube 或 SonarCloud 分析", + "loc.input.help.sqAnalysisEnabled": "此选项已从 **Gradle** 任务的版本 1 更改为使用[SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube)和[SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud)市场扩展。执行“任务”字段中的任务后,启用此选项来运行[SonarQube 或 SonarCloud 分析](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html)。还必须在此 Gradle 任务之前从生成管道的其中一个扩展添加“准备分析配置”任务。", + "loc.input.label.sqGradlePluginVersionChoice": "Gradle 版本的 SonarQube 扫描仪", + "loc.input.help.sqGradlePluginVersionChoice": "要使用的 SonarQube Gradle 插件版本。可以在 Gradle 配置文件中对它进行声明或在此处指定版本。", + "loc.input.label.sqGradlePluginVersion": "Gradle 插件版本的 SonarQube 扫描仪", + "loc.input.help.sqGradlePluginVersion": "有关所有可用版本,请参阅 https://plugins.gradle.org/plugin/org.sonarqube。", + "loc.input.label.checkstyleAnalysisEnabled": "运行 Checkstyle", + "loc.input.help.checkstyleAnalysisEnabled": "使用默认 Sun 检查运行 Checkstyle 工具。将结果上传为生成项目。", + "loc.input.label.findbugsAnalysisEnabled": "运行 FindBugs", + "loc.input.help.findbugsAnalysisEnabled": "使用 FindBugs 静态分析工具查找代码中的 bug。结果将作为构建项目上传。在 Gradle 6.0 中,已删除此插件。请改为使用 spotbugs 插件。[详细信息](https://docs.gradle.org/current/userguide/upgrading_version_5.html#the_findbugs_plugin_has_been_removed)", + "loc.input.label.pmdAnalysisEnabled": "运行 PMD", + "loc.input.help.pmdAnalysisEnabled": "使用 PMD Java 静态分析工具查找代码中的 bug。将结果上传为生成项目。", + "loc.input.label.spotBugsAnalysisEnabled": "运行 SpotBugs", + "loc.input.help.spotBugsAnalysisEnabled": "启用此选项以运行 spotBugs。此插件适用于 Gradle v5.6 或更高版本。[详细信息](https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)", + "loc.input.label.spotBugsGradlePluginVersionChoice": "Spotbugs 插件版本", + "loc.input.help.spotBugsGradlePluginVersionChoice": "要使用的 Spotbugs Gradle 插件版本。可以在 Gradle 配置文件中对其作出声明,或在此处指定版本。", + "loc.input.label.spotbugsGradlePluginVersion": "版本号", + "loc.input.help.spotbugsGradlePluginVersion": "请参阅 https://plugins.gradle.org/plugin/com.github.spotbugs 以了解所有可用版本。", + "loc.messages.sqCommon_CreateTaskReport_MissingField": "未能创建 TaskReport 对象。缺少字段: %s", + "loc.messages.sqCommon_WaitingForAnalysis": "正在等待 SonarQube 服务器分析生成。", + "loc.messages.sqCommon_NotWaitingForAnalysis": "生成未配置等待 SonarQube 分析。详细的质量检验关状态不可用。", + "loc.messages.sqCommon_QualityGateStatusUnknown": "无法检测质量检验关状态,或已引入新的状态。", + "loc.messages.sqCommon_InvalidResponseFromServer": "从服务器返回了无效的或意外的响应格式。", + "loc.messages.codeAnalysis_ToolIsEnabled": "%s 分析已启用。", + "loc.messages.codeAnalysis_ToolFailed": "%s 分析失败。", + "loc.messages.sqAnalysis_IncrementalMode": "检测到 PR 生成 - 在增量模式下运行 SonarQube 分析", + "loc.messages.sqAnalysis_BuildSummaryTitle": "SonarQube 分析报表", + "loc.messages.sqAnalysis_TaskReportInvalid": "任务报表无效或丢失。请检查 SonarQube 是否成功完成。", + "loc.messages.sqAnalysis_BuildSummary_LinkText": "详细的 SonarQube 报表", + "loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate": "无法对 SonarQube 服务器进行验证。请查看已保存的服务连接详细信息和该服务器的状态。", + "loc.messages.sqAnalysis_AnalysisTimeout": "未在分配的时间(%d 秒)内完成分析。", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary": "拉取请求生成: 详细的 SonarQube 生成摘要不可用。", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker": "拉取请求生成: 生成不会因质量检验关问题而断开。", + "loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure": "与此生成关联的 SonarQube 质量检验关出现问题。", + "loc.messages.sqAnalysis_QualityGatePassed": "已通过与此生成关联的 SonarQube 质量检验关(状态 %s)", + "loc.messages.sqAnalysis_UnknownComparatorString": "SonarQube 生成摘要遇到了问题: 未知的比较运算符“%s”", + "loc.messages.sqAnalysis_NoUnitsFound": "无法从服务器检索 SonarQube 度量单位列表。", + "loc.messages.sqAnalysis_NoReportTask": "无法找到 report-task.txt。可能的原因: SonarQube 分析未成功完成。", + "loc.messages.sqAnalysis_MultipleReportTasks": "找到了多个 report-task.txt 文件。选择第一个文件。生成摘要和生成断裂可能不正确。可能的原因: 同一生成中存在多个 SonarQube 分析,这种情况不受支持。", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s 发现 %d 个冲突存在于 %d 个文件中。", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s 发现 %d 个冲突存在于 1 个文件中。", + "loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s 发现 1 个冲突存在于 1 个文件中。", + "loc.messages.codeAnalysisBuildSummaryLine_NoViolations": "%s 未发现任何冲突。", + "loc.messages.codeAnalysisBuildSummaryTitle": "代码分析报告", + "loc.messages.codeAnalysisArtifactSummaryTitle": "代码分析结果", + "loc.messages.codeAnalysisDisabled": "代码分析在生成环境外被禁用。无法找到 %s 的值", + "loc.messages.LocateJVMBasedOnVersionAndArch": "为 Java %s %s 查找 JAVA_HOME", + "loc.messages.UnsupportedJdkWarning": "JDK 9 和 JDK 10 不受支持。请切换到项目和管道中的更高版本。正在尝试使用 JDK 11 进行生成...", + "loc.messages.FailedToLocateSpecifiedJVM": "未能找到指定的 JDK 版本。请确保代理上安装了指定的 JDK 版本,环境变量“%s”存在并设置为对应 JDK 的位置或使用[Java 工具安装程序](https://go.microsoft.com/fwlink/?linkid=875287)任务安装所需 JDK。", + "loc.messages.InvalidBuildFile": "生成文件无效或不受支持", + "loc.messages.FileNotFound": "文件或文件夹不存在: %s", + "loc.messages.NoTestResults": "未找到匹配 %s 的测试结果文件,因此将跳过发布 JUnit 测试结果。", + "loc.messages.chmodGradlew": "对 gradlew 文件使用 “chmod” 方法以使其可执行。" +} \ No newline at end of file diff --git a/Tasks/GradleV4/Strings/resources.resjson/zh-TW/resources.resjson b/Tasks/GradleV4/Strings/resources.resjson/zh-TW/resources.resjson new file mode 100644 index 000000000000..d002c058671d --- /dev/null +++ b/Tasks/GradleV4/Strings/resources.resjson/zh-TW/resources.resjson @@ -0,0 +1,85 @@ +{ + "loc.friendlyName": "Gradle", + "loc.helpMarkDown": "[深入了解此工作](https://go.microsoft.com/fwlink/?LinkID=613720)或[參閱 Gradle 文件](https://docs.gradle.org/current/userguide/userguide.html)", + "loc.description": "使用 Gradle 包裝函式指令碼來建置", + "loc.instanceNameFormat": "gradlew $(tasks)", + "loc.releaseNotes": "SonarQube 分析的設定已移至 [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) 或 [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) 延伸模組,位於 `Prepare Analysis Configuration` 工作中", + "loc.group.displayName.junitTestResults": "JUnit 測試結果", + "loc.group.displayName.advanced": "進階", + "loc.group.displayName.CodeAnalysis": "Code Analysis", + "loc.input.label.wrapperScript": "Gradle 包裝函式", + "loc.input.help.wrapperScript": "從存放庫根路徑到 Gradle 包裝函式指令碼的相對路徑。", + "loc.input.label.cwd": "工作目錄", + "loc.input.help.cwd": "在其中執行 Gradle 組建的工作目錄。未指定時,會使用儲存機制根路徑。", + "loc.input.label.options": "選項", + "loc.input.label.tasks": "工作", + "loc.input.label.publishJUnitResults": "發佈至 Azure Pipelines", + "loc.input.help.publishJUnitResults": "選取此選項會將 Gradle 組建所產生的 JUnit 測試結果發佈至 Azure Pipelines。每個與 `Test Results Files` 相符的測試結果檔案都將作為測試回合於 Azure Pipelines中發佈。", + "loc.input.label.testResultsFiles": "測試結果檔案", + "loc.input.help.testResultsFiles": "測試結果檔案路徑。可使用萬用字元 ([詳細資訊](https://go.microsoft.com/fwlink/?linkid=856077))。例如 `**/TEST-*.xml` 表示名稱開頭為 TEST- 的所有 XML 檔案。", + "loc.input.label.testRunTitle": "測試回合標題", + "loc.input.help.testRunTitle": "提供測試回合的名稱。", + "loc.input.label.javaHomeSelection": "設定 JAVA_HOME 由", + "loc.input.help.javaHomeSelection": "選取一個能在組建期間探索到的 JDK 版本,或者手動輸入 JDK 路徑,均能為 JAVA_HOME 進行設定。", + "loc.input.label.jdkVersion": "JDK 版本", + "loc.input.help.jdkVersion": "將嘗試探索所選取 JDK 版本的路徑,並據此設定 JAVA_HOME。", + "loc.input.label.jdkUserInputPath": "JDK 路徑", + "loc.input.help.jdkUserInputPath": "將 JAVA_HOME 設定為指定路徑。", + "loc.input.label.jdkArchitecture": "JDK 架構", + "loc.input.help.jdkArchitecture": "選擇性地提供 JDK 的架構 (x86、x64)。", + "loc.input.label.gradleOpts": "設定 GRADLE_OPTS", + "loc.input.help.gradleOpts": "設定 GRADLE_OPTS 環境變數,用以傳送命令列引數以啟動 JVM。xmx 旗標會指定 JVM 可用的記憶體上限。", + "loc.input.label.sqAnalysisEnabled": "執行 SonarQube 或 SonarCloud 分析", + "loc.input.help.sqAnalysisEnabled": "此選項已從 **Gradle** 工作的版本 1 變更為使用 [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) 和 [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) 市集延伸模組。請在 [工作]**** 欄位執行工作後啟用此選項來執行 [SonarQube 或 SonarCloud 分析](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html)。您也必須在此 Gradle 工作之前,從其中一個延伸模組將 [準備分析組態]**** 工作新增至組建管線。", + "loc.input.label.sqGradlePluginVersionChoice": "適用於 Gradle 的 SonarQube 掃描器版本", + "loc.input.help.sqGradlePluginVersionChoice": "要使用的 SonarQube Gradle 外掛程式版本。您可於 Gradle 組態檔中加以宣告,或於此處指定版本。", + "loc.input.label.sqGradlePluginVersion": "適用於 Gradle 外掛程式的 SonarQube 掃描器版本", + "loc.input.help.sqGradlePluginVersion": "如需查看所有可用的版本,請參閱 https://plugins.gradle.org/plugin/org.sonarqube。", + "loc.input.label.checkstyleAnalysisEnabled": "執行 Checkstyle", + "loc.input.help.checkstyleAnalysisEnabled": "請以預設 Sun 檢查執行 Checkstyle 工具。結果會上傳成組建成品。", + "loc.input.label.findbugsAnalysisEnabled": "執行 FindBugs", + "loc.input.help.findbugsAnalysisEnabled": "使用 FindBugs 靜態分析工具,在程式碼中尋找錯誤。系統會將結果上傳為組建成品。在 Gradle 6.0 中已移除此外掛程式。請改用 spotbugs 外掛程式。[詳細資訊] (https://docs.gradle.org/current/userguide/upgrading_version_5.html#the_findbugs_plugin_has_been_removed)", + "loc.input.label.pmdAnalysisEnabled": "執行 PMD", + "loc.input.help.pmdAnalysisEnabled": "使用 PMD Java 靜態分析工具尋找程式碼中的錯誤。結果會上傳成組建成品。", + "loc.input.label.spotBugsAnalysisEnabled": "執行 SpotBugs", + "loc.input.help.spotBugsAnalysisEnabled": "啟用此選項可執行 spotBugs。此外掛程式適用於 Gradle v5.6 或更新版本。[詳細資訊] (https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)", + "loc.input.label.spotBugsGradlePluginVersionChoice": "Spotbugs 外掛程式版本", + "loc.input.help.spotBugsGradlePluginVersionChoice": "要使用的 Spotbugs Gradle 外掛程式版本。您可於 Gradle 組態檔中加以宣告,或於此處指定版本。", + "loc.input.label.spotbugsGradlePluginVersion": "版本號碼", + "loc.input.help.spotbugsGradlePluginVersion": "如需所有可用的版本,請參閱 https://plugins.gradle.org/plugin/com.github.spotbugs。", + "loc.messages.sqCommon_CreateTaskReport_MissingField": "無法建立 TaskReport 物件。遺漏欄位: %s", + "loc.messages.sqCommon_WaitingForAnalysis": "正在等候 SonarQube 伺服器分析組建。", + "loc.messages.sqCommon_NotWaitingForAnalysis": "組建未設定為等待 SonarQube 分析。將無法使用詳細的品質閘門狀態。", + "loc.messages.sqCommon_QualityGateStatusUnknown": "無法偵測品質閘門狀態或是已引進新狀態。", + "loc.messages.sqCommon_InvalidResponseFromServer": "伺服器以無效或未預期的回應格式回應。", + "loc.messages.codeAnalysis_ToolIsEnabled": "已啟用 %s 分析。", + "loc.messages.codeAnalysis_ToolFailed": "%s 分析失敗。", + "loc.messages.sqAnalysis_IncrementalMode": "偵測到 PR 組建 - 正在以累加模式執行 SonarQube 分析", + "loc.messages.sqAnalysis_BuildSummaryTitle": "SonarQube 分析報表", + "loc.messages.sqAnalysis_TaskReportInvalid": "任務報表無效或遺漏。檢查 SonarQube 已順利完成。", + "loc.messages.sqAnalysis_BuildSummary_LinkText": "詳細 SonarQube 報表", + "loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate": "無法向 SonarQube 伺服器驗證。請檢查所儲存的服務連線詳細資料及伺服器的狀態。", + "loc.messages.sqAnalysis_AnalysisTimeout": "分析未在分配的時間 %d 秒內完成。", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary": "提取要求組建: 將無法取得詳細的 SonarQube 組建摘要。", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker": "提取要求組建: 如果品質閘道失敗,組建並不會中斷。", + "loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure": "與此組建建立關聯的 SonarQube 品質閘道已失敗。", + "loc.messages.sqAnalysis_QualityGatePassed": "與此組建建立關聯的 SonarQube 品質閘道已通過 (狀態 %s)", + "loc.messages.sqAnalysis_UnknownComparatorString": "SonarQube 組建摘要發生問題: 不明的比較子 '%s'", + "loc.messages.sqAnalysis_NoUnitsFound": "無法從伺服器擷取 SonarQube 度量單位清單。", + "loc.messages.sqAnalysis_NoReportTask": "找不到 report-task.txt。可能的原因: SonarQube 分析未成功完成。", + "loc.messages.sqAnalysis_MultipleReportTasks": "找到多個 report-task.txt 檔案。請選擇第一個。組建摘要及組建分隔可能不準確。可能的原因: 相同組建期間有多個 SonarQube分析,此情況不受支援。", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s 發現 %d 個違規 (在 %d 個檔案中)。", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s 在 1 個檔案中發現 %d 個違規。", + "loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s 在 1 個檔案中發現 1 個違規。", + "loc.messages.codeAnalysisBuildSummaryLine_NoViolations": "%s 找不到任何違規。", + "loc.messages.codeAnalysisBuildSummaryTitle": "Code Analysis 報告", + "loc.messages.codeAnalysisArtifactSummaryTitle": "Code Analysis 結果", + "loc.messages.codeAnalysisDisabled": "已停用於組建環境外進行程式碼分析。找不到 %s 的值", + "loc.messages.LocateJVMBasedOnVersionAndArch": "為 Java %s %s 找出 JAVA_HOME 的位置", + "loc.messages.UnsupportedJdkWarning": "JDK 9 與 JDK 10 已失去支援。請在您的專案和管線中切換至較新版本。正在嘗試以 JDK 11 進行建置...", + "loc.messages.FailedToLocateSpecifiedJVM": "找不到指定的 JDK 版本。請確認指定的 JDK 版本已安裝在代理程式上,且環境變數 '%s' 存在並已設定為對應 JDK 的位置,或者使用 [Java 工具安裝程式](https://go.microsoft.com/fwlink/?linkid=875287) 工作安裝所需的 JDK。", + "loc.messages.InvalidBuildFile": "組建檔案無效或不受支援", + "loc.messages.FileNotFound": "檔案或資料夾不存在: %s", + "loc.messages.NoTestResults": "找不到任何符合 %s 的測試結果,因此跳過發行 JUnit 測試結果。", + "loc.messages.chmodGradlew": "使用 'chmod' 方法將 gradlew 檔案設為可執行檔。" +} \ No newline at end of file diff --git a/Tasks/GradleV4/Tests/.npmrc b/Tasks/GradleV4/Tests/.npmrc new file mode 100644 index 000000000000..969ccea07661 --- /dev/null +++ b/Tasks/GradleV4/Tests/.npmrc @@ -0,0 +1,3 @@ +registry=https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ + +always-auth=true \ No newline at end of file diff --git a/Tasks/GradleV4/Tests/L0.ts b/Tasks/GradleV4/Tests/L0.ts new file mode 100644 index 000000000000..2937620263f1 --- /dev/null +++ b/Tasks/GradleV4/Tests/L0.ts @@ -0,0 +1,784 @@ +import assert = require('assert'); +import path = require('path'); +import os = require('os'); +import process = require('process'); +import fs = require('fs'); + +import * as ttm from 'azure-pipelines-task-lib/mock-test'; + +import { BuildOutput, BuildEngine } from 'azure-pipelines-tasks-codeanalysis-common/Common/BuildOutput'; +import { PmdTool } from 'azure-pipelines-tasks-codeanalysis-common/Common/PmdTool'; +import { CheckstyleTool } from 'azure-pipelines-tasks-codeanalysis-common/Common/CheckstyleTool'; +import { FindbugsTool } from 'azure-pipelines-tasks-codeanalysis-common/Common/FindbugsTool'; +import { AnalysisResult } from 'azure-pipelines-tasks-codeanalysis-common/Common/AnalysisResult'; +import { extractGradleVersion } from '../Modules/environment'; + +// need to detect current dir (e.g. for Node20 it will be GradleV4_Node20\Tests) +// __dirname - Current Dir(GradleV4\Tests) +const gradleFolder = path.basename(path.join(__dirname, '..')) + +let isWindows: RegExpMatchArray = os.type().match(/^Win/); +let gradleWrapper: string = isWindows ? 'gradlew.bat' : 'gradlew'; + +let gradleFile: string = `/${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/sonar.gradle`; +let checkstyleFile: string = `/${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/checkstyle.gradle`; +let findbugsFile: string = `/${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/findbugs.gradle`; +let pmdFile: string = `/${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/pmd.gradle`; +// Fix up argument paths for Windows +if (isWindows) { + gradleFile = `\\${gradleFolder}\\node_modules\\azure-pipelines-tasks-codeanalysis-common\\sonar.gradle`; + checkstyleFile = `\\${gradleFolder}\\node_modules\\azure-pipelines-tasks-codeanalysis-common\\checkstyle.gradle`; + findbugsFile = `\\${gradleFolder}\\node_modules\\azure-pipelines-tasks-codeanalysis-common\\findbugs.gradle`; + pmdFile = `\\${gradleFolder}\\node_modules\\azure-pipelines-tasks-codeanalysis-common\\pmd.gradle`; +} + + function assertFileDoesNotExistInDir(stagingDir:string, filePath:string): void { + let directoryName: string = path.dirname(path.join(stagingDir, filePath)); + let fileName: string = path.basename(filePath); + assert(fs.statSync(directoryName).isDirectory(), 'Expected directory did not exist: ' + directoryName); + let directoryContents: string[] = fs.readdirSync(directoryName); + assert(directoryContents.indexOf(fileName) === -1, `Expected file to not exist, but it does: ${filePath} Actual contents of ${directoryName}: ${directoryContents}`); +} + +function assertBuildSummaryDoesNotContain(buildSummaryString: string, str: string): void { + assert(buildSummaryString.indexOf(str) === -1, `Expected build summary to not contain: ${str} Actual: ${buildSummaryString}`); +} + +function assertCodeAnalysisBuildSummaryDoesNotContain(stagingDir: string, unexpectedString: string): void { + assertBuildSummaryDoesNotContain(fs.readFileSync(path.join(stagingDir, '.codeAnalysis', 'CodeAnalysisBuildSummary.md'), 'utf-8'), unexpectedString); +} + +function assertFileExistsInDir(stagingDir:string, filePath:string) { + let directoryName: string = path.dirname(path.join(stagingDir, filePath)); + let fileName: string = path.basename(filePath); + assert(fs.statSync(directoryName).isDirectory(), 'Expected directory did not exist: ' + directoryName); + let directoryContents: string[] = fs.readdirSync(directoryName); + assert(directoryContents.indexOf(fileName) > -1, `Expected file did not exist: ${filePath} Actual contents of ${directoryName}: ${directoryContents}`); +} + +function assertCodeAnalysisBuildSummaryContains(stagingDir: string, expectedString: string): void { + assertBuildSummaryContains(path.join(stagingDir, '.codeAnalysis', 'CodeAnalysisBuildSummary.md'), expectedString); +} + +function assertBuildSummaryContains(buildSummaryFilePath: string, expectedLine: string): void { + let buildSummaryString: string = fs.readFileSync(buildSummaryFilePath, 'utf-8'); + + assert(buildSummaryString.indexOf(expectedLine) > -1, `Expected build summary to contain: ${expectedLine} Actual: ${buildSummaryString}`); +} + +function assertSonarQubeBuildSummaryContains(stagingDir: string, expectedString: string): void { + assertBuildSummaryContains(path.join(stagingDir, '.sqAnalysis', 'SonarQubeBuildSummary.md'), expectedString); +} + +function deleteFolderRecursive(path):void { + if (fs.existsSync(path)) { + fs.readdirSync(path).forEach(function(file, index) { + let curPath: string = path + '/' + file; + if (fs.lstatSync(curPath).isDirectory()) { // recurse + deleteFolderRecursive(curPath); + } else { // delete file + fs.unlinkSync(curPath); + } + }); + fs.rmdirSync(path); + } +} + +function cleanTemporaryFolders():void { + let testTempDir: string = path.join(__dirname, '_temp'); + deleteFolderRecursive(testTempDir); +} + +function createTemporaryFolders(): void { + let testTempDir: string = path.join(__dirname, '_temp'); + let sqTempDir: string = path.join(testTempDir, '.sqAnalysis'); + + if (!fs.existsSync(testTempDir)) { + fs.mkdirSync(testTempDir); + } + + if (!fs.existsSync(sqTempDir)) { + fs.mkdirSync(sqTempDir); + } +} + +describe('Gradle L0 Suite', function () { + this.timeout(parseInt(process.env.TASK_TEST_TIMEOUT) || 20000); + + before(async () => { + process.env['ENDPOINT_AUTH_SYSTEMVSSCONNECTION'] = "{\"parameters\":{\"AccessToken\":\"token\"},\"scheme\":\"OAuth\"}"; + process.env['ENDPOINT_URL_SYSTEMVSSCONNECTION'] = "https://example.visualstudio.com/defaultcollection"; + }); + + it('run gradle with all default inputs', async () => { + let tp: string = path.join(__dirname, 'L0AllDefaultInputs.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.ran(gradleWrapper + ' build'), 'it should have run gradlew build'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.succeeded, 'task should have succeeded'); + assert(tr.stdout.indexOf('GRADLE_OPTS is now set to -Xmx2048m') > 0); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with missing wrapperScript', async () => { + let tp: string = path.join(__dirname, 'L0MissingWrapperScript.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.invokedToolCount === 0, 'should not have run gradle'); + assert(tr.stdout.length > 0, 'should have written to stdout'); + assert(tr.failed, 'task should have failed'); + assert(tr.stdout.indexOf('Input required: wrapperScript') >= 0, 'wrong error message: "' + tr.stdout + '"'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with INVALID wrapperScript', async () => { + let tp: string = path.join(__dirname, 'L0InvalidWrapperScript.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.invokedToolCount === 0, 'should not have run gradle'); + assert(tr.stdout.length > 0, 'should have written to stdout'); + assert(tr.failed, 'task should have failed'); + // /home/gradlew is from L0InvalidWrapperScript.ts + assert(tr.stdout.indexOf('Not found /home/gradlew') >= 0, 'wrong error message: "' + tr.stdout + '"'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with cwd set to valid path', async () => { + let tp: string = path.join(__dirname, 'L0ValidCwdPath.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.ran(gradleWrapper + ' build'), 'it should have run gradlew build'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.succeeded, 'task should have succeeded'); + // /home/repo/src is from L0ValidCwdPath.ts + assert(tr.stdout.indexOf('cwd=/home/repo/src') > 0); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with cwd set to INVALID path', async () => { + let tp: string = path.join(__dirname, 'L0InvalidPath.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.invokedToolCount === 0, 'should not have run gradle'); + assert(tr.stdout.length > 0, 'should have written to stdout'); + assert(tr.failed, 'task should have failed'); + // /home/repo/src2 is from L0InvalidPath.ts + assert(tr.stdout.indexOf('Not found /home/repo/src2') >= 0, 'wrong error message: "' + tr.stdout + '"'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with options set', async () => { + let tp: string = path.join(__dirname, 'L0OptionsSet.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + // ' /o /p t i /o /n /s build' is from L0OptionsSet.ts + assert(tr.ran(gradleWrapper + ' /o /p t i /o /n /s build'), 'it should have run gradlew /o /p t i /o /n /s build'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.succeeded, 'task should have succeeded'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with tasks not set', async () => { + let tp: string = path.join(__dirname, 'L0TasksNotSet.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.invokedToolCount === 0, 'should not have run gradle'); + assert(tr.stdout.length > 0, 'should have written to stdout'); + assert(tr.failed, 'task should have failed'); + assert(tr.stdout.indexOf('Input required: tasks') >= 0, 'wrong error message: "' + tr.stdout + '"'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with tasks set to multiple', async () => { + let tp: string = path.join(__dirname, 'L0MultipleTasks.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.ran(gradleWrapper + ' /o /p t i /o /n /s build test deploy'), 'it should have run gradlew /o /p t i /o /n /s build test deploy'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.succeeded, 'task should have succeeded'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with missing publishJUnitResults input', async () => { + let tp: string = path.join(__dirname, 'L0MissingPublishJUnitResultsInput.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.ran(gradleWrapper + ' build'), 'it should have run gradlew build'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.succeeded, 'task should have succeeded'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with publishJUnitResults set to "garbage"', async () => { + let tp: string = path.join(__dirname, 'L0GarbagePublishJUnitResults.js'); + let tr : ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.ran(gradleWrapper + ' build'), 'it should have run gradlew build'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.succeeded, 'task should have succeeded'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('fails if missing testResultsFiles input', async () => { + let tp: string = path.join(__dirname, 'L0MissingTestResultsFilesInput.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.invokedToolCount === 0, 'should not have run gradle'); + assert(tr.stdout.length > 0, 'should have written to stdout'); + assert(tr.failed, 'task should have failed'); + assert(tr.stdout.indexOf('Input required: testResultsFiles') >= 0, 'wrong error message: "' + tr.stdout + '"'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('fails if missing javaHomeSelection input', async () => { + let tp: string = path.join(__dirname, 'L0MissingJavaHomeSelectionInput.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.invokedToolCount === 0, 'should not have run gradle'); + assert(tr.stdout.length > 0, 'should have written to stdout'); + assert(tr.failed, 'task should have failed'); + assert(tr.stdout.indexOf('Input required: javaHomeSelection') >= 0, 'wrong error message: "' + tr.stdout + '"'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with jdkVersion set to 1.8', async () => { + let tp: string = path.join(__dirname, 'L0JDKVersion18.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.ran(gradleWrapper + ' build'), 'it should have run gradlew build'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.succeeded, 'task should have succeeded'); + assert(tr.stdout.indexOf('Set JAVA_HOME to /user/local/bin/Java8') >= 0, 'JAVA_HOME not set correctly'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with jdkVersion set to 1.5', async () => { + let tp: string = path.join(__dirname, 'L0JDKVersion15.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + if (isWindows) { + // should have run reg query toolrunner once + assert(tr.invokedToolCount === 1, 'should not have run gradle'); + } else { + assert(tr.invokedToolCount === 0, 'should not have run gradle'); + } + assert(tr.failed, 'task should have failed'); + assert(tr.stdout.indexOf('loc_mock_FailedToLocateSpecifiedJVM') >= 0, 'JAVA_HOME set?'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with Valid inputs but it fails', async () => { + let tp: string = path.join(__dirname, 'L0ValidInputsFailure.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.ran(gradleWrapper + ' build FAIL'), 'it should have run gradlew build FAIL'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length > 0, 'should have written to stderr'); + assert(tr.failed, 'task should have failed'); + assert(tr.stdout.indexOf('FAILED') >= 0, 'It should have failed'); + assert(tr.stdout.search(/##vso\[results.publish type=JUnit;mergeResults=true;publishRunAttachments=true;resultFiles=\/user\/build\/fun\/test-results\/test-123.xml;\]/) >= 0); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('Gradle build with publish test results.', async () => { + let tp: string = path.join(__dirname, 'L0PublishTestResults.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.stdout.search(/##vso\[results.publish type=JUnit;mergeResults=true;publishRunAttachments=true;resultFiles=\/user\/build\/fun\/test-123.xml;\]/) >= 0); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.succeeded, 'task should have succeeded'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('Gradle build with publish test results with no matching test result files.', async () => { + let tp: string = path.join(__dirname, 'L0PublishTestResultsNoMatchingResultFiles.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.stdout.search(/##vso\[results.publish\]/) < 0, 'publish test results should not have got called.'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.stdout.search(/NoTestResults/) >= 0, 'should have produced a verbose message.'); + assert(tr.succeeded, 'task should have succeeded'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('Gradle with SonarQube - Should run Gradle with all default inputs when SonarQube analysis disabled', async function() { + let tp: string = path.join(__dirname, 'L0SQGradleDefaultSQDisabled.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + createTemporaryFolders(); + + await tr.runAsync(); + + assert(tr.succeeded, 'task should have succeeded'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.stdout.indexOf('task.issue type=warning;') < 0, 'should not have produced any warnings'); + assert(tr.ran(gradleWrapper + ' build'), 'it should have run only the default settings'); + + cleanTemporaryFolders(); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('Gradle with SonarQube - Should run Gradle with SonarQube', async function() { + let tp: string = path.join(__dirname, 'L0SQ.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + createTemporaryFolders(); + let testStgDir: string = path.join(__dirname, '_temp'); + + await tr.runAsync(); + + assert(tr.succeeded, 'task should have succeeded'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.stdout.indexOf('task.issue type=warning;') < 0, 'should not have produced any warnings'); + assert(tr.ran(gradleWrapper + ` build -I ${gradleFile} sonarqube`), 'should have run the gradle wrapper with the appropriate SonarQube arguments'); + + cleanTemporaryFolders(); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('Single Module Gradle with Checkstyle and FindBugs and PMD', async function() { + let tp: string = path.join(__dirname, 'L0SingleModuleCheckstyleFindBugsPMD.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + createTemporaryFolders(); + + let testStgDir: string = path.join(__dirname, '_temp'); + + await tr.runAsync(); + + assert(tr.succeeded, 'task should have succeeded'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.ran(gradleWrapper + ` build -I ${checkstyleFile} -I ${findbugsFile} -I ${pmdFile}`), + 'Ran Gradle with Checkstyle and Findbugs and Pmd'); + assert(tr.stdout.indexOf('task.addattachment type=Distributedtask.Core.Summary;name=loc_mock_codeAnalysisBuildSummaryTitle') > -1, + 'should have uploaded a Code Analysis Report build summary'); + assert(tr.stdout.indexOf('artifact.upload artifactname=loc_mock_codeAnalysisArtifactSummaryTitle;') > -1, + 'should have uploaded code analysis build artifacts'); + + assertCodeAnalysisBuildSummaryContains(testStgDir, 'loc_mock_codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles'); + assertCodeAnalysisBuildSummaryContains(testStgDir, 'loc_mock_codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles'); + assertCodeAnalysisBuildSummaryContains(testStgDir, 'loc_mock_codeAnalysisBuildSummaryLine_SomeViolationsOneFile'); + + let codeAnalysisStgDir: string = path.join(testStgDir, '.codeAnalysis', 'CA'); + + // Test files were copied for module "root", build 14 + assertFileExistsInDir(codeAnalysisStgDir, '/root/14_main_Checkstyle.html'); + assertFileExistsInDir(codeAnalysisStgDir, '/root/14_main_Checkstyle.xml'); + assertFileExistsInDir(codeAnalysisStgDir, '/root/14_main_PMD.html'); + assertFileExistsInDir(codeAnalysisStgDir, '/root/14_main_PMD.xml'); + assertFileExistsInDir(codeAnalysisStgDir, '/root/14_test_Checkstyle.html'); + assertFileExistsInDir(codeAnalysisStgDir, '/root/14_test_Checkstyle.xml'); + assertFileExistsInDir(codeAnalysisStgDir, '/root/14_test_PMD.html'); + assertFileExistsInDir(codeAnalysisStgDir, '/root/14_test_PMD.xml'); + + cleanTemporaryFolders(); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('Gradle with code analysis - Only shows empty results for tools which are enabled', async function() { + let tp: string = path.join(__dirname, 'L0CAEmptyResultsEnabledTools.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + createTemporaryFolders(); + + let testStgDir: string = path.join(__dirname, '_temp'); + + await tr.runAsync(); + + assert(tr.succeeded, 'task should have succeeded'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.ran(gradleWrapper + ` build -I ${pmdFile}`), 'Ran Gradle with PMD'); + assert(tr.stdout.indexOf('task.addattachment type=Distributedtask.Core.Summary;name=loc_mock_codeAnalysisBuildSummaryTitle') > -1, + 'should have uploaded a Code Analysis Report build summary'); + + assert(tr.stdout.indexOf('artifact.upload artifactname=loc_mock_codeAnalysisArtifactSummaryTitle;') < 0, + 'should not have uploaded code analysis build artifacts'); + + assertCodeAnalysisBuildSummaryDoesNotContain(testStgDir, 'FindBugs found no violations.'); + assertCodeAnalysisBuildSummaryDoesNotContain(testStgDir, 'Checkstyle found no violations.'); + + assertCodeAnalysisBuildSummaryContains(testStgDir, 'loc_mock_codeAnalysisBuildSummaryLine_NoViolations'); + + // There were no files to be uploaded - the CA folder should not exist + let codeAnalysisStgDir: string = path.join(testStgDir, '.codeAnalysis'); + assertFileDoesNotExistInDir(codeAnalysisStgDir, 'CA'); + + cleanTemporaryFolders(); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('Gradle with code analysis - Does not upload artifacts if code analysis reports were empty', async function() { + let tp: string = path.join(__dirname, 'L0CANoUploadArtifactsIfReportsEmpty.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + createTemporaryFolders(); + + //var testSrcDir: string = path.join(__dirname, 'data', 'singlemodule-noviolations'); + let testStgDir: string = path.join(__dirname, '_temp'); + + await tr.runAsync(); + + assert(tr.stdout.length > 0, 'should have written to stdout'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.stdout.indexOf('task.issue type=warning;') < 0, 'should not have produced any warnings'); + assert(tr.succeeded, 'task should have succeeded'); + assert(tr.ran(gradleWrapper + + ` build -I ${checkstyleFile} -I ${findbugsFile} -I ${pmdFile}`), + 'should have run Gradle with code analysis tools'); + + assert(tr.stdout.indexOf('task.addattachment type=Distributedtask.Core.Summary;name=loc_mock_codeAnalysisBuildSummaryTitle') > -1, + 'should have uploaded a Code Analysis Report build summary'); + + assert(tr.stdout.indexOf('##vso[artifact.upload artifactname=loc_mock_codeAnalysisArtifactSummaryTitle;]') < 0, + 'should not have uploaded a code analysis build artifact'); + + assertCodeAnalysisBuildSummaryContains(testStgDir, 'loc_mock_codeAnalysisBuildSummaryLine_NoViolations'); + assertCodeAnalysisBuildSummaryContains(testStgDir, 'loc_mock_codeAnalysisBuildSummaryLine_NoViolations'); + assertCodeAnalysisBuildSummaryContains(testStgDir, 'loc_mock_codeAnalysisBuildSummaryLine_NoViolations'); + + // The .codeAnalysis dir should have been created to store the build summary, but not the report dirs + let codeAnalysisStgDir: string = path.join(testStgDir, '.codeAnalysis'); + assertFileDoesNotExistInDir(codeAnalysisStgDir, 'CA'); + + cleanTemporaryFolders(); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('Gradle with code analysis - Does nothing if the tools were not enabled', async function() { + let tp: string = path.join(__dirname, 'L0CANoToolsEnabled.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + //var testSrcDir: string = path.join(__dirname, 'data', 'singlemodule'); + let testStgDir: string = path.join(__dirname, '_temp'); + + createTemporaryFolders(); + + await tr.runAsync(); + + assert(tr.stdout.length > 0, 'should have written to stdout'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.stdout.indexOf('task.issue type=warning;') < 0, 'should not have produced any warnings'); + assert(tr.succeeded, 'task should have succeeded'); + assert(tr.ran(gradleWrapper + ' build'), 'it should have run gradlew build'); + assert(tr.stdout.indexOf('task.addattachment type=Distributedtask.Core.Summary;name=loc_mock_codeAnalysisBuildSummaryTitle') < 0, + 'should not have uploaded a Code Analysis Report build summary'); + assert(tr.stdout.indexOf('##vso[artifact.upload artifactname=loc_mock_codeAnalysisArtifactSummaryTitle;]') < 0, + 'should not have uploaded a code analysis build artifact'); + + // Nothing should have been created + assertFileDoesNotExistInDir(testStgDir, '.codeAnalysis'); + + cleanTemporaryFolders(); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('Multi Module Gradle with Checkstyle and FindBugs and PMD', async function() { + let tp: string = path.join(__dirname, 'L0MultiModuleCheckstyleFindBugsPMD.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + createTemporaryFolders(); + + let testStgDir: string = path.join(__dirname, '_temp'); + + await tr.runAsync(); + + assert(tr.succeeded, 'task should have succeeded'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.ran(gradleWrapper + + ` build -I ${checkstyleFile} -I ${findbugsFile} -I ${pmdFile}`), + 'should have run Gradle with code analysis tools'); + assert(tr.stdout.indexOf('task.addattachment type=Distributedtask.Core.Summary;name=loc_mock_codeAnalysisBuildSummaryTitle') > -1, + 'should have uploaded a Code Analysis Report build summary'); + assert(tr.stdout.indexOf('artifact.upload artifactname=loc_mock_codeAnalysisArtifactSummaryTitle;') > -1, + 'should have uploaded PMD build artifacts'); + + assertCodeAnalysisBuildSummaryContains(testStgDir, 'loc_mock_codeAnalysisBuildSummaryLine_SomeViolationsOneFile'); + assertCodeAnalysisBuildSummaryContains(testStgDir, 'loc_mock_codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles'); + assertCodeAnalysisBuildSummaryContains(testStgDir, 'loc_mock_codeAnalysisBuildSummaryLine_SomeViolationsOneFile'); + + let codeAnalysisStgDir: string = path.join(testStgDir, '.codeAnalysis', 'CA'); + + // Test files copied for module "module-one", build 211 + assertFileExistsInDir(codeAnalysisStgDir, 'module-one/211_main_Checkstyle.html'); + assertFileExistsInDir(codeAnalysisStgDir, 'module-one/211_main_Checkstyle.xml'); + assertFileExistsInDir(codeAnalysisStgDir, 'module-one/211_main_PMD.html'); + assertFileExistsInDir(codeAnalysisStgDir, 'module-one/211_main_PMD.xml'); + assertFileExistsInDir(codeAnalysisStgDir, 'module-one/211_test_Checkstyle.html'); + assertFileExistsInDir(codeAnalysisStgDir, 'module-one/211_test_Checkstyle.xml'); + + // Test files were copied for module "module-two", build 211 + // None - the checkstyle reports have no violations and are not uploaded + + // Test files were copied for module "module-three", build 211 + // None - the pmd reports have no violations and are not uploaded + + cleanTemporaryFolders(); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + + + // /* BEGIN Tools tests */ + function verifyModuleResult(results: AnalysisResult[], moduleName: string , expectedViolationCount: number, expectedFileCount: number, expectedReports: string[]) { + let analysisResults = results.filter(ar => ar.moduleName === moduleName); + assert(analysisResults !== null && analysisResults.length !== 0 , 'Null or empty array'); + assert(analysisResults.length === 1, 'The array does not have a single element'); + let analysisResult = analysisResults[0]; + + assert(analysisResult.affectedFileCount === expectedFileCount, `Expected ${expectedFileCount} files, actual: ${analysisResult.affectedFileCount}`); + assert(analysisResult.violationCount === expectedViolationCount, `Expected ${expectedViolationCount} violations, actual: ${analysisResult.violationCount}`); + assert(analysisResult.resultFiles.length === expectedReports.length, `Invalid number of reports`); + + for (let actualReport of analysisResult.resultFiles) { + let reportFile: string = path.basename(actualReport); + assert(expectedReports.indexOf(reportFile) > -1, 'Report not found: ' + actualReport); + } + } + + it('Checkstyle tool retrieves results', async function() { + let testSrcDir: string = path.join(__dirname, 'data', 'multimodule'); + + let buildOutput: BuildOutput = new BuildOutput(testSrcDir, BuildEngine.Gradle); + let tool = new CheckstyleTool(buildOutput, 'checkstyleAnalysisEnabled'); + tool.isEnabled = () => true; + let results: AnalysisResult[] = tool.processResults(); + + assert(results.length === 2, 'Unexpected number of results. note that module-three has no tool results '); + verifyModuleResult(results, 'module-one', 34, 2, ['main.xml', 'main.html', 'test.xml', 'test.html'] ); + verifyModuleResult(results, 'module-two', 0, 0, [] /* empty report files are not copied in */); + }); + + it('Pmd tool retrieves results', async function() { + let testSrcDir: string = path.join(__dirname, 'data', 'multimodule'); + + let buildOutput: BuildOutput = new BuildOutput(testSrcDir, BuildEngine.Gradle); + let tool = new PmdTool(buildOutput, 'checkstyleAnalysisEnabled'); + tool.isEnabled = () => true; + let results: AnalysisResult[] = tool.processResults(); + + assert(results.length === 2, 'Unexpected number of results. note that module-three has no tool results '); + verifyModuleResult(results, 'module-one', 2, 1, ['main.xml', 'main.html'] ); + verifyModuleResult(results, 'module-three', 0, 0, [] /* empty report files are not copied in */); + }); + + it('FindBugs tool retrieves results', async function() { + let testSrcDir: string = path.join(__dirname, 'data', 'multimodule'); + + let buildOutput: BuildOutput = new BuildOutput(testSrcDir, BuildEngine.Gradle); + let tool = new FindbugsTool(buildOutput, 'findbugsAnalysisEnabled'); + tool.isEnabled = () => true; + let results: AnalysisResult[] = tool.processResults(); + + assert(results.length === 1, 'Unexpected number of results. Expected 1 (only module-three has a findbugs XML), actual ' + results.length); + verifyModuleResult(results, 'module-three', 5, 1, ['main.xml'] /* empty report files are not copied in */); + }); + // /* END Tools tests */ + + it('extractGradleVersion returns correct results', async () => { + const log1: string = 'Gradle 4.0.1'; + const log2: string = 'Gradle 4.0'; + const log3: string = 'Gradle 3.5-rc-2'; + const log4: string = 'Gradle 8.5-20230916222118+0000'; + const log5: string = 'Gradle 8.5-20230916222118-0000'; + const log6: string = 'Gradle 8.4-branch-ljacomet_kotlin_kotlin_1_9_10-20230901164331+0000' + const log7: string = ''; + assert(extractGradleVersion(log1) === '4.0.1', 'extractGradleVersion should return 4.0.1'); + assert(extractGradleVersion(log2) === '4.0', 'extractGradleVersion should return 4.0'); + assert(extractGradleVersion(log3) === '3.5-rc-2', 'extractGradleVersion should return 3.5-rc-2'); + assert(extractGradleVersion(log4) === '8.5-20230916222118+0000', 'extractGradleVersion should return 8.5-20230916222118+0000'); + assert(extractGradleVersion(log5) === '8.5-20230916222118-0000', 'extractGradleVersion should return 8.5-20230916222118-0000'); + assert(extractGradleVersion(log6) === '8.4-branch-ljacomet_kotlin_kotlin_1_9_10-20230901164331+0000', 'extractGradleVersion should return 8.4-branch-ljacomet_kotlin_kotlin_1_9_10-20230901164331+0000'); + assert(extractGradleVersion(log7) === 'unknown', 'extractGradleVersion should return unknown'); + }); +}); diff --git a/Tasks/GradleV4/Tests/L0AllDefaultInputs.ts b/Tasks/GradleV4/Tests/L0AllDefaultInputs.ts new file mode 100644 index 000000000000..693408e4fc2b --- /dev/null +++ b/Tasks/GradleV4/Tests/L0AllDefaultInputs.ts @@ -0,0 +1,38 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); +tr.setInput('gradleOpts', '-Xmx2048m'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0CAEmptyResultsEnabledTools.ts b/Tasks/GradleV4/Tests/L0CAEmptyResultsEnabledTools.ts new file mode 100644 index 000000000000..13231dea96ce --- /dev/null +++ b/Tasks/GradleV4/Tests/L0CAEmptyResultsEnabledTools.ts @@ -0,0 +1,117 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +// need to detect current dir (e.g. for Node20 it will be GradleV3_Node20\Tests) +// __dirname - Current Dir(GradleV3\Tests) +const gradleFolder = path.basename(path.join(__dirname, '..')) + + //escape for Windows directories +let tempDir: string = path.join(__dirname, '_temp'); +let sqAnalysisDirReplaced: string = path.join(tempDir, '.sqAnalysis').replace(/\\/g, '/'); +let taskReportValidDir: string = path.join(__dirname, 'data', 'singlemodule-noviolations'); +let taskReportValidBuildDir: string = path.join(taskReportValidDir, 'build'); +let taskReportValidBuildDirReplaced: string = path.join(taskReportValidDir, 'build').replace(/\\/g, '/'); +let taskReportValidBuildSonarDir: string = path.join(taskReportValidBuildDir, 'sonar'); +let taskReportValidBuildSonarDirReplaced: string = path.join(taskReportValidBuildDir, 'sonar').replace(/\\/g, '/'); +let taskReportValidBuildSonarReportTaskTextDirReplaced: string = path.join(taskReportValidBuildSonarDir, 'report-task.txt').replace(/\\/g, '/'); + +//Env vars in the mock framework must replace '.' with '_' +//replace with mock of setVariable when task-lib has the support +process.env['MOCK_IGNORE_TEMP_PATH'] = 'true'; +process.env['MOCK_TEMP_PATH'] = path.join(__dirname, '..', '..'); +process.env['MOCK_NORMALIZE_SLASHES'] = 'true'; + +process.env['JAVA_HOME_8_X86'] = '/user/local/bin/Java8'; +process.env['ENDPOINT_URL_ID1'] = 'http://sonarqube/end/point'; +process.env['ENDPOINT_AUTH_ID1'] = '{\"scheme\":\"UsernamePassword\", \"parameters\": {\"username\": \"uname\", \"password\": \"pword\"}}'; + +process.env['BUILD_BUILDNUMBER'] = '14'; +process.env['BUILD_SOURCESDIRECTORY'] = `${taskReportValidDir}`; +process.env['BUILD_ARTIFACTSTAGINGDIRECTORY'] = `${tempDir}`; +process.env['SYSTEM_DEFAULTWORKINGDIRECTORY'] = `${taskReportValidDir}`; //'/user/build/s'; + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +tr.setInput('sqAnalysisEnabled', 'false'); + +// Added inputs for this test +tr.setInput('pmdAnalysisEnabled', 'true'); +tr.setInput('checkstyleAnalysisEnabled', 'false'); +tr.setInput('findbugsAnalysisEnabled', 'false'); + +//construct a string that is JSON, call JSON.parse(string), send that to ma.TaskLibAnswers +let myAnswers: string = `{ + "exec":{ + "gradlew build -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/pmd.gradle": { + "code": 0, + "stdout": "Sample gradle + PMD" + }, + "gradlew.bat build -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/pmd.gradle": { + "code": 0, + "stdout": "Sample gradle + PMD" + } + }, + "checkPath":{ + "gradlew":true, + "gradlew.bat":true, + "/home/repo/src":true, + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "find":{ + "/user/build":[ + "/user/build/fun/test-123.xml" + ] + }, + "match":{ + "**/build/test-results/TEST-*.xml":[ + "/user/build/fun/test-123.xml" + ] + }, + "stats":{ + "${sqAnalysisDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":{ + "isFile":true + } + }, + "exist":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "mkdirP":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + } +}`; + +let json: any = JSON.parse(myAnswers); + +// Cast the json blob into a TaskLibAnswers +tr.setAnswers(json); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0CANoToolsEnabled.ts b/Tasks/GradleV4/Tests/L0CANoToolsEnabled.ts new file mode 100644 index 000000000000..8fa2dc507a82 --- /dev/null +++ b/Tasks/GradleV4/Tests/L0CANoToolsEnabled.ts @@ -0,0 +1,108 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + + //escape for Windows directories +let tempDir: string = path.join(__dirname, '_temp'); +let sqAnalysisDirReplaced: string = path.join(tempDir, '.sqAnalysis').replace(/\\/g, '/'); +let taskReportValidDir: string = path.join(__dirname, 'data', 'singlemodule'); +let taskReportValidBuildDir: string = path.join(taskReportValidDir, 'build'); +let taskReportValidBuildDirReplaced: string = path.join(taskReportValidDir, 'build').replace(/\\/g, '/'); +let taskReportValidBuildSonarDir: string = path.join(taskReportValidBuildDir, 'sonar'); +let taskReportValidBuildSonarDirReplaced: string = path.join(taskReportValidBuildDir, 'sonar').replace(/\\/g, '/'); +let taskReportValidBuildSonarReportTaskTextDirReplaced: string = path.join(taskReportValidBuildSonarDir, 'report-task.txt').replace(/\\/g, '/'); + +//Env vars in the mock framework must replace '.' with '_' +//replace with mock of setVariable when task-lib has the support +process.env['MOCK_IGNORE_TEMP_PATH'] = 'true'; +process.env['MOCK_TEMP_PATH'] = path.join(__dirname, '..', '..'); +process.env['MOCK_NORMALIZE_SLASHES'] = 'true'; + +process.env['JAVA_HOME_8_X86'] = '/user/local/bin/Java8'; +process.env['ENDPOINT_URL_ID1'] = 'http://sonarqube/end/point'; +process.env['ENDPOINT_AUTH_ID1'] = '{\"scheme\":\"UsernamePassword\", \"parameters\": {\"username\": \"uname\", \"password\": \"pword\"}}'; + +process.env['BUILD_BUILDNUMBER'] = '14'; +process.env['BUILD_SOURCESDIRECTORY'] = `${taskReportValidDir}`; +process.env['BUILD_ARTIFACTSTAGINGDIRECTORY'] = `${tempDir}`; +process.env['SYSTEM_DEFAULTWORKINGDIRECTORY'] = `${taskReportValidDir}`; //'/user/build/s'; + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +tr.setInput('sqAnalysisEnabled', 'false'); + +// Added inputs for this test +tr.setInput('pmdAnalysisEnabled', 'false'); +tr.setInput('checkstyleAnalysisEnabled', 'false'); +tr.setInput('findbugsAnalysisEnabled', 'false'); + +//construct a string that is JSON, call JSON.parse(string), send that to ma.TaskLibAnswers +let myAnswers: string = `{ + "exec":{ + "gradlew.bat build": { + "code": 0, + "stdout": "Sample gradle output" + }, + "gradlew build": { + "code": 0, + "stdout": "Sample gradle output" + } + }, + "checkPath":{ + "gradlew":true, + "gradlew.bat":true, + "/home/repo/src":true, + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "findMatch":{ + "**/build/test-results/TEST-*.xml":[ + "/user/build/fun/test-123.xml" + ] + }, + "stats":{ + "${sqAnalysisDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":{ + "isFile":true + } + }, + "exist":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "mkdirP":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + } +}`; + +let json: any = JSON.parse(myAnswers); + +// Cast the json blob into a TaskLibAnswers +tr.setAnswers(json); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0CANoUploadArtifactsIfReportsEmpty.ts b/Tasks/GradleV4/Tests/L0CANoUploadArtifactsIfReportsEmpty.ts new file mode 100644 index 000000000000..98b3b98b6bb8 --- /dev/null +++ b/Tasks/GradleV4/Tests/L0CANoUploadArtifactsIfReportsEmpty.ts @@ -0,0 +1,112 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +// need to detect current dir (e.g. for Node20 it will be GradleV4_Node20\Tests) +// __dirname - Current Dir(GradleV4\Tests) +const gradleFolder = path.basename(path.join(__dirname, '..')) + + //escape for Windows directories +let tempDir: string = path.join(__dirname, '_temp'); +let sqAnalysisDirReplaced: string = path.join(tempDir, '.sqAnalysis').replace(/\\/g, '/'); +let taskReportValidDir: string = path.join(__dirname, 'data', 'singlemodule-noviolations'); //taskreport-valid'); +let taskReportValidBuildDir: string = path.join(taskReportValidDir, 'build'); +let taskReportValidBuildDirReplaced: string = path.join(taskReportValidDir, 'build').replace(/\\/g, '/'); +let taskReportValidBuildSonarDir: string = path.join(taskReportValidBuildDir, 'sonar'); +let taskReportValidBuildSonarDirReplaced: string = path.join(taskReportValidBuildDir, 'sonar').replace(/\\/g, '/'); +let taskReportValidBuildSonarReportTaskTextDirReplaced: string = path.join(taskReportValidBuildSonarDir, 'report-task.txt').replace(/\\/g, '/'); + +//Env vars in the mock framework must replace '.' with '_' +//replace with mock of setVariable when task-lib has the support +process.env['MOCK_IGNORE_TEMP_PATH'] = 'true'; +process.env['MOCK_TEMP_PATH'] = path.join(__dirname, '..', '..'); +process.env['MOCK_NORMALIZE_SLASHES'] = 'true'; + +process.env['JAVA_HOME_8_X86'] = '/user/local/bin/Java8'; +process.env['ENDPOINT_URL_ID1'] = 'http://sonarqube/end/point'; +process.env['ENDPOINT_AUTH_ID1'] = '{\"scheme\":\"UsernamePassword\", \"parameters\": {\"username\": \"uname\", \"password\": \"pword\"}}'; + +process.env['BUILD_BUILDNUMBER'] = '14'; +process.env['BUILD_SOURCESDIRECTORY'] = `${taskReportValidDir}`; +process.env['BUILD_ARTIFACTSTAGINGDIRECTORY'] = `${tempDir}`; +process.env['SYSTEM_DEFAULTWORKINGDIRECTORY'] = `${taskReportValidDir}`; //'/user/build/s'; + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +tr.setInput('sqAnalysisEnabled', 'false'); + +// Added inputs for this test +tr.setInput('pmdAnalysisEnabled', 'true'); +tr.setInput('checkstyleAnalysisEnabled', 'true'); +tr.setInput('findbugsAnalysisEnabled', 'true'); + +//construct a string that is JSON, call JSON.parse(string), send that to ma.TaskLibAnswers +let myAnswers: string = `{ + "exec":{ + "gradlew build -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/checkstyle.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/findbugs.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/pmd.gradle": { + "code": 0, + "stdout": "Sample gradle + Checkstyle + PMD + FindBugs" + }, + "gradlew.bat build -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/checkstyle.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/findbugs.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/pmd.gradle": { + "code": 0, + "stdout": "Sample gradle + Checkstyle + PMD + FindBugs" + } + }, + "checkPath":{ + "gradlew":true, + "gradlew.bat":true, + "/home/repo/src":true, + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "findMatch":{ + "**/build/test-results/TEST-*.xml":[ + "/user/build/fun/test-123.xml" + ] + }, + "stats":{ + "${sqAnalysisDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":{ + "isFile":true + } + }, + "exist":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "mkdirP":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + } +}`; + +let json: any = JSON.parse(myAnswers); + +// Cast the json blob into a TaskLibAnswers +tr.setAnswers(json); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0GarbagePublishJUnitResults.ts b/Tasks/GradleV4/Tests/L0GarbagePublishJUnitResults.ts new file mode 100644 index 000000000000..62443f3bf7cd --- /dev/null +++ b/Tasks/GradleV4/Tests/L0GarbagePublishJUnitResults.ts @@ -0,0 +1,38 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +tr.setInput('publishJUnitResults', 'garbage'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0InvalidPath.ts b/Tasks/GradleV4/Tests/L0InvalidPath.ts new file mode 100644 index 000000000000..2e7a777503f7 --- /dev/null +++ b/Tasks/GradleV4/Tests/L0InvalidPath.ts @@ -0,0 +1,37 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src2'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src2': false + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0InvalidWrapperScript.ts b/Tasks/GradleV4/Tests/L0InvalidWrapperScript.ts new file mode 100644 index 000000000000..5e41ce0c89e1 --- /dev/null +++ b/Tasks/GradleV4/Tests/L0InvalidWrapperScript.ts @@ -0,0 +1,37 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', '/home/gradlew'); +tr.setInput('cwd', '/home/repo/src2'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/gradlew': false + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0JDKVersion15.ts b/Tasks/GradleV4/Tests/L0JDKVersion15.ts new file mode 100644 index 000000000000..9b08b0804f65 --- /dev/null +++ b/Tasks/GradleV4/Tests/L0JDKVersion15.ts @@ -0,0 +1,46 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); +tr.setInput('jdkVersion', '1.5'); +tr.setInput('jdkArchitecture', 'x86'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'reg query HKLM\\SOFTWARE\\JavaSoft\\Java Development Kit\\ /f 1.5 /k': { + 'code': 222, + 'stdout': '' + }, + 'reg query HKLM\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.5 /v JavaHome /reg:32': { + 'code': 222, + 'stdout': '' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0JDKVersion18.ts b/Tasks/GradleV4/Tests/L0JDKVersion18.ts new file mode 100644 index 000000000000..5cfe3c6e0553 --- /dev/null +++ b/Tasks/GradleV4/Tests/L0JDKVersion18.ts @@ -0,0 +1,40 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); +tr.setInput('jdkVersion', '1.8'); +tr.setInput('jdkArchitecture', 'x86'); + +process.env['JAVA_HOME_8_X86'] = '/user/local/bin/Java8'; //replace with mock of setVariable when task-lib has the support + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0MissingJavaHomeSelectionInput.ts b/Tasks/GradleV4/Tests/L0MissingJavaHomeSelectionInput.ts new file mode 100644 index 000000000000..2b1f9f54fb6c --- /dev/null +++ b/Tasks/GradleV4/Tests/L0MissingJavaHomeSelectionInput.ts @@ -0,0 +1,28 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', '/o "/p t i" /o /n /s'); +tr.setInput('tasks', 'build test deploy'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +// tr.setInput('javaHomeSelection', 'JDKVersion'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0MissingPublishJUnitResultsInput.ts b/Tasks/GradleV4/Tests/L0MissingPublishJUnitResultsInput.ts new file mode 100644 index 000000000000..a8dc10d95a07 --- /dev/null +++ b/Tasks/GradleV4/Tests/L0MissingPublishJUnitResultsInput.ts @@ -0,0 +1,38 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +//tr.setInput('publishJUnitResults', 'garbage'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0MissingTestResultsFilesInput.ts b/Tasks/GradleV4/Tests/L0MissingTestResultsFilesInput.ts new file mode 100644 index 000000000000..e2f6e46c0e2d --- /dev/null +++ b/Tasks/GradleV4/Tests/L0MissingTestResultsFilesInput.ts @@ -0,0 +1,28 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', '/o "/p t i" /o /n /s'); +tr.setInput('tasks', 'build test deploy'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); + +// tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0MissingWrapperScript.ts b/Tasks/GradleV4/Tests/L0MissingWrapperScript.ts new file mode 100644 index 000000000000..6a7c68bd1b1b --- /dev/null +++ b/Tasks/GradleV4/Tests/L0MissingWrapperScript.ts @@ -0,0 +1,38 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); +tr.setInput('cwd', '/home/repo/src2'); + +// tr.setInput('wrapperScript', 'gradlew'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0MultiModuleCheckstyleFindBugsPMD.ts b/Tasks/GradleV4/Tests/L0MultiModuleCheckstyleFindBugsPMD.ts new file mode 100644 index 000000000000..94dcfd97694f --- /dev/null +++ b/Tasks/GradleV4/Tests/L0MultiModuleCheckstyleFindBugsPMD.ts @@ -0,0 +1,112 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +// need to detect current dir (e.g. for Node20 it will be GradleV4_Node20\Tests) +// __dirname - Current Dir(GradleV4\Tests) +const gradleFolder = path.basename(path.join(__dirname, '..')) + + //escape for Windows directories +let tempDir: string = path.join(__dirname, '_temp'); +let sqAnalysisDirReplaced: string = path.join(tempDir, '.sqAnalysis').replace(/\\/g, '/'); +let taskReportValidDir: string = path.join(__dirname, 'data', 'multimodule'); //taskreport-valid'); +let taskReportValidBuildDir: string = path.join(taskReportValidDir, 'build'); +let taskReportValidBuildDirReplaced: string = path.join(taskReportValidDir, 'build').replace(/\\/g, '/'); +let taskReportValidBuildSonarDir: string = path.join(taskReportValidBuildDir, 'sonar'); +let taskReportValidBuildSonarDirReplaced: string = path.join(taskReportValidBuildDir, 'sonar').replace(/\\/g, '/'); +let taskReportValidBuildSonarReportTaskTextDirReplaced: string = path.join(taskReportValidBuildSonarDir, 'report-task.txt').replace(/\\/g, '/'); + +//Env vars in the mock framework must replace '.' with '_' +//replace with mock of setVariable when task-lib has the support +process.env['MOCK_IGNORE_TEMP_PATH'] = 'true'; +process.env['MOCK_TEMP_PATH'] = path.join(__dirname, '..', '..'); +process.env['MOCK_NORMALIZE_SLASHES'] = 'true'; + +process.env['JAVA_HOME_8_X86'] = '/user/local/bin/Java8'; +process.env['ENDPOINT_URL_ID1'] = 'http://sonarqube/end/point'; +process.env['ENDPOINT_AUTH_ID1'] = '{\"scheme\":\"UsernamePassword\", \"parameters\": {\"username\": \"uname\", \"password\": \"pword\"}}'; + +process.env['BUILD_BUILDNUMBER'] = '211'; +process.env['BUILD_SOURCESDIRECTORY'] = `${taskReportValidDir}`; +process.env['BUILD_ARTIFACTSTAGINGDIRECTORY'] = `${tempDir}`; +process.env['SYSTEM_DEFAULTWORKINGDIRECTORY'] = `${taskReportValidDir}`; + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +tr.setInput('sqAnalysisEnabled', 'false'); + +// Added inputs for this test +tr.setInput('checkstyleAnalysisEnabled', 'true'); +tr.setInput('findbugsAnalysisEnabled', 'true'); +tr.setInput('pmdAnalysisEnabled', 'true'); + +//construct a string that is JSON, call JSON.parse(string), send that to ma.TaskLibAnswers +let myAnswers: string = `{ + "exec":{ + "gradlew.bat build -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/checkstyle.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/findbugs.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/pmd.gradle": { + "code": 0, + "stdout": "Sample gradle + Checkstyle + PMD + FindBugs" + }, + "gradlew build -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/checkstyle.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/findbugs.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/pmd.gradle": { + "code": 0, + "stdout": "Sample gradle + Checkstyle + PMD + FindBugs" + } + }, + "checkPath":{ + "gradlew":true, + "gradlew.bat":true, + "/home/repo/src":true, + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "findMatch":{ + "**/build/test-results/TEST-*.xml":[ + "/user/build/fun/test-123.xml" + ] + }, + "stats":{ + "${sqAnalysisDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":{ + "isFile":true + } + }, + "exist":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "mkdirP":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + } +}`; + +let json: any = JSON.parse(myAnswers); + +// Cast the json blob into a TaskLibAnswers +tr.setAnswers(json); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0MultipleTasks.ts b/Tasks/GradleV4/Tests/L0MultipleTasks.ts new file mode 100644 index 000000000000..3374c3c572e3 --- /dev/null +++ b/Tasks/GradleV4/Tests/L0MultipleTasks.ts @@ -0,0 +1,38 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', '/o "/p t i" /o /n /s'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +tr.setInput('tasks', 'build test deploy'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew /o /p t i /o /n /s build test deploy': { + 'code': 0, + 'stdout': 'More sample gradle output' + }, + 'gradlew.bat /o /p t i /o /n /s build test deploy': { + 'code': 0, + 'stdout': 'More sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0OptionsSet.ts b/Tasks/GradleV4/Tests/L0OptionsSet.ts new file mode 100644 index 000000000000..b1661bb2514a --- /dev/null +++ b/Tasks/GradleV4/Tests/L0OptionsSet.ts @@ -0,0 +1,37 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', '/o "/p t i" /o /n /s'); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew /o /p t i /o /n /s build': { + 'code': 0, + 'stdout': 'More sample gradle output' + }, + 'gradlew.bat /o /p t i /o /n /s build': { + 'code': 0, + 'stdout': 'More sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0PublishTestResults.ts b/Tasks/GradleV4/Tests/L0PublishTestResults.ts new file mode 100644 index 000000000000..7de42d2a98d7 --- /dev/null +++ b/Tasks/GradleV4/Tests/L0PublishTestResults.ts @@ -0,0 +1,42 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/TEST-*.xml'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + }, + 'findMatch': { + '**/TEST-*.xml': [ + '/user/build/fun/test-123.xml' + ] + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0PublishTestResultsNoMatchingResultFiles.ts b/Tasks/GradleV4/Tests/L0PublishTestResultsNoMatchingResultFiles.ts new file mode 100644 index 000000000000..53ee57deb142 --- /dev/null +++ b/Tasks/GradleV4/Tests/L0PublishTestResultsNoMatchingResultFiles.ts @@ -0,0 +1,37 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '*InvalidTestFilter*.xml'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0SQ.ts b/Tasks/GradleV4/Tests/L0SQ.ts new file mode 100644 index 000000000000..4ccb7b61b60d --- /dev/null +++ b/Tasks/GradleV4/Tests/L0SQ.ts @@ -0,0 +1,107 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +// need to detect current dir (e.g. for Node20 it will be GradleV4_Node20\Tests) +// __dirname - Current Dir(GradleV4\Tests) +const gradleFolder = path.basename(path.join(__dirname, '..')) + + //escape for Windows directories +let tempDir: string = path.join(__dirname, '_temp'); +let sqAnalysisDirReplaced: string = path.join(tempDir, '.sqAnalysis').replace(/\\/g, '/'); +let taskReportValidDir: string = path.join(__dirname, 'data', 'taskreport-valid'); +let taskReportValidBuildDir: string = path.join(taskReportValidDir, 'build'); +let taskReportValidBuildDirReplaced: string = path.join(taskReportValidDir, 'build').replace(/\\/g, '/'); +let taskReportValidBuildSonarDir: string = path.join(taskReportValidBuildDir, 'sonar'); +let taskReportValidBuildSonarDirReplaced: string = path.join(taskReportValidBuildDir, 'sonar').replace(/\\/g, '/'); +let taskReportValidBuildSonarReportTaskTextDirReplaced: string = path.join(taskReportValidBuildSonarDir, 'report-task.txt').replace(/\\/g, '/'); + +//Env vars in the mock framework must replace '.' with '_' +//replace with mock of setVariable when task-lib has the support +process.env['MOCK_IGNORE_TEMP_PATH'] = 'true'; +process.env['MOCK_TEMP_PATH'] = path.join(__dirname, '..', '..'); +process.env['MOCK_NORMALIZE_SLASHES'] = 'true'; + +process.env['JAVA_HOME_8_X86'] = '/user/local/bin/Java8'; + +process.env['BUILD_BUILDNUMBER'] = '14'; +process.env['BUILD_SOURCESDIRECTORY'] = `${taskReportValidDir}`; +process.env['BUILD_ARTIFACTSTAGINGDIRECTORY'] = `${tempDir}`; +process.env['SYSTEM_DEFAULTWORKINGDIRECTORY'] = `${taskReportValidDir}`; + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +tr.setInput('sqAnalysisEnabled', 'true'); +tr.setInput('sqGradlePluginVersionChoice', 'specify'); +tr.setInput('sqGradlePluginVersion', '2.6.1'); + +//construct a string that is JSON, call JSON.parse(string), send that to ma.TaskLibAnswers +let myAnswers: string = `{ + "exec":{ + "gradlew build -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/sonar.gradle sonarqube":{ + "code":0, + "stdout":"Gradle build and SQ analysis done" + }, + "gradlew.bat build -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/sonar.gradle sonarqube":{ + "code":0, + "stdout":"Gradle build and SQ analysis done" + } + }, + "checkPath":{ + "gradlew":true, + "gradlew.bat":true, + "/home/repo/src":true, + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "findMatch":{ + "**/build/test-results/TEST-*.xml":[ + "/user/build/fun/test-123.xml" + ] + }, + "stats":{ + "${sqAnalysisDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":{ + "isFile":true + } + }, + "exist":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "mkdirP":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + } +}`; + +let json: any = JSON.parse(myAnswers); + +// Cast the json blob into a TaskLibAnswers +tr.setAnswers(json); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0SQGradleDefaultSQDisabled.ts b/Tasks/GradleV4/Tests/L0SQGradleDefaultSQDisabled.ts new file mode 100644 index 000000000000..6c8f89f98d79 --- /dev/null +++ b/Tasks/GradleV4/Tests/L0SQGradleDefaultSQDisabled.ts @@ -0,0 +1,103 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + + //escape for Windows directories +let tempDir: string = path.join(__dirname, '_temp'); +let sqAnalysisDirReplaced: string = path.join(tempDir, '.sqAnalysis').replace(/\\/g, '/'); +let taskReportValidDir: string = path.join(__dirname, 'data', 'taskreport-valid'); +let taskReportValidBuildDir: string = path.join(taskReportValidDir, 'build'); +let taskReportValidBuildDirReplaced: string = path.join(taskReportValidDir, 'build').replace(/\\/g, '/'); +let taskReportValidBuildSonarDir: string = path.join(taskReportValidBuildDir, 'sonar'); +let taskReportValidBuildSonarDirReplaced: string = path.join(taskReportValidBuildDir, 'sonar').replace(/\\/g, '/'); +let taskReportValidBuildSonarReportTaskTextDirReplaced: string = path.join(taskReportValidBuildSonarDir, 'report-task.txt').replace(/\\/g, '/'); + +//Env vars in the mock framework must replace '.' with '_' +//replace with mock of setVariable when task-lib has the support +process.env['MOCK_IGNORE_TEMP_PATH'] = 'true'; +process.env['MOCK_TEMP_PATH'] = path.join(__dirname, '..', '..'); +process.env['MOCK_NORMALIZE_SLASHES'] = 'true'; + +process.env['JAVA_HOME_8_X86'] = '/user/local/bin/Java8'; + +process.env['BUILD_BUILDNUMBER'] = '14'; +process.env['BUILD_SOURCESDIRECTORY'] = `${taskReportValidDir}`; +process.env['BUILD_ARTIFACTSTAGINGDIRECTORY'] = `${tempDir}`; +process.env['BUILD_SOURCEBRANCH'] = 'refs/pull/6/master'; +process.env['BUILD_REPOSITORY_PROVIDER'] = 'TFSGit'; +process.env['SYSTEM_DEFAULTWORKINGDIRECTORY'] = '/user/build/s'; + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +tr.setInput('sqAnalysisEnabled', 'false'); + +//construct a string that is JSON, call JSON.parse(string), send that to ma.TaskLibAnswers +let myAnswers: string = `{ + "exec":{ + "gradlew build":{ + "code":0, + "stdout":"Sample gradle output" + }, + "gradlew.bat build":{ + "code":0, + "stdout":"Sample gradle output" + } + }, + "checkPath":{ + "gradlew":true, + "gradlew.bat":true, + "/home/repo/src":true, + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "findMatch":{ + "**/build/test-results/TEST-*.xml":[ + "/user/build/fun/test-123.xml" + ] + }, + "stats":{ + "${sqAnalysisDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":{ + "isFile":true + } + }, + "exist":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "mkdirP":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + } +}`; + +let json: any = JSON.parse(myAnswers); + +// Cast the json blob into a TaskLibAnswers +tr.setAnswers(json); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0SingleModuleCheckstyleFindBugsPMD.ts b/Tasks/GradleV4/Tests/L0SingleModuleCheckstyleFindBugsPMD.ts new file mode 100644 index 000000000000..644a35b278d9 --- /dev/null +++ b/Tasks/GradleV4/Tests/L0SingleModuleCheckstyleFindBugsPMD.ts @@ -0,0 +1,112 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +// need to detect current dir (e.g. for Node20 it will be GradleV4_Node20\Tests) +// __dirname - Current Dir(GradleV4\Tests) +const gradleFolder = path.basename(path.join(__dirname, '..')) + + //escape for Windows directories +let tempDir: string = path.join(__dirname, '_temp'); +let sqAnalysisDirReplaced: string = path.join(tempDir, '.sqAnalysis').replace(/\\/g, '/'); +let taskReportValidDir: string = path.join(__dirname, 'data', 'singlemodule'); +let taskReportValidBuildDir: string = path.join(taskReportValidDir, 'build'); +let taskReportValidBuildDirReplaced: string = path.join(taskReportValidDir, 'build').replace(/\\/g, '/'); +let taskReportValidBuildSonarDir: string = path.join(taskReportValidBuildDir, 'sonar'); +let taskReportValidBuildSonarDirReplaced: string = path.join(taskReportValidBuildDir, 'sonar').replace(/\\/g, '/'); +let taskReportValidBuildSonarReportTaskTextDirReplaced: string = path.join(taskReportValidBuildSonarDir, 'report-task.txt').replace(/\\/g, '/'); + +//Env vars in the mock framework must replace '.' with '_' +//replace with mock of setVariable when task-lib has the support +process.env['MOCK_IGNORE_TEMP_PATH'] = 'true'; +process.env['MOCK_TEMP_PATH'] = path.join(__dirname, '..', '..'); +process.env['MOCK_NORMALIZE_SLASHES'] = 'true'; + +process.env['JAVA_HOME_8_X86'] = '/user/local/bin/Java8'; +process.env['ENDPOINT_URL_ID1'] = 'http://sonarqube/end/point'; +process.env['ENDPOINT_AUTH_ID1'] = '{\"scheme\":\"UsernamePassword\", \"parameters\": {\"username\": \"uname\", \"password\": \"pword\"}}'; + +process.env['BUILD_BUILDNUMBER'] = '14'; +process.env['BUILD_SOURCESDIRECTORY'] = `${taskReportValidDir}`; +process.env['BUILD_ARTIFACTSTAGINGDIRECTORY'] = `${tempDir}`; +process.env['SYSTEM_DEFAULTWORKINGDIRECTORY'] = `${taskReportValidDir}`; //'/user/build/s'; + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +tr.setInput('sqAnalysisEnabled', 'false'); + +// Added inputs for this test +tr.setInput('checkstyleAnalysisEnabled', 'true'); +tr.setInput('findbugsAnalysisEnabled', 'true'); +tr.setInput('pmdAnalysisEnabled', 'true'); + +//construct a string that is JSON, call JSON.parse(string), send that to ma.TaskLibAnswers +let myAnswers: string = `{ + "exec":{ + "gradlew.bat build -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/checkstyle.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/findbugs.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/pmd.gradle": { + "code": 0, + "stdout": "Sample gradle + Checkstyle + PMD + FindBugs" + }, + "gradlew build -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/checkstyle.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/findbugs.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/pmd.gradle": { + "code": 0, + "stdout": "Sample gradle + Checkstyle + PMD + FindBugs" + } + }, + "checkPath":{ + "gradlew":true, + "gradlew.bat":true, + "/home/repo/src":true, + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "findMatch":{ + "**/build/test-results/TEST-*.xml":[ + "/user/build/fun/test-123.xml" + ] + }, + "stats":{ + "${sqAnalysisDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":{ + "isFile":true + } + }, + "exist":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "mkdirP":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + } +}`; + +let json: any = JSON.parse(myAnswers); + +// Cast the json blob into a TaskLibAnswers +tr.setAnswers(json); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0TasksNotSet.ts b/Tasks/GradleV4/Tests/L0TasksNotSet.ts new file mode 100644 index 000000000000..4b92cd17bd99 --- /dev/null +++ b/Tasks/GradleV4/Tests/L0TasksNotSet.ts @@ -0,0 +1,38 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', '/o "/p t i" /o /n /s'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +// tr.setInput('tasks', 'build'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0ValidCwdPath.ts b/Tasks/GradleV4/Tests/L0ValidCwdPath.ts new file mode 100644 index 000000000000..7d824515af01 --- /dev/null +++ b/Tasks/GradleV4/Tests/L0ValidCwdPath.ts @@ -0,0 +1,37 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/L0ValidInputsFailure.ts b/Tasks/GradleV4/Tests/L0ValidInputsFailure.ts new file mode 100644 index 000000000000..898bcc5ccad2 --- /dev/null +++ b/Tasks/GradleV4/Tests/L0ValidInputsFailure.ts @@ -0,0 +1,42 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build FAIL'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build FAIL': { + 'code': 2, + 'stderr': 'FAILED' + }, + 'gradlew.bat build FAIL': { + 'code': 2, + 'stderr': 'FAILED' + } + }, + 'findMatch': { + '**/build/test-results/TEST-*.xml': [ + '/user/build/fun/test-results/test-123.xml' + ] + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/Tasks/GradleV4/Tests/data/multimodule/module-one/build/reports/checkstyle/main.html b/Tasks/GradleV4/Tests/data/multimodule/module-one/build/reports/checkstyle/main.html new file mode 100644 index 000000000000..016ab682ac02 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/multimodule/module-one/build/reports/checkstyle/main.html @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + +
+

CheckStyle Audit

+
Designed for use with CheckStyle and Ant.
+
+

Summary

+ + + + + + + +
FilesErrors
117
+
+

Files

+ + + + + + + +
NameErrors
C:\core-agent\_work\3\s\module-one\src\main\java\One.java17
+
+ +

File C:\core-agent\_work\3\s\module-one\src\main\java\One.java

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Error DescriptionLine
Missing package-info.java file.0
Missing a Javadoc comment.1
Line has trailing spaces.2
File contains tab characters (this is the first instance).2
Missing a Javadoc comment.3
Variable 'message' must be private and have accessor methods.3
Line has trailing spaces.4
Method 'foo' is not designed for extension - needs to be abstract, final or empty.5
Missing a Javadoc comment.5
'{' should be on the previous line.7
Must have at least one statement.7
Line has trailing spaces.8
'}' should be on the same line.9
Line has trailing spaces.10
'{' should be on the previous line.11
Must have at least one statement.11
Line has trailing spaces.12
+Back to top +
+ + diff --git a/Tasks/GradleV4/Tests/data/multimodule/module-one/build/reports/checkstyle/main.xml b/Tasks/GradleV4/Tests/data/multimodule/module-one/build/reports/checkstyle/main.xml new file mode 100644 index 000000000000..f57e131525f6 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/multimodule/module-one/build/reports/checkstyle/main.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tasks/GradleV4/Tests/data/multimodule/module-one/build/reports/checkstyle/test.html b/Tasks/GradleV4/Tests/data/multimodule/module-one/build/reports/checkstyle/test.html new file mode 100644 index 000000000000..016ab682ac02 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/multimodule/module-one/build/reports/checkstyle/test.html @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + +
+

CheckStyle Audit

+
Designed for use with CheckStyle and Ant.
+
+

Summary

+ + + + + + + +
FilesErrors
117
+
+

Files

+ + + + + + + +
NameErrors
C:\core-agent\_work\3\s\module-one\src\main\java\One.java17
+
+ +

File C:\core-agent\_work\3\s\module-one\src\main\java\One.java

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Error DescriptionLine
Missing package-info.java file.0
Missing a Javadoc comment.1
Line has trailing spaces.2
File contains tab characters (this is the first instance).2
Missing a Javadoc comment.3
Variable 'message' must be private and have accessor methods.3
Line has trailing spaces.4
Method 'foo' is not designed for extension - needs to be abstract, final or empty.5
Missing a Javadoc comment.5
'{' should be on the previous line.7
Must have at least one statement.7
Line has trailing spaces.8
'}' should be on the same line.9
Line has trailing spaces.10
'{' should be on the previous line.11
Must have at least one statement.11
Line has trailing spaces.12
+Back to top +
+ + diff --git a/Tasks/GradleV4/Tests/data/multimodule/module-one/build/reports/checkstyle/test.xml b/Tasks/GradleV4/Tests/data/multimodule/module-one/build/reports/checkstyle/test.xml new file mode 100644 index 000000000000..43ef704fb58e --- /dev/null +++ b/Tasks/GradleV4/Tests/data/multimodule/module-one/build/reports/checkstyle/test.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tasks/GradleV4/Tests/data/multimodule/module-one/build/reports/pmd/main.html b/Tasks/GradleV4/Tests/data/multimodule/module-one/build/reports/pmd/main.html new file mode 100644 index 000000000000..d1737023a02c --- /dev/null +++ b/Tasks/GradleV4/Tests/data/multimodule/module-one/build/reports/pmd/main.html @@ -0,0 +1,16 @@ +PMD +

PMD report

Problems found

+ + + + + + + + + + + + + +
#FileLineProblem
1C:\Users\bgavril\source\repos\sonar-examples\projects\multi-module\gradle\java-gradle-modules\module-one\src\main\java\One.java7Avoid empty try blocks
2C:\Users\bgavril\source\repos\sonar-examples\projects\multi-module\gradle\java-gradle-modules\module-one\src\main\java\One.java10Avoid empty catch blocks
diff --git a/Tasks/GradleV4/Tests/data/multimodule/module-one/build/reports/pmd/main.xml b/Tasks/GradleV4/Tests/data/multimodule/module-one/build/reports/pmd/main.xml new file mode 100644 index 000000000000..d1721a32c8aa --- /dev/null +++ b/Tasks/GradleV4/Tests/data/multimodule/module-one/build/reports/pmd/main.xml @@ -0,0 +1,11 @@ + + + + +Avoid empty try blocks + + +Avoid empty catch blocks + + + diff --git a/Tasks/GradleV4/Tests/data/multimodule/module-one/build/reports/pmd/test.xml b/Tasks/GradleV4/Tests/data/multimodule/module-one/build/reports/pmd/test.xml new file mode 100644 index 000000000000..337b6b207df7 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/multimodule/module-one/build/reports/pmd/test.xml @@ -0,0 +1,3 @@ + + + diff --git a/Tasks/GradleV4/Tests/data/multimodule/module-one/build/tmp/jar/MANIFEST.MF b/Tasks/GradleV4/Tests/data/multimodule/module-one/build/tmp/jar/MANIFEST.MF new file mode 100644 index 000000000000..59499bce4a2b --- /dev/null +++ b/Tasks/GradleV4/Tests/data/multimodule/module-one/build/tmp/jar/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/Tasks/GradleV4/Tests/data/multimodule/module-one/module-one.iml b/Tasks/GradleV4/Tests/data/multimodule/module-one/module-one.iml new file mode 100644 index 000000000000..a57482cb8c86 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/multimodule/module-one/module-one.iml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tasks/GradleV4/Tests/data/multimodule/module-one/src/main/java/One.java b/Tasks/GradleV4/Tests/data/multimodule/module-one/src/main/java/One.java new file mode 100644 index 000000000000..af75745c3ed5 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/multimodule/module-one/src/main/java/One.java @@ -0,0 +1,16 @@ +public class One { + + public String message = ""; + + public String foo() { + try + { + + } + catch (Exception e) + { + + } + return "foo"; + } +} diff --git a/Tasks/GradleV4/Tests/data/multimodule/module-three/build/reports/findbugs/main.xml b/Tasks/GradleV4/Tests/data/multimodule/module-three/build/reports/findbugs/main.xml new file mode 100644 index 000000000000..537cb01552a9 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/multimodule/module-three/build/reports/findbugs/main.xml @@ -0,0 +1,91 @@ + + + + + C:\TestJavaProject\app\build\classes\main\main\java\TestClassWithErrors.class + C:\TestJavaProject\app\build\classes\main\main\java\TestProgram.class + C:\TestJavaProject\app\src\main\java\TestClassWithErrors.java + C:\TestJavaProject\app\src\main\java\TestProgram.java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tasks/GradleV4/Tests/data/multimodule/module-three/build/reports/pmd/main.html b/Tasks/GradleV4/Tests/data/multimodule/module-three/build/reports/pmd/main.html new file mode 100644 index 000000000000..8e57b33d9e5f --- /dev/null +++ b/Tasks/GradleV4/Tests/data/multimodule/module-three/build/reports/pmd/main.html @@ -0,0 +1,16 @@ +PMD +

PMD report

Problems found

+ + + + + + + + + + + + + +
#FileLineProblem
1C:\Users\bgavril\source\repos\sonar-examples\projects\multi-module\gradle\java-gradle-modules\module-two\src\main\java\Two.java3Avoid empty try blocks
2C:\Users\bgavril\source\repos\sonar-examples\projects\multi-module\gradle\java-gradle-modules\module-two\src\main\java\Two.java5Avoid empty catch blocks
diff --git a/Tasks/GradleV4/Tests/data/multimodule/module-three/build/reports/pmd/main.xml b/Tasks/GradleV4/Tests/data/multimodule/module-three/build/reports/pmd/main.xml new file mode 100644 index 000000000000..bfc857cdf5a8 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/multimodule/module-three/build/reports/pmd/main.xml @@ -0,0 +1,3 @@ + + + diff --git a/Tasks/GradleV4/Tests/data/multimodule/module-three/module-two.iml b/Tasks/GradleV4/Tests/data/multimodule/module-three/module-two.iml new file mode 100644 index 000000000000..35c3bcbeee3c --- /dev/null +++ b/Tasks/GradleV4/Tests/data/multimodule/module-three/module-two.iml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tasks/GradleV4/Tests/data/multimodule/module-three/src/main/java/Two.java b/Tasks/GradleV4/Tests/data/multimodule/module-three/src/main/java/Two.java new file mode 100644 index 000000000000..648ce40f8d96 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/multimodule/module-three/src/main/java/Two.java @@ -0,0 +1,10 @@ +public class Two { + public String foo() { + try { + + } catch (Exception e){ + + } + return "foo"; + } +} diff --git a/Tasks/GradleV4/Tests/data/multimodule/module-two/build/reports/checkstyle/main.html b/Tasks/GradleV4/Tests/data/multimodule/module-two/build/reports/checkstyle/main.html new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/Tasks/GradleV4/Tests/data/multimodule/module-two/build/reports/checkstyle/main.xml b/Tasks/GradleV4/Tests/data/multimodule/module-two/build/reports/checkstyle/main.xml new file mode 100644 index 000000000000..9fef3275b50f --- /dev/null +++ b/Tasks/GradleV4/Tests/data/multimodule/module-two/build/reports/checkstyle/main.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Tasks/GradleV4/Tests/data/multimodule/module-two/module-two.iml b/Tasks/GradleV4/Tests/data/multimodule/module-two/module-two.iml new file mode 100644 index 000000000000..35c3bcbeee3c --- /dev/null +++ b/Tasks/GradleV4/Tests/data/multimodule/module-two/module-two.iml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/Tasks/GradleV4/Tests/data/multimodule/module-two/src/main/java/Two.java b/Tasks/GradleV4/Tests/data/multimodule/module-two/src/main/java/Two.java new file mode 100644 index 000000000000..648ce40f8d96 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/multimodule/module-two/src/main/java/Two.java @@ -0,0 +1,10 @@ +public class Two { + public String foo() { + try { + + } catch (Exception e){ + + } + return "foo"; + } +} diff --git a/Tasks/GradleV4/Tests/data/singlemodule-noviolations/build/reports/checkstyle/main.xml b/Tasks/GradleV4/Tests/data/singlemodule-noviolations/build/reports/checkstyle/main.xml new file mode 100644 index 000000000000..9fef3275b50f --- /dev/null +++ b/Tasks/GradleV4/Tests/data/singlemodule-noviolations/build/reports/checkstyle/main.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/Tasks/GradleV4/Tests/data/singlemodule-noviolations/build/reports/findbugs/main.xml b/Tasks/GradleV4/Tests/data/singlemodule-noviolations/build/reports/findbugs/main.xml new file mode 100644 index 000000000000..bb547e34637b --- /dev/null +++ b/Tasks/GradleV4/Tests/data/singlemodule-noviolations/build/reports/findbugs/main.xml @@ -0,0 +1,33 @@ + + + + + >C:\TestJavaProject\app\build\classes\main\main\java\TestClassWithErrors.class + >C:\TestJavaProject\app\build\classes\main\main\java\TestProgram.class + >C:\TestJavaProject\app\src\main\java\TestClassWithErrors.java + >C:\TestJavaProject\app\src\main\java\TestProgram.java + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tasks/GradleV4/Tests/data/singlemodule-noviolations/build/reports/pmd/main.xml b/Tasks/GradleV4/Tests/data/singlemodule-noviolations/build/reports/pmd/main.xml new file mode 100644 index 000000000000..bfc857cdf5a8 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/singlemodule-noviolations/build/reports/pmd/main.xml @@ -0,0 +1,3 @@ + + + diff --git a/Tasks/GradleV4/Tests/data/singlemodule/build/classes/main/com/mycompany/app/App.class b/Tasks/GradleV4/Tests/data/singlemodule/build/classes/main/com/mycompany/app/App.class new file mode 100644 index 000000000000..96c85cb54920 Binary files /dev/null and b/Tasks/GradleV4/Tests/data/singlemodule/build/classes/main/com/mycompany/app/App.class differ diff --git a/Tasks/GradleV4/Tests/data/singlemodule/build/classes/test/com/mycompany/app/AppTest.class b/Tasks/GradleV4/Tests/data/singlemodule/build/classes/test/com/mycompany/app/AppTest.class new file mode 100644 index 000000000000..a206fe2bbc8a Binary files /dev/null and b/Tasks/GradleV4/Tests/data/singlemodule/build/classes/test/com/mycompany/app/AppTest.class differ diff --git a/Tasks/GradleV4/Tests/data/singlemodule/build/reports/checkstyle/main.html b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/checkstyle/main.html new file mode 100644 index 000000000000..3c947f668d37 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/checkstyle/main.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + +
+

CheckStyle Audit

+
Designed for use with CheckStyle and Ant.
+
+

Summary

+ + + + + + + +
FilesErrors
114
+
+

Files

+ + + + + + + +
NameErrors
C:\core-agent\_work\2\s\src\main\java\com\mycompany\app\App.java14
+
+ +

File C:\core-agent\_work\2\s\src\main\java\com\mycompany\app\App.java

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Error DescriptionLine
Missing package-info.java file.0
Line has trailing spaces.7
Utility classes should not have a public or default constructor.7
'{' should be on the previous line.8
Missing a Javadoc comment.9
'(' is followed by whitespace.9
Parameter args should be final.9
')' is preceded with whitespace.9
'{' should be on the previous line.10
'(' is followed by whitespace.11
')' is preceded with whitespace.11
Missing a Javadoc comment.14
Name 'Foo' must match pattern '^[a-z][a-zA-Z0-9]*$'.14
'{' should be on the previous line.15
+Back to top +
+ + diff --git a/Tasks/GradleV4/Tests/data/singlemodule/build/reports/checkstyle/main.xml b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/checkstyle/main.xml new file mode 100644 index 000000000000..76af7dee117b --- /dev/null +++ b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/checkstyle/main.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/Tasks/GradleV4/Tests/data/singlemodule/build/reports/checkstyle/test.html b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/checkstyle/test.html new file mode 100644 index 000000000000..84ee41ebb821 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/checkstyle/test.html @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + +
+

CheckStyle Audit

+
Designed for use with CheckStyle and Ant.
+
+

Summary

+ + + + + + + +
FilesErrors
121
+
+

Files

+ + + + + + + +
NameErrors
C:\core-agent\_work\2\s\src\test\java\com\mycompany\app\AppTest.java21
+
+ +

File C:\core-agent\_work\2\s\src\test\java\com\mycompany\app\AppTest.java

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Error DescriptionLine
Missing package-info.java file.0
Line has trailing spaces.10
'{' should be on the previous line.12
First sentence should end with a period.13
'(' is followed by whitespace.18
Parameter testName should be final.18
')' is preceded with whitespace.18
'{' should be on the previous line.19
'(' is followed by whitespace.20
')' is preceded with whitespace.20
'{' should be on the previous line.27
'(' is followed by whitespace.28
')' is preceded with whitespace.28
First sentence should end with a period.31
Method 'testApp' is not designed for extension - needs to be abstract, final or empty.34
'{' should be on the previous line.35
'(' is followed by whitespace.36
')' is preceded with whitespace.36
Method 'testApp2' is not designed for extension - needs to be abstract, final or empty.39
Missing a Javadoc comment.39
'{' should be on the previous line.40
+Back to top +
+ + diff --git a/Tasks/GradleV4/Tests/data/singlemodule/build/reports/checkstyle/test.xml b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/checkstyle/test.xml new file mode 100644 index 000000000000..1e40ccaa4642 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/checkstyle/test.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tasks/GradleV4/Tests/data/singlemodule/build/reports/findbugs/main.xml b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/findbugs/main.xml new file mode 100644 index 000000000000..537cb01552a9 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/findbugs/main.xml @@ -0,0 +1,91 @@ + + + + + C:\TestJavaProject\app\build\classes\main\main\java\TestClassWithErrors.class + C:\TestJavaProject\app\build\classes\main\main\java\TestProgram.class + C:\TestJavaProject\app\src\main\java\TestClassWithErrors.java + C:\TestJavaProject\app\src\main\java\TestProgram.java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Tasks/GradleV4/Tests/data/singlemodule/build/reports/pmd/main.html b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/pmd/main.html new file mode 100644 index 000000000000..364febe49ae3 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/pmd/main.html @@ -0,0 +1,16 @@ +PMD +

PMD report

Problems found

+ + + + + + + + + + + + + +
#FileLineProblem
1C:\Users\bgavril\source\repos\JavaGradle\src\main\java\com\mycompany\app\App.java17Avoid empty try blocks
2C:\Users\bgavril\source\repos\JavaGradle\src\main\java\com\mycompany\app\App.java20Avoid empty catch blocks
diff --git a/Tasks/GradleV4/Tests/data/singlemodule/build/reports/pmd/main.xml b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/pmd/main.xml new file mode 100644 index 000000000000..629db389aad3 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/pmd/main.xml @@ -0,0 +1,11 @@ + + + + +Avoid empty try blocks + + +Avoid empty catch blocks + + + diff --git a/Tasks/GradleV4/Tests/data/singlemodule/build/reports/pmd/test.html b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/pmd/test.html new file mode 100644 index 000000000000..d574f1d464dc --- /dev/null +++ b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/pmd/test.html @@ -0,0 +1,16 @@ +PMD +

PMD report

Problems found

+ + + + + + + + + + + + + +
#FileLineProblem
1C:\Users\bgavril\source\repos\JavaGradle\src\test\java\com\mycompany\app\AppTest.java36Avoid empty try blocks
2C:\Users\bgavril\source\repos\JavaGradle\src\test\java\com\mycompany\app\AppTest.java39Avoid empty catch blocks
diff --git a/Tasks/GradleV4/Tests/data/singlemodule/build/reports/pmd/test.xml b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/pmd/test.xml new file mode 100644 index 000000000000..a0de2cf75ed6 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/pmd/test.xml @@ -0,0 +1,11 @@ + + + + +Avoid empty try blocks + + +Avoid empty catch blocks + + + diff --git a/Tasks/GradleV4/Tests/data/singlemodule/build/reports/tests/classes/com.mycompany.app.AppTest.html b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/tests/classes/com.mycompany.app.AppTest.html new file mode 100644 index 000000000000..9db7109417ac --- /dev/null +++ b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/tests/classes/com.mycompany.app.AppTest.html @@ -0,0 +1,111 @@ + + + + + +Test results - Class com.mycompany.app.AppTest + + + + + +
+

Class com.mycompany.app.AppTest

+ +
+ + + + + +
+
+ + + + + + + +
+
+
2
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.006s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Tests

+ + + + + + + + + + + + + + + + + + +
TestDurationResult
testApp0.004spassed
testApp20.002spassed
+
+
+

Standard output

+ +
Foo
+
+
+
+
+ +
+ + diff --git a/Tasks/GradleV4/Tests/data/singlemodule/build/reports/tests/css/base-style.css b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/tests/css/base-style.css new file mode 100644 index 000000000000..4afa73e3ddcf --- /dev/null +++ b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/tests/css/base-style.css @@ -0,0 +1,179 @@ + +body { + margin: 0; + padding: 0; + font-family: sans-serif; + font-size: 12pt; +} + +body, a, a:visited { + color: #303030; +} + +#content { + padding-left: 50px; + padding-right: 50px; + padding-top: 30px; + padding-bottom: 30px; +} + +#content h1 { + font-size: 160%; + margin-bottom: 10px; +} + +#footer { + margin-top: 100px; + font-size: 80%; + white-space: nowrap; +} + +#footer, #footer a { + color: #a0a0a0; +} + +#line-wrapping-toggle { + vertical-align: middle; +} + +#label-for-line-wrapping-toggle { + vertical-align: middle; +} + +ul { + margin-left: 0; +} + +h1, h2, h3 { + white-space: nowrap; +} + +h2 { + font-size: 120%; +} + +ul.tabLinks { + padding-left: 0; + padding-top: 10px; + padding-bottom: 10px; + overflow: auto; + min-width: 800px; + width: auto !important; + width: 800px; +} + +ul.tabLinks li { + float: left; + height: 100%; + list-style: none; + padding-left: 10px; + padding-right: 10px; + padding-top: 5px; + padding-bottom: 5px; + margin-bottom: 0; + -moz-border-radius: 7px; + border-radius: 7px; + margin-right: 25px; + border: solid 1px #d4d4d4; + background-color: #f0f0f0; +} + +ul.tabLinks li:hover { + background-color: #fafafa; +} + +ul.tabLinks li.selected { + background-color: #c5f0f5; + border-color: #c5f0f5; +} + +ul.tabLinks a { + font-size: 120%; + display: block; + outline: none; + text-decoration: none; + margin: 0; + padding: 0; +} + +ul.tabLinks li h2 { + margin: 0; + padding: 0; +} + +div.tab { +} + +div.selected { + display: block; +} + +div.deselected { + display: none; +} + +div.tab table { + min-width: 350px; + width: auto !important; + width: 350px; + border-collapse: collapse; +} + +div.tab th, div.tab table { + border-bottom: solid #d0d0d0 1px; +} + +div.tab th { + text-align: left; + white-space: nowrap; + padding-left: 6em; +} + +div.tab th:first-child { + padding-left: 0; +} + +div.tab td { + white-space: nowrap; + padding-left: 6em; + padding-top: 5px; + padding-bottom: 5px; +} + +div.tab td:first-child { + padding-left: 0; +} + +div.tab td.numeric, div.tab th.numeric { + text-align: right; +} + +span.code { + display: inline-block; + margin-top: 0em; + margin-bottom: 1em; +} + +span.code pre { + font-size: 11pt; + padding-top: 10px; + padding-bottom: 10px; + padding-left: 10px; + padding-right: 10px; + margin: 0; + background-color: #f7f7f7; + border: solid 1px #d0d0d0; + min-width: 700px; + width: auto !important; + width: 700px; +} + +span.wrapped pre { + word-wrap: break-word; + white-space: pre-wrap; + word-break: break-all; +} + +label.hidden { + display: none; +} \ No newline at end of file diff --git a/Tasks/GradleV4/Tests/data/singlemodule/build/reports/tests/css/style.css b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/tests/css/style.css new file mode 100644 index 000000000000..3dc4913e7a07 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/tests/css/style.css @@ -0,0 +1,84 @@ + +#summary { + margin-top: 30px; + margin-bottom: 40px; +} + +#summary table { + border-collapse: collapse; +} + +#summary td { + vertical-align: top; +} + +.breadcrumbs, .breadcrumbs a { + color: #606060; +} + +.infoBox { + width: 110px; + padding-top: 15px; + padding-bottom: 15px; + text-align: center; +} + +.infoBox p { + margin: 0; +} + +.counter, .percent { + font-size: 120%; + font-weight: bold; + margin-bottom: 8px; +} + +#duration { + width: 125px; +} + +#successRate, .summaryGroup { + border: solid 2px #d0d0d0; + -moz-border-radius: 10px; + border-radius: 10px; +} + +#successRate { + width: 140px; + margin-left: 35px; +} + +#successRate .percent { + font-size: 180%; +} + +.success, .success a { + color: #008000; +} + +div.success, #successRate.success { + background-color: #bbd9bb; + border-color: #008000; +} + +.failures, .failures a { + color: #b60808; +} + +.skipped, .skipped a { + color: #c09853; +} + +div.failures, #successRate.failures { + background-color: #ecdada; + border-color: #b60808; +} + +ul.linkList { + padding-left: 0; +} + +ul.linkList li { + list-style: none; + margin-bottom: 5px; +} diff --git a/Tasks/GradleV4/Tests/data/singlemodule/build/reports/tests/index.html b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/tests/index.html new file mode 100644 index 000000000000..3eb82e7345c4 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/tests/index.html @@ -0,0 +1,132 @@ + + + + + +Test results - Test Summary + + + + + +
+

Test Summary

+
+ + + + + +
+
+ + + + + + + +
+
+
2
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.006s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Packages

+ + + + + + + + + + + + + + + + + + + + + +
PackageTestsFailuresIgnoredDurationSuccess rate
+com.mycompany.app +2000.006s100%
+
+
+

Classes

+ + + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+com.mycompany.app.AppTest +2000.006s100%
+
+
+ +
+ + diff --git a/Tasks/GradleV4/Tests/data/singlemodule/build/reports/tests/packages/com.mycompany.app.html b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/tests/packages/com.mycompany.app.html new file mode 100644 index 000000000000..ce67bd0eec06 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/singlemodule/build/reports/tests/packages/com.mycompany.app.html @@ -0,0 +1,103 @@ + + + + + +Test results - Package com.mycompany.app + + + + + +
+

Package com.mycompany.app

+ +
+ + + + + +
+
+ + + + + + + +
+
+
2
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.006s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Classes

+ + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+AppTest +2000.006s100%
+
+
+ +
+ + diff --git a/Tasks/GradleV4/Tests/data/singlemodule/src/main/java/com/mycompany/app/App.java b/Tasks/GradleV4/Tests/data/singlemodule/src/main/java/com/mycompany/app/App.java new file mode 100644 index 000000000000..cf44f0663086 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/singlemodule/src/main/java/com/mycompany/app/App.java @@ -0,0 +1,34 @@ +package com.mycompany.app; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } + + public static void Foo() + { + try + { + + } + catch (Exception e) + { + + } + + String s = "My short name s"; + + System.out.println("Foo"); + } + + public static void Boo() + { + System.out.println("Boo"); + } +} diff --git a/Tasks/GradleV4/Tests/data/singlemodule/src/test/java/com/mycompany/app/AppTest.java b/Tasks/GradleV4/Tests/data/singlemodule/src/test/java/com/mycompany/app/AppTest.java new file mode 100644 index 000000000000..25c4beebd0f0 --- /dev/null +++ b/Tasks/GradleV4/Tests/data/singlemodule/src/test/java/com/mycompany/app/AppTest.java @@ -0,0 +1,45 @@ +package com.mycompany.app; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } + + public void testApp2() + { + App.Foo(); + + assertTrue(true); + } +} diff --git a/Tasks/GradleV4/Tests/data/taskreport-invalid/build/sonar/report-task.txt b/Tasks/GradleV4/Tests/data/taskreport-invalid/build/sonar/report-task.txt new file mode 100644 index 000000000000..d6f61190a2cc --- /dev/null +++ b/Tasks/GradleV4/Tests/data/taskreport-invalid/build/sonar/report-task.txt @@ -0,0 +1 @@ +this is not a report-task.txt file \ No newline at end of file diff --git a/Tasks/GradleV4/Tests/data/taskreport-valid/build/sonar/report-task.txt b/Tasks/GradleV4/Tests/data/taskreport-valid/build/sonar/report-task.txt new file mode 100644 index 000000000000..9f5e949211bc --- /dev/null +++ b/Tasks/GradleV4/Tests/data/taskreport-valid/build/sonar/report-task.txt @@ -0,0 +1,5 @@ +projectKey=test +serverUrl=http://sonarqubeserver:9000 +dashboardUrl=http://sonarqubeserver:9000/dashboard/index/test +ceTaskId=asdfghjklqwertyuiopz +ceTaskUrl=http://sonarqubeserver:9000/api/ce/task?id=asdfghjklqwertyuiopz \ No newline at end of file diff --git a/Tasks/GradleV4/Tests/package-lock.json b/Tasks/GradleV4/Tests/package-lock.json new file mode 100644 index 000000000000..fad1dac86710 --- /dev/null +++ b/Tasks/GradleV4/Tests/package-lock.json @@ -0,0 +1,316 @@ +{ + "name": "Agent.Tasks.Gradle", + "version": "2.139.1", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@types/mocha": { + "version": "5.2.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/mocha/-/mocha-5.2.5.tgz", + "integrity": "sha512-lAVp+Kj54ui/vLUFxsJTMtWvZraZxum3w3Nwkble2dNuV5VnPA+Mi2oGX9XYJAaIvZi3tn3cbjS/qcJXRb6Bww==", + "dev": true + }, + "adm-zip": { + "version": "0.5.14", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/adm-zip/-/adm-zip-0.5.14.tgz", + "integrity": "sha512-DnyqqifT4Jrcvb8USYjp6FHtBpEIz1mnXu6pTRHZ0RL69LbQYiO+0lDFg5+OKA7U29oWSs3a/i8fhn8ZcceIWg==", + "dev": true + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "requires": { + "debug": "4" + } + }, + "azure-pipelines-task-lib": { + "version": "4.13.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.13.0.tgz", + "integrity": "sha512-KVguui31If98vgokNepHUxE3/D8UFB4FHV1U6XxjGOkgxxwKxbupC3knVnEiZA/hNl7X+vmj9KrYOx79iwmezQ==", + "dev": true, + "requires": { + "adm-zip": "^0.5.10", + "minimatch": "3.0.5", + "nodejs-file-downloader": "^4.11.1", + "q": "^1.5.1", + "semver": "^5.1.0", + "shelljs": "^0.8.5", + "uuid": "^3.0.1" + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "debug": { + "version": "4.3.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "requires": { + "ms": "2.1.2" + } + }, + "follow-redirects": { + "version": "1.15.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "dev": true + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true + }, + "glob": { + "version": "7.2.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dev": true, + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "hasown": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "requires": { + "function-bind": "^1.1.2" + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dev": true, + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true + }, + "is-core-module": { + "version": "2.14.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "dev": true, + "requires": { + "hasown": "^2.0.2" + } + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "requires": { + "mime-db": "1.52.0" + } + }, + "minimatch": { + "version": "3.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "dev": true, + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "nodejs-file-downloader": { + "version": "4.13.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/nodejs-file-downloader/-/nodejs-file-downloader-4.13.0.tgz", + "integrity": "sha512-nI2fKnmJWWFZF6SgMPe1iBodKhfpztLKJTtCtNYGhm/9QXmWa/Pk9Sv00qHgzEvNLe1x7hjGDRor7gcm/ChaIQ==", + "dev": true, + "requires": { + "follow-redirects": "^1.15.6", + "https-proxy-agent": "^5.0.0", + "mime-types": "^2.1.27", + "sanitize-filename": "^1.6.3" + } + }, + "once": { + "version": "1.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "requires": { + "wrappy": "1" + } + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "q": { + "version": "1.5.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "dev": true + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "requires": { + "resolve": "^1.1.6" + } + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "sanitize-filename": { + "version": "1.6.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "requires": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "semver": { + "version": "5.7.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true + }, + "shelljs": { + "version": "0.8.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true + }, + "truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "dev": true, + "requires": { + "utf8-byte-length": "^1.0.1" + } + }, + "utf8-byte-length": { + "version": "1.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==", + "dev": true + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "dev": true + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + } + } +} diff --git a/Tasks/GradleV4/Tests/package.json b/Tasks/GradleV4/Tests/package.json new file mode 100644 index 000000000000..812f3a83f5c6 --- /dev/null +++ b/Tasks/GradleV4/Tests/package.json @@ -0,0 +1,14 @@ +{ + "name": "Agent.Tasks.Gradle", + "version": "2.139.1", + "author": "Microsoft Corporation", + "description": "Build with Gradle", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/vso-agent-tasks/issues" + }, + "devDependencies": { + "@types/mocha": "5.2.5", + "azure-pipelines-task-lib": "^4.13.0" + } +} diff --git a/Tasks/GradleV4/ThirdPartyNotice.txt b/Tasks/GradleV4/ThirdPartyNotice.txt new file mode 100644 index 000000000000..f5eb449290f0 --- /dev/null +++ b/Tasks/GradleV4/ThirdPartyNotice.txt @@ -0,0 +1,3644 @@ + +THIRD-PARTY SOFTWARE NOTICES AND INFORMATION +Do Not Translate or Localize + +This Azure DevOps extension (GradleV2) is based on or incorporates material from the projects listed below (Third Party IP). The original copyright notice and the license under which Microsoft received such Third Party IP, are set forth below. Such licenses and notices are provided for informational purposes only. Microsoft licenses the Third Party IP to you under the licensing terms for the Azure DevOps extension. Microsoft reserves all other rights not expressly granted under this agreement, whether by implication, estoppel or otherwise. + +1. @types/mocha (git+https://github.com/DefinitelyTyped/DefinitelyTyped.git) +2. @types/node (git+https://github.com/DefinitelyTyped/DefinitelyTyped.git) +3. @types/q (git+https://github.com/DefinitelyTyped/DefinitelyTyped.git) +4. ajv (git+https://github.com/epoberezkin/ajv.git) +5. asn1 (git://github.com/joyent/node-asn1.git) +6. assert-plus (git+https://github.com/mcavage/node-assert-plus.git) +7. asynckit (git+https://github.com/alexindigo/asynckit.git) +8. aws-sign2 (git+https://github.com/mikeal/aws-sign.git) +9. aws4 (git+https://github.com/mhart/aws4.git) +10. balanced-match (git://github.com/juliangruber/balanced-match.git) +11. balanced-match (git://github.com/juliangruber/balanced-match.git) +12. bcrypt-pbkdf (git://github.com/joyent/node-bcrypt-pbkdf.git) +13. boolbase (git+https://github.com/fb55/boolbase.git) +14. brace-expansion (git://github.com/juliangruber/brace-expansion.git) +15. brace-expansion (git://github.com/juliangruber/brace-expansion.git) +16. caseless (git+https://github.com/mikeal/caseless.git) +17. cheerio (git://github.com/cheeriojs/cheerio.git) +18. co (git+https://github.com/tj/co.git) +19. combined-stream (git://github.com/felixge/node-combined-stream.git) +20. combined-stream (git://github.com/felixge/node-combined-stream.git) +21. concat-map (git://github.com/substack/node-concat-map.git) +22. concat-map (git://github.com/substack/node-concat-map.git) +23. core-util-is (git://github.com/isaacs/core-util-is.git) +24. css-select (git://github.com/fb55/css-select.git) +25. css-what (git+https://github.com/fb55/css-what.git) +26. dashdash (git://github.com/trentm/node-dashdash.git) +27. delayed-stream (git://github.com/felixge/node-delayed-stream.git) +28. dom-serializer (git://github.com/cheeriojs/dom-renderer.git) +29. domelementtype (git://github.com/FB55/domelementtype.git) +30. domelementtype (git://github.com/FB55/domelementtype.git) +31. domhandler (git://github.com/fb55/DomHandler.git) +32. domutils (git://github.com/FB55/domutils.git) +33. ecc-jsbn (git+https://github.com/quartzjer/ecc-jsbn.git) +34. entities (git://github.com/fb55/node-entities.git) +35. extend (git+https://github.com/justmoon/node-extend.git) +36. extsprintf (git://github.com/davepacheco/node-extsprintf.git) +37. fast-deep-equal (git+https://github.com/epoberezkin/fast-deep-equal.git) +38. fast-json-stable-stringify (git://github.com/epoberezkin/fast-json-stable-stringify.git) +39. forever-agent (git+https://github.com/mikeal/forever-agent.git) +40. form-data (git://github.com/form-data/form-data.git) +41. fs-extra (git+https://github.com/jprichardson/node-fs-extra.git) +42. fs.realpath (git+https://github.com/isaacs/fs.realpath.git) +43. getpass (git+https://github.com/arekinath/node-getpass.git) +44. glob (git://github.com/isaacs/node-glob.git) +45. graceful-fs (git+https://github.com/isaacs/node-graceful-fs.git) +46. har-schema (git+https://github.com/ahmadnassri/har-schema.git) +47. har-validator (git+https://github.com/ahmadnassri/har-validator.git) +48. htmlparser2 (git://github.com/fb55/htmlparser2.git) +49. http-signature (git://github.com/joyent/node-http-signature.git) +50. inflight (git+https://github.com/npm/inflight.git) +51. inherits (git://github.com/isaacs/inherits.git) +52. is-typedarray (git://github.com/hughsk/is-typedarray.git) +53. isarray (git://github.com/juliangruber/isarray.git) +54. isstream (git+https://github.com/rvagg/isstream.git) +55. js-base64 (git://github.com/dankogai/js-base64.git) +56. jsbn (git+https://github.com/andyperlitch/jsbn.git) +57. json-schema (git+ssh://git@github.com/kriszyp/json-schema.git) +58. json-schema-traverse (git+https://github.com/epoberezkin/json-schema-traverse.git) +59. json-stringify-safe (git://github.com/isaacs/json-stringify-safe.git) +60. jsonfile (git+ssh://git@github.com/jprichardson/node-jsonfile.git) +61. jsprim (git://github.com/joyent/node-jsprim.git) +62. klaw (git+https://github.com/jprichardson/node-klaw.git) +63. lodash.assignin (git+https://github.com/lodash/lodash.git) +64. lodash.bind (git+https://github.com/lodash/lodash.git) +65. lodash.defaults (git+https://github.com/lodash/lodash.git) +66. lodash.filter (git+https://github.com/lodash/lodash.git) +67. lodash.flatten (git+https://github.com/lodash/lodash.git) +68. lodash.foreach (git+https://github.com/lodash/lodash.git) +69. lodash.map (git+https://github.com/lodash/lodash.git) +70. lodash.merge (git+https://github.com/lodash/lodash.git) +71. lodash.pick (git+https://github.com/lodash/lodash.git) +72. lodash.reduce (git+https://github.com/lodash/lodash.git) +73. lodash.reject (git+https://github.com/lodash/lodash.git) +74. lodash.some (git+https://github.com/lodash/lodash.git) +75. mime-db (git+https://github.com/jshttp/mime-db.git) +76. mime-types (git+https://github.com/jshttp/mime-types.git) +77. minimatch (git://github.com/isaacs/minimatch.git) +78. minimatch (git://github.com/isaacs/minimatch.git) +79. mockery (git://github.com/mfncooper/mockery.git) +80. mockery (git://github.com/mfncooper/mockery.git) +81. node-uuid (git+https://github.com/broofa/node-uuid.git) +82. nth-check (git+https://github.com/fb55/nth-check.git) +83. oauth-sign (git+https://github.com/mikeal/oauth-sign.git) +84. once (git://github.com/isaacs/once.git) +85. os (git+https://github.com/DiegoRBaquero/node-os.git) +86. path-is-absolute (git+https://github.com/sindresorhus/path-is-absolute.git) +87. performance-now (git://github.com/braveg1rl/performance-now.git) +88. process-nextick-args (git+https://github.com/calvinmetcalf/process-nextick-args.git) +89. psl (git+ssh://git@github.com/wrangr/psl.git) +90. punycode (git+https://github.com/bestiejs/punycode.js.git) +91. q (git://github.com/kriskowal/q.git) +92. q (git://github.com/kriskowal/q.git) +93. qs (git+https://github.com/ljharb/qs.git) +94. readable-stream (git://github.com/nodejs/readable-stream.git) +95. request (git+https://github.com/request/request.git) +96. rimraf (git://github.com/isaacs/rimraf.git) +97. safe-buffer (git://github.com/feross/safe-buffer.git) +98. safer-buffer (git+https://github.com/ChALkeR/safer-buffer.git) +99. sax (git://github.com/isaacs/sax-js.git) +100. semver (git+https://github.com/npm/node-semver.git) +101. semver (git+https://github.com/npm/node-semver.git) +102. semver-compare (git://github.com/substack/semver-compare.git) +103. shelljs (git://github.com/arturadib/shelljs.git) +104. shelljs (git://github.com/arturadib/shelljs.git) +105. sshpk (git+https://github.com/arekinath/node-sshpk.git) +106. string_decoder (git://github.com/nodejs/string_decoder.git) +107. strip-bom (git+https://github.com/sindresorhus/strip-bom.git) +108. tough-cookie (git://github.com/salesforce/tough-cookie.git) +109. tunnel (git+https://github.com/koichik/node-tunnel.git) +110. tunnel-agent (git+https://github.com/mikeal/tunnel-agent.git) +111. tweetnacl (git+https://github.com/dchest/tweetnacl-js.git) +112. typed-rest-client (git+https://github.com/Microsoft/typed-rest-client.git) +113. typed-rest-client (git+https://github.com/Microsoft/typed-rest-client.git) +114. underscore (git://github.com/jashkenas/underscore.git) +115. util-deprecate (git://github.com/TooTallNate/util-deprecate.git) +116. uuid (git+https://github.com/kelektiv/node-uuid.git) +117. uuid (git+https://github.com/kelektiv/node-uuid.git) +118. verror (git://github.com/davepacheco/node-verror.git) +119. vso-node-api (git+https://github.com/Microsoft/vso-node-api.git) +120. vsts-task-lib (git+https://github.com/Microsoft/vsts-task-lib.git) +121. vsts-task-lib (git+https://github.com/Microsoft/vsts-task-lib.git) +122. vsts-task-lib (git+https://github.com/Microsoft/vsts-task-lib.git) +123. vsts-task-tool-lib (git+https://github.com/microsoft/vsts-task-installer-lib.git) +124. wrappy (git+https://github.com/npm/wrappy.git) +125. xml2js (git+https://github.com/Leonidas-from-XIV/node-xml2js.git) +126. xmlbuilder (git://github.com/oozcitak/xmlbuilder-js.git) + + +%% @types/mocha NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE +========================================= +END OF @types/mocha NOTICES, INFORMATION, AND LICENSE + +%% @types/node NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE +========================================= +END OF @types/node NOTICES, INFORMATION, AND LICENSE + +%% @types/q NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE +========================================= +END OF @types/q NOTICES, INFORMATION, AND LICENSE + +%% ajv NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2015 Evgeny Poberezkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF ajv NOTICES, INFORMATION, AND LICENSE + +%% asn1 NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2011 Mark Cavage, All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE +========================================= +END OF asn1 NOTICES, INFORMATION, AND LICENSE + +%% assert-plus NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +NO LICENSE FOUND +========================================= +END OF assert-plus NOTICES, INFORMATION, AND LICENSE + +%% asynckit NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2016 Alex Indigo + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF asynckit NOTICES, INFORMATION, AND LICENSE + +%% aws-sign2 NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Apache License + +Version 2.0, January 2004 + +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of this License; and + +You must cause any modified files to carry prominent notices stating that You changed the files; and + +You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + +If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS +========================================= +END OF aws-sign2 NOTICES, INFORMATION, AND LICENSE + +%% aws4 NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright 2013 Michael Hart (michael.hart.au@gmail.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF aws4 NOTICES, INFORMATION, AND LICENSE + +%% balanced-match NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF balanced-match NOTICES, INFORMATION, AND LICENSE + +%% balanced-match NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF balanced-match NOTICES, INFORMATION, AND LICENSE + +%% bcrypt-pbkdf NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The Blowfish portions are under the following license: + +Blowfish block cipher for OpenBSD +Copyright 1997 Niels Provos +All rights reserved. + +Implementation advice by David Mazieres . + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +The bcrypt_pbkdf portions are under the following license: + +Copyright (c) 2013 Ted Unangst + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + + +Performance improvements (Javascript-specific): + +Copyright 2016, Joyent Inc +Author: Alex Wilson + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF bcrypt-pbkdf NOTICES, INFORMATION, AND LICENSE + +%% boolbase NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +NO LICENSE FOUND +========================================= +END OF boolbase NOTICES, INFORMATION, AND LICENSE + +%% brace-expansion NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + +Copyright (c) 2013 Julian Gruber + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF brace-expansion NOTICES, INFORMATION, AND LICENSE + +%% brace-expansion NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + +Copyright (c) 2013 Julian Gruber + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF brace-expansion NOTICES, INFORMATION, AND LICENSE + +%% caseless NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +1. Definitions. +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: +You must give any other recipients of the Work or Derivative Works a copy of this License; and +You must cause any modified files to carry prominent notices stating that You changed the files; and +You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and +If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. +END OF TERMS AND CONDITIONS +========================================= +END OF caseless NOTICES, INFORMATION, AND LICENSE + +%% cheerio NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +NO LICENSE FOUND +========================================= +END OF cheerio NOTICES, INFORMATION, AND LICENSE + +%% co NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF co NOTICES, INFORMATION, AND LICENSE + +%% combined-stream NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2011 Debuggable Limited + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF combined-stream NOTICES, INFORMATION, AND LICENSE + +%% combined-stream NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2011 Debuggable Limited + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF combined-stream NOTICES, INFORMATION, AND LICENSE + +%% concat-map NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF concat-map NOTICES, INFORMATION, AND LICENSE + +%% concat-map NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF concat-map NOTICES, INFORMATION, AND LICENSE + +%% core-util-is NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright Node.js contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +========================================= +END OF core-util-is NOTICES, INFORMATION, AND LICENSE + +%% css-select NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) Felix Böhm +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF css-select NOTICES, INFORMATION, AND LICENSE + +%% css-what NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) Felix Böhm +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF css-what NOTICES, INFORMATION, AND LICENSE + +%% dashdash NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +# This is the MIT license + +Copyright (c) 2013 Trent Mick. All rights reserved. +Copyright (c) 2013 Joyent Inc. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF dashdash NOTICES, INFORMATION, AND LICENSE + +%% delayed-stream NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2011 Debuggable Limited + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF delayed-stream NOTICES, INFORMATION, AND LICENSE + +%% dom-serializer NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +License + +(The MIT License) + +Copyright (c) 2014 The cheeriojs contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF dom-serializer NOTICES, INFORMATION, AND LICENSE + +%% domelementtype NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) Felix Böhm +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF domelementtype NOTICES, INFORMATION, AND LICENSE + +%% domelementtype NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) Felix Böhm +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF domelementtype NOTICES, INFORMATION, AND LICENSE + +%% domhandler NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) Felix Böhm +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF domhandler NOTICES, INFORMATION, AND LICENSE + +%% domutils NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) Felix Böhm +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF domutils NOTICES, INFORMATION, AND LICENSE + +%% ecc-jsbn NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 Jeremie Miller + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF ecc-jsbn NOTICES, INFORMATION, AND LICENSE + +%% entities NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) Felix Böhm +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF entities NOTICES, INFORMATION, AND LICENSE + +%% extend NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 Stefan Thomas + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF extend NOTICES, INFORMATION, AND LICENSE + +%% extsprintf NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2012, Joyent, Inc. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE +========================================= +END OF extsprintf NOTICES, INFORMATION, AND LICENSE + +%% fast-deep-equal NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + +Copyright (c) 2017 Evgeny Poberezkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF fast-deep-equal NOTICES, INFORMATION, AND LICENSE + +%% fast-json-stable-stringify NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF fast-json-stable-stringify NOTICES, INFORMATION, AND LICENSE + +%% forever-agent NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Apache License + +Version 2.0, January 2004 + +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of this License; and + +You must cause any modified files to carry prominent notices stating that You changed the files; and + +You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + +If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS +========================================= +END OF forever-agent NOTICES, INFORMATION, AND LICENSE + +%% form-data NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +========================================= +END OF form-data NOTICES, INFORMATION, AND LICENSE + +%% fs-extra NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2011-2016 JP Richardson + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files +(the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, + merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF fs-extra NOTICES, INFORMATION, AND LICENSE + +%% fs.realpath NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +---- + +This library bundles a version of the `fs.realpath` and `fs.realpathSync` +methods from Node.js v0.10 under the terms of the Node.js MIT license. + +Node's license follows, also included at the header of `old.js` which contains +the licensed code: + + Copyright Joyent, Inc. and other Node contributors. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +========================================= +END OF fs.realpath NOTICES, INFORMATION, AND LICENSE + +%% getpass NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright Joyent, Inc. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +========================================= +END OF getpass NOTICES, INFORMATION, AND LICENSE + +%% glob NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF glob NOTICES, INFORMATION, AND LICENSE + +%% graceful-fs NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter, Ben Noordhuis, and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF graceful-fs NOTICES, INFORMATION, AND LICENSE + +%% har-schema NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2015, Ahmad Nassri + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF har-schema NOTICES, INFORMATION, AND LICENSE + +%% har-validator NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2015, Ahmad Nassri + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF har-validator NOTICES, INFORMATION, AND LICENSE + +%% htmlparser2 NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright 2010, 2011, Chris Winberry . All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +========================================= +END OF htmlparser2 NOTICES, INFORMATION, AND LICENSE + +%% http-signature NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright Joyent, Inc. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +========================================= +END OF http-signature NOTICES, INFORMATION, AND LICENSE + +%% inflight NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF inflight NOTICES, INFORMATION, AND LICENSE + +%% inherits NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF inherits NOTICES, INFORMATION, AND LICENSE + +%% is-typedarray NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF is-typedarray NOTICES, INFORMATION, AND LICENSE + +%% isarray NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +NO LICENSE FOUND +========================================= +END OF isarray NOTICES, INFORMATION, AND LICENSE + +%% isstream NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) +===================== + +Copyright (c) 2015 Rod Vagg +--------------------------- + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF isstream NOTICES, INFORMATION, AND LICENSE + +%% js-base64 NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2014, Dan Kogai +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of {{{project}}} nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF js-base64 NOTICES, INFORMATION, AND LICENSE + +%% jsbn NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Licensing +--------- + +This software is covered under the following copyright: + +/* + * Copyright (c) 2003-2005 Tom Wu + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF + * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * In addition, the following condition applies: + * + * All redistributions must retain an intact copy of this copyright notice + * and disclaimer. + */ + +Address all questions regarding this license to: + + Tom Wu + tjw@cs.Stanford.EDU +========================================= +END OF jsbn NOTICES, INFORMATION, AND LICENSE + +%% json-schema NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +NO LICENSE FOUND +========================================= +END OF json-schema NOTICES, INFORMATION, AND LICENSE + +%% json-schema-traverse NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + +Copyright (c) 2017 Evgeny Poberezkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF json-schema-traverse NOTICES, INFORMATION, AND LICENSE + +%% json-stringify-safe NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF json-stringify-safe NOTICES, INFORMATION, AND LICENSE + +%% jsonfile NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2012-2015, JP Richardson + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files +(the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, + merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF jsonfile NOTICES, INFORMATION, AND LICENSE + +%% jsprim NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2012, Joyent, Inc. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE +========================================= +END OF jsprim NOTICES, INFORMATION, AND LICENSE + +%% klaw NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2015-2016 JP Richardson + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files +(the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, + merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF klaw NOTICES, INFORMATION, AND LICENSE + +%% lodash.assignin NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.assignin NOTICES, INFORMATION, AND LICENSE + +%% lodash.bind NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.bind NOTICES, INFORMATION, AND LICENSE + +%% lodash.defaults NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.defaults NOTICES, INFORMATION, AND LICENSE + +%% lodash.filter NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.filter NOTICES, INFORMATION, AND LICENSE + +%% lodash.flatten NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.flatten NOTICES, INFORMATION, AND LICENSE + +%% lodash.foreach NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.foreach NOTICES, INFORMATION, AND LICENSE + +%% lodash.map NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.map NOTICES, INFORMATION, AND LICENSE + +%% lodash.merge NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright JS Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.merge NOTICES, INFORMATION, AND LICENSE + +%% lodash.pick NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.pick NOTICES, INFORMATION, AND LICENSE + +%% lodash.reduce NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.reduce NOTICES, INFORMATION, AND LICENSE + +%% lodash.reject NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.reject NOTICES, INFORMATION, AND LICENSE + +%% lodash.some NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.some NOTICES, INFORMATION, AND LICENSE + +%% mime-db NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 Jonathan Ong me@jongleberry.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF mime-db NOTICES, INFORMATION, AND LICENSE + +%% mime-types NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF mime-types NOTICES, INFORMATION, AND LICENSE + +%% minimatch NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF minimatch NOTICES, INFORMATION, AND LICENSE + +%% minimatch NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF minimatch NOTICES, INFORMATION, AND LICENSE + +%% mockery NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyrights for code authored by Yahoo! Inc. is licensed under the following + terms: + + MIT License + + Copyright (c) 2011 Yahoo! Inc. All Rights Reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +========================================= +END OF mockery NOTICES, INFORMATION, AND LICENSE + +%% mockery NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyrights for code authored by Yahoo! Inc. is licensed under the following + terms: + + MIT License + + Copyright (c) 2011 Yahoo! Inc. All Rights Reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +========================================= +END OF mockery NOTICES, INFORMATION, AND LICENSE + +%% node-uuid NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2010-2012 Robert Kieffer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF node-uuid NOTICES, INFORMATION, AND LICENSE + +%% nth-check NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +NO LICENSE FOUND +========================================= +END OF nth-check NOTICES, INFORMATION, AND LICENSE + +%% oauth-sign NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Apache License + +Version 2.0, January 2004 + +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of this License; and + +You must cause any modified files to carry prominent notices stating that You changed the files; and + +You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + +If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS +========================================= +END OF oauth-sign NOTICES, INFORMATION, AND LICENSE + +%% once NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF once NOTICES, INFORMATION, AND LICENSE + +%% os NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2016 Diego Rodríguez Baquero + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF os NOTICES, INFORMATION, AND LICENSE + +%% path-is-absolute NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF path-is-absolute NOTICES, INFORMATION, AND LICENSE + +%% performance-now NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2013 Braveg1rl + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF performance-now NOTICES, INFORMATION, AND LICENSE + +%% process-nextick-args NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +# Copyright (c) 2015 Calvin Metcalf + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE.** +========================================= +END OF process-nextick-args NOTICES, INFORMATION, AND LICENSE + +%% psl NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +NO LICENSE FOUND +========================================= +END OF psl NOTICES, INFORMATION, AND LICENSE + +%% punycode NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +NO LICENSE FOUND +========================================= +END OF punycode NOTICES, INFORMATION, AND LICENSE + +%% q NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright 2009–2017 Kristopher Michael Kowal. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +========================================= +END OF q NOTICES, INFORMATION, AND LICENSE + +%% q NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright 2009–2017 Kristopher Michael Kowal. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +========================================= +END OF q NOTICES, INFORMATION, AND LICENSE + +%% qs NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2014 Nathan LaFreniere and other contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * The names of any contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + * * * + +The complete list of contributors can be found at: https://github.com/hapijs/qs/graphs/contributors +========================================= +END OF qs NOTICES, INFORMATION, AND LICENSE + +%% readable-stream NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Node.js is licensed for use as follows: + +""" +Copyright Node.js contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" + +This license applies to parts of Node.js originating from the +https://github.com/joyent/node repository: + +""" +Copyright Joyent, Inc. and other Node contributors. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" +========================================= +END OF readable-stream NOTICES, INFORMATION, AND LICENSE + +%% request NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Apache License + +Version 2.0, January 2004 + +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of this License; and + +You must cause any modified files to carry prominent notices stating that You changed the files; and + +You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + +If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS +========================================= +END OF request NOTICES, INFORMATION, AND LICENSE + +%% rimraf NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF rimraf NOTICES, INFORMATION, AND LICENSE + +%% safe-buffer NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) Feross Aboukhadijeh + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF safe-buffer NOTICES, INFORMATION, AND LICENSE + +%% safer-buffer NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + +Copyright (c) 2018 Nikita Skovoroda + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF safer-buffer NOTICES, INFORMATION, AND LICENSE + +%% sax NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +==== + +`String.fromCodePoint` by Mathias Bynens used according to terms of MIT +License, as follows: + + Copyright Mathias Bynens + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF sax NOTICES, INFORMATION, AND LICENSE + +%% semver NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF semver NOTICES, INFORMATION, AND LICENSE + +%% semver NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF semver NOTICES, INFORMATION, AND LICENSE + +%% semver-compare NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF semver-compare NOTICES, INFORMATION, AND LICENSE + +%% shelljs NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2012, Artur Adib +All rights reserved. + +You may use this project under the terms of the New BSD license as follows: + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Artur Adib nor the + names of the contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL ARTUR ADIB BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF shelljs NOTICES, INFORMATION, AND LICENSE + +%% shelljs NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2012, Artur Adib +All rights reserved. + +You may use this project under the terms of the New BSD license as follows: + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Artur Adib nor the + names of the contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL ARTUR ADIB BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF shelljs NOTICES, INFORMATION, AND LICENSE + +%% sshpk NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright Joyent, Inc. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +========================================= +END OF sshpk NOTICES, INFORMATION, AND LICENSE + +%% string_decoder NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Node.js is licensed for use as follows: + +""" +Copyright Node.js contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" + +This license applies to parts of Node.js originating from the +https://github.com/joyent/node repository: + +""" +Copyright Joyent, Inc. and other Node contributors. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" +========================================= +END OF string_decoder NOTICES, INFORMATION, AND LICENSE + +%% strip-bom NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF strip-bom NOTICES, INFORMATION, AND LICENSE + +%% tough-cookie NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2015, Salesforce.com, Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +3. Neither the name of Salesforce.com nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF tough-cookie NOTICES, INFORMATION, AND LICENSE + +%% tunnel NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2012 Koichi Kobayashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF tunnel NOTICES, INFORMATION, AND LICENSE + +%% tunnel-agent NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Apache License + +Version 2.0, January 2004 + +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of this License; and + +You must cause any modified files to carry prominent notices stating that You changed the files; and + +You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + +If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS +========================================= +END OF tunnel-agent NOTICES, INFORMATION, AND LICENSE + +%% tweetnacl NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to +========================================= +END OF tweetnacl NOTICES, INFORMATION, AND LICENSE + +%% typed-rest-client NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Visual Studio Team Services Client for Node.js + +Copyright (c) Microsoft Corporation + +All rights reserved. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF typed-rest-client NOTICES, INFORMATION, AND LICENSE + +%% typed-rest-client NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Visual Studio Team Services Client for Node.js + +Copyright (c) Microsoft Corporation + +All rights reserved. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF typed-rest-client NOTICES, INFORMATION, AND LICENSE + +%% underscore NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative +Reporters & Editors + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF underscore NOTICES, INFORMATION, AND LICENSE + +%% util-deprecate NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014 Nathan Rajlich + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF util-deprecate NOTICES, INFORMATION, AND LICENSE + +%% uuid NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2010-2016 Robert Kieffer and other contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF uuid NOTICES, INFORMATION, AND LICENSE + +%% uuid NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2010-2016 Robert Kieffer and other contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF uuid NOTICES, INFORMATION, AND LICENSE + +%% verror NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2016, Joyent, Inc. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE +========================================= +END OF verror NOTICES, INFORMATION, AND LICENSE + +%% vso-node-api NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +NO LICENSE FOUND +========================================= +END OF vso-node-api NOTICES, INFORMATION, AND LICENSE + +%% vsts-task-lib NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) Microsoft Corporation. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF vsts-task-lib NOTICES, INFORMATION, AND LICENSE + +%% vsts-task-lib NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) Microsoft Corporation. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF vsts-task-lib NOTICES, INFORMATION, AND LICENSE + +%% vsts-task-lib NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) Microsoft Corporation. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF vsts-task-lib NOTICES, INFORMATION, AND LICENSE + +%% vsts-task-tool-lib NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE +========================================= +END OF vsts-task-tool-lib NOTICES, INFORMATION, AND LICENSE + +%% wrappy NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF wrappy NOTICES, INFORMATION, AND LICENSE + +%% xml2js NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright 2010, 2011, 2012, 2013. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +========================================= +END OF xml2js NOTICES, INFORMATION, AND LICENSE + +%% xmlbuilder NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2013 Ozgur Ozcitak + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF xmlbuilder NOTICES, INFORMATION, AND LICENSE + diff --git a/Tasks/GradleV4/_buildConfigs/Node20/.npmrc b/Tasks/GradleV4/_buildConfigs/Node20/.npmrc new file mode 100644 index 000000000000..969ccea07661 --- /dev/null +++ b/Tasks/GradleV4/_buildConfigs/Node20/.npmrc @@ -0,0 +1,3 @@ +registry=https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ + +always-auth=true \ No newline at end of file diff --git a/Tasks/GradleV4/_buildConfigs/Node20/Tests/.npmrc b/Tasks/GradleV4/_buildConfigs/Node20/Tests/.npmrc new file mode 100644 index 000000000000..969ccea07661 --- /dev/null +++ b/Tasks/GradleV4/_buildConfigs/Node20/Tests/.npmrc @@ -0,0 +1,3 @@ +registry=https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ + +always-auth=true \ No newline at end of file diff --git a/Tasks/GradleV4/_buildConfigs/Node20/Tests/package-lock.json b/Tasks/GradleV4/_buildConfigs/Node20/Tests/package-lock.json new file mode 100644 index 000000000000..ba417282e26e --- /dev/null +++ b/Tasks/GradleV4/_buildConfigs/Node20/Tests/package-lock.json @@ -0,0 +1,420 @@ +{ + "name": "Agent.Tasks.Gradle", + "version": "2.139.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "Agent.Tasks.Gradle", + "version": "2.139.1", + "license": "MIT", + "devDependencies": { + "@types/mocha": "5.2.5", + "azure-pipelines-task-lib": "^4.13.0" + } + }, + "node_modules/@types/mocha": { + "version": "5.2.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/mocha/-/mocha-5.2.5.tgz", + "integrity": "sha512-lAVp+Kj54ui/vLUFxsJTMtWvZraZxum3w3Nwkble2dNuV5VnPA+Mi2oGX9XYJAaIvZi3tn3cbjS/qcJXRb6Bww==", + "dev": true + }, + "node_modules/adm-zip": { + "version": "0.5.14", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/adm-zip/-/adm-zip-0.5.14.tgz", + "integrity": "sha512-DnyqqifT4Jrcvb8USYjp6FHtBpEIz1mnXu6pTRHZ0RL69LbQYiO+0lDFg5+OKA7U29oWSs3a/i8fhn8ZcceIWg==", + "dev": true, + "engines": { + "node": ">=12.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/azure-pipelines-task-lib": { + "version": "4.13.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.13.0.tgz", + "integrity": "sha512-KVguui31If98vgokNepHUxE3/D8UFB4FHV1U6XxjGOkgxxwKxbupC3knVnEiZA/hNl7X+vmj9KrYOx79iwmezQ==", + "dev": true, + "dependencies": { + "adm-zip": "^0.5.10", + "minimatch": "3.0.5", + "nodejs-file-downloader": "^4.11.1", + "q": "^1.5.1", + "semver": "^5.1.0", + "shelljs": "^0.8.5", + "uuid": "^3.0.1" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/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/concat-map": { + "version": "0.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "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/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-core-module": { + "version": "2.9.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nodejs-file-downloader": { + "version": "4.13.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/nodejs-file-downloader/-/nodejs-file-downloader-4.13.0.tgz", + "integrity": "sha512-nI2fKnmJWWFZF6SgMPe1iBodKhfpztLKJTtCtNYGhm/9QXmWa/Pk9Sv00qHgzEvNLe1x7hjGDRor7gcm/ChaIQ==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.6", + "https-proxy-agent": "^5.0.0", + "mime-types": "^2.1.27", + "sanitize-filename": "^1.6.3" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/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://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", + "dev": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.8.1", + "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/sanitize-filename": { + "version": "1.6.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/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/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "dev": true, + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, + "node_modules/utf8-byte-length": { + "version": "1.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==", + "dev": true + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } +} diff --git a/Tasks/GradleV4/_buildConfigs/Node20/Tests/package.json b/Tasks/GradleV4/_buildConfigs/Node20/Tests/package.json new file mode 100644 index 000000000000..812f3a83f5c6 --- /dev/null +++ b/Tasks/GradleV4/_buildConfigs/Node20/Tests/package.json @@ -0,0 +1,14 @@ +{ + "name": "Agent.Tasks.Gradle", + "version": "2.139.1", + "author": "Microsoft Corporation", + "description": "Build with Gradle", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/vso-agent-tasks/issues" + }, + "devDependencies": { + "@types/mocha": "5.2.5", + "azure-pipelines-task-lib": "^4.13.0" + } +} diff --git a/Tasks/GradleV4/_buildConfigs/Node20/package-lock.json b/Tasks/GradleV4/_buildConfigs/Node20/package-lock.json new file mode 100644 index 000000000000..48ec25bec7cf --- /dev/null +++ b/Tasks/GradleV4/_buildConfigs/Node20/package-lock.json @@ -0,0 +1,2444 @@ +{ + "name": "Agent.Tasks.Gradle", + "version": "2.208.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "Agent.Tasks.Gradle", + "version": "2.208.0", + "license": "MIT", + "dependencies": { + "@types/mocha": "^5.2.7", + "@types/node": "^20.3.1", + "azure-pipelines-task-lib": "^4.16.0", + "azure-pipelines-tasks-codeanalysis-common": "^2.242.0", + "azure-pipelines-tasks-java-common": "^2.219.1", + "azure-pipelines-tasks-utility-common": "^3.241.0" + }, + "devDependencies": { + "typescript": "5.1.6" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "deprecated": "Use @eslint/config-array instead", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "deprecated": "Use @eslint/object-schema instead" + }, + "node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "9.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@sinonjs/fake-timers/node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "7.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@sinonjs/samsam/-/samsam-7.0.1.tgz", + "integrity": "sha512-zsAk2Jkiq89mhZovB2LLOdTCxJF4hqqTToGP0ASWlhp4I1hqOjcfmZGafXntCN7MDC6yySH0mFHrYtHceOeLmw==", + "dependencies": { + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==" + }, + "node_modules/@types/mocha": { + "version": "5.2.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==" + }, + "node_modules/@types/node": { + "version": "20.14.15", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/node/-/node-20.14.15.tgz", + "integrity": "sha512-Fz1xDMCF/B00/tYSVMlmK7hVeLh7jE5f3B7X1/hmV0MJBwE27KlS7EvD/Yp+z1lm8mVhwV5w+n8jOZG8AfTlKw==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==" + }, + "node_modules/@types/uuid": { + "version": "3.4.13", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/uuid/-/uuid-3.4.13.tgz", + "integrity": "sha512-pAeZeUbLE4Z9Vi9wsWV2bYPTweEHeJJy0G4pEjOA/FSvy1Ad5U5Km8iDV6TKre1mjBiVNfAdVHKruP8bAh4Q5A==" + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/adm-zip": { + "version": "0.5.15", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/adm-zip/-/adm-zip-0.5.15.tgz", + "integrity": "sha512-jYPWSeOA8EFoZnucrKCNihqBjoEGQSU4HKgHYQgKNEQ0pQF9a/DYuo/+fAxY76k4qe75LUlLWpAM1QWcBMTOKw==", + "engines": { + "node": ">=12.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "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://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/azure-pipelines-task-lib": { + "version": "4.17.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.17.2.tgz", + "integrity": "sha512-kKG1I2cpHM0kqn/YlnZiA2J59/x4OraEZZ1/Cp6A7XOu0e+E1PfrfldVVOU/tdeW/xOFoexqA4EEV27LfH0YqQ==", + "license": "MIT", + "dependencies": { + "adm-zip": "^0.5.10", + "minimatch": "3.0.5", + "nodejs-file-downloader": "^4.11.1", + "q": "^1.5.1", + "semver": "^5.7.2", + "shelljs": "^0.8.5", + "uuid": "^3.0.1" + } + }, + "node_modules/azure-pipelines-tasks-codeanalysis-common": { + "version": "2.245.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-tasks-codeanalysis-common/-/azure-pipelines-tasks-codeanalysis-common-2.245.0.tgz", + "integrity": "sha512-Z983X3eaLXfKR8rTnAyj8RVkKFvQhyCA31HRI4ASOeIZr7diVk5wEg8jY3pzjRnRStTje39xFTcgp1JQB7JhSg==", + "license": "MIT", + "dependencies": { + "@types/node": "^10.17.0", + "azure-pipelines-task-lib": "^4.17.0", + "glob": "7.1.0", + "mocha": "^10.5.1", + "rewire": "^6.0.0", + "sinon": "^14.0.0", + "xml2js": "^0.6.2" + } + }, + "node_modules/azure-pipelines-tasks-codeanalysis-common/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, + "node_modules/azure-pipelines-tasks-codeanalysis-common/node_modules/glob": { + "version": "7.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-7.1.0.tgz", + "integrity": "sha512-htk4y5TQ9NjktQk5oR7AudqzQKZd4JvbCOklhnygiF6r9ExeTrl+dTwFql7y5+zaHkc/QeLdDrcF5GVfM5bl9w==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/azure-pipelines-tasks-java-common": { + "version": "2.245.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-tasks-java-common/-/azure-pipelines-tasks-java-common-2.245.0.tgz", + "integrity": "sha512-ckffShjlfzaRnw5AZoirCTQRc5MZL5gi/JBHuBXH1yC0LovbhUHOoCBXI0CXKdXEl9/3sK6rSd1YoD7R1BY8HQ==", + "license": "MIT", + "dependencies": { + "@types/mocha": "^5.2.7", + "@types/node": "^10.17.0", + "@types/semver": "^7.3.3", + "azure-pipelines-task-lib": "^4.17.0", + "semver": "^7.3.2" + } + }, + "node_modules/azure-pipelines-tasks-java-common/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, + "node_modules/azure-pipelines-tasks-java-common/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/azure-pipelines-tasks-utility-common": { + "version": "3.242.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-tasks-utility-common/-/azure-pipelines-tasks-utility-common-3.242.0.tgz", + "integrity": "sha512-PCpJj2f+v1SxjP+NYtSeTQdgPE1WuadzeKcjaqzXSuHGf4KbDcVSQVD2IEo3dAGrvVfLZLnk4B2x/rwbWzminQ==", + "dependencies": { + "@types/node": "^16.11.39", + "azure-pipelines-task-lib": "^4.11.0", + "azure-pipelines-tool-lib": "^2.0.7", + "js-yaml": "3.13.1", + "semver": "^5.7.2" + } + }, + "node_modules/azure-pipelines-tasks-utility-common/node_modules/@types/node": { + "version": "16.18.105", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/node/-/node-16.18.105.tgz", + "integrity": "sha512-w2d0Z9yMk07uH3+Cx0N8lqFyi3yjXZxlbYappPj+AsOlT02OyxyiuNoNHdGt6EuiSm8Wtgp2YV7vWg+GMFrvFA==" + }, + "node_modules/azure-pipelines-tool-lib": { + "version": "2.0.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-tool-lib/-/azure-pipelines-tool-lib-2.0.7.tgz", + "integrity": "sha512-1FN67ypNwNhgZllYSm4/pAQdffSfEZJhwW8YeNvm/cKDTS6t6bukTBIkt04c1CsaQe7Ot+eDOVMn41wX1ketXw==", + "dependencies": { + "@types/semver": "^5.3.0", + "@types/uuid": "^3.4.5", + "azure-pipelines-task-lib": "^4.1.0", + "semver": "^5.7.0", + "semver-compare": "^1.0.0", + "typed-rest-client": "^1.8.6", + "uuid": "^3.3.2" + } + }, + "node_modules/azure-pipelines-tool-lib/node_modules/@types/semver": { + "version": "5.5.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "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" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "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://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==" + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==" + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "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://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "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/glob-parent": { + "version": "5.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.15.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.13.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "node_modules/just-extend": { + "version": "6.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha": { + "version": "10.7.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mocha/-/mocha-10.7.3.tgz", + "integrity": "sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==", + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.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.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/mocha/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "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/mocha/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "node_modules/nise": { + "version": "5.1.9", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/nise/-/nise-5.1.9.tgz", + "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", + "dependencies": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" + } + }, + "node_modules/nise/node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/nise/node_modules/@sinonjs/fake-timers": { + "version": "11.2.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", + "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/nodejs-file-downloader": { + "version": "4.13.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/nodejs-file-downloader/-/nodejs-file-downloader-4.13.0.tgz", + "integrity": "sha512-nI2fKnmJWWFZF6SgMPe1iBodKhfpztLKJTtCtNYGhm/9QXmWa/Pk9Sv00qHgzEvNLe1x7hjGDRor7gcm/ChaIQ==", + "dependencies": { + "follow-redirects": "^1.15.6", + "https-proxy-agent": "^5.0.0", + "mime-types": "^2.1.27", + "sanitize-filename": "^1.6.3" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "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://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "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/resolve-from": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/rewire": { + "version": "6.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/rewire/-/rewire-6.0.0.tgz", + "integrity": "sha512-7sZdz5dptqBCapJYocw9EcppLU62KMEqDLIILJnNET2iqzXHaQfaVP5SOJ06XvjX+dNIDJbzjw0ZWzrgDhtjYg==", + "dependencies": { + "eslint": "^7.32.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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/sanitize-filename": { + "version": "1.6.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==" + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sinon": { + "version": "14.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/sinon/-/sinon-14.0.2.tgz", + "integrity": "sha512-PDpV0ZI3ZCS3pEqx0vpNp6kzPhHrLx72wA0G+ZLaaJjLIYeE0n8INlgaohKuGy7hP0as5tbUd23QWu5U233t+w==", + "deprecated": "16.1.1", + "dependencies": { + "@sinonjs/commons": "^2.0.0", + "@sinonjs/fake-timers": "^9.1.2", + "@sinonjs/samsam": "^7.0.1", + "diff": "^5.0.0", + "nise": "^5.1.2", + "supports-color": "^7.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/sinon/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "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://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/table": { + "version": "6.8.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-rest-client": { + "version": "1.8.11", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/typed-rest-client/-/typed-rest-client-1.8.11.tgz", + "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", + "dependencies": { + "qs": "^6.9.1", + "tunnel": "0.0.6", + "underscore": "^1.12.1" + } + }, + "node_modules/typescript": { + "version": "5.1.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/underscore": { + "version": "1.13.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==" + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utf8-byte-length": { + "version": "1.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==" + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workerpool": { + "version": "6.5.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "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://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "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.9", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "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://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/Tasks/GradleV4/_buildConfigs/Node20/package.json b/Tasks/GradleV4/_buildConfigs/Node20/package.json new file mode 100644 index 000000000000..72bf5f1d0953 --- /dev/null +++ b/Tasks/GradleV4/_buildConfigs/Node20/package.json @@ -0,0 +1,21 @@ +{ + "name": "Agent.Tasks.Gradle", + "version": "2.208.0", + "author": "Microsoft Corporation", + "description": "Build with Gradle", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/vso-agent-tasks/issues" + }, + "dependencies": { + "@types/mocha": "^5.2.7", + "@types/node": "^20.3.1", + "azure-pipelines-task-lib": "^4.16.0", + "azure-pipelines-tasks-codeanalysis-common": "^2.242.0", + "azure-pipelines-tasks-java-common": "^2.219.1", + "azure-pipelines-tasks-utility-common": "^3.241.0" + }, + "devDependencies": { + "typescript": "5.1.6" + } +} diff --git a/Tasks/GradleV4/gradletask.ts b/Tasks/GradleV4/gradletask.ts new file mode 100644 index 000000000000..1e3b1a899890 --- /dev/null +++ b/Tasks/GradleV4/gradletask.ts @@ -0,0 +1,101 @@ +import * as path from 'path'; +import * as tl from 'azure-pipelines-task-lib/task'; +import * as sqGradle from 'azure-pipelines-tasks-codeanalysis-common/gradlesonar'; +import { CodeAnalysisOrchestrator } from 'azure-pipelines-tasks-codeanalysis-common/Common/CodeAnalysisOrchestrator'; +import { BuildOutput, BuildEngine } from 'azure-pipelines-tasks-codeanalysis-common/Common/BuildOutput'; +import { PmdTool } from 'azure-pipelines-tasks-codeanalysis-common/Common/PmdTool'; +import { CheckstyleTool } from 'azure-pipelines-tasks-codeanalysis-common/Common/CheckstyleTool'; +import { FindbugsTool } from 'azure-pipelines-tasks-codeanalysis-common/Common/FindbugsTool'; +import { SpotbugsTool } from 'azure-pipelines-tasks-codeanalysis-common/Common/SpotbugsTool'; +import { IAnalysisTool } from 'azure-pipelines-tasks-codeanalysis-common/Common/IAnalysisTool'; +import { ToolRunner } from 'azure-pipelines-task-lib/toolrunner'; +import { getExecOptions, setJavaHome, setGradleOpts } from './Modules/environment'; +import { configureWrapperScript } from './Modules/project-configuration'; +import { publishTestResults } from './Modules/publish-test-results'; +import { ICodeAnalysisResult, ITaskResult } from './interfaces'; +import { resolveTaskResult } from './Modules/utils'; + + + +async function run() { + try { + tl.setResourcePath(path.join(__dirname, 'task.json')); + + // Configure wrapperScript + let wrapperScript: string = tl.getPathInput('wrapperScript', true, true); + wrapperScript = configureWrapperScript(wrapperScript); + + // Set working directory + const workingDirectory: string = tl.getPathInput('cwd', false, true); + tl.cd(workingDirectory); + + const javaHomeSelection: string = tl.getInput('javaHomeSelection', true); + const publishJUnitResults: boolean = tl.getBoolInput('publishJUnitResults'); + const testResultsFiles: string = tl.getInput('testResultsFiles', true); + const inputTasks: string[] = tl.getDelimitedInput('tasks', ' ', true); + const buildOutput: BuildOutput = new BuildOutput(tl.getVariable('System.DefaultWorkingDirectory'), BuildEngine.Gradle); + + //START: Get gradleRunner ready to run + let gradleRunner: ToolRunner = tl.tool(wrapperScript); + gradleRunner.line(tl.getInput('options', false)); + gradleRunner.arg(inputTasks); + //END: Get gb ready to run + + // Set JAVA_HOME based on any user input + setJavaHome(javaHomeSelection); + + // Set any provided gradle options + const gradleOptions: string = tl.getInput('gradleOpts'); + setGradleOpts(gradleOptions); + + + const codeAnalysisTools: IAnalysisTool[] = [ + new CheckstyleTool(buildOutput, 'checkstyleAnalysisEnabled'), + new FindbugsTool(buildOutput, 'findbugsAnalysisEnabled'), + new PmdTool(buildOutput, 'pmdAnalysisEnabled'), + new SpotbugsTool(buildOutput, 'spotBugsAnalysisEnabled') + ]; + const codeAnalysisOrchestrator: CodeAnalysisOrchestrator = new CodeAnalysisOrchestrator(codeAnalysisTools); + + // Enable SonarQube Analysis (if desired) + const isSonarQubeEnabled: boolean = tl.getBoolInput('sqAnalysisEnabled', false); + if (isSonarQubeEnabled) { + // Looks like: 'SonarQube analysis is enabled.' + console.log(tl.loc('codeAnalysis_ToolIsEnabled'), 'SonarQube'); + gradleRunner = sqGradle.applyEnabledSonarQubeArguments(gradleRunner); + } + gradleRunner = codeAnalysisOrchestrator.configureBuild(gradleRunner); + + // START: Run code analysis + const codeAnalysisResult: ICodeAnalysisResult = {}; + + try { + codeAnalysisResult.gradleResult = await gradleRunner.exec(getExecOptions()); + codeAnalysisResult.statusFailed = false; + codeAnalysisResult.analysisError = ''; + + tl.debug(`Gradle result: ${codeAnalysisResult.gradleResult}`); + } catch (err) { + codeAnalysisResult.gradleResult = -1; + codeAnalysisResult.statusFailed = true; + codeAnalysisResult.analysisError = err; + + console.error(err); + tl.debug('taskRunner fail'); + } + + tl.debug('Processing code analysis results'); + codeAnalysisOrchestrator.publishCodeAnalysisResults(); + + // We should always publish test results + publishTestResults(publishJUnitResults, testResultsFiles); + + const taskResult: ITaskResult = resolveTaskResult(codeAnalysisResult); + tl.setResult(taskResult.status, taskResult.message); + // END: Run code analysis + } catch (err) { + tl.setResult(tl.TaskResult.Failed, err); + } +} + +run(); diff --git a/Tasks/GradleV4/icon.png b/Tasks/GradleV4/icon.png new file mode 100644 index 000000000000..71731f5f1d2e Binary files /dev/null and b/Tasks/GradleV4/icon.png differ diff --git a/Tasks/GradleV4/icon.svg b/Tasks/GradleV4/icon.svg new file mode 100644 index 000000000000..2fab131b1f1c --- /dev/null +++ b/Tasks/GradleV4/icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/Tasks/GradleV4/interfaces.ts b/Tasks/GradleV4/interfaces.ts new file mode 100644 index 000000000000..2e1bf0d74825 --- /dev/null +++ b/Tasks/GradleV4/interfaces.ts @@ -0,0 +1,12 @@ +import { TaskResult } from 'azure-pipelines-task-lib'; + +export interface ICodeAnalysisResult { + gradleResult?: number; + statusFailed?: boolean; + analysisError?: any; +} + +export interface ITaskResult { + status: TaskResult; + message: string; +} diff --git a/Tasks/GradleV4/make.json b/Tasks/GradleV4/make.json new file mode 100644 index 000000000000..fe4888c3fdf4 --- /dev/null +++ b/Tasks/GradleV4/make.json @@ -0,0 +1,11 @@ +{ + "rm": [ + { + "items": [ + "node_modules/azure-pipelines-tasks-java-common/node_modules/azure-pipelines-task-lib", + "node_modules/azure-pipelines-tasks-codeanalysis-common/node_modules/azure-pipelines-task-lib" + ], + "options": "-Rf" + } + ] +} \ No newline at end of file diff --git a/Tasks/GradleV4/package-lock.json b/Tasks/GradleV4/package-lock.json new file mode 100644 index 000000000000..267703dc7007 --- /dev/null +++ b/Tasks/GradleV4/package-lock.json @@ -0,0 +1,2072 @@ +{ + "name": "Agent.Tasks.Gradle", + "version": "2.208.0", + "lockfileVersion": 1, + "requires": true, + "dependencies": { + "@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "requires": { + "@babel/highlight": "^7.10.4" + } + }, + "@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==" + }, + "@babel/highlight": { + "version": "7.24.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "requires": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "dependencies": { + "ansi-styles": { + "version": "3.2.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "requires": { + "color-convert": "^1.9.0" + } + }, + "chalk": { + "version": "2.4.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "requires": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + } + }, + "color-convert": { + "version": "1.9.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "requires": { + "color-name": "1.1.3" + } + }, + "color-name": { + "version": "1.1.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==" + }, + "has-flag": { + "version": "3.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==" + }, + "supports-color": { + "version": "5.5.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "requires": { + "has-flag": "^3.0.0" + } + } + } + }, + "@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "requires": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } + } + }, + "@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "requires": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + } + }, + "@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==" + }, + "@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "9.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "requires": { + "@sinonjs/commons": "^1.7.0" + }, + "dependencies": { + "@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "requires": { + "type-detect": "4.0.8" + } + } + } + }, + "@sinonjs/samsam": { + "version": "7.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@sinonjs/samsam/-/samsam-7.0.1.tgz", + "integrity": "sha512-zsAk2Jkiq89mhZovB2LLOdTCxJF4hqqTToGP0ASWlhp4I1hqOjcfmZGafXntCN7MDC6yySH0mFHrYtHceOeLmw==", + "requires": { + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==" + }, + "@types/concat-stream": { + "version": "1.6.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/concat-stream/-/concat-stream-1.6.1.tgz", + "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", + "requires": { + "@types/node": "*" + } + }, + "@types/form-data": { + "version": "0.0.33", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/form-data/-/form-data-0.0.33.tgz", + "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", + "requires": { + "@types/node": "*" + } + }, + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==" + }, + "@types/node": { + "version": "16.18.10", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/node/-/node-16.18.10.tgz", + "integrity": "sha512-XU1+v7h81p7145ddPfjv7jtWvkSilpcnON3mQ+bDi9Yuf7OI56efOglXRyXWgQ57xH3fEQgh7WOJMncRHVew5w==" + }, + "@types/qs": { + "version": "6.9.15", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/qs/-/qs-6.9.15.tgz", + "integrity": "sha512-uXHQKES6DQKKCLh441Xv/dwxOq1TVS3JPUMlEqoEglvlhR6Mxnlew/Xq/LRVHpLyk7iK3zODe1qYHIMltO7XGg==" + }, + "@types/semver": { + "version": "7.5.8", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==" + }, + "@types/uuid": { + "version": "3.4.13", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/uuid/-/uuid-3.4.13.tgz", + "integrity": "sha512-pAeZeUbLE4Z9Vi9wsWV2bYPTweEHeJJy0G4pEjOA/FSvy1Ad5U5Km8iDV6TKre1mjBiVNfAdVHKruP8bAh4Q5A==" + }, + "acorn": { + "version": "7.4.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" + }, + "acorn-jsx": { + "version": "5.3.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==" + }, + "adm-zip": { + "version": "0.5.15", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/adm-zip/-/adm-zip-0.5.15.tgz", + "integrity": "sha512-jYPWSeOA8EFoZnucrKCNihqBjoEGQSU4HKgHYQgKNEQ0pQF9a/DYuo/+fAxY76k4qe75LUlLWpAM1QWcBMTOKw==" + }, + "agent-base": { + "version": "6.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "requires": { + "debug": "4" + } + }, + "ajv": { + "version": "6.12.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "requires": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + } + }, + "ansi-colors": { + "version": "4.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ansi-colors/-/ansi-colors-4.1.1.tgz", + "integrity": "sha512-JoX0apGbHaUJBNl6yF+p6JAFYZ666/hhCGKN5t9QFjbJQKUU/g8MNbFDbvfrgKXvI1QpZplPOnwIo99lX/AAmA==" + }, + "ansi-regex": { + "version": "5.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==" + }, + "ansi-styles": { + "version": "4.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "requires": { + "color-convert": "^2.0.1" + } + }, + "anymatch": { + "version": "3.1.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "requires": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + } + }, + "argparse": { + "version": "2.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "asap": { + "version": "2.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "astral-regex": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "azure-pipelines-task-lib": { + "version": "4.16.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.16.0.tgz", + "integrity": "sha512-hjyDi5GI1cFmS2o6GzTFPqloeTZBeaTLOjPn/H3CVr0vV/MV+eYoWszVe9kn7XnRSiv22j3p4Rhw/Sy4v1okxA==", + "requires": { + "adm-zip": "^0.5.10", + "minimatch": "3.0.5", + "nodejs-file-downloader": "^4.11.1", + "q": "^1.5.1", + "semver": "^5.7.2", + "shelljs": "^0.8.5", + "uuid": "^3.0.1" + } + }, + "azure-pipelines-tasks-codeanalysis-common": { + "version": "2.242.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-tasks-codeanalysis-common/-/azure-pipelines-tasks-codeanalysis-common-2.242.0.tgz", + "integrity": "sha512-Aa57Etcoy+GJC8nFrtMgeBx2A6Jy8fpXWrjsrdQOrWMUvKl1VpOPw8jetkY1sUYA70jKRT3ewHAbjna1cnAb9w==", + "requires": { + "@types/node": "^10.17.0", + "azure-pipelines-task-lib": "^3.1.0", + "glob": "7.1.0", + "mocha": "^10.5.1", + "rewire": "^6.0.0", + "sinon": "^14.0.0", + "xml2js": "^0.6.2" + }, + "dependencies": { + "@types/node": { + "version": "10.17.60", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, + "azure-pipelines-task-lib": { + "version": "3.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-task-lib/-/azure-pipelines-task-lib-3.4.0.tgz", + "integrity": "sha512-3eC4OTFw+7xD7A2aUhxR/j+jRlTI+vVfS0CGxt1pCLs4c/KmY0tQWgbqjD3157kmiucWxELBvgZHaD2gCBe9fg==", + "requires": { + "minimatch": "3.0.5", + "mockery": "^2.1.0", + "q": "^1.5.1", + "semver": "^5.1.0", + "shelljs": "^0.8.5", + "sync-request": "6.1.0", + "uuid": "^3.0.1" + } + }, + "glob": { + "version": "7.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-7.1.0.tgz", + "integrity": "sha512-htk4y5TQ9NjktQk5oR7AudqzQKZd4JvbCOklhnygiF6r9ExeTrl+dTwFql7y5+zaHkc/QeLdDrcF5GVfM5bl9w==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "azure-pipelines-tasks-java-common": { + "version": "2.219.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-tasks-java-common/-/azure-pipelines-tasks-java-common-2.219.1.tgz", + "integrity": "sha512-YXohTLk8DHdx49PctYZuyHO8Nd1hSDDGxai36lM/wbGf5e0glk8HtE5p8+n581t4/OsCdsQKq6Q0ueYdAqb3Og==", + "requires": { + "@types/mocha": "^5.2.7", + "@types/node": "^10.17.0", + "@types/semver": "^7.3.3", + "azure-pipelines-task-lib": "^3.1.0", + "semver": "^7.3.2" + }, + "dependencies": { + "@types/node": { + "version": "10.17.60", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, + "azure-pipelines-task-lib": { + "version": "3.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-task-lib/-/azure-pipelines-task-lib-3.4.0.tgz", + "integrity": "sha512-3eC4OTFw+7xD7A2aUhxR/j+jRlTI+vVfS0CGxt1pCLs4c/KmY0tQWgbqjD3157kmiucWxELBvgZHaD2gCBe9fg==", + "requires": { + "minimatch": "3.0.5", + "mockery": "^2.1.0", + "q": "^1.5.1", + "semver": "^5.1.0", + "shelljs": "^0.8.5", + "sync-request": "6.1.0", + "uuid": "^3.0.1" + }, + "dependencies": { + "semver": { + "version": "5.7.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + } + } + }, + "semver": { + "version": "7.6.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==" + } + } + }, + "azure-pipelines-tasks-utility-common": { + "version": "3.242.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-tasks-utility-common/-/azure-pipelines-tasks-utility-common-3.242.0.tgz", + "integrity": "sha512-PCpJj2f+v1SxjP+NYtSeTQdgPE1WuadzeKcjaqzXSuHGf4KbDcVSQVD2IEo3dAGrvVfLZLnk4B2x/rwbWzminQ==", + "requires": { + "@types/node": "^16.11.39", + "azure-pipelines-task-lib": "^4.11.0", + "azure-pipelines-tool-lib": "^2.0.7", + "js-yaml": "3.13.1", + "semver": "^5.7.2" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "js-yaml": { + "version": "3.13.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + } + } + }, + "azure-pipelines-tool-lib": { + "version": "2.0.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-tool-lib/-/azure-pipelines-tool-lib-2.0.7.tgz", + "integrity": "sha512-1FN67ypNwNhgZllYSm4/pAQdffSfEZJhwW8YeNvm/cKDTS6t6bukTBIkt04c1CsaQe7Ot+eDOVMn41wX1ketXw==", + "requires": { + "@types/semver": "^5.3.0", + "@types/uuid": "^3.4.5", + "azure-pipelines-task-lib": "^4.1.0", + "semver": "^5.7.0", + "semver-compare": "^1.0.0", + "typed-rest-client": "^1.8.6", + "uuid": "^3.3.2" + }, + "dependencies": { + "@types/semver": { + "version": "5.5.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" + } + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "binary-extensions": { + "version": "2.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "braces": { + "version": "3.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "requires": { + "fill-range": "^7.1.1" + } + }, + "browser-stdout": { + "version": "1.3.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" + }, + "buffer-from": { + "version": "1.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" + }, + "call-bind": { + "version": "1.0.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + } + }, + "callsites": { + "version": "3.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" + }, + "camelcase": { + "version": "6.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==" + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "chalk": { + "version": "4.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "requires": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "chokidar": { + "version": "3.6.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "requires": { + "anymatch": "~3.1.2", + "braces": "~3.0.2", + "fsevents": "~2.3.2", + "glob-parent": "~5.1.2", + "is-binary-path": "~2.1.0", + "is-glob": "~4.0.1", + "normalize-path": "~3.0.0", + "readdirp": "~3.6.0" + } + }, + "cliui": { + "version": "7.0.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "requires": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.0", + "wrap-ansi": "^7.0.0" + } + }, + "color-convert": { + "version": "2.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "requires": { + "color-name": "~1.1.4" + } + }, + "color-name": { + "version": "1.1.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "concat-stream": { + "version": "1.6.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/concat-stream/-/concat-stream-1.6.2.tgz", + "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "requires": { + "buffer-from": "^1.0.0", + "inherits": "^2.0.3", + "readable-stream": "^2.2.2", + "typedarray": "^0.0.6" + } + }, + "core-util-is": { + "version": "1.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/core-util-is/-/core-util-is-1.0.3.tgz", + "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + }, + "cross-spawn": { + "version": "7.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "requires": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + } + }, + "debug": { + "version": "4.3.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "requires": { + "ms": "2.1.2" + } + }, + "decamelize": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==" + }, + "deep-is": { + "version": "0.1.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "define-data-property": { + "version": "1.1.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "diff": { + "version": "5.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/diff/-/diff-5.0.0.tgz", + "integrity": "sha512-/VTCrvm5Z0JGty/BWHljh+BAiw3IK+2j87NGMu8Nwc/f48WoDAC395uomO9ZD117ZOBaHmkX1oyLvkVM/aIT3w==" + }, + "doctrine": { + "version": "3.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "requires": { + "esutils": "^2.0.2" + } + }, + "emoji-regex": { + "version": "8.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "enquirer": { + "version": "2.4.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "requires": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + } + }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, + "escalade": { + "version": "3.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==" + }, + "escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==" + }, + "eslint": { + "version": "7.32.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "requires": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "dependencies": { + "argparse": { + "version": "1.0.10", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "requires": { + "sprintf-js": "~1.0.2" + } + }, + "js-yaml": { + "version": "3.14.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "requires": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + } + }, + "semver": { + "version": "7.6.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/semver/-/semver-7.6.2.tgz", + "integrity": "sha512-FNAIBWCx9qcRhoHcgcJ0gvU7SN1lYU2ZXuSfl04bSC5OpvDHFyJCjdNHomPXxjQlCBU67YW64PzY7/VIEH7F2w==" + } + } + }, + "eslint-scope": { + "version": "5.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "requires": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + } + }, + "eslint-utils": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "requires": { + "eslint-visitor-keys": "^1.1.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + } + } + }, + "eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==" + }, + "espree": { + "version": "7.3.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "requires": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "dependencies": { + "eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==" + } + } + }, + "esprima": { + "version": "4.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==" + }, + "esquery": { + "version": "1.5.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/esquery/-/esquery-1.5.0.tgz", + "integrity": "sha512-YQLXUplAwJgCydQ78IMJywZCceoqk1oH01OERdSAJc/7U2AylwjhSCLDEtqwg811idIS/9fIU5GjG73IgjKMVg==", + "requires": { + "estraverse": "^5.1.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + } + } + }, + "esrecurse": { + "version": "4.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "requires": { + "estraverse": "^5.2.0" + }, + "dependencies": { + "estraverse": { + "version": "5.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==" + } + } + }, + "estraverse": { + "version": "4.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==" + }, + "esutils": { + "version": "2.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==" + }, + "fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "file-entry-cache": { + "version": "6.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "requires": { + "flat-cache": "^3.0.4" + } + }, + "fill-range": { + "version": "7.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "requires": { + "to-regex-range": "^5.0.1" + } + }, + "find-up": { + "version": "5.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "requires": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + } + }, + "flat": { + "version": "5.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==" + }, + "flat-cache": { + "version": "3.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "requires": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + } + }, + "flatted": { + "version": "3.3.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==" + }, + "follow-redirects": { + "version": "1.15.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" + }, + "form-data": { + "version": "2.5.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/form-data/-/form-data-2.5.1.tgz", + "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", + "requires": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.6", + "mime-types": "^2.1.12" + } + }, + "fs.realpath": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "fsevents": { + "version": "2.3.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "optional": true + }, + "function-bind": { + "version": "1.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" + }, + "functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" + }, + "get-caller-file": { + "version": "2.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==" + }, + "get-intrinsic": { + "version": "1.2.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "requires": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + } + }, + "get-port": { + "version": "3.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/get-port/-/get-port-3.2.0.tgz", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==" + }, + "glob": { + "version": "7.2.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "glob-parent": { + "version": "5.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "requires": { + "is-glob": "^4.0.1" + } + }, + "globals": { + "version": "13.24.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "requires": { + "type-fest": "^0.20.2" + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" + } + }, + "has-flag": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" + }, + "has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "requires": { + "es-define-property": "^1.0.0" + } + }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "hasown": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "requires": { + "function-bind": "^1.1.2" + } + }, + "he": { + "version": "1.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==" + }, + "http-basic": { + "version": "8.1.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/http-basic/-/http-basic-8.1.3.tgz", + "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", + "requires": { + "caseless": "^0.12.0", + "concat-stream": "^1.6.2", + "http-response-object": "^3.0.1", + "parse-cache-control": "^1.0.1" + } + }, + "http-response-object": { + "version": "3.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/http-response-object/-/http-response-object-3.0.2.tgz", + "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", + "requires": { + "@types/node": "^10.0.3" + }, + "dependencies": { + "@types/node": { + "version": "10.17.60", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + } + } + }, + "https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "requires": { + "agent-base": "6", + "debug": "4" + } + }, + "ignore": { + "version": "4.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==" + }, + "import-fresh": { + "version": "3.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "requires": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + } + }, + "imurmurhash": { + "version": "0.1.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==" + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + }, + "is-binary-path": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "requires": { + "binary-extensions": "^2.0.0" + } + }, + "is-core-module": { + "version": "2.14.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-core-module/-/is-core-module-2.14.0.tgz", + "integrity": "sha512-a5dFJih5ZLYlRtDc0dZWP7RiKr6xIKzmn/oAYCDvdLThadVgyJwlaoQPmRtMSpz+rk0OGAgIu+TcM9HUF0fk1A==", + "requires": { + "hasown": "^2.0.2" + } + }, + "is-extglob": { + "version": "2.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==" + }, + "is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==" + }, + "is-glob": { + "version": "4.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "requires": { + "is-extglob": "^2.1.1" + } + }, + "is-number": { + "version": "7.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" + }, + "is-plain-obj": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==" + }, + "is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==" + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "isexe": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "js-tokens": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "js-yaml": { + "version": "4.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "requires": { + "argparse": "^2.0.1" + } + }, + "json-buffer": { + "version": "3.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "just-extend": { + "version": "6.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==" + }, + "keyv": { + "version": "4.5.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "requires": { + "json-buffer": "3.0.1" + } + }, + "levn": { + "version": "0.4.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "requires": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + } + }, + "locate-path": { + "version": "6.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "requires": { + "p-locate": "^5.0.0" + } + }, + "lodash.get": { + "version": "4.4.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" + }, + "lodash.merge": { + "version": "4.6.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "lodash.truncate": { + "version": "4.4.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" + }, + "log-symbols": { + "version": "4.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "requires": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + } + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "mime-types": { + "version": "2.1.35", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimatch": { + "version": "3.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mocha": { + "version": "10.5.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mocha/-/mocha-10.5.2.tgz", + "integrity": "sha512-9btlN3JKCefPf+vKd/kcKz2SXxi12z6JswkGfaAF0saQvnsqLJk504ZmbxhSoENge08E9dsymozKgFMTl5PQsA==", + "requires": { + "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" + }, + "dependencies": { + "brace-expansion": { + "version": "2.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "requires": { + "balanced-match": "^1.0.0" + } + }, + "debug": { + "version": "4.3.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + }, + "dependencies": { + "ms": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "glob": { + "version": "8.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "requires": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^5.0.1", + "once": "^1.3.0" + } + }, + "minimatch": { + "version": "5.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-5.0.1.tgz", + "integrity": "sha512-nLDxIFRyhDblz3qMuq+SoRZED4+miJ/G+tdDrjkkkRnjAsBexeGpgjLEQ0blJy7rHhR2b93rhQY4SvyWu9v03g==", + "requires": { + "brace-expansion": "^2.0.1" + } + }, + "ms": { + "version": "2.1.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "mockery": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mockery/-/mockery-2.1.0.tgz", + "integrity": "sha512-9VkOmxKlWXoDO/h1jDZaS4lH33aWfRiJiNT/tKj+8OGzrcFDLo8d0syGdbsc3Bc4GvRXPb+NMMvojotmuGJTvA==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "natural-compare": { + "version": "1.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "nise": { + "version": "5.1.9", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/nise/-/nise-5.1.9.tgz", + "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", + "requires": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" + }, + "dependencies": { + "@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "requires": { + "type-detect": "4.0.8" + } + }, + "@sinonjs/fake-timers": { + "version": "11.2.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", + "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", + "requires": { + "@sinonjs/commons": "^3.0.0" + } + } + } + }, + "nodejs-file-downloader": { + "version": "4.13.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/nodejs-file-downloader/-/nodejs-file-downloader-4.13.0.tgz", + "integrity": "sha512-nI2fKnmJWWFZF6SgMPe1iBodKhfpztLKJTtCtNYGhm/9QXmWa/Pk9Sv00qHgzEvNLe1x7hjGDRor7gcm/ChaIQ==", + "requires": { + "follow-redirects": "^1.15.6", + "https-proxy-agent": "^5.0.0", + "mime-types": "^2.1.27", + "sanitize-filename": "^1.6.3" + } + }, + "normalize-path": { + "version": "3.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" + }, + "object-inspect": { + "version": "1.13.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "requires": { + "wrappy": "1" + } + }, + "optionator": { + "version": "0.9.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "requires": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + } + }, + "p-limit": { + "version": "3.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "requires": { + "yocto-queue": "^0.1.0" + } + }, + "p-locate": { + "version": "5.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "requires": { + "p-limit": "^3.0.2" + } + }, + "parent-module": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "requires": { + "callsites": "^3.0.0" + } + }, + "parse-cache-control": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/parse-cache-control/-/parse-cache-control-1.0.1.tgz", + "integrity": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==" + }, + "path-exists": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-key": { + "version": "3.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==" + }, + "path-parse": { + "version": "1.0.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "path-to-regexp": { + "version": "6.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==" + }, + "picocolors": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + }, + "picomatch": { + "version": "2.3.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" + }, + "prelude-ls": { + "version": "1.2.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==" + }, + "process-nextick-args": { + "version": "2.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/process-nextick-args/-/process-nextick-args-2.0.1.tgz", + "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" + }, + "progress": { + "version": "2.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==" + }, + "promise": { + "version": "8.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "requires": { + "asap": "~2.0.6" + } + }, + "punycode": { + "version": "2.3.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==" + }, + "q": { + "version": "1.5.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" + }, + "qs": { + "version": "6.12.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/qs/-/qs-6.12.1.tgz", + "integrity": "sha512-zWmv4RSuB9r2mYQw3zxQuHWeU+42aKi1wWig/j4ele4ygELZ7PEO6MM7rim9oAQH2A5MWfsAVf/jPvTPgCbvUQ==", + "requires": { + "side-channel": "^1.0.6" + } + }, + "randombytes": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "requires": { + "safe-buffer": "^5.1.0" + } + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "readdirp": { + "version": "3.6.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "requires": { + "picomatch": "^2.2.1" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "requires": { + "resolve": "^1.1.6" + } + }, + "regexpp": { + "version": "3.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==" + }, + "require-directory": { + "version": "2.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==" + }, + "require-from-string": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==" + }, + "resolve": { + "version": "1.22.8", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "requires": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "resolve-from": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" + }, + "rewire": { + "version": "6.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/rewire/-/rewire-6.0.0.tgz", + "integrity": "sha512-7sZdz5dptqBCapJYocw9EcppLU62KMEqDLIILJnNET2iqzXHaQfaVP5SOJ06XvjX+dNIDJbzjw0ZWzrgDhtjYg==", + "requires": { + "eslint": "^7.32.0" + } + }, + "rimraf": { + "version": "3.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "requires": { + "glob": "^7.1.3" + } + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "sanitize-filename": { + "version": "1.6.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "requires": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "sax": { + "version": "1.4.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" + }, + "semver": { + "version": "5.7.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==" + }, + "serialize-javascript": { + "version": "6.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/serialize-javascript/-/serialize-javascript-6.0.0.tgz", + "integrity": "sha512-Qr3TosvguFt8ePWqsvRfrKyQXIiW+nGbYpy8XK24NQHE83caxWt+mIymTT19DGFbNWNLfEwsrkSmN64lVWB9ag==", + "requires": { + "randombytes": "^2.1.0" + } + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } + }, + "shebang-command": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "requires": { + "shebang-regex": "^3.0.0" + } + }, + "shebang-regex": { + "version": "3.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==" + }, + "shelljs": { + "version": "0.8.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "side-channel": { + "version": "1.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "requires": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + } + }, + "sinon": { + "version": "14.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/sinon/-/sinon-14.0.2.tgz", + "integrity": "sha512-PDpV0ZI3ZCS3pEqx0vpNp6kzPhHrLx72wA0G+ZLaaJjLIYeE0n8INlgaohKuGy7hP0as5tbUd23QWu5U233t+w==", + "requires": { + "@sinonjs/commons": "^2.0.0", + "@sinonjs/fake-timers": "^9.1.2", + "@sinonjs/samsam": "^7.0.1", + "diff": "^5.0.0", + "nise": "^5.1.2", + "supports-color": "^7.2.0" + }, + "dependencies": { + "supports-color": { + "version": "7.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "requires": { + "has-flag": "^4.0.0" + } + } + } + }, + "slice-ansi": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "requires": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + } + }, + "sprintf-js": { + "version": "1.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "string-width": { + "version": "4.2.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "requires": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + } + }, + "string_decoder": { + "version": "1.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/string_decoder/-/string_decoder-1.1.1.tgz", + "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "strip-ansi": { + "version": "6.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "requires": { + "ansi-regex": "^5.0.1" + } + }, + "strip-json-comments": { + "version": "3.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==" + }, + "supports-color": { + "version": "8.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "requires": { + "has-flag": "^4.0.0" + } + }, + "supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" + }, + "sync-request": { + "version": "6.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/sync-request/-/sync-request-6.1.0.tgz", + "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", + "requires": { + "http-response-object": "^3.0.1", + "sync-rpc": "^1.2.1", + "then-request": "^6.0.0" + } + }, + "sync-rpc": { + "version": "1.3.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/sync-rpc/-/sync-rpc-1.3.6.tgz", + "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", + "requires": { + "get-port": "^3.1.0" + } + }, + "table": { + "version": "6.8.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", + "requires": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "dependencies": { + "ajv": { + "version": "8.16.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ajv/-/ajv-8.16.0.tgz", + "integrity": "sha512-F0twR8U1ZU67JIEtekUcLkXkoO5mMMmgGD8sK/xUFzJ805jxHQl92hImFAqqXMyMYjSPOyUPAwHYhB72g5sTXw==", + "requires": { + "fast-deep-equal": "^3.1.3", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2", + "uri-js": "^4.4.1" + } + }, + "json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + } + } + }, + "text-table": { + "version": "0.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "then-request": { + "version": "6.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/then-request/-/then-request-6.0.2.tgz", + "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", + "requires": { + "@types/concat-stream": "^1.6.0", + "@types/form-data": "0.0.33", + "@types/node": "^8.0.0", + "@types/qs": "^6.2.31", + "caseless": "~0.12.0", + "concat-stream": "^1.6.0", + "form-data": "^2.2.0", + "http-basic": "^8.1.1", + "http-response-object": "^3.0.1", + "promise": "^8.0.0", + "qs": "^6.4.0" + }, + "dependencies": { + "@types/node": { + "version": "8.10.66", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/node/-/node-8.10.66.tgz", + "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==" + } + } + }, + "to-regex-range": { + "version": "5.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "requires": { + "is-number": "^7.0.0" + } + }, + "truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "requires": { + "utf8-byte-length": "^1.0.1" + } + }, + "tunnel": { + "version": "0.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" + }, + "type-check": { + "version": "0.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "requires": { + "prelude-ls": "^1.2.1" + } + }, + "type-detect": { + "version": "4.0.8", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==" + }, + "type-fest": { + "version": "0.20.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==" + }, + "typed-rest-client": { + "version": "1.8.11", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/typed-rest-client/-/typed-rest-client-1.8.11.tgz", + "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", + "requires": { + "qs": "^6.9.1", + "tunnel": "0.0.6", + "underscore": "^1.12.1" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "typescript": { + "version": "4.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/typescript/-/typescript-4.0.2.tgz", + "integrity": "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==", + "dev": true + }, + "underscore": { + "version": "1.13.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" + }, + "uri-js": { + "version": "4.4.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "requires": { + "punycode": "^2.1.0" + } + }, + "utf8-byte-length": { + "version": "1.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "v8-compile-cache": { + "version": "2.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==" + }, + "which": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "requires": { + "isexe": "^2.0.0" + } + }, + "word-wrap": { + "version": "1.2.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==" + }, + "workerpool": { + "version": "6.2.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/workerpool/-/workerpool-6.2.1.tgz", + "integrity": "sha512-ILEIE97kDZvF9Wb9f6h5aXK4swSlKGUcOEGiIYb2OOu/IrDU9iwj0fD//SsA6E5ibwJxpEvhullJY4Sl4GcpAw==" + }, + "wrap-ansi": { + "version": "7.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "requires": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + } + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "xml2js": { + "version": "0.6.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "requires": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + } + }, + "xmlbuilder": { + "version": "11.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==" + }, + "y18n": { + "version": "5.0.8", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==" + }, + "yargs": { + "version": "16.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "requires": { + "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" + } + }, + "yargs-parser": { + "version": "20.2.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yargs-parser/-/yargs-parser-20.2.4.tgz", + "integrity": "sha512-WOkpgNhPTlE73h4VFAFsOnomJVaovO8VqLDzy5saChRBFQFBoMYirowyW+Q9HB4HFF4Z7VZTiG3iSzJJA29yRA==" + }, + "yargs-unparser": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "requires": { + "camelcase": "^6.0.0", + "decamelize": "^4.0.0", + "flat": "^5.0.2", + "is-plain-obj": "^2.1.0" + } + }, + "yocto-queue": { + "version": "0.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==" + } + } +} diff --git a/Tasks/GradleV4/package.json b/Tasks/GradleV4/package.json new file mode 100644 index 000000000000..6cd9db65a30a --- /dev/null +++ b/Tasks/GradleV4/package.json @@ -0,0 +1,21 @@ +{ + "name": "Agent.Tasks.Gradle", + "version": "2.208.0", + "author": "Microsoft Corporation", + "description": "Build with Gradle", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/vso-agent-tasks/issues" + }, + "dependencies": { + "@types/mocha": "^5.2.7", + "@types/node": "^16.11.39", + "azure-pipelines-task-lib": "^4.16.0", + "azure-pipelines-tasks-codeanalysis-common": "^2.242.0", + "azure-pipelines-tasks-java-common": "^2.219.1", + "azure-pipelines-tasks-utility-common": "^3.241.0" + }, + "devDependencies": { + "typescript": "4.0.2" + } +} diff --git a/Tasks/GradleV4/task.json b/Tasks/GradleV4/task.json new file mode 100644 index 000000000000..78b0e9afa2c2 --- /dev/null +++ b/Tasks/GradleV4/task.json @@ -0,0 +1,353 @@ +{ + "id": "8D8EEBD8-2B94-4C97-85AF-839254CC6DA4", + "name": "Gradle", + "friendlyName": "Gradle", + "description": "Build using a Gradle wrapper script", + "helpUrl": "https://docs.microsoft.com/azure/devops/pipelines/tasks/build/gradle", + "helpMarkDown": "[Learn more about this task](https://go.microsoft.com/fwlink/?LinkID=613720) or [see the Gradle documentation](https://docs.gradle.org/current/userguide/userguide.html)", + "category": "Build", + "visibility": [ + "Build" + ], + "runsOn": [ + "Agent", + "DeploymentGroup" + ], + "author": "Microsoft Corporation", + "version": { + "Major": 4, + "Minor": 252, + "Patch": 0 + }, + "releaseNotes": "The Code Coverage option is deprecated. Refer to the [PublishCodeCoverageResultsV2 Task] (https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/publish-code-coverage-results-v2?view=azure-pipelines) to get code coverage results.", + "demands": [], + "minimumAgentVersion": "1.91.0", + "groups": [ + { + "name": "junitTestResults", + "displayName": "JUnit Test Results", + "isExpanded": true + }, + { + "name": "advanced", + "displayName": "Advanced", + "isExpanded": false + }, + { + "name": "CodeAnalysis", + "displayName": "Code Analysis", + "isExpanded": true + } + ], + "inputs": [ + { + "name": "wrapperScript", + "aliases": [ + "gradleWrapperFile" + ], + "type": "filePath", + "label": "Gradle wrapper", + "defaultValue": "gradlew", + "required": true, + "helpMarkDown": "Relative path from the repository root to the Gradle Wrapper script." + }, + { + "name": "cwd", + "aliases": [ + "workingDirectory" + ], + "type": "filePath", + "label": "Working directory", + "defaultValue": "", + "required": false, + "helpMarkDown": "Working directory in which to run the Gradle build. If not specified, the repository root directory is used." + }, + { + "name": "options", + "type": "string", + "label": "Options", + "defaultValue": "", + "required": false + }, + { + "name": "tasks", + "type": "string", + "label": "Tasks", + "defaultValue": "build", + "required": true + }, + { + "name": "publishJUnitResults", + "type": "boolean", + "label": "Publish to Azure Pipelines", + "required": true, + "defaultValue": "true", + "groupName": "junitTestResults", + "helpMarkDown": "Select this option to publish JUnit test results produced by the Gradle build to Azure Pipelines. Each test results file matching `Test Results Files` will be published as a test run in Azure Pipelines." + }, + { + "name": "testResultsFiles", + "type": "filePath", + "label": "Test results files", + "defaultValue": "**/TEST-*.xml", + "required": true, + "groupName": "junitTestResults", + "helpMarkDown": "Test results files path. Wildcards can be used ([more information](https://go.microsoft.com/fwlink/?linkid=856077)). For example, `**/TEST-*.xml` for all XML files whose name starts with TEST-.", + "visibleRule": "publishJUnitResults = true" + }, + { + "name": "testRunTitle", + "type": "string", + "label": "Test run title", + "defaultValue": "", + "required": false, + "groupName": "junitTestResults", + "helpMarkDown": "Provide a name for the test run.", + "visibleRule": "publishJUnitResults = true" + }, + { + "name": "javaHomeSelection", + "aliases": [ + "javaHomeOption" + ], + "type": "radio", + "label": "Set JAVA_HOME by", + "required": true, + "groupName": "advanced", + "defaultValue": "JDKVersion", + "helpMarkDown": "Sets JAVA_HOME either by selecting a JDK version that will be discovered during builds or by manually entering a JDK path.", + "options": { + "JDKVersion": "JDK Version", + "Path": "Path" + } + }, + { + "name": "jdkVersion", + "aliases": [ + "jdkVersionOption" + ], + "type": "pickList", + "label": "JDK version", + "required": false, + "groupName": "advanced", + "defaultValue": "default", + "helpMarkDown": "Will attempt to discover the path to the selected JDK version and set JAVA_HOME accordingly.", + "visibleRule": "javaHomeSelection = JDKVersion", + "options": { + "default": "default", + "1.17": "JDK 17", + "1.11": "JDK 11", + "1.10": "JDK 10 (out of support)", + "1.9": "JDK 9 (out of support)", + "1.8": "JDK 8", + "1.7": "JDK 7", + "1.6": "JDK 6 (out of support)" + } + }, + { + "name": "jdkUserInputPath", + "aliases": [ + "jdkDirectory" + ], + "type": "string", + "label": "JDK path", + "required": true, + "groupName": "advanced", + "defaultValue": "", + "helpMarkDown": "Sets JAVA_HOME to the given path.", + "visibleRule": "javaHomeSelection = Path" + }, + { + "name": "jdkArchitecture", + "aliases": [ + "jdkArchitectureOption" + ], + "type": "pickList", + "label": "JDK architecture", + "defaultValue": "x64", + "required": false, + "helpMarkDown": "Optionally supply the architecture (x86, x64) of the JDK.", + "visibleRule": "jdkVersion != default", + "groupName": "advanced", + "options": { + "x86": "x86", + "x64": "x64" + } + }, + { + "name": "gradleOpts", + "aliases": [ + "gradleOptions" + ], + "type": "string", + "label": "Set GRADLE_OPTS", + "required": false, + "groupName": "advanced", + "defaultValue": "-Xmx1024m", + "helpMarkDown": "Sets the GRADLE_OPTS environment variable, which is used to send command-line arguments to start the JVM. The xmx flag specifies the maximum memory available to the JVM." + }, + { + "name": "sqAnalysisEnabled", + "aliases": [ + "sonarQubeRunAnalysis" + ], + "type": "boolean", + "label": "Run SonarQube or SonarCloud Analysis", + "required": true, + "defaultValue": "false", + "groupName": "CodeAnalysis", + "helpMarkDown": "This option has changed from version 1 of the **Gradle** task to use the [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) and [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) marketplace extensions. Enable this option to run [SonarQube or SonarCloud analysis](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html) after executing tasks in the **Tasks** field. You must also add a **Prepare Analysis Configuration** task from one of the extensions to the build pipeline before this Gradle task." + }, + { + "name": "sqGradlePluginVersionChoice", + "type": "radio", + "label": "SonarQube scanner for Gradle version", + "required": true, + "defaultValue": "specify", + "options": { + "specify": "Specify version number", + "build": "Use plugin applied in your build.gradle" + }, + "helpMarkDown": "The SonarQube Gradle plugin version to use. You can declare it in your Gradle configuration file, or specify a version here.", + "groupName": "CodeAnalysis", + "visibleRule": "sqAnalysisEnabled = true" + }, + { + "name": "sqGradlePluginVersion", + "aliases": [ + "sonarQubeGradlePluginVersion" + ], + "type": "string", + "label": "SonarQube scanner for Gradle plugin version", + "required": true, + "defaultValue": "2.6.1", + "helpMarkDown": "Refer to https://plugins.gradle.org/plugin/org.sonarqube for all available versions.", + "groupName": "CodeAnalysis", + "visibleRule": "sqAnalysisEnabled = true && sqGradlePluginVersionChoice = specify" + }, + { + "name": "checkstyleAnalysisEnabled", + "aliases": [ + "checkStyleRunAnalysis" + ], + "type": "boolean", + "label": "Run Checkstyle", + "required": false, + "defaultValue": "false", + "groupName": "CodeAnalysis", + "helpMarkDown": "Run the Checkstyle tool with the default Sun checks. Results are uploaded as build artifacts." + }, + { + "name": "findbugsAnalysisEnabled", + "aliases": [ + "findBugsRunAnalysis" + ], + "type": "boolean", + "label": "Run FindBugs", + "required": false, + "defaultValue": "false", + "groupName": "CodeAnalysis", + "helpMarkDown": "Use the FindBugs static analysis tool to look for bugs in the code. Results are uploaded as build artifacts. In Gradle 6.0 this plugin was removed. Use spotbugs plugin instead. [More info](https://docs.gradle.org/current/userguide/upgrading_version_5.html#the_findbugs_plugin_has_been_removed)" + }, + { + "name": "pmdAnalysisEnabled", + "aliases": [ + "pmdRunAnalysis" + ], + "type": "boolean", + "label": "Run PMD", + "required": false, + "defaultValue": "false", + "groupName": "CodeAnalysis", + "helpMarkDown": "Use the PMD Java static analysis tool to look for bugs in the code. Results are uploaded as build artifacts." + }, + { + "name": "spotBugsAnalysisEnabled", + "aliases": [ + "spotBugsAnalysis" + ], + "type": "boolean", + "label": "Run SpotBugs", + "required": true, + "defaultValue": "false", + "groupName": "CodeAnalysis", + "helpMarkDown": "Enable this option to run spotBugs. This plugin works with Gradle v5.6 or later. [More info](https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)" + }, + { + "name": "spotBugsGradlePluginVersionChoice", + "type": "radio", + "label": "Spotbugs plugin version", + "required": true, + "defaultValue": "specify", + "options": { + "specify": "Specify version number", + "build": "Use plugin applied in your build.gradle" + }, + "helpMarkDown": "The Spotbugs Gradle plugin version to use. You can declare it in your Gradle configuration file, or specify a version here.", + "groupName": "CodeAnalysis", + "visibleRule": "spotBugsAnalysisEnabled = true" + }, + { + "name": "spotbugsGradlePluginVersion", + "aliases": [ + "spotbugsGradlePluginVersion" + ], + "type": "string", + "label": "Version number", + "required": true, + "defaultValue": "4.7.0", + "helpMarkDown": "Refer to https://plugins.gradle.org/plugin/com.github.spotbugs for all available versions.", + "groupName": "CodeAnalysis", + "visibleRule": "spotBugsAnalysisEnabled = true && spotBugsGradlePluginVersionChoice = specify" + } + ], + "instanceNameFormat": "gradlew $(tasks)", + "execution": { + "Node10": { + "target": "gradletask.js", + "argumentFormat": "" + }, + "Node16": { + "target": "gradletask.js", + "argumentFormat": "" + } + }, + "messages": { + "sqCommon_CreateTaskReport_MissingField": "Failed to create TaskReport object. Missing field: %s", + "sqCommon_WaitingForAnalysis": "Waiting for the SonarQube server to analyse the build.", + "sqCommon_NotWaitingForAnalysis": "Build not configured to wait for the SonarQube analysis. Detailed quality gate status will not be available.", + "sqCommon_QualityGateStatusUnknown": "Could not detect the quality gate status or a new status has been introduced.", + "sqCommon_InvalidResponseFromServer": "Server responded with an invalid or unexpected response format.", + "codeAnalysis_ToolIsEnabled": "%s analysis is enabled.", + "codeAnalysis_ToolFailed": "%s analysis failed.", + "sqAnalysis_IncrementalMode": "Detected a PR build - running the SonarQube analysis in incremental mode", + "sqAnalysis_BuildSummaryTitle": "SonarQube Analysis Report", + "sqAnalysis_TaskReportInvalid": "Invalid or missing task report. Check SonarQube finished successfully.", + "sqAnalysis_BuildSummary_LinkText": "Detailed SonarQube report", + "sqAnalysis_BuildSummary_CannotAuthenticate": "Cannot authenticate to the SonarQube server. Check the saved service connection details and the status of the server.", + "sqAnalysis_AnalysisTimeout": "The analysis did not complete in the allotted time of %d seconds.", + "sqAnalysis_IsPullRequest_SkippingBuildSummary": "Pull request build: detailed SonarQube build summary will not be available.", + "sqAnalysis_IsPullRequest_SkippingBuildBreaker": "Pull request build: build will not be broken if quality gate fails.", + "sqAnalysis_BuildBrokenDueToQualityGateFailure": "The SonarQube quality gate associated with this build has failed.", + "sqAnalysis_QualityGatePassed": "The SonarQube quality gate associated with this build has passed (status %s)", + "sqAnalysis_UnknownComparatorString": "The SonarQube build summary encountered a problem: unknown comparator '%s'", + "sqAnalysis_NoUnitsFound": "The list of SonarQube measurement units could not be retrieved from the server.", + "sqAnalysis_NoReportTask": "Could not find report-task.txt. Possible cause: the SonarQube analysis did not complete successfully.", + "sqAnalysis_MultipleReportTasks": "Multiple report-task.txt files found. Choosing the first one. The build summary and the build breaker may not be accurate. Possible cause: multiple SonarQube analysis during the same build, which is not supported.", + "codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s found %d violations in %d files.", + "codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s found %d violations in 1 file.", + "codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s found 1 violation in 1 file.", + "codeAnalysisBuildSummaryLine_NoViolations": "%s found no violations.", + "codeAnalysisBuildSummaryTitle": "Code Analysis Report", + "codeAnalysisArtifactSummaryTitle": "Code Analysis Results", + "codeAnalysisDisabled": "Code analysis is disabled outside of the build environment. Could not find a value for: %s", + "LocateJVMBasedOnVersionAndArch": "Locate JAVA_HOME for Java %s %s", + "UnsupportedJdkWarning": "JDK 9 and JDK 10 are out of support. Please switch to a later version in your project and pipeline. Attempting to build with JDK 11...", + "FailedToLocateSpecifiedJVM": "Failed to find the specified JDK version. Please ensure the specified JDK version is installed on the agent and the environment variable '%s' exists and is set to the location of a corresponding JDK or use the [Java Tool Installer](https://go.microsoft.com/fwlink/?linkid=875287) task to install the desired JDK.", + "InvalidBuildFile": "Invalid or unsupported build file", + "FileNotFound": "File or folder doesn't exist: %s", + "NoTestResults": "No test result files matching %s were found, so publishing JUnit test results is being skipped.", + "chmodGradlew": "Used 'chmod' method for gradlew file to make it executable.", + "UnableToExtractGradleVersion": "Unable to extract Gradle version from gradle output." + } +} \ No newline at end of file diff --git a/Tasks/GradleV4/task.loc.json b/Tasks/GradleV4/task.loc.json new file mode 100644 index 000000000000..c7ae4443de10 --- /dev/null +++ b/Tasks/GradleV4/task.loc.json @@ -0,0 +1,353 @@ +{ + "id": "8D8EEBD8-2B94-4C97-85AF-839254CC6DA4", + "name": "Gradle", + "friendlyName": "ms-resource:loc.friendlyName", + "description": "ms-resource:loc.description", + "helpUrl": "https://docs.microsoft.com/azure/devops/pipelines/tasks/build/gradle", + "helpMarkDown": "ms-resource:loc.helpMarkDown", + "category": "Build", + "visibility": [ + "Build" + ], + "runsOn": [ + "Agent", + "DeploymentGroup" + ], + "author": "Microsoft Corporation", + "version": { + "Major": 4, + "Minor": 252, + "Patch": 0 + }, + "releaseNotes": "ms-resource:loc.releaseNotes", + "demands": [], + "minimumAgentVersion": "1.91.0", + "groups": [ + { + "name": "junitTestResults", + "displayName": "ms-resource:loc.group.displayName.junitTestResults", + "isExpanded": true + }, + { + "name": "advanced", + "displayName": "ms-resource:loc.group.displayName.advanced", + "isExpanded": false + }, + { + "name": "CodeAnalysis", + "displayName": "ms-resource:loc.group.displayName.CodeAnalysis", + "isExpanded": true + } + ], + "inputs": [ + { + "name": "wrapperScript", + "aliases": [ + "gradleWrapperFile" + ], + "type": "filePath", + "label": "ms-resource:loc.input.label.wrapperScript", + "defaultValue": "gradlew", + "required": true, + "helpMarkDown": "ms-resource:loc.input.help.wrapperScript" + }, + { + "name": "cwd", + "aliases": [ + "workingDirectory" + ], + "type": "filePath", + "label": "ms-resource:loc.input.label.cwd", + "defaultValue": "", + "required": false, + "helpMarkDown": "ms-resource:loc.input.help.cwd" + }, + { + "name": "options", + "type": "string", + "label": "ms-resource:loc.input.label.options", + "defaultValue": "", + "required": false + }, + { + "name": "tasks", + "type": "string", + "label": "ms-resource:loc.input.label.tasks", + "defaultValue": "build", + "required": true + }, + { + "name": "publishJUnitResults", + "type": "boolean", + "label": "ms-resource:loc.input.label.publishJUnitResults", + "required": true, + "defaultValue": "true", + "groupName": "junitTestResults", + "helpMarkDown": "ms-resource:loc.input.help.publishJUnitResults" + }, + { + "name": "testResultsFiles", + "type": "filePath", + "label": "ms-resource:loc.input.label.testResultsFiles", + "defaultValue": "**/TEST-*.xml", + "required": true, + "groupName": "junitTestResults", + "helpMarkDown": "ms-resource:loc.input.help.testResultsFiles", + "visibleRule": "publishJUnitResults = true" + }, + { + "name": "testRunTitle", + "type": "string", + "label": "ms-resource:loc.input.label.testRunTitle", + "defaultValue": "", + "required": false, + "groupName": "junitTestResults", + "helpMarkDown": "ms-resource:loc.input.help.testRunTitle", + "visibleRule": "publishJUnitResults = true" + }, + { + "name": "javaHomeSelection", + "aliases": [ + "javaHomeOption" + ], + "type": "radio", + "label": "ms-resource:loc.input.label.javaHomeSelection", + "required": true, + "groupName": "advanced", + "defaultValue": "JDKVersion", + "helpMarkDown": "ms-resource:loc.input.help.javaHomeSelection", + "options": { + "JDKVersion": "JDK Version", + "Path": "Path" + } + }, + { + "name": "jdkVersion", + "aliases": [ + "jdkVersionOption" + ], + "type": "pickList", + "label": "ms-resource:loc.input.label.jdkVersion", + "required": false, + "groupName": "advanced", + "defaultValue": "default", + "helpMarkDown": "ms-resource:loc.input.help.jdkVersion", + "visibleRule": "javaHomeSelection = JDKVersion", + "options": { + "default": "default", + "1.17": "JDK 17", + "1.11": "JDK 11", + "1.10": "JDK 10 (out of support)", + "1.9": "JDK 9 (out of support)", + "1.8": "JDK 8", + "1.7": "JDK 7", + "1.6": "JDK 6 (out of support)" + } + }, + { + "name": "jdkUserInputPath", + "aliases": [ + "jdkDirectory" + ], + "type": "string", + "label": "ms-resource:loc.input.label.jdkUserInputPath", + "required": true, + "groupName": "advanced", + "defaultValue": "", + "helpMarkDown": "ms-resource:loc.input.help.jdkUserInputPath", + "visibleRule": "javaHomeSelection = Path" + }, + { + "name": "jdkArchitecture", + "aliases": [ + "jdkArchitectureOption" + ], + "type": "pickList", + "label": "ms-resource:loc.input.label.jdkArchitecture", + "defaultValue": "x64", + "required": false, + "helpMarkDown": "ms-resource:loc.input.help.jdkArchitecture", + "visibleRule": "jdkVersion != default", + "groupName": "advanced", + "options": { + "x86": "x86", + "x64": "x64" + } + }, + { + "name": "gradleOpts", + "aliases": [ + "gradleOptions" + ], + "type": "string", + "label": "ms-resource:loc.input.label.gradleOpts", + "required": false, + "groupName": "advanced", + "defaultValue": "-Xmx1024m", + "helpMarkDown": "ms-resource:loc.input.help.gradleOpts" + }, + { + "name": "sqAnalysisEnabled", + "aliases": [ + "sonarQubeRunAnalysis" + ], + "type": "boolean", + "label": "ms-resource:loc.input.label.sqAnalysisEnabled", + "required": true, + "defaultValue": "false", + "groupName": "CodeAnalysis", + "helpMarkDown": "ms-resource:loc.input.help.sqAnalysisEnabled" + }, + { + "name": "sqGradlePluginVersionChoice", + "type": "radio", + "label": "ms-resource:loc.input.label.sqGradlePluginVersionChoice", + "required": true, + "defaultValue": "specify", + "options": { + "specify": "Specify version number", + "build": "Use plugin applied in your build.gradle" + }, + "helpMarkDown": "ms-resource:loc.input.help.sqGradlePluginVersionChoice", + "groupName": "CodeAnalysis", + "visibleRule": "sqAnalysisEnabled = true" + }, + { + "name": "sqGradlePluginVersion", + "aliases": [ + "sonarQubeGradlePluginVersion" + ], + "type": "string", + "label": "ms-resource:loc.input.label.sqGradlePluginVersion", + "required": true, + "defaultValue": "2.6.1", + "helpMarkDown": "ms-resource:loc.input.help.sqGradlePluginVersion", + "groupName": "CodeAnalysis", + "visibleRule": "sqAnalysisEnabled = true && sqGradlePluginVersionChoice = specify" + }, + { + "name": "checkstyleAnalysisEnabled", + "aliases": [ + "checkStyleRunAnalysis" + ], + "type": "boolean", + "label": "ms-resource:loc.input.label.checkstyleAnalysisEnabled", + "required": false, + "defaultValue": "false", + "groupName": "CodeAnalysis", + "helpMarkDown": "ms-resource:loc.input.help.checkstyleAnalysisEnabled" + }, + { + "name": "findbugsAnalysisEnabled", + "aliases": [ + "findBugsRunAnalysis" + ], + "type": "boolean", + "label": "ms-resource:loc.input.label.findbugsAnalysisEnabled", + "required": false, + "defaultValue": "false", + "groupName": "CodeAnalysis", + "helpMarkDown": "ms-resource:loc.input.help.findbugsAnalysisEnabled" + }, + { + "name": "pmdAnalysisEnabled", + "aliases": [ + "pmdRunAnalysis" + ], + "type": "boolean", + "label": "ms-resource:loc.input.label.pmdAnalysisEnabled", + "required": false, + "defaultValue": "false", + "groupName": "CodeAnalysis", + "helpMarkDown": "ms-resource:loc.input.help.pmdAnalysisEnabled" + }, + { + "name": "spotBugsAnalysisEnabled", + "aliases": [ + "spotBugsAnalysis" + ], + "type": "boolean", + "label": "ms-resource:loc.input.label.spotBugsAnalysisEnabled", + "required": true, + "defaultValue": "false", + "groupName": "CodeAnalysis", + "helpMarkDown": "ms-resource:loc.input.help.spotBugsAnalysisEnabled" + }, + { + "name": "spotBugsGradlePluginVersionChoice", + "type": "radio", + "label": "ms-resource:loc.input.label.spotBugsGradlePluginVersionChoice", + "required": true, + "defaultValue": "specify", + "options": { + "specify": "Specify version number", + "build": "Use plugin applied in your build.gradle" + }, + "helpMarkDown": "ms-resource:loc.input.help.spotBugsGradlePluginVersionChoice", + "groupName": "CodeAnalysis", + "visibleRule": "spotBugsAnalysisEnabled = true" + }, + { + "name": "spotbugsGradlePluginVersion", + "aliases": [ + "spotbugsGradlePluginVersion" + ], + "type": "string", + "label": "ms-resource:loc.input.label.spotbugsGradlePluginVersion", + "required": true, + "defaultValue": "4.7.0", + "helpMarkDown": "ms-resource:loc.input.help.spotbugsGradlePluginVersion", + "groupName": "CodeAnalysis", + "visibleRule": "spotBugsAnalysisEnabled = true && spotBugsGradlePluginVersionChoice = specify" + } + ], + "instanceNameFormat": "ms-resource:loc.instanceNameFormat", + "execution": { + "Node10": { + "target": "gradletask.js", + "argumentFormat": "" + }, + "Node16": { + "target": "gradletask.js", + "argumentFormat": "" + } + }, + "messages": { + "sqCommon_CreateTaskReport_MissingField": "ms-resource:loc.messages.sqCommon_CreateTaskReport_MissingField", + "sqCommon_WaitingForAnalysis": "ms-resource:loc.messages.sqCommon_WaitingForAnalysis", + "sqCommon_NotWaitingForAnalysis": "ms-resource:loc.messages.sqCommon_NotWaitingForAnalysis", + "sqCommon_QualityGateStatusUnknown": "ms-resource:loc.messages.sqCommon_QualityGateStatusUnknown", + "sqCommon_InvalidResponseFromServer": "ms-resource:loc.messages.sqCommon_InvalidResponseFromServer", + "codeAnalysis_ToolIsEnabled": "ms-resource:loc.messages.codeAnalysis_ToolIsEnabled", + "codeAnalysis_ToolFailed": "ms-resource:loc.messages.codeAnalysis_ToolFailed", + "sqAnalysis_IncrementalMode": "ms-resource:loc.messages.sqAnalysis_IncrementalMode", + "sqAnalysis_BuildSummaryTitle": "ms-resource:loc.messages.sqAnalysis_BuildSummaryTitle", + "sqAnalysis_TaskReportInvalid": "ms-resource:loc.messages.sqAnalysis_TaskReportInvalid", + "sqAnalysis_BuildSummary_LinkText": "ms-resource:loc.messages.sqAnalysis_BuildSummary_LinkText", + "sqAnalysis_BuildSummary_CannotAuthenticate": "ms-resource:loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate", + "sqAnalysis_AnalysisTimeout": "ms-resource:loc.messages.sqAnalysis_AnalysisTimeout", + "sqAnalysis_IsPullRequest_SkippingBuildSummary": "ms-resource:loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary", + "sqAnalysis_IsPullRequest_SkippingBuildBreaker": "ms-resource:loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker", + "sqAnalysis_BuildBrokenDueToQualityGateFailure": "ms-resource:loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure", + "sqAnalysis_QualityGatePassed": "ms-resource:loc.messages.sqAnalysis_QualityGatePassed", + "sqAnalysis_UnknownComparatorString": "ms-resource:loc.messages.sqAnalysis_UnknownComparatorString", + "sqAnalysis_NoUnitsFound": "ms-resource:loc.messages.sqAnalysis_NoUnitsFound", + "sqAnalysis_NoReportTask": "ms-resource:loc.messages.sqAnalysis_NoReportTask", + "sqAnalysis_MultipleReportTasks": "ms-resource:loc.messages.sqAnalysis_MultipleReportTasks", + "codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "ms-resource:loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles", + "codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "ms-resource:loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile", + "codeAnalysisBuildSummaryLine_OneViolationOneFile": "ms-resource:loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile", + "codeAnalysisBuildSummaryLine_NoViolations": "ms-resource:loc.messages.codeAnalysisBuildSummaryLine_NoViolations", + "codeAnalysisBuildSummaryTitle": "ms-resource:loc.messages.codeAnalysisBuildSummaryTitle", + "codeAnalysisArtifactSummaryTitle": "ms-resource:loc.messages.codeAnalysisArtifactSummaryTitle", + "codeAnalysisDisabled": "ms-resource:loc.messages.codeAnalysisDisabled", + "LocateJVMBasedOnVersionAndArch": "ms-resource:loc.messages.LocateJVMBasedOnVersionAndArch", + "UnsupportedJdkWarning": "ms-resource:loc.messages.UnsupportedJdkWarning", + "FailedToLocateSpecifiedJVM": "ms-resource:loc.messages.FailedToLocateSpecifiedJVM", + "InvalidBuildFile": "ms-resource:loc.messages.InvalidBuildFile", + "FileNotFound": "ms-resource:loc.messages.FileNotFound", + "NoTestResults": "ms-resource:loc.messages.NoTestResults", + "chmodGradlew": "ms-resource:loc.messages.chmodGradlew", + "UnableToExtractGradleVersion": "ms-resource:loc.messages.UnableToExtractGradleVersion" + } +} \ No newline at end of file diff --git a/Tasks/GradleV4/tsconfig.json b/Tasks/GradleV4/tsconfig.json new file mode 100644 index 000000000000..0438b79f69ac --- /dev/null +++ b/Tasks/GradleV4/tsconfig.json @@ -0,0 +1,6 @@ +{ + "compilerOptions": { + "target": "ES6", + "module": "commonjs" + } +} \ No newline at end of file diff --git a/Tasks/GradleV4/tslint.json b/Tasks/GradleV4/tslint.json new file mode 100644 index 000000000000..5e164d2adc65 --- /dev/null +++ b/Tasks/GradleV4/tslint.json @@ -0,0 +1,64 @@ +{ + "rules": { + "align": [true, + "parameters", + "arguments", + "statements" + ], + "class-name": true, + "curly": true, + "eofline": true, + "forin": true, + "indent": [true, "spaces", 4], + "label-position": true, + "label-undefined": true, + "max-line-length": [false, 160], + "no-arg": true, + "no-bitwise": true, + "no-console": [true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-consecutive-blank-lines": true, + "no-construct": true, + "no-debugger": true, + "no-duplicate-key": true, + "no-duplicate-variable": true, + "no-empty": true, + "no-eval": true, + "no-require-imports": false, + "no-null-keyword": false, + "no-string-literal": false, + "no-switch-case-fall-through": true, + "no-trailing-whitespace": true, + "no-unused-variable": true, + "no-unreachable": true, + "no-use-before-declare": true, + "no-var-keyword": true, + "one-line": [true, + "check-open-brace", + "check-catch", + "check-else", + "check-whitespace" + ], + "quotemark": [true, "single", "avoid-escape"], + "radix": false, + "semicolon": true, + "trailing-comma": [true, {"multiline": "never", "singleline": "never"}], + "triple-equals": [true, "allow-null-check"], + "variable-name": [true, + "check-format", + "allow-leading-underscore", + "ban-keywords" + ], + "whitespace": [true, + "check-branch", + "check-decl", + "check-operator", + "check-separator" + ] + } +} \ No newline at end of file diff --git a/_generated/GradleV4.versionmap.txt b/_generated/GradleV4.versionmap.txt new file mode 100644 index 000000000000..3abe257484b2 --- /dev/null +++ b/_generated/GradleV4.versionmap.txt @@ -0,0 +1,2 @@ +Default|4.252.0 +Node20-225|4.252.1 diff --git a/_generated/GradleV4_Node20/.npmrc b/_generated/GradleV4_Node20/.npmrc new file mode 100644 index 000000000000..d5c7fef620a3 --- /dev/null +++ b/_generated/GradleV4_Node20/.npmrc @@ -0,0 +1,5 @@ +scripts-prepend-node-path=true + +registry=https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ + +always-auth=true \ No newline at end of file diff --git a/_generated/GradleV4_Node20/Modules/environment.ts b/_generated/GradleV4_Node20/Modules/environment.ts new file mode 100644 index 000000000000..8124d08ccff2 --- /dev/null +++ b/_generated/GradleV4_Node20/Modules/environment.ts @@ -0,0 +1,96 @@ +import * as tl from 'azure-pipelines-task-lib/task'; +import * as javaCommon from 'azure-pipelines-tasks-java-common/java-common'; +import { IExecOptions, ToolRunner } from 'azure-pipelines-task-lib/toolrunner'; + +// Setting the access token env var to both VSTS and AZURE_ARTIFACTS for +// backwards compatibility with repos that already use the older env var. +const accessTokenEnvSettingLegacy: string = 'VSTS_ENV_ACCESS_TOKEN'; +const accessTokenEnvSetting: string = 'AZURE_ARTIFACTS_ENV_ACCESS_TOKEN'; + +/** + * Extract system access token from endpoint + * @returns {string} access token to access account feeds or empty string + */ +function getSystemAccessToken(): string { + tl.debug('Getting credentials for account feeds'); + + const authorizationData: tl.EndpointAuthorization = tl.getEndpointAuthorization('SYSTEMVSSCONNECTION', false); + + if (authorizationData && authorizationData.scheme === 'OAuth') { + tl.debug('Got auth token'); + return authorizationData.parameters['AccessToken']; + } + + tl.warning(tl.loc('FeedTokenUnavailable')); + + return ''; +} + +/** + * Update JAVA_HOME if user selected specific JDK version or set path manually + * @param {string} javaHomeSelection - value of the `Set JAVA_HOME by` task input + */ +export function setJavaHome(javaHomeSelection: string): void { + let specifiedJavaHome: string; + let javaTelemetryData: any = {}; + + if (javaHomeSelection === 'JDKVersion') { + tl.debug('Using JDK version to find and set JAVA_HOME'); + + const jdkVersion: string = tl.getInput('jdkVersion'); + const jdkArchitecture: string = tl.getInput('jdkArchitecture'); + + javaTelemetryData = { 'jdkVersion': jdkVersion }; + + if (jdkVersion !== 'default') { + specifiedJavaHome = javaCommon.findJavaHome(jdkVersion, jdkArchitecture); + } + } else { + tl.debug('Using path from user input to set JAVA_HOME'); + + const jdkUserInputPath: string = tl.getPathInput('jdkUserInputPath', true, true); + specifiedJavaHome = jdkUserInputPath; + + javaTelemetryData = { 'jdkVersion': 'custom' }; + } + + javaCommon.publishJavaTelemetry('Gradle', javaTelemetryData); + + if (specifiedJavaHome) { + tl.debug(`Set JAVA_HOME to ${specifiedJavaHome}`); + process.env['JAVA_HOME'] = specifiedJavaHome; + } +} + +/** + * Get execution options for Gradle. + * + * This function does the following things: + * - Get a snapshot of the process environment variables + * - Update the snapshot to include system access token + * @returns {IExecOptions} object with execution options for Gradle + */ +export function getExecOptions(): IExecOptions { + const env: NodeJS.ProcessEnv = process.env; + env[accessTokenEnvSetting] = env[accessTokenEnvSettingLegacy] = getSystemAccessToken(); + return { + env: env + }; +} + +/** + * Configure the JVM associated with this run. + * @param {string} gradleOptions - Gradle options provided by the user + */ +export function setGradleOpts(gradleOptions: string): void { + if (gradleOptions) { + process.env['GRADLE_OPTS'] = gradleOptions; + tl.debug(`GRADLE_OPTS is now set to ${gradleOptions}`); + } +} + +export function extractGradleVersion(str: string): string { + const regex = /^Gradle (?\d+\.\d+(?:\.\d+)?.*$)/m; + const match = str.match(regex); + return match?.groups?.version || 'unknown'; +} diff --git a/_generated/GradleV4_Node20/Modules/project-configuration.ts b/_generated/GradleV4_Node20/Modules/project-configuration.ts new file mode 100644 index 000000000000..c3fd5652eb6e --- /dev/null +++ b/_generated/GradleV4_Node20/Modules/project-configuration.ts @@ -0,0 +1,36 @@ +import * as fs from 'fs'; +import * as os from 'os'; +import * as tl from 'azure-pipelines-task-lib/task'; + + +/** + * Configure wrapper script: + * - For Windows - set `*.bat` extension + * - For Linux/macOS - set script as executable + * @param {string} wrapperScript - Relative path from the repository root to the Gradle Wrapper script. + * @returns {string} path to the wrapper script + */ +export function configureWrapperScript(wrapperScript: string): string { + let script: string = wrapperScript; + const isWindows: RegExpMatchArray = os.type().match(/^Win/); + + if (isWindows) { + // append .bat extension name on Windows platform + if (!script.endsWith('bat')) { + tl.debug('Append .bat extension name to gradlew script.'); + script += '.bat'; + } + } + + if (fs.existsSync(script)) { + try { + // Make sure the wrapper script is executable + fs.accessSync(script, fs.constants.X_OK) + } catch (err) { + // If not, show warning and chmodding the gradlew file to make it executable + tl.warning(tl.loc('chmodGradlew')); + fs.chmodSync(script, '755'); + } + } + return script; +} diff --git a/_generated/GradleV4_Node20/Modules/publish-test-results.ts b/_generated/GradleV4_Node20/Modules/publish-test-results.ts new file mode 100644 index 000000000000..1ef1788b6849 --- /dev/null +++ b/_generated/GradleV4_Node20/Modules/publish-test-results.ts @@ -0,0 +1,46 @@ +import * as tl from 'azure-pipelines-task-lib/task'; + +const TESTRUN_SYSTEM = 'VSTS - gradle'; + + +/** + * Publish unit tests results to Azure DevOps + * @param {boolean} publishJUnitResults - if set to `true`, the result of the unit tests will be published otherwise publishing will be skipped + * @param {string} testResultsFiles - pattern for test results files + */ +export function publishTestResults(publishJUnitResults: boolean, testResultsFiles: string): number { + if (publishJUnitResults) { + let matchingTestResultsFiles: string[] = []; + + // check for pattern in testResultsFiles + if (testResultsFiles.indexOf('*') >= 0 || testResultsFiles.indexOf('?') >= 0) { + tl.debug('Pattern found in testResultsFiles parameter'); + + const buildFolder: string = tl.getVariable('System.DefaultWorkingDirectory'); + + // The find options are as default, except the `skipMissingFiles` option is set to `true` + // so there will be a warning instead of an error if an item will not be found + const findOptions: tl.FindOptions = { + allowBrokenSymbolicLinks: false, + followSpecifiedSymbolicLink: true, + followSymbolicLinks: true, + skipMissingFiles: true + }; + + matchingTestResultsFiles = tl.findMatch(buildFolder, testResultsFiles, findOptions, { matchBase: true }); + } else { + tl.debug('No pattern found in testResultsFiles parameter'); + matchingTestResultsFiles = [testResultsFiles]; + } + + if (!matchingTestResultsFiles || matchingTestResultsFiles.length === 0) { + console.log(tl.loc('NoTestResults', testResultsFiles)); + return 0; + } + + const tp: tl.TestPublisher = new tl.TestPublisher('JUnit'); + const testRunTitle = tl.getInput('testRunTitle'); + + tp.publish(matchingTestResultsFiles, 'true', '', '', testRunTitle, 'true', TESTRUN_SYSTEM); + } +} diff --git a/_generated/GradleV4_Node20/Modules/utils.ts b/_generated/GradleV4_Node20/Modules/utils.ts new file mode 100644 index 000000000000..ee8d6d831182 --- /dev/null +++ b/_generated/GradleV4_Node20/Modules/utils.ts @@ -0,0 +1,32 @@ +import { ITaskResult, ICodeAnalysisResult } from '../interfaces'; +import { TaskResult } from 'azure-pipelines-task-lib'; + +/** + * Resolve task status based on code analysis run results + * @param {ICodeAnalysisResult} codeAnalysisResult - Code analysis run data + * @returns {ITaskResult} task status and message + */ +export function resolveTaskResult(codeAnalysisResult: ICodeAnalysisResult): ITaskResult { + let status: TaskResult; + let message: string = ''; + + if (codeAnalysisResult.gradleResult === 0) { + status = TaskResult.Succeeded; + message = 'Build succeeded.'; + } else if (codeAnalysisResult.gradleResult === -1) { + status = TaskResult.Failed; + + if (codeAnalysisResult.statusFailed) { + message = `Code analysis failed. Gradle exit code: ${codeAnalysisResult.gradleResult}. Error: ${codeAnalysisResult.analysisError}`; + } else { + message = `Build failed. Gradle exit code: ${codeAnalysisResult.gradleResult}`; + } + } + + const taskResult: ITaskResult = { + status: status, + message: message + }; + + return taskResult; +} diff --git a/_generated/GradleV4_Node20/README.md b/_generated/GradleV4_Node20/README.md new file mode 100644 index 000000000000..fd25c4cfcf4b --- /dev/null +++ b/_generated/GradleV4_Node20/README.md @@ -0,0 +1,71 @@ +# Build your code using Gradle in Azure Pipelines + +### Parameters for Gradle build task are explained below + +- **Gradle Wrapper :** This is a Required field. The location in the repository of the gradlew wrapper used for the build. Note that on Windows build agents (including the hosted pool), you must use the `gradlew.bat` wrapper. Xplat build agents use the `gradlew` shell script. To Know more [click here](https://docs.gradle.org/current/userguide/gradle_wrapper.html) + +- **Options :** Specify any command line options you want to pass to the Gradle wrapper. To know more [click here](https://docs.gradle.org/current/userguide/gradle_command_line.html) + +- **Goal(s) :** The task(s) for Gradle to execute. A list of tasks can be taken from `gradlew tasks` issued from a command prompt. To know more [click here](https://docs.gradle.org/current/userguide/tutorial_using_tasks.html) + +#### JUnit Test Results +Use the next three options to manage your JUnit test results in Azure Pipelines + +- **Publish to Azure Pipelines :** Select this option to publish JUnit Test results produced by the Gradle build to Azure Pipelines/TFS. Each test result file matching `Test Results Files` will be published as a test run in Azure Pipelines. + +- **Test Results Files :** This option will appear if you select the above option. Here, provide Test results files path. Wildcards can be used. For example, `**/TEST-*.xml` for all xml files whose name starts with `TEST-."` + +- **Test Run Title :** This option will appear if you select the `Publish to Azure Pipelines/TFS` option. Here provide a name for the Test Run + +#### Advanced +Use the next options to manage your `JAVA_HOME` attribute by JDK Version and Path + +- **Working Directory :** Directory on the build agent where the Gradle wrapper will be invoked from. Defaults to the repository root. + +- **Set JAVA_HOME by :** Select to set `JAVA_HOME` either by providing a path or let Azure Pipelines set the `JAVA_HOME` based on JDK version choosen. By default it is set to `JDK Version` + +- **JDK Version :** Here provide the PATH to `JAVA_HOME` if you want to set it by path or select the appropriate JDK version. + +- **JDK Architecture :** Select the approriate JDK Architecture. By default it is set to `x86` + +#### Code Analysis + +- **Run SonarQube Analysis :** You can choose to run SonarQube analysis after executing the current goals. 'install' or 'package' goals should be executed first. To know more about this option [click here](https://devblogs.microsoft.com/devops/the-gradle-build-task-now-supports-sonarqube-analysis/) + +- **Run Checkstyle :** You can choose to run the Checkstyle static code analysis tool, which checks the compliance of your source code with coding rules. You will receive a code analysis report with the number of violations detected, as well as the original report files if there were any violations. + +- **Run PMD :** You can choose to run the PMD static code analysis tool, which examines your source code for possible bugs. You will receive a code analysis report with the number of violations detected, as well as the original report files if there were any violations. + +- **Run FindBugs :** You can choose to run the FindBugs static code analysis tool, which examines the bytecode of your program for possible bugs. You will receive a code analysis report with the number of violations detected, as well as the original report files if there were any violations. + +### Q&A + +#### How do I generate a wrapper from my Gradle project? + +The Gradle wrapper allows the build agent to download and configure the exact Gradle environment that is checked into the repository without having any software configuration on the build agent itself other than the JVM. + +- **1.** Create the Gradle wrapper by issuing the following command from the root project directory where your build.gradle resides: +`jamal@fabrikam> gradle wrapper` + + +- **2.** Upload your Gradle wrapper to your remote repository. + +There is a binary artifact that is generated by the gradle wrapper (located at `gradle/wrapper/gradle-wrapper.jar`). This binary file is small and doesn't require updating. If you need to change the Gradle configuration run on the build agent, you update the `gradle-wrapper.properties`. + +The repository should look something like this: + +```ssh +|-- gradle/ + `-- wrapper/ + `-- gradle-wrapper.jar + `-- gradle-wrapper.properties +|-- src/ +|-- .gitignore +|-- build.gradle +|-- gradlew +|-- gradlew.bat +``` + + + + diff --git a/_generated/GradleV4_Node20/Strings/resources.resjson/de-DE/resources.resjson b/_generated/GradleV4_Node20/Strings/resources.resjson/de-DE/resources.resjson new file mode 100644 index 000000000000..d0dfe596b230 --- /dev/null +++ b/_generated/GradleV4_Node20/Strings/resources.resjson/de-DE/resources.resjson @@ -0,0 +1,85 @@ +{ + "loc.friendlyName": "Gradle", + "loc.helpMarkDown": "[Weitere Informationen zu dieser Aufgabe](https://go.microsoft.com/fwlink/?LinkID=613720) oder [Gradle-Dokumentation anzeigen](https://docs.gradle.org/current/userguide/userguide.html)", + "loc.description": "Mithilfe eines Gradle-Wrapperskripts erstellen", + "loc.instanceNameFormat": "gradlew $(tasks)", + "loc.releaseNotes": "Die Konfiguration der SonarQube-Analyse wurde in die Erweiterungen [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) oder [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) in der Aufgabe „Analysekonfiguration vorbereiten“ verschoben.", + "loc.group.displayName.junitTestResults": "JUnit-Testergebnisse", + "loc.group.displayName.advanced": "Erweitert", + "loc.group.displayName.CodeAnalysis": "Code Analysis", + "loc.input.label.wrapperScript": "Gradle-Wrapper", + "loc.input.help.wrapperScript": "Der relative Pfad vom Repositorystamm zum Gradle-Wrapperskript.", + "loc.input.label.cwd": "Arbeitsverzeichnis", + "loc.input.help.cwd": "Das Arbeitsverzeichnis, in dem der Gradle-Build ausgeführt werden soll. Wenn kein Angabe erfolgt, wird das Repositorystammverzeichnis als Standardwert verwendet.", + "loc.input.label.options": "Optionen", + "loc.input.label.tasks": "Aufgaben", + "loc.input.label.publishJUnitResults": "In Azure Pipelines veröffentlichen", + "loc.input.help.publishJUnitResults": "Wählen Sie diese Option aus, um vom Gradle-Build generierte JUnit-Testergebnisse in Azure Pipelines zu veröffentlichen. Jede Testergebnisdatei, die mit „Testergebnisdateien“ übereinstimmt, wird als Testlauf in Azure Pipelines veröffentlicht.", + "loc.input.label.testResultsFiles": "Testergebnisdateien", + "loc.input.help.testResultsFiles": "Pfad der Testergebnisdateien. Platzhalter können verwendet werden ([weitere Informationen](https://go.microsoft.com/fwlink/?linkid=856077)). Beispiel: „**/TEST-*.xml“ für alle XML-Dateien, deren Name mit „TEST-“ beginnt.", + "loc.input.label.testRunTitle": "Testlauftitel", + "loc.input.help.testRunTitle": "Geben Sie einen Namen für den Testlauf an.", + "loc.input.label.javaHomeSelection": "JAVA_HOME festlegen durch", + "loc.input.help.javaHomeSelection": "Legt JAVA_HOME durch Auswählen einer JDK-Version fest, die während der Erstellung von Builds oder durch manuelles Eingeben eines JDK-Pfads ermittelt wird.", + "loc.input.label.jdkVersion": "JDK-Version", + "loc.input.help.jdkVersion": "Versucht, den Pfad zur ausgewählten JDK-Version zu ermitteln und JAVA_HOME entsprechend festzulegen.", + "loc.input.label.jdkUserInputPath": "JDK-Pfad", + "loc.input.help.jdkUserInputPath": "Legt JAVA_HOME auf den angegebenen Pfad fest.", + "loc.input.label.jdkArchitecture": "JDK-Architektur", + "loc.input.help.jdkArchitecture": "Geben Sie optional die JDK-Architektur an (x86, x64).", + "loc.input.label.gradleOpts": "GRADLE_OPTS festlegen", + "loc.input.help.gradleOpts": "Legt die Umgebungsvariable GRADLE_OPTS fest, die zum Senden von Befehlszeilenargumenten zum Starten von JVM verwendet wird. Das Kennzeichen „xmx“ gibt den maximalen Arbeitsspeicher an, der für JVM verfügbar ist.", + "loc.input.label.sqAnalysisEnabled": "SonarQube- oder SonarCloud-Analyse ausführen", + "loc.input.help.sqAnalysisEnabled": "Diese Option wurde im Vergleich zu Version 1 der Aufgabe **Gradle** dahingehend geändert, dass jetzt die Marketplace-Erweiterungen [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) und [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) verwendet werden. Aktivieren Sie diese Option, um eine [SonarQube- oder SonarCloud-Analyse](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html) durchzuführen, nachdem Sie die Aufgaben im Feld **Aufgaben** ausgeführt haben. Sie müssen der Buildpipeline vor dieser Gradle-Aufgabe außerdem eine Aufgabe **Analysekonfiguration vorbereiten** aus einer der Erweiterungen hinzufügen.", + "loc.input.label.sqGradlePluginVersionChoice": "SonarQube Scanner für Gradle-Version", + "loc.input.help.sqGradlePluginVersionChoice": "Die Version des SonarQube-Gradle-Plug-Ins, die verwendet werden soll. Sie können die Version in Ihrer Gradle-Konfigurationsdatei deklarieren oder hier eine Version angeben.", + "loc.input.label.sqGradlePluginVersion": "Version des SonarQube Scanner für Gradle-Plug-Ins", + "loc.input.help.sqGradlePluginVersion": "Informationen zu allen verfügbaren Versionen finden Sie unter https://plugins.gradle.org/plugin/org.sonarqube.", + "loc.input.label.checkstyleAnalysisEnabled": "Checkstyle ausführen", + "loc.input.help.checkstyleAnalysisEnabled": "Führen Sie das Checkstyle-Tool mit den Sun-Standardüberprüfungen aus. Die Ergebnisse werden als Buildartefakte hochgeladen.", + "loc.input.label.findbugsAnalysisEnabled": "FindBugs ausführen", + "loc.input.help.findbugsAnalysisEnabled": "Verwenden Sie das statische Analysetool FindBugs, um nach Fehlern im Code zu suchen. Ergebnisse werden als Buildartefakt hochgeladen. In Gradle 6.0 wurde dieses Plug-In entfernt. Verwenden Sie stattdessen das Spotbugs-Plug-In. [Weitere Informationen] (https://docs.gradle.org/current/userguide/upgrading_version_5.html#the_findbugs_plugin_has_been_removed)", + "loc.input.label.pmdAnalysisEnabled": "PMD ausführen", + "loc.input.help.pmdAnalysisEnabled": "Verwenden Sie die statischen PMD-Analysetools von Java zum Suchen nach Fehlern im Code. Die Ergebnisse werden als Buildartefakte hochgeladen.", + "loc.input.label.spotBugsAnalysisEnabled": "SpotBugs ausführen", + "loc.input.help.spotBugsAnalysisEnabled": "Aktivieren Sie diese Option, um spotBugs auszuführen. Dieses Plug-in funktioniert mit Gradle v 5.6 oder höher. [Weitere Informationen] (https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)", + "loc.input.label.spotBugsGradlePluginVersionChoice": "Spotbugs-Plug-in-Version", + "loc.input.help.spotBugsGradlePluginVersionChoice": "Die Version des Spotbugs-Gradle-Plug-Ins, die verwendet werden soll. Sie können die Version in Ihrer Gradle-Konfigurationsdatei deklarieren oder hier eine Version angeben.", + "loc.input.label.spotbugsGradlePluginVersion": "Versionsnummer", + "loc.input.help.spotbugsGradlePluginVersion": "Alle verfügbaren Versionen finden Sie unter https://plugins.gradle.org/plugin/com.github.spotbugs.", + "loc.messages.sqCommon_CreateTaskReport_MissingField": "Fehler beim Erstellen des TaskReport-Objekts. Fehlendes Feld: %s", + "loc.messages.sqCommon_WaitingForAnalysis": "Warten, dass der SonarQube-Server den Build analysiert.", + "loc.messages.sqCommon_NotWaitingForAnalysis": "Der Build ist nicht für das Warten auf die SonarQube-Analyse konfiguriert. Der ausführliche Quality Gate-Status ist nicht verfügbar.", + "loc.messages.sqCommon_QualityGateStatusUnknown": "Der Quality Gate-Status wurde nicht erkannt, oder es wurde ein neuer Status eingeführt.", + "loc.messages.sqCommon_InvalidResponseFromServer": "Der Server hat mit einem ungültigen oder unerwarteten Antwortformat geantwortet.", + "loc.messages.codeAnalysis_ToolIsEnabled": "Die %s-Analyse ist aktiviert.", + "loc.messages.codeAnalysis_ToolFailed": "Fehler bei der %s-Analyse.", + "loc.messages.sqAnalysis_IncrementalMode": "Ein PR-Build wurde erkannt. Die SonarQube-Analyse wird im inkrementellen Modus ausgeführt.", + "loc.messages.sqAnalysis_BuildSummaryTitle": "SonarQube-Analysebericht", + "loc.messages.sqAnalysis_TaskReportInvalid": "Ungültiger oder fehlender Aufgabenbericht. Überprüfen Sie, ob SonarQube erfolgreich abgeschlossen wurde.", + "loc.messages.sqAnalysis_BuildSummary_LinkText": "Ausführlicher SonarQube-Bericht", + "loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate": "Authentifizierung beim SonarQube-Server nicht möglich. Überprüfen Sie die gespeicherten Dienstverbindungsdetails und den Status des Servers.", + "loc.messages.sqAnalysis_AnalysisTimeout": "Die Analyse wurde nicht in der vorgesehenen Zeit von %d Sekunden abgeschlossen.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary": "Pull Request-Build: Eine ausführliche SonarQube-Buildzusammenfassung ist nicht verfügbar.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker": "Pull Request-Build: Der Build wird bei einem Quality Gate-Fehler nicht beeinträchtigt.", + "loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure": "Fehler des diesem Build zugeordneten SonarQube Quality Gates.", + "loc.messages.sqAnalysis_QualityGatePassed": "Das diesem Build zugeordnete SonarQube Quality Gate hat bestanden (Status %s).", + "loc.messages.sqAnalysis_UnknownComparatorString": "Problem bei der SonarQube-Buildzusammenfassung: unbekannter Vergleichsoperator „%s“", + "loc.messages.sqAnalysis_NoUnitsFound": "Die Liste der SonarQube-Maßeinheiten konnte nicht vom Server abgerufen werden.", + "loc.messages.sqAnalysis_NoReportTask": "„report-task.txt“ wurde nicht gefunden. Mögliche Ursache: Die SonarQube-Analyse wurde nicht erfolgreich abgeschlossen.", + "loc.messages.sqAnalysis_MultipleReportTasks": "Es wurden mehrere Dateien „report-task.txt“ gefunden. Die erste wird ausgewählt. Die Buildzusammenfassung und der Build Breaker sind möglicherweise nicht genau. Mögliche Ursache: mehrere SonarQube-Analysen im selben Build, dies wird nicht unterstützt.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s hat %d Verstöße in %d Dateien gefunden.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s hat %d Verstöße in einer Datei gefunden.", + "loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s hat einen Verstoß in einer Datei gefunden.", + "loc.messages.codeAnalysisBuildSummaryLine_NoViolations": "%s hat keine Verstöße gefunden.", + "loc.messages.codeAnalysisBuildSummaryTitle": "Code Analysis-Bericht", + "loc.messages.codeAnalysisArtifactSummaryTitle": "Code Analysis-Ergebnisse", + "loc.messages.codeAnalysisDisabled": "Die Codeanalyse ist außerhalb der Buildumgebung deaktiviert. Es konnte kein Wert gefunden werden für: %s", + "loc.messages.LocateJVMBasedOnVersionAndArch": "JAVA_HOME für Java %s %s finden", + "loc.messages.UnsupportedJdkWarning": "JDK 9 und JDK 10 werden nicht unterstützt. Wechseln Sie in Ihrem Projekt und Ihrer Pipeline zu einer neueren Version. Es wird versucht, die Erstellung mit JDK 11 durchzuführen...", + "loc.messages.FailedToLocateSpecifiedJVM": "Die angegebene JDK-Version wurde nicht gefunden. Stellen Sie sicher, dass die angegebene JDK-Version auf dem Agent installiert und die Umgebungsvariable „%s“ vorhanden und auf den Speicherort eines entsprechenden JDK festgelegt ist. Sie können auch die Aufgabe [Installer für Java-Tools](https://go.microsoft.com/fwlink/?linkid=875287) verwenden, um das gewünschte JDK zu installieren.", + "loc.messages.InvalidBuildFile": "Ungültige oder nicht unterstützte Builddatei", + "loc.messages.FileNotFound": "Datei oder Ordner nicht vorhanden: %s", + "loc.messages.NoTestResults": "Es wurden keine Testergebnisdateien gefunden, die mit %s übereinstimmen. Das Veröffentlichen von JUnit-Testergebnissen wird daher übersprungen.", + "loc.messages.chmodGradlew": "Die Methode \"chmod\" wurde für die gradlew-Datei verwendet, um sie eine ausführbare Datei zu machen." +} \ No newline at end of file diff --git a/_generated/GradleV4_Node20/Strings/resources.resjson/en-US/resources.resjson b/_generated/GradleV4_Node20/Strings/resources.resjson/en-US/resources.resjson new file mode 100644 index 000000000000..d033a6f662a8 --- /dev/null +++ b/_generated/GradleV4_Node20/Strings/resources.resjson/en-US/resources.resjson @@ -0,0 +1,86 @@ +{ + "loc.friendlyName": "Gradle", + "loc.helpMarkDown": "[Learn more about this task](https://go.microsoft.com/fwlink/?LinkID=613720) or [see the Gradle documentation](https://docs.gradle.org/current/userguide/userguide.html)", + "loc.description": "Build using a Gradle wrapper script", + "loc.instanceNameFormat": "gradlew $(tasks)", + "loc.releaseNotes": "The Code Coverage option is deprecated. Refer to the [PublishCodeCoverageResultsV2 Task] (https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/publish-code-coverage-results-v2?view=azure-pipelines) to get code coverage results.", + "loc.group.displayName.junitTestResults": "JUnit Test Results", + "loc.group.displayName.advanced": "Advanced", + "loc.group.displayName.CodeAnalysis": "Code Analysis", + "loc.input.label.wrapperScript": "Gradle wrapper", + "loc.input.help.wrapperScript": "Relative path from the repository root to the Gradle Wrapper script.", + "loc.input.label.cwd": "Working directory", + "loc.input.help.cwd": "Working directory in which to run the Gradle build. If not specified, the repository root directory is used.", + "loc.input.label.options": "Options", + "loc.input.label.tasks": "Tasks", + "loc.input.label.publishJUnitResults": "Publish to Azure Pipelines", + "loc.input.help.publishJUnitResults": "Select this option to publish JUnit test results produced by the Gradle build to Azure Pipelines. Each test results file matching `Test Results Files` will be published as a test run in Azure Pipelines.", + "loc.input.label.testResultsFiles": "Test results files", + "loc.input.help.testResultsFiles": "Test results files path. Wildcards can be used ([more information](https://go.microsoft.com/fwlink/?linkid=856077)). For example, `**/TEST-*.xml` for all XML files whose name starts with TEST-.", + "loc.input.label.testRunTitle": "Test run title", + "loc.input.help.testRunTitle": "Provide a name for the test run.", + "loc.input.label.javaHomeSelection": "Set JAVA_HOME by", + "loc.input.help.javaHomeSelection": "Sets JAVA_HOME either by selecting a JDK version that will be discovered during builds or by manually entering a JDK path.", + "loc.input.label.jdkVersion": "JDK version", + "loc.input.help.jdkVersion": "Will attempt to discover the path to the selected JDK version and set JAVA_HOME accordingly.", + "loc.input.label.jdkUserInputPath": "JDK path", + "loc.input.help.jdkUserInputPath": "Sets JAVA_HOME to the given path.", + "loc.input.label.jdkArchitecture": "JDK architecture", + "loc.input.help.jdkArchitecture": "Optionally supply the architecture (x86, x64) of the JDK.", + "loc.input.label.gradleOpts": "Set GRADLE_OPTS", + "loc.input.help.gradleOpts": "Sets the GRADLE_OPTS environment variable, which is used to send command-line arguments to start the JVM. The xmx flag specifies the maximum memory available to the JVM.", + "loc.input.label.sqAnalysisEnabled": "Run SonarQube or SonarCloud Analysis", + "loc.input.help.sqAnalysisEnabled": "This option has changed from version 1 of the **Gradle** task to use the [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) and [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) marketplace extensions. Enable this option to run [SonarQube or SonarCloud analysis](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html) after executing tasks in the **Tasks** field. You must also add a **Prepare Analysis Configuration** task from one of the extensions to the build pipeline before this Gradle task.", + "loc.input.label.sqGradlePluginVersionChoice": "SonarQube scanner for Gradle version", + "loc.input.help.sqGradlePluginVersionChoice": "The SonarQube Gradle plugin version to use. You can declare it in your Gradle configuration file, or specify a version here.", + "loc.input.label.sqGradlePluginVersion": "SonarQube scanner for Gradle plugin version", + "loc.input.help.sqGradlePluginVersion": "Refer to https://plugins.gradle.org/plugin/org.sonarqube for all available versions.", + "loc.input.label.checkstyleAnalysisEnabled": "Run Checkstyle", + "loc.input.help.checkstyleAnalysisEnabled": "Run the Checkstyle tool with the default Sun checks. Results are uploaded as build artifacts.", + "loc.input.label.findbugsAnalysisEnabled": "Run FindBugs", + "loc.input.help.findbugsAnalysisEnabled": "Use the FindBugs static analysis tool to look for bugs in the code. Results are uploaded as build artifacts. In Gradle 6.0 this plugin was removed. Use spotbugs plugin instead. [More info](https://docs.gradle.org/current/userguide/upgrading_version_5.html#the_findbugs_plugin_has_been_removed)", + "loc.input.label.pmdAnalysisEnabled": "Run PMD", + "loc.input.help.pmdAnalysisEnabled": "Use the PMD Java static analysis tool to look for bugs in the code. Results are uploaded as build artifacts.", + "loc.input.label.spotBugsAnalysisEnabled": "Run SpotBugs", + "loc.input.help.spotBugsAnalysisEnabled": "Enable this option to run spotBugs. This plugin works with Gradle v5.6 or later. [More info](https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)", + "loc.input.label.spotBugsGradlePluginVersionChoice": "Spotbugs plugin version", + "loc.input.help.spotBugsGradlePluginVersionChoice": "The Spotbugs Gradle plugin version to use. You can declare it in your Gradle configuration file, or specify a version here.", + "loc.input.label.spotbugsGradlePluginVersion": "Version number", + "loc.input.help.spotbugsGradlePluginVersion": "Refer to https://plugins.gradle.org/plugin/com.github.spotbugs for all available versions.", + "loc.messages.sqCommon_CreateTaskReport_MissingField": "Failed to create TaskReport object. Missing field: %s", + "loc.messages.sqCommon_WaitingForAnalysis": "Waiting for the SonarQube server to analyse the build.", + "loc.messages.sqCommon_NotWaitingForAnalysis": "Build not configured to wait for the SonarQube analysis. Detailed quality gate status will not be available.", + "loc.messages.sqCommon_QualityGateStatusUnknown": "Could not detect the quality gate status or a new status has been introduced.", + "loc.messages.sqCommon_InvalidResponseFromServer": "Server responded with an invalid or unexpected response format.", + "loc.messages.codeAnalysis_ToolIsEnabled": "%s analysis is enabled.", + "loc.messages.codeAnalysis_ToolFailed": "%s analysis failed.", + "loc.messages.sqAnalysis_IncrementalMode": "Detected a PR build - running the SonarQube analysis in incremental mode", + "loc.messages.sqAnalysis_BuildSummaryTitle": "SonarQube Analysis Report", + "loc.messages.sqAnalysis_TaskReportInvalid": "Invalid or missing task report. Check SonarQube finished successfully.", + "loc.messages.sqAnalysis_BuildSummary_LinkText": "Detailed SonarQube report", + "loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate": "Cannot authenticate to the SonarQube server. Check the saved service connection details and the status of the server.", + "loc.messages.sqAnalysis_AnalysisTimeout": "The analysis did not complete in the allotted time of %d seconds.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary": "Pull request build: detailed SonarQube build summary will not be available.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker": "Pull request build: build will not be broken if quality gate fails.", + "loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure": "The SonarQube quality gate associated with this build has failed.", + "loc.messages.sqAnalysis_QualityGatePassed": "The SonarQube quality gate associated with this build has passed (status %s)", + "loc.messages.sqAnalysis_UnknownComparatorString": "The SonarQube build summary encountered a problem: unknown comparator '%s'", + "loc.messages.sqAnalysis_NoUnitsFound": "The list of SonarQube measurement units could not be retrieved from the server.", + "loc.messages.sqAnalysis_NoReportTask": "Could not find report-task.txt. Possible cause: the SonarQube analysis did not complete successfully.", + "loc.messages.sqAnalysis_MultipleReportTasks": "Multiple report-task.txt files found. Choosing the first one. The build summary and the build breaker may not be accurate. Possible cause: multiple SonarQube analysis during the same build, which is not supported.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s found %d violations in %d files.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s found %d violations in 1 file.", + "loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s found 1 violation in 1 file.", + "loc.messages.codeAnalysisBuildSummaryLine_NoViolations": "%s found no violations.", + "loc.messages.codeAnalysisBuildSummaryTitle": "Code Analysis Report", + "loc.messages.codeAnalysisArtifactSummaryTitle": "Code Analysis Results", + "loc.messages.codeAnalysisDisabled": "Code analysis is disabled outside of the build environment. Could not find a value for: %s", + "loc.messages.LocateJVMBasedOnVersionAndArch": "Locate JAVA_HOME for Java %s %s", + "loc.messages.UnsupportedJdkWarning": "JDK 9 and JDK 10 are out of support. Please switch to a later version in your project and pipeline. Attempting to build with JDK 11...", + "loc.messages.FailedToLocateSpecifiedJVM": "Failed to find the specified JDK version. Please ensure the specified JDK version is installed on the agent and the environment variable '%s' exists and is set to the location of a corresponding JDK or use the [Java Tool Installer](https://go.microsoft.com/fwlink/?linkid=875287) task to install the desired JDK.", + "loc.messages.InvalidBuildFile": "Invalid or unsupported build file", + "loc.messages.FileNotFound": "File or folder doesn't exist: %s", + "loc.messages.NoTestResults": "No test result files matching %s were found, so publishing JUnit test results is being skipped.", + "loc.messages.chmodGradlew": "Used 'chmod' method for gradlew file to make it executable.", + "loc.messages.UnableToExtractGradleVersion": "Unable to extract Gradle version from gradle output." +} \ No newline at end of file diff --git a/_generated/GradleV4_Node20/Strings/resources.resjson/es-ES/resources.resjson b/_generated/GradleV4_Node20/Strings/resources.resjson/es-ES/resources.resjson new file mode 100644 index 000000000000..7401e205540c --- /dev/null +++ b/_generated/GradleV4_Node20/Strings/resources.resjson/es-ES/resources.resjson @@ -0,0 +1,85 @@ +{ + "loc.friendlyName": "Gradle", + "loc.helpMarkDown": "[Obtener más información acerca de esta tarea](https://go.microsoft.com/fwlink/?LinkID=613720) o [consultar la documentación de Gradle](https://docs.gradle.org/current/userguide/userguide.html)", + "loc.description": "Compilar con un script contenedor de Gradle", + "loc.instanceNameFormat": "$(tasks) de Gradlew", + "loc.releaseNotes": "La configuración del análisis de SonarQube se movió a las extensiones de [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) o [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud), en la tarea \"Prepare Analysis Configuration\"", + "loc.group.displayName.junitTestResults": "Resultados de pruebas JUnit", + "loc.group.displayName.advanced": "Avanzado", + "loc.group.displayName.CodeAnalysis": "Análisis de código", + "loc.input.label.wrapperScript": "Contenedor de Gradle", + "loc.input.help.wrapperScript": "Ruta de acceso relativa de la raíz del repositorio al script contenedor de Gradle.", + "loc.input.label.cwd": "Directorio de trabajo", + "loc.input.help.cwd": "Directorio de trabajo donde se va a ejecutar la compilación de Gradle. Si no se especifica, se usa el directorio raíz del repositorio.", + "loc.input.label.options": "Opciones", + "loc.input.label.tasks": "Tareas", + "loc.input.label.publishJUnitResults": "Publicar en Azure Pipelines", + "loc.input.help.publishJUnitResults": "Seleccione esta opción para publicar los resultados de pruebas JUnit generados por la compilación de Gradle en Azure Pipelines. Cada archivo de resultados de pruebas que coincida con \"Archivos de resultados de pruebas\" se publicará como una serie de pruebas en Azure Pipelines.", + "loc.input.label.testResultsFiles": "Archivos de resultados de pruebas", + "loc.input.help.testResultsFiles": "Ruta de acceso de los archivos de resultados de pruebas. Puede usar caracteres comodín ([más información](https://go.microsoft.com/fwlink/?linkid=856077)). Por ejemplo, \"**\\\\*TEST-*.xml\" para todos los archivos XML cuyos nombres empiecen por TEST-.", + "loc.input.label.testRunTitle": "Título de la serie de pruebas", + "loc.input.help.testRunTitle": "Asigne un nombre a la serie de pruebas.", + "loc.input.label.javaHomeSelection": "Establecer JAVA_HOME por", + "loc.input.help.javaHomeSelection": "Establece JAVA_HOME seleccionando una versión de JDK que se detectará durante las compilaciones o especificando manualmente una ruta de acceso del JDK.", + "loc.input.label.jdkVersion": "Versión de JDK", + "loc.input.help.jdkVersion": "Se tratará de hallar la ruta de acceso a la versión de JDK seleccionada y establecer JAVA_HOME según sea el caso.", + "loc.input.label.jdkUserInputPath": "Ruta de acceso de JDK", + "loc.input.help.jdkUserInputPath": "Establece JAVA_HOME en la ruta de acceso especificada.", + "loc.input.label.jdkArchitecture": "Arquitectura JDK", + "loc.input.help.jdkArchitecture": "Indique opcionalmente la arquitectura (x86, x64) del JDK.", + "loc.input.label.gradleOpts": "Establecer GRADLE_OPTS", + "loc.input.help.gradleOpts": "Establece la variable de entorno GRADLE_OPTS, que se utiliza para enviar argumentos de línea de comandos para iniciar JVM. La marca xmx especifica la cantidad de memoria máxima disponible para JVM.", + "loc.input.label.sqAnalysisEnabled": "Ejecutar análisis de SonarQube o SonarCloud", + "loc.input.help.sqAnalysisEnabled": "Esta opción ha cambiado desde la versión 1 de la tarea de **Gradle** para usar las extensiones de Marketplace de [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) y [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud). Habilite esta opción para ejecutar el [análisis de SonarQube o SonarCloud](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html) después de ejecutar las tareas en el campo **Tasks**. También debe agregar una tarea **Prepare Analysis Configuration** de una de las extensiones a la definición de compilación antes de esta tarea de Gradle.", + "loc.input.label.sqGradlePluginVersionChoice": "Escáner de SonarQube para la versión de Gradle", + "loc.input.help.sqGradlePluginVersionChoice": "Versión del complemento SonarQube Gradle que debe usarse. Puede declararla en el archivo de configuración de Gradle o especificar aquí una versión.", + "loc.input.label.sqGradlePluginVersion": "Escáner de SonarQube para la versión del complemento de Gradle", + "loc.input.help.sqGradlePluginVersion": "Consulte https://plugins.gradle.org/plugin/org.sonarqube para ver todas las versiones disponibles.", + "loc.input.label.checkstyleAnalysisEnabled": "Ejecutar Checkstyle", + "loc.input.help.checkstyleAnalysisEnabled": "Ejecute la herramienta Checkstyle con las comprobaciones de Sun predeterminadas. Los resultados se cargan como artefactos de compilación.", + "loc.input.label.findbugsAnalysisEnabled": "Ejecutar FindBugs", + "loc.input.help.findbugsAnalysisEnabled": "Use la herramienta de análisis estático FindBugs para buscar errores en el código. Los resultados se cargan como artefactos de compilación. En Gradle 6,0, se quitó este complemento. Use el complemento spotbugs en su lugar. [Mas información] (https://docs.gradle.org/current/userguide/upgrading_version_5.html # the_findbugs_plugin_has_been_removed)", + "loc.input.label.pmdAnalysisEnabled": "Ejecutar PMD", + "loc.input.help.pmdAnalysisEnabled": "Use la herramienta de análisis estático de Java PMD para buscar errores en el código. Los resultados se cargan como artefactos de compilación.", + "loc.input.label.spotBugsAnalysisEnabled": "Ejecutar SpotBugs", + "loc.input.help.spotBugsAnalysisEnabled": "Habilite esta opción para ejecutar spotBugs. Este complemento funciona con Gradle v5.6 o posterior. [Más información] (https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)", + "loc.input.label.spotBugsGradlePluginVersionChoice": "Versión del complemento de Spotbugs", + "loc.input.help.spotBugsGradlePluginVersionChoice": "Versión del complemento Spotbugs Gradle que debe usarse. Puede declararla en el archivo de configuración de Gradle o especificar aquí una versión.", + "loc.input.label.spotbugsGradlePluginVersion": "Número de versión", + "loc.input.help.spotbugsGradlePluginVersion": "Consulte en https://plugins.gradle.org/plugin/com.github.spotbugs la lista de versiones disponibles.", + "loc.messages.sqCommon_CreateTaskReport_MissingField": "No se pudo crear el objeto TaskReport. Falta el campo: %s.", + "loc.messages.sqCommon_WaitingForAnalysis": "Esperando a que el servidor de SonarQube analice la compilación.", + "loc.messages.sqCommon_NotWaitingForAnalysis": "Compilación no configurada para esperar al análisis de SonarQube. El estado detallado de la puerta de calidad no estará disponible.", + "loc.messages.sqCommon_QualityGateStatusUnknown": "No se ha podido detectar el estado de la puerta de calidad o se ha introducido un nuevo estado.", + "loc.messages.sqCommon_InvalidResponseFromServer": "El servidor respondió con un formato de respuesta no válido o inesperado.", + "loc.messages.codeAnalysis_ToolIsEnabled": "El análisis de %s está habilitado.", + "loc.messages.codeAnalysis_ToolFailed": "Error en el análisis de %s.", + "loc.messages.sqAnalysis_IncrementalMode": "Se ha detectado una compilación PR; se está ejecutando el análisis de SonarQube en modo incremental.", + "loc.messages.sqAnalysis_BuildSummaryTitle": "Informe del análisis de SonarQube", + "loc.messages.sqAnalysis_TaskReportInvalid": "Falta el informe de tareas o no es válido. Compruebe que SonarQube finalizó correctamente.", + "loc.messages.sqAnalysis_BuildSummary_LinkText": "Informe de SonarQube detallado", + "loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate": "No se puede autenticar con el servidor de SonarQube. Compruebe los detalles de la conexión de servicio guardada y el estado del servidor.", + "loc.messages.sqAnalysis_AnalysisTimeout": "El análisis no se completó en el tiempo asignado de %d segundos.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary": "Compilación de solicitud de incorporación de cambios: el resumen detallado de la compilación de la solicitud de incorporación de cambios no estará disponible.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker": "Compilación de solicitud de incorporación de cambios: la compilación no se interrumpirá en caso de error en la puerta de calidad.", + "loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure": "Error en la puerta de calidad de SonarQube asociada con esta compilación.", + "loc.messages.sqAnalysis_QualityGatePassed": "La puerta de calidad de SonarQube asociada con esta compilación no ha dado errores (estado %s)", + "loc.messages.sqAnalysis_UnknownComparatorString": "Se ha producido un problema en el resumen de compilación de SonarQube: comparador desconocido \"%s\"", + "loc.messages.sqAnalysis_NoUnitsFound": "La lista de unidades de medida de SonarQube no se ha podido recuperar del servidor.", + "loc.messages.sqAnalysis_NoReportTask": "No se ha podido encontrar report-task.txt. Causa posible: el análisis de SonarQube no se ha completado correctamente.", + "loc.messages.sqAnalysis_MultipleReportTasks": "Se han encontrado varios archivos report-task.txt. Se elegirá el primero. Puede que el resumen de compilación y el interruptor de compilación no sean precisos. Causa posible: varios análisis de SonarQube durante la misma compilación, lo que no se admite.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s ha encontrado %d infracciones en %d archivos.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s ha encontrado %d infracciones en 1 archivo.", + "loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s ha encontrado 1 infracción en 1 archivo.", + "loc.messages.codeAnalysisBuildSummaryLine_NoViolations": "%s no ha encontrado infracciones.", + "loc.messages.codeAnalysisBuildSummaryTitle": "Informe de análisis del código", + "loc.messages.codeAnalysisArtifactSummaryTitle": "Resultados del análisis de código", + "loc.messages.codeAnalysisDisabled": "El análisis de código está deshabilitado fuera del entorno de compilación. No se encuentra ningún valor para: %s", + "loc.messages.LocateJVMBasedOnVersionAndArch": "Buscar JAVA_HOME para Java %s %s", + "loc.messages.UnsupportedJdkWarning": "JDK 9 y JDK 10 no tienen soporte técnico. Cambie a una versión posterior del proyecto y la canalización. Intentando compilar con JDK 11...", + "loc.messages.FailedToLocateSpecifiedJVM": "No se ha encontrado la versión de JDK especificada. Asegúrese de que dicha versión está instalada en el agente y de que la variable de entorno \"%s\" existe y está establecida en la ubicación de un JDK correspondiente. En caso contrario, use la tarea de [Instalador de herramientas de Java](https://go.microsoft.com/fwlink/?linkid=875287) para instalar el JDK deseado.", + "loc.messages.InvalidBuildFile": "Archivo de compilación incompatible o no válido", + "loc.messages.FileNotFound": "El archivo o la carpeta no existen: %s", + "loc.messages.NoTestResults": "No se han encontrado archivos de resultados de pruebas que coincidan con %s, por lo que se omite la publicación de los resultados de las pruebas JUnit.", + "loc.messages.chmodGradlew": "Se usó el método \"chmod\" para el archivo gradlew para convertirlo en ejecutable." +} \ No newline at end of file diff --git a/_generated/GradleV4_Node20/Strings/resources.resjson/fr-FR/resources.resjson b/_generated/GradleV4_Node20/Strings/resources.resjson/fr-FR/resources.resjson new file mode 100644 index 000000000000..e9c4c6dea553 --- /dev/null +++ b/_generated/GradleV4_Node20/Strings/resources.resjson/fr-FR/resources.resjson @@ -0,0 +1,85 @@ +{ + "loc.friendlyName": "Gradle", + "loc.helpMarkDown": "[En savoir plus sur cette tâche](https://go.microsoft.com/fwlink/?LinkID=613720) ou [consulter la documentation de Gradle](https://docs.gradle.org/current/userguide/userguide.html)", + "loc.description": "Générer à l'aide d'un script du wrapper Gradle", + "loc.instanceNameFormat": "gradlew $(tasks)", + "loc.releaseNotes": "La configuration de l'analyse SonarQube a été déplacée vers les extensions [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) ou [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud), dans la tâche 'Préparer la configuration de l'analyse'", + "loc.group.displayName.junitTestResults": "Résultats du test JUnit", + "loc.group.displayName.advanced": "Avancé", + "loc.group.displayName.CodeAnalysis": "Analyse du code", + "loc.input.label.wrapperScript": "Wrapper Gradle", + "loc.input.help.wrapperScript": "Chemin relatif de la racine de dépôt au script du wrapper Gradle.", + "loc.input.label.cwd": "Répertoire de travail", + "loc.input.help.cwd": "Répertoire de travail dans lequel exécuter la build Gradle. S'il n'est pas indiqué, le répertoire racine du dépôt est utilisé.", + "loc.input.label.options": "Options", + "loc.input.label.tasks": "Tâches", + "loc.input.label.publishJUnitResults": "Publier sur Azure Pipelines", + "loc.input.help.publishJUnitResults": "Sélectionnez cette option pour publier les résultats des tests JUnit produits par la build Gradle sur Azure Pipelines. Chaque fichier de résultats des tests correspondant à 'Fichiers de résultats des tests' est publié en tant que série de tests dans Azure Pipelines.", + "loc.input.label.testResultsFiles": "Fichiers de résultats des tests", + "loc.input.help.testResultsFiles": "Chemin des fichiers de résultats des tests. Les caractères génériques sont autorisés. ([Plus d'informations](https://go.microsoft.com/fwlink/?linkid=856077)). Par exemple, '**/TEST-*.xml' pour tous les fichiers XML dont le nom commence par TEST-.", + "loc.input.label.testRunTitle": "Titre de la série de tests", + "loc.input.help.testRunTitle": "Indiquez le nom de la série de tests.", + "loc.input.label.javaHomeSelection": "Définir JAVA_HOME par", + "loc.input.help.javaHomeSelection": "Définit JAVA_HOME en sélectionnant une version de JDK qui sera découverte au moment des builds ou en tapant le chemin de JDK.", + "loc.input.label.jdkVersion": "Version du kit JDK", + "loc.input.help.jdkVersion": "Essaiera de découvrir le chemin d'accès à la version du JDK sélectionné et définira JAVA_HOME en conséquence.", + "loc.input.label.jdkUserInputPath": "Chemin du kit JDK", + "loc.input.help.jdkUserInputPath": "Définissez JAVA_HOME sur le chemin d'accès indiqué.", + "loc.input.label.jdkArchitecture": "Architecture du kit JDK", + "loc.input.help.jdkArchitecture": "Indiquez éventuellement l'architecture (x86, x64) du JDK.", + "loc.input.label.gradleOpts": "Définir GRADLE_OPTS", + "loc.input.help.gradleOpts": "Définit la variable d'environnement GRADLE_OPTS, qui permet d'envoyer des arguments de ligne de commande pour démarrer JVM. L'indicateur xmx spécifie la mémoire maximale disponible pour JVM.", + "loc.input.label.sqAnalysisEnabled": "Exécuter l'analyse SonarQube ou SonarCloud", + "loc.input.help.sqAnalysisEnabled": "Cette option a changé depuis la version 1 de la tâche **Gradle**. Elle utilise les extensions du Marketplace [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) et [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud). Activez cette option pour exécuter l'[analyse SonarQube ou SonarCloud](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html) après l'exécution des tâches du champ **Tâches**. Vous devez également ajouter une tâche **Préparer la configuration de l'analyse** à partir de l'une des extensions du pipeline de build avant cette tâche Gradle.", + "loc.input.label.sqGradlePluginVersionChoice": "Analyseur SonarQube pour la version de Gradle", + "loc.input.help.sqGradlePluginVersionChoice": "Version du plug-in SonarQube Gradle à utiliser. Vous pouvez la déclarer dans votre fichier config Gradle, ou spécifier une version ici.", + "loc.input.label.sqGradlePluginVersion": "Analyseur SonarQube pour la version du plug-in Gradle", + "loc.input.help.sqGradlePluginVersion": "Vous pouvez accéder à l'ensemble des versions disponibles sur https://plugins.gradle.org/plugin/org.sonarqube.", + "loc.input.label.checkstyleAnalysisEnabled": "Exécuter Checkstyle", + "loc.input.help.checkstyleAnalysisEnabled": "Exécutez l'outil Checkstyle avec les vérifications Sun par défaut. Les résultats sont chargés en tant qu'artefacts de build.", + "loc.input.label.findbugsAnalysisEnabled": "Exécuter FindBugs", + "loc.input.help.findbugsAnalysisEnabled": "Utilisez l’outil d’analyse statique FindBugs pour rechercher des bogues dans le code. Les résultats sont chargés en tant qu’artefacts de build. Dans Gradle 6.0, ce plug-in a été supprimé. Utilisez plutôt le plug-in spotbugs. [Plus d’informations] (https://docs.gradle.org/current/userguide/upgrading_version_5.html#the_findbugs_plugin_has_been_removed)", + "loc.input.label.pmdAnalysisEnabled": "Exécuter PMD", + "loc.input.help.pmdAnalysisEnabled": "Utilisez l'outil d'analyse statique Java PMD pour rechercher des bogues dans le code. Les résultats sont chargés en tant qu'artefacts de build.", + "loc.input.label.spotBugsAnalysisEnabled": "Exécuter des débogages", + "loc.input.help.spotBugsAnalysisEnabled": "Activez cette option pour exécuter des débogages. Ce plug-in fonctionne avec Gradle v5.6 ou une date ultérieure. [Plus d’informations] (https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)", + "loc.input.label.spotBugsGradlePluginVersionChoice": "Version du plug-in Spotbugs", + "loc.input.help.spotBugsGradlePluginVersionChoice": "Version du plug-in Spotbugs Gradle à utiliser. Vous pouvez le déclarer dans votre fichier de configuration Gradle, ou spécifier une version ici.", + "loc.input.label.spotbugsGradlePluginVersion": "Numéro de version", + "loc.input.help.spotbugsGradlePluginVersion": "Consultez la https://plugins.gradle.org/plugin/com.github.spotbugs pour toutes les versions disponibles.", + "loc.messages.sqCommon_CreateTaskReport_MissingField": "Échec de création de l'objet TaskReport. Champ manquant : %s", + "loc.messages.sqCommon_WaitingForAnalysis": "Attente de l'analyse de la build par le serveur SonarQube.", + "loc.messages.sqCommon_NotWaitingForAnalysis": "Build non configurée pour attendre l'analyse SonarQube. L'état détaillé de la barrière qualité n'est pas disponible.", + "loc.messages.sqCommon_QualityGateStatusUnknown": "Impossible de détecter la barrière qualité. Un nouvel état a peut-être été introduit.", + "loc.messages.sqCommon_InvalidResponseFromServer": "Le serveur a répondu dans un format non valide ou inattendu.", + "loc.messages.codeAnalysis_ToolIsEnabled": "L'analyse %s est activée.", + "loc.messages.codeAnalysis_ToolFailed": "Échec de l'analyse %s.", + "loc.messages.sqAnalysis_IncrementalMode": "Build PR détectée : exécution de l'analyse SonarQube en mode incrémentiel", + "loc.messages.sqAnalysis_BuildSummaryTitle": "Rapport d'analyse SonarQube", + "loc.messages.sqAnalysis_TaskReportInvalid": "Rapport des tâches non valide ou manquant. Vérifiez que SonarQube s'est achevé avec succès.", + "loc.messages.sqAnalysis_BuildSummary_LinkText": "Rapport SonarQube détaillé", + "loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate": "Impossible d'authentifier le serveur SonarQube. Vérifiez les détails de connexion de service enregistrés et l'état du serveur.", + "loc.messages.sqAnalysis_AnalysisTimeout": "L'analyse ne s'est pas achevée dans le temps imparti fixé à %d secondes.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary": "Build de demande de tirage : le résumé détaillé de la build SonarQube n'est pas disponible.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker": "Build de demande de tirage : la build n'est pas interrompue en cas d'échec de la barrière qualité.", + "loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure": "Échec de la barrière qualité SonarQube associée à cette build.", + "loc.messages.sqAnalysis_QualityGatePassed": "Réussite de la barrière qualité SonarQube associée à cette build (état %s)", + "loc.messages.sqAnalysis_UnknownComparatorString": "Le résumé de la génération SonarQube a rencontré un problème : comparateur inconnu '%s'", + "loc.messages.sqAnalysis_NoUnitsFound": "La liste des unités de mesure SonarQube n'a pas pu être récupérée sur le serveur.", + "loc.messages.sqAnalysis_NoReportTask": "Report-task.txt introuvable. Cause possible : L'analyse SonarQube ne s'est pas effectuée correctement.", + "loc.messages.sqAnalysis_MultipleReportTasks": "Plusieurs fichiers report-task.txt trouvés. Le premier fichier est choisi. Le résumé de la génération et l'interrupteur de génération ne sont peut-être pas exacts. Cause possible : plusieurs analyses SonarQube pendant la même génération, ce qui n'est pas pris en charge.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s a trouvé %d violations dans %d fichiers.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s a trouvé %d violations dans 1 fichier.", + "loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s a trouvé 1 violation dans 1 fichier.", + "loc.messages.codeAnalysisBuildSummaryLine_NoViolations": "%s n'a trouvé aucune violation.", + "loc.messages.codeAnalysisBuildSummaryTitle": "Rapport d'analyse du code", + "loc.messages.codeAnalysisArtifactSummaryTitle": "Résultats d'analyse du code", + "loc.messages.codeAnalysisDisabled": "L'analyse du code est désactivée en dehors de l'environnement de build. Valeur introuvable pour %s", + "loc.messages.LocateJVMBasedOnVersionAndArch": "Localiser JAVA_HOME pour Java %s %s", + "loc.messages.UnsupportedJdkWarning": "JDK 9 et JDK 10 ne sont plus pris en charge. Passez à une version plus récente de votre projet et de votre pipeline. Tentative de génération avec JDK 11...", + "loc.messages.FailedToLocateSpecifiedJVM": "Échec de la localisation de la version spécifiée du kit JDK. Vérifiez que la version spécifiée du kit JDK est installée sur l'agent, que la variable d'environnement '%s' existe et que sa valeur correspond à l'emplacement d'un kit JDK correspondant. Sinon, utilisez la tâche [Programme d'installation de l'outil Java] (https://go.microsoft.com/fwlink/?linkid=875287) pour installer le kit JDK souhaité.", + "loc.messages.InvalidBuildFile": "Fichier de build non valide ou non pris en charge", + "loc.messages.FileNotFound": "Le fichier ou le dossier n'existe pas : %s", + "loc.messages.NoTestResults": "Les fichiers de résultats des tests correspondant à %s sont introuvables. La publication des résultats des tests JUnit est ignorée.", + "loc.messages.chmodGradlew": "Méthode 'chmod' utilisée pour le fichier gradlew afin de le rendre exécutable." +} \ No newline at end of file diff --git a/_generated/GradleV4_Node20/Strings/resources.resjson/it-IT/resources.resjson b/_generated/GradleV4_Node20/Strings/resources.resjson/it-IT/resources.resjson new file mode 100644 index 000000000000..72beb14777e4 --- /dev/null +++ b/_generated/GradleV4_Node20/Strings/resources.resjson/it-IT/resources.resjson @@ -0,0 +1,85 @@ +{ + "loc.friendlyName": "Gradle", + "loc.helpMarkDown": "[Altre informazioni su questa attività](https://go.microsoft.com/fwlink/?LinkID=613720). In alternativa [vedere la documentazione di Gradle](https://docs.gradle.org/current/userguide/userguide.html)", + "loc.description": "Consente di compilare con uno script wrapper di Gradle", + "loc.instanceNameFormat": "gradlew $(tasks)", + "loc.releaseNotes": "La configurazione dell'analisi SonarQube è stata spostata nell'attività `Prepara configurazione di analisi` dell'estensione [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) o [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud)", + "loc.group.displayName.junitTestResults": "Risultati del test JUnit", + "loc.group.displayName.advanced": "Avanzate", + "loc.group.displayName.CodeAnalysis": "Code Analysis", + "loc.input.label.wrapperScript": "Wrapper di Gradle", + "loc.input.help.wrapperScript": "Percorso relativo dalla radice del repository allo script wrapper di Gradle.", + "loc.input.label.cwd": "Cartella di lavoro", + "loc.input.help.cwd": "Directory di lavoro in cui eseguire la compilazione Gradle. Se non è specificata, viene usata la directory radice del repository.", + "loc.input.label.options": "Opzioni", + "loc.input.label.tasks": "Attività", + "loc.input.label.publishJUnitResults": "Pubblica in Azure Pipelines", + "loc.input.help.publishJUnitResults": "Selezionare questa opzione per pubblicare i risultati del test JUnit prodotti dalla compilazione Gradle in Azure Pipelines. Ogni file dei risultati del test corrispondente al valore di `File dei risultati del test` verrà pubblicato come esecuzione dei test in Azure Pipelines.", + "loc.input.label.testResultsFiles": "File dei risultati del test", + "loc.input.help.testResultsFiles": "Percorso dei file dei risultati del test. È possibile usare i caratteri jolly, ad esempio `**/TEST-*.xml` per individuare tutti i file XML il cui nome inizia con TEST-. [Altre informazioni](https://go.microsoft.com/fwlink/?linkid=856077)", + "loc.input.label.testRunTitle": "Titolo dell'esecuzione dei test", + "loc.input.help.testRunTitle": "Consente di specificare un nome per l'esecuzione dei test.", + "loc.input.label.javaHomeSelection": "Imposta JAVA_HOME per", + "loc.input.help.javaHomeSelection": "Consente di impostare JAVA_HOME selezionando una versione di JDK che verrà individuata durante le compilazioni oppure immettendo manualmente un percorso JDK.", + "loc.input.label.jdkVersion": "Versione del JDK", + "loc.input.help.jdkVersion": "Prova a individuare il percorso della versione selezionata di JDK e imposta JAVA_HOME di conseguenza.", + "loc.input.label.jdkUserInputPath": "Percorso del JDK", + "loc.input.help.jdkUserInputPath": "Consente di impostare JAVA_HOME sul percorso specificato.", + "loc.input.label.jdkArchitecture": "Architettura del JDK", + "loc.input.help.jdkArchitecture": "Consente facoltativamente di specificare l'architettura (x86, x64) di JDK.", + "loc.input.label.gradleOpts": "Imposta GRADLE_OPTS", + "loc.input.help.gradleOpts": "Consente di impostare la variabile di ambiente GRADLE_OPTS, che viene usata per inviare argomenti della riga di comando per avviare JVM. Il flag xmx specifica la memoria massima disponibile per JVM.", + "loc.input.label.sqAnalysisEnabled": "Esegui analisi SonarQube o SonarCloud", + "loc.input.help.sqAnalysisEnabled": "Questa opzione è stata modificata rispetto alla versione 1 dell'attività **Gradle** in modo da usare le estensioni [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) e [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) del Marketplace. Abilitare questa opzione per eseguire l'[analisi SonarQube o SonarCloud](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html) dopo aver eseguito le attività nel campo **Attività**. Prima di questa attività Gradle, è anche necessario aggiungere alla pipeline di compilazione un'attività **Prepara configurazione di analisi** da una delle estensioni.", + "loc.input.label.sqGradlePluginVersionChoice": "Versione di SonarQube Scanner per Gradle", + "loc.input.help.sqGradlePluginVersionChoice": "Versione del plug-in SonarQube Gradle da usare. È possibile dichiararla nel file di configurazione di Gradle o specificarne una qui.", + "loc.input.label.sqGradlePluginVersion": "Versione del plug-in SonarQube Scanner per Gradle", + "loc.input.help.sqGradlePluginVersion": "Per tutte le versioni disponibili, vedere https://plugins.gradle.org/plugin/org.sonarqube.", + "loc.input.label.checkstyleAnalysisEnabled": "Esegui Checkstyle", + "loc.input.help.checkstyleAnalysisEnabled": "Esegue lo strumento Checkstyle con i controlli Sun predefiniti. I risultati vengono caricati come artefatti di compilazione.", + "loc.input.label.findbugsAnalysisEnabled": "Esegui FindBugs", + "loc.input.help.findbugsAnalysisEnabled": "Usare lo strumento di analisi statica FindBugs per cercare i bug nel codice. I risultati vengono caricati come artefatti della compilazione. In Gradle 6.0 questo plug-in è stato rimosso. Utilizzare il plug-in SpotBugs. [Altre informazioni](https://docs.gradle.org/current/userguide/upgrading_version_5.html#the_findbugs_plugin_has_been_removed)", + "loc.input.label.pmdAnalysisEnabled": "Esegui PMD", + "loc.input.help.pmdAnalysisEnabled": "Consente di usare lo strumento di analisi statica Java PMD per cercare bug nel codice. I risultati vengono caricati come artefatti di compilazione.", + "loc.input.label.spotBugsAnalysisEnabled": "Esegui SpotBugs", + "loc.input.help.spotBugsAnalysisEnabled": "Abilitare questa opzione per eseguire SpotBugs. Questo plug-in è compatibile con Gradle v5.6 o versioni successive. [Altre informazioni](https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)", + "loc.input.label.spotBugsGradlePluginVersionChoice": "Versione del plug-in SpotBugs", + "loc.input.help.spotBugsGradlePluginVersionChoice": "Versione del plug-in SpotBugs di Gradle da usare. È possibile dichiararla nel file di configurazione di Gradle o specificarne una qui.", + "loc.input.label.spotbugsGradlePluginVersion": "Numero di versione", + "loc.input.help.spotbugsGradlePluginVersion": "Per tutte le versioni disponibili, vedere https://plugins.gradle.org/plugin/com.github.spotbugs.", + "loc.messages.sqCommon_CreateTaskReport_MissingField": "Non è stato possibile creare l'oggetto TaskReport. Campo mancante: %s", + "loc.messages.sqCommon_WaitingForAnalysis": "In attesa che il server SonarQube analizzi la compilazione.", + "loc.messages.sqCommon_NotWaitingForAnalysis": "La compilazione non è stata configurata per attendere l'analisi SonarQube. Lo stato dettagliato del quality gate non sarà disponibile.", + "loc.messages.sqCommon_QualityGateStatusUnknown": "Non è stato possibile rilevare lo stato del quality gate oppure è stato introdotto un nuovo stato.", + "loc.messages.sqCommon_InvalidResponseFromServer": "Il server ha risposto con un formato di risposta imprevisto o non valido.", + "loc.messages.codeAnalysis_ToolIsEnabled": "L'analisi di %s è abilitata.", + "loc.messages.codeAnalysis_ToolFailed": "L'analisi di %s non è riuscita.", + "loc.messages.sqAnalysis_IncrementalMode": "È stata rilevata una compilazione di richiesta pull. L'analisi SonarQube verrà eseguita in modalità incrementale", + "loc.messages.sqAnalysis_BuildSummaryTitle": "Report di analisi SonarQube", + "loc.messages.sqAnalysis_TaskReportInvalid": "Report attività assente o non valido. Verificare che SonarQube sia stato completato senza errori.", + "loc.messages.sqAnalysis_BuildSummary_LinkText": "Report dettagliato SonarQube", + "loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate": "Non è possibile eseguire l'autenticazione al server SonarQube. Verificare i dettagli salvati della connessione al servizio e lo stato del server.", + "loc.messages.sqAnalysis_AnalysisTimeout": "L'analisi non è stata completata nel tempo assegnato di %d secondi.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary": "Compilazione di richieste pull: il riepilogo della compilazione SonarQube non sarà disponibile.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker": "Compilazione di richieste pull: la compilazione non verrà interrotta se il quality gate non viene superato.", + "loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure": "Il quality gate di SonarQube associato a questa compilazione non è stato superato.", + "loc.messages.sqAnalysis_QualityGatePassed": "Il quality gate di SonarQube associato a questa compilazione è stato superato (stato %s)", + "loc.messages.sqAnalysis_UnknownComparatorString": "Il riepilogo della compilazione SonarQube ha rilevato un problema: il criterio di confronto '%s' è sconosciuto", + "loc.messages.sqAnalysis_NoUnitsFound": "Non è stato possibile recuperare dal server l'elenco di unità di misura SonarQube.", + "loc.messages.sqAnalysis_NoReportTask": "Non è stato possibile trovare il file report-task.txt. Causa possibile: l'analisi SonarQube non è stata completata correttamente.", + "loc.messages.sqAnalysis_MultipleReportTasks": "Sono stati trovati più file report-task.txt. Verrà scelto il primo. Il riepilogo e il breaker della compilazione potrebbero non essere precisi. Causa possibile: sono state rilevate più analisi SonarQube durante la stessa compilazione e questa condizione non è supportata.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s ha trovato %d violazioni in %d file.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s ha trovato %d violazioni in 1 file.", + "loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s ha trovato 1 violazione in 1 file.", + "loc.messages.codeAnalysisBuildSummaryLine_NoViolations": "%s non ha trovato violazioni.", + "loc.messages.codeAnalysisBuildSummaryTitle": "Report di Code Analysis", + "loc.messages.codeAnalysisArtifactSummaryTitle": "Risultati dell’analisi del codice", + "loc.messages.codeAnalysisDisabled": "Code Analysis è disabilitato dall'esterno dell'ambiente di compilazione. Non è stato possibile trovare alcun valore per %s", + "loc.messages.LocateJVMBasedOnVersionAndArch": "Individuare JAVA_HOME per Java %s %s", + "loc.messages.UnsupportedJdkWarning": "JDK 9 e JDK 10 non sono supportati. Passare a una versione più recente nel progetto e nella pipeline. Verrà effettuato un tentativo di compilazione con JDK 11...", + "loc.messages.FailedToLocateSpecifiedJVM": "La versione del JDK specificata non è stata trovata. Assicurarsi che sia installata nell'agente e che la variabile di ambiente '%s' sia presente e impostata sul percorso di un JDK corrispondente oppure usare l'attività [Programma di installazione strumenti Java](https://go.microsoft.com/fwlink/?linkid=875287) per installare il JDK desiderato.", + "loc.messages.InvalidBuildFile": "File di compilazione non valido o non supportato", + "loc.messages.FileNotFound": "Il file o la cartella non esiste: %s", + "loc.messages.NoTestResults": "Non sono stati trovati file dei risultati del test corrispondenti a %s, di conseguenza la pubblicazione dei risultati del test JUnit verrà ignorata.", + "loc.messages.chmodGradlew": "È stato usato il metodo 'chmod' per il file gradlew per renderlo eseguibile." +} \ No newline at end of file diff --git a/_generated/GradleV4_Node20/Strings/resources.resjson/ja-JP/resources.resjson b/_generated/GradleV4_Node20/Strings/resources.resjson/ja-JP/resources.resjson new file mode 100644 index 000000000000..d0eb9692c1b6 --- /dev/null +++ b/_generated/GradleV4_Node20/Strings/resources.resjson/ja-JP/resources.resjson @@ -0,0 +1,85 @@ +{ + "loc.friendlyName": "Gradle", + "loc.helpMarkDown": "[このタスクの詳細情報](https://go.microsoft.com/fwlink/?LinkID=613720)または [Gradle ドキュメント](https://docs.gradle.org/current/userguide/userguide.html)を確認します", + "loc.description": "Gradle ラッパー スクリプトを使用してビルドします", + "loc.instanceNameFormat": "gradlew $(tasks)", + "loc.releaseNotes": "SonarQube 解析の構成は、[SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) または [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) 拡張機能の 'Prepare Analysis Configuration' タスクに移動しました", + "loc.group.displayName.junitTestResults": "JUnit のテスト結果", + "loc.group.displayName.advanced": "詳細", + "loc.group.displayName.CodeAnalysis": "コード分析", + "loc.input.label.wrapperScript": "Gradle ラッパー", + "loc.input.help.wrapperScript": "リポジトリのルートから Gradle のラッパー スクリプトへの相対パス。", + "loc.input.label.cwd": "作業ディレクトリ", + "loc.input.help.cwd": "Gradle ビルドの実行先の作業ディレクトリ。指定しない場合は、リポジトリのルート ディレクトリが使用されます。", + "loc.input.label.options": "オプション", + "loc.input.label.tasks": "タスク", + "loc.input.label.publishJUnitResults": "Azure Pipelines に公開する", + "loc.input.help.publishJUnitResults": "Gradle のビルドによって生成された JUnit のテスト結果を Azure Pipelines に公開するには、このオプションを選びます。'テスト結果ファイル' と一致する各テスト結果ファイルが、Azure Pipelines でテストの実行として公開されます。", + "loc.input.label.testResultsFiles": "テスト結果ファイル", + "loc.input.help.testResultsFiles": "テスト結果ファイルのパス。ワイルドカードを使用できます ([詳細情報](https://go.microsoft.com/fwlink/?linkid=856077))。たとえば、名前が TEST- で始まるすべての XML ファイルの場合は '**/TEST-*.xml' です。", + "loc.input.label.testRunTitle": "テストの実行のタイトル", + "loc.input.help.testRunTitle": "テストの実行の名前を指定します。", + "loc.input.label.javaHomeSelection": "次の条件で JAVA_HOME を設定します", + "loc.input.help.javaHomeSelection": "ビルド中に検出される JDK バージョンを選択するか、JDK パスを手動で入力して JAVA_HOME を設定します。", + "loc.input.label.jdkVersion": "JDK バージョン", + "loc.input.help.jdkVersion": "選択した JDK のバージョンへのパスの検出を試みて、それに従って JAVA_HOME を設定します。", + "loc.input.label.jdkUserInputPath": "JDK パス", + "loc.input.help.jdkUserInputPath": "指定したパスに JAVA_HOME を設定します。", + "loc.input.label.jdkArchitecture": "JDK アーキテクチャ", + "loc.input.help.jdkArchitecture": "必要に応じて、JDK のアーキテクチャ (x86、x64) を指定します。", + "loc.input.label.gradleOpts": "GRADLE_OPTS の設定", + "loc.input.help.gradleOpts": "JVM を起動するためにコマンド ライン引数を送信するときに使用する GRADLE_OPTS 環境変数を設定します。xmx フラグは JVM で使用可能な最大メモリを指定します。", + "loc.input.label.sqAnalysisEnabled": "SonarQube 解析または SonarCloud 解析の実行", + "loc.input.help.sqAnalysisEnabled": "このオプションはバージョン 1 の **Gradle** タスクから変更され、[SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) および [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) Marketplace 拡張機能を使用するようになりました。このオプションを有効にして、[**Tasks**] フィールドのタスクを実行した後に [SonarQube または SonarCloud 分析](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html) を実行するようにします。また、この Gradle タスクの前に、いずれか一方の拡張機能から **Prepare Analysis Configuration** タスクをビルド パイプラインに追加する必要があります。", + "loc.input.label.sqGradlePluginVersionChoice": "SonarQube scanner for Gradle のバージョン", + "loc.input.help.sqGradlePluginVersionChoice": "使用する SonarQube Gradle プラグイン バージョンです。Gradle 構成ファイルで宣言するか、ここでバージョンを指定できます。", + "loc.input.label.sqGradlePluginVersion": "SonarQube scanner for Gradle プラグインのバージョン", + "loc.input.help.sqGradlePluginVersion": "利用可能なすべてのバージョンについては、https://plugins.gradle.org/plugin/org.sonarqube を参照してください。", + "loc.input.label.checkstyleAnalysisEnabled": "Checkstyle の実行", + "loc.input.help.checkstyleAnalysisEnabled": "既定の Sun チェックを使用して Checkstyle ツールを実行します。結果はビルド成果物としてアップロードされます。", + "loc.input.label.findbugsAnalysisEnabled": "FindBugs の実行", + "loc.input.help.findbugsAnalysisEnabled": "FindBugs 静的分析ツールを使用して、コード内のバグを検索します。結果はビルド成果物としてアップロードされます。Gradle 6.0 ではこのプラグインは削除されました。代わりに、spotbug プラグインを使用してください。[詳細情報] (https://docs.gradle.org/current/userguide/upgrading_version_5.html # the_findbugs_plugin_has_been_removed)", + "loc.input.label.pmdAnalysisEnabled": "PMD の実行", + "loc.input.help.pmdAnalysisEnabled": "PMD Java スタティック分析ツールを使用して、コード内のバグを調べます。結果はビルド成果物としてアップロードされます。", + "loc.input.label.spotBugsAnalysisEnabled": "Run SpotBugs", + "loc.input.help.spotBugsAnalysisEnabled": "このオプションを有効にすると、spotBugs が実行されます。このプラグインは Gradle version 5.6 以降で動作します。[詳細情報] (https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)", + "loc.input.label.spotBugsGradlePluginVersionChoice": "Spotbugs プラグイン バージョン", + "loc.input.help.spotBugsGradlePluginVersionChoice": "使用する Spotbugs Gradle プラグイン バージョンです。Gradle 構成ファイルで宣言するか、ここでバージョンを指定できます。", + "loc.input.label.spotbugsGradlePluginVersion": "バージョン番号", + "loc.input.help.spotbugsGradlePluginVersion": "利用可能なすべてのバージョンについては、https://plugins.gradle.org/plugin/com.github.spotbugs をご覧ください。", + "loc.messages.sqCommon_CreateTaskReport_MissingField": "TaskReport オブジェクトの作成に失敗しました。フィールド %s が見つかりません", + "loc.messages.sqCommon_WaitingForAnalysis": "SonarQube サーバーによるビルドの分析を待機しています。", + "loc.messages.sqCommon_NotWaitingForAnalysis": "SonarQube 分析を待機するようビルドが構成されていません。詳細な品質ゲートの状態は提供されません。", + "loc.messages.sqCommon_QualityGateStatusUnknown": "品質ゲートの状態を検出できないか、新しい状態が導入されています。", + "loc.messages.sqCommon_InvalidResponseFromServer": "サーバーが無効または予期しない応答形式で応答しました。", + "loc.messages.codeAnalysis_ToolIsEnabled": "%s の解析が有効です。", + "loc.messages.codeAnalysis_ToolFailed": "%s の解析に失敗しました。", + "loc.messages.sqAnalysis_IncrementalMode": "PR ビルドが検出されました - インクリメンタル モードで SonarQube 解析を実行しています", + "loc.messages.sqAnalysis_BuildSummaryTitle": "SonarQube 解析レポート", + "loc.messages.sqAnalysis_TaskReportInvalid": "タスク レポートが無効であるか、見つかりません。SonarQube が正常に終了したことをご確認ください。", + "loc.messages.sqAnalysis_BuildSummary_LinkText": "詳しい SonarQube レポート", + "loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate": "SonarQube サーバーへ認証できません。保存したサービス接続の詳細とサーバーの状態を確認してください。", + "loc.messages.sqAnalysis_AnalysisTimeout": "%d 秒の所定時間内に分析が完了しませんでした。", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary": "プル要求ビルド: 詳しい SonarQube ビルドの概要は提供されません。", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker": "プル要求ビルド: 品質ゲートが失敗してもビルドは中断されません。", + "loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure": "このビルドに関連する SonarQube 品質ゲートが失敗しました。", + "loc.messages.sqAnalysis_QualityGatePassed": "このビルドに関連する SonarQube 品質ゲートに合格しました (状態 %s)", + "loc.messages.sqAnalysis_UnknownComparatorString": "SonarQube ビルドの概要で問題が発生しました: 不明な比較演算子 '%s'", + "loc.messages.sqAnalysis_NoUnitsFound": "SonarQube 測定単位のリストをサーバーから取得できませんでした。", + "loc.messages.sqAnalysis_NoReportTask": "report-task.txt が見つかりませんでした。考えられる原因: SonarQube 分析が正常に完了しませんでした。", + "loc.messages.sqAnalysis_MultipleReportTasks": "複数の report-task.txt ファイルが見つかりました。最初のファイルを選択します。ビルドの概要とビルドのブレーカーが正しくない可能性があります。考えられる原因: 同じビルド内に複数の SonarQube 分析がありますが、これはサポートされていません。", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s により、%d 件の違反が %d 個のファイルで見つかりました。", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s により、1 つのファイルで %d 件の違反が見つかりました。", + "loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s により、1 つのファイルで 1 件の違反が見つかりました。", + "loc.messages.codeAnalysisBuildSummaryLine_NoViolations": "%s で違反は見つかりませんでした。", + "loc.messages.codeAnalysisBuildSummaryTitle": "コード分析レポート", + "loc.messages.codeAnalysisArtifactSummaryTitle": "コード分析結果", + "loc.messages.codeAnalysisDisabled": "コード分析はビルド環境の外部では無効です。%s の値が見つかりませんでした", + "loc.messages.LocateJVMBasedOnVersionAndArch": "Java %s %s の JAVA_HOME を検索する", + "loc.messages.UnsupportedJdkWarning": "JDK 9 および JDK 10 はサポートされていません。プロジェクトとパイプラインで新しいバージョンに切り替えてください。JDK 11 でのビルドを試行しています...", + "loc.messages.FailedToLocateSpecifiedJVM": "指定された JDK バージョンが見つかりませんでした。指定された JDK バージョンがエージェントにインストールされており、環境変数 '%s' が存在し、対応する JDK の場所に設定されていることを確認するか、[Java ツール インストーラー](https://go.microsoft.com/fwlink/?linkid=875287) タスクを使用して目的の JDK をインストールしてください。", + "loc.messages.InvalidBuildFile": "無効またはサポートされていないビルド ファイル", + "loc.messages.FileNotFound": "ファイルまたはフォルダーが存在しません: %s", + "loc.messages.NoTestResults": "%s と一致するテスト結果ファイルが見つからないため、JUnit テスト結果の発行をスキップします。", + "loc.messages.chmodGradlew": "gradlew ファイルを実行可能にするために 'chmod' メソッドを使用しました。" +} \ No newline at end of file diff --git a/_generated/GradleV4_Node20/Strings/resources.resjson/ko-KR/resources.resjson b/_generated/GradleV4_Node20/Strings/resources.resjson/ko-KR/resources.resjson new file mode 100644 index 000000000000..7783bd5619cc --- /dev/null +++ b/_generated/GradleV4_Node20/Strings/resources.resjson/ko-KR/resources.resjson @@ -0,0 +1,85 @@ +{ + "loc.friendlyName": "Gradle", + "loc.helpMarkDown": "[이 작업에 대한 자세한 정보](https://go.microsoft.com/fwlink/?LinkID=613720) 또는 [Gradle 설명서 참조](https://docs.gradle.org/current/userguide/userguide.html)", + "loc.description": "Gradle 래퍼 스크립트를 사용하여 빌드", + "loc.instanceNameFormat": "gradlew $(tasks)", + "loc.releaseNotes": "SonarQube 분석 구성이 [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) 또는 [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) 확장의 `분석 구성 준비` 작업으로 이동됨", + "loc.group.displayName.junitTestResults": "JUnit 테스트 결과", + "loc.group.displayName.advanced": "고급", + "loc.group.displayName.CodeAnalysis": "코드 분석", + "loc.input.label.wrapperScript": "Gradle 래퍼", + "loc.input.help.wrapperScript": "Gradle 래퍼 스크립트의 리포지토리 루트로부터의 상대 경로입니다.", + "loc.input.label.cwd": "작업 디렉터리", + "loc.input.help.cwd": "Gradle 빌드를 실행할 작업 디렉터리입니다. 지정되지 않은 경우 리포지토리 루트 디렉터리가 사용됩니다.", + "loc.input.label.options": "옵션", + "loc.input.label.tasks": "작업", + "loc.input.label.publishJUnitResults": "Azure Pipelines/에 게시", + "loc.input.help.publishJUnitResults": "Gradle 빌드에서 생성된 JUnit 테스트 결과를 Azure Pipelines에 게시하려면 이 옵션을 선택합니다. '테스트 결과 파일'과 일치하는 각 테스트 결과 파일이 Azure Pipelines에 테스트 실행으로 게시됩니다.", + "loc.input.label.testResultsFiles": "테스트 결과 파일", + "loc.input.help.testResultsFiles": "테스트 결과 파일 경로입니다. 와일드카드를 사용할 수 있습니다([자세한 정보](https://go.microsoft.com/fwlink/?linkid=856077)). 예를 들어 이름이 TEST-로 시작하는 모든 XML 파일을 표시하려면 '**/TEST-*.xml'을 지정합니다.", + "loc.input.label.testRunTitle": "테스트 실행 제목", + "loc.input.help.testRunTitle": "테스트 실행의 이름을 지정하세요.", + "loc.input.label.javaHomeSelection": "JAVA_HOME 설정 방법", + "loc.input.help.javaHomeSelection": "빌드 중에 검색될 JDK 버전을 선택하거나 수동으로 JDK 경로를 입력하여 JAVA_HOME을 설정합니다.", + "loc.input.label.jdkVersion": "JDK 버전", + "loc.input.help.jdkVersion": "선택한 JDK 버전의 경로에 대한 검색을 시도하고 그에 따라 JAVA_HOME을 설정하게 됩니다.", + "loc.input.label.jdkUserInputPath": "JDK 경로", + "loc.input.help.jdkUserInputPath": "JAVA_HOME을 지정된 경로로 설정합니다.", + "loc.input.label.jdkArchitecture": "JDK 아키텍처", + "loc.input.help.jdkArchitecture": "선택적으로 JDK의 아키텍처(x86, x64)를 제공하세요.", + "loc.input.label.gradleOpts": "GRADLE_OPTS 설정", + "loc.input.help.gradleOpts": "JVM을 시작하기 위해 명령줄 인수를 보내는 데 사용되는 GRADLE_OPTS 환경 변수를 설정합니다. xmx 플래그는 JVM에 사용 가능한 최대 메모리를 지정합니다.", + "loc.input.label.sqAnalysisEnabled": "SonarQube 또는 SonarCloud 분석 실행", + "loc.input.help.sqAnalysisEnabled": "이 옵션은 [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) 및 [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) Marketplace 확장을 사용하기 위해 **Gradle** 작업의 버전 1에서 변경되었습니다. **작업** 필드의 작업을 실행한 후 [SonarQube 또는 SonarCloud 분석](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html)을 실행하려면 이 옵션을 사용하도록 설정하세요. 또한 빌드 파이프라인에서 이 Gradle 작업 앞에 확장 중 하나의 **분석 구성 준비** 작업을 추가해야 합니다.", + "loc.input.label.sqGradlePluginVersionChoice": "SonarQube Scanner for Gradle 버전", + "loc.input.help.sqGradlePluginVersionChoice": "사용할 SonarQube Gradle 플러그 인 버전입니다. Gradle 구성 파일에서 선언하거나 여기서 버전을 지정할 수 있습니다.", + "loc.input.label.sqGradlePluginVersion": "SonarQube Scanner for Gradle 플러그 인 버전", + "loc.input.help.sqGradlePluginVersion": "사용 가능한 모든 버전을 보려면 https://plugins.gradle.org/plugin/org.sonarqube를 참조하세요.", + "loc.input.label.checkstyleAnalysisEnabled": "Checkstyle 실행", + "loc.input.help.checkstyleAnalysisEnabled": "기본 일요일 검사로 Checkstyle 도구를 실행하세요. 결과는 빌드 아티팩트로 업로드됩니다.", + "loc.input.label.findbugsAnalysisEnabled": "FindBugs 실행", + "loc.input.help.findbugsAnalysisEnabled": "정적 분석 도구인 FindBugs를 사용하여 코드에서 버그를 찾으세요. 결과는 빌드 아티팩트로 업로드됩니다. Gradle 6.0에서는 이 플러그 인이 제거되었으므로 대신 spotbugs 플러그 인을 사용하세요. [추가 정보] (https://docs.gradle.org/current/userguide/upgrading_version_5.html # the_findbugs_plugin_has_been_removed)", + "loc.input.label.pmdAnalysisEnabled": "PMD 실행", + "loc.input.help.pmdAnalysisEnabled": "PMD Java 정적 분석 도구를 사용하여 코드에서 버그를 찾아보세요. 결과는 빌드 아티팩트로 업로드됩니다.", + "loc.input.label.spotBugsAnalysisEnabled": "SpotBugs 실행", + "loc.input.help.spotBugsAnalysisEnabled": "이 옵션을 사용하여 spotBugs를 실행합니다. 이 플러그 인은 Gradle v5.6 이상에서 작동합니다. [추가 정보] (https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)", + "loc.input.label.spotBugsGradlePluginVersionChoice": "Spotbugs 플러그 인 버전", + "loc.input.help.spotBugsGradlePluginVersionChoice": "사용할 Spotbugs Gradle 플러그 인 버전입니다. Gradle 구성 파일에서 선언하거나 여기서 버전을 지정할 수 있습니다.", + "loc.input.label.spotbugsGradlePluginVersion": "버전 번호", + "loc.input.help.spotbugsGradlePluginVersion": "사용 가능한 모든 버전을 보려면 https://plugins.gradle.org/plugin/com.github.spotbugs를 참조하세요.", + "loc.messages.sqCommon_CreateTaskReport_MissingField": "TaskReport 개체를 만들지 못했습니다. 없는 필드: %s", + "loc.messages.sqCommon_WaitingForAnalysis": "SonarQube 서버에서 빌드가 분석될 때까지 대기하는 중입니다.", + "loc.messages.sqCommon_NotWaitingForAnalysis": "빌드가 SonarQube 분석을 기다리도록 구성되지 않았습니다. 자세한 품질 게이트 상태를 사용할 수 없습니다.", + "loc.messages.sqCommon_QualityGateStatusUnknown": "품질 게이트 상태를 검색할 수 없거나 새 상태가 발생했습니다.", + "loc.messages.sqCommon_InvalidResponseFromServer": "서버가 잘못되거나 예기치 않은 응답 형식으로 응답했습니다.", + "loc.messages.codeAnalysis_ToolIsEnabled": "%s 분석을 사용하도록 설정했습니다.", + "loc.messages.codeAnalysis_ToolFailed": "%s을(를) 분석하지 못했습니다.", + "loc.messages.sqAnalysis_IncrementalMode": "검색된 PR 빌드 - SonarQube 분석을 증분 모드에서 실행 중", + "loc.messages.sqAnalysis_BuildSummaryTitle": "SonarQube 분석 보고서", + "loc.messages.sqAnalysis_TaskReportInvalid": "작업 보고서가 잘못되었거나 없습니다. SonarQube가 완료되었는지 확인하세요.", + "loc.messages.sqAnalysis_BuildSummary_LinkText": "자세한 SonarQube 보고서", + "loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate": "SonarQube 서버에 인증할 수 없습니다. 저장된 서비스 연결 정보 및 서버 상태를 확인하세요.", + "loc.messages.sqAnalysis_AnalysisTimeout": "할당된 시간 %d초 내에 분석이 완료되지 않았습니다.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary": "끌어오기 요청 빌드: 자세한 SonarQube 빌드 요약을 사용할 수 없습니다.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker": "끌어오기 요청 빌드: 품질 게이트가 실패하면 빌드가 분할되지 않습니다.", + "loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure": "이 빌드와 연결된 SonarQube 품질 게이트가 실패했습니다.", + "loc.messages.sqAnalysis_QualityGatePassed": "이 빌드와 연결된 SonarQube 품질 게이트가 통과했습니다(상태 %s).", + "loc.messages.sqAnalysis_UnknownComparatorString": "SonarQube 빌드 요약에서 문제가 발생했습니다. 알 수 없는 비교 연산자 '%s'입니다.", + "loc.messages.sqAnalysis_NoUnitsFound": "서버에서 SonarQube 단위 목록을 검색할 수 없습니다.", + "loc.messages.sqAnalysis_NoReportTask": "report-task.txt를 찾을 수 없습니다. 예상 원인: SonarQube 분석이 완료되지 않았습니다.", + "loc.messages.sqAnalysis_MultipleReportTasks": "여러 report-task.txt 파일을 찾았습니다. 첫 번째 파일을 선택합니다. 빌드 요약 및 빌드 분리기가 정확하지 않을 수 있습니다. 예상 원인: 동일한 빌드 중에 SonarQube를 여러 번 분석할 수 없습니다.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s이(가) 위반 %d개를 %d개 파일에서 찾았습니다.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s이(가) 위반 %d개를 1개 파일에서 찾았습니다.", + "loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s이(가) 위반 1개를 1개 파일에서 찾았습니다.", + "loc.messages.codeAnalysisBuildSummaryLine_NoViolations": "%s이(가) 위반을 찾을 수 없습니다.", + "loc.messages.codeAnalysisBuildSummaryTitle": "코드 분석 보고서", + "loc.messages.codeAnalysisArtifactSummaryTitle": "코드 분석 결과", + "loc.messages.codeAnalysisDisabled": "빌드 환경 외부에서 코드 분석을 사용하지 않도록 설정되어 있습니다. %s에 대한 값을 찾을 수 없습니다.", + "loc.messages.LocateJVMBasedOnVersionAndArch": "Java %s %s에 대해 JAVA_HOME 찾기", + "loc.messages.UnsupportedJdkWarning": "JDK 9 및 JDK 10은 지원되지 않습니다. 프로젝트 및 파이프라인에서 최신 버전으로 전환하세요. JDK 11을 사용하여 빌드를 시도하는 중...", + "loc.messages.FailedToLocateSpecifiedJVM": "지정한 JDK 버전을 찾지 못했습니다. 지정한 JDK 버전이 에이전트에 설치되어 있으며 환경 변수 '%s'이(가) 있고 해당 JDK의 위치로 설정되었는지 확인하거나, [Java 도구 설치 관리자](https://go.microsoft.com/fwlink/?linkid=875287) 작업을 사용하여 원하는 JDK를 설치하세요.", + "loc.messages.InvalidBuildFile": "잘못되거나 지원되지 않는 빌드 파일입니다.", + "loc.messages.FileNotFound": "파일 또는 폴더가 없음: %s", + "loc.messages.NoTestResults": "%s과(와) 일치하는 테스트 결과 파일을 찾을 수 없으므로 JUnit 테스트 결과 게시를 건너뜁니다.", + "loc.messages.chmodGradlew": "gradlew 파일을 실행 가능하게 만들기 위해 'chmod' 메소드를 사용했습니다." +} \ No newline at end of file diff --git a/_generated/GradleV4_Node20/Strings/resources.resjson/ru-RU/resources.resjson b/_generated/GradleV4_Node20/Strings/resources.resjson/ru-RU/resources.resjson new file mode 100644 index 000000000000..06fe1e6a18ba --- /dev/null +++ b/_generated/GradleV4_Node20/Strings/resources.resjson/ru-RU/resources.resjson @@ -0,0 +1,85 @@ +{ + "loc.friendlyName": "Gradle", + "loc.helpMarkDown": "[См. дополнительные сведения об этой задаче](https://go.microsoft.com/fwlink/?LinkID=613720) или [документацию по Gradle](https://docs.gradle.org/current/userguide/userguide.html)", + "loc.description": "Сборка с помощью скрипта программы-оболочки Gradle", + "loc.instanceNameFormat": "gradlew $(tasks)", + "loc.releaseNotes": "Конфигурация анализа SonarQube перемещена в расширения [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) или [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) в задаче \"Подготовка конфигурации анализа\"", + "loc.group.displayName.junitTestResults": "Результаты теста JUnit", + "loc.group.displayName.advanced": "Дополнительно", + "loc.group.displayName.CodeAnalysis": "Code Analysis", + "loc.input.label.wrapperScript": "Программа-оболочка Gradle", + "loc.input.help.wrapperScript": "Относительный путь от корня репозитория к скрипту оболочки Gradle.", + "loc.input.label.cwd": "Рабочий каталог", + "loc.input.help.cwd": "Рабочий каталог, в котором должна выполняться сборка Gradle. Если он не задан, используется корневой каталог репозитория.", + "loc.input.label.options": "Параметры", + "loc.input.label.tasks": "Задачи", + "loc.input.label.publishJUnitResults": "Опубликовать в Azure Pipelines", + "loc.input.help.publishJUnitResults": "Выберите этот параметр, чтобы опубликовать результаты теста JUnit, созданные сборкой Gradle, в Azure Pipelines. Каждый файл результатов теста, соответствующий запросу \"Файлы результатов тестов\", будет опубликован как тестовый запуск в Azure Pipelines.", + "loc.input.label.testResultsFiles": "Файлы результатов теста", + "loc.input.help.testResultsFiles": "Путь к файлам результатов тестов. Можно использовать подстановочные знаки ([дополнительные сведения](https://go.microsoft.com/fwlink/?linkid=856077)). Пример: \"**/TEST-*.xml\" для всех XML-файлов, имена которых начинаются с \"TEST-\".", + "loc.input.label.testRunTitle": "Название тестового запуска", + "loc.input.help.testRunTitle": "Укажите имя для тестового запуска.", + "loc.input.label.javaHomeSelection": "Установка JAVA_HOME с помощью", + "loc.input.help.javaHomeSelection": "Задается JAVA_HOME указанием версии JDK, которая будет обнаруживаться во время сборок, или указанием пути к JDK вручную.", + "loc.input.label.jdkVersion": "Версия JDK", + "loc.input.help.jdkVersion": "Пытается определить путь к выбранной версии JDK и установить переменную JAVA_HOME соответствующим образом.", + "loc.input.label.jdkUserInputPath": "Путь к JDK", + "loc.input.help.jdkUserInputPath": "Установка для JAVA_HOME определенного пути.", + "loc.input.label.jdkArchitecture": "Архитектура JDK", + "loc.input.help.jdkArchitecture": "Дополнительно укажите архитектуру JDK (x86, x64).", + "loc.input.label.gradleOpts": "Задать GRADLE_OPTS", + "loc.input.help.gradleOpts": "Задает переменную среды GRADLE_OPTS, которая используется для отправки аргументов командной строки, запускающих JVM. Флаг xmx указывает максимальный объем памяти, доступный JVM.", + "loc.input.label.sqAnalysisEnabled": "Запустить анализ SonarQube или SonarCloud", + "loc.input.help.sqAnalysisEnabled": "Этот параметр был изменен с версии 1 задачи **Gradle** для использования расширений Marketplace [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) и [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud). Включите его, чтобы запустить [анализ SonarQube или SonarCloud](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html) после выполнения задач в поле **Задачи**. Также необходимо добавить задачу **Подготовить конфигурацию анализа** из одного из расширений в конвейер сборки перед этой задачей Gradle.", + "loc.input.label.sqGradlePluginVersionChoice": "Версия сканера SonarQube для Gradle", + "loc.input.help.sqGradlePluginVersionChoice": "Используемая версия подключаемого модуля SonarQube Gradle. Ее можно объявить в файле конфигурации Gradle или указать здесь.", + "loc.input.label.sqGradlePluginVersion": "Версия подключаемого модуля сканера SonarQube для Gradle", + "loc.input.help.sqGradlePluginVersion": "Список всех доступных версий: https://plugins.gradle.org/plugin/org.sonarqube.", + "loc.input.label.checkstyleAnalysisEnabled": "Запустить Checkstyle", + "loc.input.help.checkstyleAnalysisEnabled": "Запустите средство Checkstyle с проверками Sun по умолчанию. Результаты передаются как артефакты сборки.", + "loc.input.label.findbugsAnalysisEnabled": "Запустить FindBugs", + "loc.input.help.findbugsAnalysisEnabled": "Используйте средство статического анализа FindBugs для поиска ошибок в коде. Результаты отправляются в виде артефактов сборки. Из Gradle 6.0 этот подключаемый модуль удален. Используйте подключаемый модуль SpotBugs вместо него. [Подробнее](https://docs.gradle.org/current/userguide/upgrading_version_5.html#the_findbugs_plugin_has_been_removed)", + "loc.input.label.pmdAnalysisEnabled": "Запустить PMD", + "loc.input.help.pmdAnalysisEnabled": "Используйте средство статического анализа Java PMD для поиска ошибок в коде. Результаты передаются как артефакты сборки.", + "loc.input.label.spotBugsAnalysisEnabled": "Запустить SpotBugs", + "loc.input.help.spotBugsAnalysisEnabled": "Включите этот параметр, чтобы запустить SpotBugs. Этот подключаемый модуль работает с Gradle 5.6 или более поздней версии. [Подробнее](https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)", + "loc.input.label.spotBugsGradlePluginVersionChoice": "Версия подключаемого модуля SpotBugs", + "loc.input.help.spotBugsGradlePluginVersionChoice": "Используемая версия подключаемого модуля SpotBugs Gradle. Ее можно объявить в файле конфигурации Gradle или указать здесь.", + "loc.input.label.spotbugsGradlePluginVersion": "Номер версии", + "loc.input.help.spotbugsGradlePluginVersion": "Список всех доступных версий приведен на странице https://plugins.gradle.org/plugin/com.github.spotbugs.", + "loc.messages.sqCommon_CreateTaskReport_MissingField": "Не удалось создать объект TaskReport. Отсутствует поле: %s", + "loc.messages.sqCommon_WaitingForAnalysis": "Ожидание анализа сборки сервером SonarQube.", + "loc.messages.sqCommon_NotWaitingForAnalysis": "Для сборки не настроено ожидание анализа SonarQube. Подробные данные о состоянии шлюза качества будут недоступны.", + "loc.messages.sqCommon_QualityGateStatusUnknown": "Не удалось обнаружить состояние шлюза качества или представлено новое состояние.", + "loc.messages.sqCommon_InvalidResponseFromServer": "Недопустимый или непредвиденный формат ответа сервера.", + "loc.messages.codeAnalysis_ToolIsEnabled": "Анализ %s включен.", + "loc.messages.codeAnalysis_ToolFailed": "Сбой анализа %s.", + "loc.messages.sqAnalysis_IncrementalMode": "Обнаружена сборка PR — анализ SonarQube выполняется в инкрементном режиме", + "loc.messages.sqAnalysis_BuildSummaryTitle": "Отчет об анализе SonarQube", + "loc.messages.sqAnalysis_TaskReportInvalid": "Отчет о задаче недопустим или отсутствует. Убедитесь в том, что работа SonarQube завершена успешно.", + "loc.messages.sqAnalysis_BuildSummary_LinkText": "Подробный отчет SonarQube", + "loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate": "Не удается пройти проверку подлинности на сервере SonarQube. Проверьте сохраненные сведения о подключении к службе и состояние сервера.", + "loc.messages.sqAnalysis_AnalysisTimeout": "Анализ не выполнен в течение отведенного времени (%d с).", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary": "Сборка запроса на вытягивание: подробная сводка по сборке SonarQube будет недоступна.", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker": "Сборка запроса на вытягивание: сборка не будет нарушена в случае сбоя шлюза качества.", + "loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure": "Сбой шлюза качества SonarQube, связанного с этой сборкой.", + "loc.messages.sqAnalysis_QualityGatePassed": "Шлюз качества SonarQube, связанный с этой сборкой, передал состояние \"%s\".", + "loc.messages.sqAnalysis_UnknownComparatorString": "Обнаружена ошибка в сводке по сборке SonarQube: неизвестный блок сравнения \"%s\".", + "loc.messages.sqAnalysis_NoUnitsFound": "Не удается получить список единиц измерения SonarQube с сервера.", + "loc.messages.sqAnalysis_NoReportTask": "Не удалось найти файл report-task.txt. Возможная причина: анализ SonarQube не был успешно завершен.", + "loc.messages.sqAnalysis_MultipleReportTasks": "Обнаружено несколько файлов report-task.txt. Будет выбран первый из них. Сводка по сборке и причина прерывания сборки могут оказаться неточными. Возможная причина: в одной и той же сборке запущено несколько экземпляров анализа SonarQube, что не поддерживается.", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s обнаружил нарушения (%d) в файлах (%d).", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s обнаружил нарушения (%d) в одном файле.", + "loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s обнаружил одно нарушение в одном файле.", + "loc.messages.codeAnalysisBuildSummaryLine_NoViolations": "%s не обнаружил нарушений.", + "loc.messages.codeAnalysisBuildSummaryTitle": "Отчет по Code Analysis", + "loc.messages.codeAnalysisArtifactSummaryTitle": "Результаты Code Analysis", + "loc.messages.codeAnalysisDisabled": "Анализ кода отключен вне среды сборки. Не удалось найти значение: %s", + "loc.messages.LocateJVMBasedOnVersionAndArch": "Найдите JAVA_HOME для Java %s %s", + "loc.messages.UnsupportedJdkWarning": "Поддержка JDK 9 и JDK 10 прекращена. Переключитесь на более позднюю версию в проекте и конвейере. Выполняется попытка сборки с помощью JDK 11...", + "loc.messages.FailedToLocateSpecifiedJVM": "Не удалось найти указанную версию JDK. Убедитесь в том, что указанная версия JDK установлена в агенте и что переменная среды \"%s\" существует и ее значением является расположение соответствующего пакета JDK, или используйте [установщик средств Java] (https://go.microsoft.com/fwlink/?linkid=875287), чтобы установить требуемую версию JDK.", + "loc.messages.InvalidBuildFile": "Файл сборки недопустим или не поддерживается", + "loc.messages.FileNotFound": "Файл или папка не существует: %s", + "loc.messages.NoTestResults": "Не найдены файлы результатов теста, соответствующие \"%s\". Публикация результатов теста JUnit пропускается.", + "loc.messages.chmodGradlew": "Использован метод \"chmod\" для файла gradlew, чтобы сделать его исполняемым." +} \ No newline at end of file diff --git a/_generated/GradleV4_Node20/Strings/resources.resjson/zh-CN/resources.resjson b/_generated/GradleV4_Node20/Strings/resources.resjson/zh-CN/resources.resjson new file mode 100644 index 000000000000..0946d1cf3b35 --- /dev/null +++ b/_generated/GradleV4_Node20/Strings/resources.resjson/zh-CN/resources.resjson @@ -0,0 +1,85 @@ +{ + "loc.friendlyName": "Gradle", + "loc.helpMarkDown": "[详细了解此任务](https://go.microsoft.com/fwlink/?LinkID=613720)或[参阅 Gradle 文档](https://docs.gradle.org/current/userguide/userguide.html)", + "loc.description": "使用 Gradle 包装器脚本生成", + "loc.instanceNameFormat": "gradlew $(tasks)", + "loc.releaseNotes": "在“准备分析配置”任务中,已将 SonarQube 分析的配置移至 [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube)或 [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud)扩展", + "loc.group.displayName.junitTestResults": "JUnit 测试结果", + "loc.group.displayName.advanced": "高级", + "loc.group.displayName.CodeAnalysis": "代码分析", + "loc.input.label.wrapperScript": "Gradle 包装器", + "loc.input.help.wrapperScript": "从存储库根路径到“Gradle 包装器脚本”的相对路径。", + "loc.input.label.cwd": "工作目录", + "loc.input.help.cwd": "要在其中运行 Gradle 生成的工作目录。若未指定,则使用存储库根路径。", + "loc.input.label.options": "选项", + "loc.input.label.tasks": "任务", + "loc.input.label.publishJUnitResults": "发布到 Azure Pipelines", + "loc.input.help.publishJUnitResults": "选择此选项可将 Gradle 生成产生的 JUnit 测试结果发布到 Azure Pipelines。每个与 `Test Results Files` 匹配的测试结果文件都会在 Azure Pipelines 中发布为测试运行。", + "loc.input.label.testResultsFiles": "测试结果文件", + "loc.input.help.testResultsFiles": "测试结果文件路径。可以使用通配符([详细信息](https://go.microsoft.com/fwlink/?linkid=856077))。例如,\"**/TEST-*.xml\" 表示名称以 TEST- 开头的所有 xml 文件。", + "loc.input.label.testRunTitle": "测试运行标题", + "loc.input.help.testRunTitle": "为测试运行提供一个名称。", + "loc.input.label.javaHomeSelection": "JAVA_HOME 设置方法", + "loc.input.help.javaHomeSelection": "可通过选择将在生成期间发现的 JDK 版本或手动输入 JDK 路径来设置 JAVA_HOME。", + "loc.input.label.jdkVersion": "JDK 版本", + "loc.input.help.jdkVersion": "将尝试发现所选 JDK 版本的路径并相应地设置 JAVA_HOME。", + "loc.input.label.jdkUserInputPath": "JDK 路径", + "loc.input.help.jdkUserInputPath": "将 JAVA_HOME 设置到给定路径。", + "loc.input.label.jdkArchitecture": "JDK 体系结构", + "loc.input.help.jdkArchitecture": "可以选择提供 JDK 的体系结构(x86、x64)。", + "loc.input.label.gradleOpts": "设置 GRADLE_OPTS", + "loc.input.help.gradleOpts": "设置 GRADLE_OPTS 环境变量,此变量将用于发送命令行参数以启动 JVM。xmx 标志将指定 JVM 可用的最大内存。", + "loc.input.label.sqAnalysisEnabled": "运行 SonarQube 或 SonarCloud 分析", + "loc.input.help.sqAnalysisEnabled": "此选项已从 **Gradle** 任务的版本 1 更改为使用[SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube)和[SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud)市场扩展。执行“任务”字段中的任务后,启用此选项来运行[SonarQube 或 SonarCloud 分析](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html)。还必须在此 Gradle 任务之前从生成管道的其中一个扩展添加“准备分析配置”任务。", + "loc.input.label.sqGradlePluginVersionChoice": "Gradle 版本的 SonarQube 扫描仪", + "loc.input.help.sqGradlePluginVersionChoice": "要使用的 SonarQube Gradle 插件版本。可以在 Gradle 配置文件中对它进行声明或在此处指定版本。", + "loc.input.label.sqGradlePluginVersion": "Gradle 插件版本的 SonarQube 扫描仪", + "loc.input.help.sqGradlePluginVersion": "有关所有可用版本,请参阅 https://plugins.gradle.org/plugin/org.sonarqube。", + "loc.input.label.checkstyleAnalysisEnabled": "运行 Checkstyle", + "loc.input.help.checkstyleAnalysisEnabled": "使用默认 Sun 检查运行 Checkstyle 工具。将结果上传为生成项目。", + "loc.input.label.findbugsAnalysisEnabled": "运行 FindBugs", + "loc.input.help.findbugsAnalysisEnabled": "使用 FindBugs 静态分析工具查找代码中的 bug。结果将作为构建项目上传。在 Gradle 6.0 中,已删除此插件。请改为使用 spotbugs 插件。[详细信息](https://docs.gradle.org/current/userguide/upgrading_version_5.html#the_findbugs_plugin_has_been_removed)", + "loc.input.label.pmdAnalysisEnabled": "运行 PMD", + "loc.input.help.pmdAnalysisEnabled": "使用 PMD Java 静态分析工具查找代码中的 bug。将结果上传为生成项目。", + "loc.input.label.spotBugsAnalysisEnabled": "运行 SpotBugs", + "loc.input.help.spotBugsAnalysisEnabled": "启用此选项以运行 spotBugs。此插件适用于 Gradle v5.6 或更高版本。[详细信息](https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)", + "loc.input.label.spotBugsGradlePluginVersionChoice": "Spotbugs 插件版本", + "loc.input.help.spotBugsGradlePluginVersionChoice": "要使用的 Spotbugs Gradle 插件版本。可以在 Gradle 配置文件中对其作出声明,或在此处指定版本。", + "loc.input.label.spotbugsGradlePluginVersion": "版本号", + "loc.input.help.spotbugsGradlePluginVersion": "请参阅 https://plugins.gradle.org/plugin/com.github.spotbugs 以了解所有可用版本。", + "loc.messages.sqCommon_CreateTaskReport_MissingField": "未能创建 TaskReport 对象。缺少字段: %s", + "loc.messages.sqCommon_WaitingForAnalysis": "正在等待 SonarQube 服务器分析生成。", + "loc.messages.sqCommon_NotWaitingForAnalysis": "生成未配置等待 SonarQube 分析。详细的质量检验关状态不可用。", + "loc.messages.sqCommon_QualityGateStatusUnknown": "无法检测质量检验关状态,或已引入新的状态。", + "loc.messages.sqCommon_InvalidResponseFromServer": "从服务器返回了无效的或意外的响应格式。", + "loc.messages.codeAnalysis_ToolIsEnabled": "%s 分析已启用。", + "loc.messages.codeAnalysis_ToolFailed": "%s 分析失败。", + "loc.messages.sqAnalysis_IncrementalMode": "检测到 PR 生成 - 在增量模式下运行 SonarQube 分析", + "loc.messages.sqAnalysis_BuildSummaryTitle": "SonarQube 分析报表", + "loc.messages.sqAnalysis_TaskReportInvalid": "任务报表无效或丢失。请检查 SonarQube 是否成功完成。", + "loc.messages.sqAnalysis_BuildSummary_LinkText": "详细的 SonarQube 报表", + "loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate": "无法对 SonarQube 服务器进行验证。请查看已保存的服务连接详细信息和该服务器的状态。", + "loc.messages.sqAnalysis_AnalysisTimeout": "未在分配的时间(%d 秒)内完成分析。", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary": "拉取请求生成: 详细的 SonarQube 生成摘要不可用。", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker": "拉取请求生成: 生成不会因质量检验关问题而断开。", + "loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure": "与此生成关联的 SonarQube 质量检验关出现问题。", + "loc.messages.sqAnalysis_QualityGatePassed": "已通过与此生成关联的 SonarQube 质量检验关(状态 %s)", + "loc.messages.sqAnalysis_UnknownComparatorString": "SonarQube 生成摘要遇到了问题: 未知的比较运算符“%s”", + "loc.messages.sqAnalysis_NoUnitsFound": "无法从服务器检索 SonarQube 度量单位列表。", + "loc.messages.sqAnalysis_NoReportTask": "无法找到 report-task.txt。可能的原因: SonarQube 分析未成功完成。", + "loc.messages.sqAnalysis_MultipleReportTasks": "找到了多个 report-task.txt 文件。选择第一个文件。生成摘要和生成断裂可能不正确。可能的原因: 同一生成中存在多个 SonarQube 分析,这种情况不受支持。", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s 发现 %d 个冲突存在于 %d 个文件中。", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s 发现 %d 个冲突存在于 1 个文件中。", + "loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s 发现 1 个冲突存在于 1 个文件中。", + "loc.messages.codeAnalysisBuildSummaryLine_NoViolations": "%s 未发现任何冲突。", + "loc.messages.codeAnalysisBuildSummaryTitle": "代码分析报告", + "loc.messages.codeAnalysisArtifactSummaryTitle": "代码分析结果", + "loc.messages.codeAnalysisDisabled": "代码分析在生成环境外被禁用。无法找到 %s 的值", + "loc.messages.LocateJVMBasedOnVersionAndArch": "为 Java %s %s 查找 JAVA_HOME", + "loc.messages.UnsupportedJdkWarning": "JDK 9 和 JDK 10 不受支持。请切换到项目和管道中的更高版本。正在尝试使用 JDK 11 进行生成...", + "loc.messages.FailedToLocateSpecifiedJVM": "未能找到指定的 JDK 版本。请确保代理上安装了指定的 JDK 版本,环境变量“%s”存在并设置为对应 JDK 的位置或使用[Java 工具安装程序](https://go.microsoft.com/fwlink/?linkid=875287)任务安装所需 JDK。", + "loc.messages.InvalidBuildFile": "生成文件无效或不受支持", + "loc.messages.FileNotFound": "文件或文件夹不存在: %s", + "loc.messages.NoTestResults": "未找到匹配 %s 的测试结果文件,因此将跳过发布 JUnit 测试结果。", + "loc.messages.chmodGradlew": "对 gradlew 文件使用 “chmod” 方法以使其可执行。" +} \ No newline at end of file diff --git a/_generated/GradleV4_Node20/Strings/resources.resjson/zh-TW/resources.resjson b/_generated/GradleV4_Node20/Strings/resources.resjson/zh-TW/resources.resjson new file mode 100644 index 000000000000..d002c058671d --- /dev/null +++ b/_generated/GradleV4_Node20/Strings/resources.resjson/zh-TW/resources.resjson @@ -0,0 +1,85 @@ +{ + "loc.friendlyName": "Gradle", + "loc.helpMarkDown": "[深入了解此工作](https://go.microsoft.com/fwlink/?LinkID=613720)或[參閱 Gradle 文件](https://docs.gradle.org/current/userguide/userguide.html)", + "loc.description": "使用 Gradle 包裝函式指令碼來建置", + "loc.instanceNameFormat": "gradlew $(tasks)", + "loc.releaseNotes": "SonarQube 分析的設定已移至 [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) 或 [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) 延伸模組,位於 `Prepare Analysis Configuration` 工作中", + "loc.group.displayName.junitTestResults": "JUnit 測試結果", + "loc.group.displayName.advanced": "進階", + "loc.group.displayName.CodeAnalysis": "Code Analysis", + "loc.input.label.wrapperScript": "Gradle 包裝函式", + "loc.input.help.wrapperScript": "從存放庫根路徑到 Gradle 包裝函式指令碼的相對路徑。", + "loc.input.label.cwd": "工作目錄", + "loc.input.help.cwd": "在其中執行 Gradle 組建的工作目錄。未指定時,會使用儲存機制根路徑。", + "loc.input.label.options": "選項", + "loc.input.label.tasks": "工作", + "loc.input.label.publishJUnitResults": "發佈至 Azure Pipelines", + "loc.input.help.publishJUnitResults": "選取此選項會將 Gradle 組建所產生的 JUnit 測試結果發佈至 Azure Pipelines。每個與 `Test Results Files` 相符的測試結果檔案都將作為測試回合於 Azure Pipelines中發佈。", + "loc.input.label.testResultsFiles": "測試結果檔案", + "loc.input.help.testResultsFiles": "測試結果檔案路徑。可使用萬用字元 ([詳細資訊](https://go.microsoft.com/fwlink/?linkid=856077))。例如 `**/TEST-*.xml` 表示名稱開頭為 TEST- 的所有 XML 檔案。", + "loc.input.label.testRunTitle": "測試回合標題", + "loc.input.help.testRunTitle": "提供測試回合的名稱。", + "loc.input.label.javaHomeSelection": "設定 JAVA_HOME 由", + "loc.input.help.javaHomeSelection": "選取一個能在組建期間探索到的 JDK 版本,或者手動輸入 JDK 路徑,均能為 JAVA_HOME 進行設定。", + "loc.input.label.jdkVersion": "JDK 版本", + "loc.input.help.jdkVersion": "將嘗試探索所選取 JDK 版本的路徑,並據此設定 JAVA_HOME。", + "loc.input.label.jdkUserInputPath": "JDK 路徑", + "loc.input.help.jdkUserInputPath": "將 JAVA_HOME 設定為指定路徑。", + "loc.input.label.jdkArchitecture": "JDK 架構", + "loc.input.help.jdkArchitecture": "選擇性地提供 JDK 的架構 (x86、x64)。", + "loc.input.label.gradleOpts": "設定 GRADLE_OPTS", + "loc.input.help.gradleOpts": "設定 GRADLE_OPTS 環境變數,用以傳送命令列引數以啟動 JVM。xmx 旗標會指定 JVM 可用的記憶體上限。", + "loc.input.label.sqAnalysisEnabled": "執行 SonarQube 或 SonarCloud 分析", + "loc.input.help.sqAnalysisEnabled": "此選項已從 **Gradle** 工作的版本 1 變更為使用 [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) 和 [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) 市集延伸模組。請在 [工作]**** 欄位執行工作後啟用此選項來執行 [SonarQube 或 SonarCloud 分析](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html)。您也必須在此 Gradle 工作之前,從其中一個延伸模組將 [準備分析組態]**** 工作新增至組建管線。", + "loc.input.label.sqGradlePluginVersionChoice": "適用於 Gradle 的 SonarQube 掃描器版本", + "loc.input.help.sqGradlePluginVersionChoice": "要使用的 SonarQube Gradle 外掛程式版本。您可於 Gradle 組態檔中加以宣告,或於此處指定版本。", + "loc.input.label.sqGradlePluginVersion": "適用於 Gradle 外掛程式的 SonarQube 掃描器版本", + "loc.input.help.sqGradlePluginVersion": "如需查看所有可用的版本,請參閱 https://plugins.gradle.org/plugin/org.sonarqube。", + "loc.input.label.checkstyleAnalysisEnabled": "執行 Checkstyle", + "loc.input.help.checkstyleAnalysisEnabled": "請以預設 Sun 檢查執行 Checkstyle 工具。結果會上傳成組建成品。", + "loc.input.label.findbugsAnalysisEnabled": "執行 FindBugs", + "loc.input.help.findbugsAnalysisEnabled": "使用 FindBugs 靜態分析工具,在程式碼中尋找錯誤。系統會將結果上傳為組建成品。在 Gradle 6.0 中已移除此外掛程式。請改用 spotbugs 外掛程式。[詳細資訊] (https://docs.gradle.org/current/userguide/upgrading_version_5.html#the_findbugs_plugin_has_been_removed)", + "loc.input.label.pmdAnalysisEnabled": "執行 PMD", + "loc.input.help.pmdAnalysisEnabled": "使用 PMD Java 靜態分析工具尋找程式碼中的錯誤。結果會上傳成組建成品。", + "loc.input.label.spotBugsAnalysisEnabled": "執行 SpotBugs", + "loc.input.help.spotBugsAnalysisEnabled": "啟用此選項可執行 spotBugs。此外掛程式適用於 Gradle v5.6 或更新版本。[詳細資訊] (https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)", + "loc.input.label.spotBugsGradlePluginVersionChoice": "Spotbugs 外掛程式版本", + "loc.input.help.spotBugsGradlePluginVersionChoice": "要使用的 Spotbugs Gradle 外掛程式版本。您可於 Gradle 組態檔中加以宣告,或於此處指定版本。", + "loc.input.label.spotbugsGradlePluginVersion": "版本號碼", + "loc.input.help.spotbugsGradlePluginVersion": "如需所有可用的版本,請參閱 https://plugins.gradle.org/plugin/com.github.spotbugs。", + "loc.messages.sqCommon_CreateTaskReport_MissingField": "無法建立 TaskReport 物件。遺漏欄位: %s", + "loc.messages.sqCommon_WaitingForAnalysis": "正在等候 SonarQube 伺服器分析組建。", + "loc.messages.sqCommon_NotWaitingForAnalysis": "組建未設定為等待 SonarQube 分析。將無法使用詳細的品質閘門狀態。", + "loc.messages.sqCommon_QualityGateStatusUnknown": "無法偵測品質閘門狀態或是已引進新狀態。", + "loc.messages.sqCommon_InvalidResponseFromServer": "伺服器以無效或未預期的回應格式回應。", + "loc.messages.codeAnalysis_ToolIsEnabled": "已啟用 %s 分析。", + "loc.messages.codeAnalysis_ToolFailed": "%s 分析失敗。", + "loc.messages.sqAnalysis_IncrementalMode": "偵測到 PR 組建 - 正在以累加模式執行 SonarQube 分析", + "loc.messages.sqAnalysis_BuildSummaryTitle": "SonarQube 分析報表", + "loc.messages.sqAnalysis_TaskReportInvalid": "任務報表無效或遺漏。檢查 SonarQube 已順利完成。", + "loc.messages.sqAnalysis_BuildSummary_LinkText": "詳細 SonarQube 報表", + "loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate": "無法向 SonarQube 伺服器驗證。請檢查所儲存的服務連線詳細資料及伺服器的狀態。", + "loc.messages.sqAnalysis_AnalysisTimeout": "分析未在分配的時間 %d 秒內完成。", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary": "提取要求組建: 將無法取得詳細的 SonarQube 組建摘要。", + "loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker": "提取要求組建: 如果品質閘道失敗,組建並不會中斷。", + "loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure": "與此組建建立關聯的 SonarQube 品質閘道已失敗。", + "loc.messages.sqAnalysis_QualityGatePassed": "與此組建建立關聯的 SonarQube 品質閘道已通過 (狀態 %s)", + "loc.messages.sqAnalysis_UnknownComparatorString": "SonarQube 組建摘要發生問題: 不明的比較子 '%s'", + "loc.messages.sqAnalysis_NoUnitsFound": "無法從伺服器擷取 SonarQube 度量單位清單。", + "loc.messages.sqAnalysis_NoReportTask": "找不到 report-task.txt。可能的原因: SonarQube 分析未成功完成。", + "loc.messages.sqAnalysis_MultipleReportTasks": "找到多個 report-task.txt 檔案。請選擇第一個。組建摘要及組建分隔可能不準確。可能的原因: 相同組建期間有多個 SonarQube分析,此情況不受支援。", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s 發現 %d 個違規 (在 %d 個檔案中)。", + "loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s 在 1 個檔案中發現 %d 個違規。", + "loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s 在 1 個檔案中發現 1 個違規。", + "loc.messages.codeAnalysisBuildSummaryLine_NoViolations": "%s 找不到任何違規。", + "loc.messages.codeAnalysisBuildSummaryTitle": "Code Analysis 報告", + "loc.messages.codeAnalysisArtifactSummaryTitle": "Code Analysis 結果", + "loc.messages.codeAnalysisDisabled": "已停用於組建環境外進行程式碼分析。找不到 %s 的值", + "loc.messages.LocateJVMBasedOnVersionAndArch": "為 Java %s %s 找出 JAVA_HOME 的位置", + "loc.messages.UnsupportedJdkWarning": "JDK 9 與 JDK 10 已失去支援。請在您的專案和管線中切換至較新版本。正在嘗試以 JDK 11 進行建置...", + "loc.messages.FailedToLocateSpecifiedJVM": "找不到指定的 JDK 版本。請確認指定的 JDK 版本已安裝在代理程式上,且環境變數 '%s' 存在並已設定為對應 JDK 的位置,或者使用 [Java 工具安裝程式](https://go.microsoft.com/fwlink/?linkid=875287) 工作安裝所需的 JDK。", + "loc.messages.InvalidBuildFile": "組建檔案無效或不受支援", + "loc.messages.FileNotFound": "檔案或資料夾不存在: %s", + "loc.messages.NoTestResults": "找不到任何符合 %s 的測試結果,因此跳過發行 JUnit 測試結果。", + "loc.messages.chmodGradlew": "使用 'chmod' 方法將 gradlew 檔案設為可執行檔。" +} \ No newline at end of file diff --git a/_generated/GradleV4_Node20/Tests/.npmrc b/_generated/GradleV4_Node20/Tests/.npmrc new file mode 100644 index 000000000000..969ccea07661 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/.npmrc @@ -0,0 +1,3 @@ +registry=https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ + +always-auth=true \ No newline at end of file diff --git a/_generated/GradleV4_Node20/Tests/L0.ts b/_generated/GradleV4_Node20/Tests/L0.ts new file mode 100644 index 000000000000..2937620263f1 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0.ts @@ -0,0 +1,784 @@ +import assert = require('assert'); +import path = require('path'); +import os = require('os'); +import process = require('process'); +import fs = require('fs'); + +import * as ttm from 'azure-pipelines-task-lib/mock-test'; + +import { BuildOutput, BuildEngine } from 'azure-pipelines-tasks-codeanalysis-common/Common/BuildOutput'; +import { PmdTool } from 'azure-pipelines-tasks-codeanalysis-common/Common/PmdTool'; +import { CheckstyleTool } from 'azure-pipelines-tasks-codeanalysis-common/Common/CheckstyleTool'; +import { FindbugsTool } from 'azure-pipelines-tasks-codeanalysis-common/Common/FindbugsTool'; +import { AnalysisResult } from 'azure-pipelines-tasks-codeanalysis-common/Common/AnalysisResult'; +import { extractGradleVersion } from '../Modules/environment'; + +// need to detect current dir (e.g. for Node20 it will be GradleV4_Node20\Tests) +// __dirname - Current Dir(GradleV4\Tests) +const gradleFolder = path.basename(path.join(__dirname, '..')) + +let isWindows: RegExpMatchArray = os.type().match(/^Win/); +let gradleWrapper: string = isWindows ? 'gradlew.bat' : 'gradlew'; + +let gradleFile: string = `/${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/sonar.gradle`; +let checkstyleFile: string = `/${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/checkstyle.gradle`; +let findbugsFile: string = `/${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/findbugs.gradle`; +let pmdFile: string = `/${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/pmd.gradle`; +// Fix up argument paths for Windows +if (isWindows) { + gradleFile = `\\${gradleFolder}\\node_modules\\azure-pipelines-tasks-codeanalysis-common\\sonar.gradle`; + checkstyleFile = `\\${gradleFolder}\\node_modules\\azure-pipelines-tasks-codeanalysis-common\\checkstyle.gradle`; + findbugsFile = `\\${gradleFolder}\\node_modules\\azure-pipelines-tasks-codeanalysis-common\\findbugs.gradle`; + pmdFile = `\\${gradleFolder}\\node_modules\\azure-pipelines-tasks-codeanalysis-common\\pmd.gradle`; +} + + function assertFileDoesNotExistInDir(stagingDir:string, filePath:string): void { + let directoryName: string = path.dirname(path.join(stagingDir, filePath)); + let fileName: string = path.basename(filePath); + assert(fs.statSync(directoryName).isDirectory(), 'Expected directory did not exist: ' + directoryName); + let directoryContents: string[] = fs.readdirSync(directoryName); + assert(directoryContents.indexOf(fileName) === -1, `Expected file to not exist, but it does: ${filePath} Actual contents of ${directoryName}: ${directoryContents}`); +} + +function assertBuildSummaryDoesNotContain(buildSummaryString: string, str: string): void { + assert(buildSummaryString.indexOf(str) === -1, `Expected build summary to not contain: ${str} Actual: ${buildSummaryString}`); +} + +function assertCodeAnalysisBuildSummaryDoesNotContain(stagingDir: string, unexpectedString: string): void { + assertBuildSummaryDoesNotContain(fs.readFileSync(path.join(stagingDir, '.codeAnalysis', 'CodeAnalysisBuildSummary.md'), 'utf-8'), unexpectedString); +} + +function assertFileExistsInDir(stagingDir:string, filePath:string) { + let directoryName: string = path.dirname(path.join(stagingDir, filePath)); + let fileName: string = path.basename(filePath); + assert(fs.statSync(directoryName).isDirectory(), 'Expected directory did not exist: ' + directoryName); + let directoryContents: string[] = fs.readdirSync(directoryName); + assert(directoryContents.indexOf(fileName) > -1, `Expected file did not exist: ${filePath} Actual contents of ${directoryName}: ${directoryContents}`); +} + +function assertCodeAnalysisBuildSummaryContains(stagingDir: string, expectedString: string): void { + assertBuildSummaryContains(path.join(stagingDir, '.codeAnalysis', 'CodeAnalysisBuildSummary.md'), expectedString); +} + +function assertBuildSummaryContains(buildSummaryFilePath: string, expectedLine: string): void { + let buildSummaryString: string = fs.readFileSync(buildSummaryFilePath, 'utf-8'); + + assert(buildSummaryString.indexOf(expectedLine) > -1, `Expected build summary to contain: ${expectedLine} Actual: ${buildSummaryString}`); +} + +function assertSonarQubeBuildSummaryContains(stagingDir: string, expectedString: string): void { + assertBuildSummaryContains(path.join(stagingDir, '.sqAnalysis', 'SonarQubeBuildSummary.md'), expectedString); +} + +function deleteFolderRecursive(path):void { + if (fs.existsSync(path)) { + fs.readdirSync(path).forEach(function(file, index) { + let curPath: string = path + '/' + file; + if (fs.lstatSync(curPath).isDirectory()) { // recurse + deleteFolderRecursive(curPath); + } else { // delete file + fs.unlinkSync(curPath); + } + }); + fs.rmdirSync(path); + } +} + +function cleanTemporaryFolders():void { + let testTempDir: string = path.join(__dirname, '_temp'); + deleteFolderRecursive(testTempDir); +} + +function createTemporaryFolders(): void { + let testTempDir: string = path.join(__dirname, '_temp'); + let sqTempDir: string = path.join(testTempDir, '.sqAnalysis'); + + if (!fs.existsSync(testTempDir)) { + fs.mkdirSync(testTempDir); + } + + if (!fs.existsSync(sqTempDir)) { + fs.mkdirSync(sqTempDir); + } +} + +describe('Gradle L0 Suite', function () { + this.timeout(parseInt(process.env.TASK_TEST_TIMEOUT) || 20000); + + before(async () => { + process.env['ENDPOINT_AUTH_SYSTEMVSSCONNECTION'] = "{\"parameters\":{\"AccessToken\":\"token\"},\"scheme\":\"OAuth\"}"; + process.env['ENDPOINT_URL_SYSTEMVSSCONNECTION'] = "https://example.visualstudio.com/defaultcollection"; + }); + + it('run gradle with all default inputs', async () => { + let tp: string = path.join(__dirname, 'L0AllDefaultInputs.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.ran(gradleWrapper + ' build'), 'it should have run gradlew build'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.succeeded, 'task should have succeeded'); + assert(tr.stdout.indexOf('GRADLE_OPTS is now set to -Xmx2048m') > 0); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with missing wrapperScript', async () => { + let tp: string = path.join(__dirname, 'L0MissingWrapperScript.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.invokedToolCount === 0, 'should not have run gradle'); + assert(tr.stdout.length > 0, 'should have written to stdout'); + assert(tr.failed, 'task should have failed'); + assert(tr.stdout.indexOf('Input required: wrapperScript') >= 0, 'wrong error message: "' + tr.stdout + '"'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with INVALID wrapperScript', async () => { + let tp: string = path.join(__dirname, 'L0InvalidWrapperScript.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.invokedToolCount === 0, 'should not have run gradle'); + assert(tr.stdout.length > 0, 'should have written to stdout'); + assert(tr.failed, 'task should have failed'); + // /home/gradlew is from L0InvalidWrapperScript.ts + assert(tr.stdout.indexOf('Not found /home/gradlew') >= 0, 'wrong error message: "' + tr.stdout + '"'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with cwd set to valid path', async () => { + let tp: string = path.join(__dirname, 'L0ValidCwdPath.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.ran(gradleWrapper + ' build'), 'it should have run gradlew build'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.succeeded, 'task should have succeeded'); + // /home/repo/src is from L0ValidCwdPath.ts + assert(tr.stdout.indexOf('cwd=/home/repo/src') > 0); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with cwd set to INVALID path', async () => { + let tp: string = path.join(__dirname, 'L0InvalidPath.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.invokedToolCount === 0, 'should not have run gradle'); + assert(tr.stdout.length > 0, 'should have written to stdout'); + assert(tr.failed, 'task should have failed'); + // /home/repo/src2 is from L0InvalidPath.ts + assert(tr.stdout.indexOf('Not found /home/repo/src2') >= 0, 'wrong error message: "' + tr.stdout + '"'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with options set', async () => { + let tp: string = path.join(__dirname, 'L0OptionsSet.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + // ' /o /p t i /o /n /s build' is from L0OptionsSet.ts + assert(tr.ran(gradleWrapper + ' /o /p t i /o /n /s build'), 'it should have run gradlew /o /p t i /o /n /s build'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.succeeded, 'task should have succeeded'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with tasks not set', async () => { + let tp: string = path.join(__dirname, 'L0TasksNotSet.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.invokedToolCount === 0, 'should not have run gradle'); + assert(tr.stdout.length > 0, 'should have written to stdout'); + assert(tr.failed, 'task should have failed'); + assert(tr.stdout.indexOf('Input required: tasks') >= 0, 'wrong error message: "' + tr.stdout + '"'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with tasks set to multiple', async () => { + let tp: string = path.join(__dirname, 'L0MultipleTasks.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.ran(gradleWrapper + ' /o /p t i /o /n /s build test deploy'), 'it should have run gradlew /o /p t i /o /n /s build test deploy'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.succeeded, 'task should have succeeded'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with missing publishJUnitResults input', async () => { + let tp: string = path.join(__dirname, 'L0MissingPublishJUnitResultsInput.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.ran(gradleWrapper + ' build'), 'it should have run gradlew build'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.succeeded, 'task should have succeeded'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with publishJUnitResults set to "garbage"', async () => { + let tp: string = path.join(__dirname, 'L0GarbagePublishJUnitResults.js'); + let tr : ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.ran(gradleWrapper + ' build'), 'it should have run gradlew build'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.succeeded, 'task should have succeeded'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('fails if missing testResultsFiles input', async () => { + let tp: string = path.join(__dirname, 'L0MissingTestResultsFilesInput.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.invokedToolCount === 0, 'should not have run gradle'); + assert(tr.stdout.length > 0, 'should have written to stdout'); + assert(tr.failed, 'task should have failed'); + assert(tr.stdout.indexOf('Input required: testResultsFiles') >= 0, 'wrong error message: "' + tr.stdout + '"'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('fails if missing javaHomeSelection input', async () => { + let tp: string = path.join(__dirname, 'L0MissingJavaHomeSelectionInput.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.invokedToolCount === 0, 'should not have run gradle'); + assert(tr.stdout.length > 0, 'should have written to stdout'); + assert(tr.failed, 'task should have failed'); + assert(tr.stdout.indexOf('Input required: javaHomeSelection') >= 0, 'wrong error message: "' + tr.stdout + '"'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with jdkVersion set to 1.8', async () => { + let tp: string = path.join(__dirname, 'L0JDKVersion18.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.ran(gradleWrapper + ' build'), 'it should have run gradlew build'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.succeeded, 'task should have succeeded'); + assert(tr.stdout.indexOf('Set JAVA_HOME to /user/local/bin/Java8') >= 0, 'JAVA_HOME not set correctly'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with jdkVersion set to 1.5', async () => { + let tp: string = path.join(__dirname, 'L0JDKVersion15.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + if (isWindows) { + // should have run reg query toolrunner once + assert(tr.invokedToolCount === 1, 'should not have run gradle'); + } else { + assert(tr.invokedToolCount === 0, 'should not have run gradle'); + } + assert(tr.failed, 'task should have failed'); + assert(tr.stdout.indexOf('loc_mock_FailedToLocateSpecifiedJVM') >= 0, 'JAVA_HOME set?'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('run gradle with Valid inputs but it fails', async () => { + let tp: string = path.join(__dirname, 'L0ValidInputsFailure.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.ran(gradleWrapper + ' build FAIL'), 'it should have run gradlew build FAIL'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length > 0, 'should have written to stderr'); + assert(tr.failed, 'task should have failed'); + assert(tr.stdout.indexOf('FAILED') >= 0, 'It should have failed'); + assert(tr.stdout.search(/##vso\[results.publish type=JUnit;mergeResults=true;publishRunAttachments=true;resultFiles=\/user\/build\/fun\/test-results\/test-123.xml;\]/) >= 0); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('Gradle build with publish test results.', async () => { + let tp: string = path.join(__dirname, 'L0PublishTestResults.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.stdout.search(/##vso\[results.publish type=JUnit;mergeResults=true;publishRunAttachments=true;resultFiles=\/user\/build\/fun\/test-123.xml;\]/) >= 0); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.succeeded, 'task should have succeeded'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('Gradle build with publish test results with no matching test result files.', async () => { + let tp: string = path.join(__dirname, 'L0PublishTestResultsNoMatchingResultFiles.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + await tr.runAsync(); + + assert(tr.stdout.search(/##vso\[results.publish\]/) < 0, 'publish test results should not have got called.'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.stdout.search(/NoTestResults/) >= 0, 'should have produced a verbose message.'); + assert(tr.succeeded, 'task should have succeeded'); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('Gradle with SonarQube - Should run Gradle with all default inputs when SonarQube analysis disabled', async function() { + let tp: string = path.join(__dirname, 'L0SQGradleDefaultSQDisabled.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + createTemporaryFolders(); + + await tr.runAsync(); + + assert(tr.succeeded, 'task should have succeeded'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.stdout.indexOf('task.issue type=warning;') < 0, 'should not have produced any warnings'); + assert(tr.ran(gradleWrapper + ' build'), 'it should have run only the default settings'); + + cleanTemporaryFolders(); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('Gradle with SonarQube - Should run Gradle with SonarQube', async function() { + let tp: string = path.join(__dirname, 'L0SQ.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + createTemporaryFolders(); + let testStgDir: string = path.join(__dirname, '_temp'); + + await tr.runAsync(); + + assert(tr.succeeded, 'task should have succeeded'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.stdout.indexOf('task.issue type=warning;') < 0, 'should not have produced any warnings'); + assert(tr.ran(gradleWrapper + ` build -I ${gradleFile} sonarqube`), 'should have run the gradle wrapper with the appropriate SonarQube arguments'); + + cleanTemporaryFolders(); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('Single Module Gradle with Checkstyle and FindBugs and PMD', async function() { + let tp: string = path.join(__dirname, 'L0SingleModuleCheckstyleFindBugsPMD.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + createTemporaryFolders(); + + let testStgDir: string = path.join(__dirname, '_temp'); + + await tr.runAsync(); + + assert(tr.succeeded, 'task should have succeeded'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.ran(gradleWrapper + ` build -I ${checkstyleFile} -I ${findbugsFile} -I ${pmdFile}`), + 'Ran Gradle with Checkstyle and Findbugs and Pmd'); + assert(tr.stdout.indexOf('task.addattachment type=Distributedtask.Core.Summary;name=loc_mock_codeAnalysisBuildSummaryTitle') > -1, + 'should have uploaded a Code Analysis Report build summary'); + assert(tr.stdout.indexOf('artifact.upload artifactname=loc_mock_codeAnalysisArtifactSummaryTitle;') > -1, + 'should have uploaded code analysis build artifacts'); + + assertCodeAnalysisBuildSummaryContains(testStgDir, 'loc_mock_codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles'); + assertCodeAnalysisBuildSummaryContains(testStgDir, 'loc_mock_codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles'); + assertCodeAnalysisBuildSummaryContains(testStgDir, 'loc_mock_codeAnalysisBuildSummaryLine_SomeViolationsOneFile'); + + let codeAnalysisStgDir: string = path.join(testStgDir, '.codeAnalysis', 'CA'); + + // Test files were copied for module "root", build 14 + assertFileExistsInDir(codeAnalysisStgDir, '/root/14_main_Checkstyle.html'); + assertFileExistsInDir(codeAnalysisStgDir, '/root/14_main_Checkstyle.xml'); + assertFileExistsInDir(codeAnalysisStgDir, '/root/14_main_PMD.html'); + assertFileExistsInDir(codeAnalysisStgDir, '/root/14_main_PMD.xml'); + assertFileExistsInDir(codeAnalysisStgDir, '/root/14_test_Checkstyle.html'); + assertFileExistsInDir(codeAnalysisStgDir, '/root/14_test_Checkstyle.xml'); + assertFileExistsInDir(codeAnalysisStgDir, '/root/14_test_PMD.html'); + assertFileExistsInDir(codeAnalysisStgDir, '/root/14_test_PMD.xml'); + + cleanTemporaryFolders(); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('Gradle with code analysis - Only shows empty results for tools which are enabled', async function() { + let tp: string = path.join(__dirname, 'L0CAEmptyResultsEnabledTools.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + createTemporaryFolders(); + + let testStgDir: string = path.join(__dirname, '_temp'); + + await tr.runAsync(); + + assert(tr.succeeded, 'task should have succeeded'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.ran(gradleWrapper + ` build -I ${pmdFile}`), 'Ran Gradle with PMD'); + assert(tr.stdout.indexOf('task.addattachment type=Distributedtask.Core.Summary;name=loc_mock_codeAnalysisBuildSummaryTitle') > -1, + 'should have uploaded a Code Analysis Report build summary'); + + assert(tr.stdout.indexOf('artifact.upload artifactname=loc_mock_codeAnalysisArtifactSummaryTitle;') < 0, + 'should not have uploaded code analysis build artifacts'); + + assertCodeAnalysisBuildSummaryDoesNotContain(testStgDir, 'FindBugs found no violations.'); + assertCodeAnalysisBuildSummaryDoesNotContain(testStgDir, 'Checkstyle found no violations.'); + + assertCodeAnalysisBuildSummaryContains(testStgDir, 'loc_mock_codeAnalysisBuildSummaryLine_NoViolations'); + + // There were no files to be uploaded - the CA folder should not exist + let codeAnalysisStgDir: string = path.join(testStgDir, '.codeAnalysis'); + assertFileDoesNotExistInDir(codeAnalysisStgDir, 'CA'); + + cleanTemporaryFolders(); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('Gradle with code analysis - Does not upload artifacts if code analysis reports were empty', async function() { + let tp: string = path.join(__dirname, 'L0CANoUploadArtifactsIfReportsEmpty.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + createTemporaryFolders(); + + //var testSrcDir: string = path.join(__dirname, 'data', 'singlemodule-noviolations'); + let testStgDir: string = path.join(__dirname, '_temp'); + + await tr.runAsync(); + + assert(tr.stdout.length > 0, 'should have written to stdout'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.stdout.indexOf('task.issue type=warning;') < 0, 'should not have produced any warnings'); + assert(tr.succeeded, 'task should have succeeded'); + assert(tr.ran(gradleWrapper + + ` build -I ${checkstyleFile} -I ${findbugsFile} -I ${pmdFile}`), + 'should have run Gradle with code analysis tools'); + + assert(tr.stdout.indexOf('task.addattachment type=Distributedtask.Core.Summary;name=loc_mock_codeAnalysisBuildSummaryTitle') > -1, + 'should have uploaded a Code Analysis Report build summary'); + + assert(tr.stdout.indexOf('##vso[artifact.upload artifactname=loc_mock_codeAnalysisArtifactSummaryTitle;]') < 0, + 'should not have uploaded a code analysis build artifact'); + + assertCodeAnalysisBuildSummaryContains(testStgDir, 'loc_mock_codeAnalysisBuildSummaryLine_NoViolations'); + assertCodeAnalysisBuildSummaryContains(testStgDir, 'loc_mock_codeAnalysisBuildSummaryLine_NoViolations'); + assertCodeAnalysisBuildSummaryContains(testStgDir, 'loc_mock_codeAnalysisBuildSummaryLine_NoViolations'); + + // The .codeAnalysis dir should have been created to store the build summary, but not the report dirs + let codeAnalysisStgDir: string = path.join(testStgDir, '.codeAnalysis'); + assertFileDoesNotExistInDir(codeAnalysisStgDir, 'CA'); + + cleanTemporaryFolders(); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('Gradle with code analysis - Does nothing if the tools were not enabled', async function() { + let tp: string = path.join(__dirname, 'L0CANoToolsEnabled.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + //var testSrcDir: string = path.join(__dirname, 'data', 'singlemodule'); + let testStgDir: string = path.join(__dirname, '_temp'); + + createTemporaryFolders(); + + await tr.runAsync(); + + assert(tr.stdout.length > 0, 'should have written to stdout'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.stdout.indexOf('task.issue type=warning;') < 0, 'should not have produced any warnings'); + assert(tr.succeeded, 'task should have succeeded'); + assert(tr.ran(gradleWrapper + ' build'), 'it should have run gradlew build'); + assert(tr.stdout.indexOf('task.addattachment type=Distributedtask.Core.Summary;name=loc_mock_codeAnalysisBuildSummaryTitle') < 0, + 'should not have uploaded a Code Analysis Report build summary'); + assert(tr.stdout.indexOf('##vso[artifact.upload artifactname=loc_mock_codeAnalysisArtifactSummaryTitle;]') < 0, + 'should not have uploaded a code analysis build artifact'); + + // Nothing should have been created + assertFileDoesNotExistInDir(testStgDir, '.codeAnalysis'); + + cleanTemporaryFolders(); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + it('Multi Module Gradle with Checkstyle and FindBugs and PMD', async function() { + let tp: string = path.join(__dirname, 'L0MultiModuleCheckstyleFindBugsPMD.js'); + let tr: ttm.MockTestRunner = new ttm.MockTestRunner(tp); + + try { + createTemporaryFolders(); + + let testStgDir: string = path.join(__dirname, '_temp'); + + await tr.runAsync(); + + assert(tr.succeeded, 'task should have succeeded'); + assert(tr.invokedToolCount === 1, 'should have only run gradle 1 time'); + assert(tr.stderr.length === 0, 'should not have written to stderr'); + assert(tr.ran(gradleWrapper + + ` build -I ${checkstyleFile} -I ${findbugsFile} -I ${pmdFile}`), + 'should have run Gradle with code analysis tools'); + assert(tr.stdout.indexOf('task.addattachment type=Distributedtask.Core.Summary;name=loc_mock_codeAnalysisBuildSummaryTitle') > -1, + 'should have uploaded a Code Analysis Report build summary'); + assert(tr.stdout.indexOf('artifact.upload artifactname=loc_mock_codeAnalysisArtifactSummaryTitle;') > -1, + 'should have uploaded PMD build artifacts'); + + assertCodeAnalysisBuildSummaryContains(testStgDir, 'loc_mock_codeAnalysisBuildSummaryLine_SomeViolationsOneFile'); + assertCodeAnalysisBuildSummaryContains(testStgDir, 'loc_mock_codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles'); + assertCodeAnalysisBuildSummaryContains(testStgDir, 'loc_mock_codeAnalysisBuildSummaryLine_SomeViolationsOneFile'); + + let codeAnalysisStgDir: string = path.join(testStgDir, '.codeAnalysis', 'CA'); + + // Test files copied for module "module-one", build 211 + assertFileExistsInDir(codeAnalysisStgDir, 'module-one/211_main_Checkstyle.html'); + assertFileExistsInDir(codeAnalysisStgDir, 'module-one/211_main_Checkstyle.xml'); + assertFileExistsInDir(codeAnalysisStgDir, 'module-one/211_main_PMD.html'); + assertFileExistsInDir(codeAnalysisStgDir, 'module-one/211_main_PMD.xml'); + assertFileExistsInDir(codeAnalysisStgDir, 'module-one/211_test_Checkstyle.html'); + assertFileExistsInDir(codeAnalysisStgDir, 'module-one/211_test_Checkstyle.xml'); + + // Test files were copied for module "module-two", build 211 + // None - the checkstyle reports have no violations and are not uploaded + + // Test files were copied for module "module-three", build 211 + // None - the pmd reports have no violations and are not uploaded + + cleanTemporaryFolders(); + } catch (err) { + console.log(tr.stdout); + console.log(tr.stderr); + console.log(err); + throw err; + } + }); + + + + // /* BEGIN Tools tests */ + function verifyModuleResult(results: AnalysisResult[], moduleName: string , expectedViolationCount: number, expectedFileCount: number, expectedReports: string[]) { + let analysisResults = results.filter(ar => ar.moduleName === moduleName); + assert(analysisResults !== null && analysisResults.length !== 0 , 'Null or empty array'); + assert(analysisResults.length === 1, 'The array does not have a single element'); + let analysisResult = analysisResults[0]; + + assert(analysisResult.affectedFileCount === expectedFileCount, `Expected ${expectedFileCount} files, actual: ${analysisResult.affectedFileCount}`); + assert(analysisResult.violationCount === expectedViolationCount, `Expected ${expectedViolationCount} violations, actual: ${analysisResult.violationCount}`); + assert(analysisResult.resultFiles.length === expectedReports.length, `Invalid number of reports`); + + for (let actualReport of analysisResult.resultFiles) { + let reportFile: string = path.basename(actualReport); + assert(expectedReports.indexOf(reportFile) > -1, 'Report not found: ' + actualReport); + } + } + + it('Checkstyle tool retrieves results', async function() { + let testSrcDir: string = path.join(__dirname, 'data', 'multimodule'); + + let buildOutput: BuildOutput = new BuildOutput(testSrcDir, BuildEngine.Gradle); + let tool = new CheckstyleTool(buildOutput, 'checkstyleAnalysisEnabled'); + tool.isEnabled = () => true; + let results: AnalysisResult[] = tool.processResults(); + + assert(results.length === 2, 'Unexpected number of results. note that module-three has no tool results '); + verifyModuleResult(results, 'module-one', 34, 2, ['main.xml', 'main.html', 'test.xml', 'test.html'] ); + verifyModuleResult(results, 'module-two', 0, 0, [] /* empty report files are not copied in */); + }); + + it('Pmd tool retrieves results', async function() { + let testSrcDir: string = path.join(__dirname, 'data', 'multimodule'); + + let buildOutput: BuildOutput = new BuildOutput(testSrcDir, BuildEngine.Gradle); + let tool = new PmdTool(buildOutput, 'checkstyleAnalysisEnabled'); + tool.isEnabled = () => true; + let results: AnalysisResult[] = tool.processResults(); + + assert(results.length === 2, 'Unexpected number of results. note that module-three has no tool results '); + verifyModuleResult(results, 'module-one', 2, 1, ['main.xml', 'main.html'] ); + verifyModuleResult(results, 'module-three', 0, 0, [] /* empty report files are not copied in */); + }); + + it('FindBugs tool retrieves results', async function() { + let testSrcDir: string = path.join(__dirname, 'data', 'multimodule'); + + let buildOutput: BuildOutput = new BuildOutput(testSrcDir, BuildEngine.Gradle); + let tool = new FindbugsTool(buildOutput, 'findbugsAnalysisEnabled'); + tool.isEnabled = () => true; + let results: AnalysisResult[] = tool.processResults(); + + assert(results.length === 1, 'Unexpected number of results. Expected 1 (only module-three has a findbugs XML), actual ' + results.length); + verifyModuleResult(results, 'module-three', 5, 1, ['main.xml'] /* empty report files are not copied in */); + }); + // /* END Tools tests */ + + it('extractGradleVersion returns correct results', async () => { + const log1: string = 'Gradle 4.0.1'; + const log2: string = 'Gradle 4.0'; + const log3: string = 'Gradle 3.5-rc-2'; + const log4: string = 'Gradle 8.5-20230916222118+0000'; + const log5: string = 'Gradle 8.5-20230916222118-0000'; + const log6: string = 'Gradle 8.4-branch-ljacomet_kotlin_kotlin_1_9_10-20230901164331+0000' + const log7: string = ''; + assert(extractGradleVersion(log1) === '4.0.1', 'extractGradleVersion should return 4.0.1'); + assert(extractGradleVersion(log2) === '4.0', 'extractGradleVersion should return 4.0'); + assert(extractGradleVersion(log3) === '3.5-rc-2', 'extractGradleVersion should return 3.5-rc-2'); + assert(extractGradleVersion(log4) === '8.5-20230916222118+0000', 'extractGradleVersion should return 8.5-20230916222118+0000'); + assert(extractGradleVersion(log5) === '8.5-20230916222118-0000', 'extractGradleVersion should return 8.5-20230916222118-0000'); + assert(extractGradleVersion(log6) === '8.4-branch-ljacomet_kotlin_kotlin_1_9_10-20230901164331+0000', 'extractGradleVersion should return 8.4-branch-ljacomet_kotlin_kotlin_1_9_10-20230901164331+0000'); + assert(extractGradleVersion(log7) === 'unknown', 'extractGradleVersion should return unknown'); + }); +}); diff --git a/_generated/GradleV4_Node20/Tests/L0AllDefaultInputs.ts b/_generated/GradleV4_Node20/Tests/L0AllDefaultInputs.ts new file mode 100644 index 000000000000..693408e4fc2b --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0AllDefaultInputs.ts @@ -0,0 +1,38 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); +tr.setInput('gradleOpts', '-Xmx2048m'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0CAEmptyResultsEnabledTools.ts b/_generated/GradleV4_Node20/Tests/L0CAEmptyResultsEnabledTools.ts new file mode 100644 index 000000000000..13231dea96ce --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0CAEmptyResultsEnabledTools.ts @@ -0,0 +1,117 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +// need to detect current dir (e.g. for Node20 it will be GradleV3_Node20\Tests) +// __dirname - Current Dir(GradleV3\Tests) +const gradleFolder = path.basename(path.join(__dirname, '..')) + + //escape for Windows directories +let tempDir: string = path.join(__dirname, '_temp'); +let sqAnalysisDirReplaced: string = path.join(tempDir, '.sqAnalysis').replace(/\\/g, '/'); +let taskReportValidDir: string = path.join(__dirname, 'data', 'singlemodule-noviolations'); +let taskReportValidBuildDir: string = path.join(taskReportValidDir, 'build'); +let taskReportValidBuildDirReplaced: string = path.join(taskReportValidDir, 'build').replace(/\\/g, '/'); +let taskReportValidBuildSonarDir: string = path.join(taskReportValidBuildDir, 'sonar'); +let taskReportValidBuildSonarDirReplaced: string = path.join(taskReportValidBuildDir, 'sonar').replace(/\\/g, '/'); +let taskReportValidBuildSonarReportTaskTextDirReplaced: string = path.join(taskReportValidBuildSonarDir, 'report-task.txt').replace(/\\/g, '/'); + +//Env vars in the mock framework must replace '.' with '_' +//replace with mock of setVariable when task-lib has the support +process.env['MOCK_IGNORE_TEMP_PATH'] = 'true'; +process.env['MOCK_TEMP_PATH'] = path.join(__dirname, '..', '..'); +process.env['MOCK_NORMALIZE_SLASHES'] = 'true'; + +process.env['JAVA_HOME_8_X86'] = '/user/local/bin/Java8'; +process.env['ENDPOINT_URL_ID1'] = 'http://sonarqube/end/point'; +process.env['ENDPOINT_AUTH_ID1'] = '{\"scheme\":\"UsernamePassword\", \"parameters\": {\"username\": \"uname\", \"password\": \"pword\"}}'; + +process.env['BUILD_BUILDNUMBER'] = '14'; +process.env['BUILD_SOURCESDIRECTORY'] = `${taskReportValidDir}`; +process.env['BUILD_ARTIFACTSTAGINGDIRECTORY'] = `${tempDir}`; +process.env['SYSTEM_DEFAULTWORKINGDIRECTORY'] = `${taskReportValidDir}`; //'/user/build/s'; + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +tr.setInput('sqAnalysisEnabled', 'false'); + +// Added inputs for this test +tr.setInput('pmdAnalysisEnabled', 'true'); +tr.setInput('checkstyleAnalysisEnabled', 'false'); +tr.setInput('findbugsAnalysisEnabled', 'false'); + +//construct a string that is JSON, call JSON.parse(string), send that to ma.TaskLibAnswers +let myAnswers: string = `{ + "exec":{ + "gradlew build -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/pmd.gradle": { + "code": 0, + "stdout": "Sample gradle + PMD" + }, + "gradlew.bat build -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/pmd.gradle": { + "code": 0, + "stdout": "Sample gradle + PMD" + } + }, + "checkPath":{ + "gradlew":true, + "gradlew.bat":true, + "/home/repo/src":true, + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "find":{ + "/user/build":[ + "/user/build/fun/test-123.xml" + ] + }, + "match":{ + "**/build/test-results/TEST-*.xml":[ + "/user/build/fun/test-123.xml" + ] + }, + "stats":{ + "${sqAnalysisDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":{ + "isFile":true + } + }, + "exist":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "mkdirP":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + } +}`; + +let json: any = JSON.parse(myAnswers); + +// Cast the json blob into a TaskLibAnswers +tr.setAnswers(json); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0CANoToolsEnabled.ts b/_generated/GradleV4_Node20/Tests/L0CANoToolsEnabled.ts new file mode 100644 index 000000000000..8fa2dc507a82 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0CANoToolsEnabled.ts @@ -0,0 +1,108 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + + //escape for Windows directories +let tempDir: string = path.join(__dirname, '_temp'); +let sqAnalysisDirReplaced: string = path.join(tempDir, '.sqAnalysis').replace(/\\/g, '/'); +let taskReportValidDir: string = path.join(__dirname, 'data', 'singlemodule'); +let taskReportValidBuildDir: string = path.join(taskReportValidDir, 'build'); +let taskReportValidBuildDirReplaced: string = path.join(taskReportValidDir, 'build').replace(/\\/g, '/'); +let taskReportValidBuildSonarDir: string = path.join(taskReportValidBuildDir, 'sonar'); +let taskReportValidBuildSonarDirReplaced: string = path.join(taskReportValidBuildDir, 'sonar').replace(/\\/g, '/'); +let taskReportValidBuildSonarReportTaskTextDirReplaced: string = path.join(taskReportValidBuildSonarDir, 'report-task.txt').replace(/\\/g, '/'); + +//Env vars in the mock framework must replace '.' with '_' +//replace with mock of setVariable when task-lib has the support +process.env['MOCK_IGNORE_TEMP_PATH'] = 'true'; +process.env['MOCK_TEMP_PATH'] = path.join(__dirname, '..', '..'); +process.env['MOCK_NORMALIZE_SLASHES'] = 'true'; + +process.env['JAVA_HOME_8_X86'] = '/user/local/bin/Java8'; +process.env['ENDPOINT_URL_ID1'] = 'http://sonarqube/end/point'; +process.env['ENDPOINT_AUTH_ID1'] = '{\"scheme\":\"UsernamePassword\", \"parameters\": {\"username\": \"uname\", \"password\": \"pword\"}}'; + +process.env['BUILD_BUILDNUMBER'] = '14'; +process.env['BUILD_SOURCESDIRECTORY'] = `${taskReportValidDir}`; +process.env['BUILD_ARTIFACTSTAGINGDIRECTORY'] = `${tempDir}`; +process.env['SYSTEM_DEFAULTWORKINGDIRECTORY'] = `${taskReportValidDir}`; //'/user/build/s'; + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +tr.setInput('sqAnalysisEnabled', 'false'); + +// Added inputs for this test +tr.setInput('pmdAnalysisEnabled', 'false'); +tr.setInput('checkstyleAnalysisEnabled', 'false'); +tr.setInput('findbugsAnalysisEnabled', 'false'); + +//construct a string that is JSON, call JSON.parse(string), send that to ma.TaskLibAnswers +let myAnswers: string = `{ + "exec":{ + "gradlew.bat build": { + "code": 0, + "stdout": "Sample gradle output" + }, + "gradlew build": { + "code": 0, + "stdout": "Sample gradle output" + } + }, + "checkPath":{ + "gradlew":true, + "gradlew.bat":true, + "/home/repo/src":true, + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "findMatch":{ + "**/build/test-results/TEST-*.xml":[ + "/user/build/fun/test-123.xml" + ] + }, + "stats":{ + "${sqAnalysisDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":{ + "isFile":true + } + }, + "exist":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "mkdirP":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + } +}`; + +let json: any = JSON.parse(myAnswers); + +// Cast the json blob into a TaskLibAnswers +tr.setAnswers(json); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0CANoUploadArtifactsIfReportsEmpty.ts b/_generated/GradleV4_Node20/Tests/L0CANoUploadArtifactsIfReportsEmpty.ts new file mode 100644 index 000000000000..98b3b98b6bb8 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0CANoUploadArtifactsIfReportsEmpty.ts @@ -0,0 +1,112 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +// need to detect current dir (e.g. for Node20 it will be GradleV4_Node20\Tests) +// __dirname - Current Dir(GradleV4\Tests) +const gradleFolder = path.basename(path.join(__dirname, '..')) + + //escape for Windows directories +let tempDir: string = path.join(__dirname, '_temp'); +let sqAnalysisDirReplaced: string = path.join(tempDir, '.sqAnalysis').replace(/\\/g, '/'); +let taskReportValidDir: string = path.join(__dirname, 'data', 'singlemodule-noviolations'); //taskreport-valid'); +let taskReportValidBuildDir: string = path.join(taskReportValidDir, 'build'); +let taskReportValidBuildDirReplaced: string = path.join(taskReportValidDir, 'build').replace(/\\/g, '/'); +let taskReportValidBuildSonarDir: string = path.join(taskReportValidBuildDir, 'sonar'); +let taskReportValidBuildSonarDirReplaced: string = path.join(taskReportValidBuildDir, 'sonar').replace(/\\/g, '/'); +let taskReportValidBuildSonarReportTaskTextDirReplaced: string = path.join(taskReportValidBuildSonarDir, 'report-task.txt').replace(/\\/g, '/'); + +//Env vars in the mock framework must replace '.' with '_' +//replace with mock of setVariable when task-lib has the support +process.env['MOCK_IGNORE_TEMP_PATH'] = 'true'; +process.env['MOCK_TEMP_PATH'] = path.join(__dirname, '..', '..'); +process.env['MOCK_NORMALIZE_SLASHES'] = 'true'; + +process.env['JAVA_HOME_8_X86'] = '/user/local/bin/Java8'; +process.env['ENDPOINT_URL_ID1'] = 'http://sonarqube/end/point'; +process.env['ENDPOINT_AUTH_ID1'] = '{\"scheme\":\"UsernamePassword\", \"parameters\": {\"username\": \"uname\", \"password\": \"pword\"}}'; + +process.env['BUILD_BUILDNUMBER'] = '14'; +process.env['BUILD_SOURCESDIRECTORY'] = `${taskReportValidDir}`; +process.env['BUILD_ARTIFACTSTAGINGDIRECTORY'] = `${tempDir}`; +process.env['SYSTEM_DEFAULTWORKINGDIRECTORY'] = `${taskReportValidDir}`; //'/user/build/s'; + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +tr.setInput('sqAnalysisEnabled', 'false'); + +// Added inputs for this test +tr.setInput('pmdAnalysisEnabled', 'true'); +tr.setInput('checkstyleAnalysisEnabled', 'true'); +tr.setInput('findbugsAnalysisEnabled', 'true'); + +//construct a string that is JSON, call JSON.parse(string), send that to ma.TaskLibAnswers +let myAnswers: string = `{ + "exec":{ + "gradlew build -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/checkstyle.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/findbugs.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/pmd.gradle": { + "code": 0, + "stdout": "Sample gradle + Checkstyle + PMD + FindBugs" + }, + "gradlew.bat build -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/checkstyle.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/findbugs.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/pmd.gradle": { + "code": 0, + "stdout": "Sample gradle + Checkstyle + PMD + FindBugs" + } + }, + "checkPath":{ + "gradlew":true, + "gradlew.bat":true, + "/home/repo/src":true, + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "findMatch":{ + "**/build/test-results/TEST-*.xml":[ + "/user/build/fun/test-123.xml" + ] + }, + "stats":{ + "${sqAnalysisDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":{ + "isFile":true + } + }, + "exist":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "mkdirP":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + } +}`; + +let json: any = JSON.parse(myAnswers); + +// Cast the json blob into a TaskLibAnswers +tr.setAnswers(json); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0GarbagePublishJUnitResults.ts b/_generated/GradleV4_Node20/Tests/L0GarbagePublishJUnitResults.ts new file mode 100644 index 000000000000..62443f3bf7cd --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0GarbagePublishJUnitResults.ts @@ -0,0 +1,38 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +tr.setInput('publishJUnitResults', 'garbage'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0InvalidPath.ts b/_generated/GradleV4_Node20/Tests/L0InvalidPath.ts new file mode 100644 index 000000000000..2e7a777503f7 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0InvalidPath.ts @@ -0,0 +1,37 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src2'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src2': false + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0InvalidWrapperScript.ts b/_generated/GradleV4_Node20/Tests/L0InvalidWrapperScript.ts new file mode 100644 index 000000000000..5e41ce0c89e1 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0InvalidWrapperScript.ts @@ -0,0 +1,37 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', '/home/gradlew'); +tr.setInput('cwd', '/home/repo/src2'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/gradlew': false + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0JDKVersion15.ts b/_generated/GradleV4_Node20/Tests/L0JDKVersion15.ts new file mode 100644 index 000000000000..9b08b0804f65 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0JDKVersion15.ts @@ -0,0 +1,46 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); +tr.setInput('jdkVersion', '1.5'); +tr.setInput('jdkArchitecture', 'x86'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'reg query HKLM\\SOFTWARE\\JavaSoft\\Java Development Kit\\ /f 1.5 /k': { + 'code': 222, + 'stdout': '' + }, + 'reg query HKLM\\SOFTWARE\\JavaSoft\\Java Development Kit\\1.5 /v JavaHome /reg:32': { + 'code': 222, + 'stdout': '' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0JDKVersion18.ts b/_generated/GradleV4_Node20/Tests/L0JDKVersion18.ts new file mode 100644 index 000000000000..5cfe3c6e0553 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0JDKVersion18.ts @@ -0,0 +1,40 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); +tr.setInput('jdkVersion', '1.8'); +tr.setInput('jdkArchitecture', 'x86'); + +process.env['JAVA_HOME_8_X86'] = '/user/local/bin/Java8'; //replace with mock of setVariable when task-lib has the support + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0MissingJavaHomeSelectionInput.ts b/_generated/GradleV4_Node20/Tests/L0MissingJavaHomeSelectionInput.ts new file mode 100644 index 000000000000..2b1f9f54fb6c --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0MissingJavaHomeSelectionInput.ts @@ -0,0 +1,28 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', '/o "/p t i" /o /n /s'); +tr.setInput('tasks', 'build test deploy'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +// tr.setInput('javaHomeSelection', 'JDKVersion'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0MissingPublishJUnitResultsInput.ts b/_generated/GradleV4_Node20/Tests/L0MissingPublishJUnitResultsInput.ts new file mode 100644 index 000000000000..a8dc10d95a07 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0MissingPublishJUnitResultsInput.ts @@ -0,0 +1,38 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +//tr.setInput('publishJUnitResults', 'garbage'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0MissingTestResultsFilesInput.ts b/_generated/GradleV4_Node20/Tests/L0MissingTestResultsFilesInput.ts new file mode 100644 index 000000000000..e2f6e46c0e2d --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0MissingTestResultsFilesInput.ts @@ -0,0 +1,28 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', '/o "/p t i" /o /n /s'); +tr.setInput('tasks', 'build test deploy'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); + +// tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0MissingWrapperScript.ts b/_generated/GradleV4_Node20/Tests/L0MissingWrapperScript.ts new file mode 100644 index 000000000000..6a7c68bd1b1b --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0MissingWrapperScript.ts @@ -0,0 +1,38 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); +tr.setInput('cwd', '/home/repo/src2'); + +// tr.setInput('wrapperScript', 'gradlew'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0MultiModuleCheckstyleFindBugsPMD.ts b/_generated/GradleV4_Node20/Tests/L0MultiModuleCheckstyleFindBugsPMD.ts new file mode 100644 index 000000000000..94dcfd97694f --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0MultiModuleCheckstyleFindBugsPMD.ts @@ -0,0 +1,112 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +// need to detect current dir (e.g. for Node20 it will be GradleV4_Node20\Tests) +// __dirname - Current Dir(GradleV4\Tests) +const gradleFolder = path.basename(path.join(__dirname, '..')) + + //escape for Windows directories +let tempDir: string = path.join(__dirname, '_temp'); +let sqAnalysisDirReplaced: string = path.join(tempDir, '.sqAnalysis').replace(/\\/g, '/'); +let taskReportValidDir: string = path.join(__dirname, 'data', 'multimodule'); //taskreport-valid'); +let taskReportValidBuildDir: string = path.join(taskReportValidDir, 'build'); +let taskReportValidBuildDirReplaced: string = path.join(taskReportValidDir, 'build').replace(/\\/g, '/'); +let taskReportValidBuildSonarDir: string = path.join(taskReportValidBuildDir, 'sonar'); +let taskReportValidBuildSonarDirReplaced: string = path.join(taskReportValidBuildDir, 'sonar').replace(/\\/g, '/'); +let taskReportValidBuildSonarReportTaskTextDirReplaced: string = path.join(taskReportValidBuildSonarDir, 'report-task.txt').replace(/\\/g, '/'); + +//Env vars in the mock framework must replace '.' with '_' +//replace with mock of setVariable when task-lib has the support +process.env['MOCK_IGNORE_TEMP_PATH'] = 'true'; +process.env['MOCK_TEMP_PATH'] = path.join(__dirname, '..', '..'); +process.env['MOCK_NORMALIZE_SLASHES'] = 'true'; + +process.env['JAVA_HOME_8_X86'] = '/user/local/bin/Java8'; +process.env['ENDPOINT_URL_ID1'] = 'http://sonarqube/end/point'; +process.env['ENDPOINT_AUTH_ID1'] = '{\"scheme\":\"UsernamePassword\", \"parameters\": {\"username\": \"uname\", \"password\": \"pword\"}}'; + +process.env['BUILD_BUILDNUMBER'] = '211'; +process.env['BUILD_SOURCESDIRECTORY'] = `${taskReportValidDir}`; +process.env['BUILD_ARTIFACTSTAGINGDIRECTORY'] = `${tempDir}`; +process.env['SYSTEM_DEFAULTWORKINGDIRECTORY'] = `${taskReportValidDir}`; + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +tr.setInput('sqAnalysisEnabled', 'false'); + +// Added inputs for this test +tr.setInput('checkstyleAnalysisEnabled', 'true'); +tr.setInput('findbugsAnalysisEnabled', 'true'); +tr.setInput('pmdAnalysisEnabled', 'true'); + +//construct a string that is JSON, call JSON.parse(string), send that to ma.TaskLibAnswers +let myAnswers: string = `{ + "exec":{ + "gradlew.bat build -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/checkstyle.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/findbugs.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/pmd.gradle": { + "code": 0, + "stdout": "Sample gradle + Checkstyle + PMD + FindBugs" + }, + "gradlew build -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/checkstyle.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/findbugs.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/pmd.gradle": { + "code": 0, + "stdout": "Sample gradle + Checkstyle + PMD + FindBugs" + } + }, + "checkPath":{ + "gradlew":true, + "gradlew.bat":true, + "/home/repo/src":true, + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "findMatch":{ + "**/build/test-results/TEST-*.xml":[ + "/user/build/fun/test-123.xml" + ] + }, + "stats":{ + "${sqAnalysisDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":{ + "isFile":true + } + }, + "exist":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "mkdirP":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + } +}`; + +let json: any = JSON.parse(myAnswers); + +// Cast the json blob into a TaskLibAnswers +tr.setAnswers(json); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0MultipleTasks.ts b/_generated/GradleV4_Node20/Tests/L0MultipleTasks.ts new file mode 100644 index 000000000000..3374c3c572e3 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0MultipleTasks.ts @@ -0,0 +1,38 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', '/o "/p t i" /o /n /s'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +tr.setInput('tasks', 'build test deploy'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew /o /p t i /o /n /s build test deploy': { + 'code': 0, + 'stdout': 'More sample gradle output' + }, + 'gradlew.bat /o /p t i /o /n /s build test deploy': { + 'code': 0, + 'stdout': 'More sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0OptionsSet.ts b/_generated/GradleV4_Node20/Tests/L0OptionsSet.ts new file mode 100644 index 000000000000..b1661bb2514a --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0OptionsSet.ts @@ -0,0 +1,37 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', '/o "/p t i" /o /n /s'); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew /o /p t i /o /n /s build': { + 'code': 0, + 'stdout': 'More sample gradle output' + }, + 'gradlew.bat /o /p t i /o /n /s build': { + 'code': 0, + 'stdout': 'More sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0PublishTestResults.ts b/_generated/GradleV4_Node20/Tests/L0PublishTestResults.ts new file mode 100644 index 000000000000..7de42d2a98d7 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0PublishTestResults.ts @@ -0,0 +1,42 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/TEST-*.xml'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + }, + 'findMatch': { + '**/TEST-*.xml': [ + '/user/build/fun/test-123.xml' + ] + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0PublishTestResultsNoMatchingResultFiles.ts b/_generated/GradleV4_Node20/Tests/L0PublishTestResultsNoMatchingResultFiles.ts new file mode 100644 index 000000000000..53ee57deb142 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0PublishTestResultsNoMatchingResultFiles.ts @@ -0,0 +1,37 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '*InvalidTestFilter*.xml'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0SQ.ts b/_generated/GradleV4_Node20/Tests/L0SQ.ts new file mode 100644 index 000000000000..4ccb7b61b60d --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0SQ.ts @@ -0,0 +1,107 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +// need to detect current dir (e.g. for Node20 it will be GradleV4_Node20\Tests) +// __dirname - Current Dir(GradleV4\Tests) +const gradleFolder = path.basename(path.join(__dirname, '..')) + + //escape for Windows directories +let tempDir: string = path.join(__dirname, '_temp'); +let sqAnalysisDirReplaced: string = path.join(tempDir, '.sqAnalysis').replace(/\\/g, '/'); +let taskReportValidDir: string = path.join(__dirname, 'data', 'taskreport-valid'); +let taskReportValidBuildDir: string = path.join(taskReportValidDir, 'build'); +let taskReportValidBuildDirReplaced: string = path.join(taskReportValidDir, 'build').replace(/\\/g, '/'); +let taskReportValidBuildSonarDir: string = path.join(taskReportValidBuildDir, 'sonar'); +let taskReportValidBuildSonarDirReplaced: string = path.join(taskReportValidBuildDir, 'sonar').replace(/\\/g, '/'); +let taskReportValidBuildSonarReportTaskTextDirReplaced: string = path.join(taskReportValidBuildSonarDir, 'report-task.txt').replace(/\\/g, '/'); + +//Env vars in the mock framework must replace '.' with '_' +//replace with mock of setVariable when task-lib has the support +process.env['MOCK_IGNORE_TEMP_PATH'] = 'true'; +process.env['MOCK_TEMP_PATH'] = path.join(__dirname, '..', '..'); +process.env['MOCK_NORMALIZE_SLASHES'] = 'true'; + +process.env['JAVA_HOME_8_X86'] = '/user/local/bin/Java8'; + +process.env['BUILD_BUILDNUMBER'] = '14'; +process.env['BUILD_SOURCESDIRECTORY'] = `${taskReportValidDir}`; +process.env['BUILD_ARTIFACTSTAGINGDIRECTORY'] = `${tempDir}`; +process.env['SYSTEM_DEFAULTWORKINGDIRECTORY'] = `${taskReportValidDir}`; + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +tr.setInput('sqAnalysisEnabled', 'true'); +tr.setInput('sqGradlePluginVersionChoice', 'specify'); +tr.setInput('sqGradlePluginVersion', '2.6.1'); + +//construct a string that is JSON, call JSON.parse(string), send that to ma.TaskLibAnswers +let myAnswers: string = `{ + "exec":{ + "gradlew build -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/sonar.gradle sonarqube":{ + "code":0, + "stdout":"Gradle build and SQ analysis done" + }, + "gradlew.bat build -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/sonar.gradle sonarqube":{ + "code":0, + "stdout":"Gradle build and SQ analysis done" + } + }, + "checkPath":{ + "gradlew":true, + "gradlew.bat":true, + "/home/repo/src":true, + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "findMatch":{ + "**/build/test-results/TEST-*.xml":[ + "/user/build/fun/test-123.xml" + ] + }, + "stats":{ + "${sqAnalysisDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":{ + "isFile":true + } + }, + "exist":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "mkdirP":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + } +}`; + +let json: any = JSON.parse(myAnswers); + +// Cast the json blob into a TaskLibAnswers +tr.setAnswers(json); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0SQGradleDefaultSQDisabled.ts b/_generated/GradleV4_Node20/Tests/L0SQGradleDefaultSQDisabled.ts new file mode 100644 index 000000000000..6c8f89f98d79 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0SQGradleDefaultSQDisabled.ts @@ -0,0 +1,103 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + + //escape for Windows directories +let tempDir: string = path.join(__dirname, '_temp'); +let sqAnalysisDirReplaced: string = path.join(tempDir, '.sqAnalysis').replace(/\\/g, '/'); +let taskReportValidDir: string = path.join(__dirname, 'data', 'taskreport-valid'); +let taskReportValidBuildDir: string = path.join(taskReportValidDir, 'build'); +let taskReportValidBuildDirReplaced: string = path.join(taskReportValidDir, 'build').replace(/\\/g, '/'); +let taskReportValidBuildSonarDir: string = path.join(taskReportValidBuildDir, 'sonar'); +let taskReportValidBuildSonarDirReplaced: string = path.join(taskReportValidBuildDir, 'sonar').replace(/\\/g, '/'); +let taskReportValidBuildSonarReportTaskTextDirReplaced: string = path.join(taskReportValidBuildSonarDir, 'report-task.txt').replace(/\\/g, '/'); + +//Env vars in the mock framework must replace '.' with '_' +//replace with mock of setVariable when task-lib has the support +process.env['MOCK_IGNORE_TEMP_PATH'] = 'true'; +process.env['MOCK_TEMP_PATH'] = path.join(__dirname, '..', '..'); +process.env['MOCK_NORMALIZE_SLASHES'] = 'true'; + +process.env['JAVA_HOME_8_X86'] = '/user/local/bin/Java8'; + +process.env['BUILD_BUILDNUMBER'] = '14'; +process.env['BUILD_SOURCESDIRECTORY'] = `${taskReportValidDir}`; +process.env['BUILD_ARTIFACTSTAGINGDIRECTORY'] = `${tempDir}`; +process.env['BUILD_SOURCEBRANCH'] = 'refs/pull/6/master'; +process.env['BUILD_REPOSITORY_PROVIDER'] = 'TFSGit'; +process.env['SYSTEM_DEFAULTWORKINGDIRECTORY'] = '/user/build/s'; + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +tr.setInput('sqAnalysisEnabled', 'false'); + +//construct a string that is JSON, call JSON.parse(string), send that to ma.TaskLibAnswers +let myAnswers: string = `{ + "exec":{ + "gradlew build":{ + "code":0, + "stdout":"Sample gradle output" + }, + "gradlew.bat build":{ + "code":0, + "stdout":"Sample gradle output" + } + }, + "checkPath":{ + "gradlew":true, + "gradlew.bat":true, + "/home/repo/src":true, + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "findMatch":{ + "**/build/test-results/TEST-*.xml":[ + "/user/build/fun/test-123.xml" + ] + }, + "stats":{ + "${sqAnalysisDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":{ + "isFile":true + } + }, + "exist":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "mkdirP":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + } +}`; + +let json: any = JSON.parse(myAnswers); + +// Cast the json blob into a TaskLibAnswers +tr.setAnswers(json); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0SingleModuleCheckstyleFindBugsPMD.ts b/_generated/GradleV4_Node20/Tests/L0SingleModuleCheckstyleFindBugsPMD.ts new file mode 100644 index 000000000000..644a35b278d9 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0SingleModuleCheckstyleFindBugsPMD.ts @@ -0,0 +1,112 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +// need to detect current dir (e.g. for Node20 it will be GradleV4_Node20\Tests) +// __dirname - Current Dir(GradleV4\Tests) +const gradleFolder = path.basename(path.join(__dirname, '..')) + + //escape for Windows directories +let tempDir: string = path.join(__dirname, '_temp'); +let sqAnalysisDirReplaced: string = path.join(tempDir, '.sqAnalysis').replace(/\\/g, '/'); +let taskReportValidDir: string = path.join(__dirname, 'data', 'singlemodule'); +let taskReportValidBuildDir: string = path.join(taskReportValidDir, 'build'); +let taskReportValidBuildDirReplaced: string = path.join(taskReportValidDir, 'build').replace(/\\/g, '/'); +let taskReportValidBuildSonarDir: string = path.join(taskReportValidBuildDir, 'sonar'); +let taskReportValidBuildSonarDirReplaced: string = path.join(taskReportValidBuildDir, 'sonar').replace(/\\/g, '/'); +let taskReportValidBuildSonarReportTaskTextDirReplaced: string = path.join(taskReportValidBuildSonarDir, 'report-task.txt').replace(/\\/g, '/'); + +//Env vars in the mock framework must replace '.' with '_' +//replace with mock of setVariable when task-lib has the support +process.env['MOCK_IGNORE_TEMP_PATH'] = 'true'; +process.env['MOCK_TEMP_PATH'] = path.join(__dirname, '..', '..'); +process.env['MOCK_NORMALIZE_SLASHES'] = 'true'; + +process.env['JAVA_HOME_8_X86'] = '/user/local/bin/Java8'; +process.env['ENDPOINT_URL_ID1'] = 'http://sonarqube/end/point'; +process.env['ENDPOINT_AUTH_ID1'] = '{\"scheme\":\"UsernamePassword\", \"parameters\": {\"username\": \"uname\", \"password\": \"pword\"}}'; + +process.env['BUILD_BUILDNUMBER'] = '14'; +process.env['BUILD_SOURCESDIRECTORY'] = `${taskReportValidDir}`; +process.env['BUILD_ARTIFACTSTAGINGDIRECTORY'] = `${tempDir}`; +process.env['SYSTEM_DEFAULTWORKINGDIRECTORY'] = `${taskReportValidDir}`; //'/user/build/s'; + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +tr.setInput('sqAnalysisEnabled', 'false'); + +// Added inputs for this test +tr.setInput('checkstyleAnalysisEnabled', 'true'); +tr.setInput('findbugsAnalysisEnabled', 'true'); +tr.setInput('pmdAnalysisEnabled', 'true'); + +//construct a string that is JSON, call JSON.parse(string), send that to ma.TaskLibAnswers +let myAnswers: string = `{ + "exec":{ + "gradlew.bat build -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/checkstyle.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/findbugs.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/pmd.gradle": { + "code": 0, + "stdout": "Sample gradle + Checkstyle + PMD + FindBugs" + }, + "gradlew build -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/checkstyle.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/findbugs.gradle -I /${gradleFolder}/node_modules/azure-pipelines-tasks-codeanalysis-common/pmd.gradle": { + "code": 0, + "stdout": "Sample gradle + Checkstyle + PMD + FindBugs" + } + }, + "checkPath":{ + "gradlew":true, + "gradlew.bat":true, + "/home/repo/src":true, + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "findMatch":{ + "**/build/test-results/TEST-*.xml":[ + "/user/build/fun/test-123.xml" + ] + }, + "stats":{ + "${sqAnalysisDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarDirReplaced}":{ + "isFile":true + }, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":{ + "isFile":true + } + }, + "exist":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + }, + "mkdirP":{ + "${sqAnalysisDirReplaced}":true, + "${taskReportValidBuildDirReplaced}":true, + "${taskReportValidBuildSonarDirReplaced}":true, + "${taskReportValidBuildSonarReportTaskTextDirReplaced}":true + } +}`; + +let json: any = JSON.parse(myAnswers); + +// Cast the json blob into a TaskLibAnswers +tr.setAnswers(json); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0TasksNotSet.ts b/_generated/GradleV4_Node20/Tests/L0TasksNotSet.ts new file mode 100644 index 000000000000..4b92cd17bd99 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0TasksNotSet.ts @@ -0,0 +1,38 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', '/o "/p t i" /o /n /s'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +// tr.setInput('tasks', 'build'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0ValidCwdPath.ts b/_generated/GradleV4_Node20/Tests/L0ValidCwdPath.ts new file mode 100644 index 000000000000..7d824515af01 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0ValidCwdPath.ts @@ -0,0 +1,37 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build': { + 'code': 0, + 'stdout': 'Sample gradle output' + }, + 'gradlew.bat build': { + 'code': 0, + 'stdout': 'Sample gradle output' + } + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/L0ValidInputsFailure.ts b/_generated/GradleV4_Node20/Tests/L0ValidInputsFailure.ts new file mode 100644 index 000000000000..898bcc5ccad2 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/L0ValidInputsFailure.ts @@ -0,0 +1,42 @@ +import * as ma from 'azure-pipelines-task-lib/mock-answer'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import path = require('path'); + +let taskPath = path.join(__dirname, '..', 'gradletask.js'); +let tr: tmrm.TaskMockRunner = new tmrm.TaskMockRunner(taskPath); + +tr.setInput('wrapperScript', 'gradlew'); +tr.setInput('cwd', '/home/repo/src'); +tr.setInput('options', ''); +tr.setInput('tasks', 'build FAIL'); +tr.setInput('javaHomeSelection', 'JDKVersion'); +tr.setInput('jdkVersion', 'default'); +tr.setInput('publishJUnitResults', 'true'); +tr.setInput('testResultsFiles', '**/build/test-results/TEST-*.xml'); + +// provide answers for task mock +let a: ma.TaskLibAnswers = { + 'checkPath': { + 'gradlew': true, + 'gradlew.bat': true, + '/home/repo/src': true + }, + 'exec': { + 'gradlew build FAIL': { + 'code': 2, + 'stderr': 'FAILED' + }, + 'gradlew.bat build FAIL': { + 'code': 2, + 'stderr': 'FAILED' + } + }, + 'findMatch': { + '**/build/test-results/TEST-*.xml': [ + '/user/build/fun/test-results/test-123.xml' + ] + } +}; +tr.setAnswers(a); + +tr.run(); diff --git a/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/reports/checkstyle/main.html b/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/reports/checkstyle/main.html new file mode 100644 index 000000000000..016ab682ac02 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/reports/checkstyle/main.html @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + +
+

CheckStyle Audit

+
Designed for use with CheckStyle and Ant.
+
+

Summary

+ + + + + + + +
FilesErrors
117
+
+

Files

+ + + + + + + +
NameErrors
C:\core-agent\_work\3\s\module-one\src\main\java\One.java17
+
+ +

File C:\core-agent\_work\3\s\module-one\src\main\java\One.java

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Error DescriptionLine
Missing package-info.java file.0
Missing a Javadoc comment.1
Line has trailing spaces.2
File contains tab characters (this is the first instance).2
Missing a Javadoc comment.3
Variable 'message' must be private and have accessor methods.3
Line has trailing spaces.4
Method 'foo' is not designed for extension - needs to be abstract, final or empty.5
Missing a Javadoc comment.5
'{' should be on the previous line.7
Must have at least one statement.7
Line has trailing spaces.8
'}' should be on the same line.9
Line has trailing spaces.10
'{' should be on the previous line.11
Must have at least one statement.11
Line has trailing spaces.12
+Back to top +
+ + diff --git a/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/reports/checkstyle/main.xml b/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/reports/checkstyle/main.xml new file mode 100644 index 000000000000..f57e131525f6 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/reports/checkstyle/main.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/reports/checkstyle/test.html b/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/reports/checkstyle/test.html new file mode 100644 index 000000000000..016ab682ac02 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/reports/checkstyle/test.html @@ -0,0 +1,150 @@ + + + + + + + + + + + + + + +
+

CheckStyle Audit

+
Designed for use with CheckStyle and Ant.
+
+

Summary

+ + + + + + + +
FilesErrors
117
+
+

Files

+ + + + + + + +
NameErrors
C:\core-agent\_work\3\s\module-one\src\main\java\One.java17
+
+ +

File C:\core-agent\_work\3\s\module-one\src\main\java\One.java

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Error DescriptionLine
Missing package-info.java file.0
Missing a Javadoc comment.1
Line has trailing spaces.2
File contains tab characters (this is the first instance).2
Missing a Javadoc comment.3
Variable 'message' must be private and have accessor methods.3
Line has trailing spaces.4
Method 'foo' is not designed for extension - needs to be abstract, final or empty.5
Missing a Javadoc comment.5
'{' should be on the previous line.7
Must have at least one statement.7
Line has trailing spaces.8
'}' should be on the same line.9
Line has trailing spaces.10
'{' should be on the previous line.11
Must have at least one statement.11
Line has trailing spaces.12
+Back to top +
+ + diff --git a/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/reports/checkstyle/test.xml b/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/reports/checkstyle/test.xml new file mode 100644 index 000000000000..43ef704fb58e --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/reports/checkstyle/test.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + diff --git a/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/reports/pmd/main.html b/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/reports/pmd/main.html new file mode 100644 index 000000000000..d1737023a02c --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/reports/pmd/main.html @@ -0,0 +1,16 @@ +PMD +

PMD report

Problems found

+ + + + + + + + + + + + + +
#FileLineProblem
1C:\Users\bgavril\source\repos\sonar-examples\projects\multi-module\gradle\java-gradle-modules\module-one\src\main\java\One.java7Avoid empty try blocks
2C:\Users\bgavril\source\repos\sonar-examples\projects\multi-module\gradle\java-gradle-modules\module-one\src\main\java\One.java10Avoid empty catch blocks
diff --git a/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/reports/pmd/main.xml b/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/reports/pmd/main.xml new file mode 100644 index 000000000000..d1721a32c8aa --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/reports/pmd/main.xml @@ -0,0 +1,11 @@ + + + + +Avoid empty try blocks + + +Avoid empty catch blocks + + + diff --git a/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/reports/pmd/test.xml b/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/reports/pmd/test.xml new file mode 100644 index 000000000000..337b6b207df7 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/reports/pmd/test.xml @@ -0,0 +1,3 @@ + + + diff --git a/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/tmp/jar/MANIFEST.MF b/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/tmp/jar/MANIFEST.MF new file mode 100644 index 000000000000..59499bce4a2b --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/build/tmp/jar/MANIFEST.MF @@ -0,0 +1,2 @@ +Manifest-Version: 1.0 + diff --git a/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/module-one.iml b/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/module-one.iml new file mode 100644 index 000000000000..a57482cb8c86 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/module-one.iml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/src/main/java/One.java b/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/src/main/java/One.java new file mode 100644 index 000000000000..af75745c3ed5 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/multimodule/module-one/src/main/java/One.java @@ -0,0 +1,16 @@ +public class One { + + public String message = ""; + + public String foo() { + try + { + + } + catch (Exception e) + { + + } + return "foo"; + } +} diff --git a/_generated/GradleV4_Node20/Tests/data/multimodule/module-three/build/reports/findbugs/main.xml b/_generated/GradleV4_Node20/Tests/data/multimodule/module-three/build/reports/findbugs/main.xml new file mode 100644 index 000000000000..537cb01552a9 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/multimodule/module-three/build/reports/findbugs/main.xml @@ -0,0 +1,91 @@ + + + + + C:\TestJavaProject\app\build\classes\main\main\java\TestClassWithErrors.class + C:\TestJavaProject\app\build\classes\main\main\java\TestProgram.class + C:\TestJavaProject\app\src\main\java\TestClassWithErrors.java + C:\TestJavaProject\app\src\main\java\TestProgram.java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_generated/GradleV4_Node20/Tests/data/multimodule/module-three/build/reports/pmd/main.html b/_generated/GradleV4_Node20/Tests/data/multimodule/module-three/build/reports/pmd/main.html new file mode 100644 index 000000000000..8e57b33d9e5f --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/multimodule/module-three/build/reports/pmd/main.html @@ -0,0 +1,16 @@ +PMD +

PMD report

Problems found

+ + + + + + + + + + + + + +
#FileLineProblem
1C:\Users\bgavril\source\repos\sonar-examples\projects\multi-module\gradle\java-gradle-modules\module-two\src\main\java\Two.java3Avoid empty try blocks
2C:\Users\bgavril\source\repos\sonar-examples\projects\multi-module\gradle\java-gradle-modules\module-two\src\main\java\Two.java5Avoid empty catch blocks
diff --git a/_generated/GradleV4_Node20/Tests/data/multimodule/module-three/build/reports/pmd/main.xml b/_generated/GradleV4_Node20/Tests/data/multimodule/module-three/build/reports/pmd/main.xml new file mode 100644 index 000000000000..bfc857cdf5a8 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/multimodule/module-three/build/reports/pmd/main.xml @@ -0,0 +1,3 @@ + + + diff --git a/_generated/GradleV4_Node20/Tests/data/multimodule/module-three/module-two.iml b/_generated/GradleV4_Node20/Tests/data/multimodule/module-three/module-two.iml new file mode 100644 index 000000000000..35c3bcbeee3c --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/multimodule/module-three/module-two.iml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_generated/GradleV4_Node20/Tests/data/multimodule/module-three/src/main/java/Two.java b/_generated/GradleV4_Node20/Tests/data/multimodule/module-three/src/main/java/Two.java new file mode 100644 index 000000000000..648ce40f8d96 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/multimodule/module-three/src/main/java/Two.java @@ -0,0 +1,10 @@ +public class Two { + public String foo() { + try { + + } catch (Exception e){ + + } + return "foo"; + } +} diff --git a/_generated/GradleV4_Node20/Tests/data/multimodule/module-two/build/reports/checkstyle/main.html b/_generated/GradleV4_Node20/Tests/data/multimodule/module-two/build/reports/checkstyle/main.html new file mode 100644 index 000000000000..e69de29bb2d1 diff --git a/_generated/GradleV4_Node20/Tests/data/multimodule/module-two/build/reports/checkstyle/main.xml b/_generated/GradleV4_Node20/Tests/data/multimodule/module-two/build/reports/checkstyle/main.xml new file mode 100644 index 000000000000..9fef3275b50f --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/multimodule/module-two/build/reports/checkstyle/main.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/_generated/GradleV4_Node20/Tests/data/multimodule/module-two/module-two.iml b/_generated/GradleV4_Node20/Tests/data/multimodule/module-two/module-two.iml new file mode 100644 index 000000000000..35c3bcbeee3c --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/multimodule/module-two/module-two.iml @@ -0,0 +1,18 @@ + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/_generated/GradleV4_Node20/Tests/data/multimodule/module-two/src/main/java/Two.java b/_generated/GradleV4_Node20/Tests/data/multimodule/module-two/src/main/java/Two.java new file mode 100644 index 000000000000..648ce40f8d96 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/multimodule/module-two/src/main/java/Two.java @@ -0,0 +1,10 @@ +public class Two { + public String foo() { + try { + + } catch (Exception e){ + + } + return "foo"; + } +} diff --git a/_generated/GradleV4_Node20/Tests/data/singlemodule-noviolations/build/reports/checkstyle/main.xml b/_generated/GradleV4_Node20/Tests/data/singlemodule-noviolations/build/reports/checkstyle/main.xml new file mode 100644 index 000000000000..9fef3275b50f --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/singlemodule-noviolations/build/reports/checkstyle/main.xml @@ -0,0 +1,5 @@ + + + + + diff --git a/_generated/GradleV4_Node20/Tests/data/singlemodule-noviolations/build/reports/findbugs/main.xml b/_generated/GradleV4_Node20/Tests/data/singlemodule-noviolations/build/reports/findbugs/main.xml new file mode 100644 index 000000000000..bb547e34637b --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/singlemodule-noviolations/build/reports/findbugs/main.xml @@ -0,0 +1,33 @@ + + + + + >C:\TestJavaProject\app\build\classes\main\main\java\TestClassWithErrors.class + >C:\TestJavaProject\app\build\classes\main\main\java\TestProgram.class + >C:\TestJavaProject\app\src\main\java\TestClassWithErrors.java + >C:\TestJavaProject\app\src\main\java\TestProgram.java + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_generated/GradleV4_Node20/Tests/data/singlemodule-noviolations/build/reports/pmd/main.xml b/_generated/GradleV4_Node20/Tests/data/singlemodule-noviolations/build/reports/pmd/main.xml new file mode 100644 index 000000000000..bfc857cdf5a8 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/singlemodule-noviolations/build/reports/pmd/main.xml @@ -0,0 +1,3 @@ + + + diff --git a/_generated/GradleV4_Node20/Tests/data/singlemodule/build/classes/main/com/mycompany/app/App.class b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/classes/main/com/mycompany/app/App.class new file mode 100644 index 000000000000..96c85cb54920 Binary files /dev/null and b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/classes/main/com/mycompany/app/App.class differ diff --git a/_generated/GradleV4_Node20/Tests/data/singlemodule/build/classes/test/com/mycompany/app/AppTest.class b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/classes/test/com/mycompany/app/AppTest.class new file mode 100644 index 000000000000..a206fe2bbc8a Binary files /dev/null and b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/classes/test/com/mycompany/app/AppTest.class differ diff --git a/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/checkstyle/main.html b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/checkstyle/main.html new file mode 100644 index 000000000000..3c947f668d37 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/checkstyle/main.html @@ -0,0 +1,141 @@ + + + + + + + + + + + + + + +
+

CheckStyle Audit

+
Designed for use with CheckStyle and Ant.
+
+

Summary

+ + + + + + + +
FilesErrors
114
+
+

Files

+ + + + + + + +
NameErrors
C:\core-agent\_work\2\s\src\main\java\com\mycompany\app\App.java14
+
+ +

File C:\core-agent\_work\2\s\src\main\java\com\mycompany\app\App.java

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Error DescriptionLine
Missing package-info.java file.0
Line has trailing spaces.7
Utility classes should not have a public or default constructor.7
'{' should be on the previous line.8
Missing a Javadoc comment.9
'(' is followed by whitespace.9
Parameter args should be final.9
')' is preceded with whitespace.9
'{' should be on the previous line.10
'(' is followed by whitespace.11
')' is preceded with whitespace.11
Missing a Javadoc comment.14
Name 'Foo' must match pattern '^[a-z][a-zA-Z0-9]*$'.14
'{' should be on the previous line.15
+Back to top +
+ + diff --git a/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/checkstyle/main.xml b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/checkstyle/main.xml new file mode 100644 index 000000000000..76af7dee117b --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/checkstyle/main.xml @@ -0,0 +1,19 @@ + + + + + + + + + + + + + + + + + + + diff --git a/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/checkstyle/test.html b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/checkstyle/test.html new file mode 100644 index 000000000000..84ee41ebb821 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/checkstyle/test.html @@ -0,0 +1,162 @@ + + + + + + + + + + + + + + +
+

CheckStyle Audit

+
Designed for use with CheckStyle and Ant.
+
+

Summary

+ + + + + + + +
FilesErrors
121
+
+

Files

+ + + + + + + +
NameErrors
C:\core-agent\_work\2\s\src\test\java\com\mycompany\app\AppTest.java21
+
+ +

File C:\core-agent\_work\2\s\src\test\java\com\mycompany\app\AppTest.java

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
Error DescriptionLine
Missing package-info.java file.0
Line has trailing spaces.10
'{' should be on the previous line.12
First sentence should end with a period.13
'(' is followed by whitespace.18
Parameter testName should be final.18
')' is preceded with whitespace.18
'{' should be on the previous line.19
'(' is followed by whitespace.20
')' is preceded with whitespace.20
'{' should be on the previous line.27
'(' is followed by whitespace.28
')' is preceded with whitespace.28
First sentence should end with a period.31
Method 'testApp' is not designed for extension - needs to be abstract, final or empty.34
'{' should be on the previous line.35
'(' is followed by whitespace.36
')' is preceded with whitespace.36
Method 'testApp2' is not designed for extension - needs to be abstract, final or empty.39
Missing a Javadoc comment.39
'{' should be on the previous line.40
+Back to top +
+ + diff --git a/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/checkstyle/test.xml b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/checkstyle/test.xml new file mode 100644 index 000000000000..1e40ccaa4642 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/checkstyle/test.xml @@ -0,0 +1,26 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/findbugs/main.xml b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/findbugs/main.xml new file mode 100644 index 000000000000..537cb01552a9 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/findbugs/main.xml @@ -0,0 +1,91 @@ + + + + + C:\TestJavaProject\app\build\classes\main\main\java\TestClassWithErrors.class + C:\TestJavaProject\app\build\classes\main\main\java\TestProgram.class + C:\TestJavaProject\app\src\main\java\TestClassWithErrors.java + C:\TestJavaProject\app\src\main\java\TestProgram.java + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/pmd/main.html b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/pmd/main.html new file mode 100644 index 000000000000..364febe49ae3 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/pmd/main.html @@ -0,0 +1,16 @@ +PMD +

PMD report

Problems found

+ + + + + + + + + + + + + +
#FileLineProblem
1C:\Users\bgavril\source\repos\JavaGradle\src\main\java\com\mycompany\app\App.java17Avoid empty try blocks
2C:\Users\bgavril\source\repos\JavaGradle\src\main\java\com\mycompany\app\App.java20Avoid empty catch blocks
diff --git a/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/pmd/main.xml b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/pmd/main.xml new file mode 100644 index 000000000000..629db389aad3 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/pmd/main.xml @@ -0,0 +1,11 @@ + + + + +Avoid empty try blocks + + +Avoid empty catch blocks + + + diff --git a/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/pmd/test.html b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/pmd/test.html new file mode 100644 index 000000000000..d574f1d464dc --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/pmd/test.html @@ -0,0 +1,16 @@ +PMD +

PMD report

Problems found

+ + + + + + + + + + + + + +
#FileLineProblem
1C:\Users\bgavril\source\repos\JavaGradle\src\test\java\com\mycompany\app\AppTest.java36Avoid empty try blocks
2C:\Users\bgavril\source\repos\JavaGradle\src\test\java\com\mycompany\app\AppTest.java39Avoid empty catch blocks
diff --git a/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/pmd/test.xml b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/pmd/test.xml new file mode 100644 index 000000000000..a0de2cf75ed6 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/pmd/test.xml @@ -0,0 +1,11 @@ + + + + +Avoid empty try blocks + + +Avoid empty catch blocks + + + diff --git a/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/tests/classes/com.mycompany.app.AppTest.html b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/tests/classes/com.mycompany.app.AppTest.html new file mode 100644 index 000000000000..9db7109417ac --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/tests/classes/com.mycompany.app.AppTest.html @@ -0,0 +1,111 @@ + + + + + +Test results - Class com.mycompany.app.AppTest + + + + + +
+

Class com.mycompany.app.AppTest

+ +
+ + + + + +
+
+ + + + + + + +
+
+
2
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.006s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Tests

+ + + + + + + + + + + + + + + + + + +
TestDurationResult
testApp0.004spassed
testApp20.002spassed
+
+
+

Standard output

+ +
Foo
+
+
+
+
+ +
+ + diff --git a/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/tests/css/base-style.css b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/tests/css/base-style.css new file mode 100644 index 000000000000..4afa73e3ddcf --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/tests/css/base-style.css @@ -0,0 +1,179 @@ + +body { + margin: 0; + padding: 0; + font-family: sans-serif; + font-size: 12pt; +} + +body, a, a:visited { + color: #303030; +} + +#content { + padding-left: 50px; + padding-right: 50px; + padding-top: 30px; + padding-bottom: 30px; +} + +#content h1 { + font-size: 160%; + margin-bottom: 10px; +} + +#footer { + margin-top: 100px; + font-size: 80%; + white-space: nowrap; +} + +#footer, #footer a { + color: #a0a0a0; +} + +#line-wrapping-toggle { + vertical-align: middle; +} + +#label-for-line-wrapping-toggle { + vertical-align: middle; +} + +ul { + margin-left: 0; +} + +h1, h2, h3 { + white-space: nowrap; +} + +h2 { + font-size: 120%; +} + +ul.tabLinks { + padding-left: 0; + padding-top: 10px; + padding-bottom: 10px; + overflow: auto; + min-width: 800px; + width: auto !important; + width: 800px; +} + +ul.tabLinks li { + float: left; + height: 100%; + list-style: none; + padding-left: 10px; + padding-right: 10px; + padding-top: 5px; + padding-bottom: 5px; + margin-bottom: 0; + -moz-border-radius: 7px; + border-radius: 7px; + margin-right: 25px; + border: solid 1px #d4d4d4; + background-color: #f0f0f0; +} + +ul.tabLinks li:hover { + background-color: #fafafa; +} + +ul.tabLinks li.selected { + background-color: #c5f0f5; + border-color: #c5f0f5; +} + +ul.tabLinks a { + font-size: 120%; + display: block; + outline: none; + text-decoration: none; + margin: 0; + padding: 0; +} + +ul.tabLinks li h2 { + margin: 0; + padding: 0; +} + +div.tab { +} + +div.selected { + display: block; +} + +div.deselected { + display: none; +} + +div.tab table { + min-width: 350px; + width: auto !important; + width: 350px; + border-collapse: collapse; +} + +div.tab th, div.tab table { + border-bottom: solid #d0d0d0 1px; +} + +div.tab th { + text-align: left; + white-space: nowrap; + padding-left: 6em; +} + +div.tab th:first-child { + padding-left: 0; +} + +div.tab td { + white-space: nowrap; + padding-left: 6em; + padding-top: 5px; + padding-bottom: 5px; +} + +div.tab td:first-child { + padding-left: 0; +} + +div.tab td.numeric, div.tab th.numeric { + text-align: right; +} + +span.code { + display: inline-block; + margin-top: 0em; + margin-bottom: 1em; +} + +span.code pre { + font-size: 11pt; + padding-top: 10px; + padding-bottom: 10px; + padding-left: 10px; + padding-right: 10px; + margin: 0; + background-color: #f7f7f7; + border: solid 1px #d0d0d0; + min-width: 700px; + width: auto !important; + width: 700px; +} + +span.wrapped pre { + word-wrap: break-word; + white-space: pre-wrap; + word-break: break-all; +} + +label.hidden { + display: none; +} \ No newline at end of file diff --git a/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/tests/css/style.css b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/tests/css/style.css new file mode 100644 index 000000000000..3dc4913e7a07 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/tests/css/style.css @@ -0,0 +1,84 @@ + +#summary { + margin-top: 30px; + margin-bottom: 40px; +} + +#summary table { + border-collapse: collapse; +} + +#summary td { + vertical-align: top; +} + +.breadcrumbs, .breadcrumbs a { + color: #606060; +} + +.infoBox { + width: 110px; + padding-top: 15px; + padding-bottom: 15px; + text-align: center; +} + +.infoBox p { + margin: 0; +} + +.counter, .percent { + font-size: 120%; + font-weight: bold; + margin-bottom: 8px; +} + +#duration { + width: 125px; +} + +#successRate, .summaryGroup { + border: solid 2px #d0d0d0; + -moz-border-radius: 10px; + border-radius: 10px; +} + +#successRate { + width: 140px; + margin-left: 35px; +} + +#successRate .percent { + font-size: 180%; +} + +.success, .success a { + color: #008000; +} + +div.success, #successRate.success { + background-color: #bbd9bb; + border-color: #008000; +} + +.failures, .failures a { + color: #b60808; +} + +.skipped, .skipped a { + color: #c09853; +} + +div.failures, #successRate.failures { + background-color: #ecdada; + border-color: #b60808; +} + +ul.linkList { + padding-left: 0; +} + +ul.linkList li { + list-style: none; + margin-bottom: 5px; +} diff --git a/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/tests/index.html b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/tests/index.html new file mode 100644 index 000000000000..3eb82e7345c4 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/tests/index.html @@ -0,0 +1,132 @@ + + + + + +Test results - Test Summary + + + + + +
+

Test Summary

+
+ + + + + +
+
+ + + + + + + +
+
+
2
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.006s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Packages

+ + + + + + + + + + + + + + + + + + + + + +
PackageTestsFailuresIgnoredDurationSuccess rate
+com.mycompany.app +2000.006s100%
+
+
+

Classes

+ + + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+com.mycompany.app.AppTest +2000.006s100%
+
+
+ +
+ + diff --git a/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/tests/packages/com.mycompany.app.html b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/tests/packages/com.mycompany.app.html new file mode 100644 index 000000000000..ce67bd0eec06 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/singlemodule/build/reports/tests/packages/com.mycompany.app.html @@ -0,0 +1,103 @@ + + + + + +Test results - Package com.mycompany.app + + + + + +
+

Package com.mycompany.app

+ +
+ + + + + +
+
+ + + + + + + +
+
+
2
+

tests

+
+
+
+
0
+

failures

+
+
+
+
0
+

ignored

+
+
+
+
0.006s
+

duration

+
+
+
+
+
+
100%
+

successful

+
+
+
+
+ +
+

Classes

+ + + + + + + + + + + + + + + + + + + +
ClassTestsFailuresIgnoredDurationSuccess rate
+AppTest +2000.006s100%
+
+
+ +
+ + diff --git a/_generated/GradleV4_Node20/Tests/data/singlemodule/src/main/java/com/mycompany/app/App.java b/_generated/GradleV4_Node20/Tests/data/singlemodule/src/main/java/com/mycompany/app/App.java new file mode 100644 index 000000000000..cf44f0663086 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/singlemodule/src/main/java/com/mycompany/app/App.java @@ -0,0 +1,34 @@ +package com.mycompany.app; + +/** + * Hello world! + * + */ +public class App +{ + public static void main( String[] args ) + { + System.out.println( "Hello World!" ); + } + + public static void Foo() + { + try + { + + } + catch (Exception e) + { + + } + + String s = "My short name s"; + + System.out.println("Foo"); + } + + public static void Boo() + { + System.out.println("Boo"); + } +} diff --git a/_generated/GradleV4_Node20/Tests/data/singlemodule/src/test/java/com/mycompany/app/AppTest.java b/_generated/GradleV4_Node20/Tests/data/singlemodule/src/test/java/com/mycompany/app/AppTest.java new file mode 100644 index 000000000000..25c4beebd0f0 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/singlemodule/src/test/java/com/mycompany/app/AppTest.java @@ -0,0 +1,45 @@ +package com.mycompany.app; + +import junit.framework.Test; +import junit.framework.TestCase; +import junit.framework.TestSuite; + +/** + * Unit test for simple App. + */ +public class AppTest + extends TestCase +{ + /** + * Create the test case + * + * @param testName name of the test case + */ + public AppTest( String testName ) + { + super( testName ); + } + + /** + * @return the suite of tests being tested + */ + public static Test suite() + { + return new TestSuite( AppTest.class ); + } + + /** + * Rigourous Test :-) + */ + public void testApp() + { + assertTrue( true ); + } + + public void testApp2() + { + App.Foo(); + + assertTrue(true); + } +} diff --git a/_generated/GradleV4_Node20/Tests/data/taskreport-invalid/build/sonar/report-task.txt b/_generated/GradleV4_Node20/Tests/data/taskreport-invalid/build/sonar/report-task.txt new file mode 100644 index 000000000000..d6f61190a2cc --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/taskreport-invalid/build/sonar/report-task.txt @@ -0,0 +1 @@ +this is not a report-task.txt file \ No newline at end of file diff --git a/_generated/GradleV4_Node20/Tests/data/taskreport-valid/build/sonar/report-task.txt b/_generated/GradleV4_Node20/Tests/data/taskreport-valid/build/sonar/report-task.txt new file mode 100644 index 000000000000..9f5e949211bc --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/data/taskreport-valid/build/sonar/report-task.txt @@ -0,0 +1,5 @@ +projectKey=test +serverUrl=http://sonarqubeserver:9000 +dashboardUrl=http://sonarqubeserver:9000/dashboard/index/test +ceTaskId=asdfghjklqwertyuiopz +ceTaskUrl=http://sonarqubeserver:9000/api/ce/task?id=asdfghjklqwertyuiopz \ No newline at end of file diff --git a/_generated/GradleV4_Node20/Tests/package-lock.json b/_generated/GradleV4_Node20/Tests/package-lock.json new file mode 100644 index 000000000000..ba417282e26e --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/package-lock.json @@ -0,0 +1,420 @@ +{ + "name": "Agent.Tasks.Gradle", + "version": "2.139.1", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "Agent.Tasks.Gradle", + "version": "2.139.1", + "license": "MIT", + "devDependencies": { + "@types/mocha": "5.2.5", + "azure-pipelines-task-lib": "^4.13.0" + } + }, + "node_modules/@types/mocha": { + "version": "5.2.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/mocha/-/mocha-5.2.5.tgz", + "integrity": "sha512-lAVp+Kj54ui/vLUFxsJTMtWvZraZxum3w3Nwkble2dNuV5VnPA+Mi2oGX9XYJAaIvZi3tn3cbjS/qcJXRb6Bww==", + "dev": true + }, + "node_modules/adm-zip": { + "version": "0.5.14", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/adm-zip/-/adm-zip-0.5.14.tgz", + "integrity": "sha512-DnyqqifT4Jrcvb8USYjp6FHtBpEIz1mnXu6pTRHZ0RL69LbQYiO+0lDFg5+OKA7U29oWSs3a/i8fhn8ZcceIWg==", + "dev": true, + "engines": { + "node": ">=12.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dev": true, + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/azure-pipelines-task-lib": { + "version": "4.13.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.13.0.tgz", + "integrity": "sha512-KVguui31If98vgokNepHUxE3/D8UFB4FHV1U6XxjGOkgxxwKxbupC3knVnEiZA/hNl7X+vmj9KrYOx79iwmezQ==", + "dev": true, + "dependencies": { + "adm-zip": "^0.5.10", + "minimatch": "3.0.5", + "nodejs-file-downloader": "^4.11.1", + "q": "^1.5.1", + "semver": "^5.1.0", + "shelljs": "^0.8.5", + "uuid": "^3.0.1" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/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/concat-map": { + "version": "0.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/debug/-/debug-4.3.5.tgz", + "integrity": "sha512-pt0bNEmneDIvdL1Xsd9oDQ/wrQRkXDT4AUWlNZNPKvW5x/jyO9VFXkJUP07vQ2upmw5PlaITaPKc31jK13V+jg==", + "dev": true, + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/function-bind": { + "version": "1.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/function-bind/-/function-bind-1.1.1.tgz", + "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==", + "dev": true + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "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/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dev": true, + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "dev": true, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-core-module": { + "version": "2.9.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-core-module/-/is-core-module-2.9.0.tgz", + "integrity": "sha512-+5FPy5PnwmO3lvfMb0AsoPaBG+5KHUI0wYFXOtYPnVVVspTFUuMZNfNaNVRt3FZadstu2c8x23vykRW/NBoU6A==", + "dev": true, + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "dev": true, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dev": true, + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", + "dev": true + }, + "node_modules/nodejs-file-downloader": { + "version": "4.13.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/nodejs-file-downloader/-/nodejs-file-downloader-4.13.0.tgz", + "integrity": "sha512-nI2fKnmJWWFZF6SgMPe1iBodKhfpztLKJTtCtNYGhm/9QXmWa/Pk9Sv00qHgzEvNLe1x7hjGDRor7gcm/ChaIQ==", + "dev": true, + "dependencies": { + "follow-redirects": "^1.15.6", + "https-proxy-agent": "^5.0.0", + "mime-types": "^2.1.27", + "sanitize-filename": "^1.6.3" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/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://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", + "dev": true, + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dev": true, + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.8.1", + "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/sanitize-filename": { + "version": "1.6.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dev": true, + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "dev": true, + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dev": true, + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/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/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "dev": true, + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, + "node_modules/utf8-byte-length": { + "version": "1.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==", + "dev": true + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "dev": true, + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", + "dev": true + } + } +} diff --git a/_generated/GradleV4_Node20/Tests/package.json b/_generated/GradleV4_Node20/Tests/package.json new file mode 100644 index 000000000000..812f3a83f5c6 --- /dev/null +++ b/_generated/GradleV4_Node20/Tests/package.json @@ -0,0 +1,14 @@ +{ + "name": "Agent.Tasks.Gradle", + "version": "2.139.1", + "author": "Microsoft Corporation", + "description": "Build with Gradle", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/vso-agent-tasks/issues" + }, + "devDependencies": { + "@types/mocha": "5.2.5", + "azure-pipelines-task-lib": "^4.13.0" + } +} diff --git a/_generated/GradleV4_Node20/ThirdPartyNotice.txt b/_generated/GradleV4_Node20/ThirdPartyNotice.txt new file mode 100644 index 000000000000..f5eb449290f0 --- /dev/null +++ b/_generated/GradleV4_Node20/ThirdPartyNotice.txt @@ -0,0 +1,3644 @@ + +THIRD-PARTY SOFTWARE NOTICES AND INFORMATION +Do Not Translate or Localize + +This Azure DevOps extension (GradleV2) is based on or incorporates material from the projects listed below (Third Party IP). The original copyright notice and the license under which Microsoft received such Third Party IP, are set forth below. Such licenses and notices are provided for informational purposes only. Microsoft licenses the Third Party IP to you under the licensing terms for the Azure DevOps extension. Microsoft reserves all other rights not expressly granted under this agreement, whether by implication, estoppel or otherwise. + +1. @types/mocha (git+https://github.com/DefinitelyTyped/DefinitelyTyped.git) +2. @types/node (git+https://github.com/DefinitelyTyped/DefinitelyTyped.git) +3. @types/q (git+https://github.com/DefinitelyTyped/DefinitelyTyped.git) +4. ajv (git+https://github.com/epoberezkin/ajv.git) +5. asn1 (git://github.com/joyent/node-asn1.git) +6. assert-plus (git+https://github.com/mcavage/node-assert-plus.git) +7. asynckit (git+https://github.com/alexindigo/asynckit.git) +8. aws-sign2 (git+https://github.com/mikeal/aws-sign.git) +9. aws4 (git+https://github.com/mhart/aws4.git) +10. balanced-match (git://github.com/juliangruber/balanced-match.git) +11. balanced-match (git://github.com/juliangruber/balanced-match.git) +12. bcrypt-pbkdf (git://github.com/joyent/node-bcrypt-pbkdf.git) +13. boolbase (git+https://github.com/fb55/boolbase.git) +14. brace-expansion (git://github.com/juliangruber/brace-expansion.git) +15. brace-expansion (git://github.com/juliangruber/brace-expansion.git) +16. caseless (git+https://github.com/mikeal/caseless.git) +17. cheerio (git://github.com/cheeriojs/cheerio.git) +18. co (git+https://github.com/tj/co.git) +19. combined-stream (git://github.com/felixge/node-combined-stream.git) +20. combined-stream (git://github.com/felixge/node-combined-stream.git) +21. concat-map (git://github.com/substack/node-concat-map.git) +22. concat-map (git://github.com/substack/node-concat-map.git) +23. core-util-is (git://github.com/isaacs/core-util-is.git) +24. css-select (git://github.com/fb55/css-select.git) +25. css-what (git+https://github.com/fb55/css-what.git) +26. dashdash (git://github.com/trentm/node-dashdash.git) +27. delayed-stream (git://github.com/felixge/node-delayed-stream.git) +28. dom-serializer (git://github.com/cheeriojs/dom-renderer.git) +29. domelementtype (git://github.com/FB55/domelementtype.git) +30. domelementtype (git://github.com/FB55/domelementtype.git) +31. domhandler (git://github.com/fb55/DomHandler.git) +32. domutils (git://github.com/FB55/domutils.git) +33. ecc-jsbn (git+https://github.com/quartzjer/ecc-jsbn.git) +34. entities (git://github.com/fb55/node-entities.git) +35. extend (git+https://github.com/justmoon/node-extend.git) +36. extsprintf (git://github.com/davepacheco/node-extsprintf.git) +37. fast-deep-equal (git+https://github.com/epoberezkin/fast-deep-equal.git) +38. fast-json-stable-stringify (git://github.com/epoberezkin/fast-json-stable-stringify.git) +39. forever-agent (git+https://github.com/mikeal/forever-agent.git) +40. form-data (git://github.com/form-data/form-data.git) +41. fs-extra (git+https://github.com/jprichardson/node-fs-extra.git) +42. fs.realpath (git+https://github.com/isaacs/fs.realpath.git) +43. getpass (git+https://github.com/arekinath/node-getpass.git) +44. glob (git://github.com/isaacs/node-glob.git) +45. graceful-fs (git+https://github.com/isaacs/node-graceful-fs.git) +46. har-schema (git+https://github.com/ahmadnassri/har-schema.git) +47. har-validator (git+https://github.com/ahmadnassri/har-validator.git) +48. htmlparser2 (git://github.com/fb55/htmlparser2.git) +49. http-signature (git://github.com/joyent/node-http-signature.git) +50. inflight (git+https://github.com/npm/inflight.git) +51. inherits (git://github.com/isaacs/inherits.git) +52. is-typedarray (git://github.com/hughsk/is-typedarray.git) +53. isarray (git://github.com/juliangruber/isarray.git) +54. isstream (git+https://github.com/rvagg/isstream.git) +55. js-base64 (git://github.com/dankogai/js-base64.git) +56. jsbn (git+https://github.com/andyperlitch/jsbn.git) +57. json-schema (git+ssh://git@github.com/kriszyp/json-schema.git) +58. json-schema-traverse (git+https://github.com/epoberezkin/json-schema-traverse.git) +59. json-stringify-safe (git://github.com/isaacs/json-stringify-safe.git) +60. jsonfile (git+ssh://git@github.com/jprichardson/node-jsonfile.git) +61. jsprim (git://github.com/joyent/node-jsprim.git) +62. klaw (git+https://github.com/jprichardson/node-klaw.git) +63. lodash.assignin (git+https://github.com/lodash/lodash.git) +64. lodash.bind (git+https://github.com/lodash/lodash.git) +65. lodash.defaults (git+https://github.com/lodash/lodash.git) +66. lodash.filter (git+https://github.com/lodash/lodash.git) +67. lodash.flatten (git+https://github.com/lodash/lodash.git) +68. lodash.foreach (git+https://github.com/lodash/lodash.git) +69. lodash.map (git+https://github.com/lodash/lodash.git) +70. lodash.merge (git+https://github.com/lodash/lodash.git) +71. lodash.pick (git+https://github.com/lodash/lodash.git) +72. lodash.reduce (git+https://github.com/lodash/lodash.git) +73. lodash.reject (git+https://github.com/lodash/lodash.git) +74. lodash.some (git+https://github.com/lodash/lodash.git) +75. mime-db (git+https://github.com/jshttp/mime-db.git) +76. mime-types (git+https://github.com/jshttp/mime-types.git) +77. minimatch (git://github.com/isaacs/minimatch.git) +78. minimatch (git://github.com/isaacs/minimatch.git) +79. mockery (git://github.com/mfncooper/mockery.git) +80. mockery (git://github.com/mfncooper/mockery.git) +81. node-uuid (git+https://github.com/broofa/node-uuid.git) +82. nth-check (git+https://github.com/fb55/nth-check.git) +83. oauth-sign (git+https://github.com/mikeal/oauth-sign.git) +84. once (git://github.com/isaacs/once.git) +85. os (git+https://github.com/DiegoRBaquero/node-os.git) +86. path-is-absolute (git+https://github.com/sindresorhus/path-is-absolute.git) +87. performance-now (git://github.com/braveg1rl/performance-now.git) +88. process-nextick-args (git+https://github.com/calvinmetcalf/process-nextick-args.git) +89. psl (git+ssh://git@github.com/wrangr/psl.git) +90. punycode (git+https://github.com/bestiejs/punycode.js.git) +91. q (git://github.com/kriskowal/q.git) +92. q (git://github.com/kriskowal/q.git) +93. qs (git+https://github.com/ljharb/qs.git) +94. readable-stream (git://github.com/nodejs/readable-stream.git) +95. request (git+https://github.com/request/request.git) +96. rimraf (git://github.com/isaacs/rimraf.git) +97. safe-buffer (git://github.com/feross/safe-buffer.git) +98. safer-buffer (git+https://github.com/ChALkeR/safer-buffer.git) +99. sax (git://github.com/isaacs/sax-js.git) +100. semver (git+https://github.com/npm/node-semver.git) +101. semver (git+https://github.com/npm/node-semver.git) +102. semver-compare (git://github.com/substack/semver-compare.git) +103. shelljs (git://github.com/arturadib/shelljs.git) +104. shelljs (git://github.com/arturadib/shelljs.git) +105. sshpk (git+https://github.com/arekinath/node-sshpk.git) +106. string_decoder (git://github.com/nodejs/string_decoder.git) +107. strip-bom (git+https://github.com/sindresorhus/strip-bom.git) +108. tough-cookie (git://github.com/salesforce/tough-cookie.git) +109. tunnel (git+https://github.com/koichik/node-tunnel.git) +110. tunnel-agent (git+https://github.com/mikeal/tunnel-agent.git) +111. tweetnacl (git+https://github.com/dchest/tweetnacl-js.git) +112. typed-rest-client (git+https://github.com/Microsoft/typed-rest-client.git) +113. typed-rest-client (git+https://github.com/Microsoft/typed-rest-client.git) +114. underscore (git://github.com/jashkenas/underscore.git) +115. util-deprecate (git://github.com/TooTallNate/util-deprecate.git) +116. uuid (git+https://github.com/kelektiv/node-uuid.git) +117. uuid (git+https://github.com/kelektiv/node-uuid.git) +118. verror (git://github.com/davepacheco/node-verror.git) +119. vso-node-api (git+https://github.com/Microsoft/vso-node-api.git) +120. vsts-task-lib (git+https://github.com/Microsoft/vsts-task-lib.git) +121. vsts-task-lib (git+https://github.com/Microsoft/vsts-task-lib.git) +122. vsts-task-lib (git+https://github.com/Microsoft/vsts-task-lib.git) +123. vsts-task-tool-lib (git+https://github.com/microsoft/vsts-task-installer-lib.git) +124. wrappy (git+https://github.com/npm/wrappy.git) +125. xml2js (git+https://github.com/Leonidas-from-XIV/node-xml2js.git) +126. xmlbuilder (git://github.com/oozcitak/xmlbuilder-js.git) + + +%% @types/mocha NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE +========================================= +END OF @types/mocha NOTICES, INFORMATION, AND LICENSE + +%% @types/node NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE +========================================= +END OF @types/node NOTICES, INFORMATION, AND LICENSE + +%% @types/q NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE +========================================= +END OF @types/q NOTICES, INFORMATION, AND LICENSE + +%% ajv NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2015 Evgeny Poberezkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF ajv NOTICES, INFORMATION, AND LICENSE + +%% asn1 NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2011 Mark Cavage, All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE +========================================= +END OF asn1 NOTICES, INFORMATION, AND LICENSE + +%% assert-plus NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +NO LICENSE FOUND +========================================= +END OF assert-plus NOTICES, INFORMATION, AND LICENSE + +%% asynckit NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2016 Alex Indigo + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF asynckit NOTICES, INFORMATION, AND LICENSE + +%% aws-sign2 NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Apache License + +Version 2.0, January 2004 + +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of this License; and + +You must cause any modified files to carry prominent notices stating that You changed the files; and + +You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + +If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS +========================================= +END OF aws-sign2 NOTICES, INFORMATION, AND LICENSE + +%% aws4 NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright 2013 Michael Hart (michael.hart.au@gmail.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF aws4 NOTICES, INFORMATION, AND LICENSE + +%% balanced-match NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF balanced-match NOTICES, INFORMATION, AND LICENSE + +%% balanced-match NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +(MIT) + +Copyright (c) 2013 Julian Gruber <julian@juliangruber.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies +of the Software, and to permit persons to whom the Software is furnished to do +so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF balanced-match NOTICES, INFORMATION, AND LICENSE + +%% bcrypt-pbkdf NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The Blowfish portions are under the following license: + +Blowfish block cipher for OpenBSD +Copyright 1997 Niels Provos +All rights reserved. + +Implementation advice by David Mazieres . + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions +are met: +1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. +2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. +3. The name of the author may not be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE AUTHOR ``AS IS'' AND ANY EXPRESS OR +IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES +OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. +IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY DIRECT, INDIRECT, +INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT +NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, +DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY +THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + + +The bcrypt_pbkdf portions are under the following license: + +Copyright (c) 2013 Ted Unangst + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + + + +Performance improvements (Javascript-specific): + +Copyright 2016, Joyent Inc +Author: Alex Wilson + +Permission to use, copy, modify, and distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF bcrypt-pbkdf NOTICES, INFORMATION, AND LICENSE + +%% boolbase NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +NO LICENSE FOUND +========================================= +END OF boolbase NOTICES, INFORMATION, AND LICENSE + +%% brace-expansion NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + +Copyright (c) 2013 Julian Gruber + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF brace-expansion NOTICES, INFORMATION, AND LICENSE + +%% brace-expansion NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + +Copyright (c) 2013 Julian Gruber + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF brace-expansion NOTICES, INFORMATION, AND LICENSE + +%% caseless NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Apache License +Version 2.0, January 2004 +http://www.apache.org/licenses/ +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION +1. Definitions. +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: +You must give any other recipients of the Work or Derivative Works a copy of this License; and +You must cause any modified files to carry prominent notices stating that You changed the files; and +You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and +If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. +END OF TERMS AND CONDITIONS +========================================= +END OF caseless NOTICES, INFORMATION, AND LICENSE + +%% cheerio NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +NO LICENSE FOUND +========================================= +END OF cheerio NOTICES, INFORMATION, AND LICENSE + +%% co NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014 TJ Holowaychuk <tj@vision-media.ca> + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF co NOTICES, INFORMATION, AND LICENSE + +%% combined-stream NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2011 Debuggable Limited + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF combined-stream NOTICES, INFORMATION, AND LICENSE + +%% combined-stream NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2011 Debuggable Limited + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF combined-stream NOTICES, INFORMATION, AND LICENSE + +%% concat-map NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF concat-map NOTICES, INFORMATION, AND LICENSE + +%% concat-map NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF concat-map NOTICES, INFORMATION, AND LICENSE + +%% core-util-is NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright Node.js contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +========================================= +END OF core-util-is NOTICES, INFORMATION, AND LICENSE + +%% css-select NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) Felix Böhm +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF css-select NOTICES, INFORMATION, AND LICENSE + +%% css-what NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) Felix Böhm +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF css-what NOTICES, INFORMATION, AND LICENSE + +%% dashdash NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +# This is the MIT license + +Copyright (c) 2013 Trent Mick. All rights reserved. +Copyright (c) 2013 Joyent Inc. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a +copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be included +in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS +OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF dashdash NOTICES, INFORMATION, AND LICENSE + +%% delayed-stream NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2011 Debuggable Limited + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF delayed-stream NOTICES, INFORMATION, AND LICENSE + +%% dom-serializer NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +License + +(The MIT License) + +Copyright (c) 2014 The cheeriojs contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF dom-serializer NOTICES, INFORMATION, AND LICENSE + +%% domelementtype NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) Felix Böhm +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF domelementtype NOTICES, INFORMATION, AND LICENSE + +%% domelementtype NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) Felix Böhm +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF domelementtype NOTICES, INFORMATION, AND LICENSE + +%% domhandler NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) Felix Böhm +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF domhandler NOTICES, INFORMATION, AND LICENSE + +%% domutils NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) Felix Böhm +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF domutils NOTICES, INFORMATION, AND LICENSE + +%% ecc-jsbn NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 Jeremie Miller + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF ecc-jsbn NOTICES, INFORMATION, AND LICENSE + +%% entities NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) Felix Böhm +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +THIS IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS, +EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF entities NOTICES, INFORMATION, AND LICENSE + +%% extend NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 Stefan Thomas + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF extend NOTICES, INFORMATION, AND LICENSE + +%% extsprintf NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2012, Joyent, Inc. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE +========================================= +END OF extsprintf NOTICES, INFORMATION, AND LICENSE + +%% fast-deep-equal NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + +Copyright (c) 2017 Evgeny Poberezkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF fast-deep-equal NOTICES, INFORMATION, AND LICENSE + +%% fast-json-stable-stringify NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF fast-json-stable-stringify NOTICES, INFORMATION, AND LICENSE + +%% forever-agent NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Apache License + +Version 2.0, January 2004 + +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of this License; and + +You must cause any modified files to carry prominent notices stating that You changed the files; and + +You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + +If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS +========================================= +END OF forever-agent NOTICES, INFORMATION, AND LICENSE + +%% form-data NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2012 Felix Geisendörfer (felix@debuggable.com) and contributors + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN + THE SOFTWARE. +========================================= +END OF form-data NOTICES, INFORMATION, AND LICENSE + +%% fs-extra NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2011-2016 JP Richardson + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files +(the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, + merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF fs-extra NOTICES, INFORMATION, AND LICENSE + +%% fs.realpath NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +---- + +This library bundles a version of the `fs.realpath` and `fs.realpathSync` +methods from Node.js v0.10 under the terms of the Node.js MIT license. + +Node's license follows, also included at the header of `old.js` which contains +the licensed code: + + Copyright Joyent, Inc. and other Node contributors. + + Permission is hereby granted, free of charge, to any person obtaining a + copy of this software and associated documentation files (the "Software"), + to deal in the Software without restriction, including without limitation + the rights to use, copy, modify, merge, publish, distribute, sublicense, + and/or sell copies of the Software, and to permit persons to whom the + Software is furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +========================================= +END OF fs.realpath NOTICES, INFORMATION, AND LICENSE + +%% getpass NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright Joyent, Inc. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +========================================= +END OF getpass NOTICES, INFORMATION, AND LICENSE + +%% glob NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF glob NOTICES, INFORMATION, AND LICENSE + +%% graceful-fs NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter, Ben Noordhuis, and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF graceful-fs NOTICES, INFORMATION, AND LICENSE + +%% har-schema NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2015, Ahmad Nassri + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF har-schema NOTICES, INFORMATION, AND LICENSE + +%% har-validator NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2015, Ahmad Nassri + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF +OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF har-validator NOTICES, INFORMATION, AND LICENSE + +%% htmlparser2 NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright 2010, 2011, Chris Winberry . All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +========================================= +END OF htmlparser2 NOTICES, INFORMATION, AND LICENSE + +%% http-signature NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright Joyent, Inc. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +========================================= +END OF http-signature NOTICES, INFORMATION, AND LICENSE + +%% inflight NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF inflight NOTICES, INFORMATION, AND LICENSE + +%% inherits NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES WITH +REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND +FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, +INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM +LOSS OF USE, DATA OR PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR +OTHER TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR +PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF inherits NOTICES, INFORMATION, AND LICENSE + +%% is-typedarray NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF is-typedarray NOTICES, INFORMATION, AND LICENSE + +%% isarray NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +NO LICENSE FOUND +========================================= +END OF isarray NOTICES, INFORMATION, AND LICENSE + +%% isstream NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) +===================== + +Copyright (c) 2015 Rod Vagg +--------------------------- + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF isstream NOTICES, INFORMATION, AND LICENSE + +%% js-base64 NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2014, Dan Kogai +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +* Redistributions of source code must retain the above copyright notice, this + list of conditions and the following disclaimer. + +* Redistributions in binary form must reproduce the above copyright notice, + this list of conditions and the following disclaimer in the documentation + and/or other materials provided with the distribution. + +* Neither the name of {{{project}}} nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF js-base64 NOTICES, INFORMATION, AND LICENSE + +%% jsbn NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Licensing +--------- + +This software is covered under the following copyright: + +/* + * Copyright (c) 2003-2005 Tom Wu + * All Rights Reserved. + * + * Permission is hereby granted, free of charge, to any person obtaining + * a copy of this software and associated documentation files (the + * "Software"), to deal in the Software without restriction, including + * without limitation the rights to use, copy, modify, merge, publish, + * distribute, sublicense, and/or sell copies of the Software, and to + * permit persons to whom the Software is furnished to do so, subject to + * the following conditions: + * + * The above copyright notice and this permission notice shall be + * included in all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS-IS" AND WITHOUT WARRANTY OF ANY KIND, + * EXPRESS, IMPLIED OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY + * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. + * + * IN NO EVENT SHALL TOM WU BE LIABLE FOR ANY SPECIAL, INCIDENTAL, + * INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES WHATSOEVER + * RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR NOT ADVISED OF + * THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF LIABILITY, ARISING OUT + * OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + * + * In addition, the following condition applies: + * + * All redistributions must retain an intact copy of this copyright notice + * and disclaimer. + */ + +Address all questions regarding this license to: + + Tom Wu + tjw@cs.Stanford.EDU +========================================= +END OF jsbn NOTICES, INFORMATION, AND LICENSE + +%% json-schema NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +NO LICENSE FOUND +========================================= +END OF json-schema NOTICES, INFORMATION, AND LICENSE + +%% json-schema-traverse NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + +Copyright (c) 2017 Evgeny Poberezkin + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF json-schema-traverse NOTICES, INFORMATION, AND LICENSE + +%% json-stringify-safe NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF json-stringify-safe NOTICES, INFORMATION, AND LICENSE + +%% jsonfile NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2012-2015, JP Richardson + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files +(the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, + merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF jsonfile NOTICES, INFORMATION, AND LICENSE + +%% jsprim NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2012, Joyent, Inc. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE +========================================= +END OF jsprim NOTICES, INFORMATION, AND LICENSE + +%% klaw NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2015-2016 JP Richardson + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files +(the 'Software'), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, + merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE +WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS +OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, + ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF klaw NOTICES, INFORMATION, AND LICENSE + +%% lodash.assignin NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.assignin NOTICES, INFORMATION, AND LICENSE + +%% lodash.bind NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.bind NOTICES, INFORMATION, AND LICENSE + +%% lodash.defaults NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.defaults NOTICES, INFORMATION, AND LICENSE + +%% lodash.filter NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.filter NOTICES, INFORMATION, AND LICENSE + +%% lodash.flatten NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.flatten NOTICES, INFORMATION, AND LICENSE + +%% lodash.foreach NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.foreach NOTICES, INFORMATION, AND LICENSE + +%% lodash.map NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.map NOTICES, INFORMATION, AND LICENSE + +%% lodash.merge NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright JS Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.merge NOTICES, INFORMATION, AND LICENSE + +%% lodash.pick NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.pick NOTICES, INFORMATION, AND LICENSE + +%% lodash.reduce NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.reduce NOTICES, INFORMATION, AND LICENSE + +%% lodash.reject NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.reject NOTICES, INFORMATION, AND LICENSE + +%% lodash.some NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright jQuery Foundation and other contributors + +Based on Underscore.js, copyright Jeremy Ashkenas, +DocumentCloud and Investigative Reporters & Editors + +This software consists of voluntary contributions made by many +individuals. For exact contribution history, see the revision history +available at https://github.com/lodash/lodash + +The following license applies to all parts of this software except as +documented below: + +==== + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +"Software"), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE +LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION +OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION +WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +==== + +Copyright and related rights for sample code are waived via CC0. Sample +code is defined as all source code displayed within the prose of the +documentation. + +CC0: http://creativecommons.org/publicdomain/zero/1.0/ + +==== + +Files located in the node_modules and vendor directories are externally +maintained libraries used by this software which have their own +licenses; we recommend you read them, as their terms may differ from the +terms above. +========================================= +END OF lodash.some NOTICES, INFORMATION, AND LICENSE + +%% mime-db NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2014 Jonathan Ong me@jongleberry.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF mime-db NOTICES, INFORMATION, AND LICENSE + +%% mime-types NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014 Jonathan Ong +Copyright (c) 2015 Douglas Christopher Wilson + +Permission is hereby granted, free of charge, to any person obtaining +a copy of this software and associated documentation files (the +'Software'), to deal in the Software without restriction, including +without limitation the rights to use, copy, modify, merge, publish, +distribute, sublicense, and/or sell copies of the Software, and to +permit persons to whom the Software is furnished to do so, subject to +the following conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY +CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, +TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF mime-types NOTICES, INFORMATION, AND LICENSE + +%% minimatch NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF minimatch NOTICES, INFORMATION, AND LICENSE + +%% minimatch NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF minimatch NOTICES, INFORMATION, AND LICENSE + +%% mockery NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyrights for code authored by Yahoo! Inc. is licensed under the following + terms: + + MIT License + + Copyright (c) 2011 Yahoo! Inc. All Rights Reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +========================================= +END OF mockery NOTICES, INFORMATION, AND LICENSE + +%% mockery NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyrights for code authored by Yahoo! Inc. is licensed under the following + terms: + + MIT License + + Copyright (c) 2011 Yahoo! Inc. All Rights Reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to + deal in the Software without restriction, including without limitation the + rights to use, copy, modify, merge, publish, distribute, sublicense, and/or + sell copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in + all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER + DEALINGS IN THE SOFTWARE. +========================================= +END OF mockery NOTICES, INFORMATION, AND LICENSE + +%% node-uuid NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2010-2012 Robert Kieffer + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF node-uuid NOTICES, INFORMATION, AND LICENSE + +%% nth-check NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +NO LICENSE FOUND +========================================= +END OF nth-check NOTICES, INFORMATION, AND LICENSE + +%% oauth-sign NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Apache License + +Version 2.0, January 2004 + +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of this License; and + +You must cause any modified files to carry prominent notices stating that You changed the files; and + +You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + +If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS +========================================= +END OF oauth-sign NOTICES, INFORMATION, AND LICENSE + +%% once NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF once NOTICES, INFORMATION, AND LICENSE + +%% os NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2016 Diego Rodríguez Baquero + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF os NOTICES, INFORMATION, AND LICENSE + +%% path-is-absolute NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF path-is-absolute NOTICES, INFORMATION, AND LICENSE + +%% performance-now NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2013 Braveg1rl + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF performance-now NOTICES, INFORMATION, AND LICENSE + +%% process-nextick-args NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +# Copyright (c) 2015 Calvin Metcalf + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +**THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE.** +========================================= +END OF process-nextick-args NOTICES, INFORMATION, AND LICENSE + +%% psl NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +NO LICENSE FOUND +========================================= +END OF psl NOTICES, INFORMATION, AND LICENSE + +%% punycode NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +NO LICENSE FOUND +========================================= +END OF punycode NOTICES, INFORMATION, AND LICENSE + +%% q NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright 2009–2017 Kristopher Michael Kowal. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +========================================= +END OF q NOTICES, INFORMATION, AND LICENSE + +%% q NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright 2009–2017 Kristopher Michael Kowal. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +========================================= +END OF q NOTICES, INFORMATION, AND LICENSE + +%% qs NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2014 Nathan LaFreniere and other contributors. +All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * The names of any contributors may not be used to endorse or promote + products derived from this software without specific prior written + permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDERS AND CONTRIBUTORS BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS +SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + * * * + +The complete list of contributors can be found at: https://github.com/hapijs/qs/graphs/contributors +========================================= +END OF qs NOTICES, INFORMATION, AND LICENSE + +%% readable-stream NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Node.js is licensed for use as follows: + +""" +Copyright Node.js contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" + +This license applies to parts of Node.js originating from the +https://github.com/joyent/node repository: + +""" +Copyright Joyent, Inc. and other Node contributors. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" +========================================= +END OF readable-stream NOTICES, INFORMATION, AND LICENSE + +%% request NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Apache License + +Version 2.0, January 2004 + +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of this License; and + +You must cause any modified files to carry prominent notices stating that You changed the files; and + +You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + +If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS +========================================= +END OF request NOTICES, INFORMATION, AND LICENSE + +%% rimraf NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF rimraf NOTICES, INFORMATION, AND LICENSE + +%% safe-buffer NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) Feross Aboukhadijeh + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF safe-buffer NOTICES, INFORMATION, AND LICENSE + +%% safer-buffer NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + +Copyright (c) 2018 Nikita Skovoroda + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF safer-buffer NOTICES, INFORMATION, AND LICENSE + +%% sax NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. + +==== + +`String.fromCodePoint` by Mathias Bynens used according to terms of MIT +License, as follows: + + Copyright Mathias Bynens + + Permission is hereby granted, free of charge, to any person obtaining + a copy of this software and associated documentation files (the + "Software"), to deal in the Software without restriction, including + without limitation the rights to use, copy, modify, merge, publish, + distribute, sublicense, and/or sell copies of the Software, and to + permit persons to whom the Software is furnished to do so, subject to + the following conditions: + + The above copyright notice and this permission notice shall be + included in all copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, + EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF + MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND + NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE + LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION + OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION + WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF sax NOTICES, INFORMATION, AND LICENSE + +%% semver NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF semver NOTICES, INFORMATION, AND LICENSE + +%% semver NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF semver NOTICES, INFORMATION, AND LICENSE + +%% semver-compare NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +This software is released under the MIT license: + +Permission is hereby granted, free of charge, to any person obtaining a copy of +this software and associated documentation files (the "Software"), to deal in +the Software without restriction, including without limitation the rights to +use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF semver-compare NOTICES, INFORMATION, AND LICENSE + +%% shelljs NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2012, Artur Adib +All rights reserved. + +You may use this project under the terms of the New BSD license as follows: + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Artur Adib nor the + names of the contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL ARTUR ADIB BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF shelljs NOTICES, INFORMATION, AND LICENSE + +%% shelljs NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2012, Artur Adib +All rights reserved. + +You may use this project under the terms of the New BSD license as follows: + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of Artur Adib nor the + names of the contributors may be used to endorse or promote products + derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL ARTUR ADIB BE LIABLE FOR ANY +DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +(INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +(INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF shelljs NOTICES, INFORMATION, AND LICENSE + +%% sshpk NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright Joyent, Inc. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +========================================= +END OF sshpk NOTICES, INFORMATION, AND LICENSE + +%% string_decoder NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Node.js is licensed for use as follows: + +""" +Copyright Node.js contributors. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" + +This license applies to parts of Node.js originating from the +https://github.com/joyent/node repository: + +""" +Copyright Joyent, Inc. and other Node contributors. All rights reserved. +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +""" +========================================= +END OF string_decoder NOTICES, INFORMATION, AND LICENSE + +%% strip-bom NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) Sindre Sorhus (sindresorhus.com) + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF strip-bom NOTICES, INFORMATION, AND LICENSE + +%% tough-cookie NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2015, Salesforce.com, Inc. +All rights reserved. + +Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. + +3. Neither the name of Salesforce.com nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. +========================================= +END OF tough-cookie NOTICES, INFORMATION, AND LICENSE + +%% tunnel NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2012 Koichi Kobayashi + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF tunnel NOTICES, INFORMATION, AND LICENSE + +%% tunnel-agent NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Apache License + +Version 2.0, January 2004 + +http://www.apache.org/licenses/ + +TERMS AND CONDITIONS FOR USE, REPRODUCTION, AND DISTRIBUTION + +1. Definitions. + +"License" shall mean the terms and conditions for use, reproduction, and distribution as defined by Sections 1 through 9 of this document. + +"Licensor" shall mean the copyright owner or entity authorized by the copyright owner that is granting the License. + +"Legal Entity" shall mean the union of the acting entity and all other entities that control, are controlled by, or are under common control with that entity. For the purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. + +"You" (or "Your") shall mean an individual or Legal Entity exercising permissions granted by this License. + +"Source" form shall mean the preferred form for making modifications, including but not limited to software source code, documentation source, and configuration files. + +"Object" form shall mean any form resulting from mechanical transformation or translation of a Source form, including but not limited to compiled object code, generated documentation, and conversions to other media types. + +"Work" shall mean the work of authorship, whether in Source or Object form, made available under the License, as indicated by a copyright notice that is included in or attached to the work (an example is provided in the Appendix below). + +"Derivative Works" shall mean any work, whether in Source or Object form, that is based on (or derived from) the Work and for which the editorial revisions, annotations, elaborations, or other modifications represent, as a whole, an original work of authorship. For the purposes of this License, Derivative Works shall not include works that remain separable from, or merely link (or bind by name) to the interfaces of, the Work and Derivative Works thereof. + +"Contribution" shall mean any work of authorship, including the original version of the Work and any modifications or additions to that Work or Derivative Works thereof, that is intentionally submitted to Licensor for inclusion in the Work by the copyright owner or by an individual or Legal Entity authorized to submit on behalf of the copyright owner. For the purposes of this definition, "submitted" means any form of electronic, verbal, or written communication sent to the Licensor or its representatives, including but not limited to communication on electronic mailing lists, source code control systems, and issue tracking systems that are managed by, or on behalf of, the Licensor for the purpose of discussing and improving the Work, but excluding communication that is conspicuously marked or otherwise designated in writing by the copyright owner as "Not a Contribution." + +"Contributor" shall mean Licensor and any individual or Legal Entity on behalf of whom a Contribution has been received by Licensor and subsequently incorporated within the Work. + +2. Grant of Copyright License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable copyright license to reproduce, prepare Derivative Works of, publicly display, publicly perform, sublicense, and distribute the Work and such Derivative Works in Source or Object form. + +3. Grant of Patent License. Subject to the terms and conditions of this License, each Contributor hereby grants to You a perpetual, worldwide, non-exclusive, no-charge, royalty-free, irrevocable (except as stated in this section) patent license to make, have made, use, offer to sell, sell, import, and otherwise transfer the Work, where such license applies only to those patent claims licensable by such Contributor that are necessarily infringed by their Contribution(s) alone or by combination of their Contribution(s) with the Work to which such Contribution(s) was submitted. If You institute patent litigation against any entity (including a cross-claim or counterclaim in a lawsuit) alleging that the Work or a Contribution incorporated within the Work constitutes direct or contributory patent infringement, then any patent licenses granted to You under this License for that Work shall terminate as of the date such litigation is filed. + +4. Redistribution. You may reproduce and distribute copies of the Work or Derivative Works thereof in any medium, with or without modifications, and in Source or Object form, provided that You meet the following conditions: + +You must give any other recipients of the Work or Derivative Works a copy of this License; and + +You must cause any modified files to carry prominent notices stating that You changed the files; and + +You must retain, in the Source form of any Derivative Works that You distribute, all copyright, patent, trademark, and attribution notices from the Source form of the Work, excluding those notices that do not pertain to any part of the Derivative Works; and + +If the Work includes a "NOTICE" text file as part of its distribution, then any Derivative Works that You distribute must include a readable copy of the attribution notices contained within such NOTICE file, excluding those notices that do not pertain to any part of the Derivative Works, in at least one of the following places: within a NOTICE text file distributed as part of the Derivative Works; within the Source form or documentation, if provided along with the Derivative Works; or, within a display generated by the Derivative Works, if and wherever such third-party notices normally appear. The contents of the NOTICE file are for informational purposes only and do not modify the License. You may add Your own attribution notices within Derivative Works that You distribute, alongside or as an addendum to the NOTICE text from the Work, provided that such additional attribution notices cannot be construed as modifying the License. You may add Your own copyright statement to Your modifications and may provide additional or different license terms and conditions for use, reproduction, or distribution of Your modifications, or for any such Derivative Works as a whole, provided Your use, reproduction, and distribution of the Work otherwise complies with the conditions stated in this License. + +5. Submission of Contributions. Unless You explicitly state otherwise, any Contribution intentionally submitted for inclusion in the Work by You to the Licensor shall be under the terms and conditions of this License, without any additional terms or conditions. Notwithstanding the above, nothing herein shall supersede or modify the terms of any separate license agreement you may have executed with Licensor regarding such Contributions. + +6. Trademarks. This License does not grant permission to use the trade names, trademarks, service marks, or product names of the Licensor, except as required for reasonable and customary use in describing the origin of the Work and reproducing the content of the NOTICE file. + +7. Disclaimer of Warranty. Unless required by applicable law or agreed to in writing, Licensor provides the Work (and each Contributor provides its Contributions) on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied, including, without limitation, any warranties or conditions of TITLE, NON-INFRINGEMENT, MERCHANTABILITY, or FITNESS FOR A PARTICULAR PURPOSE. You are solely responsible for determining the appropriateness of using or redistributing the Work and assume any risks associated with Your exercise of permissions under this License. + +8. Limitation of Liability. In no event and under no legal theory, whether in tort (including negligence), contract, or otherwise, unless required by applicable law (such as deliberate and grossly negligent acts) or agreed to in writing, shall any Contributor be liable to You for damages, including any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or out of the use or inability to use the Work (including but not limited to damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses), even if such Contributor has been advised of the possibility of such damages. + +9. Accepting Warranty or Additional Liability. While redistributing the Work or Derivative Works thereof, You may choose to offer, and charge a fee for, acceptance of support, warranty, indemnity, or other liability obligations and/or rights consistent with this License. However, in accepting such obligations, You may act only on Your own behalf and on Your sole responsibility, not on behalf of any other Contributor, and only if You agree to indemnify, defend, and hold each Contributor harmless for any liability incurred by, or claims asserted against, such Contributor by reason of your accepting any such warranty or additional liability. + +END OF TERMS AND CONDITIONS +========================================= +END OF tunnel-agent NOTICES, INFORMATION, AND LICENSE + +%% tweetnacl NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +This is free and unencumbered software released into the public domain. + +Anyone is free to copy, modify, publish, use, compile, sell, or +distribute this software, either in source code form or as a compiled +binary, for any purpose, commercial or non-commercial, and by any +means. + +In jurisdictions that recognize copyright laws, the author or authors +of this software dedicate any and all copyright interest in the +software to the public domain. We make this dedication for the benefit +of the public at large and to the detriment of our heirs and +successors. We intend this dedication to be an overt act of +relinquishment in perpetuity of all present and future rights to this +software under copyright law. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF +MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. +IN NO EVENT SHALL THE AUTHORS BE LIABLE FOR ANY CLAIM, DAMAGES OR +OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, +ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. + +For more information, please refer to +========================================= +END OF tweetnacl NOTICES, INFORMATION, AND LICENSE + +%% typed-rest-client NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Visual Studio Team Services Client for Node.js + +Copyright (c) Microsoft Corporation + +All rights reserved. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF typed-rest-client NOTICES, INFORMATION, AND LICENSE + +%% typed-rest-client NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Visual Studio Team Services Client for Node.js + +Copyright (c) Microsoft Corporation + +All rights reserved. + +MIT License + +Permission is hereby granted, free of charge, to any person obtaining a copy of this software and +associated documentation files (the "Software"), to deal in the Software without restriction, +including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, +and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, +subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT +LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN +NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE +SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF typed-rest-client NOTICES, INFORMATION, AND LICENSE + +%% underscore NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2009-2015 Jeremy Ashkenas, DocumentCloud and Investigative +Reporters & Editors + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF underscore NOTICES, INFORMATION, AND LICENSE + +%% util-deprecate NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +(The MIT License) + +Copyright (c) 2014 Nathan Rajlich + +Permission is hereby granted, free of charge, to any person +obtaining a copy of this software and associated documentation +files (the "Software"), to deal in the Software without +restriction, including without limitation the rights to use, +copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the +Software is furnished to do so, subject to the following +conditions: + +The above copyright notice and this permission notice shall be +included in all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, +EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES +OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND +NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT +HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, +WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR +OTHER DEALINGS IN THE SOFTWARE. +========================================= +END OF util-deprecate NOTICES, INFORMATION, AND LICENSE + +%% uuid NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2010-2016 Robert Kieffer and other contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF uuid NOTICES, INFORMATION, AND LICENSE + +%% uuid NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2010-2016 Robert Kieffer and other contributors + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF uuid NOTICES, INFORMATION, AND LICENSE + +%% verror NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright (c) 2016, Joyent, Inc. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE +========================================= +END OF verror NOTICES, INFORMATION, AND LICENSE + +%% vso-node-api NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +NO LICENSE FOUND +========================================= +END OF vso-node-api NOTICES, INFORMATION, AND LICENSE + +%% vsts-task-lib NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) Microsoft Corporation. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF vsts-task-lib NOTICES, INFORMATION, AND LICENSE + +%% vsts-task-lib NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) Microsoft Corporation. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF vsts-task-lib NOTICES, INFORMATION, AND LICENSE + +%% vsts-task-lib NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) Microsoft Corporation. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. +========================================= +END OF vsts-task-lib NOTICES, INFORMATION, AND LICENSE + +%% vsts-task-tool-lib NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +MIT License + + Copyright (c) Microsoft Corporation. All rights reserved. + + Permission is hereby granted, free of charge, to any person obtaining a copy + of this software and associated documentation files (the "Software"), to deal + in the Software without restriction, including without limitation the rights + to use, copy, modify, merge, publish, distribute, sublicense, and/or sell + copies of the Software, and to permit persons to whom the Software is + furnished to do so, subject to the following conditions: + + The above copyright notice and this permission notice shall be included in all + copies or substantial portions of the Software. + + THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, + OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE + SOFTWARE +========================================= +END OF vsts-task-tool-lib NOTICES, INFORMATION, AND LICENSE + +%% wrappy NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The ISC License + +Copyright (c) Isaac Z. Schlueter and Contributors + +Permission to use, copy, modify, and/or distribute this software for any +purpose with or without fee is hereby granted, provided that the above +copyright notice and this permission notice appear in all copies. + +THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES +WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR +ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES +WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN +ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF OR +IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. +========================================= +END OF wrappy NOTICES, INFORMATION, AND LICENSE + +%% xml2js NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +Copyright 2010, 2011, 2012, 2013. All rights reserved. + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to +deal in the Software without restriction, including without limitation the +rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +sell copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. +========================================= +END OF xml2js NOTICES, INFORMATION, AND LICENSE + +%% xmlbuilder NOTICES, INFORMATION, AND LICENSE BEGIN HERE +========================================= +The MIT License (MIT) + +Copyright (c) 2013 Ozgur Ozcitak + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. +========================================= +END OF xmlbuilder NOTICES, INFORMATION, AND LICENSE + diff --git a/_generated/GradleV4_Node20/gradletask.ts b/_generated/GradleV4_Node20/gradletask.ts new file mode 100644 index 000000000000..1e3b1a899890 --- /dev/null +++ b/_generated/GradleV4_Node20/gradletask.ts @@ -0,0 +1,101 @@ +import * as path from 'path'; +import * as tl from 'azure-pipelines-task-lib/task'; +import * as sqGradle from 'azure-pipelines-tasks-codeanalysis-common/gradlesonar'; +import { CodeAnalysisOrchestrator } from 'azure-pipelines-tasks-codeanalysis-common/Common/CodeAnalysisOrchestrator'; +import { BuildOutput, BuildEngine } from 'azure-pipelines-tasks-codeanalysis-common/Common/BuildOutput'; +import { PmdTool } from 'azure-pipelines-tasks-codeanalysis-common/Common/PmdTool'; +import { CheckstyleTool } from 'azure-pipelines-tasks-codeanalysis-common/Common/CheckstyleTool'; +import { FindbugsTool } from 'azure-pipelines-tasks-codeanalysis-common/Common/FindbugsTool'; +import { SpotbugsTool } from 'azure-pipelines-tasks-codeanalysis-common/Common/SpotbugsTool'; +import { IAnalysisTool } from 'azure-pipelines-tasks-codeanalysis-common/Common/IAnalysisTool'; +import { ToolRunner } from 'azure-pipelines-task-lib/toolrunner'; +import { getExecOptions, setJavaHome, setGradleOpts } from './Modules/environment'; +import { configureWrapperScript } from './Modules/project-configuration'; +import { publishTestResults } from './Modules/publish-test-results'; +import { ICodeAnalysisResult, ITaskResult } from './interfaces'; +import { resolveTaskResult } from './Modules/utils'; + + + +async function run() { + try { + tl.setResourcePath(path.join(__dirname, 'task.json')); + + // Configure wrapperScript + let wrapperScript: string = tl.getPathInput('wrapperScript', true, true); + wrapperScript = configureWrapperScript(wrapperScript); + + // Set working directory + const workingDirectory: string = tl.getPathInput('cwd', false, true); + tl.cd(workingDirectory); + + const javaHomeSelection: string = tl.getInput('javaHomeSelection', true); + const publishJUnitResults: boolean = tl.getBoolInput('publishJUnitResults'); + const testResultsFiles: string = tl.getInput('testResultsFiles', true); + const inputTasks: string[] = tl.getDelimitedInput('tasks', ' ', true); + const buildOutput: BuildOutput = new BuildOutput(tl.getVariable('System.DefaultWorkingDirectory'), BuildEngine.Gradle); + + //START: Get gradleRunner ready to run + let gradleRunner: ToolRunner = tl.tool(wrapperScript); + gradleRunner.line(tl.getInput('options', false)); + gradleRunner.arg(inputTasks); + //END: Get gb ready to run + + // Set JAVA_HOME based on any user input + setJavaHome(javaHomeSelection); + + // Set any provided gradle options + const gradleOptions: string = tl.getInput('gradleOpts'); + setGradleOpts(gradleOptions); + + + const codeAnalysisTools: IAnalysisTool[] = [ + new CheckstyleTool(buildOutput, 'checkstyleAnalysisEnabled'), + new FindbugsTool(buildOutput, 'findbugsAnalysisEnabled'), + new PmdTool(buildOutput, 'pmdAnalysisEnabled'), + new SpotbugsTool(buildOutput, 'spotBugsAnalysisEnabled') + ]; + const codeAnalysisOrchestrator: CodeAnalysisOrchestrator = new CodeAnalysisOrchestrator(codeAnalysisTools); + + // Enable SonarQube Analysis (if desired) + const isSonarQubeEnabled: boolean = tl.getBoolInput('sqAnalysisEnabled', false); + if (isSonarQubeEnabled) { + // Looks like: 'SonarQube analysis is enabled.' + console.log(tl.loc('codeAnalysis_ToolIsEnabled'), 'SonarQube'); + gradleRunner = sqGradle.applyEnabledSonarQubeArguments(gradleRunner); + } + gradleRunner = codeAnalysisOrchestrator.configureBuild(gradleRunner); + + // START: Run code analysis + const codeAnalysisResult: ICodeAnalysisResult = {}; + + try { + codeAnalysisResult.gradleResult = await gradleRunner.exec(getExecOptions()); + codeAnalysisResult.statusFailed = false; + codeAnalysisResult.analysisError = ''; + + tl.debug(`Gradle result: ${codeAnalysisResult.gradleResult}`); + } catch (err) { + codeAnalysisResult.gradleResult = -1; + codeAnalysisResult.statusFailed = true; + codeAnalysisResult.analysisError = err; + + console.error(err); + tl.debug('taskRunner fail'); + } + + tl.debug('Processing code analysis results'); + codeAnalysisOrchestrator.publishCodeAnalysisResults(); + + // We should always publish test results + publishTestResults(publishJUnitResults, testResultsFiles); + + const taskResult: ITaskResult = resolveTaskResult(codeAnalysisResult); + tl.setResult(taskResult.status, taskResult.message); + // END: Run code analysis + } catch (err) { + tl.setResult(tl.TaskResult.Failed, err); + } +} + +run(); diff --git a/_generated/GradleV4_Node20/icon.png b/_generated/GradleV4_Node20/icon.png new file mode 100644 index 000000000000..71731f5f1d2e Binary files /dev/null and b/_generated/GradleV4_Node20/icon.png differ diff --git a/_generated/GradleV4_Node20/icon.svg b/_generated/GradleV4_Node20/icon.svg new file mode 100644 index 000000000000..2fab131b1f1c --- /dev/null +++ b/_generated/GradleV4_Node20/icon.svg @@ -0,0 +1,5 @@ + + + + + diff --git a/_generated/GradleV4_Node20/interfaces.ts b/_generated/GradleV4_Node20/interfaces.ts new file mode 100644 index 000000000000..2e1bf0d74825 --- /dev/null +++ b/_generated/GradleV4_Node20/interfaces.ts @@ -0,0 +1,12 @@ +import { TaskResult } from 'azure-pipelines-task-lib'; + +export interface ICodeAnalysisResult { + gradleResult?: number; + statusFailed?: boolean; + analysisError?: any; +} + +export interface ITaskResult { + status: TaskResult; + message: string; +} diff --git a/_generated/GradleV4_Node20/make.json b/_generated/GradleV4_Node20/make.json new file mode 100644 index 000000000000..fe4888c3fdf4 --- /dev/null +++ b/_generated/GradleV4_Node20/make.json @@ -0,0 +1,11 @@ +{ + "rm": [ + { + "items": [ + "node_modules/azure-pipelines-tasks-java-common/node_modules/azure-pipelines-task-lib", + "node_modules/azure-pipelines-tasks-codeanalysis-common/node_modules/azure-pipelines-task-lib" + ], + "options": "-Rf" + } + ] +} \ No newline at end of file diff --git a/_generated/GradleV4_Node20/package-lock.json b/_generated/GradleV4_Node20/package-lock.json new file mode 100644 index 000000000000..48ec25bec7cf --- /dev/null +++ b/_generated/GradleV4_Node20/package-lock.json @@ -0,0 +1,2444 @@ +{ + "name": "Agent.Tasks.Gradle", + "version": "2.208.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "Agent.Tasks.Gradle", + "version": "2.208.0", + "license": "MIT", + "dependencies": { + "@types/mocha": "^5.2.7", + "@types/node": "^20.3.1", + "azure-pipelines-task-lib": "^4.16.0", + "azure-pipelines-tasks-codeanalysis-common": "^2.242.0", + "azure-pipelines-tasks-java-common": "^2.219.1", + "azure-pipelines-tasks-utility-common": "^3.241.0" + }, + "devDependencies": { + "typescript": "5.1.6" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.12.11", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@babel/code-frame/-/code-frame-7.12.11.tgz", + "integrity": "sha512-Zt1yodBx1UcyiePMSkWnU4hPqhwq7hGi2nFL1LeA3EUl+q2LQx16MISgJ0+z7dnmgvP9QtIleuETGOiOH1RcIw==", + "dependencies": { + "@babel/highlight": "^7.10.4" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==" + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@eslint/eslintrc": { + "version": "0.4.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@eslint/eslintrc/-/eslintrc-0.4.3.tgz", + "integrity": "sha512-J6KFFz5QCYUJq3pf0mjEcCJVERbzv71PUIDczuh9JkwGEzced6CO5ADLHB1rbf/+oPBtoPfMYNOpGDzCANlbXw==", + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.1.1", + "espree": "^7.3.0", + "globals": "^13.9.0", + "ignore": "^4.0.6", + "import-fresh": "^3.2.1", + "js-yaml": "^3.13.1", + "minimatch": "^3.0.4", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.5.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@humanwhocodes/config-array/-/config-array-0.5.0.tgz", + "integrity": "sha512-FagtKFz74XrTl7y6HCzQpwDfXP0yhxe9lHLD1UZxjvZIcbyRz8zTFF/yYNfSfzU414eDwZ1SrO0Qvtyf+wFMQg==", + "deprecated": "Use @eslint/config-array instead", + "dependencies": { + "@humanwhocodes/object-schema": "^1.2.0", + "debug": "^4.1.1", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "1.2.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@humanwhocodes/object-schema/-/object-schema-1.2.1.tgz", + "integrity": "sha512-ZnQMnLV4e7hDlUvw8H+U8ASL02SS2Gn6+9Ac3wGGLIe7+je2AeAOxPY+izIPJDfFDb7eDjev0Us8MO1iFRN8hA==", + "deprecated": "Use @eslint/object-schema instead" + }, + "node_modules/@sinonjs/commons": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@sinonjs/commons/-/commons-2.0.0.tgz", + "integrity": "sha512-uLa0j859mMrg2slwQYdO/AkrOfmH+X6LTVmNTS9CqexuE2IvVORIkSpJLqePAbEnKJ77aMmCwr1NUZ57120Xcg==", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "9.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@sinonjs/fake-timers/-/fake-timers-9.1.2.tgz", + "integrity": "sha512-BPS4ynJW/o92PUR4wgriz2Ud5gpST5vz6GQfMixEDK0Z8ZCUv2M7SkBLykH56T++Xs+8ln9zTGbOvNGIe02/jw==", + "dependencies": { + "@sinonjs/commons": "^1.7.0" + } + }, + "node_modules/@sinonjs/fake-timers/node_modules/@sinonjs/commons": { + "version": "1.8.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@sinonjs/commons/-/commons-1.8.6.tgz", + "integrity": "sha512-Ky+XkAkqPZSm3NLBeUng77EBQl3cmeJhITaGHdYH8kjVB+aun3S4XBRti2zt17mtt0mIUDiNxYeoJm6drVvBJQ==", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/samsam": { + "version": "7.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@sinonjs/samsam/-/samsam-7.0.1.tgz", + "integrity": "sha512-zsAk2Jkiq89mhZovB2LLOdTCxJF4hqqTToGP0ASWlhp4I1hqOjcfmZGafXntCN7MDC6yySH0mFHrYtHceOeLmw==", + "dependencies": { + "@sinonjs/commons": "^2.0.0", + "lodash.get": "^4.4.2", + "type-detect": "^4.0.8" + } + }, + "node_modules/@sinonjs/text-encoding": { + "version": "0.7.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@sinonjs/text-encoding/-/text-encoding-0.7.2.tgz", + "integrity": "sha512-sXXKG+uL9IrKqViTtao2Ws6dy0znu9sOaP1di/jKGW1M6VssO8vlpXCQcpZ+jisQ1tTFAC5Jo/EOzFbggBagFQ==" + }, + "node_modules/@types/mocha": { + "version": "5.2.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==" + }, + "node_modules/@types/node": { + "version": "20.14.15", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/node/-/node-20.14.15.tgz", + "integrity": "sha512-Fz1xDMCF/B00/tYSVMlmK7hVeLh7jE5f3B7X1/hmV0MJBwE27KlS7EvD/Yp+z1lm8mVhwV5w+n8jOZG8AfTlKw==", + "dependencies": { + "undici-types": "~5.26.4" + } + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==" + }, + "node_modules/@types/uuid": { + "version": "3.4.13", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/uuid/-/uuid-3.4.13.tgz", + "integrity": "sha512-pAeZeUbLE4Z9Vi9wsWV2bYPTweEHeJJy0G4pEjOA/FSvy1Ad5U5Km8iDV6TKre1mjBiVNfAdVHKruP8bAh4Q5A==" + }, + "node_modules/acorn": { + "version": "7.4.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/acorn/-/acorn-7.4.1.tgz", + "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==", + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/adm-zip": { + "version": "0.5.15", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/adm-zip/-/adm-zip-0.5.15.tgz", + "integrity": "sha512-jYPWSeOA8EFoZnucrKCNihqBjoEGQSU4HKgHYQgKNEQ0pQF9a/DYuo/+fAxY76k4qe75LUlLWpAM1QWcBMTOKw==", + "engines": { + "node": ">=12.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-colors": { + "version": "4.1.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ansi-colors/-/ansi-colors-4.1.3.tgz", + "integrity": "sha512-/6w/C21Pm1A7aZitlI5Ni/2J6FFQN8i1Cvz3kHABAAbw93v/NlvKdVOqz7CCWz/3iv/JplRSEEZ83XION15ovw==", + "engines": { + "node": ">=6" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "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://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/astral-regex": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/astral-regex/-/astral-regex-2.0.0.tgz", + "integrity": "sha512-Z7tMw1ytTXt5jqMcOP+OQteU1VuNK9Y02uuJtKQ1Sv69jXQKKg5cibLwGJow8yzZP+eAc18EmLGPal0bp36rvQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/azure-pipelines-task-lib": { + "version": "4.17.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.17.2.tgz", + "integrity": "sha512-kKG1I2cpHM0kqn/YlnZiA2J59/x4OraEZZ1/Cp6A7XOu0e+E1PfrfldVVOU/tdeW/xOFoexqA4EEV27LfH0YqQ==", + "license": "MIT", + "dependencies": { + "adm-zip": "^0.5.10", + "minimatch": "3.0.5", + "nodejs-file-downloader": "^4.11.1", + "q": "^1.5.1", + "semver": "^5.7.2", + "shelljs": "^0.8.5", + "uuid": "^3.0.1" + } + }, + "node_modules/azure-pipelines-tasks-codeanalysis-common": { + "version": "2.245.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-tasks-codeanalysis-common/-/azure-pipelines-tasks-codeanalysis-common-2.245.0.tgz", + "integrity": "sha512-Z983X3eaLXfKR8rTnAyj8RVkKFvQhyCA31HRI4ASOeIZr7diVk5wEg8jY3pzjRnRStTje39xFTcgp1JQB7JhSg==", + "license": "MIT", + "dependencies": { + "@types/node": "^10.17.0", + "azure-pipelines-task-lib": "^4.17.0", + "glob": "7.1.0", + "mocha": "^10.5.1", + "rewire": "^6.0.0", + "sinon": "^14.0.0", + "xml2js": "^0.6.2" + } + }, + "node_modules/azure-pipelines-tasks-codeanalysis-common/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, + "node_modules/azure-pipelines-tasks-codeanalysis-common/node_modules/glob": { + "version": "7.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-7.1.0.tgz", + "integrity": "sha512-htk4y5TQ9NjktQk5oR7AudqzQKZd4JvbCOklhnygiF6r9ExeTrl+dTwFql7y5+zaHkc/QeLdDrcF5GVfM5bl9w==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.2", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + } + }, + "node_modules/azure-pipelines-tasks-java-common": { + "version": "2.245.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-tasks-java-common/-/azure-pipelines-tasks-java-common-2.245.0.tgz", + "integrity": "sha512-ckffShjlfzaRnw5AZoirCTQRc5MZL5gi/JBHuBXH1yC0LovbhUHOoCBXI0CXKdXEl9/3sK6rSd1YoD7R1BY8HQ==", + "license": "MIT", + "dependencies": { + "@types/mocha": "^5.2.7", + "@types/node": "^10.17.0", + "@types/semver": "^7.3.3", + "azure-pipelines-task-lib": "^4.17.0", + "semver": "^7.3.2" + } + }, + "node_modules/azure-pipelines-tasks-java-common/node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, + "node_modules/azure-pipelines-tasks-java-common/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/azure-pipelines-tasks-utility-common": { + "version": "3.242.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-tasks-utility-common/-/azure-pipelines-tasks-utility-common-3.242.0.tgz", + "integrity": "sha512-PCpJj2f+v1SxjP+NYtSeTQdgPE1WuadzeKcjaqzXSuHGf4KbDcVSQVD2IEo3dAGrvVfLZLnk4B2x/rwbWzminQ==", + "dependencies": { + "@types/node": "^16.11.39", + "azure-pipelines-task-lib": "^4.11.0", + "azure-pipelines-tool-lib": "^2.0.7", + "js-yaml": "3.13.1", + "semver": "^5.7.2" + } + }, + "node_modules/azure-pipelines-tasks-utility-common/node_modules/@types/node": { + "version": "16.18.105", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/node/-/node-16.18.105.tgz", + "integrity": "sha512-w2d0Z9yMk07uH3+Cx0N8lqFyi3yjXZxlbYappPj+AsOlT02OyxyiuNoNHdGt6EuiSm8Wtgp2YV7vWg+GMFrvFA==" + }, + "node_modules/azure-pipelines-tool-lib": { + "version": "2.0.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-pipelines-tool-lib/-/azure-pipelines-tool-lib-2.0.7.tgz", + "integrity": "sha512-1FN67ypNwNhgZllYSm4/pAQdffSfEZJhwW8YeNvm/cKDTS6t6bukTBIkt04c1CsaQe7Ot+eDOVMn41wX1ketXw==", + "dependencies": { + "@types/semver": "^5.3.0", + "@types/uuid": "^3.4.5", + "azure-pipelines-task-lib": "^4.1.0", + "semver": "^5.7.0", + "semver-compare": "^1.0.0", + "typed-rest-client": "^1.8.6", + "uuid": "^3.3.2" + } + }, + "node_modules/azure-pipelines-tool-lib/node_modules/@types/semver": { + "version": "5.5.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "node_modules/binary-extensions": { + "version": "2.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/binary-extensions/-/binary-extensions-2.3.0.tgz", + "integrity": "sha512-Ceh+7ox5qe7LJuLHoY0feh3pHuUDHAcRUeyL2VYghZwfpkNIy/+8Ocg0a3UuSoYzavmylwuLWQOf3hl0jjMMIw==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browser-stdout": { + "version": "1.3.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/browser-stdout/-/browser-stdout-1.3.1.tgz", + "integrity": "sha512-qhAVI1+Av2X7qelOfAIYwXONood6XlZE/fXaBSmW/T5SzLAmCgzi+eiWE7fUvbHaeNBQH13UftjpXxsfLkMpgw==" + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "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://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/chokidar": { + "version": "3.6.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/chokidar/-/chokidar-3.6.0.tgz", + "integrity": "sha512-7VT13fmjotKpGipCW9JEQAusEPE+Ei8nl6/g4FBAmIm0GOOLMua9NDDo/DWp0ZAxCr3cPq5ZpBqmPAQgDda2Pw==", + "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" + }, + "funding": { + "url": "https://paulmillr.com/funding/" + }, + "optionalDependencies": { + "fsevents": "~2.3.2" + } + }, + "node_modules/cliui": { + "version": "7.0.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/cliui/-/cliui-7.0.4.tgz", + "integrity": "sha512-OcRE68cOsVMXp1Yvonl/fzkQOyjLSu/8bhPDfQt0e0/Eb283TKP20Fs2MqoPsr9SwA595rRCA+QMzYc9nBP+JQ==", + "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://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/cross-spawn": { + "version": "7.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/cross-spawn/-/cross-spawn-7.0.3.tgz", + "integrity": "sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==", + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/debug": { + "version": "4.3.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/decamelize": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/decamelize/-/decamelize-4.0.0.tgz", + "integrity": "sha512-9iE1PgSik9HeIIw2JO94IidnE3eBoQrFJ3w7sFuzSX4DpmZ3v5sZpUiV5Swcf6mQEF+Y0ru8Neo+p+nyh2J+hQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==" + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/diff": { + "version": "5.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/diff/-/diff-5.2.0.tgz", + "integrity": "sha512-uIFDxqpRZGZ6ThOk84hEfqWoHx2devRFvpTZcTHur85vImfaxUbTW9Ryh4CpCuDnToOP1CEtXKIgytHBPVff5A==", + "engines": { + "node": ">=0.3.1" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==" + }, + "node_modules/enquirer": { + "version": "2.4.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/enquirer/-/enquirer-2.4.1.tgz", + "integrity": "sha512-rRqJg/6gd538VHvR3PSrdRBb/1Vy2YfzHqzvbhGIQpDRKIa4FgV/54b5Q1xYSxOOwKvjXweS26E0Q+nAMwp2pQ==", + "dependencies": { + "ansi-colors": "^4.1.1", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/escalade": { + "version": "3.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/escalade/-/escalade-3.1.2.tgz", + "integrity": "sha512-ErCHMCae19vR8vQGe50xIsVomy19rg6gFu3+r3jkEO46suLMWBksvVyoGgQV+jOfl84ZSOSlmv6Gxa89PmTGmA==", + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "7.32.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/eslint/-/eslint-7.32.0.tgz", + "integrity": "sha512-VHZ8gX+EDfz+97jGcgyGCyRia/dPOd6Xh9yPv8Bl1+SoaIwD+a/vlrOmGRUyOYu7MwUhc7CxqeaDZU13S4+EpA==", + "dependencies": { + "@babel/code-frame": "7.12.11", + "@eslint/eslintrc": "^0.4.3", + "@humanwhocodes/config-array": "^0.5.0", + "ajv": "^6.10.0", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.0.1", + "doctrine": "^3.0.0", + "enquirer": "^2.3.5", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^5.1.1", + "eslint-utils": "^2.1.0", + "eslint-visitor-keys": "^2.0.0", + "espree": "^7.3.1", + "esquery": "^1.4.0", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "functional-red-black-tree": "^1.0.1", + "glob-parent": "^5.1.2", + "globals": "^13.6.0", + "ignore": "^4.0.6", + "import-fresh": "^3.0.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "js-yaml": "^3.13.1", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.0.4", + "natural-compare": "^1.4.0", + "optionator": "^0.9.1", + "progress": "^2.0.0", + "regexpp": "^3.1.0", + "semver": "^7.2.1", + "strip-ansi": "^6.0.0", + "strip-json-comments": "^3.1.0", + "table": "^6.0.9", + "text-table": "^0.2.0", + "v8-compile-cache": "^2.0.3" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-scope": { + "version": "5.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/eslint-scope/-/eslint-scope-5.1.1.tgz", + "integrity": "sha512-2NxwbF/hZ0KpepYN0cNbo+FN6XoK7GaHlQhgx/hIZl6Va0bF45RQOOwhLIy8lQDbuCiadSLCBnH2CFYquit5bw==", + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^4.1.1" + }, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/eslint-utils": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/eslint-utils/-/eslint-utils-2.1.0.tgz", + "integrity": "sha512-w94dQYoauyvlDc43XnGB8lU3Zt713vNChgt4EWwhXAP2XkBvndfxF0AgIqKOOasjPIPzj9JqgwkwbCYD0/V3Zg==", + "dependencies": { + "eslint-visitor-keys": "^1.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/eslint-utils/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-2.1.0.tgz", + "integrity": "sha512-0rSmRBzXgDzIsD6mGdJgevzgezI534Cer5L/vyMX0kHzT/jiB43jRhd9YUlMGYLQy2zprNmoT8qasCGtY+QaKw==", + "engines": { + "node": ">=10" + } + }, + "node_modules/eslint/node_modules/semver": { + "version": "7.6.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/espree": { + "version": "7.3.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/espree/-/espree-7.3.1.tgz", + "integrity": "sha512-v3JCNCE64umkFpmkFGqzVKsOT0tN1Zr+ueqLZfpV1Ob8e+CEgPWa+OxCoGH3tnhimMKIaBm4m/vaRpJ/krRz2g==", + "dependencies": { + "acorn": "^7.4.0", + "acorn-jsx": "^5.3.1", + "eslint-visitor-keys": "^1.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/espree/node_modules/eslint-visitor-keys": { + "version": "1.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/eslint-visitor-keys/-/eslint-visitor-keys-1.3.0.tgz", + "integrity": "sha512-6J72N8UNa462wa/KFODt/PJ3IU60SDpC3QXC1Hjc1BXXpfL2C9R5+AU7jhe0F6GREqVMh4Juu+NY7xn+6dipUQ==", + "engines": { + "node": ">=4" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esquery/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esrecurse/node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "4.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/estraverse/-/estraverse-4.3.0.tgz", + "integrity": "sha512-39nnKffWz8xN1BU/2c79n9nB9HDzo0niYUqx6xyqUnyoAnQyyWpOTdZEeiCch8BBu515t4wp9ZmgVfVhn9EBpw==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==" + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==" + }, + "node_modules/fast-uri": { + "version": "3.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fast-uri/-/fast-uri-3.0.1.tgz", + "integrity": "sha512-MWipKbbYiYI0UC7cl8m/i/IWTqfC8YXsqjzybjddLsFjStroQzsHXkc73JutMvBiXmOvapk+axIl79ig5t55Bw==" + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat": { + "version": "5.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/flat/-/flat-5.0.2.tgz", + "integrity": "sha512-b6suED+5/3rTpUBdG1gupIl8MPFCAMA0QXwmljLhvCUKcUvdE4gWky9zpuGCcXHOsz4J9wPGNWq6OKpmIzz3hQ==", + "bin": { + "flat": "cli.js" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flat-cache/node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==" + }, + "node_modules/follow-redirects": { + "version": "1.15.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/follow-redirects/-/follow-redirects-1.15.6.tgz", + "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "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://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functional-red-black-tree": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/functional-red-black-tree/-/functional-red-black-tree-1.0.1.tgz", + "integrity": "sha512-dsKNQNdj6xA3T+QlADDA7mOSlX0qiMINjn0cgr+eGHGsbSHzTabcIogz2+p/iqP1Xs6EP/sS2SbqH+brGTbq0g==" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "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/glob-parent": { + "version": "5.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "bin": { + "he": "bin/he" + } + }, + "node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/ignore": { + "version": "4.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ignore/-/ignore-4.0.6.tgz", + "integrity": "sha512-cyFDKrqc/YdcWFniJhzI42+AzS+gNwmUzOSFcRCQYwySuBBBy/KjuxWLZ/FHEH6Moq1NizMOBWyTcv8O4OZIMg==", + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-binary-path": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-binary-path/-/is-binary-path-2.1.0.tgz", + "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", + "dependencies": { + "binary-extensions": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-core-module": { + "version": "2.15.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-plain-obj": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-plain-obj/-/is-plain-obj-2.1.0.tgz", + "integrity": "sha512-YWnfyRwxL/+SsrWYfOpUtz5b3YD+nyfkHvjbcanzk8zgyO4ASD67uVMRt8k5bM4lLMDnXfriRhOpemw+NfT1eA==", + "engines": { + "node": ">=8" + } + }, + "node_modules/is-unicode-supported": { + "version": "0.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/is-unicode-supported/-/is-unicode-supported-0.1.0.tgz", + "integrity": "sha512-knxG2q4UC3u8stRGyAVJCOdxFmv5DZiRcdlIaAQXAbSfJya+OhopNotLQrstBhququ4ZpuKbDc/8S6mgXgPFPw==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==" + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" + }, + "node_modules/js-yaml": { + "version": "3.13.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/js-yaml/-/js-yaml-3.13.1.tgz", + "integrity": "sha512-YfbcO7jXDdyj0DGxYVSlSeQNHbD7XPWvrVWeVUujrQEoZzWJIRrCPoyk6kL6IAjAG2IolMK4T0hNUe0HOUs5Jw==", + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==" + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==" + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==" + }, + "node_modules/just-extend": { + "version": "6.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/just-extend/-/just-extend-6.2.0.tgz", + "integrity": "sha512-cYofQu2Xpom82S6qD778jBDpwvvy39s1l/hrYij2u9AMdQcGRpaBu6kY4mVhuno5kJVi1DAz4aiphA2WI1/OAw==" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash.get": { + "version": "4.4.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash.get/-/lodash.get-4.4.2.tgz", + "integrity": "sha512-z+Uw/vLuy6gQe8cfaFWD7p0wVv8fJl3mbzXh33RS+0oW2wvUqiRXiQ69gLWSLpgB5/6sU+r6BlQR0MBILadqTQ==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==" + }, + "node_modules/lodash.truncate": { + "version": "4.4.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash.truncate/-/lodash.truncate-4.4.2.tgz", + "integrity": "sha512-jttmRe7bRse52OsWIMDLaXxWqRAmtIUccAQ3garviCqJjafXOfNMO0yMfNpdD6zbGaTU0P5Nz7e7gAT6cKmJRw==" + }, + "node_modules/log-symbols": { + "version": "4.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/log-symbols/-/log-symbols-4.1.0.tgz", + "integrity": "sha512-8XPvpAA8uyhfteu8pIvQxpJZ7SYYdpUivZpGy6sFsBuKRY/7rQGavedeB8aK+Zkyq6upMFVL/9AW6vOYzfRyLg==", + "dependencies": { + "chalk": "^4.1.0", + "is-unicode-supported": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimatch": { + "version": "3.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/mocha": { + "version": "10.7.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mocha/-/mocha-10.7.3.tgz", + "integrity": "sha512-uQWxAu44wwiACGqjbPYmjo7Lg8sFrS3dQe7PP2FQI+woptP4vZXSMcfMyFL/e1yFEeEpV4RtyTpZROOKmxis+A==", + "dependencies": { + "ansi-colors": "^4.1.3", + "browser-stdout": "^1.3.1", + "chokidar": "^3.5.3", + "debug": "^4.3.5", + "diff": "^5.2.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.1.6", + "ms": "^2.1.3", + "serialize-javascript": "^6.0.2", + "strip-json-comments": "^3.1.1", + "supports-color": "^8.1.1", + "workerpool": "^6.5.1", + "yargs": "^16.2.0", + "yargs-parser": "^20.2.9", + "yargs-unparser": "^2.0.0" + }, + "bin": { + "_mocha": "bin/_mocha", + "mocha": "bin/mocha.js" + }, + "engines": { + "node": ">= 14.0.0" + } + }, + "node_modules/mocha/node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==" + }, + "node_modules/mocha/node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/mocha/node_modules/glob": { + "version": "8.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "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/mocha/node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/mocha/node_modules/minimatch": { + "version": "5.1.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-5.1.6.tgz", + "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/mocha/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/ms": { + "version": "2.1.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==" + }, + "node_modules/nise": { + "version": "5.1.9", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/nise/-/nise-5.1.9.tgz", + "integrity": "sha512-qOnoujW4SV6e40dYxJOb3uvuoPHtmLzIk4TFo+j0jPJoC+5Z9xja5qH5JZobEPsa8+YYphMrOSwnrshEhG2qww==", + "dependencies": { + "@sinonjs/commons": "^3.0.0", + "@sinonjs/fake-timers": "^11.2.2", + "@sinonjs/text-encoding": "^0.7.2", + "just-extend": "^6.2.0", + "path-to-regexp": "^6.2.1" + } + }, + "node_modules/nise/node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/nise/node_modules/@sinonjs/fake-timers": { + "version": "11.2.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@sinonjs/fake-timers/-/fake-timers-11.2.2.tgz", + "integrity": "sha512-G2piCSxQ7oWOxwGSAyFHfPIsyeJGXYtc6mFbnFA+kRXkiEnTl8c/8jul2S329iFBnDI9HGoeWWAZvuvOkZccgw==", + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/nodejs-file-downloader": { + "version": "4.13.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/nodejs-file-downloader/-/nodejs-file-downloader-4.13.0.tgz", + "integrity": "sha512-nI2fKnmJWWFZF6SgMPe1iBodKhfpztLKJTtCtNYGhm/9QXmWa/Pk9Sv00qHgzEvNLe1x7hjGDRor7gcm/ChaIQ==", + "dependencies": { + "follow-redirects": "^1.15.6", + "https-proxy-agent": "^5.0.0", + "mime-types": "^2.1.27", + "sanitize-filename": "^1.6.3" + } + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "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://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/path-to-regexp": { + "version": "6.3.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-to-regexp/-/path-to-regexp-6.3.0.tgz", + "integrity": "sha512-Yhpw4T9C6hPpgPeA28us07OJeqZ5EzQTkbfwuhsUg0c237RomFoETJgmp2sa3F/41gfLE6G5cqcYwznmeEeOlQ==", + "license": "MIT" + }, + "node_modules/picocolors": { + "version": "1.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/picocolors/-/picocolors-1.0.1.tgz", + "integrity": "sha512-anP1Z8qwhkbmu7MFP5iTt+wQKXgwzf7zTyGlcdzabySa9vd0Xt392U0rVmz9poOaBj0uHJKyyo9/upk0HrEQew==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/progress": { + "version": "2.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/progress/-/progress-2.0.3.tgz", + "integrity": "sha512-7PiHtLll5LdnKIMw100I+8xJXR5gW2QwWYkT6iJva0bXitZKa/XMrSbdmg3r2Xnaidz9Qumd0VPaMrZlF9V9sA==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "engines": { + "node": ">=6" + } + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/randombytes": { + "version": "2.1.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/randombytes/-/randombytes-2.1.0.tgz", + "integrity": "sha512-vYl3iOX+4CKUWuxGi9Ukhie6fsqXqS9FE2Zaic4tNFD2N2QQaXOMFbuKK4QmDHC0JO6B1Zp41J0LpT0oR68amQ==", + "dependencies": { + "safe-buffer": "^5.1.0" + } + }, + "node_modules/readdirp": { + "version": "3.6.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/readdirp/-/readdirp-3.6.0.tgz", + "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", + "dependencies": { + "picomatch": "^2.2.1" + }, + "engines": { + "node": ">=8.10.0" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/regexpp": { + "version": "3.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/regexpp/-/regexpp-3.2.0.tgz", + "integrity": "sha512-pq2bWo9mVD43nbts2wGv17XLiNLya+GklZ8kaDLV2Z08gDCsGpnKn9BFMepvWuHCbyVvY7J5o5+BVvoQbmlJLg==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/require-from-string": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/require-from-string/-/require-from-string-2.0.2.tgz", + "integrity": "sha512-Xf0nWe6RseziFMu+Ap9biiUbmplq6S9/p+7w7YXP/JBHhrUDDUhwa+vANyubuqfZWTveU//DYVGsDG7RKL/vEw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "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/resolve-from": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/rewire": { + "version": "6.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/rewire/-/rewire-6.0.0.tgz", + "integrity": "sha512-7sZdz5dptqBCapJYocw9EcppLU62KMEqDLIILJnNET2iqzXHaQfaVP5SOJ06XvjX+dNIDJbzjw0ZWzrgDhtjYg==", + "dependencies": { + "eslint": "^7.32.0" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "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/sanitize-filename": { + "version": "1.6.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "node_modules/sax": { + "version": "1.4.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/sax/-/sax-1.4.1.tgz", + "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==" + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==" + }, + "node_modules/serialize-javascript": { + "version": "6.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/serialize-javascript/-/serialize-javascript-6.0.2.tgz", + "integrity": "sha512-Saa1xPByTTq2gdeFZYLLo+RFE35NHZkAbqZeWNd3BpzppeVisAqpDjcp8dyf6uIvEqJRd46jemmyA4iFIeVk8g==", + "dependencies": { + "randombytes": "^2.1.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "engines": { + "node": ">=8" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "dependencies": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sinon": { + "version": "14.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/sinon/-/sinon-14.0.2.tgz", + "integrity": "sha512-PDpV0ZI3ZCS3pEqx0vpNp6kzPhHrLx72wA0G+ZLaaJjLIYeE0n8INlgaohKuGy7hP0as5tbUd23QWu5U233t+w==", + "deprecated": "16.1.1", + "dependencies": { + "@sinonjs/commons": "^2.0.0", + "@sinonjs/fake-timers": "^9.1.2", + "@sinonjs/samsam": "^7.0.1", + "diff": "^5.0.0", + "nise": "^5.1.2", + "supports-color": "^7.2.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/sinon" + } + }, + "node_modules/sinon/node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/slice-ansi": { + "version": "4.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/slice-ansi/-/slice-ansi-4.0.0.tgz", + "integrity": "sha512-qMCMfhY040cVHT43K9BFygqYbUPFZKHOg7K73mtTWJRb8pyP3fzf4Ixd5SzdEJQ6MRUg/WBnOLxghZtKKurENQ==", + "dependencies": { + "ansi-styles": "^4.0.0", + "astral-regex": "^2.0.0", + "is-fullwidth-code-point": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/slice-ansi?sponsor=1" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==" + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "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://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/table": { + "version": "6.8.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/table/-/table-6.8.2.tgz", + "integrity": "sha512-w2sfv80nrAh2VCbqR5AK27wswXhqcck2AhfnNW76beQXskGZ1V12GwS//yYVa3d3fcvAip2OUnbDAjW2k3v9fA==", + "dependencies": { + "ajv": "^8.0.1", + "lodash.truncate": "^4.4.2", + "slice-ansi": "^4.0.0", + "string-width": "^4.2.3", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/table/node_modules/ajv": { + "version": "8.17.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/ajv/-/ajv-8.17.1.tgz", + "integrity": "sha512-B/gBuNg5SiMTrPkC+A2+cW0RszwxYmn6VYxB/inlBStS5nx6xHIt/ehKRhIMhqusl7a8LjQoZnjCs5vhwxOQ1g==", + "dependencies": { + "fast-deep-equal": "^3.1.3", + "fast-uri": "^3.0.1", + "json-schema-traverse": "^1.0.0", + "require-from-string": "^2.0.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/table/node_modules/json-schema-traverse": { + "version": "1.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/json-schema-traverse/-/json-schema-traverse-1.0.0.tgz", + "integrity": "sha512-NM8/P9n3XjXhIZn1lLhkFaACTOURQXjWhV4BA/RnOv8xvgqtqpAX9IO4mRQxSx1Rlo4tqzeqb0sOlruaOy3dug==" + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==" + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-rest-client": { + "version": "1.8.11", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/typed-rest-client/-/typed-rest-client-1.8.11.tgz", + "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", + "dependencies": { + "qs": "^6.9.1", + "tunnel": "0.0.6", + "underscore": "^1.12.1" + } + }, + "node_modules/typescript": { + "version": "5.1.6", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/underscore": { + "version": "1.13.7", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==" + }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/utf8-byte-length": { + "version": "1.0.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==" + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==", + "deprecated": "Please upgrade to version 7 or higher. Older versions may use Math.random() in certain circumstances, which is known to be problematic. See https://v8.dev/blog/math-random for details.", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/v8-compile-cache": { + "version": "2.4.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/v8-compile-cache/-/v8-compile-cache-2.4.0.tgz", + "integrity": "sha512-ocyWc3bAHBB/guyqJQVI5o4BZkPhznPYUG2ea80Gond/BgNWpap8TOmLSeeQG7bnh2KMISxskdADG59j7zruhw==" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/workerpool": { + "version": "6.5.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/workerpool/-/workerpool-6.5.1.tgz", + "integrity": "sha512-Fs4dNYcsdpYSAfVxhnl1L5zTksjvOJxtC5hzMNl+1t9B8hTJTdKDyZ5ju7ztgPy+ft9tBFXoOlDNiOT9WUXZlA==" + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "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://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + }, + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "engines": { + "node": ">=4.0" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs": { + "version": "16.2.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yargs/-/yargs-16.2.0.tgz", + "integrity": "sha512-D1mvvtDG0L5ft/jGWkLpG1+m0eQxOfaBvTNELraWj22wSVUMWxZUvYgJYcKh6jGGIkJFhH4IZPQhR4TKpc8mBw==", + "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.9", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yargs-parser/-/yargs-parser-20.2.9.tgz", + "integrity": "sha512-y11nGElTIV+CT3Zv9t7VKl+Q3hTQoT9a1Qzezhhl6Rp21gJ/IVTW7Z3y9EWXhuUBC2Shnf+DX0antecpAwSP8w==", + "engines": { + "node": ">=10" + } + }, + "node_modules/yargs-unparser": { + "version": "2.0.0", + "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yargs-unparser/-/yargs-unparser-2.0.0.tgz", + "integrity": "sha512-7pRTIA9Qc1caZ0bZ6RYRGbHJthJWuakf+WmHK0rVeLkNrrGhfoabBNdue6kdINI6r4if7ocq9aD/n7xwKOdzOA==", + "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://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/_generated/GradleV4_Node20/package.json b/_generated/GradleV4_Node20/package.json new file mode 100644 index 000000000000..72bf5f1d0953 --- /dev/null +++ b/_generated/GradleV4_Node20/package.json @@ -0,0 +1,21 @@ +{ + "name": "Agent.Tasks.Gradle", + "version": "2.208.0", + "author": "Microsoft Corporation", + "description": "Build with Gradle", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/vso-agent-tasks/issues" + }, + "dependencies": { + "@types/mocha": "^5.2.7", + "@types/node": "^20.3.1", + "azure-pipelines-task-lib": "^4.16.0", + "azure-pipelines-tasks-codeanalysis-common": "^2.242.0", + "azure-pipelines-tasks-java-common": "^2.219.1", + "azure-pipelines-tasks-utility-common": "^3.241.0" + }, + "devDependencies": { + "typescript": "5.1.6" + } +} diff --git a/_generated/GradleV4_Node20/task.json b/_generated/GradleV4_Node20/task.json new file mode 100644 index 000000000000..c160c9196799 --- /dev/null +++ b/_generated/GradleV4_Node20/task.json @@ -0,0 +1,361 @@ +{ + "id": "8D8EEBD8-2B94-4C97-85AF-839254CC6DA4", + "name": "Gradle", + "friendlyName": "Gradle", + "description": "Build using a Gradle wrapper script", + "helpUrl": "https://docs.microsoft.com/azure/devops/pipelines/tasks/build/gradle", + "helpMarkDown": "[Learn more about this task](https://go.microsoft.com/fwlink/?LinkID=613720) or [see the Gradle documentation](https://docs.gradle.org/current/userguide/userguide.html)", + "category": "Build", + "visibility": [ + "Build" + ], + "runsOn": [ + "Agent", + "DeploymentGroup" + ], + "author": "Microsoft Corporation", + "version": { + "Major": 4, + "Minor": 252, + "Patch": 1 + }, + "releaseNotes": "The Code Coverage option is deprecated. Refer to the [PublishCodeCoverageResultsV2 Task] (https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/publish-code-coverage-results-v2?view=azure-pipelines) to get code coverage results.", + "demands": [], + "minimumAgentVersion": "1.91.0", + "groups": [ + { + "name": "junitTestResults", + "displayName": "JUnit Test Results", + "isExpanded": true + }, + { + "name": "advanced", + "displayName": "Advanced", + "isExpanded": false + }, + { + "name": "CodeAnalysis", + "displayName": "Code Analysis", + "isExpanded": true + } + ], + "inputs": [ + { + "name": "wrapperScript", + "aliases": [ + "gradleWrapperFile" + ], + "type": "filePath", + "label": "Gradle wrapper", + "defaultValue": "gradlew", + "required": true, + "helpMarkDown": "Relative path from the repository root to the Gradle Wrapper script." + }, + { + "name": "cwd", + "aliases": [ + "workingDirectory" + ], + "type": "filePath", + "label": "Working directory", + "defaultValue": "", + "required": false, + "helpMarkDown": "Working directory in which to run the Gradle build. If not specified, the repository root directory is used." + }, + { + "name": "options", + "type": "string", + "label": "Options", + "defaultValue": "", + "required": false + }, + { + "name": "tasks", + "type": "string", + "label": "Tasks", + "defaultValue": "build", + "required": true + }, + { + "name": "publishJUnitResults", + "type": "boolean", + "label": "Publish to Azure Pipelines", + "required": true, + "defaultValue": "true", + "groupName": "junitTestResults", + "helpMarkDown": "Select this option to publish JUnit test results produced by the Gradle build to Azure Pipelines. Each test results file matching `Test Results Files` will be published as a test run in Azure Pipelines." + }, + { + "name": "testResultsFiles", + "type": "filePath", + "label": "Test results files", + "defaultValue": "**/TEST-*.xml", + "required": true, + "groupName": "junitTestResults", + "helpMarkDown": "Test results files path. Wildcards can be used ([more information](https://go.microsoft.com/fwlink/?linkid=856077)). For example, `**/TEST-*.xml` for all XML files whose name starts with TEST-.", + "visibleRule": "publishJUnitResults = true" + }, + { + "name": "testRunTitle", + "type": "string", + "label": "Test run title", + "defaultValue": "", + "required": false, + "groupName": "junitTestResults", + "helpMarkDown": "Provide a name for the test run.", + "visibleRule": "publishJUnitResults = true" + }, + { + "name": "javaHomeSelection", + "aliases": [ + "javaHomeOption" + ], + "type": "radio", + "label": "Set JAVA_HOME by", + "required": true, + "groupName": "advanced", + "defaultValue": "JDKVersion", + "helpMarkDown": "Sets JAVA_HOME either by selecting a JDK version that will be discovered during builds or by manually entering a JDK path.", + "options": { + "JDKVersion": "JDK Version", + "Path": "Path" + } + }, + { + "name": "jdkVersion", + "aliases": [ + "jdkVersionOption" + ], + "type": "pickList", + "label": "JDK version", + "required": false, + "groupName": "advanced", + "defaultValue": "default", + "helpMarkDown": "Will attempt to discover the path to the selected JDK version and set JAVA_HOME accordingly.", + "visibleRule": "javaHomeSelection = JDKVersion", + "options": { + "default": "default", + "1.17": "JDK 17", + "1.11": "JDK 11", + "1.10": "JDK 10 (out of support)", + "1.9": "JDK 9 (out of support)", + "1.8": "JDK 8", + "1.7": "JDK 7", + "1.6": "JDK 6 (out of support)" + } + }, + { + "name": "jdkUserInputPath", + "aliases": [ + "jdkDirectory" + ], + "type": "string", + "label": "JDK path", + "required": true, + "groupName": "advanced", + "defaultValue": "", + "helpMarkDown": "Sets JAVA_HOME to the given path.", + "visibleRule": "javaHomeSelection = Path" + }, + { + "name": "jdkArchitecture", + "aliases": [ + "jdkArchitectureOption" + ], + "type": "pickList", + "label": "JDK architecture", + "defaultValue": "x64", + "required": false, + "helpMarkDown": "Optionally supply the architecture (x86, x64) of the JDK.", + "visibleRule": "jdkVersion != default", + "groupName": "advanced", + "options": { + "x86": "x86", + "x64": "x64" + } + }, + { + "name": "gradleOpts", + "aliases": [ + "gradleOptions" + ], + "type": "string", + "label": "Set GRADLE_OPTS", + "required": false, + "groupName": "advanced", + "defaultValue": "-Xmx1024m", + "helpMarkDown": "Sets the GRADLE_OPTS environment variable, which is used to send command-line arguments to start the JVM. The xmx flag specifies the maximum memory available to the JVM." + }, + { + "name": "sqAnalysisEnabled", + "aliases": [ + "sonarQubeRunAnalysis" + ], + "type": "boolean", + "label": "Run SonarQube or SonarCloud Analysis", + "required": true, + "defaultValue": "false", + "groupName": "CodeAnalysis", + "helpMarkDown": "This option has changed from version 1 of the **Gradle** task to use the [SonarQube](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarqube) and [SonarCloud](https://marketplace.visualstudio.com/items?itemName=SonarSource.sonarcloud) marketplace extensions. Enable this option to run [SonarQube or SonarCloud analysis](http://redirect.sonarsource.com/doc/install-configure-scanner-tfs-ts.html) after executing tasks in the **Tasks** field. You must also add a **Prepare Analysis Configuration** task from one of the extensions to the build pipeline before this Gradle task." + }, + { + "name": "sqGradlePluginVersionChoice", + "type": "radio", + "label": "SonarQube scanner for Gradle version", + "required": true, + "defaultValue": "specify", + "options": { + "specify": "Specify version number", + "build": "Use plugin applied in your build.gradle" + }, + "helpMarkDown": "The SonarQube Gradle plugin version to use. You can declare it in your Gradle configuration file, or specify a version here.", + "groupName": "CodeAnalysis", + "visibleRule": "sqAnalysisEnabled = true" + }, + { + "name": "sqGradlePluginVersion", + "aliases": [ + "sonarQubeGradlePluginVersion" + ], + "type": "string", + "label": "SonarQube scanner for Gradle plugin version", + "required": true, + "defaultValue": "2.6.1", + "helpMarkDown": "Refer to https://plugins.gradle.org/plugin/org.sonarqube for all available versions.", + "groupName": "CodeAnalysis", + "visibleRule": "sqAnalysisEnabled = true && sqGradlePluginVersionChoice = specify" + }, + { + "name": "checkstyleAnalysisEnabled", + "aliases": [ + "checkStyleRunAnalysis" + ], + "type": "boolean", + "label": "Run Checkstyle", + "required": false, + "defaultValue": "false", + "groupName": "CodeAnalysis", + "helpMarkDown": "Run the Checkstyle tool with the default Sun checks. Results are uploaded as build artifacts." + }, + { + "name": "findbugsAnalysisEnabled", + "aliases": [ + "findBugsRunAnalysis" + ], + "type": "boolean", + "label": "Run FindBugs", + "required": false, + "defaultValue": "false", + "groupName": "CodeAnalysis", + "helpMarkDown": "Use the FindBugs static analysis tool to look for bugs in the code. Results are uploaded as build artifacts. In Gradle 6.0 this plugin was removed. Use spotbugs plugin instead. [More info](https://docs.gradle.org/current/userguide/upgrading_version_5.html#the_findbugs_plugin_has_been_removed)" + }, + { + "name": "pmdAnalysisEnabled", + "aliases": [ + "pmdRunAnalysis" + ], + "type": "boolean", + "label": "Run PMD", + "required": false, + "defaultValue": "false", + "groupName": "CodeAnalysis", + "helpMarkDown": "Use the PMD Java static analysis tool to look for bugs in the code. Results are uploaded as build artifacts." + }, + { + "name": "spotBugsAnalysisEnabled", + "aliases": [ + "spotBugsAnalysis" + ], + "type": "boolean", + "label": "Run SpotBugs", + "required": true, + "defaultValue": "false", + "groupName": "CodeAnalysis", + "helpMarkDown": "Enable this option to run spotBugs. This plugin works with Gradle v5.6 or later. [More info](https://spotbugs.readthedocs.io/en/stable/gradle.html#use-spotbugs-gradle-plugin)" + }, + { + "name": "spotBugsGradlePluginVersionChoice", + "type": "radio", + "label": "Spotbugs plugin version", + "required": true, + "defaultValue": "specify", + "options": { + "specify": "Specify version number", + "build": "Use plugin applied in your build.gradle" + }, + "helpMarkDown": "The Spotbugs Gradle plugin version to use. You can declare it in your Gradle configuration file, or specify a version here.", + "groupName": "CodeAnalysis", + "visibleRule": "spotBugsAnalysisEnabled = true" + }, + { + "name": "spotbugsGradlePluginVersion", + "aliases": [ + "spotbugsGradlePluginVersion" + ], + "type": "string", + "label": "Version number", + "required": true, + "defaultValue": "4.7.0", + "helpMarkDown": "Refer to https://plugins.gradle.org/plugin/com.github.spotbugs for all available versions.", + "groupName": "CodeAnalysis", + "visibleRule": "spotBugsAnalysisEnabled = true && spotBugsGradlePluginVersionChoice = specify" + } + ], + "instanceNameFormat": "gradlew $(tasks)", + "execution": { + "Node10": { + "target": "gradletask.js", + "argumentFormat": "" + }, + "Node16": { + "target": "gradletask.js", + "argumentFormat": "" + }, + "Node20_1": { + "target": "gradletask.js", + "argumentFormat": "" + } + }, + "messages": { + "sqCommon_CreateTaskReport_MissingField": "Failed to create TaskReport object. Missing field: %s", + "sqCommon_WaitingForAnalysis": "Waiting for the SonarQube server to analyse the build.", + "sqCommon_NotWaitingForAnalysis": "Build not configured to wait for the SonarQube analysis. Detailed quality gate status will not be available.", + "sqCommon_QualityGateStatusUnknown": "Could not detect the quality gate status or a new status has been introduced.", + "sqCommon_InvalidResponseFromServer": "Server responded with an invalid or unexpected response format.", + "codeAnalysis_ToolIsEnabled": "%s analysis is enabled.", + "codeAnalysis_ToolFailed": "%s analysis failed.", + "sqAnalysis_IncrementalMode": "Detected a PR build - running the SonarQube analysis in incremental mode", + "sqAnalysis_BuildSummaryTitle": "SonarQube Analysis Report", + "sqAnalysis_TaskReportInvalid": "Invalid or missing task report. Check SonarQube finished successfully.", + "sqAnalysis_BuildSummary_LinkText": "Detailed SonarQube report", + "sqAnalysis_BuildSummary_CannotAuthenticate": "Cannot authenticate to the SonarQube server. Check the saved service connection details and the status of the server.", + "sqAnalysis_AnalysisTimeout": "The analysis did not complete in the allotted time of %d seconds.", + "sqAnalysis_IsPullRequest_SkippingBuildSummary": "Pull request build: detailed SonarQube build summary will not be available.", + "sqAnalysis_IsPullRequest_SkippingBuildBreaker": "Pull request build: build will not be broken if quality gate fails.", + "sqAnalysis_BuildBrokenDueToQualityGateFailure": "The SonarQube quality gate associated with this build has failed.", + "sqAnalysis_QualityGatePassed": "The SonarQube quality gate associated with this build has passed (status %s)", + "sqAnalysis_UnknownComparatorString": "The SonarQube build summary encountered a problem: unknown comparator '%s'", + "sqAnalysis_NoUnitsFound": "The list of SonarQube measurement units could not be retrieved from the server.", + "sqAnalysis_NoReportTask": "Could not find report-task.txt. Possible cause: the SonarQube analysis did not complete successfully.", + "sqAnalysis_MultipleReportTasks": "Multiple report-task.txt files found. Choosing the first one. The build summary and the build breaker may not be accurate. Possible cause: multiple SonarQube analysis during the same build, which is not supported.", + "codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "%s found %d violations in %d files.", + "codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "%s found %d violations in 1 file.", + "codeAnalysisBuildSummaryLine_OneViolationOneFile": "%s found 1 violation in 1 file.", + "codeAnalysisBuildSummaryLine_NoViolations": "%s found no violations.", + "codeAnalysisBuildSummaryTitle": "Code Analysis Report", + "codeAnalysisArtifactSummaryTitle": "Code Analysis Results", + "codeAnalysisDisabled": "Code analysis is disabled outside of the build environment. Could not find a value for: %s", + "LocateJVMBasedOnVersionAndArch": "Locate JAVA_HOME for Java %s %s", + "UnsupportedJdkWarning": "JDK 9 and JDK 10 are out of support. Please switch to a later version in your project and pipeline. Attempting to build with JDK 11...", + "FailedToLocateSpecifiedJVM": "Failed to find the specified JDK version. Please ensure the specified JDK version is installed on the agent and the environment variable '%s' exists and is set to the location of a corresponding JDK or use the [Java Tool Installer](https://go.microsoft.com/fwlink/?linkid=875287) task to install the desired JDK.", + "InvalidBuildFile": "Invalid or unsupported build file", + "FileNotFound": "File or folder doesn't exist: %s", + "NoTestResults": "No test result files matching %s were found, so publishing JUnit test results is being skipped.", + "chmodGradlew": "Used 'chmod' method for gradlew file to make it executable.", + "UnableToExtractGradleVersion": "Unable to extract Gradle version from gradle output." + }, + "_buildConfigMapping": { + "Default": "4.252.0", + "Node20-225": "4.252.1" + } +} \ No newline at end of file diff --git a/_generated/GradleV4_Node20/task.loc.json b/_generated/GradleV4_Node20/task.loc.json new file mode 100644 index 000000000000..7a509fed16ef --- /dev/null +++ b/_generated/GradleV4_Node20/task.loc.json @@ -0,0 +1,361 @@ +{ + "id": "8D8EEBD8-2B94-4C97-85AF-839254CC6DA4", + "name": "Gradle", + "friendlyName": "ms-resource:loc.friendlyName", + "description": "ms-resource:loc.description", + "helpUrl": "https://docs.microsoft.com/azure/devops/pipelines/tasks/build/gradle", + "helpMarkDown": "ms-resource:loc.helpMarkDown", + "category": "Build", + "visibility": [ + "Build" + ], + "runsOn": [ + "Agent", + "DeploymentGroup" + ], + "author": "Microsoft Corporation", + "version": { + "Major": 4, + "Minor": 252, + "Patch": 1 + }, + "releaseNotes": "ms-resource:loc.releaseNotes", + "demands": [], + "minimumAgentVersion": "1.91.0", + "groups": [ + { + "name": "junitTestResults", + "displayName": "ms-resource:loc.group.displayName.junitTestResults", + "isExpanded": true + }, + { + "name": "advanced", + "displayName": "ms-resource:loc.group.displayName.advanced", + "isExpanded": false + }, + { + "name": "CodeAnalysis", + "displayName": "ms-resource:loc.group.displayName.CodeAnalysis", + "isExpanded": true + } + ], + "inputs": [ + { + "name": "wrapperScript", + "aliases": [ + "gradleWrapperFile" + ], + "type": "filePath", + "label": "ms-resource:loc.input.label.wrapperScript", + "defaultValue": "gradlew", + "required": true, + "helpMarkDown": "ms-resource:loc.input.help.wrapperScript" + }, + { + "name": "cwd", + "aliases": [ + "workingDirectory" + ], + "type": "filePath", + "label": "ms-resource:loc.input.label.cwd", + "defaultValue": "", + "required": false, + "helpMarkDown": "ms-resource:loc.input.help.cwd" + }, + { + "name": "options", + "type": "string", + "label": "ms-resource:loc.input.label.options", + "defaultValue": "", + "required": false + }, + { + "name": "tasks", + "type": "string", + "label": "ms-resource:loc.input.label.tasks", + "defaultValue": "build", + "required": true + }, + { + "name": "publishJUnitResults", + "type": "boolean", + "label": "ms-resource:loc.input.label.publishJUnitResults", + "required": true, + "defaultValue": "true", + "groupName": "junitTestResults", + "helpMarkDown": "ms-resource:loc.input.help.publishJUnitResults" + }, + { + "name": "testResultsFiles", + "type": "filePath", + "label": "ms-resource:loc.input.label.testResultsFiles", + "defaultValue": "**/TEST-*.xml", + "required": true, + "groupName": "junitTestResults", + "helpMarkDown": "ms-resource:loc.input.help.testResultsFiles", + "visibleRule": "publishJUnitResults = true" + }, + { + "name": "testRunTitle", + "type": "string", + "label": "ms-resource:loc.input.label.testRunTitle", + "defaultValue": "", + "required": false, + "groupName": "junitTestResults", + "helpMarkDown": "ms-resource:loc.input.help.testRunTitle", + "visibleRule": "publishJUnitResults = true" + }, + { + "name": "javaHomeSelection", + "aliases": [ + "javaHomeOption" + ], + "type": "radio", + "label": "ms-resource:loc.input.label.javaHomeSelection", + "required": true, + "groupName": "advanced", + "defaultValue": "JDKVersion", + "helpMarkDown": "ms-resource:loc.input.help.javaHomeSelection", + "options": { + "JDKVersion": "JDK Version", + "Path": "Path" + } + }, + { + "name": "jdkVersion", + "aliases": [ + "jdkVersionOption" + ], + "type": "pickList", + "label": "ms-resource:loc.input.label.jdkVersion", + "required": false, + "groupName": "advanced", + "defaultValue": "default", + "helpMarkDown": "ms-resource:loc.input.help.jdkVersion", + "visibleRule": "javaHomeSelection = JDKVersion", + "options": { + "default": "default", + "1.17": "JDK 17", + "1.11": "JDK 11", + "1.10": "JDK 10 (out of support)", + "1.9": "JDK 9 (out of support)", + "1.8": "JDK 8", + "1.7": "JDK 7", + "1.6": "JDK 6 (out of support)" + } + }, + { + "name": "jdkUserInputPath", + "aliases": [ + "jdkDirectory" + ], + "type": "string", + "label": "ms-resource:loc.input.label.jdkUserInputPath", + "required": true, + "groupName": "advanced", + "defaultValue": "", + "helpMarkDown": "ms-resource:loc.input.help.jdkUserInputPath", + "visibleRule": "javaHomeSelection = Path" + }, + { + "name": "jdkArchitecture", + "aliases": [ + "jdkArchitectureOption" + ], + "type": "pickList", + "label": "ms-resource:loc.input.label.jdkArchitecture", + "defaultValue": "x64", + "required": false, + "helpMarkDown": "ms-resource:loc.input.help.jdkArchitecture", + "visibleRule": "jdkVersion != default", + "groupName": "advanced", + "options": { + "x86": "x86", + "x64": "x64" + } + }, + { + "name": "gradleOpts", + "aliases": [ + "gradleOptions" + ], + "type": "string", + "label": "ms-resource:loc.input.label.gradleOpts", + "required": false, + "groupName": "advanced", + "defaultValue": "-Xmx1024m", + "helpMarkDown": "ms-resource:loc.input.help.gradleOpts" + }, + { + "name": "sqAnalysisEnabled", + "aliases": [ + "sonarQubeRunAnalysis" + ], + "type": "boolean", + "label": "ms-resource:loc.input.label.sqAnalysisEnabled", + "required": true, + "defaultValue": "false", + "groupName": "CodeAnalysis", + "helpMarkDown": "ms-resource:loc.input.help.sqAnalysisEnabled" + }, + { + "name": "sqGradlePluginVersionChoice", + "type": "radio", + "label": "ms-resource:loc.input.label.sqGradlePluginVersionChoice", + "required": true, + "defaultValue": "specify", + "options": { + "specify": "Specify version number", + "build": "Use plugin applied in your build.gradle" + }, + "helpMarkDown": "ms-resource:loc.input.help.sqGradlePluginVersionChoice", + "groupName": "CodeAnalysis", + "visibleRule": "sqAnalysisEnabled = true" + }, + { + "name": "sqGradlePluginVersion", + "aliases": [ + "sonarQubeGradlePluginVersion" + ], + "type": "string", + "label": "ms-resource:loc.input.label.sqGradlePluginVersion", + "required": true, + "defaultValue": "2.6.1", + "helpMarkDown": "ms-resource:loc.input.help.sqGradlePluginVersion", + "groupName": "CodeAnalysis", + "visibleRule": "sqAnalysisEnabled = true && sqGradlePluginVersionChoice = specify" + }, + { + "name": "checkstyleAnalysisEnabled", + "aliases": [ + "checkStyleRunAnalysis" + ], + "type": "boolean", + "label": "ms-resource:loc.input.label.checkstyleAnalysisEnabled", + "required": false, + "defaultValue": "false", + "groupName": "CodeAnalysis", + "helpMarkDown": "ms-resource:loc.input.help.checkstyleAnalysisEnabled" + }, + { + "name": "findbugsAnalysisEnabled", + "aliases": [ + "findBugsRunAnalysis" + ], + "type": "boolean", + "label": "ms-resource:loc.input.label.findbugsAnalysisEnabled", + "required": false, + "defaultValue": "false", + "groupName": "CodeAnalysis", + "helpMarkDown": "ms-resource:loc.input.help.findbugsAnalysisEnabled" + }, + { + "name": "pmdAnalysisEnabled", + "aliases": [ + "pmdRunAnalysis" + ], + "type": "boolean", + "label": "ms-resource:loc.input.label.pmdAnalysisEnabled", + "required": false, + "defaultValue": "false", + "groupName": "CodeAnalysis", + "helpMarkDown": "ms-resource:loc.input.help.pmdAnalysisEnabled" + }, + { + "name": "spotBugsAnalysisEnabled", + "aliases": [ + "spotBugsAnalysis" + ], + "type": "boolean", + "label": "ms-resource:loc.input.label.spotBugsAnalysisEnabled", + "required": true, + "defaultValue": "false", + "groupName": "CodeAnalysis", + "helpMarkDown": "ms-resource:loc.input.help.spotBugsAnalysisEnabled" + }, + { + "name": "spotBugsGradlePluginVersionChoice", + "type": "radio", + "label": "ms-resource:loc.input.label.spotBugsGradlePluginVersionChoice", + "required": true, + "defaultValue": "specify", + "options": { + "specify": "Specify version number", + "build": "Use plugin applied in your build.gradle" + }, + "helpMarkDown": "ms-resource:loc.input.help.spotBugsGradlePluginVersionChoice", + "groupName": "CodeAnalysis", + "visibleRule": "spotBugsAnalysisEnabled = true" + }, + { + "name": "spotbugsGradlePluginVersion", + "aliases": [ + "spotbugsGradlePluginVersion" + ], + "type": "string", + "label": "ms-resource:loc.input.label.spotbugsGradlePluginVersion", + "required": true, + "defaultValue": "4.7.0", + "helpMarkDown": "ms-resource:loc.input.help.spotbugsGradlePluginVersion", + "groupName": "CodeAnalysis", + "visibleRule": "spotBugsAnalysisEnabled = true && spotBugsGradlePluginVersionChoice = specify" + } + ], + "instanceNameFormat": "ms-resource:loc.instanceNameFormat", + "execution": { + "Node10": { + "target": "gradletask.js", + "argumentFormat": "" + }, + "Node16": { + "target": "gradletask.js", + "argumentFormat": "" + }, + "Node20_1": { + "target": "gradletask.js", + "argumentFormat": "" + } + }, + "messages": { + "sqCommon_CreateTaskReport_MissingField": "ms-resource:loc.messages.sqCommon_CreateTaskReport_MissingField", + "sqCommon_WaitingForAnalysis": "ms-resource:loc.messages.sqCommon_WaitingForAnalysis", + "sqCommon_NotWaitingForAnalysis": "ms-resource:loc.messages.sqCommon_NotWaitingForAnalysis", + "sqCommon_QualityGateStatusUnknown": "ms-resource:loc.messages.sqCommon_QualityGateStatusUnknown", + "sqCommon_InvalidResponseFromServer": "ms-resource:loc.messages.sqCommon_InvalidResponseFromServer", + "codeAnalysis_ToolIsEnabled": "ms-resource:loc.messages.codeAnalysis_ToolIsEnabled", + "codeAnalysis_ToolFailed": "ms-resource:loc.messages.codeAnalysis_ToolFailed", + "sqAnalysis_IncrementalMode": "ms-resource:loc.messages.sqAnalysis_IncrementalMode", + "sqAnalysis_BuildSummaryTitle": "ms-resource:loc.messages.sqAnalysis_BuildSummaryTitle", + "sqAnalysis_TaskReportInvalid": "ms-resource:loc.messages.sqAnalysis_TaskReportInvalid", + "sqAnalysis_BuildSummary_LinkText": "ms-resource:loc.messages.sqAnalysis_BuildSummary_LinkText", + "sqAnalysis_BuildSummary_CannotAuthenticate": "ms-resource:loc.messages.sqAnalysis_BuildSummary_CannotAuthenticate", + "sqAnalysis_AnalysisTimeout": "ms-resource:loc.messages.sqAnalysis_AnalysisTimeout", + "sqAnalysis_IsPullRequest_SkippingBuildSummary": "ms-resource:loc.messages.sqAnalysis_IsPullRequest_SkippingBuildSummary", + "sqAnalysis_IsPullRequest_SkippingBuildBreaker": "ms-resource:loc.messages.sqAnalysis_IsPullRequest_SkippingBuildBreaker", + "sqAnalysis_BuildBrokenDueToQualityGateFailure": "ms-resource:loc.messages.sqAnalysis_BuildBrokenDueToQualityGateFailure", + "sqAnalysis_QualityGatePassed": "ms-resource:loc.messages.sqAnalysis_QualityGatePassed", + "sqAnalysis_UnknownComparatorString": "ms-resource:loc.messages.sqAnalysis_UnknownComparatorString", + "sqAnalysis_NoUnitsFound": "ms-resource:loc.messages.sqAnalysis_NoUnitsFound", + "sqAnalysis_NoReportTask": "ms-resource:loc.messages.sqAnalysis_NoReportTask", + "sqAnalysis_MultipleReportTasks": "ms-resource:loc.messages.sqAnalysis_MultipleReportTasks", + "codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles": "ms-resource:loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsSomeFiles", + "codeAnalysisBuildSummaryLine_SomeViolationsOneFile": "ms-resource:loc.messages.codeAnalysisBuildSummaryLine_SomeViolationsOneFile", + "codeAnalysisBuildSummaryLine_OneViolationOneFile": "ms-resource:loc.messages.codeAnalysisBuildSummaryLine_OneViolationOneFile", + "codeAnalysisBuildSummaryLine_NoViolations": "ms-resource:loc.messages.codeAnalysisBuildSummaryLine_NoViolations", + "codeAnalysisBuildSummaryTitle": "ms-resource:loc.messages.codeAnalysisBuildSummaryTitle", + "codeAnalysisArtifactSummaryTitle": "ms-resource:loc.messages.codeAnalysisArtifactSummaryTitle", + "codeAnalysisDisabled": "ms-resource:loc.messages.codeAnalysisDisabled", + "LocateJVMBasedOnVersionAndArch": "ms-resource:loc.messages.LocateJVMBasedOnVersionAndArch", + "UnsupportedJdkWarning": "ms-resource:loc.messages.UnsupportedJdkWarning", + "FailedToLocateSpecifiedJVM": "ms-resource:loc.messages.FailedToLocateSpecifiedJVM", + "InvalidBuildFile": "ms-resource:loc.messages.InvalidBuildFile", + "FileNotFound": "ms-resource:loc.messages.FileNotFound", + "NoTestResults": "ms-resource:loc.messages.NoTestResults", + "chmodGradlew": "ms-resource:loc.messages.chmodGradlew", + "UnableToExtractGradleVersion": "ms-resource:loc.messages.UnableToExtractGradleVersion" + }, + "_buildConfigMapping": { + "Default": "4.252.0", + "Node20-225": "4.252.1" + } +} \ No newline at end of file diff --git a/_generated/GradleV4_Node20/tsconfig.json b/_generated/GradleV4_Node20/tsconfig.json new file mode 100644 index 000000000000..0438b79f69ac --- /dev/null +++ b/_generated/GradleV4_Node20/tsconfig.json @@ -0,0 +1,6 @@ +{ + "compilerOptions": { + "target": "ES6", + "module": "commonjs" + } +} \ No newline at end of file diff --git a/_generated/GradleV4_Node20/tslint.json b/_generated/GradleV4_Node20/tslint.json new file mode 100644 index 000000000000..5e164d2adc65 --- /dev/null +++ b/_generated/GradleV4_Node20/tslint.json @@ -0,0 +1,64 @@ +{ + "rules": { + "align": [true, + "parameters", + "arguments", + "statements" + ], + "class-name": true, + "curly": true, + "eofline": true, + "forin": true, + "indent": [true, "spaces", 4], + "label-position": true, + "label-undefined": true, + "max-line-length": [false, 160], + "no-arg": true, + "no-bitwise": true, + "no-console": [true, + "debug", + "info", + "time", + "timeEnd", + "trace" + ], + "no-consecutive-blank-lines": true, + "no-construct": true, + "no-debugger": true, + "no-duplicate-key": true, + "no-duplicate-variable": true, + "no-empty": true, + "no-eval": true, + "no-require-imports": false, + "no-null-keyword": false, + "no-string-literal": false, + "no-switch-case-fall-through": true, + "no-trailing-whitespace": true, + "no-unused-variable": true, + "no-unreachable": true, + "no-use-before-declare": true, + "no-var-keyword": true, + "one-line": [true, + "check-open-brace", + "check-catch", + "check-else", + "check-whitespace" + ], + "quotemark": [true, "single", "avoid-escape"], + "radix": false, + "semicolon": true, + "trailing-comma": [true, {"multiline": "never", "singleline": "never"}], + "triple-equals": [true, "allow-null-check"], + "variable-name": [true, + "check-format", + "allow-leading-underscore", + "ban-keywords" + ], + "whitespace": [true, + "check-branch", + "check-decl", + "check-operator", + "check-separator" + ] + } +} \ No newline at end of file diff --git a/make-options.json b/make-options.json index 5e8c77c4f169..85045a3f168e 100644 --- a/make-options.json +++ b/make-options.json @@ -111,6 +111,7 @@ "GoToolV0", "GradleV2", "GradleV3", + "GradleV4", "GruntV0", "GulpV0", "GulpV1", @@ -245,6 +246,7 @@ "DownloadSecureFileV1", "ExtractFilesV1", "FtpUploadV1", + "GradleV4", "GruntV0", "GulpV0", "GulpV1",