diff --git a/app/exec/extension/_lib/merger.ts b/app/exec/extension/_lib/merger.ts index 23d0bda0..9aafb6d9 100644 --- a/app/exec/extension/_lib/merger.ts +++ b/app/exec/extension/_lib/merger.ts @@ -17,6 +17,7 @@ import { glob } from "glob"; import jju = require("jju"); import jsonInPlace = require("json-in-place"); import loc = require("./loc"); +import Module = require("module"); import path = require("path"); import trace = require("../../../lib/trace"); import version = require("../../../lib/dynamicVersion"); @@ -96,7 +97,12 @@ export class Merger { }); const fullJsFile = path.resolve(this.settings.manifestJs); - const manifestModuleFn = require(fullJsFile); + const source = fs.readFileSync(fullJsFile, "utf8"); + const loadedModule: any = new (Module as any)(fullJsFile, module); + loadedModule.filename = fullJsFile; + loadedModule.paths = (Module as any)._nodeModulePaths(path.dirname(fullJsFile)); + loadedModule._compile(source, fullJsFile); + const manifestModuleFn = loadedModule.exports; if (!manifestModuleFn || typeof manifestModuleFn != "function") { throw new Error(`Missing export function from manifest-js file ${fullJsFile}`) } @@ -447,11 +453,11 @@ export class Merger { // Validate task.json files for this contribution with backwards compatibility checking if (contributionTaskJsonPaths.length > 0) { trace.debug(`Validating ${contributionTaskJsonPaths.length} task.json files for contribution ${contrib.id || taskPath}`); - + for (const taskJsonPath of contributionTaskJsonPaths) { validate(taskJsonPath, "no task.json in specified directory", contributionTaskJsonPaths); } - + // Also collect for global tracking if needed allTaskJsonPaths.push(...contributionTaskJsonPaths); } else { diff --git a/app/lib/jsonvalidate.ts b/app/lib/jsonvalidate.ts index b74aa10d..a655f541 100644 --- a/app/lib/jsonvalidate.ts +++ b/app/lib/jsonvalidate.ts @@ -9,6 +9,11 @@ export interface TaskJson { id: string; } +function readJsonFile(jsonFilePath: string): any { + const jsonData = fs.readFileSync(jsonFilePath, "utf8").replace(/^\uFEFF/, ""); + return JSON.parse(jsonData); +} + /* * Checks a json file for correct formatting against some validation function * @param jsonFilePath path to the json file being validated @@ -24,7 +29,7 @@ export function validate(jsonFilePath: string, jsonMissingErrorMessage?: string, var taskJson; try { - taskJson = require(jsonFilePath); + taskJson = readJsonFile(jsonFilePath); } catch (jsonError) { trace.debug("Invalid task json: %s", jsonError); throw new Error("Invalid task json: " + jsonError); @@ -88,7 +93,7 @@ export function validateRunner(taskData: any, allMatchedPaths?: string[]) { for (const matchedPath of allMatchedPaths) { let matchedTaskData; try { - matchedTaskData = require(matchedPath); + matchedTaskData = readJsonFile(matchedPath); } catch { continue; } diff --git a/app/lib/loader.ts b/app/lib/loader.ts index 1db44676..7bdd959f 100644 --- a/app/lib/loader.ts +++ b/app/lib/loader.ts @@ -1,16 +1,87 @@ import colors = require("colors"); import common = require("./common"); -import fsUtils = require("./fsUtils"); import path = require("path"); import trace = require("./trace"); import { TfCommand } from "./tfcommand"; -import { promisify } from "util"; -import { lstat } from "fs"; +import * as defaultCommand from "../exec/default"; +import * as loginCommand from "../exec/login"; +import * as logoutCommand from "../exec/logout"; +import * as resetCommand from "../exec/reset"; +import * as versionCommand from "../exec/version"; +import * as buildDefaultCommand from "../exec/build/default"; +import * as buildListCommand from "../exec/build/list"; +import * as buildQueueCommand from "../exec/build/queue"; +import * as buildShowCommand from "../exec/build/show"; +import * as buildTasksCreateCommand from "../exec/build/tasks/create"; +import * as buildTasksDefaultCommand from "../exec/build/tasks/default"; +import * as buildTasksDeleteCommand from "../exec/build/tasks/delete"; +import * as buildTasksListCommand from "../exec/build/tasks/list"; +import * as buildTasksUploadCommand from "../exec/build/tasks/upload"; +import * as extensionCreateCommand from "../exec/extension/create"; +import * as extensionDefaultCommand from "../exec/extension/default"; +import * as extensionInitCommand from "../exec/extension/init"; +import * as extensionInstallCommand from "../exec/extension/install"; +import * as extensionIsValidCommand from "../exec/extension/isvalid"; +import * as extensionPublishCommand from "../exec/extension/publish"; +import * as extensionResourcesCreateCommand from "../exec/extension/resources/create"; +import * as extensionResourcesDefaultCommand from "../exec/extension/resources/default"; +import * as extensionShareCommand from "../exec/extension/share"; +import * as extensionShowCommand from "../exec/extension/show"; +import * as extensionUnpublishCommand from "../exec/extension/unpublish"; +import * as extensionUnshareCommand from "../exec/extension/unshare"; +import * as workitemCreateCommand from "../exec/workitem/create"; +import * as workitemDefaultCommand from "../exec/workitem/default"; +import * as workitemQueryCommand from "../exec/workitem/query"; +import * as workitemShowCommand from "../exec/workitem/show"; +import * as workitemUpdateCommand from "../exec/workitem/update"; export interface CommandFactory { getCommand: (args: string[]) => TfCommand | Promise>; } +const commandModules: { [key: string]: CommandFactory } = { + "default": defaultCommand, + "login": loginCommand, + "logout": logoutCommand, + "reset": resetCommand, + "version": versionCommand, + "build/default": buildDefaultCommand, + "build/list": buildListCommand, + "build/queue": buildQueueCommand, + "build/show": buildShowCommand, + "build/tasks/create": buildTasksCreateCommand, + "build/tasks/default": buildTasksDefaultCommand, + "build/tasks/delete": buildTasksDeleteCommand, + "build/tasks/list": buildTasksListCommand, + "build/tasks/upload": buildTasksUploadCommand, + "extension/create": extensionCreateCommand, + "extension/default": extensionDefaultCommand, + "extension/init": extensionInitCommand, + "extension/install": extensionInstallCommand, + "extension/isvalid": extensionIsValidCommand, + "extension/publish": extensionPublishCommand, + "extension/resources/create": extensionResourcesCreateCommand, + "extension/resources/default": extensionResourcesDefaultCommand, + "extension/share": extensionShareCommand, + "extension/show": extensionShowCommand, + "extension/unpublish": extensionUnpublishCommand, + "extension/unshare": extensionUnshareCommand, + "workitem/create": workitemCreateCommand, + "workitem/default": workitemDefaultCommand, + "workitem/query": workitemQueryCommand, + "workitem/show": workitemShowCommand, + "workitem/update": workitemUpdateCommand, +}; + +function getCommandModule(execPath: string[]): CommandFactory { + const commandKey = execPath.join("/"); + if (!commandKey) { + return commandModules["default"]; + } + + return commandModules[commandKey] || commandModules[`${commandKey}/default`]; +} + /** * Load the module given by execPath and instantiate a TfCommand using args. * @param {string[]} execPath: path to the module to load. This module must implement CommandFactory. @@ -20,41 +91,23 @@ export interface CommandFactory { export function load(execPath: string[], args): Promise> { trace.debug("loader.load"); let commandModulePath = path.resolve(common.APP_ROOT, "exec", execPath.join("/")); - return fsUtils.exists(commandModulePath).then(exists => { - let resolveDefaultPromise = Promise.resolve(commandModulePath); - if (exists) { - // If this extensionless path exists, it should be a directory. - // If the path doesn't exist, for now we assume that a file with a .js extension - // exists (if it doens't, we will find out below). - resolveDefaultPromise = promisify(lstat)(commandModulePath).then(stats => { - if (stats.isDirectory()) { - return path.join(commandModulePath, "default"); - } - return commandModulePath; - }); + try { + const commandModule = getCommandModule(execPath); + if (!commandModule) { + throw new Error( + commandModulePath + " is not a recognized command. Run with --help to see available commands.", + ); } - return resolveDefaultPromise.then((commandModulePath: string) => { - let commandModule: CommandFactory; - return fsUtils.exists(path.resolve(commandModulePath + ".js")).then(exists => { - if (!exists) { - throw new Error( - commandModulePath + " is not a recognized command. Run with --help to see available commands.", - ); - } - try { - commandModule = require(commandModulePath); - } catch (e) { - trace.error(commandModulePath + " could not be fully loaded as a tfx command."); - throw e; - } - if (!commandModule.getCommand) { - throw new Error( - "Command modules must export a function, getCommand, that takes no arguments and returns an instance of TfCommand", - ); - } - - return commandModule.getCommand(args); - }); - }); - }); + + if (!commandModule.getCommand) { + throw new Error( + "Command modules must export a function, getCommand, that takes no arguments and returns an instance of TfCommand", + ); + } + + return Promise.resolve(commandModule.getCommand(args)); + } catch (e) { + trace.error(commandModulePath + " could not be fully loaded as a tfx command."); + return Promise.reject(e); + } } diff --git a/app/lib/version.ts b/app/lib/version.ts index 7219a388..f2cc4726 100644 --- a/app/lib/version.ts +++ b/app/lib/version.ts @@ -1,6 +1,8 @@ import common = require("./common"); import path = require("path"); import { DynamicVersion } from "./dynamicVersion"; +import { readFile } from "fs"; +import { promisify } from "util"; export class SemanticVersion extends DynamicVersion { constructor(public major: number, public minor: number, public patch: number) { @@ -25,6 +27,8 @@ export class SemanticVersion extends DynamicVersion { } export function getTfxVersion(): Promise { - let packageJson = require(path.join(common.APP_ROOT, "package.json")); - return Promise.resolve(SemanticVersion.parse(packageJson.version)); + return promisify(readFile)(path.join(common.APP_ROOT, "package.json"), "utf8").then(packageJsonContents => { + const packageJson = JSON.parse(packageJsonContents); + return SemanticVersion.parse(packageJson.version); + }); } diff --git a/package-lock.json b/package-lock.json index a79b30ab..87b3742c 100644 --- a/package-lock.json +++ b/package-lock.json @@ -1,24 +1,24 @@ { "name": "tfx-cli", - "version": "0.23.0", + "version": "0.23.1", "lockfileVersion": 2, "requires": true, "packages": { "": { "name": "tfx-cli", - "version": "0.23.0", + "version": "0.23.1", "license": "MIT", "dependencies": { "app-root-path": "1.0.0", "archiver": "^7.0.1", - "azure-devops-node-api": "^14.0.0", + "azure-devops-node-api": "^15.1.2", "clipboardy": "^4.0.0", "colors": "~1.3.0", - "glob": "^11.1.0", + "glob": "^13.0.6", "jju": "^1.4.0", "json-in-place": "^1.0.1", "jszip": "^3.10.1", - "lodash": "^4.17.21", + "lodash": "^4.17.23", "minimist": "^1.2.6", "mkdirp": "^1.0.4", "onecolor": "^2.5.0", @@ -69,27 +69,6 @@ "node": ">=0.1.90" } }, - "node_modules/@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha1-MIHa28NGBmG3UedZHX+upd853Sk=", - "license": "MIT", - "engines": { - "node": "20 || >=22" - } - }, - "node_modules/@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha1-Sz2rq32OdaQpQUqWvWe/TB0T4PM=", - "license": "MIT", - "dependencies": { - "@isaacs/balanced-match": "^4.0.1" - }, - "engines": { - "node": "20 || >=22" - } - }, "node_modules/@isaacs/cliui": { "version": "8.0.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -297,6 +276,31 @@ "glob": "^11.0.3" } }, + "node_modules/@types/shelljs/node_modules/glob": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", + "dev": true, + "license": "BlueOak-1.0.0", + "dependencies": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + }, + "bin": { + "glob": "dist/esm/bin.mjs" + }, + "engines": { + "node": "20 || >=22" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, "node_modules/@types/validator": { "version": "4.5.29", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@types/validator/-/validator-4.5.29.tgz", @@ -430,10 +434,32 @@ "node": ">= 14" } }, + "node_modules/archiver-utils/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/archiver-utils/node_modules/brace-expansion": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/archiver-utils/node_modules/glob": { "version": "10.5.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-10.5.0.tgz", - "integrity": "sha1-jsA1WRnNMzjChCiiPU8k7MX+c4w=", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "license": "ISC", "dependencies": { "foreground-child": "^3.1.0", @@ -484,12 +510,12 @@ "license": "ISC" }, "node_modules/archiver-utils/node_modules/minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.6.tgz", + "integrity": "sha512-kQAVowdR33euIqeA0+VZTDqU+qo1IeVY+hrKYtZMio3Pg0P0vuh/kwRylLUddJhB6pf3q/botcOvRtx4IN1wqQ==", "license": "ISC", "dependencies": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.2" }, "engines": { "node": ">=16 || 14 >=14.17" @@ -710,9 +736,9 @@ } }, "node_modules/azure-devops-node-api": { - "version": "14.1.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-devops-node-api/-/azure-devops-node-api-14.1.0.tgz", - "integrity": "sha1-7FOT3p+hRjmd6qtpBOQdoD7c4YA=", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-15.1.2.tgz", + "integrity": "sha512-PfJTGK8oaBB3e0hilF5QE5BT0axpxssZlc0pRq3Rb0XsKr4qk1Cma+jBRRz0hE+zuUsu/7cz0WTCVo+kcVvOjw==", "license": "MIT", "dependencies": { "tunnel": "0.0.6", @@ -1333,9 +1359,9 @@ } }, "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": "sha1-Jt7QR80RebeLlTfV73JVA84a5TE=", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.2.tgz", + "integrity": "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==", "dev": true, "license": "BSD-3-Clause", "engines": { @@ -1834,23 +1860,17 @@ } }, "node_modules/glob": { - "version": "11.1.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-11.1.0.tgz", - "integrity": "sha1-T4JlduTrmcfa04N5PS+fCPZ+UKY=", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "license": "BlueOak-1.0.0", "dependencies": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" - }, - "bin": { - "glob": "dist/esm/bin.mjs" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -2557,12 +2577,13 @@ "license": "MIT" }, "node_modules/jackspeak": { - "version": "4.1.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/jackspeak/-/jackspeak-4.1.1.tgz", - "integrity": "sha1-lodgMPRQUCBH/H6Mf8+M6BJOQ64=", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", + "dev": true, "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/cliui": "^8.0.2" + "@isaacs/cliui": "^9.0.0" }, "engines": { "node": "20 || >=22" @@ -2571,6 +2592,16 @@ "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/jackspeak/node_modules/@isaacs/cliui": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", + "dev": true, + "license": "BlueOak-1.0.0", + "engines": { + "node": ">=18" + } + }, "node_modules/jju": { "version": "1.4.0", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/jju/-/jju-1.4.0.tgz", @@ -2584,9 +2615,9 @@ "license": "MIT" }, "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": "sha1-wftl+PUBeQHN0slRhkuhhFihBgI=", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "license": "MIT", "dependencies": { @@ -2661,9 +2692,9 @@ } }, "node_modules/lodash": { - "version": "4.17.21", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=", + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==", "license": "MIT" }, "node_modules/log-symbols": { @@ -2684,10 +2715,10 @@ } }, "node_modules/lru-cache": { - "version": "11.2.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lru-cache/-/lru-cache-11.2.2.tgz", - "integrity": "sha1-QP037f/PrkspQDecByLcbuqnXyQ=", - "license": "ISC", + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==", + "license": "BlueOak-1.0.0", "engines": { "node": "20 || >=22" } @@ -2760,20 +2791,41 @@ "license": "ISC" }, "node_modules/minimatch": { - "version": "10.1.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha1-5uYbmwwdyrEWtafRRY6LaunnOlU=", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", + "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", "license": "BlueOak-1.0.0", "dependencies": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" } }, + "node_modules/minimatch/node_modules/balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==", + "license": "MIT", + "engines": { + "node": "18 || 20 || >=22" + } + }, + "node_modules/minimatch/node_modules/brace-expansion": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "license": "MIT", + "dependencies": { + "balanced-match": "^4.0.2" + }, + "engines": { + "node": "18 || 20 || >=22" + } + }, "node_modules/minimist": { "version": "1.2.8", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimist/-/minimist-1.2.8.tgz", @@ -2784,10 +2836,10 @@ } }, "node_modules/minipass": { - "version": "7.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha1-k6libOXl5mvU24aEnnUV6SNApwc=", - "license": "ISC", + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==", + "license": "BlueOak-1.0.0", "engines": { "node": ">=16 || 14 >=14.17" } @@ -2806,8 +2858,8 @@ }, "node_modules/mocha": { "version": "10.8.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha1-jYNC0BbtQRsSpCnrcxuCX5Ya+5Y=", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", + "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", "dev": true, "license": "MIT", "dependencies": { @@ -2859,9 +2911,9 @@ }, "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": "sha1-04j2Vlk+9wjuPjRkD9+5mp/Rwz4=", - "deprecated": "Glob versions prior to v9 are no longer supported", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -2879,9 +2931,9 @@ } }, "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": "sha1-HPy4z1Ui6mmVLNKvla4JR38SKpY=", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.7.tgz", + "integrity": "sha512-FjiwU9HaHW6YB3H4a1sFudnv93lvydNjz2lmyUXR6IwKhGI+bgL3SOZrBGn6kvvX2pJvhEkGSGjyTHN47O4rqA==", "dev": true, "license": "ISC", "dependencies": { @@ -3145,16 +3197,16 @@ } }, "node_modules/path-scurry": { - "version": "2.0.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-scurry/-/path-scurry-2.0.0.tgz", - "integrity": "sha1-nwUiifI62L+Tl6KgQl57hhXFhYA=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "license": "BlueOak-1.0.0", "dependencies": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" }, "engines": { - "node": "20 || >=22" + "node": "18 || 20 || >=22" }, "funding": { "url": "https://github.com/sponsors/isaacs" @@ -3219,9 +3271,9 @@ "license": "MIT" }, "node_modules/qs": { - "version": "6.14.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/qs/-/qs-6.14.0.tgz", - "integrity": "sha1-xj+kBoDSxclBQSoOiZyJr2DAqTA=", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", "license": "BSD-3-Clause", "dependencies": { "side-channel": "^1.1.0" @@ -3300,9 +3352,9 @@ } }, "node_modules/readdir-glob/node_modules/minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.7.tgz", + "integrity": "sha512-FjiwU9HaHW6YB3H4a1sFudnv93lvydNjz2lmyUXR6IwKhGI+bgL3SOZrBGn6kvvX2pJvhEkGSGjyTHN47O4rqA==", "license": "ISC", "dependencies": { "brace-expansion": "^2.0.1" @@ -3422,9 +3474,9 @@ }, "node_modules/rimraf/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": "sha1-uN8PuAK7+o6JvR2Ti04WV47UTys=", - "deprecated": "Glob versions prior to v9 are no longer supported", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Old versions of glob are not supported, and contain widely publicized security vulnerabilities, which have been fixed in the current version. Please update. Support for old versions may be purchased (at exorbitant rates) by contacting i@izs.me", "dev": true, "license": "ISC", "dependencies": { @@ -3443,9 +3495,9 @@ } }, "node_modules/rimraf/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": "sha1-Gc0ZS/0+Qo8EmnCBfAONiatL41s=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", + "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", "dev": true, "license": "ISC", "dependencies": { @@ -4673,19 +4725,6 @@ "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@colors/colors/-/colors-1.5.0.tgz", "integrity": "sha1-u1BFecHK6SPmV2pPXaQ9Jfl729k=" }, - "@isaacs/balanced-match": { - "version": "4.0.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@isaacs/balanced-match/-/balanced-match-4.0.1.tgz", - "integrity": "sha1-MIHa28NGBmG3UedZHX+upd853Sk=" - }, - "@isaacs/brace-expansion": { - "version": "5.0.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@isaacs/brace-expansion/-/brace-expansion-5.0.0.tgz", - "integrity": "sha1-Sz2rq32OdaQpQUqWvWe/TB0T4PM=", - "requires": { - "@isaacs/balanced-match": "^4.0.1" - } - }, "@isaacs/cliui": { "version": "8.0.2", "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/@isaacs/cliui/-/cliui-8.0.2.tgz", @@ -4829,6 +4868,22 @@ "requires": { "@types/node": "*", "glob": "^11.0.3" + }, + "dependencies": { + "glob": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-11.1.0.tgz", + "integrity": "sha512-vuNwKSaKiqm7g0THUBu2x7ckSs3XJLXE+2ssL7/MfTGPLLcrJQ/4Uq1CjPTtO5cCIiRxqvN6Twy1qOwhL0Xjcw==", + "dev": true, + "requires": { + "foreground-child": "^3.3.1", + "jackspeak": "^4.1.1", + "minimatch": "^10.1.1", + "minipass": "^7.1.2", + "package-json-from-dist": "^1.0.0", + "path-scurry": "^2.0.0" + } + } } }, "@types/validator": { @@ -4957,10 +5012,23 @@ "readable-stream": "^4.0.0" }, "dependencies": { + "balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==" + }, + "brace-expansion": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "requires": { + "balanced-match": "^4.0.2" + } + }, "glob": { "version": "10.5.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-10.5.0.tgz", - "integrity": "sha1-jsA1WRnNMzjChCiiPU8k7MX+c4w=", + "resolved": "https://registry.npmjs.org/glob/-/glob-10.5.0.tgz", + "integrity": "sha512-DfXN8DfhJ7NH3Oe7cFmu3NCu1wKbkReJ8TorzSAFbSKrlNaQSKfIzqYqVY8zlbs2NLBbWpRiU52GX2PbaBVNkg==", "requires": { "foreground-child": "^3.1.0", "jackspeak": "^3.1.2", @@ -4990,11 +5058,11 @@ "integrity": "sha512-JNAzZcXrCt42VGLuYz0zfAzDfAvJWW6AfYlDBQyDV5DClI2m5sAmK+OIO7s59XfsRsWHp02jAJrRadPRGTt6SQ==" }, "minimatch": { - "version": "9.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", - "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "version": "9.0.6", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.6.tgz", + "integrity": "sha512-kQAVowdR33euIqeA0+VZTDqU+qo1IeVY+hrKYtZMio3Pg0P0vuh/kwRylLUddJhB6pf3q/botcOvRtx4IN1wqQ==", "requires": { - "brace-expansion": "^2.0.1" + "brace-expansion": "^5.0.2" } }, "path-scurry": { @@ -5099,9 +5167,9 @@ } }, "azure-devops-node-api": { - "version": "14.1.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/azure-devops-node-api/-/azure-devops-node-api-14.1.0.tgz", - "integrity": "sha1-7FOT3p+hRjmd6qtpBOQdoD7c4YA=", + "version": "15.1.2", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-15.1.2.tgz", + "integrity": "sha512-PfJTGK8oaBB3e0hilF5QE5BT0axpxssZlc0pRq3Rb0XsKr4qk1Cma+jBRRz0hE+zuUsu/7cz0WTCVo+kcVvOjw==", "requires": { "tunnel": "0.0.6", "typed-rest-client": "2.1.0" @@ -5476,9 +5544,9 @@ } }, "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": "sha1-Jt7QR80RebeLlTfV73JVA84a5TE=", + "version": "5.2.2", + "resolved": "https://registry.npmjs.org/diff/-/diff-5.2.2.tgz", + "integrity": "sha512-vtcDfH3TOjP8UekytvnHH1o1P4FcUdt4eQ1Y+Abap1tk/OB2MWQvcwS2ClCd1zuIhc3JKOx6p3kod8Vfys3E+A==", "dev": true }, "dunder-proto": { @@ -5812,16 +5880,13 @@ } }, "glob": { - "version": "11.1.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/glob/-/glob-11.1.0.tgz", - "integrity": "sha1-T4JlduTrmcfa04N5PS+fCPZ+UKY=", + "version": "13.0.6", + "resolved": "https://registry.npmjs.org/glob/-/glob-13.0.6.tgz", + "integrity": "sha512-Wjlyrolmm8uDpm/ogGyXZXb1Z+Ca2B8NbJwqBVg0axK9GbBeoS7yGV6vjXnYdGm6X53iehEuxxbyiKp8QmN4Vw==", "requires": { - "foreground-child": "^3.3.1", - "jackspeak": "^4.1.1", - "minimatch": "^10.1.1", - "minipass": "^7.1.2", - "package-json-from-dist": "^1.0.0", - "path-scurry": "^2.0.0" + "minimatch": "^10.2.2", + "minipass": "^7.1.3", + "path-scurry": "^2.0.2" } }, "glob-parent": { @@ -6213,11 +6278,20 @@ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=" }, "jackspeak": { - "version": "4.1.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/jackspeak/-/jackspeak-4.1.1.tgz", - "integrity": "sha1-lodgMPRQUCBH/H6Mf8+M6BJOQ64=", + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/jackspeak/-/jackspeak-4.2.3.tgz", + "integrity": "sha512-ykkVRwrYvFm1nb2AJfKKYPr0emF6IiXDYUaFx4Zn9ZuIH7MrzEZ3sD5RlqGXNRpHtvUHJyOnCEFxOlNDtGo7wg==", + "dev": true, "requires": { - "@isaacs/cliui": "^8.0.2" + "@isaacs/cliui": "^9.0.0" + }, + "dependencies": { + "@isaacs/cliui": { + "version": "9.0.0", + "resolved": "https://registry.npmjs.org/@isaacs/cliui/-/cliui-9.0.0.tgz", + "integrity": "sha512-AokJm4tuBHillT+FpMtxQ60n8ObyXBatq7jD2/JA9dxbDDokKQm8KMht5ibGzLVU9IJDIKK4TPKgMHEYMn3lMg==", + "dev": true + } } }, "jju": { @@ -6231,9 +6305,9 @@ "integrity": "sha1-zTs9wEWwxARVbIHdtXVsI+WdfPU=" }, "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": "sha1-wftl+PUBeQHN0slRhkuhhFihBgI=", + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.1.tgz", + "integrity": "sha512-qQKT4zQxXl8lLwBtHMWwaTcGfFOZviOJet3Oy/xmGk2gZH677CJM9EvtfdSkgWcATZhj/55JZ0rmy3myCT5lsA==", "dev": true, "requires": { "argparse": "^2.0.1" @@ -6289,9 +6363,9 @@ } }, "lodash": { - "version": "4.17.21", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lodash/-/lodash-4.17.21.tgz", - "integrity": "sha1-Z5WRxWTDv/quhFTPCz3zcMPWkRw=" + "version": "4.17.23", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.23.tgz", + "integrity": "sha512-LgVTMpQtIopCi79SJeDiP0TfWi5CNEc/L/aRdTh3yIvmZXTnheWpKjSZhnvMl8iXbC1tFg9gdHHDMLoV7CnG+w==" }, "log-symbols": { "version": "4.1.0", @@ -6304,9 +6378,9 @@ } }, "lru-cache": { - "version": "11.2.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/lru-cache/-/lru-cache-11.2.2.tgz", - "integrity": "sha1-QP037f/PrkspQDecByLcbuqnXyQ=" + "version": "11.2.6", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-11.2.6.tgz", + "integrity": "sha512-ESL2CrkS/2wTPfuend7Zhkzo2u0daGJ/A2VucJOgQ/C48S/zB8MMeMHSGKYpXhIjbPxfuezITkaBH1wqv00DDQ==" }, "math-intrinsics": { "version": "1.1.0", @@ -6348,11 +6422,26 @@ "integrity": "sha1-LhlN4ERibUoQ5/f7wAznPoPk1cc=" }, "minimatch": { - "version": "10.1.1", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minimatch/-/minimatch-10.1.1.tgz", - "integrity": "sha1-5uYbmwwdyrEWtafRRY6LaunnOlU=", + "version": "10.2.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-10.2.2.tgz", + "integrity": "sha512-+G4CpNBxa5MprY+04MbgOw1v7So6n5JY166pFi9KfYwT78fxScCeSNQSNzp6dpPSW2rONOps6Ocam1wFhCgoVw==", "requires": { - "@isaacs/brace-expansion": "^5.0.0" + "brace-expansion": "^5.0.2" + }, + "dependencies": { + "balanced-match": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-4.0.4.tgz", + "integrity": "sha512-BLrgEcRTwX2o6gGxGOCNyMvGSp35YofuYzw9h1IMTRmKqttAZZVU67bdb9Pr2vUHA8+j3i2tJfjO6C6+4myGTA==" + }, + "brace-expansion": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-5.0.3.tgz", + "integrity": "sha512-fy6KJm2RawA5RcHkLa1z/ScpBeA762UF9KmZQxwIbDtRJrgLzM10depAiEQ+CXYcoiqW1/m96OAAoke2nE9EeA==", + "requires": { + "balanced-match": "^4.0.2" + } + } } }, "minimist": { @@ -6361,9 +6450,9 @@ "integrity": "sha1-waRk52kzAuCCoHXO4MBXdBrEdyw=" }, "minipass": { - "version": "7.1.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/minipass/-/minipass-7.1.2.tgz", - "integrity": "sha1-k6libOXl5mvU24aEnnUV6SNApwc=" + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-7.1.3.tgz", + "integrity": "sha512-tEBHqDnIoM/1rXME1zgka9g6Q2lcoCkxHLuc7ODJ5BxbP5d4c2Z5cGgtXAku59200Cx7diuHTOYfSBD8n6mm8A==" }, "mkdirp": { "version": "1.0.4", @@ -6372,8 +6461,8 @@ }, "mocha": { "version": "10.8.2", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/mocha/-/mocha-10.8.2.tgz", - "integrity": "sha1-jYNC0BbtQRsSpCnrcxuCX5Ya+5Y=", + "resolved": "https://registry.npmjs.org/mocha/-/mocha-10.8.2.tgz", + "integrity": "sha512-VZlYo/WE8t1tstuRmqgeyBgCbJc/lEdopaa+axcKzTBJ+UIdlAB9XnmvTCAH4pwR4ElNInaedhEBmZD8iCSVEg==", "dev": true, "requires": { "ansi-colors": "^4.1.3", @@ -6400,8 +6489,8 @@ "dependencies": { "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": "sha1-04j2Vlk+9wjuPjRkD9+5mp/Rwz4=", + "resolved": "https://registry.npmjs.org/glob/-/glob-8.1.0.tgz", + "integrity": "sha512-r8hpEjiQEYlF2QU0df3dS+nxxSIreXQS1qRhMJM0Q5NDdR386C7jb7Hwwod8Fgiuex+k0GFjgft18yvxm5XoCQ==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -6412,9 +6501,9 @@ } }, "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": "sha1-HPy4z1Ui6mmVLNKvla4JR38SKpY=", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.7.tgz", + "integrity": "sha512-FjiwU9HaHW6YB3H4a1sFudnv93lvydNjz2lmyUXR6IwKhGI+bgL3SOZrBGn6kvvX2pJvhEkGSGjyTHN47O4rqA==", "dev": true, "requires": { "brace-expansion": "^2.0.1" @@ -6589,9 +6678,9 @@ "integrity": "sha1-WB9q3mWMu6ZaDTOA3ndTKVBU83U=" }, "path-scurry": { - "version": "2.0.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/path-scurry/-/path-scurry-2.0.0.tgz", - "integrity": "sha1-nwUiifI62L+Tl6KgQl57hhXFhYA=", + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/path-scurry/-/path-scurry-2.0.2.tgz", + "integrity": "sha512-3O/iVVsJAPsOnpwWIeD+d6z/7PmqApyQePUtCndjatj/9I5LylHvt5qluFaBT3I5h3r1ejfR056c+FCv+NnNXg==", "requires": { "lru-cache": "^11.0.0", "minipass": "^7.1.2" @@ -6637,9 +6726,9 @@ } }, "qs": { - "version": "6.14.0", - "resolved": "https://pkgs.dev.azure.com/mseng/PipelineTools/_packaging/PipelineTools_PublicPackages/npm/registry/qs/-/qs-6.14.0.tgz", - "integrity": "sha1-xj+kBoDSxclBQSoOiZyJr2DAqTA=", + "version": "6.15.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.15.0.tgz", + "integrity": "sha512-mAZTtNCeetKMH+pSjrb76NAM8V9a05I9aBZOHztWy/UqcJdQYNsf59vrRKWnojAT9Y+GbIvoTBC++CPHqpDBhQ==", "requires": { "side-channel": "^1.1.0" } @@ -6689,9 +6778,9 @@ }, "dependencies": { "minimatch": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.6.tgz", - "integrity": "sha512-lKwV/1brpG6mBUFHtb7NUmtABCb2WZZmm2wNiOA5hAb8VdCS4B3dtMWyvcoViccwAW/COERjXLt0zP1zXUN26g==", + "version": "5.1.7", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-5.1.7.tgz", + "integrity": "sha512-FjiwU9HaHW6YB3H4a1sFudnv93lvydNjz2lmyUXR6IwKhGI+bgL3SOZrBGn6kvvX2pJvhEkGSGjyTHN47O4rqA==", "requires": { "brace-expansion": "^2.0.1" } @@ -6772,8 +6861,8 @@ }, "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": "sha1-uN8PuAK7+o6JvR2Ti04WV47UTys=", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "dev": true, "requires": { "fs.realpath": "^1.0.0", @@ -6785,9 +6874,9 @@ } }, "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": "sha1-Gc0ZS/0+Qo8EmnCBfAONiatL41s=", + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.3.tgz", + "integrity": "sha512-M2GCs7Vk83NxkUyQV1bkABc4yxgz9kILhHImZiBPAZ9ybuvCb0/H7lEl5XvIg3g+9d4eNotkZA5IWwYl0tibaA==", "dev": true, "requires": { "brace-expansion": "^1.1.7" diff --git a/package.json b/package.json index f4d554c3..0a8202de 100644 --- a/package.json +++ b/package.json @@ -42,14 +42,14 @@ "dependencies": { "app-root-path": "1.0.0", "archiver": "^7.0.1", - "azure-devops-node-api": "^14.0.0", + "azure-devops-node-api": "^15.1.2", "clipboardy": "^4.0.0", "colors": "~1.3.0", - "glob": "^11.1.0", + "glob": "^13.0.6", "jju": "^1.4.0", "json-in-place": "^1.0.1", "jszip": "^3.10.1", - "lodash": "^4.17.21", + "lodash": "^4.17.23", "minimist": "^1.2.6", "mkdirp": "^1.0.4", "onecolor": "^2.5.0",