diff --git a/.github/copilot-instructions.md b/.github/copilot-instructions.md new file mode 100644 index 00000000..2186bdee --- /dev/null +++ b/.github/copilot-instructions.md @@ -0,0 +1,60 @@ +# AI Coding Agent Instructions + +Purpose: Help agents quickly contribute to Azure DevOps Extension Tasks (publishing & packaging tasks for Azure/VS Marketplace). + +## Big Picture +- This repo builds an Azure DevOps extension that contributes multiple pipeline tasks (see `vss-extension.json` > `contributions`). Each task lives under `BuildTasks//v5/` with a `task.json` (declarative metadata) and a TypeScript implementation file compiled to JS. +- Tasks wrap the `tfx-cli` to package/publish/share/install/query Azure DevOps & Visual Studio extensions. Common cross-cutting logic (auth, arg building, JSON stream parsing, version utilities) is centralized in `BuildTasks/Common/v5/Common.ts`. +- Build flow: install dependencies locally per task folder, compile TS with project references, lint, then prune/dedupe before packaging the VSIX manifest. +- CI pipeline (`azure-pipelines.yml`) produces three VSIX variants (build/private/public) and optionally publishes them. + +## Key Workflows +- Dev setup: run `npm run initdev` (installs root deps + each task's deps). Then `npm run build` compiles all tasks. Use `npm run package` for per-task dependency pruning before creating .vsix. +- Packaging extension (local): `tfx extension create --root . --output-path dist --manifest-globs vss-extension.json` (scripted by `package:tasks`). +- Manifest adjustments: `fix-manifest-file.ps1` cleans & re-adds certain binary/no-extension files before packaging. +- Test scripts (`test-*.cmd`) emulate agent execution by setting `INPUT_*` env vars matching `task.json` inputs and running the task's generated JS entrypoint. + +## Task Implementation Pattern +- Entry script calls `common.runTfx(async tfx => { ... })` providing an async block that builds CLI args then executes `tfx.execAsync`. +- Inputs are fetched using `azure-pipelines-task-lib` (`tl.getInput`, `tl.getBoolInput`, `tl.getPathInput`, `tl.getDelimitedInput`). Task results set via `tl.setResult` and output variables with `tl.setVariable`. +- File globbing: if a task allows wildcard inputs (e.g. `vsixFile`), use `tl.findMatch(cwd, pattern)` and enforce exactly one match. +- Conditional arg inclusion uses `tfx.argIf(condition, ["--flag", value])` (defined in common helpers). +- JSON output capture: tasks redirect `tfx` output to stderr or stdout and then parse via `new common.TfxJsonOutputStream(...)` to inspect `json.published` or similar properties. + +## Version & Metadata Handling +- Extension version sourced via `common.getExtensionVersion()` (uses manifest or task inputs). Task can update embedded task versions/IDs when packaging/publishing (`updateTasksVersion`, `updateTasksId`). Logic lives in Common utilities. +- `task.json` declares execution targets for multiple Node versions (e.g. `Node20_1`, `Node16`), so generated JS must remain backward-compatible with both. + +## Conventions +- Each task folder structure: `BuildTasks//v5/{.ts, task.json, package.json, tsconfig.json}`; compiled JS ends parallel to TS. Avoid cross-imports between tasks except via `../Common/v5/Common.js`. +- Use explicit relative imports ending in `.js` for runtime JS resolution (e.g. `import tl from "azure-pipelines-task-lib/task.js"`). +- Keep side effects inside the `runTfx` callback; return a resolved `true` to signal completion. +- Prefer adding new shared logic to `Common.ts` instead of duplicating in tasks. + +## Adding or Modifying a Task +1. Copy an existing task folder structure (e.g. `PublishExtension/v5`) and adjust `task.json` metadata (id, name, inputs, demands, execution target). +2. Implement logic following the existing pattern: gather inputs early; validate file existence; build `tfx` args; execute once; parse JSON; set result & output variable. +3. Add the task path to `vss-extension.json` under `files` and a contribution entry under `contributions` if it's a new task. +4. Run `npm run build` and ensure lint passes (`npm run lint:tasks`). +5. If the task needs to modify the VSIX, reuse `VsixEditor` patterns from `PublishExtension.ts`. + +## Performance & Size Practices +- After build, pipeline deletes unnecessary files (`*.map`, tests, markdown, licenses, unused platform bins) from each task's `node_modules` to shrink VSIX size. +- Local dev shouldn’t manually prune during iteration; rely on CI or `npm run package` before shipping. + +## Common Pitfalls +- Forgetting to install per-task dependencies after adding a new task: rerun `npm run initdev`. +- Wildcard file patterns resolving to none or multiple files must fail early with `tl.setResult(Failed, ...)`. +- Ensure new task inputs align with environment variable naming used in test scripts (`INPUT_` pattern in legacy tests). +- Maintain Node version compatibility (avoid APIs newer than Node16 unless guarded). + +## External Integrations +- `tfx-cli` drives extension publishing, sharing, installing; tasks craft CLI args rather than reimplement REST calls. +- Uses `azure-pipelines-task-lib` for agent interaction. Do not replace with ad-hoc env parsing. + +## When Unsure +- Inspect a similar existing task’s TS + `task.json` pair. +- Put reusable helpers in `Common.ts` and import them. +- Ask whether a change affects packaging size; if yes, mirror cleanup logic or update `azure-pipelines.yml` pruning step. + +Provide feedback on unclear sections or request deeper coverage (e.g. Common utilities breakdown) before expanding this doc. diff --git a/.github/dependabot.yml b/.github/dependabot.yml index 23865ce4..ad447f2b 100644 --- a/.github/dependabot.yml +++ b/.github/dependabot.yml @@ -5,200 +5,119 @@ version: 2 updates: - - package-ecosystem: "github-actions" - directory: "/" - schedule: - interval: "weekly" - - package-ecosystem: "npm" - directory: "/" - schedule: - interval: "weekly" - groups: - ESLint: - patterns: - - esbuild - - eslint - - "@typescript-eslint/*" - - "@eslint/*" - - typescript-eslint +- package-ecosystem: "github-actions" + directory: "/" + schedule: + interval: "weekly" +- package-ecosystem: "npm" + directory: "/" + schedule: + interval: "weekly" + groups: + ESLint: + patterns: + - esbuild + - eslint + - "@typescript-eslint/*" + - "@eslint/*" + - typescript-eslint - - package-ecosystem: "npm" - directory: "/BuildTasks/Common/v4" - schedule: - interval: "weekly" - ignore: - - dependency-name: "azure-pipelines-task-lib" - update-types: ["version-update:semver-major"] - - dependency-name: "@types/node" - update-types: ["version-update:semver-major"] - - package-ecosystem: "npm" - directory: "/BuildTasks/ExtensionVersion/v4" - schedule: - interval: "weekly" - ignore: - - dependency-name: "azure-pipelines-task-lib" - update-types: ["version-update:semver-major"] - - dependency-name: "@types/node" - update-types: ["version-update:semver-major"] - - package-ecosystem: "npm" - directory: "/BuildTasks/InstallExtension/v4" - schedule: - interval: "weekly" - ignore: - - dependency-name: "azure-pipelines-task-lib" - update-types: ["version-update:semver-major"] - - dependency-name: "@types/node" - update-types: ["version-update:semver-major"] - - package-ecosystem: "npm" - directory: "/BuildTasks/IsValidExtensionAgent/v4" - schedule: - interval: "weekly" - ignore: - - dependency-name: "azure-pipelines-task-lib" - update-types: ["version-update:semver-major"] - - dependency-name: "@types/node" - update-types: ["version-update:semver-major"] - - package-ecosystem: "npm" - directory: "/BuildTasks/PackageExtension/v4" - schedule: - interval: "weekly" - ignore: - - dependency-name: "azure-pipelines-task-lib" - update-types: ["version-update:semver-major"] - - dependency-name: "@types/node" - update-types: ["version-update:semver-major"] - - package-ecosystem: "npm" - directory: "/BuildTasks/PublishExtension/v4" - schedule: - interval: "weekly" - ignore: - - dependency-name: "azure-pipelines-task-lib" - update-types: ["version-update:semver-major"] - - dependency-name: "@types/node" - update-types: ["version-update:semver-major"] - - package-ecosystem: "npm" - directory: "/BuildTasks/PublishVSExtension/v4" - schedule: - interval: "weekly" - ignore: - - dependency-name: "azure-pipelines-task-lib" - update-types: ["version-update:semver-major"] - - dependency-name: "@types/node" - update-types: ["version-update:semver-major"] - - package-ecosystem: "npm" - directory: "/BuildTasks/ShareExtension/v4" - schedule: - interval: "weekly" - ignore: - - dependency-name: "azure-pipelines-task-lib" - update-types: ["version-update:semver-major"] - - dependency-name: "@types/node" - update-types: ["version-update:semver-major"] - - package-ecosystem: "npm" - directory: "/BuildTasks/TfxInstaller/v4" - schedule: - interval: "weekly" - ignore: - - dependency-name: "azure-pipelines-task-lib" - update-types: ["version-update:semver-major"] - - dependency-name: "@types/node" - update-types: ["version-update:semver-major"] - - package-ecosystem: "npm" - directory: "/BuildTasks/UnpublishExtension/v4" - schedule: - interval: "weekly" - ignore: - - dependency-name: "azure-pipelines-task-lib" - update-types: ["version-update:semver-major"] - - dependency-name: "@types/node" - update-types: ["version-update:semver-major"] - - package-ecosystem: "npm" - directory: "/BuildTasks/Common/v5" - schedule: - interval: "weekly" - ignore: - - dependency-name: "azure-pipelines-task-lib" - update-types: ["version-update:semver-major"] - - dependency-name: "@types/node" - update-types: ["version-update:semver-major"] - - package-ecosystem: "npm" - directory: "/BuildTasks/ExtensionVersion/v5" - schedule: - interval: "weekly" - ignore: - - dependency-name: "azure-pipelines-task-lib" - update-types: ["version-update:semver-major"] - - dependency-name: "@types/node" - update-types: ["version-update:semver-major"] - - package-ecosystem: "npm" - directory: "/BuildTasks/InstallExtension/v5" - schedule: - interval: "weekly" - ignore: - - dependency-name: "azure-pipelines-task-lib" - update-types: ["version-update:semver-major"] - - dependency-name: "@types/node" - update-types: ["version-update:semver-major"] - - package-ecosystem: "npm" - directory: "/BuildTasks/IsValidExtensionAgent/v5" - schedule: - interval: "weekly" - ignore: - - dependency-name: "azure-pipelines-task-lib" - update-types: ["version-update:semver-major"] - - dependency-name: "@types/node" - update-types: ["version-update:semver-major"] - - package-ecosystem: "npm" - directory: "/BuildTasks/PackageExtension/v5" - schedule: - interval: "weekly" - ignore: - - dependency-name: "azure-pipelines-task-lib" - update-types: ["version-update:semver-major"] - - dependency-name: "@types/node" - update-types: ["version-update:semver-major"] - - package-ecosystem: "npm" - directory: "/BuildTasks/PublishExtension/v5" - schedule: - interval: "weekly" - ignore: - - dependency-name: "azure-pipelines-task-lib" - update-types: ["version-update:semver-major"] - - dependency-name: "@types/node" - update-types: ["version-update:semver-major"] - - package-ecosystem: "npm" - directory: "/BuildTasks/PublishVSExtension/v5" - schedule: - interval: "weekly" - ignore: - - dependency-name: "azure-pipelines-task-lib" - update-types: ["version-update:semver-major"] - - dependency-name: "@types/node" - update-types: ["version-update:semver-major"] - - package-ecosystem: "npm" - directory: "/BuildTasks/ShareExtension/v5" - schedule: - interval: "weekly" - ignore: - - dependency-name: "azure-pipelines-task-lib" - update-types: ["version-update:semver-major"] - - dependency-name: "@types/node" - update-types: ["version-update:semver-major"] - - package-ecosystem: "npm" - directory: "/BuildTasks/TfxInstaller/v5" - schedule: - interval: "weekly" - ignore: - - dependency-name: "azure-pipelines-task-lib" - update-types: ["version-update:semver-major"] - - dependency-name: "@types/node" - update-types: ["version-update:semver-major"] - - package-ecosystem: "npm" - directory: "/BuildTasks/UnpublishExtension/v5" - schedule: - interval: "weekly" - ignore: - - dependency-name: "azure-pipelines-task-lib" - update-types: ["version-update:semver-major"] - - dependency-name: "@types/node" - update-types: ["version-update:semver-major"] +- package-ecosystem: "npm" + directory: "/BuildTasks/Common/v5" + schedule: + interval: "weekly" + ignore: + - dependency-name: "azure-pipelines-task-lib" + update-types: [ "version-update:semver-major" ] + - dependency-name: "@types/node" + update-types: [ "version-update:semver-major" ] +- package-ecosystem: "npm" + directory: "/BuildTasks/Common-Auth/v5" + schedule: + interval: "weekly" + ignore: + - dependency-name: "azure-pipelines-task-lib" + update-types: [ "version-update:semver-major" ] + - dependency-name: "@types/node" + update-types: [ "version-update:semver-major" ] +- package-ecosystem: "npm" + directory: "/BuildTasks/ExtensionVersion/v5" + schedule: + interval: "weekly" + ignore: + - dependency-name: "azure-pipelines-task-lib" + update-types: [ "version-update:semver-major" ] + - dependency-name: "@types/node" + update-types: [ "version-update:semver-major" ] +- package-ecosystem: "npm" + directory: "/BuildTasks/InstallExtension/v5" + schedule: + interval: "weekly" + ignore: + - dependency-name: "azure-pipelines-task-lib" + update-types: [ "version-update:semver-major" ] + - dependency-name: "@types/node" + update-types: [ "version-update:semver-major" ] +- package-ecosystem: "npm" + directory: "/BuildTasks/IsValidExtensionAgent/v5" + schedule: + interval: "weekly" + ignore: + - dependency-name: "azure-pipelines-task-lib" + update-types: [ "version-update:semver-major" ] + - dependency-name: "@types/node" + update-types: [ "version-update:semver-major" ] +- package-ecosystem: "npm" + directory: "/BuildTasks/PackageExtension/v5" + schedule: + interval: "weekly" + ignore: + - dependency-name: "azure-pipelines-task-lib" + update-types: [ "version-update:semver-major" ] + - dependency-name: "@types/node" + update-types: [ "version-update:semver-major" ] +- package-ecosystem: "npm" + directory: "/BuildTasks/PublishExtension/v5" + schedule: + interval: "weekly" + ignore: + - dependency-name: "azure-pipelines-task-lib" + update-types: [ "version-update:semver-major" ] + - dependency-name: "@types/node" + update-types: [ "version-update:semver-major" ] +- package-ecosystem: "npm" + directory: "/BuildTasks/PublishVSExtension/v5" + schedule: + interval: "weekly" + ignore: + - dependency-name: "azure-pipelines-task-lib" + update-types: [ "version-update:semver-major" ] + - dependency-name: "@types/node" + update-types: [ "version-update:semver-major" ] +- package-ecosystem: "npm" + directory: "/BuildTasks/ShareExtension/v5" + schedule: + interval: "weekly" + ignore: + - dependency-name: "azure-pipelines-task-lib" + update-types: [ "version-update:semver-major" ] + - dependency-name: "@types/node" + update-types: [ "version-update:semver-major" ] +- package-ecosystem: "npm" + directory: "/BuildTasks/TfxInstaller/v5" + schedule: + interval: "weekly" + ignore: + - dependency-name: "azure-pipelines-task-lib" + update-types: [ "version-update:semver-major" ] + - dependency-name: "@types/node" + update-types: [ "version-update:semver-major" ] +- package-ecosystem: "npm" + directory: "/BuildTasks/UnpublishExtension/v5" + schedule: + interval: "weekly" + ignore: + - dependency-name: "azure-pipelines-task-lib" + update-types: [ "version-update:semver-major" ] + - dependency-name: "@types/node" + update-types: [ "version-update:semver-major" ] diff --git a/.gitignore b/.gitignore index b9dc9fab..7c159d12 100644 --- a/.gitignore +++ b/.gitignore @@ -17,8 +17,8 @@ BuildTasks/*Extension*/common.ts /BuildTasks/PublishExtension/debug.cmd /BuildTasks/IsValidExtensionAgent/debug.cmd *.env -BuildTasks/*/v*/**/*.js -BuildTasks/*/v*/**/*.js.map +BuildTasks/**/*.js +BuildTasks/**/*.js.map tsconfig.tsbuildinfo /*.pfx diff --git a/BuildTasks/Common-Auth/CommonAuth.ts b/BuildTasks/Common-Auth/CommonAuth.ts new file mode 100644 index 00000000..4b8b0b68 --- /dev/null +++ b/BuildTasks/Common-Auth/CommonAuth.ts @@ -0,0 +1,70 @@ +import tl from "azure-pipelines-task-lib"; +import { ToolRunner } from "azure-pipelines-task-lib/toolrunner.js"; +import { AzureRMEndpoint } from "azure-pipelines-tasks-azure-arm-rest/azure-arm-endpoint.js"; + +export function getMarketplaceEndpointDetails(inputFieldName: string): { + url: string; + username: string; + password: string; + apitoken: string; +} { + const marketplaceEndpoint = tl.getInput(inputFieldName, true); + + const hostUrl = tl.getEndpointUrl(marketplaceEndpoint, false); + const auth = tl.getEndpointAuthorization(marketplaceEndpoint, false); + const password = auth.parameters["password"]; + const username = auth.parameters["username"]; + const apitoken = auth.parameters["apitoken"]; + + return { + url: hostUrl, + username: username, + password: password, + apitoken: apitoken + }; +} + +export async function setTfxMarketplaceArguments(tfx: ToolRunner, setServiceUrl = true): Promise { + const connectTo = tl.getInput("connectTo", false) || "VsTeam"; + + if (connectTo === "VsTeam") { + const galleryEndpoint = getMarketplaceEndpointDetails("connectedServiceName"); + tl.setSecret(galleryEndpoint.password); + tfx.argIf(setServiceUrl, ["--service-url", galleryEndpoint.url]); + tfx.arg(["--auth-type", "pat"]); + tfx.arg(["--token", galleryEndpoint.password]); + } + else if (connectTo === "AzureRM") { + const serviceName = tl.getInput("connectedServiceNameAzureRM", true); + const endpoint = await new AzureRMEndpoint(serviceName).getEndpoint(); + + // Ensure the access token includes Marketplace scopes. + endpoint.applicationTokenCredentials.activeDirectoryResourceId = "499b84ac-1321-427f-aa17-267ca6975798"; + const token = await endpoint.applicationTokenCredentials.getToken(); + tfx.argIf(setServiceUrl, ["--service-url", "https://marketplace.visualstudio.com"]); + tfx.arg(["--auth-type", "pat"]); + tfx.arg(["--token", token]); + tl.setSecret(token); + } + else { + const galleryEndpoint = getMarketplaceEndpointDetails("connectedServiceNameTFS"); + tfx.argIf(setServiceUrl, ["--service-url", galleryEndpoint.url]); + + if (galleryEndpoint.username) { + tfx.arg(["--auth-type", "basic"]); + tfx.arg(["--username", galleryEndpoint.username]); + tfx.arg(["--password", galleryEndpoint.password]); + tl.setSecret(galleryEndpoint.password); + } + else { + tfx.arg(["--auth-type", "pat"]); + tfx.arg(["--token", galleryEndpoint.apitoken]); + tl.setSecret(galleryEndpoint.apitoken); + } + } +} + +export default { + getMarketplaceEndpointDetails, + setTfxMarketplaceArguments +}; \ No newline at end of file diff --git a/BuildTasks/Common-Auth/package-lock.json b/BuildTasks/Common-Auth/package-lock.json new file mode 100644 index 00000000..4c2f052c --- /dev/null +++ b/BuildTasks/Common-Auth/package-lock.json @@ -0,0 +1,1471 @@ +{ + "name": "vsts-developer-tools.common-authv5", + "version": "5.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "vsts-developer-tools.common-authv5", + "version": "5.0.0", + "license": "MIT", + "dependencies": { + "azure-pipelines-task-lib": "^4.17.3", + "azure-pipelines-tasks-azure-arm-rest": "^3.263.1" + } + }, + "node_modules/@azure/abort-controller": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", + "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", + "license": "MIT", + "dependencies": { + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=12.0.0" + } + }, + "node_modules/@azure/core-auth": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz", + "integrity": "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-util": "^1.13.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/core-auth/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-client": { + "version": "1.10.1", + "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.1.tgz", + "integrity": "sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.10.0", + "@azure/core-rest-pipeline": "^1.22.0", + "@azure/core-tracing": "^1.3.0", + "@azure/core-util": "^1.13.0", + "@azure/logger": "^1.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/core-client/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline": { + "version": "1.22.2", + "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.2.tgz", + "integrity": "sha512-MzHym+wOi8CLUlKCQu12de0nwcq9k9Kuv43j4Wa++CsCpJwps2eeBQwD2Bu8snkxTtDKDx4GwjuR9E8yC8LNrg==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@azure/core-auth": "^1.10.0", + "@azure/core-tracing": "^1.3.0", + "@azure/core-util": "^1.13.0", + "@azure/logger": "^1.3.0", + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/core-tracing": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz", + "integrity": "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/core-util": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz", + "integrity": "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^2.1.2", + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/core-util/node_modules/@azure/abort-controller": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", + "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=18.0.0" + } + }, + "node_modules/@azure/identity": { + "version": "3.4.2", + "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-3.4.2.tgz", + "integrity": "sha512-0q5DL4uyR0EZ4RXQKD8MadGH6zTIcloUoS/RVbCpNpej4pwte0xpqYxk8K97Py2RiuUvI7F4GXpoT4046VfufA==", + "license": "MIT", + "dependencies": { + "@azure/abort-controller": "^1.0.0", + "@azure/core-auth": "^1.5.0", + "@azure/core-client": "^1.4.0", + "@azure/core-rest-pipeline": "^1.1.0", + "@azure/core-tracing": "^1.0.0", + "@azure/core-util": "^1.6.1", + "@azure/logger": "^1.0.0", + "@azure/msal-browser": "^3.5.0", + "@azure/msal-node": "^2.5.1", + "events": "^3.0.0", + "jws": "^4.0.0", + "open": "^8.0.0", + "stoppable": "^1.1.0", + "tslib": "^2.2.0" + }, + "engines": { + "node": ">=14.0.0" + } + }, + "node_modules/@azure/logger": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz", + "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==", + "license": "MIT", + "dependencies": { + "@typespec/ts-http-runtime": "^0.3.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@azure/msal-browser": { + "version": "3.30.0", + "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.30.0.tgz", + "integrity": "sha512-I0XlIGVdM4E9kYP5eTjgW8fgATdzwxJvQ6bm2PNiHaZhEuUz47NYw1xHthC9R+lXz4i9zbShS0VdLyxd7n0GGA==", + "license": "MIT", + "dependencies": { + "@azure/msal-common": "14.16.1" + }, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-common": { + "version": "14.16.1", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.16.1.tgz", + "integrity": "sha512-nyxsA6NA4SVKh5YyRpbSXiMr7oQbwark7JU9LMeg6tJYTSPyAGkdx61wPT4gyxZfxlSxMMEyAsWaubBlNyIa1w==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@azure/msal-node": { + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.16.3.tgz", + "integrity": "sha512-CO+SE4weOsfJf+C5LM8argzvotrXw252/ZU6SM2Tz63fEblhH1uuVaaO4ISYFuN4Q6BhTo7I3qIdi8ydUQCqhw==", + "license": "MIT", + "dependencies": { + "@azure/msal-common": "14.16.1", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/@azure/msal-node/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/@types/jsonwebtoken": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", + "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==", + "license": "MIT", + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==", + "license": "MIT" + }, + "node_modules/@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", + "license": "MIT" + }, + "node_modules/@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==", + "license": "MIT" + }, + "node_modules/@typespec/ts-http-runtime": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.2.tgz", + "integrity": "sha512-IlqQ/Gv22xUC1r/WQm4StLkYQmaaTsXAhUVsNE0+xiyf0yRFiH5++q78U3bw6bLKDCTmh0uqKB9eG9+Bt75Dkg==", + "license": "MIT", + "dependencies": { + "http-proxy-agent": "^7.0.0", + "https-proxy-agent": "^7.0.0", + "tslib": "^2.6.2" + }, + "engines": { + "node": ">=20.0.0" + } + }, + "node_modules/@typespec/ts-http-runtime/node_modules/https-proxy-agent": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", + "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.2", + "debug": "4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/adm-zip": { + "version": "0.5.16", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.16.tgz", + "integrity": "sha512-TGw5yVi4saajsSEgz25grObGHEUaDrniwvA2qwSC060KfqGPdglhvPMA2lPIoxs3PQIItj2iag35fONcQqgUaQ==", + "license": "MIT", + "engines": { + "node": ">=12.0" + } + }, + "node_modules/agent-base": { + "version": "7.1.4", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", + "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", + "license": "MIT", + "engines": { + "node": ">= 14" + } + }, + "node_modules/async-mutex": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.1.tgz", + "integrity": "sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==", + "license": "MIT", + "dependencies": { + "tslib": "^2.4.0" + } + }, + "node_modules/azure-devops-node-api": { + "version": "14.1.0", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-14.1.0.tgz", + "integrity": "sha512-QhpgjH1LQ+vgDJ7oBwcmsZ3+o4ZpjLVilw0D3oJQpYpRzN+L39lk5jZDLJ464hLUgsDzWn/Ksv7zLLMKLfoBzA==", + "license": "MIT", + "dependencies": { + "tunnel": "0.0.6", + "typed-rest-client": "2.1.0" + }, + "engines": { + "node": ">= 16.0.0" + } + }, + "node_modules/azure-pipelines-task-lib": { + "version": "4.17.3", + "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.17.3.tgz", + "integrity": "sha512-UxfH5pk3uOHTi9TtLtdDyugQVkFES5A836ZEePjcs3jYyxm3EJ6IlFYq6gbfd6mNBhrM9fxG2u/MFYIJ+Z0cxQ==", + "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-azure-arm-rest": { + "version": "3.263.1", + "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-azure-arm-rest/-/azure-pipelines-tasks-azure-arm-rest-3.263.1.tgz", + "integrity": "sha512-19HPDiU1aHpeqe1BQMucjZhkYKM/rHXr5dGmOLIf4toEw2MwsJmtXA4nPFsfVRX/VkBzdgrn7/XRyfT4UfXWcw==", + "license": "MIT", + "dependencies": { + "@azure/identity": "^3.4.2", + "@types/jsonwebtoken": "^8.5.8", + "@types/mocha": "^5.2.7", + "@types/node": "^10.17.0", + "@types/q": "1.5.4", + "async-mutex": "^0.4.0", + "azure-devops-node-api": "^14.0.1", + "azure-pipelines-task-lib": "^4.11.0", + "https-proxy-agent": "^4.0.0", + "jsonwebtoken": "^9.0.0", + "msalv1": "npm:@azure/msal-node@^1.18.4", + "msalv2": "npm:@azure/msal-node@^2.7.0", + "msalv3": "npm:@azure/msal-node@^3.5.3", + "node-fetch": "^2.6.7", + "q": "1.5.1", + "typed-rest-client": "^2.0.1", + "xml2js": "0.6.2" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "license": "MIT" + }, + "node_modules/brace-expansion": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", + "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", + "license": "MIT", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", + "license": "BSD-3-Clause" + }, + "node_modules/call-bind-apply-helpers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.2.tgz", + "integrity": "sha512-Sp1ablJ0ivDkSzjcaJdxEunN5/XvksFJ2sMBFfq6x0ryhQV/2b/KwFe21cMpmHtPOSij8K99/wSfoEuTObmuMQ==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/call-bound": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.4.tgz", + "integrity": "sha512-+ys997U96po4Kx/ABpBCqhA9EuxJaQWDQg7295H4hBphv3IZg0boBKuwYpt4YXp6MZ5AmZQnU/tyMTlRpaSejg==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "get-intrinsic": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "license": "MIT" + }, + "node_modules/debug": { + "version": "4.4.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.4.3.tgz", + "integrity": "sha512-RGwwWnwQvkVfavKVt22FGLw+xYSdzARwm0ru6DhTVA3umU5hZc28V3kO4stgYryrTlLpuvgI9GiijltAjNbcqA==", + "license": "MIT", + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/define-lazy-prop": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", + "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", + "license": "MIT", + "engines": { + "node": ">=8" + } + }, + "node_modules/des.js": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", + "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", + "license": "MIT", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/dunder-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", + "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.1", + "es-errors": "^1.3.0", + "gopd": "^1.2.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "license": "Apache-2.0", + "dependencies": { + "safe-buffer": "^5.0.1" + } + }, + "node_modules/es-define-property": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", + "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.1.1.tgz", + "integrity": "sha512-FGgH2h8zKNim9ljj7dankFPcICIK9Cp5bm+c2gQSYePhpaG5+esrLODihIorn+Pe6FGJzWhXQotPv73jTaldXA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/events": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", + "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", + "license": "MIT", + "engines": { + "node": ">=0.8.x" + } + }, + "node_modules/follow-redirects": { + "version": "1.15.11", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.11.tgz", + "integrity": "sha512-deG2P0JfjrTxl50XGCDyfI97ZGVCxIpfKYmfyrQ54n5FO/0gfIES8C/Psl6kWVDolizcaaxZJnTS0QSMxvnsBQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "license": "MIT", + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "license": "ISC" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "license": "MIT", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.3.0.tgz", + "integrity": "sha512-9fSjSaos/fRIVIp+xSJlE6lfwhES7LNtKaCBIamHsjr2na1BiABJPo0mOjjz8GJDURarmCPGqaiVg5mfjb98CQ==", + "license": "MIT", + "dependencies": { + "call-bind-apply-helpers": "^1.0.2", + "es-define-property": "^1.0.1", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.1.1", + "function-bind": "^1.1.2", + "get-proto": "^1.0.1", + "gopd": "^1.2.0", + "has-symbols": "^1.1.0", + "hasown": "^2.0.2", + "math-intrinsics": "^1.1.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", + "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", + "license": "MIT", + "dependencies": { + "dunder-proto": "^1.0.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "license": "ISC", + "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://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/gopd": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", + "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", + "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "license": "MIT", + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/http-proxy-agent": { + "version": "7.0.2", + "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", + "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", + "license": "MIT", + "dependencies": { + "agent-base": "^7.1.0", + "debug": "^4.3.4" + }, + "engines": { + "node": ">= 14" + } + }, + "node_modules/https-proxy-agent": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", + "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", + "license": "MIT", + "dependencies": { + "agent-base": "5", + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/https-proxy-agent/node_modules/agent-base": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", + "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", + "license": "MIT", + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "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.", + "license": "ISC", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "license": "ISC" + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "license": "MIT", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-core-module": { + "version": "2.16.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.16.1.tgz", + "integrity": "sha512-UfoeMA6fIJ8wTYFEUjelnaGI67v6+N7qXJEvQuIGa99l4xsCruSYOVSQ0uPANn4dAzm8lkYPaKLrrijLq7x23w==", + "license": "MIT", + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-docker": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", + "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", + "license": "MIT", + "bin": { + "is-docker": "cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-wsl": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", + "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", + "license": "MIT", + "dependencies": { + "is-docker": "^2.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/js-md4": { + "version": "0.3.2", + "resolved": "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz", + "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==", + "license": "MIT" + }, + "node_modules/jsonwebtoken": { + "version": "9.0.2", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", + "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", + "license": "MIT", + "dependencies": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=12", + "npm": ">=6" + } + }, + "node_modules/jsonwebtoken/node_modules/jwa": { + "version": "1.4.2", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.2.tgz", + "integrity": "sha512-eeH5JO+21J78qMvTIDdBXidBd6nG2kZjg5Ohz/1fpa28Z4CcsWUzJ1ZZyFq/3z3N17aZy+ZuBoHljASbL1WfOw==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jsonwebtoken/node_modules/jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "license": "MIT", + "dependencies": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jsonwebtoken/node_modules/semver": { + "version": "7.7.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.3.tgz", + "integrity": "sha512-SdsKMrI9TdgjdweUSR9MweHA4EJ8YxHn8DFaDisvhVlUOe4BF1tLD7GAj0lIqWVl+dPb/rExr0Btby5loQm20Q==", + "license": "ISC", + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/jwa": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", + "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", + "license": "MIT", + "dependencies": { + "buffer-equal-constant-time": "^1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/jws": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", + "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", + "license": "MIT", + "dependencies": { + "jwa": "^2.0.0", + "safe-buffer": "^5.0.1" + } + }, + "node_modules/lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", + "license": "MIT" + }, + "node_modules/lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", + "license": "MIT" + }, + "node_modules/lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", + "license": "MIT" + }, + "node_modules/lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", + "license": "MIT" + }, + "node_modules/lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", + "license": "MIT" + }, + "node_modules/lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", + "license": "MIT" + }, + "node_modules/lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", + "license": "MIT" + }, + "node_modules/math-intrinsics": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", + "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "license": "MIT", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "license": "MIT", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/minimalistic-assert": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", + "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", + "license": "ISC" + }, + "node_modules/minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "license": "ISC", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "license": "MIT" + }, + "node_modules/msalv1": { + "name": "@azure/msal-node", + "version": "1.18.4", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.18.4.tgz", + "integrity": "sha512-Kc/dRvhZ9Q4+1FSfsTFDME/v6+R2Y1fuMty/TfwqE5p9GTPw08BPbKgeWinE8JRHRp+LemjQbUZsn4Q4l6Lszg==", + "deprecated": "A newer major version of this library is available. Please upgrade to the latest available version.", + "license": "MIT", + "dependencies": { + "@azure/msal-common": "13.3.1", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": "10 || 12 || 14 || 16 || 18" + } + }, + "node_modules/msalv1/node_modules/@azure/msal-common": { + "version": "13.3.1", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-13.3.1.tgz", + "integrity": "sha512-Lrk1ozoAtaP/cp53May3v6HtcFSVxdFrg2Pa/1xu5oIvsIwhxW6zSPibKefCOVgd5osgykMi5jjcZHv8XkzZEQ==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/msalv1/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/msalv2": { + "name": "@azure/msal-node", + "version": "2.16.3", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.16.3.tgz", + "integrity": "sha512-CO+SE4weOsfJf+C5LM8argzvotrXw252/ZU6SM2Tz63fEblhH1uuVaaO4ISYFuN4Q6BhTo7I3qIdi8ydUQCqhw==", + "license": "MIT", + "dependencies": { + "@azure/msal-common": "14.16.1", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/msalv2/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/msalv3": { + "name": "@azure/msal-node", + "version": "3.8.1", + "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.8.1.tgz", + "integrity": "sha512-HszfqoC+i2C9+BRDQfuNUGp15Re7menIhCEbFCQ49D3KaqEDrgZIgQ8zSct4T59jWeUIL9N/Dwiv4o2VueTdqQ==", + "license": "MIT", + "dependencies": { + "@azure/msal-common": "15.13.1", + "jsonwebtoken": "^9.0.0", + "uuid": "^8.3.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/msalv3/node_modules/@azure/msal-common": { + "version": "15.13.1", + "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.13.1.tgz", + "integrity": "sha512-vQYQcG4J43UWgo1lj7LcmdsGUKWYo28RfEvDQAEMmQIMjSFufvb+pS0FJ3KXmrPmnWlt1vHDl3oip6mIDUQ4uA==", + "license": "MIT", + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/msalv3/node_modules/uuid": { + "version": "8.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", + "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", + "license": "MIT", + "bin": { + "uuid": "dist/bin/uuid" + } + }, + "node_modules/node-fetch": { + "version": "2.7.0", + "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", + "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", + "license": "MIT", + "dependencies": { + "whatwg-url": "^5.0.0" + }, + "engines": { + "node": "4.x || >=6.0.0" + }, + "peerDependencies": { + "encoding": "^0.1.0" + }, + "peerDependenciesMeta": { + "encoding": { + "optional": true + } + } + }, + "node_modules/nodejs-file-downloader": { + "version": "4.13.0", + "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.13.0.tgz", + "integrity": "sha512-nI2fKnmJWWFZF6SgMPe1iBodKhfpztLKJTtCtNYGhm/9QXmWa/Pk9Sv00qHgzEvNLe1x7hjGDRor7gcm/ChaIQ==", + "license": "ISC", + "dependencies": { + "follow-redirects": "^1.15.6", + "https-proxy-agent": "^5.0.0", + "mime-types": "^2.1.27", + "sanitize-filename": "^1.6.3" + } + }, + "node_modules/nodejs-file-downloader/node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "license": "MIT", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/nodejs-file-downloader/node_modules/https-proxy-agent": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", + "integrity": "sha512-dFcAjpTQFgoLMzC2VwU+C/CbS7uRL0lWmxDITmqm7C+7F0Odmj6s9l6alZc6AELXhrnggM2CeWSXHGOdX2YtwA==", + "license": "MIT", + "dependencies": { + "agent-base": "6", + "debug": "4" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/object-inspect": { + "version": "1.13.4", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.4.tgz", + "integrity": "sha512-W67iLl4J2EXEGTbfeHCffrjDfitvLANg0UlX3wFUUSTx92KXRFegMHUVgSqE+wvhAbi4WqjGg9czysTV2Epbew==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "license": "ISC", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/open": { + "version": "8.4.2", + "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", + "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", + "license": "MIT", + "dependencies": { + "define-lazy-prop": "^2.0.0", + "is-docker": "^2.1.1", + "is-wsl": "^2.2.0" + }, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "license": "MIT", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "license": "MIT" + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/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)", + "license": "MIT", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.14.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.14.0.tgz", + "integrity": "sha512-YWWTjgABSKcvs/nWBi9PycY/JiPJqOD4JA6o9Sej2AtvSGarXxKC3OQSk4pAarbdQlKAh5D4FCQkJNkW+GAn3w==", + "license": "BSD-3-Clause", + "dependencies": { + "side-channel": "^1.1.0" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve": { + "version": "1.22.11", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.11.tgz", + "integrity": "sha512-RfqAvLnMl313r7c9oclB1HhUEAezcpLjz95wFH4LVuhk9JF/r22qmVP9AMmOU4vMX7Q8pN8jwNg/CSpdFnMjTQ==", + "license": "MIT", + "dependencies": { + "is-core-module": "^2.16.1", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-buffer": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", + "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "license": "MIT" + }, + "node_modules/sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "license": "WTFPL OR ISC", + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "node_modules/sax": { + "version": "1.4.3", + "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.3.tgz", + "integrity": "sha512-yqYn1JhPczigF94DMS+shiDMjDowYO6y9+wB/4WgO0Y19jWYk0lQ4tuG5KI7kj4FTp1wxPj5IFfcrz/s1c3jjQ==", + "license": "BlueOak-1.0.0" + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "license": "ISC", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "license": "BSD-3-Clause", + "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.1.0", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", + "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3", + "side-channel-list": "^1.0.0", + "side-channel-map": "^1.0.1", + "side-channel-weakmap": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-list": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", + "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", + "license": "MIT", + "dependencies": { + "es-errors": "^1.3.0", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-map": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", + "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/side-channel-weakmap": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", + "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", + "license": "MIT", + "dependencies": { + "call-bound": "^1.0.2", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.5", + "object-inspect": "^1.13.3", + "side-channel-map": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/stoppable": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", + "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", + "license": "MIT", + "engines": { + "node": ">=4", + "npm": ">=6" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "license": "MIT", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/tr46": { + "version": "0.0.3", + "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", + "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==", + "license": "MIT" + }, + "node_modules/truncate-utf8-bytes": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", + "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", + "license": "WTFPL", + "dependencies": { + "utf8-byte-length": "^1.0.1" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==", + "license": "0BSD" + }, + "node_modules/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "license": "MIT", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/typed-rest-client": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-2.1.0.tgz", + "integrity": "sha512-Nel9aPbgSzRxfs1+4GoSB4wexCF+4Axlk7OSGVQCMa+4fWcyxIsN/YNmkp0xTT2iQzMD98h8yFLav/cNaULmRA==", + "license": "MIT", + "dependencies": { + "des.js": "^1.1.0", + "js-md4": "^0.3.2", + "qs": "^6.10.3", + "tunnel": "0.0.6", + "underscore": "^1.12.1" + }, + "engines": { + "node": ">= 16.0.0" + } + }, + "node_modules/underscore": { + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", + "license": "MIT" + }, + "node_modules/utf8-byte-length": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==", + "license": "(WTFPL OR MIT)" + }, + "node_modules/uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/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.", + "license": "MIT", + "bin": { + "uuid": "bin/uuid" + } + }, + "node_modules/webidl-conversions": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", + "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==", + "license": "BSD-2-Clause" + }, + "node_modules/whatwg-url": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", + "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", + "license": "MIT", + "dependencies": { + "tr46": "~0.0.3", + "webidl-conversions": "^3.0.0" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "license": "ISC" + }, + "node_modules/xml2js": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", + "integrity": "sha512-T4rieHaC1EXcES0Kxxj4JWgaUQHDk+qwHcYOCFHfiwKz7tOVPLq7Hjq9dM1WCMhylqMEfP7hMcOIChvotiZegA==", + "license": "MIT", + "dependencies": { + "sax": ">=0.6.0", + "xmlbuilder": "~11.0.0" + }, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/xmlbuilder": { + "version": "11.0.1", + "resolved": "https://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", + "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", + "license": "MIT", + "engines": { + "node": ">=4.0" + } + } + } +} diff --git a/BuildTasks/Common-Auth/package.json b/BuildTasks/Common-Auth/package.json new file mode 100644 index 00000000..c7f2a910 --- /dev/null +++ b/BuildTasks/Common-Auth/package.json @@ -0,0 +1,15 @@ +{ + "name": "vsts-developer-tools.common-authv5", + "version": "5.0.0", + "description": "Authentication helpers shared across extension tasks", + "repository": { + "type": "git", + "url": "https://github.com/Microsoft/azure-devops-extension-tasks.git" + }, + "type": "module", + "license": "MIT", + "dependencies": { + "azure-pipelines-task-lib": "^4.17.3", + "azure-pipelines-tasks-azure-arm-rest": "^3.263.1" + } +} \ No newline at end of file diff --git a/BuildTasks/Common-Auth/tsconfig.json b/BuildTasks/Common-Auth/tsconfig.json new file mode 100644 index 00000000..4a31e60c --- /dev/null +++ b/BuildTasks/Common-Auth/tsconfig.json @@ -0,0 +1,10 @@ +{ + "extends": "../tsconfig.v5.json", + "compilerOptions": { + "outDir": "./", + "sourceRoot": "./" + }, + "files": [ + "CommonAuth.ts" + ] +} diff --git a/BuildTasks/Common-Auth/tsconfig.test.json b/BuildTasks/Common-Auth/tsconfig.test.json new file mode 100644 index 00000000..ca1bd5fd --- /dev/null +++ b/BuildTasks/Common-Auth/tsconfig.test.json @@ -0,0 +1 @@ +{"extends": "../tsconfig.v5.json", "compilerOptions": {"outDir": "./", "sourceRoot": "./"}, "include": ["D:/azure-devops-extension-tasks/BuildTasks/Common-Auth/CommonAuth.ts"]} diff --git a/BuildTasks/Common/v5/Common.ts b/BuildTasks/Common/Common.ts similarity index 85% rename from BuildTasks/Common/v5/Common.ts rename to BuildTasks/Common/Common.ts index ac9da320..b09f4776 100644 --- a/BuildTasks/Common/v5/Common.ts +++ b/BuildTasks/Common/Common.ts @@ -1,21 +1,36 @@ +import crypto from "node:crypto"; import path from "node:path"; import stream from "node:stream"; import fs from "node:fs/promises"; +import fsSync from "node:fs"; +import os from "node:os"; import tl from "azure-pipelines-task-lib"; import { ToolRunner } from "azure-pipelines-task-lib/toolrunner.js"; -import { AzureRMEndpoint } from "azure-pipelines-tasks-azure-arm-rest/azure-arm-endpoint.js"; -import fse from "fs-extra"; import uuidv5 from "uuidv5"; -import tmp from "tmp"; function writeBuildTempFile(taskName: string, data: any): string { - const tempDir = tl.getVariable("Agent.TempDirectory"); - const tempFile = tmp.tmpNameSync({ prefix: taskName, postfix: ".tmp", tmpdir: tempDir }); + const baseTempDir = tl.getVariable("Agent.TempDirectory") || os.tmpdir(); + fsSync.mkdirSync(baseTempDir, { recursive: true }); - tl.debug(`Generating Build temp file: ${tempFile}`); - tl.writeFile(tempFile, data, { mode: 0o600, encoding: "utf8", flag: "wx+" }); + for (let attempt = 0; attempt < 5; attempt++) { + const randomSuffix = crypto.randomBytes(16).toString("hex"); + const tempFile = path.join(baseTempDir, `${taskName}-${randomSuffix}.tmp`); - return tempFile; + try { + tl.writeFile(tempFile, data, { mode: 0o600, encoding: "utf8", flag: "wx+" }); + tl.debug(`Generating Build temp file: ${tempFile}`); + return tempFile; + } catch (error) { + const err = error as NodeJS.ErrnoException; + if (err.code === "EEXIST") { + tl.debug(`Temp file collision detected, retrying (${attempt + 1}/5).`); + continue; + } + throw error; + } + } + + throw new Error("Unable to create unique temporary file after multiple attempts."); } async function deleteBuildTempFile(tempFile: string) { @@ -228,67 +243,6 @@ export function getExtensionVersion(): string { * @param {string="connectedServiceName"} inputFieldName * @returns string */ -export function getMarketplaceEndpointDetails(inputFieldName: string): any { - const marketplaceEndpoint = tl.getInput(inputFieldName, true); - - const hostUrl = tl.getEndpointUrl(marketplaceEndpoint, false); - const auth = tl.getEndpointAuthorization(marketplaceEndpoint, false); - const password = auth.parameters["password"]; - const username = auth.parameters["username"]; - const apitoken = auth.parameters["apitoken"]; - - return { - "url": hostUrl, - "username": username, - "password": password, - "apitoken": apitoken - }; -} - -/** - * Sets the marketplace endpoint details (url, credentials) for the toolrunner. - * - * @param {ToolRunner} tfx - */ -export async function setTfxMarketplaceArguments(tfx: ToolRunner, setServiceUrl = true): Promise { - const connectTo = tl.getInput("connectTo", false) || "VsTeam"; - - if (connectTo === "VsTeam") { - const galleryEndpoint = getMarketplaceEndpointDetails("connectedServiceName"); - tl.setSecret(galleryEndpoint.password); - tfx.argIf(setServiceUrl, ["--service-url", galleryEndpoint.url]); - tfx.arg(["--auth-type", "pat"]); - tfx.arg(["--token", galleryEndpoint.password]); - } else if (connectTo === "AzureRM") { - const serviceName = tl.getInput("connectedServiceNameAzureRM", true); - const endpoint = await new AzureRMEndpoint(serviceName).getEndpoint(); - - // Overriding the "Active Directory" ID seems to be the only public way to change which scopes the token has access to. - // https://github.com/microsoft/azure-pipelines-tasks-common-packages/blob/74b799d41d0b78bae6b9ecf9987cf7008093d457/common-npm-packages/azure-arm-rest/azure-arm-common.ts#L480 - endpoint.applicationTokenCredentials.activeDirectoryResourceId = "499b84ac-1321-427f-aa17-267ca6975798"; - const token = await endpoint.applicationTokenCredentials.getToken(); - tfx.argIf(setServiceUrl, ["--service-url", "https://marketplace.visualstudio.com"]); - tfx.arg(["--auth-type", "pat"]); - tfx.arg(["--token", token]); - tl.setSecret(token); - } else { - const galleryEndpoint = getMarketplaceEndpointDetails("connectedServiceNameTFS"); - tfx.argIf(setServiceUrl, ["--service-url", galleryEndpoint.url]); - - if (galleryEndpoint.username) { - tfx.arg(["--auth-type", "basic"]); - tfx.arg(["--username", galleryEndpoint.username]); - tfx.arg(["--password", galleryEndpoint.password]); - tl.setSecret(galleryEndpoint.password); - } - else { - tfx.arg(["--auth-type", "pat"]); - tfx.arg(["--token", galleryEndpoint.apitoken]); - tl.setSecret(galleryEndpoint.apitoken); - } - } -} - /** * A writable stream intended to be used with Tfx when using JSON output. * This class overcomes the problem of having tfx warnings being displayed @@ -545,7 +499,8 @@ function getTaskManifestPaths(manifestPath: string, manifest: any): string[] { } export async function writeManifest(manifest: any, path: string): Promise { - await fse.writeJSON(path, manifest); + const manifestJson = `${JSON.stringify(manifest, null, 2)}\n`; + await fs.writeFile(path, manifestJson, { encoding: "utf8" }); } export async function checkUpdateTasksManifests(manifestFile?: string): Promise { @@ -556,8 +511,6 @@ export default { validateAndSetTfxManifestArguments, runTfx, getExtensionVersion, - getMarketplaceEndpointDetails, - setTfxMarketplaceArguments, TfxJsonOutputStream, updateManifests, writeManifest, diff --git a/BuildTasks/IsValidExtensionAgent/v4/package-lock.json b/BuildTasks/Common/package-lock.json similarity index 54% rename from BuildTasks/IsValidExtensionAgent/v4/package-lock.json rename to BuildTasks/Common/package-lock.json index f3b3d646..89bffd41 100644 --- a/BuildTasks/IsValidExtensionAgent/v4/package-lock.json +++ b/BuildTasks/Common/package-lock.json @@ -1,26 +1,22 @@ { - "name": "vsts-developer-tools.isvalidextensionagentv4", - "version": "4.3.0", + "name": "vsts-developer-tools.commonv5", + "version": "5.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "vsts-developer-tools.isvalidextensionagentv4", - "version": "4.3.0", + "name": "vsts-developer-tools.commonv5", + "version": "5.0.0", "license": "MIT", "dependencies": { "azure-pipelines-task-lib": "^4.17.3", - "fs-extra": "^11.3.2", - "promise-retry": "^2.0.1", - "tmp": "^0.2.5", "uuidv5": "^1.0.0" - }, - "devDependencies": {} + } }, "node_modules/adm-zip": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", - "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.12.tgz", + "integrity": "sha512-6TVU49mK6KZb4qG6xWaaM4C7sA/sgUMLy/JYMOzkcp3BvVLpW0fXDFQiIzAuxFCt/2+xD7fNIiPFAoLZPhVNLQ==", "engines": { "node": ">=6.0" } @@ -52,8 +48,9 @@ } }, "node_modules/balanced-match": { - "version": "1.0.0", - "license": "MIT" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/brace-expansion": { "version": "1.1.12", @@ -67,7 +64,8 @@ }, "node_modules/concat-map": { "version": "0.0.1", - "license": "MIT" + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/debug": { "version": "4.3.4", @@ -85,10 +83,6 @@ } } }, - "node_modules/err-code": { - "version": "2.0.3", - "license": "MIT" - }, "node_modules/follow-redirects": { "version": "1.15.6", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", @@ -108,36 +102,29 @@ } } }, - "node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/function-bind": { - "version": "1.1.1", - "license": "MIT" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/glob": { - "version": "7.2.0", - "license": "ISC", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/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.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -148,18 +135,26 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "license": "ISC" + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } }, - "node_modules/has": { - "version": "1.0.3", - "license": "MIT", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, "node_modules/https-proxy-agent": { @@ -176,7 +171,9 @@ }, "node_modules/inflight": { "version": "1.0.6", - "license": "ISC", + "resolved": "https://registry.npmjs.org/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" @@ -184,47 +181,42 @@ }, "node_modules/inherits": { "version": "2.0.4", - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/interpret": { "version": "1.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "engines": { "node": ">= 0.10" } }, "node_modules/is-core-module": { - "version": "2.8.1", - "license": "MIT", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jsonfile": { - "version": "6.1.0", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/mime-db": { - "version": "1.51.0", - "license": "MIT", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.34", - "license": "MIT", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": { - "mime-db": "1.51.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" @@ -232,7 +224,8 @@ }, "node_modules/minimatch": { "version": "3.0.5", - "license": "ISC", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -258,36 +251,29 @@ }, "node_modules/once": { "version": "1.4.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dependencies": { "wrappy": "1" } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "engines": { "node": ">=0.10.0" } }, "node_modules/path-parse": { "version": "1.0.7", - "license": "MIT" - }, - "node_modules/promise-retry": { - "version": "2.0.1", - "license": "MIT", - "dependencies": { - "err-code": "^2.0.2", - "retry": "^0.12.0" - }, - "engines": { - "node": ">=10" - } + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/q": { "version": "1.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", "engines": { "node": ">=0.6.0", "teleport": ">=0.2.0" @@ -295,6 +281,8 @@ }, "node_modules/rechoir": { "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dependencies": { "resolve": "^1.1.6" }, @@ -303,10 +291,11 @@ } }, "node_modules/resolve": { - "version": "1.22.0", - "license": "MIT", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dependencies": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -317,13 +306,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/retry": { - "version": "0.12.0", - "license": "MIT", - "engines": { - "node": ">= 4" - } - }, "node_modules/sanitize-filename": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", @@ -334,14 +316,16 @@ }, "node_modules/semver": { "version": "5.7.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { "semver": "bin/semver" } }, "node_modules/shelljs": { "version": "0.8.5", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -356,7 +340,8 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "engines": { "node": ">= 0.4" }, @@ -364,15 +349,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, "node_modules/truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", @@ -381,32 +357,29 @@ "utf8-byte-length": "^1.0.1" } }, - "node_modules/universalify": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/utf8-byte-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==" }, "node_modules/uuid": { "version": "3.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/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/uuidv5": { "version": "1.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/uuidv5/-/uuidv5-1.0.0.tgz", + "integrity": "sha512-OIrdJoTuC0Sbk1CKrGWG02gwrZHZptlYTHGkVOH7wxVNmMsGYFzJ77N7+SbrctXfpp9sI8Bp/nsu6C932p2MGQ==" }, "node_modules/wrappy": { "version": "1.0.2", - "license": "ISC" + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" } } } diff --git a/BuildTasks/Common/v5/package.json b/BuildTasks/Common/package.json similarity index 70% rename from BuildTasks/Common/v5/package.json rename to BuildTasks/Common/package.json index 0a22222d..f46aac62 100644 --- a/BuildTasks/Common/v5/package.json +++ b/BuildTasks/Common/package.json @@ -10,13 +10,7 @@ "license": "MIT", "dependencies": { "azure-pipelines-task-lib": "^4.17.3", - "azure-pipelines-tasks-azure-arm-rest": "^3.263.1", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", "uuidv5": "^1.0.0" }, - "devDependencies": { - "@types/tmp": "^0.2.6" - }, "types": "./uuidv5.d.ts" } diff --git a/BuildTasks/Common/v5/tsconfig.json b/BuildTasks/Common/tsconfig.json similarity index 78% rename from BuildTasks/Common/v5/tsconfig.json rename to BuildTasks/Common/tsconfig.json index c9ff5b07..04777104 100644 --- a/BuildTasks/Common/v5/tsconfig.json +++ b/BuildTasks/Common/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.v5.json", + "extends": "../tsconfig.v5.json", "compilerOptions": { "outDir": "./", "sourceRoot": "./" diff --git a/BuildTasks/Common/v4/uuidv5.d.ts b/BuildTasks/Common/uuidv5.d.ts similarity index 100% rename from BuildTasks/Common/v4/uuidv5.d.ts rename to BuildTasks/Common/uuidv5.d.ts diff --git a/BuildTasks/Common/v4/Common.ts b/BuildTasks/Common/v4/Common.ts deleted file mode 100644 index d009876c..00000000 --- a/BuildTasks/Common/v4/Common.ts +++ /dev/null @@ -1,558 +0,0 @@ -import * as path from "path"; -import * as stream from "stream"; -import * as fs from "fs"; -import * as tl from "azure-pipelines-task-lib/task"; -import * as trl from "azure-pipelines-task-lib/toolrunner"; -import * as fse from "fs-extra"; -import ToolRunner = trl.ToolRunner; -import uuidv5 from "uuidv5"; -import * as tmp from "tmp"; - -function writeBuildTempFile(taskName: string, data: string | Buffer): string { - const tempDir = tl.getVariable("Agent.TempDirectory"); - const tempFile = tmp.tmpNameSync({ prefix: taskName, postfix: ".tmp", tmpdir: tempDir }); - - tl.debug(`Generating Build temp file: ${tempFile}`); - tl.writeFile(tempFile, data, { mode: 0o600, encoding: "utf8", flag: "wx+"} ); - - return tempFile; -} - -function deleteBuildTempFile(tempFile: string) { - if (tempFile && tl.exist(tempFile)) { - tl.debug(`Deleting temp file: ${tempFile}`); - fs.unlinkSync(tempFile); - } -} - -/** - * Set manifest related arguments for "tfx extension" command, such as - * the --root or the --manifest-globs switches. - * @param {ToolRunner} tfx - * @returns {() => void} Cleaner function that the caller should use to cleanup temporary files created to be used as arguments - */ -export function validateAndSetTfxManifestArguments(tfx: ToolRunner): (() => void) { - const rootFolder = tl.getInput("rootFolder", false); - tfx.argIf(rootFolder, ["--root", rootFolder]); - - - const globsManifest = tl.getDelimitedInput("patternManifest", "\n", false); - tfx.argIf(globsManifest.length, ["--manifest-globs"]); - tfx.argIf(globsManifest.length, globsManifest); - - // Overrides manifest file - const publisher = tl.getInput("publisherId", false); - - const localizationRoot = tl.getInput("localizationRoot", false); - tfx.argIf(localizationRoot, ["--loc-root", localizationRoot]); - - let extensionId = tl.getInput("extensionId", false); - const extensionTag = tl.getInput("extensionTag", false); - - if (extensionId && extensionTag) { - extensionId += extensionTag; - tl.debug(`Overriding extension id to: ${extensionId}`); - } - - // for backwards compat check both "method" and "fileType" - switch (tl.getInput("method", false) || tl.getInput("fileType", false)) { - // for backwards compat trigger on both "manifest" and "id" - case "manifest": - case "id": - default: { - tfx.argIf(publisher, ["--publisher", publisher]); - tfx.argIf(extensionId, ["--extension-id", extensionId]); - break; - } - case "vsix": { - const vsixFilePattern = tl.getPathInput("vsixFile", true); - let matchingVsixFile: string[]; - if (vsixFilePattern.indexOf("*") >= 0 || vsixFilePattern.indexOf("?") >= 0) { - tl.debug("Pattern found in vsixFile parameter."); - matchingVsixFile = tl.findMatch(process.cwd(), vsixFilePattern); - } - else { - tl.debug("No pattern found in vsixFile parameter."); - matchingVsixFile = [vsixFilePattern]; - } - - if (!matchingVsixFile || matchingVsixFile.length === 0) { - tl.setResult(tl.TaskResult.Failed, `Found no vsix files matching: ${vsixFilePattern}.`); - throw new Error("failed"); - } - if (matchingVsixFile.length !== 1) { - tl.setResult(tl.TaskResult.Failed, `Found multiple vsix files matching: ${vsixFilePattern}.`); - throw new Error("failed"); - } - tfx.arg(["--vsix", matchingVsixFile[0]]); - break; - } - } - - let jsonOverrides: any; - const extensionName = tl.getInput("extensionName", false); - if (extensionName) { - tl.debug(`Overriding extension name to: ${extensionName}`); - jsonOverrides = (jsonOverrides || {}); - jsonOverrides.name = extensionName; - } - - const extensionVisibility = tl.getInput("extensionVisibility", false); - if (extensionVisibility && extensionVisibility !== "default") { - tl.debug(`Overriding extension visibility to: ${extensionVisibility}`); - jsonOverrides = (jsonOverrides || {}); - - const isPublic = extensionVisibility.indexOf("public") >= 0; - const isPreview = extensionVisibility.indexOf("preview") >= 0; - - jsonOverrides.public = isPublic; - - if (isPreview) { - jsonOverrides.galleryFlags = jsonOverrides.galleryFlags || []; - jsonOverrides.galleryFlags.push("Preview"); - } - } - - const extensionPricing = tl.getInput("extensionPricing", false); - if (extensionPricing && extensionPricing !== "default") { - tl.debug(`Overriding extension pricing to: ${extensionPricing}`); - jsonOverrides = (jsonOverrides || {}); - - const isPaid = extensionPricing.indexOf("paid") >= 0; - - if (isPaid) { - jsonOverrides.galleryFlags = jsonOverrides.galleryFlags || []; - jsonOverrides.galleryFlags.push("Paid"); - } - } - - const extensionVersion = getExtensionVersion(); - if (extensionVersion) { - tl.debug(`Overriding extension version to: ${extensionVersion}`); - jsonOverrides = (jsonOverrides || {}); - jsonOverrides.version = extensionVersion; - } - - const noWaitValidation = tl.getBoolInput("noWaitValidation", false); - if (noWaitValidation) { - tl.debug(`Not waiting for validation.`); - tfx.arg("--no-wait-validation"); - } - - const bypassLocalValidation = tl.getBoolInput("bypassLocalValidation", false); - if (bypassLocalValidation) { - tl.debug(`Bypassing local validation.`); - tfx.arg("--bypass-validation"); - } - - let overrideFilePath: string; - if (jsonOverrides) { - // Generate a temp file - overrideFilePath = writeBuildTempFile("PackageTask", JSON.stringify(jsonOverrides)); - tl.debug(`Generated a JSON temp file to override manifest values Path: ${overrideFilePath}`); - - tfx.arg(["--overrides-file", overrideFilePath]); - } - - const args = tl.getInput("arguments", false); - if (args) { - tl.debug(`Adding additional arguments: ${args}.`); - tfx.line(args); - } - - return () => deleteBuildTempFile(overrideFilePath); -} - -/** - * Run a tfx command by ensuring that "tfx" exists, installing it on the fly if needed. - * @param {(tfx:ToolRunner)=>void} cmd - */ -export async function runTfx(cmd: (tfx: ToolRunner) => void) : Promise { - let tfx: ToolRunner; - let tfxPath: string; - - const tryRunCmd = async (tfx: ToolRunner) => { - try { - // Set working folder - const cwd = tl.getInput("cwd", false); - if (cwd) { - tl.cd(cwd); - } - - cmd(tfx); - return true; - } - catch (err) { - tl.setResult(tl.TaskResult.Failed, `Error running task: ${err}`); - return false; - } - }; - - const tfxInstallerPath = tl.getVariable("__tfxpath"); - if (tfxInstallerPath) - { - tfxPath = tl.which(path.join(tfxInstallerPath, "/tfx")); - } - - if (tfxPath) { - tl.debug(`using: ${tfxPath}`); - tfx = new trl.ToolRunner(tfxPath); - await tryRunCmd(tfx); - return; - } - - tl.setResult(tl.TaskResult.Failed, "Could not find tfx. To resolve, add the 'Use Node CLI for Azure DevOps' task to your pipeline before this task."); -} - -/** - * Reads the extension version from the 'extensionVersion' variable, extracting - * just the part that is compatible with the versioning scheme used in the Marketplace. - * - * @returns string - */ -export function getExtensionVersion(): string { - const extensionVersion = tl.getInput("extensionVersion", false); - if (extensionVersion) { - const extractedVersions = extensionVersion.match(/[0-9]+\.[0-9]+\.[0-9]+(?:\.[0-9]+)?/); - if (extractedVersions && extractedVersions.length === 1) { - return extractedVersions[0]; - } - else { - throw new Error(`Supplied ExtensionVersion must contain a string matching '##.##.##(.##)'.`); - } - } - return ""; -} - -/** - * Get the Marketplace endpoint details to be used while publishing or installing an extension. - * - * @param {string="connectedServiceName"} inputFieldName - * @returns string - */ -export function getMarketplaceEndpointDetails(inputFieldName: string): any { - const marketplaceEndpoint = tl.getInput(inputFieldName, true); - - const hostUrl = tl.getEndpointUrl(marketplaceEndpoint, false); - const auth = tl.getEndpointAuthorization(marketplaceEndpoint, false); - const password = auth.parameters["password"]; - const username = auth.parameters["username"]; - const apitoken = auth.parameters["apitoken"]; - - return { - "url": hostUrl, - "username": username, - "password": password, - "apitoken": apitoken - }; -} - -/** - * Sets the marketplace endpoint details (url, credentials) for the toolrunner. - * - * @param {ToolRunner} tfx - * @returns string - */ -export function setTfxMarketplaceArguments(tfx: ToolRunner, setServiceUrl = true) : void { - const connectTo = tl.getInput("connectTo", false) || "VsTeam"; - let galleryEndpoint; - - if (connectTo === "VsTeam") { - galleryEndpoint = getMarketplaceEndpointDetails("connectedServiceName"); - tfx.argIf(setServiceUrl, ["--service-url", galleryEndpoint.url]); - tfx.arg(["--auth-type", "pat"]); - tfx.arg(["--token", galleryEndpoint.password]); - } else { - galleryEndpoint = getMarketplaceEndpointDetails("connectedServiceNameTFS"); - tfx.argIf(setServiceUrl, ["--service-url", galleryEndpoint.url]); - - if (galleryEndpoint.username) { - tfx.arg(["--auth-type", "basic"]); - tfx.arg(["--username", galleryEndpoint.username]); - tfx.arg(["--password", galleryEndpoint.password]); - } - else { - tfx.arg(["--auth-type", "pat"]); - tfx.arg(["--token", galleryEndpoint.apitoken]); - } - } -} - -/** - * A writable stream intended to be used with Tfx when using JSON output. - * This class overcomes the problem of having tfx warnings being displayed - * in stdout as regular messages, even when using --json switch in tfx. - * - */ -export class TfxJsonOutputStream extends stream.Writable { - - jsonString = ""; - messages: string[] = []; - - constructor(public out: (message: string) => void) { - super(); - } - - // eslint-disable-next-line @typescript-eslint/no-unsafe-function-type - _write(chunk: any, enc: string, cb: (Function)) : void { - const chunkStr: string = chunk.toString(); - if (chunkStr.startsWith("[command]")) - { - this.taskOutput(chunkStr, this.out); - } - else if (!this.jsonString && (chunkStr.toString()[0] !== "{" && chunkStr.toString()[0] !== "[")) { - this.messages.push(chunkStr); - this.taskOutput(chunkStr, this.out); - } - else { - this.jsonString += chunkStr; - this.taskOutput(chunkStr, tl.debug); - } - - cb(); - } - - private taskOutput(messages: string, lineWriter: (m: string) => void) { - if (!messages) { return; } - // Split messages to be sure that we are invoking the write lineWriter for each lineWriter - // Otherwise we could get messages in console with the wrong prefix used by azure-pipelines-task-lib - messages.split("\n").forEach(lineWriter); - } -} - -function getTaskPathContributions(manifest: any): string[] { - // Check for task contributions - if (!manifest.contributions) { - return []; - } - - return manifest.contributions - .filter((c: any) => c.type === "ms.vss-distributed-task.task" && c.properties && c.properties["name"]) - .map((c: any) => c.properties["name"]); -} - -function updateTaskId(manifest: any, publisherId: string, extensionId: string): unknown { - tl.debug(`Task manifest ${manifest.name} id before: ${manifest.id}`); - - const extensionNs = uuidv5("url", "https://marketplace.visualstudio.com/vsts", true); - manifest.id = uuidv5(extensionNs, `${publisherId}.${extensionId}.${manifest.name}`, false); - - tl.debug(`Task manifest ${manifest.name} id after: ${manifest.id}`); - return manifest; -} - -function updateExtensionManifestTaskIds(manifest: any, originalTaskId: string, newTaskId: string): unknown { - if (!manifest.contributions) { - tl.debug(`No contributions found`); - return manifest; - } - - manifest.contributions - .filter((c: any) => c.type !== "ms.vss-distributed-task.task" && c.properties && c.properties.supportsTasks) - .forEach((c: any) => { - const supportsTasks = [...c.properties.supportsTasks]; - const index = supportsTasks.indexOf(originalTaskId); - if(index != -1) { - - tl.debug(`Extension manifest supportsTasks before: ${c.properties.supportsTasks}`); - - supportsTasks[index] = newTaskId; - c.properties.supportsTasks = supportsTasks; - - tl.debug(`Extension manifest supportsTasks after: ${c.properties.supportsTasks}`); - } else{ - tl.debug(`No supportTasks entry found in manifest contribution`); - } - }); - - return manifest; -} - -function updateTaskVersion(manifest: any, extensionVersionString: string, extensionVersionType: string): unknown { - const versionParts = extensionVersionString.split("."); - if (versionParts.length > 3) { - tl.warning("Detected a version that consists of more than 3 parts. Build tasks support only 3 parts, ignoring the rest."); - } - - const extensionversion = { major: +versionParts[0], minor: +versionParts[1], patch: +versionParts[2] }; - - if (!manifest.version && extensionVersionType !== "major") { - tl.warning("Detected no version in task manifest. Forcing major."); - manifest.version = extensionversion; - } else { - tl.debug(`Task manifest ${manifest.name} version before: ${JSON.stringify(manifest.version)}`); - - switch (extensionVersionType) { - default: - case "major": manifest.version.Major = `${extensionversion.major}`; - // eslint-disable-next-line no-fallthrough - case "minor": manifest.version.Minor = `${extensionversion.minor}`; - // eslint-disable-next-line no-fallthrough - case "patch": manifest.version.Patch = `${extensionversion.patch}`; - } - } - tl.debug(`Task manifest ${manifest.name} version after: ${JSON.stringify(manifest.version)}`); - return manifest; -} - -/** - * - * Check whether the version update should be propagated to tasks included - * in the extension. - * - */ -export async function updateManifests(manifestPaths: string[]): Promise { - const updateTasksVersion = tl.getBoolInput("updateTasksVersion", false); - const updateTasksId = tl.getBoolInput("updateTasksId", false); - - if (updateTasksVersion || updateTasksId) { - if (!(manifestPaths && manifestPaths.length)) { - manifestPaths = getExtensionManifestPaths(); - } - - tl.debug(`Found manifests: ${manifestPaths.join(", ")}`); - - const tasksIds = await updateTaskManifests(manifestPaths, updateTasksId, updateTasksVersion); - await updateExtensionManifests(manifestPaths, tasksIds); - } -} - -async function updateTaskManifests(manifestPaths: string[], updateTasksId: boolean, updateTasksVersion: boolean) : Promise<[string, string][]> { - const tasksIds: [string, string][] = []; - - await Promise.all(manifestPaths.map(async (extensionPath) => { - const manifest: any = await getManifest(extensionPath); - const taskManifestPaths: string[] = getTaskManifestPaths(extensionPath, manifest); - - if (taskManifestPaths && taskManifestPaths.length) { - await Promise.all(taskManifestPaths.map(async (taskPath) => { - tl.debug(`Patching: ${taskPath}.`); - let taskManifest: any = await getManifest(taskPath); - - if (updateTasksId) { - tl.debug(`Updating Id...`); - const publisherId = tl.getInput("publisherId", false) || manifest.publisher; - const extensionTag = tl.getInput("extensionTag", false) || ""; - const extensionId = `${(tl.getInput("extensionId", false) || manifest.id)}${extensionTag}`; - - const originalTaskId: string = taskManifest.id || null; - taskManifest = updateTaskId(taskManifest, publisherId, extensionId); - const newTaskId: string = taskManifest.id; - - if(originalTaskId && (originalTaskId !== newTaskId)) { - tasksIds.push([originalTaskId, newTaskId]) - } - } - - if (updateTasksVersion) { - tl.debug(`Updating version...`); - const extensionVersion = tl.getInput("extensionVersion", false) || manifest.version; - if (!extensionVersion) { - throw new Error( - "Extension Version was not supplied nor does the extension manifest define one."); - } - const extensionVersionType = tl.getInput("updateTasksVersionType", false) || "major"; - - taskManifest = updateTaskVersion(taskManifest, extensionVersion, extensionVersionType); - } - - await writeManifest(taskManifest, taskPath); - tl.debug(`Updated: ${taskPath}.`); - })); - } - })); - - return tasksIds; -} - -async function updateExtensionManifests(manifestPaths: string[], updatedTaskIds: [string, string][]): Promise { - await Promise.all(manifestPaths.map(async (path) => { - tl.debug(`Patching: ${path}.`); - let originalManifest = await getManifest(path); - - updatedTaskIds.map(([originalTaskId, newTaskId]) => { - tl.debug(`Updating: ${originalTaskId} => ${newTaskId}.`) - originalManifest = updateExtensionManifestTaskIds(originalManifest, originalTaskId, newTaskId); - }); - - await writeManifest(originalManifest, path); - })); -} - -function getExtensionManifestPaths(): string[] { - // Search for extension manifests given the rootFolder and patternManifest inputs - const rootFolder = tl.getInput("rootFolder", false) || tl.getInput("System.DefaultWorkingDirectory"); - const manifestsPatterns = tl.getDelimitedInput("patternManifest", "\n", false) || ["vss-extension.json"]; - - tl.debug(`Searching for extension manifests: ${manifestsPatterns.join(", ")}`); - - return tl.findMatch(rootFolder, manifestsPatterns); -} - -function getManifest(path: string): Promise { - return fse.readFile(path, "utf8").then((data: string) => { - try { - data = data.replace(/^\uFEFF/, - () => { - tl.warning(`Removing Unicode BOM from manifest file: ${path}.`); - return ""; - }); - return JSON.parse(data); - } catch (jsonError) { - throw new Error(`Error parsing task manifest: ${path} - ${jsonError}`); - } - }); -} - -function getTaskManifestPaths(manifestPath: string, manifest: any): string[] { - const tasks = getTaskPathContributions(manifest); - const rootFolder = path.dirname(manifestPath); - - return tasks.reduce((result: string[], task: string) => { - tl.debug(`Found task: ${task}`); - const taskRoot: string = path.join(rootFolder, task); - const rootManifest: string = path.join(taskRoot, "task.json"); - - let localizationRoot = tl.filePathSupplied("localizationRoot") ? tl.getPathInput("localizationRoot", false) : taskRoot; - if (localizationRoot) { - localizationRoot = path.resolve(localizationRoot); - } - - if (tl.exist(rootManifest)) { - tl.debug(`Found single-task manifest: ${rootManifest}`); - const rootManifests: string[] = [rootManifest]; - const rootLocManifest: string = path.join(localizationRoot, "task.loc.json"); - if (tl.exist(rootLocManifest)) { - tl.debug(`Found localized single-task manifest: ${rootLocManifest}`); - rootManifests.push(rootLocManifest); - } - return (result).concat(rootManifests); - } else { - const versionManifests = tl.findMatch(taskRoot, "*/task.json"); - const locVersionManifests = tl.findMatch(localizationRoot, "*/task.loc.json"); - tl.debug(`Found multi-task manifests: ${versionManifests.join(", ")}`); - tl.debug(`Found multi-task localized manifests: ${locVersionManifests.join(", ")}`); - return (result).concat(versionManifests).concat(locVersionManifests); - } - }, []); -} - -export async function writeManifest(manifest: any, path: string): Promise { - await fse.writeJSON(path, manifest); -} - -export async function checkUpdateTasksManifests(manifestFile?: string): Promise { - await updateManifests(manifestFile ? [manifestFile] : []); -} - -export default { - validateAndSetTfxManifestArguments, - runTfx, - getExtensionVersion, - getMarketplaceEndpointDetails, - setTfxMarketplaceArguments, - TfxJsonOutputStream, - updateManifests, - writeManifest, - checkUpdateTasksManifests -}; \ No newline at end of file diff --git a/BuildTasks/Common/v4/package-lock.json b/BuildTasks/Common/v4/package-lock.json deleted file mode 100644 index 37e5d8b2..00000000 --- a/BuildTasks/Common/v4/package-lock.json +++ /dev/null @@ -1,397 +0,0 @@ -{ - "name": "vsts-developer-tools.commonv4", - "version": "4.3.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "vsts-developer-tools.commonv4", - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "azure-pipelines-task-lib": "^4.17.3", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", - "uuidv5": "^1.0.0" - }, - "devDependencies": { - "@types/tmp": "^0.2.6" - } - }, - "node_modules/@types/tmp": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.6.tgz", - "integrity": "sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==", - "dev": true - }, - "node_modules/adm-zip": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", - "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/azure-pipelines-task-lib": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.17.3.tgz", - "integrity": "sha512-UxfH5pk3uOHTi9TtLtdDyugQVkFES5A836ZEePjcs3jYyxm3EJ6IlFYq6gbfd6mNBhrM9fxG2u/MFYIJ+Z0cxQ==", - "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/balanced-match": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/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-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "license": "MIT" - }, - "node_modules/glob": { - "version": "7.2.0", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "license": "ISC" - }, - "node_modules/has": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/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/inflight": { - "version": "1.0.6", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "node_modules/interpret": { - "version": "1.4.0", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-core-module": { - "version": "2.8.1", - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/mime-db": { - "version": "1.51.0", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.34", - "license": "MIT", - "dependencies": { - "mime-db": "1.51.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.0.5", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/nodejs-file-downloader": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.12.1.tgz", - "integrity": "sha512-LpfCTNhh805AlLnJnzt1PuEj+RmbrccbAQZ6hBRw2e6QPVR0Qntuo6qqyvPHG5s77/0w0IEKgRAD4nbSnr/X4w==", - "dependencies": { - "follow-redirects": "^1.15.1", - "https-proxy-agent": "^5.0.0", - "mime-types": "^2.1.27", - "sanitize-filename": "^1.6.3" - } - }, - "node_modules/once": { - "version": "1.4.0", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "license": "MIT" - }, - "node_modules/q": { - "version": "1.5.1", - "license": "MIT", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/resolve": { - "version": "1.22.0", - "license": "MIT", - "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://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", - "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", - "dependencies": { - "truncate-utf8-bytes": "^1.0.0" - } - }, - "node_modules/semver": { - "version": "5.7.2", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/shelljs": { - "version": "0.8.5", - "license": "BSD-3-Clause", - "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", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/truncate-utf8-bytes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", - "dependencies": { - "utf8-byte-length": "^1.0.1" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/utf8-byte-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" - }, - "node_modules/uuid": { - "version": "3.4.0", - "license": "MIT", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/uuidv5": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "license": "ISC" - } - } -} diff --git a/BuildTasks/Common/v4/package.json b/BuildTasks/Common/v4/package.json deleted file mode 100644 index 0815430f..00000000 --- a/BuildTasks/Common/v4/package.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "name": "vsts-developer-tools.commonv4", - "version": "4.3.0", - "description": "common", - "repository": { - "type": "git", - "url": "https://github.com/Microsoft/azure-devops-extension-tasks.git" - }, - "license": "MIT", - "dependencies": { - "azure-pipelines-task-lib": "^4.17.3", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", - "uuidv5": "^1.0.0" - }, - "devDependencies": { - "@types/tmp": "^0.2.6" - }, - "types": "./uuidv5.d.ts" -} diff --git a/BuildTasks/Common/v4/tsconfig.json b/BuildTasks/Common/v4/tsconfig.json deleted file mode 100644 index 16a08c69..00000000 --- a/BuildTasks/Common/v4/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../../tsconfig.v4.json", - "compilerOptions": { - "outDir": "./Common", - "sourceRoot": "./" - }, - "files": [ - "Common.ts", - "uuidv5.d.ts" - ] - } \ No newline at end of file diff --git a/BuildTasks/Common/v5/package-lock.json b/BuildTasks/Common/v5/package-lock.json deleted file mode 100644 index 122ac661..00000000 --- a/BuildTasks/Common/v5/package-lock.json +++ /dev/null @@ -1,1491 +0,0 @@ -{ - "name": "vsts-developer-tools.commonv5", - "version": "5.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "vsts-developer-tools.commonv5", - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "azure-pipelines-task-lib": "^4.17.3", - "azure-pipelines-tasks-azure-arm-rest": "^3.263.1", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", - "uuidv5": "^1.0.0" - }, - "devDependencies": { - "@types/tmp": "^0.2.6" - } - }, - "node_modules/@azure/abort-controller": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", - "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@azure/core-auth": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz", - "integrity": "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==", - "dependencies": { - "@azure/abort-controller": "^2.1.2", - "@azure/core-util": "^1.13.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-auth/node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-client": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.1.tgz", - "integrity": "sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==", - "dependencies": { - "@azure/abort-controller": "^2.1.2", - "@azure/core-auth": "^1.10.0", - "@azure/core-rest-pipeline": "^1.22.0", - "@azure/core-tracing": "^1.3.0", - "@azure/core-util": "^1.13.0", - "@azure/logger": "^1.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-client/node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-rest-pipeline": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.1.tgz", - "integrity": "sha512-UVZlVLfLyz6g3Hy7GNDpooMQonUygH7ghdiSASOOHy97fKj/mPLqgDX7aidOijn+sCMU+WU8NjlPlNTgnvbcGA==", - "dependencies": { - "@azure/abort-controller": "^2.1.2", - "@azure/core-auth": "^1.10.0", - "@azure/core-tracing": "^1.3.0", - "@azure/core-util": "^1.13.0", - "@azure/logger": "^1.3.0", - "@typespec/ts-http-runtime": "^0.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-tracing": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz", - "integrity": "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-util": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz", - "integrity": "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==", - "dependencies": { - "@azure/abort-controller": "^2.1.2", - "@typespec/ts-http-runtime": "^0.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-util/node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/identity": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-3.4.2.tgz", - "integrity": "sha512-0q5DL4uyR0EZ4RXQKD8MadGH6zTIcloUoS/RVbCpNpej4pwte0xpqYxk8K97Py2RiuUvI7F4GXpoT4046VfufA==", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.5.0", - "@azure/core-client": "^1.4.0", - "@azure/core-rest-pipeline": "^1.1.0", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.6.1", - "@azure/logger": "^1.0.0", - "@azure/msal-browser": "^3.5.0", - "@azure/msal-node": "^2.5.1", - "events": "^3.0.0", - "jws": "^4.0.0", - "open": "^8.0.0", - "stoppable": "^1.1.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@azure/identity/node_modules/jwa": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", - "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", - "dependencies": { - "buffer-equal-constant-time": "^1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@azure/identity/node_modules/jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@azure/logger": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz", - "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==", - "dependencies": { - "@typespec/ts-http-runtime": "^0.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/msal-browser": { - "version": "3.30.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.30.0.tgz", - "integrity": "sha512-I0XlIGVdM4E9kYP5eTjgW8fgATdzwxJvQ6bm2PNiHaZhEuUz47NYw1xHthC9R+lXz4i9zbShS0VdLyxd7n0GGA==", - "dependencies": { - "@azure/msal-common": "14.16.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-browser/node_modules/@azure/msal-common": { - "version": "14.16.1", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.16.1.tgz", - "integrity": "sha512-nyxsA6NA4SVKh5YyRpbSXiMr7oQbwark7JU9LMeg6tJYTSPyAGkdx61wPT4gyxZfxlSxMMEyAsWaubBlNyIa1w==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-common": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-13.3.1.tgz", - "integrity": "sha512-Lrk1ozoAtaP/cp53May3v6HtcFSVxdFrg2Pa/1xu5oIvsIwhxW6zSPibKefCOVgd5osgykMi5jjcZHv8XkzZEQ==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-node": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.16.3.tgz", - "integrity": "sha512-CO+SE4weOsfJf+C5LM8argzvotrXw252/ZU6SM2Tz63fEblhH1uuVaaO4ISYFuN4Q6BhTo7I3qIdi8ydUQCqhw==", - "dependencies": { - "@azure/msal-common": "14.16.1", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@azure/msal-node/node_modules/@azure/msal-common": { - "version": "14.16.1", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.16.1.tgz", - "integrity": "sha512-nyxsA6NA4SVKh5YyRpbSXiMr7oQbwark7JU9LMeg6tJYTSPyAGkdx61wPT4gyxZfxlSxMMEyAsWaubBlNyIa1w==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-node/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@types/jsonwebtoken": { - "version": "8.5.9", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", - "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/mocha": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", - "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==" - }, - "node_modules/@types/node": { - "version": "20.19.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.24.tgz", - "integrity": "sha512-FE5u0ezmi6y9OZEzlJfg37mqqf6ZDSF2V/NLjUyGrR9uTZ7Sb9F7bLNZ03S4XVUNRWGA7Ck4c1kK+YnuWjl+DA==", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/q": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", - "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" - }, - "node_modules/@types/tmp": { - "version": "0.2.6", - "resolved": "https://registry.npmjs.org/@types/tmp/-/tmp-0.2.6.tgz", - "integrity": "sha512-chhaNf2oKHlRkDGt+tiKE2Z5aJ6qalm7Z9rlLdBwmOiAAf09YQvvoLXjWK4HWPF1xU/fqvMgfNfpVoBscA/tKA==", - "dev": true, - "license": "MIT" - }, - "node_modules/@typespec/ts-http-runtime": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.1.tgz", - "integrity": "sha512-SnbaqayTVFEA6/tYumdF0UmybY0KHyKwGPBXnyckFlrrKdhWFrL3a2HIPXHjht5ZOElKGcXfD2D63P36btb+ww==", - "dependencies": { - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@typespec/ts-http-runtime/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "engines": { - "node": ">= 14" - } - }, - "node_modules/@typespec/ts-http-runtime/node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/adm-zip": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.12.tgz", - "integrity": "sha512-6TVU49mK6KZb4qG6xWaaM4C7sA/sgUMLy/JYMOzkcp3BvVLpW0fXDFQiIzAuxFCt/2+xD7fNIiPFAoLZPhVNLQ==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/async-mutex": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.1.tgz", - "integrity": "sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/azure-devops-node-api": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-14.1.0.tgz", - "integrity": "sha512-QhpgjH1LQ+vgDJ7oBwcmsZ3+o4ZpjLVilw0D3oJQpYpRzN+L39lk5jZDLJ464hLUgsDzWn/Ksv7zLLMKLfoBzA==", - "license": "MIT", - "dependencies": { - "tunnel": "0.0.6", - "typed-rest-client": "2.1.0" - }, - "engines": { - "node": ">= 16.0.0" - } - }, - "node_modules/azure-pipelines-task-lib": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.17.3.tgz", - "integrity": "sha512-UxfH5pk3uOHTi9TtLtdDyugQVkFES5A836ZEePjcs3jYyxm3EJ6IlFYq6gbfd6mNBhrM9fxG2u/MFYIJ+Z0cxQ==", - "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-azure-arm-rest": { - "version": "3.263.1", - "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-azure-arm-rest/-/azure-pipelines-tasks-azure-arm-rest-3.263.1.tgz", - "integrity": "sha512-19HPDiU1aHpeqe1BQMucjZhkYKM/rHXr5dGmOLIf4toEw2MwsJmtXA4nPFsfVRX/VkBzdgrn7/XRyfT4UfXWcw==", - "license": "MIT", - "dependencies": { - "@azure/identity": "^3.4.2", - "@types/jsonwebtoken": "^8.5.8", - "@types/mocha": "^5.2.7", - "@types/node": "^10.17.0", - "@types/q": "1.5.4", - "async-mutex": "^0.4.0", - "azure-devops-node-api": "^14.0.1", - "azure-pipelines-task-lib": "^4.11.0", - "https-proxy-agent": "^4.0.0", - "jsonwebtoken": "^9.0.0", - "msalv1": "npm:@azure/msal-node@^1.18.4", - "msalv2": "npm:@azure/msal-node@^2.7.0", - "msalv3": "npm:@azure/msal-node@^3.5.3", - "node-fetch": "^2.6.7", - "q": "1.5.1", - "typed-rest-client": "^2.0.1", - "xml2js": "0.6.2" - } - }, - "node_modules/azure-pipelines-tasks-azure-arm-rest/node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", - "license": "MIT" - }, - "node_modules/azure-pipelines-tasks-azure-arm-rest/node_modules/agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", - "license": "MIT", - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/azure-pipelines-tasks-azure-arm-rest/node_modules/https-proxy-agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", - "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", - "license": "MIT", - "dependencies": { - "agent-base": "5", - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", - "license": "BSD-3-Clause" - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "engines": { - "node": ">=8" - } - }, - "node_modules/des.js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/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-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", - "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "function-bind": "^1.1.2", - "get-proto": "^1.0.0", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/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/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/http-proxy-agent/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/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/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/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://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/js-md4": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz", - "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==", - "license": "MIT" - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", - "license": "MIT", - "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "node_modules/jsonwebtoken/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "license": "MIT", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", - "license": "MIT" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", - "license": "MIT" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", - "license": "MIT" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", - "license": "MIT" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "license": "MIT" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", - "license": "MIT" - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "license": "MIT" - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "license": "ISC" - }, - "node_modules/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/msalv1": { - "name": "@azure/msal-node", - "version": "1.18.4", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.18.4.tgz", - "integrity": "sha512-Kc/dRvhZ9Q4+1FSfsTFDME/v6+R2Y1fuMty/TfwqE5p9GTPw08BPbKgeWinE8JRHRp+LemjQbUZsn4Q4l6Lszg==", - "deprecated": "A newer major version of this library is available. Please upgrade to the latest available version.", - "license": "MIT", - "dependencies": { - "@azure/msal-common": "13.3.1", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": "10 || 12 || 14 || 16 || 18" - } - }, - "node_modules/msalv1/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/msalv2": { - "name": "@azure/msal-node", - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.16.2.tgz", - "integrity": "sha512-An7l1hEr0w1HMMh1LU+rtDtqL7/jw74ORlc9Wnh06v7TU/xpG39/Zdr1ZJu3QpjUfKJ+E0/OXMW8DRSWTlh7qQ==", - "license": "MIT", - "dependencies": { - "@azure/msal-common": "14.16.0", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/msalv2/node_modules/@azure/msal-common": { - "version": "14.16.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.16.0.tgz", - "integrity": "sha512-1KOZj9IpcDSwpNiQNjt0jDYZpQvNZay7QAEi/5DLubay40iGYtLzya/jbjRPLyOTZhEKyL1MzPuw2HqBCjceYA==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/msalv2/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/msalv3": { - "name": "@azure/msal-node", - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.7.4.tgz", - "integrity": "sha512-fjqvhrThwzzPvqhFOdkkGRJCHPQZTNijpceVy8QjcfQuH482tOVEjHyamZaioOhVtx+FK1u+eMpJA2Zz4U9LVg==", - "dependencies": { - "@azure/msal-common": "15.12.0", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/msalv3/node_modules/@azure/msal-common": { - "version": "15.12.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.12.0.tgz", - "integrity": "sha512-4ucXbjVw8KJ5QBgnGJUeA07c8iznwlk5ioHIhI4ASXcXgcf2yRFhWzYOyWg/cI49LC9ekpFJeQtO3zjDTbl6TQ==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/msalv3/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/nodejs-file-downloader": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.12.1.tgz", - "integrity": "sha512-LpfCTNhh805AlLnJnzt1PuEj+RmbrccbAQZ6hBRw2e6QPVR0Qntuo6qqyvPHG5s77/0w0IEKgRAD4nbSnr/X4w==", - "dependencies": { - "follow-redirects": "^1.15.1", - "https-proxy-agent": "^5.0.0", - "mime-types": "^2.1.27", - "sanitize-filename": "^1.6.3" - } - }, - "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qs": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", - "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/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/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/sanitize-filename": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/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.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" - }, - "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/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.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/stoppable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", - "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", - "engines": { - "node": ">=4", - "npm": ">=6" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/truncate-utf8-bytes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", - "dependencies": { - "utf8-byte-length": "^1.0.1" - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "license": "MIT", - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "node_modules/typed-rest-client": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-2.1.0.tgz", - "integrity": "sha512-Nel9aPbgSzRxfs1+4GoSB4wexCF+4Axlk7OSGVQCMa+4fWcyxIsN/YNmkp0xTT2iQzMD98h8yFLav/cNaULmRA==", - "license": "MIT", - "dependencies": { - "des.js": "^1.1.0", - "js-md4": "^0.3.2", - "qs": "^6.10.3", - "tunnel": "0.0.6", - "underscore": "^1.12.1" - }, - "engines": { - "node": ">= 16.0.0" - } - }, - "node_modules/underscore": { - "version": "1.13.7", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", - "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", - "license": "MIT" - }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "license": "MIT" - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/utf8-byte-length": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", - "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==" - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/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/uuidv5": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/uuidv5/-/uuidv5-1.0.0.tgz", - "integrity": "sha512-OIrdJoTuC0Sbk1CKrGWG02gwrZHZptlYTHGkVOH7wxVNmMsGYFzJ77N7+SbrctXfpp9sI8Bp/nsu6C932p2MGQ==" - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/xml2js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/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://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "engines": { - "node": ">=4.0" - } - } - } -} diff --git a/BuildTasks/Common/v5/uuidv5.d.ts b/BuildTasks/Common/v5/uuidv5.d.ts deleted file mode 100644 index 73df93b8..00000000 --- a/BuildTasks/Common/v5/uuidv5.d.ts +++ /dev/null @@ -1,17 +0,0 @@ -declare module 'uuidv5' { - type uuid = string | Buffer; - type space = "dns" | "url" | "oid" | "x500" | "null" | "default"; - type ns = uuid | space; - - interface createUUIDv5 { - (namespace: ns, name: uuid): uuid; - (namespace: ns, name: uuid, binary: boolean): uuid; - - uuidToString(uuid: Buffer): string; - uuidFromString(uuid: string): Buffer; - createUUIDv5: createUUIDv5; - spaces: space; - } - const createUUIDv5: createUUIDv5; - export default createUUIDv5; -} \ No newline at end of file diff --git a/BuildTasks/ExtensionVersion/v5/ExtensionVersion.ts b/BuildTasks/ExtensionVersion/ExtensionVersion.ts similarity index 94% rename from BuildTasks/ExtensionVersion/v5/ExtensionVersion.ts rename to BuildTasks/ExtensionVersion/ExtensionVersion.ts index 44d0cd2b..ef638339 100644 --- a/BuildTasks/ExtensionVersion/v5/ExtensionVersion.ts +++ b/BuildTasks/ExtensionVersion/ExtensionVersion.ts @@ -1,6 +1,7 @@ import tl from "azure-pipelines-task-lib"; import tr from "azure-pipelines-task-lib/toolrunner.js"; -import * as common from "../../Common/v5/Common.js"; +import * as common from "../Common/Common.js"; +import * as commonAuth from "../Common-Auth/CommonAuth.js"; const extensionVersionOverrideVariable = tl.getInput("extensionVersionOverride", false); let usingOverride = false; @@ -33,7 +34,7 @@ async function run() { try { tfx.arg(["extension", "show", "--json", "--no-color"]); - await common.setTfxMarketplaceArguments(tfx); + await commonAuth.setTfxMarketplaceArguments(tfx); common.validateAndSetTfxManifestArguments(tfx); const versionAction = tl.getInput("versionAction", false); diff --git a/BuildTasks/ExtensionVersion/v4/icon.png b/BuildTasks/ExtensionVersion/icon.png similarity index 100% rename from BuildTasks/ExtensionVersion/v4/icon.png rename to BuildTasks/ExtensionVersion/icon.png diff --git a/BuildTasks/ExtensionVersion/v5/package-lock.json b/BuildTasks/ExtensionVersion/package-lock.json similarity index 96% rename from BuildTasks/ExtensionVersion/v5/package-lock.json rename to BuildTasks/ExtensionVersion/package-lock.json index 7897449c..a0b4a9ab 100644 --- a/BuildTasks/ExtensionVersion/v5/package-lock.json +++ b/BuildTasks/ExtensionVersion/package-lock.json @@ -11,8 +11,6 @@ "dependencies": { "azure-pipelines-task-lib": "^4.17.3", "azure-pipelines-tasks-azure-arm-rest": "^3.263.1", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", "uuidv5": "^1.0.0" }, "devDependencies": {} @@ -591,20 +589,6 @@ } } }, - "node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -698,11 +682,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -823,17 +802,6 @@ "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==", "license": "MIT" }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jsonwebtoken": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", @@ -1348,15 +1316,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -1412,14 +1371,6 @@ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "license": "MIT" }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/utf8-byte-length": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", diff --git a/BuildTasks/ExtensionVersion/v5/package.json b/BuildTasks/ExtensionVersion/package.json similarity index 90% rename from BuildTasks/ExtensionVersion/v5/package.json rename to BuildTasks/ExtensionVersion/package.json index eea143a9..8d2f11a1 100644 --- a/BuildTasks/ExtensionVersion/v5/package.json +++ b/BuildTasks/ExtensionVersion/package.json @@ -11,8 +11,6 @@ "dependencies": { "azure-pipelines-task-lib": "^4.17.3", "azure-pipelines-tasks-azure-arm-rest": "^3.263.1", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", "uuidv5": "^1.0.0" }, "devDependencies": { diff --git a/BuildTasks/ExtensionVersion/v5/task.json b/BuildTasks/ExtensionVersion/task.json similarity index 97% rename from BuildTasks/ExtensionVersion/v5/task.json rename to BuildTasks/ExtensionVersion/task.json index d2d1408d..a841b978 100644 --- a/BuildTasks/ExtensionVersion/v5/task.json +++ b/BuildTasks/ExtensionVersion/task.json @@ -161,11 +161,11 @@ ], "execution": { "Node20_1": { - "target": "ExtensionVersion/v5/ExtensionVersion.js", + "target": "ExtensionVersion/ExtensionVersion.js", "argumentFormat": "" }, "Node16": { - "target": "ExtensionVersion/v5/ExtensionVersion.js", + "target": "ExtensionVersion/ExtensionVersion.js", "argumentFormat": "" } }, diff --git a/BuildTasks/ExtensionVersion/v5/tsconfig.json b/BuildTasks/ExtensionVersion/tsconfig.json similarity index 77% rename from BuildTasks/ExtensionVersion/v5/tsconfig.json rename to BuildTasks/ExtensionVersion/tsconfig.json index 3f419588..56bcfe81 100644 --- a/BuildTasks/ExtensionVersion/v5/tsconfig.json +++ b/BuildTasks/ExtensionVersion/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.v5.json", + "extends": "../tsconfig.v5.json", "compilerOptions": { "outDir": "./", "sourceRoot": "./" diff --git a/BuildTasks/ExtensionVersion/v4/ExtensionVersion.ts b/BuildTasks/ExtensionVersion/v4/ExtensionVersion.ts deleted file mode 100644 index 9a83d7b6..00000000 --- a/BuildTasks/ExtensionVersion/v4/ExtensionVersion.ts +++ /dev/null @@ -1,86 +0,0 @@ -import * as tl from "azure-pipelines-task-lib/task"; -import * as tr from "azure-pipelines-task-lib/toolrunner"; -import * as common from "../../Common/v4/Common"; - -const extensionVersionOverrideVariable = tl.getInput("extensionVersionOverride", false); -let usingOverride = false; - -function setVersion(version: string) { - if (tl.getBoolInput("setBuildNumber", false)) { - tl.command("build.updatebuildnumber", null, version); - } - - console.log("Setting local variable 'Extension.Version'."); - tl.setVariable("Extension.Version", version, false, false); - console.log("Setting output variable '{{StepName}}.Extension.Version'."); - tl.setVariable("Extension.Version", version, false, true); -} - -if (extensionVersionOverrideVariable) { - tl.debug(`Override variable specified checking for value.`); - const version = tl.getVariable(extensionVersionOverrideVariable); - - if (version) { - console.log(`Ignoring Marketplace version and using supplied override: ${version}.`); - setVersion(version); - usingOverride = true; - } -} - -async function run() { - try { - await common.runTfx(async tfx => { - try { - tfx.arg(["extension", "show", "--json", "--no-color"]); - - common.setTfxMarketplaceArguments(tfx); - common.validateAndSetTfxManifestArguments(tfx); - - const versionAction = tl.getInput("versionAction", false); - - const outputStream = new common.TfxJsonOutputStream(console.log); - const errorStream = new common.TfxJsonOutputStream(tl.error); - - const code: number = await tfx.execAsync({ outStream: outputStream, errorStream: errorStream, failOnStdErr: false, ignoreReturnCode: false } as tr.IExecOptions); - if (code !== 0) - { - throw `tfx exited with return code: ${code}` - } - const json = JSON.parse(outputStream.jsonString); - let version: string = json.versions[0].version; - - console.log(`Latest version : ${version}.`); - console.log(`Requested action : ${versionAction}.`); - - if (versionAction !== "None") { - let versionparts: number[] = version.split(".").map(v => +v); - switch (versionAction) { - case "Major": - versionparts = [++versionparts[0], 0, 0]; - break; - case "Minor": - versionparts = [versionparts[0], ++versionparts[1], 0]; - break; - case "Patch": - versionparts = [versionparts[0], versionparts[1], ++versionparts[2]]; - break; - } - version = versionparts.join("."); - console.log(`Updated to : ${version}.`); - } - - setVersion(version); - tl.setResult(tl.TaskResult.Succeeded, `tfx exited with return code: ${code}`); - } - catch (err: any){ - tl.setResult(tl.TaskResult.Failed, err.message); - } - }); - } catch (err: any) { - tl.setResult(tl.TaskResult.Failed, `Extension Version task failed: ${err}`); - } -} - -if (!usingOverride) { - void run(); -} \ No newline at end of file diff --git a/BuildTasks/ExtensionVersion/v4/package-lock.json b/BuildTasks/ExtensionVersion/v4/package-lock.json deleted file mode 100644 index 4413a9b4..00000000 --- a/BuildTasks/ExtensionVersion/v4/package-lock.json +++ /dev/null @@ -1,389 +0,0 @@ -{ - "name": "vsts-developer-tools.extensionversionv4", - "version": "4.3.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "vsts-developer-tools.extensionversionv4", - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "azure-pipelines-task-lib": "^4.17.3", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", - "uuidv5": "^1.0.0" - }, - "devDependencies": {} - }, - "node_modules/adm-zip": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", - "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/azure-pipelines-task-lib": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.17.3.tgz", - "integrity": "sha512-UxfH5pk3uOHTi9TtLtdDyugQVkFES5A836ZEePjcs3jYyxm3EJ6IlFYq6gbfd6mNBhrM9fxG2u/MFYIJ+Z0cxQ==", - "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/balanced-match": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/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-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "license": "MIT" - }, - "node_modules/glob": { - "version": "7.2.0", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "license": "ISC" - }, - "node_modules/has": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/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/inflight": { - "version": "1.0.6", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "node_modules/interpret": { - "version": "1.4.0", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-core-module": { - "version": "2.8.1", - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/mime-db": { - "version": "1.51.0", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.34", - "license": "MIT", - "dependencies": { - "mime-db": "1.51.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.0.5", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/nodejs-file-downloader": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.12.1.tgz", - "integrity": "sha512-LpfCTNhh805AlLnJnzt1PuEj+RmbrccbAQZ6hBRw2e6QPVR0Qntuo6qqyvPHG5s77/0w0IEKgRAD4nbSnr/X4w==", - "dependencies": { - "follow-redirects": "^1.15.1", - "https-proxy-agent": "^5.0.0", - "mime-types": "^2.1.27", - "sanitize-filename": "^1.6.3" - } - }, - "node_modules/once": { - "version": "1.4.0", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "license": "MIT" - }, - "node_modules/q": { - "version": "1.5.1", - "license": "MIT", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/resolve": { - "version": "1.22.0", - "license": "MIT", - "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://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", - "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", - "dependencies": { - "truncate-utf8-bytes": "^1.0.0" - } - }, - "node_modules/semver": { - "version": "5.7.2", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/shelljs": { - "version": "0.8.5", - "license": "BSD-3-Clause", - "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", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/truncate-utf8-bytes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", - "dependencies": { - "utf8-byte-length": "^1.0.1" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/utf8-byte-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" - }, - "node_modules/uuid": { - "version": "3.4.0", - "license": "MIT", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/uuidv5": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "license": "ISC" - } - } -} diff --git a/BuildTasks/ExtensionVersion/v4/package.json b/BuildTasks/ExtensionVersion/v4/package.json deleted file mode 100644 index 860e5e11..00000000 --- a/BuildTasks/ExtensionVersion/v4/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "vsts-developer-tools.extensionversionv4", - "description": "Query Extension Version Task", - "version": "4.3.0", - "repository": { - "type": "git", - "url": "https://github.com/Microsoft/azure-devops-extension-tasks.git" - }, - "license": "MIT", - "dependencies": { - "azure-pipelines-task-lib": "^4.17.3", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", - "uuidv5": "^1.0.0" - }, - "devDependencies": { - } -} diff --git a/BuildTasks/ExtensionVersion/v4/task.json b/BuildTasks/ExtensionVersion/v4/task.json deleted file mode 100644 index e1a7ba13..00000000 --- a/BuildTasks/ExtensionVersion/v4/task.json +++ /dev/null @@ -1,163 +0,0 @@ -{ - "id": "5c6fa59e-1d5a-4516-9127-b9efd05df306", - "name": "QueryAzureDevOpsExtensionVersion", - "friendlyName": "Query Extension Version", - "description": "Queries the current version from the Visual Studio Marketplace", - "author": "Microsoft Corporation", - "helpMarkDown": "", - "category": "Utility", - "version": { - "Major": 4, - "Minor": 4, - "Patch": 0 - }, - "visibility": [ - "Build", - "Release" - ], - "demands": [ - "npm" - ], - "minimumAgentVersion": "2.206.1", - "groups": [ - { - "name": "extension", - "displayName": "Extension", - "isExpanded": true - }, - { - "name": "version", - "displayName": "Version", - "isExpanded": true - }, - { - "name": "advanced", - "displayName": "Advanced", - "isExpanded": false - }, - { - "name": "backcompat", - "displayName": "Backward Compatibility", - "isExpanded": false - } - ], - "instanceNameFormat": "Query Extension Version: $(publisherId).$(extensionId)", - "inputs": [ - { - "name": "connectTo", - "type": "radio", - "label": "Connect to", - "required": true, - "defaultValue": "VsTeam", - "helpMarkDown": "Connect to Visual Studio Marketplace or a local Azure DevOps Server.", - "options": { - "VsTeam": "Visual Studio Marketplace", - "TFS": "Azure DevOps Server" - } - }, - { - "name": "connectedServiceName", - "type": "connectedService:VstsMarketplacePublishing", - "label": "Visual Studio Marketplace", - "required": true, - "helpMarkDown": "Service endpoint connection to install the extension.", - "visibleRule": "connectTo=VsTeam" - }, - { - "name": "connectedServiceNameTFS", - "type": "connectedService:TFSMarketplacePublishing", - "label": "TFS Local Gallery connection", - "required": true, - "helpMarkDown": "Service endpoint connection to install the extension.", - "visibleRule": "connectTo=TFS" - }, - { - "name": "publisherId", - "type": "string", - "label": "Publisher ID", - "defaultValue": "", - "required": true, - "helpMarkDown": "Publisher ID of the extension to be installed.", - "groupName": "extension" - }, - { - "name": "extensionId", - "type": "string", - "label": "Extension ID", - "defaultValue": "", - "helpMarkDown": "Extension ID of the extension to be installed", - "required": true, - "groupName": "extension" - }, - { - "name": "extensionTag", - "type": "string", - "label": "Extension Tag", - "defaultValue": "", - "helpMarkDown": "Extension Tag to append to the extension ID", - "required": false, - "groupName": "extension" - }, - { - "defaultValue": "None", - "helpMarkdown": "Increase a part of the version.", - "label": "Increase version", - "name": "versionAction", - "required": true, - "options": { - "None": "None", - "Patch": "Patch", - "Minor": "Minor", - "Major": "Major" - }, - "type": "pickList", - "groupName": "version" - }, - { - "name": "setBuildNumber", - "type": "boolean", - "label": "Set Build Number", - "defaultValue": false, - "required": false, - "helpMarkDown": "Updates the Build Number with the new version number.", - "groupName": "version" - }, - { - "name": "extensionVersionOverride", - "type": "string", - "label": "Override Variable", - "defaultValue": "Extension.VersionOverride", - "helpMarkDown": "When this value is specified the extension version task will take it regardless of the version returned from the marketplace. You can use this variable at Queue time to move to the next major version. When the variable value is empty or when the variable doesn't exist the Marketplace will be queried.", - "required": false, - "groupName": "version" - }, - { - "name": "arguments", - "type": "string", - "label": "Arguments", - "defaultValue": "", - "helpMarkDown": "Additional arguments passed to the package and publishing tool.", - "required": false, - "groupName": "advanced" - }, - { - "name": "cwd", - "type": "filePath", - "label": "Working Directory", - "defaultValue": "", - "required": false, - "helpMarkDown": "Working directory to run the package and publishing process from. Defaults to the folder where the manifest is located.", - "groupName": "advanced" - } - ], - "execution": { - "Node20_1": { - "target": "ExtensionVersion/v4/ExtensionVersion.js", - "argumentFormat": "" - }, - "Node16": { - "target": "ExtensionVersion/v4/ExtensionVersion.js", - "argumentFormat": "" - } - } -} diff --git a/BuildTasks/ExtensionVersion/v4/tsconfig.json b/BuildTasks/ExtensionVersion/v4/tsconfig.json deleted file mode 100644 index b1161ae2..00000000 --- a/BuildTasks/ExtensionVersion/v4/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.v4.json", - "compilerOptions": { - "outDir": "./", - "sourceRoot": "./" - }, - "files": [ - "ExtensionVersion.ts" - ] - } \ No newline at end of file diff --git a/BuildTasks/ExtensionVersion/v5/icon.png b/BuildTasks/ExtensionVersion/v5/icon.png deleted file mode 100644 index 5ccc3c5c..00000000 Binary files a/BuildTasks/ExtensionVersion/v5/icon.png and /dev/null differ diff --git a/BuildTasks/InstallExtension/v5/InstallExtension.ts b/BuildTasks/InstallExtension/InstallExtension.ts similarity index 86% rename from BuildTasks/InstallExtension/v5/InstallExtension.ts rename to BuildTasks/InstallExtension/InstallExtension.ts index 008d7bcc..17939d38 100644 --- a/BuildTasks/InstallExtension/v5/InstallExtension.ts +++ b/BuildTasks/InstallExtension/InstallExtension.ts @@ -1,5 +1,6 @@ import tl from "azure-pipelines-task-lib"; -import * as common from "../../Common/v5/Common.js"; +import * as common from "../Common/Common.js"; +import * as commonAuth from "../Common-Auth/CommonAuth.js"; const accounts = tl.getDelimitedInput("accounts", ",", true).map((value) => { return value.trim(); }); @@ -7,7 +8,7 @@ accounts.forEach(async (account) => await common.runTfx(async tfx => { try { tfx.arg(["extension", "install", "--no-color"]); - await common.setTfxMarketplaceArguments(tfx, false); + await commonAuth.setTfxMarketplaceArguments(tfx, false); common.validateAndSetTfxManifestArguments(tfx); // Installation targets diff --git a/BuildTasks/InstallExtension/v4/icon.png b/BuildTasks/InstallExtension/icon.png similarity index 100% rename from BuildTasks/InstallExtension/v4/icon.png rename to BuildTasks/InstallExtension/icon.png diff --git a/BuildTasks/InstallExtension/v5/package-lock.json b/BuildTasks/InstallExtension/package-lock.json similarity index 96% rename from BuildTasks/InstallExtension/v5/package-lock.json rename to BuildTasks/InstallExtension/package-lock.json index 42dc245b..b44129e2 100644 --- a/BuildTasks/InstallExtension/v5/package-lock.json +++ b/BuildTasks/InstallExtension/package-lock.json @@ -11,8 +11,6 @@ "dependencies": { "azure-pipelines-task-lib": "^4.17.3", "azure-pipelines-tasks-azure-arm-rest": "^3.263.1", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", "uuidv5": "^1.0.0" }, "devDependencies": {} @@ -591,20 +589,6 @@ } } }, - "node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -698,11 +682,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -823,17 +802,6 @@ "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==", "license": "MIT" }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jsonwebtoken": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", @@ -1348,15 +1316,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -1412,14 +1371,6 @@ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "license": "MIT" }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/utf8-byte-length": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", diff --git a/BuildTasks/InstallExtension/v5/package.json b/BuildTasks/InstallExtension/package.json similarity index 90% rename from BuildTasks/InstallExtension/v5/package.json rename to BuildTasks/InstallExtension/package.json index f45d75aa..0809f003 100644 --- a/BuildTasks/InstallExtension/v5/package.json +++ b/BuildTasks/InstallExtension/package.json @@ -11,8 +11,6 @@ "dependencies": { "azure-pipelines-task-lib": "^4.17.3", "azure-pipelines-tasks-azure-arm-rest": "^3.263.1", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", "uuidv5": "^1.0.0" }, "devDependencies": { diff --git a/BuildTasks/InstallExtension/v5/task.json b/BuildTasks/InstallExtension/task.json similarity index 97% rename from BuildTasks/InstallExtension/v5/task.json rename to BuildTasks/InstallExtension/task.json index 34df925a..323c9223 100644 --- a/BuildTasks/InstallExtension/v5/task.json +++ b/BuildTasks/InstallExtension/task.json @@ -158,11 +158,11 @@ ], "execution": { "Node20_1": { - "target": "InstallExtension/v5/InstallExtension.js", + "target": "InstallExtension/InstallExtension.js", "argumentFormat": "" }, "Node16": { - "target": "InstallExtension/v5/InstallExtension.js", + "target": "InstallExtension/InstallExtension.js", "argumentFormat": "" } }, diff --git a/BuildTasks/InstallExtension/v5/tsconfig.json b/BuildTasks/InstallExtension/tsconfig.json similarity index 77% rename from BuildTasks/InstallExtension/v5/tsconfig.json rename to BuildTasks/InstallExtension/tsconfig.json index d53c6f2c..2f5cddeb 100644 --- a/BuildTasks/InstallExtension/v5/tsconfig.json +++ b/BuildTasks/InstallExtension/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.v5.json", + "extends": "../tsconfig.v5.json", "compilerOptions": { "outDir": "./", "sourceRoot": "./" diff --git a/BuildTasks/InstallExtension/v4/InstallExtension.ts b/BuildTasks/InstallExtension/v4/InstallExtension.ts deleted file mode 100644 index 6f2d077a..00000000 --- a/BuildTasks/InstallExtension/v4/InstallExtension.ts +++ /dev/null @@ -1,29 +0,0 @@ -import * as tl from "azure-pipelines-task-lib/task"; -import * as common from "../../Common/v4/Common"; - -const accounts = tl.getDelimitedInput("accounts", ",", true).map((value) => { return value.trim(); }); - -void accounts.forEach(async (account) => await common.runTfx(tfx => { - try { - tfx.arg(["extension", "install", "--no-color"]); - - common.setTfxMarketplaceArguments(tfx, false); - common.validateAndSetTfxManifestArguments(tfx); - - // Installation targets - tfx.arg(["--service-url", account]); - - const result = tfx.execSync({ silent: false, failOnStdErr: false }); - if (result.stderr.search("error: Error: (?=.*TF1590010)") >= 0) { - tl.warning("Task already installed in target account - Ignoring error TF1590010 returned by tfx."); - tl.setResult(tl.TaskResult.Succeeded, "Ignored"); - } - - if (result.stderr.search("error: Error: (?!.*TF1590010)") >= 0) { - tl.setResult(tl.TaskResult.Failed, "Failed"); - } - tl.setResult(tl.TaskResult.Succeeded, "Installed"); - } catch (err) { - tl.setResult(tl.TaskResult.Failed, `Failed: ${err}`); - } -})); \ No newline at end of file diff --git a/BuildTasks/InstallExtension/v4/package-lock.json b/BuildTasks/InstallExtension/v4/package-lock.json deleted file mode 100644 index feb3ee30..00000000 --- a/BuildTasks/InstallExtension/v4/package-lock.json +++ /dev/null @@ -1,389 +0,0 @@ -{ - "name": "vsts-developer-tools.installextensionv4", - "version": "4.3.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "vsts-developer-tools.installextensionv4", - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "azure-pipelines-task-lib": "^4.17.3", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", - "uuidv5": "^1.0.0" - }, - "devDependencies": {} - }, - "node_modules/adm-zip": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", - "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/azure-pipelines-task-lib": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.17.3.tgz", - "integrity": "sha512-UxfH5pk3uOHTi9TtLtdDyugQVkFES5A836ZEePjcs3jYyxm3EJ6IlFYq6gbfd6mNBhrM9fxG2u/MFYIJ+Z0cxQ==", - "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/balanced-match": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/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-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "license": "MIT" - }, - "node_modules/glob": { - "version": "7.2.0", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "license": "ISC" - }, - "node_modules/has": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/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/inflight": { - "version": "1.0.6", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "node_modules/interpret": { - "version": "1.4.0", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-core-module": { - "version": "2.8.1", - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/mime-db": { - "version": "1.51.0", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.34", - "license": "MIT", - "dependencies": { - "mime-db": "1.51.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.0.5", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/nodejs-file-downloader": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.12.1.tgz", - "integrity": "sha512-LpfCTNhh805AlLnJnzt1PuEj+RmbrccbAQZ6hBRw2e6QPVR0Qntuo6qqyvPHG5s77/0w0IEKgRAD4nbSnr/X4w==", - "dependencies": { - "follow-redirects": "^1.15.1", - "https-proxy-agent": "^5.0.0", - "mime-types": "^2.1.27", - "sanitize-filename": "^1.6.3" - } - }, - "node_modules/once": { - "version": "1.4.0", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "license": "MIT" - }, - "node_modules/q": { - "version": "1.5.1", - "license": "MIT", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/resolve": { - "version": "1.22.0", - "license": "MIT", - "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://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", - "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", - "dependencies": { - "truncate-utf8-bytes": "^1.0.0" - } - }, - "node_modules/semver": { - "version": "5.7.2", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/shelljs": { - "version": "0.8.5", - "license": "BSD-3-Clause", - "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", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/truncate-utf8-bytes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", - "dependencies": { - "utf8-byte-length": "^1.0.1" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/utf8-byte-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" - }, - "node_modules/uuid": { - "version": "3.4.0", - "license": "MIT", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/uuidv5": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "license": "ISC" - } - } -} diff --git a/BuildTasks/InstallExtension/v4/package.json b/BuildTasks/InstallExtension/v4/package.json deleted file mode 100644 index 981adcf2..00000000 --- a/BuildTasks/InstallExtension/v4/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "vsts-developer-tools.installextensionv4", - "version": "4.3.0", - "description": "Install Extension Task", - "repository": { - "type": "git", - "url": "https://github.com/Microsoft/azure-devops-extension-tasks.git" - }, - "license": "MIT", - "dependencies": { - "azure-pipelines-task-lib": "^4.17.3", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", - "uuidv5": "^1.0.0" - }, - "devDependencies": { - } -} diff --git a/BuildTasks/InstallExtension/v4/task.json b/BuildTasks/InstallExtension/v4/task.json deleted file mode 100644 index d4e29ccc..00000000 --- a/BuildTasks/InstallExtension/v4/task.json +++ /dev/null @@ -1,156 +0,0 @@ -{ - "id": "47a0f73c-f8e6-4fc5-a759-4d560031ef75", - "name": "InstallAzureDevOpsExtension", - "friendlyName": "Install Extension", - "description": "Install a published extension to an Azure DevOps organisation or Team Foundation Server", - "author": "Microsoft Corporation", - "helpMarkDown": "", - "category": "Deploy", - "version": { - "Major": 4, - "Minor": 4, - "Patch": 0 - }, - "visibility": [ - "Build", - "Release" - ], - "demands": [ - "npm" - ], - "minimumAgentVersion": "2.206.1", - "groups": [ - { - "name": "extension", - "displayName": "Extension", - "isExpanded": true - }, - { - "name": "installation", - "displayName": "Installation", - "isExpanded": true - }, - { - "name": "advanced", - "displayName": "Advanced", - "isExpanded": false - } - ], - "instanceNameFormat": "Install Extension", - "inputs": [ - { - "name": "connectTo", - "type": "radio", - "label": "Connect to", - "required": true, - "defaultValue": "VsTeam", - "helpMarkDown": "Connect to Visual Studio Marketplace.", - "options": { - "VsTeam": "Visual Studio Marketplace", - "TFS": "Azure DevOps Server" - } - }, - { - "name": "connectedServiceName", - "type": "connectedService:VstsMarketplacePublishing", - "label": "Visual Studio Marketplace", - "required": true, - "helpMarkDown": "Service endpoint connection to install the extension.", - "visibleRule": "connectTo=VsTeam" - }, - { - "name": "connectedServiceNameTFS", - "type": "connectedService:TFSMarketplacePublishing", - "label": "TFS Local Gallery connection", - "required": true, - "helpMarkDown": "Service endpoint connection to install the extension.", - "visibleRule": "connectTo=TFS" - }, - { - "name": "method", - "type": "radio", - "label": "Install using", - "required": true, - "defaultValue": "id", - "helpMarkDown": "Install using either an existing VSIX or using the Publisher and Extension ID.", - "options": { - "id": "Publisher + Extension ID", - "vsix": "VSIX file" - }, - "groupName": "extension" - }, - { - "name": "publisherId", - "type": "string", - "label": "Publisher ID", - "defaultValue": "", - "required": true, - "helpMarkDown": "Publisher ID of the extension to be installed.", - "groupName": "extension", - "visibleRule": "method = id" - }, - { - "name": "extensionId", - "type": "string", - "label": "Extension ID", - "defaultValue": "", - "helpMarkDown": "Extension ID of the extension to be installed", - "required": true, - "groupName": "extension", - "visibleRule": "method = id" - }, - { - "name": "extensionTag", - "type": "string", - "label": "Extension Tag", - "defaultValue": "", - "helpMarkDown": "Extension Tag to append to the extension ID", - "required": false, - "groupName": "extension", - "visibleRule": "method = id" - }, - { - "name": "vsixFile", - "type": "filePath", - "label": "VSIX file", - "defaultValue": "", - "required": true, - "helpMarkDown": "VSIX file of the extension to be installed. Supports wildcards.", - "visibleRule": "method = vsix", - "groupName": "extension" - }, - { - "name": "accounts", - "type": "string", - "label": "Install in", - "defaultValue": "", - "helpMarkDown": "Comma separated list of organisation urls where to install the extension (e.g. `https://devops.azure.com/org_a,https://devops.azure.com/org_b`) Or fully qualified TFS Collection URL (e.g. `https://yourserver/tfs/DefaultCollection`).", - "required": true, - "groupName": "installation" - }, - { - "name": "arguments", - "type": "string", - "label": "Arguments", - "defaultValue": "", - "helpMarkDown": "Additional arguments passed to the package and publishing tool.", - "required": false, - "groupName": "advanced" - }, - { - "name": "cwd", - "type": "filePath", - "label": "Working Directory", - "defaultValue": "", - "required": false, - "helpMarkDown": "Working directory to run the package and publishing process from. Defaults to the folder where the manifest is located.", - "groupName": "advanced" - } - ], - "execution": { - "Node16": { - "target": "InstallExtension/v4/InstallExtension.js", - "argumentFormat": "" - } - } -} diff --git a/BuildTasks/InstallExtension/v4/tsconfig.json b/BuildTasks/InstallExtension/v4/tsconfig.json deleted file mode 100644 index cba630cf..00000000 --- a/BuildTasks/InstallExtension/v4/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.v4.json", - "compilerOptions": { - "outDir": "./", - "sourceRoot": "./" - }, - "files": [ - "InstallExtension.ts" - ] - } \ No newline at end of file diff --git a/BuildTasks/InstallExtension/v5/icon.png b/BuildTasks/InstallExtension/v5/icon.png deleted file mode 100644 index f294114d..00000000 Binary files a/BuildTasks/InstallExtension/v5/icon.png and /dev/null differ diff --git a/BuildTasks/IsValidExtensionAgent/v5/IsValidExtension.ts b/BuildTasks/IsValidExtensionAgent/IsValidExtension.ts similarity index 91% rename from BuildTasks/IsValidExtensionAgent/v5/IsValidExtension.ts rename to BuildTasks/IsValidExtensionAgent/IsValidExtension.ts index 6eec5245..dbc5664e 100644 --- a/BuildTasks/IsValidExtensionAgent/v5/IsValidExtension.ts +++ b/BuildTasks/IsValidExtensionAgent/IsValidExtension.ts @@ -1,13 +1,14 @@ import tl from "azure-pipelines-task-lib"; import tr from "azure-pipelines-task-lib/toolrunner.js"; -import * as common from "../../Common/v5/Common.js"; +import * as common from "../Common/Common.js"; +import * as commonAuth from "../Common-Auth/CommonAuth.js"; import promiseRetry from "promise-retry"; await common.runTfx(async tfx => { try { tfx.arg(["extension", "isvalid", "--json", "--no-color"]); - await common.setTfxMarketplaceArguments(tfx); + await commonAuth.setTfxMarketplaceArguments(tfx); common.validateAndSetTfxManifestArguments(tfx); const options = { diff --git a/BuildTasks/IsValidExtensionAgent/v4/icon.png b/BuildTasks/IsValidExtensionAgent/icon.png similarity index 100% rename from BuildTasks/IsValidExtensionAgent/v4/icon.png rename to BuildTasks/IsValidExtensionAgent/icon.png diff --git a/BuildTasks/IsValidExtensionAgent/v5/package-lock.json b/BuildTasks/IsValidExtensionAgent/package-lock.json similarity index 96% rename from BuildTasks/IsValidExtensionAgent/v5/package-lock.json rename to BuildTasks/IsValidExtensionAgent/package-lock.json index 6f44b306..37fd3f16 100644 --- a/BuildTasks/IsValidExtensionAgent/v5/package-lock.json +++ b/BuildTasks/IsValidExtensionAgent/package-lock.json @@ -11,9 +11,7 @@ "dependencies": { "azure-pipelines-task-lib": "^4.17.3", "azure-pipelines-tasks-azure-arm-rest": "^3.263.1", - "fs-extra": "^11.3.2", "promise-retry": "^2.0.1", - "tmp": "^0.2.5", "uuidv5": "^1.0.0" }, "devDependencies": {} @@ -597,20 +595,6 @@ } } }, - "node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -704,11 +688,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -829,17 +808,6 @@ "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==", "license": "MIT" }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jsonwebtoken": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", @@ -1374,15 +1342,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -1438,14 +1397,6 @@ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "license": "MIT" }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/utf8-byte-length": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", diff --git a/BuildTasks/IsValidExtensionAgent/v5/package.json b/BuildTasks/IsValidExtensionAgent/package.json similarity index 91% rename from BuildTasks/IsValidExtensionAgent/v5/package.json rename to BuildTasks/IsValidExtensionAgent/package.json index 08482f6a..8fa18ac1 100644 --- a/BuildTasks/IsValidExtensionAgent/v5/package.json +++ b/BuildTasks/IsValidExtensionAgent/package.json @@ -11,9 +11,7 @@ "dependencies": { "azure-pipelines-task-lib": "^4.17.3", "azure-pipelines-tasks-azure-arm-rest": "^3.263.1", - "fs-extra": "^11.3.2", "promise-retry": "^2.0.1", - "tmp": "^0.2.5", "uuidv5": "^1.0.0" }, "devDependencies": { diff --git a/BuildTasks/IsValidExtensionAgent/v5/task.json b/BuildTasks/IsValidExtensionAgent/task.json similarity index 97% rename from BuildTasks/IsValidExtensionAgent/v5/task.json rename to BuildTasks/IsValidExtensionAgent/task.json index c519d46d..b187f760 100644 --- a/BuildTasks/IsValidExtensionAgent/v5/task.json +++ b/BuildTasks/IsValidExtensionAgent/task.json @@ -145,11 +145,11 @@ ], "execution": { "Node20_1": { - "target": "IsValidExtensionAgent/v5/IsValidExtension.js", + "target": "IsValidExtensionAgent/IsValidExtension.js", "argumentFormat": "" }, "Node16": { - "target": "IsValidExtensionAgent/v5/IsValidExtension.js", + "target": "IsValidExtensionAgent/IsValidExtension.js", "argumentFormat": "" } }, diff --git a/BuildTasks/IsValidExtensionAgent/v5/tsconfig.json b/BuildTasks/IsValidExtensionAgent/tsconfig.json similarity index 77% rename from BuildTasks/IsValidExtensionAgent/v5/tsconfig.json rename to BuildTasks/IsValidExtensionAgent/tsconfig.json index f058a11d..e0eaf5ad 100644 --- a/BuildTasks/IsValidExtensionAgent/v5/tsconfig.json +++ b/BuildTasks/IsValidExtensionAgent/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.v5.json", + "extends": "../tsconfig.v5.json", "compilerOptions": { "outDir": "./", "sourceRoot": "./" diff --git a/BuildTasks/IsValidExtensionAgent/v4/IsValidExtension.ts b/BuildTasks/IsValidExtensionAgent/v4/IsValidExtension.ts deleted file mode 100644 index e1812182..00000000 --- a/BuildTasks/IsValidExtensionAgent/v4/IsValidExtension.ts +++ /dev/null @@ -1,49 +0,0 @@ -import * as tl from "azure-pipelines-task-lib/task"; -import * as tlr from "azure-pipelines-task-lib/toolrunner"; -import * as common from "../../Common/v4/Common"; -import promiseRetry from "promise-retry"; - -async function run() { - await common.runTfx(async tfx => { - try - { - tfx.arg(["extension", "isvalid", "--json", "--no-color"]); - - common.setTfxMarketplaceArguments(tfx); - common.validateAndSetTfxManifestArguments(tfx); - - const options = { - retries: +tl.getInput("maxRetries", false) || 10, - factor: 1, - minTimeout: 1000 * 60 * (+tl.getInput("minTimeout", false) || 1), - maxTimeout: 1000 * 60 * (+tl.getInput("maxTimeout", false) || 15), - randomize: false - }; - - await promiseRetry(options, - async (retry, attempt) => { - tl.debug(`Attempt: ${attempt}`); - - const outputStream = new common.TfxJsonOutputStream(console.log); - const errorStream = new common.TfxJsonOutputStream(tl.error); - - await tfx.execAsync({ outStream: outputStream, errorStream: errorStream, failOnStdErr: false, ignoreReturnCode: true } as tlr.IExecOptions); - - const json = JSON.parse(outputStream.jsonString); - switch (json.status) { - case "pending": - return retry(json.status); - case "success": - return json.status; - default: - throw json.status; - } - }); - tl.setResult(tl.TaskResult.Succeeded, "Extension is valid."); - } catch (err) { - tl.setResult(tl.TaskResult.Failed, `Extension validation failed: ${err.toString()}`); - } - }); -} - -void run(); \ No newline at end of file diff --git a/BuildTasks/IsValidExtensionAgent/v4/package.json b/BuildTasks/IsValidExtensionAgent/v4/package.json deleted file mode 100644 index 4fbe22db..00000000 --- a/BuildTasks/IsValidExtensionAgent/v4/package.json +++ /dev/null @@ -1,19 +0,0 @@ -{ - "name": "vsts-developer-tools.isvalidextensionagentv4", - "version": "4.3.0", - "description": "Is Valid Extension Agent Task", - "repository": { - "type": "git", - "url": "https://github.com/Microsoft/azure-devops-extension-tasks.git" - }, - "license": "MIT", - "dependencies": { - "azure-pipelines-task-lib": "^4.17.3", - "fs-extra": "^11.3.2", - "promise-retry": "^2.0.1", - "tmp": "^0.2.5", - "uuidv5": "^1.0.0" - }, - "devDependencies": { - } -} diff --git a/BuildTasks/IsValidExtensionAgent/v4/task.json b/BuildTasks/IsValidExtensionAgent/v4/task.json deleted file mode 100644 index ad55bc06..00000000 --- a/BuildTasks/IsValidExtensionAgent/v4/task.json +++ /dev/null @@ -1,143 +0,0 @@ -{ - "id": "b86cdd2a-0579-4d40-b28f-18197ffaf520", - "name": "IsAzureDevOpsExtensionValid", - "friendlyName": "Is valid Extension", - "description": "Check Visual Studio Marketplace validation status.", - "author": "Microsoft Corporation", - "helpMarkDown": "", - "category": "Deploy", - "version": { - "Major": 4, - "Minor": 4, - "Patch": 0 - }, - "visibility": [ - "Build", - "Release" - ], - "demands": [ - "npm" - ], - "minimumAgentVersion": "2.206.1", - "groups": [ - { - "name": "extension", - "displayName": "Extension", - "isExpanded": true - }, - { - "name": "retry", - "displayName": "Retry", - "isExpanded": true - } - ], - "instanceNameFormat": "Check Marketplace validation status: $(extensionId)", - "inputs": [ - { - "name": "connectTo", - "type": "radio", - "label": "Connect to", - "required": true, - "defaultValue": "VsTeam", - "helpMarkDown": "Connect to Visual Studio Marketplace.", - "options": { - "VsTeam": "Azure DevOps" - } - }, - { - "name": "connectedServiceName", - "type": "connectedService:VstsMarketplacePublishing", - "label": "Visual Studio Marketplace connection", - "required": true, - "helpMarkDown": "Service endpoint connection to install the extension.", - "visibleRule": "connectTo=VsTeam" - }, - { - "name": "method", - "type": "radio", - "label": "Validate using", - "required": true, - "defaultValue": "id", - "helpMarkDown": "Validate using either an existing VSIX or using the Publisher, Extension ID and version.", - "options": { - "id": "Publisher + Extension ID", - "vsix": "VSIX" - }, - "groupName": "extension" - }, - { - "name": "publisherId", - "type": "string", - "label": "Publisher ID", - "defaultValue": "", - "required": true, - "helpMarkDown": "Publisher ID of the extension to be installed.", - "groupName": "extension", - "visibleRule": "method = id" - }, - { - "name": "extensionId", - "type": "string", - "label": "Extension ID", - "defaultValue": "", - "helpMarkDown": "Extension ID of the extension to be installed", - "required": true, - "groupName": "extension", - "visibleRule": "method = id" - }, - { - "name": "extensionTag", - "type": "string", - "label": "Extension Tag", - "defaultValue": "", - "helpMarkDown": "Extension Tag to append to the extension ID", - "required": false, - "groupName": "extension", - "visibleRule": "method = id" - }, - { - "name": "extensionVersion", - "type": "string", - "label": "Extension Version", - "defaultValue": "", - "helpMarkDown": "Extension version (leave the value empty to check the last submitted version).", - "required": false, - "groupName": "extension", - "visibleRule": "method = id" - }, - { - "name": "vsixFile", - "type": "filePath", - "label": "VSIX file", - "defaultValue": "", - "required": true, - "helpMarkDown": "VSIX file of the extension to be installed. Supports wildcards.", - "visibleRule": "method = vsix", - "groupName": "extension" - }, - { - "name": "maxRetries", - "type": "string", - "label": "Maximum number of retries", - "defaultValue": "10", - "required": false, - "helpMarkDown": "Maximum number of retries.", - "groupName": "retry" - }, - { - "name": "minTimeout", - "type": "string", - "label": "Time between retries", - "defaultValue": "1", - "required": false, - "helpMarkDown": "Time between retries (minutes).", - "groupName": "retry" - } - ], - "execution": { - "Node16": { - "target": "IsValidExtensionAgent/v4/IsValidExtension.js", - "argumentFormat": "" - } - } -} \ No newline at end of file diff --git a/BuildTasks/IsValidExtensionAgent/v4/tsconfig.json b/BuildTasks/IsValidExtensionAgent/v4/tsconfig.json deleted file mode 100644 index d5fde9b5..00000000 --- a/BuildTasks/IsValidExtensionAgent/v4/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.v4.json", - "compilerOptions": { - "outDir": "./", - "sourceRoot": "./" - }, - "files": [ - "IsValidExtension.ts" - ] - } \ No newline at end of file diff --git a/BuildTasks/IsValidExtensionAgent/v5/icon.png b/BuildTasks/IsValidExtensionAgent/v5/icon.png deleted file mode 100644 index 4afbe109..00000000 Binary files a/BuildTasks/IsValidExtensionAgent/v5/icon.png and /dev/null differ diff --git a/BuildTasks/PackageExtension/v5/PackageExtension.ts b/BuildTasks/PackageExtension/PackageExtension.ts similarity index 97% rename from BuildTasks/PackageExtension/v5/PackageExtension.ts rename to BuildTasks/PackageExtension/PackageExtension.ts index d2f319f7..af1d71f6 100644 --- a/BuildTasks/PackageExtension/v5/PackageExtension.ts +++ b/BuildTasks/PackageExtension/PackageExtension.ts @@ -1,5 +1,5 @@ import tl from "azure-pipelines-task-lib/task.js"; -import * as common from "../../Common/v5/Common.js"; +import * as common from "../Common/Common.js"; try { await common.runTfx(async tfx => { diff --git a/BuildTasks/PackageExtension/v4/icon.png b/BuildTasks/PackageExtension/icon.png similarity index 100% rename from BuildTasks/PackageExtension/v4/icon.png rename to BuildTasks/PackageExtension/icon.png diff --git a/BuildTasks/PublishExtension/v4/package-lock.json b/BuildTasks/PackageExtension/package-lock.json similarity index 55% rename from BuildTasks/PublishExtension/v4/package-lock.json rename to BuildTasks/PackageExtension/package-lock.json index 6efd3db8..928556d8 100644 --- a/BuildTasks/PublishExtension/v4/package-lock.json +++ b/BuildTasks/PackageExtension/package-lock.json @@ -1,46 +1,23 @@ { - "name": "vsts-developer-tools.publishextensionv4", - "version": "4.3.0", + "name": "vsts-developer-tools.packageextensionv5", + "version": "5.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "vsts-developer-tools.publishextensionv4", - "version": "4.3.0", + "name": "vsts-developer-tools.packageextensionv5", + "version": "5.0.0", "license": "MIT", "dependencies": { - "@xmldom/xmldom": "^0.9.8", - "7zip-bin-win": "^2.2.0", "azure-pipelines-task-lib": "^4.17.3", - "core-js": "^3.46.0", - "fs-extra": "^11.3.2", - "temp": "^0.9.4", - "tmp": "^0.2.5", - "uuidv5": "^1.0.0", - "x2js": "^3.4.4" + "uuidv5": "^1.0.0" }, "devDependencies": {} }, - "node_modules/@xmldom/xmldom": { - "version": "0.9.8", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.9.8.tgz", - "integrity": "sha512-p96FSY54r+WJ50FIOsCOjyj/wavs8921hG5+kVMmZgKcvIKxMXHTrjNJvRgWa/zuX3B6t2lijLNFaOyuxUH+2A==", - "license": "MIT", - "engines": { - "node": ">=14.6" - } - }, - "node_modules/7zip-bin-win": { - "version": "2.2.0", - "license": "MIT", - "os": [ - "win32" - ] - }, "node_modules/adm-zip": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", - "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", + "version": "0.5.12", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.12.tgz", + "integrity": "sha512-6TVU49mK6KZb4qG6xWaaM4C7sA/sgUMLy/JYMOzkcp3BvVLpW0fXDFQiIzAuxFCt/2+xD7fNIiPFAoLZPhVNLQ==", "engines": { "node": ">=6.0" } @@ -72,8 +49,9 @@ } }, "node_modules/balanced-match": { - "version": "1.0.0", - "license": "MIT" + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, "node_modules/brace-expansion": { "version": "1.1.12", @@ -87,18 +65,8 @@ }, "node_modules/concat-map": { "version": "0.0.1", - "license": "MIT" - }, - "node_modules/core-js": { - "version": "3.46.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.46.0.tgz", - "integrity": "sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==", - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "node_modules/debug": { "version": "4.3.4", @@ -135,36 +103,29 @@ } } }, - "node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "node_modules/function-bind": { - "version": "1.1.1", - "license": "MIT" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, "node_modules/glob": { - "version": "7.2.0", - "license": "ISC", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/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.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, @@ -175,18 +136,26 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "license": "ISC" + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } }, - "node_modules/has": { - "version": "1.0.3", - "license": "MIT", + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "dependencies": { - "function-bind": "^1.1.1" + "function-bind": "^1.1.2" }, "engines": { - "node": ">= 0.4.0" + "node": ">= 0.4" } }, "node_modules/https-proxy-agent": { @@ -203,7 +172,9 @@ }, "node_modules/inflight": { "version": "1.0.6", - "license": "ISC", + "resolved": "https://registry.npmjs.org/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" @@ -211,47 +182,42 @@ }, "node_modules/inherits": { "version": "2.0.4", - "license": "ISC" + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, "node_modules/interpret": { "version": "1.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", "engines": { "node": ">= 0.10" } }, "node_modules/is-core-module": { - "version": "2.8.1", - "license": "MIT", + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", "dependencies": { - "has": "^1.0.3" + "hasown": "^2.0.0" }, "funding": { "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/jsonfile": { - "version": "6.1.0", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/mime-db": { - "version": "1.51.0", - "license": "MIT", + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", "engines": { "node": ">= 0.6" } }, "node_modules/mime-types": { - "version": "2.1.34", - "license": "MIT", + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", "dependencies": { - "mime-db": "1.51.0" + "mime-db": "1.52.0" }, "engines": { "node": ">= 0.6" @@ -259,7 +225,8 @@ }, "node_modules/minimatch": { "version": "3.0.5", - "license": "ISC", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", "dependencies": { "brace-expansion": "^1.1.7" }, @@ -267,23 +234,6 @@ "node": "*" } }, - "node_modules/minimist": { - "version": "1.2.7", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "license": "MIT", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, "node_modules/ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -302,25 +252,29 @@ }, "node_modules/once": { "version": "1.4.0", - "license": "ISC", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "dependencies": { "wrappy": "1" } }, "node_modules/path-is-absolute": { "version": "1.0.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", "engines": { "node": ">=0.10.0" } }, "node_modules/path-parse": { "version": "1.0.7", - "license": "MIT" + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" }, "node_modules/q": { "version": "1.5.1", - "license": "MIT", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", "engines": { "node": ">=0.6.0", "teleport": ">=0.2.0" @@ -328,6 +282,8 @@ }, "node_modules/rechoir": { "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "dependencies": { "resolve": "^1.1.6" }, @@ -336,10 +292,11 @@ } }, "node_modules/resolve": { - "version": "1.22.0", - "license": "MIT", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "dependencies": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" }, @@ -350,16 +307,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/rimraf": { - "version": "2.6.3", - "license": "ISC", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, "node_modules/sanitize-filename": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", @@ -370,14 +317,16 @@ }, "node_modules/semver": { "version": "5.7.2", - "license": "ISC", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", "bin": { "semver": "bin/semver" } }, "node_modules/shelljs": { "version": "0.8.5", - "license": "BSD-3-Clause", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", @@ -392,7 +341,8 @@ }, "node_modules/supports-preserve-symlinks-flag": { "version": "1.0.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", "engines": { "node": ">= 0.4" }, @@ -400,26 +350,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/temp": { - "version": "0.9.4", - "license": "MIT", - "dependencies": { - "mkdirp": "^0.5.1", - "rimraf": "~2.6.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, "node_modules/truncate-utf8-bytes": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", @@ -428,48 +358,29 @@ "utf8-byte-length": "^1.0.1" } }, - "node_modules/universalify": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/utf8-byte-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", + "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==" }, "node_modules/uuid": { "version": "3.4.0", - "license": "MIT", + "resolved": "https://registry.npmjs.org/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/uuidv5": { "version": "1.0.0", - "license": "ISC" + "resolved": "https://registry.npmjs.org/uuidv5/-/uuidv5-1.0.0.tgz", + "integrity": "sha512-OIrdJoTuC0Sbk1CKrGWG02gwrZHZptlYTHGkVOH7wxVNmMsGYFzJ77N7+SbrctXfpp9sI8Bp/nsu6C932p2MGQ==" }, "node_modules/wrappy": { "version": "1.0.2", - "license": "ISC" - }, - "node_modules/x2js": { - "version": "3.4.4", - "license": "Apache-2.0", - "dependencies": { - "@xmldom/xmldom": "^0.8.3" - } - }, - "node_modules/x2js/node_modules/@xmldom/xmldom": { - "version": "0.8.10", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", - "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", - "license": "MIT", - "engines": { - "node": ">=10.0.0" - } + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" } } } diff --git a/BuildTasks/PackageExtension/v5/package.json b/BuildTasks/PackageExtension/package.json similarity index 79% rename from BuildTasks/PackageExtension/v5/package.json rename to BuildTasks/PackageExtension/package.json index d7bbf27d..30c2d886 100644 --- a/BuildTasks/PackageExtension/v5/package.json +++ b/BuildTasks/PackageExtension/package.json @@ -10,9 +10,6 @@ "license": "MIT", "dependencies": { "azure-pipelines-task-lib": "^4.17.3", - "azure-pipelines-tasks-azure-arm-rest": "^3.263.1", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", "uuidv5": "^1.0.0" }, "devDependencies": { diff --git a/BuildTasks/PackageExtension/v5/task.json b/BuildTasks/PackageExtension/task.json similarity index 98% rename from BuildTasks/PackageExtension/v5/task.json rename to BuildTasks/PackageExtension/task.json index 36b0ab97..9d3b6ba8 100644 --- a/BuildTasks/PackageExtension/v5/task.json +++ b/BuildTasks/PackageExtension/task.json @@ -227,11 +227,11 @@ ], "execution": { "Node20_1": { - "target": "PackageExtension/v5/PackageExtension.js", + "target": "PackageExtension/PackageExtension.js", "argumentFormat": "" }, "Node16": { - "target": "PackageExtension/v5/PackageExtension.js", + "target": "PackageExtension/PackageExtension.js", "argumentFormat": "" } }, diff --git a/BuildTasks/PackageExtension/v5/tsconfig.json b/BuildTasks/PackageExtension/tsconfig.json similarity index 77% rename from BuildTasks/PackageExtension/v5/tsconfig.json rename to BuildTasks/PackageExtension/tsconfig.json index b64d9608..d4900be1 100644 --- a/BuildTasks/PackageExtension/v5/tsconfig.json +++ b/BuildTasks/PackageExtension/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.v5.json", + "extends": "../tsconfig.v5.json", "compilerOptions": { "outDir": "./", "sourceRoot": "./" diff --git a/BuildTasks/PackageExtension/v4/PackageExtension.ts b/BuildTasks/PackageExtension/v4/PackageExtension.ts deleted file mode 100644 index 11dd3e55..00000000 --- a/BuildTasks/PackageExtension/v4/PackageExtension.ts +++ /dev/null @@ -1,54 +0,0 @@ -import * as tl from "azure-pipelines-task-lib/task"; -import * as common from "../../Common/v4/Common"; - -async function run() { - try { - await common.runTfx(async tfx => { - let cleanupTfxArgs: () => void = null; - try { - tfx.arg(["extension", "create", "--json", "--no-color"]); - const outputVariable = tl.getInput("outputVariable", false); - - // Set tfx manifest arguments - cleanupTfxArgs = common.validateAndSetTfxManifestArguments(tfx); - - // Set vsix output path - const outputPath = tl.getInput("outputPath", false); - tfx.argIf(outputPath, ["--output-path", outputPath]); - - // Before executing check update on tasks version - await common.checkUpdateTasksManifests(); - const outputStream = new common.TfxJsonOutputStream(console.log); - - const code = await tfx.execAsync({ outStream: outputStream, failOnStdErr: false }); - if (code !== 0) - { - throw new Error(`tfx exited with return code: ${code}`); - } - const json = JSON.parse(outputStream.jsonString); - - if (outputVariable) { - tl.setVariable(outputVariable, json.path); - } - tl.setVariable("Extension.OutputPath", json.path); - - console.log(`Packaged extension: ${json.path}.`); - tl.setResult(tl.TaskResult.Succeeded, `tfx exited with return code: ${code}`); - } - catch (err) { - tl.setResult(tl.TaskResult.Failed, `${err}`); - } - finally { - if (cleanupTfxArgs) { - cleanupTfxArgs(); - } - } - }); - } - catch (err) { - console.log(`Error packaging extension: ${err}.`); - tl.setResult(tl.TaskResult.Failed, `Error packaging extension: ${err}`); - } -} - -void run(); \ No newline at end of file diff --git a/BuildTasks/PackageExtension/v4/package-lock.json b/BuildTasks/PackageExtension/v4/package-lock.json deleted file mode 100644 index 2d8bbbd2..00000000 --- a/BuildTasks/PackageExtension/v4/package-lock.json +++ /dev/null @@ -1,389 +0,0 @@ -{ - "name": "vsts-developer-tools.packageextensionv4", - "version": "4.3.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "vsts-developer-tools.packageextensionv4", - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "azure-pipelines-task-lib": "^4.17.3", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", - "uuidv5": "^1.0.0" - }, - "devDependencies": {} - }, - "node_modules/adm-zip": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", - "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/azure-pipelines-task-lib": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.17.3.tgz", - "integrity": "sha512-UxfH5pk3uOHTi9TtLtdDyugQVkFES5A836ZEePjcs3jYyxm3EJ6IlFYq6gbfd6mNBhrM9fxG2u/MFYIJ+Z0cxQ==", - "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/balanced-match": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/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-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "license": "MIT" - }, - "node_modules/glob": { - "version": "7.2.0", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "license": "ISC" - }, - "node_modules/has": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/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/inflight": { - "version": "1.0.6", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "node_modules/interpret": { - "version": "1.4.0", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-core-module": { - "version": "2.8.1", - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/mime-db": { - "version": "1.51.0", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.34", - "license": "MIT", - "dependencies": { - "mime-db": "1.51.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.0.5", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/nodejs-file-downloader": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.12.1.tgz", - "integrity": "sha512-LpfCTNhh805AlLnJnzt1PuEj+RmbrccbAQZ6hBRw2e6QPVR0Qntuo6qqyvPHG5s77/0w0IEKgRAD4nbSnr/X4w==", - "dependencies": { - "follow-redirects": "^1.15.1", - "https-proxy-agent": "^5.0.0", - "mime-types": "^2.1.27", - "sanitize-filename": "^1.6.3" - } - }, - "node_modules/once": { - "version": "1.4.0", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "license": "MIT" - }, - "node_modules/q": { - "version": "1.5.1", - "license": "MIT", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/resolve": { - "version": "1.22.0", - "license": "MIT", - "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://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", - "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", - "dependencies": { - "truncate-utf8-bytes": "^1.0.0" - } - }, - "node_modules/semver": { - "version": "5.7.2", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/shelljs": { - "version": "0.8.5", - "license": "BSD-3-Clause", - "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", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/truncate-utf8-bytes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", - "dependencies": { - "utf8-byte-length": "^1.0.1" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/utf8-byte-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" - }, - "node_modules/uuid": { - "version": "3.4.0", - "license": "MIT", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/uuidv5": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "license": "ISC" - } - } -} diff --git a/BuildTasks/PackageExtension/v4/package.json b/BuildTasks/PackageExtension/v4/package.json deleted file mode 100644 index ae5d81a5..00000000 --- a/BuildTasks/PackageExtension/v4/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "vsts-developer-tools.packageextensionv4", - "version": "4.3.0", - "description": "Package Extension Task", - "repository": { - "type": "git", - "url": "https://github.com/Microsoft/azure-devops-extension-tasks.git" - }, - "license": "MIT", - "dependencies": { - "azure-pipelines-task-lib": "^4.17.3", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", - "uuidv5": "^1.0.0" - }, - "devDependencies": { - } -} diff --git a/BuildTasks/PackageExtension/v4/task.json b/BuildTasks/PackageExtension/v4/task.json deleted file mode 100644 index 45a25294..00000000 --- a/BuildTasks/PackageExtension/v4/task.json +++ /dev/null @@ -1,234 +0,0 @@ -{ - "id": "e59022e0-667a-11e5-ad4c-dd75b69a0d2c", - "name": "PackageAzureDevOpsExtension", - "friendlyName": "Package Extension", - "description": "Package an Azure DevOps extension into a VSIX file", - "author": "Microsoft Corporation", - "helpMarkDown": "", - "category": "Package", - "version": { - "Major": 4, - "Minor": 4, - "Patch": 0 - }, - "visibility": [ - "Build", - "Release" - ], - "demands": [ - "npm" - ], - "minimumAgentVersion": "2.206.1", - "groups": [ - { - "name": "overrides", - "displayName": "Overrides manifest", - "isExpanded": true - }, - { - "name": "advanced", - "displayName": "Advanced", - "isExpanded": false - }, - { - "name": "backcompat", - "displayName": "Backward Compatibility", - "isExpanded": false - } - ], - "instanceNameFormat": "Package Extension: $(rootFolder)", - "inputs": [ - { - "name": "rootFolder", - "type": "filePath", - "label": "Root manifests folder", - "defaultValue": "", - "required": false, - "helpMarkDown": "Root folder from which the manifests are searched." - }, - { - "name": "localizationRoot", - "type": "filePath", - "label": "Localization Root folder", - "defaultValue": "", - "required": false, - "helpMarkDown": "Folder where localization file(s) exist." - }, - { - "name": "patternManifest", - "type": "multiLine", - "properties": { - "resizable": true, - "rows": "1" - }, - "label": "Manifest file(s)", - "defaultValue": "vss-extension.json", - "required": false, - "helpMarkDown": "Specify the pattern for manifest files. One file per line." - }, - { - "name": "outputPath", - "type": "filePath", - "label": "Package output file", - "defaultValue": "", - "required": false, - "helpMarkDown": "Specify the path and file name of the generated vsix." - }, - { - "name": "outputVariable", - "type": "string", - "label": "Output Variable (deprecated)", - "defaultValue": "Extension.OutputPath", - "required": false, - "helpMarkDown": "The variable name to assign the location of the generated package to. Specify only the name, e.g.: `Extension.OutputPath`, not `$(Extension.OutputPath)`.", - "groupName": "backcompat" - }, - { - "name": "publisherId", - "type": "string", - "label": "Publisher ID", - "defaultValue": "", - "required": false, - "helpMarkDown": "Extension publisher ID. If not specified, the publisher specified in the manifest will be used.", - "groupName": "overrides" - }, - { - "name": "extensionId", - "type": "string", - "label": "Extension ID", - "defaultValue": "", - "helpMarkDown": "Overrides extension ID. If not specified, the extension ID specified in the manifest will be used", - "required": false, - "groupName": "overrides" - }, - { - "name": "extensionTag", - "type": "string", - "label": "Extension Tag", - "defaultValue": "", - "helpMarkDown": "Extension Tag to append to the extension ID", - "required": false, - "groupName": "overrides" - }, - { - "name": "extensionName", - "type": "string", - "label": "Extension name", - "defaultValue": "", - "helpMarkDown": "Overrides extension name. If not specified, the extension name specified in the manifest will be used", - "required": false, - "groupName": "overrides" - }, - { - "name": "extensionVersion", - "type": "string", - "label": "Extension version", - "defaultValue": "", - "helpMarkDown": "Overrides extension version. If not specified, the extension version specified in the manifest will be used", - "required": false, - "groupName": "overrides" - }, - { - "name": "updateTasksVersion", - "type": "boolean", - "label": "Override tasks version", - "defaultValue": "false", - "required": true, - "helpMarkDown": "Search for contributed tasks in extension manifests and updates the version specified in each Build and Release task found.", - "groupName": "overrides" - }, - { - "name": "updateTasksVersionType", - "type": "pickList", - "label": "Override Type", - "defaultValue": "major", - "options": { - "major": "Replace Major, Minor, Patch (x.y.r)", - "minor": "Replace Minor, Patch (1.y.r)", - "patch": "Replace Only Patch (1.0.r)" - }, - "required": false, - "helpMarkDown": "The Task version replacement format. You can select which part(s) of the version number to update (Major (x.y.r), Minor (1.y.r), or Patch (1.0.r)). The value (x.y.r) is taken from the Extension Version input or the extension manifest.", - "visibleRule": "updateTasksVersion=true", - "groupName": "overrides" - }, - { - "name": "updateTasksId", - "type": "boolean", - "label": "Override task id", - "defaultValue": "false", - "required": false, - "helpMarkDown": "Search for contributed tasks in extension manifests and updates the id specified in each Build and Release task found based on the Publisher, ExtensionId and TaskName.", - "groupName": "overrides" - }, - { - "name": "extensionVisibility", - "type": "pickList", - "label": "Extension visibility", - "defaultValue": "default", - "helpMarkDown": "Overrides extension visibility (Public vs Private) and optionally adds the Preview flag. If not specified, the extension visibility specified in the manifest will be used", - "required": false, - "groupName": "overrides", - "options": { - "default": "Not set", - "private": "Private", - "private_preview": "Private Preview", - "public_preview": "Public Preview", - "public": "Public" - } - }, - { - "name": "extensionPricing", - "type": "pickList", - "label": "Extension pricing", - "defaultValue": "default", - "helpMarkDown": "Overrides extension pricing (Free vs Paid). If not specified, the extension pricing specified in the manifest will be used", - "required": false, - "groupName": "overrides", - "options": { - "default": "Not set", - "free": "Free", - "paid": "Paid" - } - }, - { - "name": "bypassLocalValidation", - "type": "boolean", - "label": "Bypass local validation", - "defaultValue": "false", - "helpMarkDown": "Bypass local validation.", - "required": false, - "groupName": "advanced" - }, - { - "name": "arguments", - "type": "string", - "label": "Arguments", - "defaultValue": "", - "helpMarkDown": "Additional arguments passed to tfx.", - "required": false, - "groupName": "advanced" - }, - { - "name": "cwd", - "type": "filePath", - "label": "Working Directory", - "defaultValue": "", - "required": false, - "helpMarkDown": "Current working directory when tfx is run. Defaults to the folder where the manifest is located.", - "groupName": "advanced" - } - ], - "outputVariables": [ - { - "name": "Extension.OutputPath", - "description": "Is set with the generated vsix path." - } - ], - "execution": { - "Node16": { - "target": "PackageExtension/v4/PackageExtension.js", - "argumentFormat": "" - } - } -} diff --git a/BuildTasks/PackageExtension/v4/tsconfig.json b/BuildTasks/PackageExtension/v4/tsconfig.json deleted file mode 100644 index fae3b19d..00000000 --- a/BuildTasks/PackageExtension/v4/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.v4.json", - "compilerOptions": { - "outDir": "./", - "sourceRoot": "./" - }, - "files": [ - "PackageExtension.ts" - ] - } \ No newline at end of file diff --git a/BuildTasks/PackageExtension/v5/icon.png b/BuildTasks/PackageExtension/v5/icon.png deleted file mode 100644 index c79e5dff..00000000 Binary files a/BuildTasks/PackageExtension/v5/icon.png and /dev/null differ diff --git a/BuildTasks/PublishExtension/v5/PublishExtension.ts b/BuildTasks/PublishExtension/PublishExtension.ts similarity index 97% rename from BuildTasks/PublishExtension/v5/PublishExtension.ts rename to BuildTasks/PublishExtension/PublishExtension.ts index e8f20eb5..f71d0a62 100644 --- a/BuildTasks/PublishExtension/v5/PublishExtension.ts +++ b/BuildTasks/PublishExtension/PublishExtension.ts @@ -1,5 +1,6 @@ import tl from "azure-pipelines-task-lib/task.js"; -import * as common from "../../Common/v5/Common.js"; +import * as common from "../Common/Common.js"; +import * as commonAuth from "../Common-Auth/CommonAuth.js"; import VsixEditor from "./vsixeditor.js"; await common.runTfx(async tfx => { @@ -9,7 +10,7 @@ await common.runTfx(async tfx => { tfx.arg(["extension", "publish", "--json", "--no-color"]); const outputVariable = tl.getInput("outputVariable", false); - await common.setTfxMarketplaceArguments(tfx); + await commonAuth.setTfxMarketplaceArguments(tfx); // Read file type const fileType = tl.getInput("fileType", true); diff --git a/BuildTasks/PublishExtension/v4/icon.png b/BuildTasks/PublishExtension/icon.png similarity index 100% rename from BuildTasks/PublishExtension/v4/icon.png rename to BuildTasks/PublishExtension/icon.png diff --git a/BuildTasks/PackageExtension/v5/package-lock.json b/BuildTasks/PublishExtension/package-lock.json similarity index 96% rename from BuildTasks/PackageExtension/v5/package-lock.json rename to BuildTasks/PublishExtension/package-lock.json index f979d3c9..e331363a 100644 --- a/BuildTasks/PackageExtension/v5/package-lock.json +++ b/BuildTasks/PublishExtension/package-lock.json @@ -1,21 +1,20 @@ { - "name": "vsts-developer-tools.packageextensionv5", + "name": "vsts-developer-tools.publishextensionv5", "version": "5.0.0", "lockfileVersion": 3, "requires": true, "packages": { "": { - "name": "vsts-developer-tools.packageextensionv5", + "name": "vsts-developer-tools.publishextensionv5", "version": "5.0.0", "license": "MIT", "dependencies": { + "7zip-bin": "^5.2.0", "azure-pipelines-task-lib": "^4.17.3", "azure-pipelines-tasks-azure-arm-rest": "^3.263.1", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", - "uuidv5": "^1.0.0" - }, - "devDependencies": {} + "uuidv5": "^1.0.0", + "x2js": "^3.4.4" + } }, "node_modules/@azure/abort-controller": { "version": "1.1.0", @@ -314,6 +313,19 @@ "node": ">= 14" } }, + "node_modules/@xmldom/xmldom": { + "version": "0.8.10", + "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", + "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/7zip-bin": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.2.0.tgz", + "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==" + }, "node_modules/adm-zip": { "version": "0.5.12", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.12.tgz", @@ -591,20 +603,6 @@ } } }, - "node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -698,11 +696,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -823,17 +816,6 @@ "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==", "license": "MIT" }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jsonwebtoken": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", @@ -1348,15 +1330,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -1412,14 +1385,6 @@ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "license": "MIT" }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/utf8-byte-length": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", @@ -1458,6 +1423,14 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, + "node_modules/x2js": { + "version": "3.4.4", + "resolved": "https://registry.npmjs.org/x2js/-/x2js-3.4.4.tgz", + "integrity": "sha512-yG/ThaBCgnsa3aoMPAe7QwDpcyU4D70hjXC4Y1lZSfD/Tgd0MpE19FnZZRAjekryw0c8cffpOt9zsPEiqktO6Q==", + "dependencies": { + "@xmldom/xmldom": "^0.8.3" + } + }, "node_modules/xml2js": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.6.2.tgz", diff --git a/BuildTasks/PublishExtension/v5/package.json b/BuildTasks/PublishExtension/package.json similarity index 82% rename from BuildTasks/PublishExtension/v5/package.json rename to BuildTasks/PublishExtension/package.json index 6f38a1f2..173932f8 100644 --- a/BuildTasks/PublishExtension/v5/package.json +++ b/BuildTasks/PublishExtension/package.json @@ -12,12 +12,7 @@ "7zip-bin": "^5.2.0", "azure-pipelines-task-lib": "^4.17.3", "azure-pipelines-tasks-azure-arm-rest": "^3.263.1", - "fs-extra": "^11.3.2", - "temp": "^0.9.4", - "tmp": "^0.2.5", "uuidv5": "^1.0.0", "x2js": "^3.4.4" - }, - "devDependencies": { } -} +} \ No newline at end of file diff --git a/BuildTasks/PublishExtension/v5/task.json b/BuildTasks/PublishExtension/task.json similarity index 98% rename from BuildTasks/PublishExtension/v5/task.json rename to BuildTasks/PublishExtension/task.json index c40be950..9253ae25 100644 --- a/BuildTasks/PublishExtension/v5/task.json +++ b/BuildTasks/PublishExtension/task.json @@ -1,5 +1,5 @@ { - "id": "631511B4-50AB-47C8-B766-7AE2AA672733", + "id": "631511b4-50ab-47c8-b766-7ae2aa672733", "name": "PublishAzureDevOpsExtension", "friendlyName": "Publish Extension", "description": "Publish an Azure DevOps extension to the Visual Studio Marketplace", @@ -303,11 +303,11 @@ ], "execution": { "Node20_1": { - "target": "PublishExtension/v5/PublishExtension.js", + "target": "PublishExtension/PublishExtension.js", "argumentFormat": "" }, "Node16": { - "target": "PublishExtension/v5/PublishExtension.js", + "target": "PublishExtension/PublishExtension.js", "argumentFormat": "" } }, diff --git a/BuildTasks/PublishExtension/v5/tsconfig.json b/BuildTasks/PublishExtension/tsconfig.json similarity index 79% rename from BuildTasks/PublishExtension/v5/tsconfig.json rename to BuildTasks/PublishExtension/tsconfig.json index 1bf48af9..e14b0396 100644 --- a/BuildTasks/PublishExtension/v5/tsconfig.json +++ b/BuildTasks/PublishExtension/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.v5.json", + "extends": "../tsconfig.v5.json", "compilerOptions": { "outDir": "./", "sourceRoot": "./" diff --git a/BuildTasks/PublishExtension/v4/PublishExtension.ts b/BuildTasks/PublishExtension/v4/PublishExtension.ts deleted file mode 100644 index cfe5b676..00000000 --- a/BuildTasks/PublishExtension/v4/PublishExtension.ts +++ /dev/null @@ -1,170 +0,0 @@ -import "core-js"; -import * as tl from "azure-pipelines-task-lib/task"; -import * as common from "../../Common/v4/Common"; -import * as vsixeditor from "./vsixeditor"; - -void common.runTfx(async tfx => { - let cleanupTfxArgs: () => void; - - try { - tfx.arg(["extension", "publish", "--json", "--no-color"]); - const outputVariable = tl.getInput("outputVariable", false); - - common.setTfxMarketplaceArguments(tfx); - - // Read file type - const fileType = tl.getInput("fileType", true); - let vsixOutput; - - if (fileType === "manifest") { - // Set tfx manifest arguments - cleanupTfxArgs = common.validateAndSetTfxManifestArguments(tfx); - - // Update tasks version if needed - await common.checkUpdateTasksManifests(); - } else { - // Set vsix file argument - const vsixFilePattern = tl.getPathInput("vsixFile", true); - let matchingVsixFile: string[]; - if (vsixFilePattern.indexOf("*") >= 0 || vsixFilePattern.indexOf("?") >= 0) { - tl.debug("Pattern found in vsixFile parameter"); - matchingVsixFile = tl.findMatch(tl.getInput("cwd", false) || process.cwd(), vsixFilePattern); - } - else { - tl.debug("No pattern found in vsixFile parameter"); - matchingVsixFile = [vsixFilePattern]; - } - - if (!matchingVsixFile || matchingVsixFile.length === 0) { - tl.setResult(tl.TaskResult.Failed, `Found no vsix files matching: ${vsixFilePattern}.`); - return false; - } - if (matchingVsixFile.length !== 1) { - tl.setResult(tl.TaskResult.Failed, `Found multiple vsix files matching: ${vsixFilePattern}.`); - return false; - } - - const vsixFile = matchingVsixFile[0]; - tl.checkPath(vsixFile, "vsixPath"); - - vsixOutput = tl.getVariable("System.DefaultWorkingDirectory"); - - const publisher = tl.getInput("publisherId", false); - - const extensionId = tl.getInput("extensionId", false); - const extensionTag = tl.getInput("extensionTag", false); - - const extensionName = tl.getInput("extensionName", false); - const extensionVisibility = tl.getInput("extensionVisibility", false) || ""; - const extensionPricing = tl.getInput("extensionPricing", false); - const extensionVersion = common.getExtensionVersion(); - const updateTasksId = tl.getBoolInput("updateTasksId", false); - const updateTasksVersion = tl.getBoolInput("updateTasksVersion", false); - - if (publisher - || extensionId - || extensionTag - || extensionName - || (extensionPricing && extensionPricing !== "default") - || (extensionVisibility && extensionVisibility !== "default") - || extensionVersion - || updateTasksId ) { - - tl.debug("Start editing of VSIX"); - const ve = new vsixeditor.VSIXEditor(vsixFile, vsixOutput); - ve.startEdit(); - - if (publisher) { ve.editPublisher(publisher); } - if (extensionId) { ve.editId(extensionId); } - if (extensionTag) { ve.editIdTag(extensionTag); } - if (extensionName) { ve.editExtensionName(extensionName); } - if (extensionVisibility) { ve.editExtensionVisibility(extensionVisibility); } - if (extensionPricing) { ve.editExtensionPricing(extensionPricing); } - if (extensionVersion) { - ve.editVersion(extensionVersion); - ve.editUpdateTasksVersion(updateTasksVersion); - } - if (updateTasksId) { - ve.editUpdateTasksId(updateTasksId); - } - - const vsixGeneratedFile = await ve.endEdit(); - tfx.arg(["--vsix", vsixGeneratedFile]); - vsixOutput = vsixGeneratedFile; - } - else { - vsixOutput = vsixFile; - tfx.arg(["--vsix", vsixOutput]); - } - } - - // Share with - const shareWith = tl.getDelimitedInput("shareWith", ",", false).map((value) => { return value.trim(); }); - const extensionVisibility = tl.getInput("extensionVisibility", false) || ""; - const connectTo = tl.getInput("connectTo", true); - if (shareWith) { - if (connectTo === "TFS") { - tl.warning("Ignoring Share - Not available on TFS."); - } - else if (extensionVisibility.indexOf("public") < 0) { - // Only handle shareWith if the extension is not public - tfx.argIf(shareWith && shareWith.length > 0, ["--share-with"].concat(shareWith)); - } else if (shareWith && shareWith.length > 0) { - tl.warning("Ignoring Share - Not available on public extensions."); - } - } - - const noWaitValidation = tl.getBoolInput("noWaitValidation", false); - if (noWaitValidation) { - tl.debug(`Not waiting for validation.`); - tfx.arg("--no-wait-validation"); - } - - const bypassLocalValidation = tl.getBoolInput("bypassLocalValidation", false); - if (bypassLocalValidation) { - tl.debug(`Bypassing local validation.`); - tfx.arg("--bypass-validation"); - } - - const args = tl.getInput("arguments", false); - if (args) { - tl.debug(`Adding additional arguments: ${args}.`); - tfx.line(args); - } - - tl.debug(`Redirecting output to stderr.`); - tfx.arg(['--debug-log-stream', 'stderr']); - - tl.debug(`Run tfx.`); - const outputStream = new common.TfxJsonOutputStream(console.log); - const errorStream = new common.TfxJsonOutputStream(tl.error); - - const code = await tfx.execAsync({ outStream: outputStream, errorStream: errorStream, failOnStdErr: false } as any); - if (code !== 0) - { - throw `tfx exited with return code: ${code}` - } - const json = JSON.parse(outputStream.jsonString); - - if (json && json.published) { - const publishedVsix = fileType === "manifest" ? json.packaged : vsixOutput; - - if (outputVariable) { - tl.setVariable(outputVariable, publishedVsix); - } - tl.setVariable("Extension.OutputPath", publishedVsix); - - console.log(`Published VSIX: ${publishedVsix}.`); - tl.setResult(tl.TaskResult.Succeeded, `tfx exited with return code: ${code}`); - } - else - { - tl.setResult(tl.TaskResult.Failed, `Publishing failed`); - } - }catch (err) { - tl.setResult(tl.TaskResult.Failed, `tfx failed with error: ${err.toString()}`); - } finally { - if (cleanupTfxArgs) { cleanupTfxArgs(); } - } - return Promise.resolve(true); -}); diff --git a/BuildTasks/PublishExtension/v4/package.json b/BuildTasks/PublishExtension/v4/package.json deleted file mode 100644 index 23b4e995..00000000 --- a/BuildTasks/PublishExtension/v4/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "vsts-developer-tools.publishextensionv4", - "version": "4.3.0", - "description": "Publish Extension Task", - "repository": { - "type": "git", - "url": "https://github.com/Microsoft/azure-devops-extension-tasks.git" - }, - "license": "MIT", - "dependencies": { - "@xmldom/xmldom": "^0.9.8", - "7zip-bin-win": "^2.2.0", - "azure-pipelines-task-lib": "^4.17.3", - "core-js": "^3.46.0", - "fs-extra": "^11.3.2", - "temp": "^0.9.4", - "tmp": "^0.2.5", - "uuidv5": "^1.0.0", - "x2js": "^3.4.4" - }, - "devDependencies": { - } -} diff --git a/BuildTasks/PublishExtension/v4/task.json b/BuildTasks/PublishExtension/v4/task.json deleted file mode 100644 index f0944b4c..00000000 --- a/BuildTasks/PublishExtension/v4/task.json +++ /dev/null @@ -1,301 +0,0 @@ -{ - "id": "631511B4-50AB-47C8-B766-7AE2AA672733", - "name": "PublishAzureDevOpsExtension", - "friendlyName": "Publish Extension", - "description": "Publish an Azure DevOps extension to the Visual Studio Marketplace", - "author": "Microsoft Corporation", - "helpMarkDown": "", - "category": "Deploy", - "version": { - "Major": 4, - "Minor": 4, - "Patch": 0 - }, - "visibility": [ - "Build", - "Release" - ], - "demands": [ - "npm" - ], - "minimumAgentVersion": "2.206.1", - "groups": [ - { - "name": "manifest", - "displayName": "Extension manifest", - "isExpanded": true - }, - { - "name": "advanced", - "displayName": "Advanced", - "isExpanded": false - }, - { - "name": "backcompat", - "displayName": "Backward Compatibility", - "isExpanded": false - } - ], - "instanceNameFormat": "Publish Extension", - "inputs": [ - { - "name": "connectTo", - "type": "radio", - "label": "Connect to", - "required": true, - "defaultValue": "VsTeam", - "helpMarkDown": "Publish to Visual Studio Marketplace or a local Azure DevOps Server.", - "options": { - "VsTeam": "Visual Studio Marketplace", - "TFS": "Azure DevOps Server" - } - }, - { - "name": "connectedServiceName", - "type": "connectedService:VstsMarketplacePublishing", - "label": "Visual Studio Marketplace connection", - "required": true, - "helpMarkDown": "Service endpoint connection to install the extension.", - "visibleRule": "connectTo=VsTeam" - }, - { - "name": "connectedServiceNameTFS", - "type": "connectedService:TFSMarketplacePublishing", - "label": "TFS Local Gallery connection", - "required": true, - "helpMarkDown": "Service endpoint connection to install the extension.", - "visibleRule": "connectTo=TFS" - }, - { - "name": "fileType", - "type": "radio", - "label": "Input file type", - "required": true, - "defaultValue": "manifest", - "options": { - "manifest": "Extension manifest file", - "vsix": "VSIX file" - }, - "groupName": "manifest" - }, - { - "name": "vsixFile", - "type": "filePath", - "label": "VSIX file", - "defaultValue": "", - "required": true, - "helpMarkDown": "VSIX file to publish. Supports wildcards.", - "visibleRule": "fileType = vsix", - "groupName": "manifest" - }, - { - "name": "rootFolder", - "type": "filePath", - "label": "Root manifest folder", - "defaultValue": "", - "required": false, - "helpMarkDown": "Folder where manifest file(s) exist.", - "visibleRule": "fileType = manifest", - "groupName": "manifest" - }, - { - "name": "localizationRoot", - "type": "filePath", - "label": "Localization Root folder", - "defaultValue": "", - "required": false, - "helpMarkDown": "Folder where localization file(s) exist.", - "visibleRule": "fileType = manifest", - "groupName": "manifest" - }, - { - "name": "patternManifest", - "type": "multiLine", - "properties": { - "resizable": true, - "rows": "1" - }, - "label": "Manifest file(s)", - "defaultValue": "vss-extension.json", - "required": false, - "helpMarkDown": "Specify the pattern for manifest files. One file per line.", - "visibleRule": "fileType = manifest", - "groupName": "manifest" - }, - { - "name": "publisherId", - "type": "string", - "label": "Publisher ID", - "defaultValue": "", - "required": false, - "helpMarkDown": "Extension publisher ID. If not specified, the publisher specified in the manifest will be used.", - "groupName": "manifest" - }, - { - "name": "extensionId", - "type": "string", - "label": "Extension ID", - "defaultValue": "", - "helpMarkDown": "Overrides extension ID. If not specified, the extension ID specified in the manifest will be used", - "required": false, - "groupName": "manifest" - }, - { - "name": "extensionTag", - "type": "string", - "label": "Extension Tag", - "defaultValue": "", - "helpMarkDown": "Extension Tag to append to the extension ID", - "required": false, - "groupName": "manifest" - }, - { - "name": "extensionName", - "type": "string", - "label": "Extension name", - "defaultValue": "", - "helpMarkDown": "Overrides extension name. If not specified, the extension name specified in the manifest will be used", - "required": false, - "groupName": "manifest" - }, - { - "name": "extensionVersion", - "type": "string", - "label": "Extension version", - "defaultValue": "", - "helpMarkDown": "Overrides extension version. If not specified, the extension version specified in the manifest will be used", - "required": false, - "groupName": "manifest" - }, - { - "name": "updateTasksVersion", - "type": "boolean", - "label": "Override task version", - "defaultValue": "true", - "required": false, - "helpMarkDown": "Search for contributed tasks in extension manifests and updates the version specified in each Build and Release task found.", - "groupName": "manifest" - }, - { - "name": "updateTasksVersionType", - "type": "pickList", - "label": "Override Type", - "defaultValue": "major", - "options": { - "major": "Replace Major, Minor, Patch (x.y.r)", - "minor": "Replace Minor, Patch (1.y.r)", - "patch": "Replace Only Patch (1.0.r)" - }, - "required": false, - "helpMarkDown": "The Task version replacement format. You can select which part(s) of the version number to update (Major (x.y.r), Minor (1.y.r), or Patch (1.0.r)). The value (x.y.r) is taken from the Extension Version input or the extension manifest.", - "visibleRule": "updateTasksVersion=true", - "groupName": "manifest" - }, - { - "name": "updateTasksId", - "type": "boolean", - "label": "Override task id", - "defaultValue": "false", - "required": false, - "helpMarkDown": "Search for contributed tasks in extension manifests and updates the id specified in each Build and Release task found based on the Publisher, ExtensionId and TaskName.", - "groupName": "manifest" - }, - { - "name": "extensionVisibility", - "type": "pickList", - "label": "Extension visibility", - "defaultValue": "default", - "helpMarkDown": "Overrides extension visibility (Public vs Private) and optionally adds the Preview flag. If not specified, the extension visibility specified in the manifest will be used", - "required": false, - "options": { - "default": "Not set", - "private": "Private", - "privatepreview": "Private Preview", - "publicpreview": "Public Preview", - "public": "Public" - }, - "groupName": "manifest" - }, - { - "name": "extensionPricing", - "type": "pickList", - "label": "Extension pricing", - "defaultValue": "default", - "helpMarkDown": "Overrides extension pricing (Free vs Paid). If not specified, the extension pricing specified in the manifest will be used", - "required": false, - "groupName": "manifest", - "options": { - "default": "Not set", - "free": "Free", - "paid": "Paid" - } - }, - { - "name": "outputVariable", - "type": "string", - "label": "Output Variable (deprecated)", - "defaultValue": "Extension.OutputPath", - "required": false, - "helpMarkDown": "The variable name to assign the location of the generated package to. Specify only the name, e.g.: `Extension.OutputPath`, not `$(Extension.OutputPath)`.", - "groupName": "backcompat" - }, - { - "name": "shareWith", - "type": "string", - "label": "Share with", - "defaultValue": "", - "helpMarkDown": "Comma separated list of organisations with which to share the extension if it's private (e.g. org_x,org_y,org_z). Share is ignored for public extensions and when publishing to TFS.", - "required": false, - "groupName": "manifest", - "visibleRule": "extensionVisibility = private || extensionVisibility = privatepreview || extensionVisibility = default" - }, - { - "name": "bypassLocalValidation", - "type": "boolean", - "label": "Bypass local validation", - "defaultValue": "false", - "helpMarkDown": "Bypass local validation.", - "required": false, - "groupName": "advanced" - }, - { - "name": "noWaitValidation", - "type": "boolean", - "label": "Don't wait for validation", - "defaultValue": "false", - "helpMarkDown": "Don't block command for extension validation.", - "required": false, - "groupName": "advanced" - }, - { - "name": "arguments", - "type": "string", - "label": "Arguments", - "defaultValue": "", - "helpMarkDown": "Additional arguments passed to the package and publishing tool.", - "required": false, - "groupName": "advanced" - }, - { - "name": "cwd", - "type": "filePath", - "label": "Working Directory", - "defaultValue": "", - "required": false, - "helpMarkDown": "Working directory to run the package and publishing process from. Defaults to the folder where the manifest is located.", - "groupName": "advanced" - } - ], - "outputVariables": [ - { - "name": "Extension.OutputPath", - "description": "Is set with the generated vsix path." - } - ], - "execution": { - "Node16": { - "target": "PublishExtension/v4/PublishExtension.js", - "argumentFormat": "" - } - } -} diff --git a/BuildTasks/PublishExtension/v4/tsconfig.json b/BuildTasks/PublishExtension/v4/tsconfig.json deleted file mode 100644 index 3d153e63..00000000 --- a/BuildTasks/PublishExtension/v4/tsconfig.json +++ /dev/null @@ -1,11 +0,0 @@ -{ - "extends": "../../tsconfig.v4.json", - "compilerOptions": { - "outDir": "./", - "sourceRoot": "./" - }, - "files": [ - "vsixeditor.ts", - "PublishExtension.ts" - ] - } \ No newline at end of file diff --git a/BuildTasks/PublishExtension/v4/vsixeditor.ts b/BuildTasks/PublishExtension/v4/vsixeditor.ts deleted file mode 100644 index 2ed75271..00000000 --- a/BuildTasks/PublishExtension/v4/vsixeditor.ts +++ /dev/null @@ -1,349 +0,0 @@ -import "core-js"; -import temp = require("temp"); -import fs = require("fs"); -import fse = require("fs-extra"); -import path = require("path"); -import tl = require("azure-pipelines-task-lib/task"); -import tr = require("azure-pipelines-task-lib/toolrunner"); -import common = require("../../Common/v4/Common"); - - -class ManifestData { - public outputFileName: string; - constructor(public version: string, - public id: string, - public publisher: string, - public visibility: string, - public pricing: string, - public name: string, - public dirPath: string) { } - - public createOutputFilePath(outputPath: string): string { - const fileName = `${this.publisher}.${this.id}-${this.version}.gen.vsix`; - - const updateFileName = (fileName: string, iteration: number) => { - if (iteration > 0) { - const gen = iteration.toString().padStart(2, "0"); - fileName = `${this.publisher}.${this.id}-${this.version}.gen${gen}.vsix`; - } - if (fs.existsSync(path.join(outputPath, fileName))) { - updateFileName(fileName, ++iteration); - } else { - tl.debug("Generated filename: " + fileName); - } - }; - - updateFileName(fileName, 0); - - return fileName; - } -} - -class GalleryFlagsEditor { - flags: string[] = []; - constructor(galleryFlagsEditor: string) { - if (galleryFlagsEditor) { - this.flags = galleryFlagsEditor.split(" ").filter(f => f != null && f !== ""); - } - } - - private addFlag(flag: string) { - if (this.flags.indexOf(flag) < 0) { this.flags.push(flag); } - } - - private removeFlag(flag: string) { - const index = this.flags.indexOf(flag); - if (index >= 0) { this.flags.splice(index, 1); } - } - - addPublicFlag() { - this.addFlag("Public"); - } - - removePublicFlag() { - this.removeFlag("Public"); - } - - removePaidFlag() { - this.removeFlag("Paid"); - } - - addPaidFlag() { - this.addFlag("Paid"); - } - - addPreviewFlag() { - this.addFlag("Preview"); - } - - removePreviewFlag() { - this.removeFlag("Preview"); - } - - toString(): string { - return this.flags.join(" "); - } -} - -export class VSIXEditor { - private edit = false; - private versionNumber: string = null; - private id: string = null; - private idTag: string = null; - private publisher: string = null; - private extensionName: string = null; - private extensionVisibility: string = null; - private extensionPricing: string = null; - private updateTasksVersion = true; - private updateTasksId = true; - - constructor( - public inputFile: string, - public outputPath: string) { - } - - public startEdit() : void { - if (this.edit) { throw new Error("Edit is already started"); } - this.edit = true; - tl.debug("Editing started"); - } - - private async extractArchive(vsix: string, tmpPath: string): Promise { - const cwd = tl.cwd(); - - if (tl.getPlatform() === tl.Platform.Windows) { - const sevenZip = require("7zip-bin-win"); - const zip = new tr.ToolRunner(sevenZip.path7za); - - zip.arg("x"); - zip.arg(vsix); // file to extract - zip.arg(`-o${tmpPath}`); // redirect output to dir - zip.arg("task.json"); - zip.arg("task.loc.json"); - zip.arg("extension.vsixmanifest"); - zip.arg("extension.vsomanifest"); - zip.arg("-y"); // assume yes on all queries - zip.arg("-r"); // recurse - zip.arg("-bd"); // disable progress indicator - zip.arg("-aoa"); // overwrite all - zip.arg("-spd"); // disable wildcards - await zip.execAsync(); - } else { - const zip = new tr.ToolRunner(tl.which("unzip", true)); - - zip.arg("-o"); // overwrite all - zip.arg("-C"); // match case insensitive - zip.arg("-d"); // redirect output to - zip.arg(tmpPath); // output directory - zip.arg(vsix); // file to extract - zip.arg("*/task.json"); - zip.arg("*/task.loc.json"); - zip.arg("extension.vsixmanifest"); - zip.arg("extension.vsomanifest"); - - const result = await zip.execAsync({ ignoreReturnCode: true }); - - // unzip returns exit code 11 when some files are not found, but extraction succeeds for existing files - // This is acceptable for optional files like task.json and task.loc.json - if (result !== 0 && result !== 11) { - throw new Error(`unzip extraction failed with exit code: ${result}`); - } - } - tl.cd(cwd); - } - - private async createArchive(originalVsix: string, tmpPath: string, targetVsix: string): Promise { - const cwd = tl.cwd(); - - if (originalVsix !== targetVsix) { tl.cp(originalVsix, targetVsix, "-f"); } - - if (tl.getPlatform() === tl.Platform.Windows) { - const sevenZip = require("7zip-bin-win"); - const zip = new tr.ToolRunner(sevenZip.path7za); - - zip.arg("u"); - zip.arg(targetVsix); // redirect output to file - zip.arg(path.join(tmpPath, "\\*")); - zip.arg("-r"); // recursive - zip.arg("-y"); // assume yes on all queries - zip.arg("-tzip"); // zip format - zip.arg("-mx9"); // max compression level - zip.arg("-bd"); // disable progress indicator - await zip.execAsync(); - } else { - const zip = new tr.ToolRunner(tl.which("zip", true)); - - tl.cd(tmpPath); - zip.arg(path.join(cwd, targetVsix)); // redirect output to file - zip.arg("."); - zip.arg("-r"); // recursive - zip.arg("-9"); // max compression level - zip.arg("-f"); // update changed files only - await zip.execAsync(); - } - tl.cd(cwd); - } - - public async endEdit(): Promise { - this.validateEditMode(); - - if (!this.hasEdits()) { return this.inputFile; } - - temp.track(); - - const dirPath = await temp.mkdir("vsixeditor"); - tl.debug("Extracting files to " + dirPath); - - await this.extractArchive(this.inputFile, dirPath); - if (this.versionNumber && this.updateTasksVersion || this.updateTasksId) { - tl.debug("Look for build tasks manifest"); - const extensionManifest = path.join(dirPath, "extension.vsomanifest"); - await common.checkUpdateTasksManifests(extensionManifest); - } - - tl.debug("Editing VSIX manifest"); - const manifestData = await this.editVsixManifest(dirPath); - manifestData.outputFileName = manifestData.createOutputFilePath(this.outputPath); - - tl.debug(`Creating final archive file at ${this.outputPath}`); - await this.createArchive(this.inputFile, manifestData.dirPath, manifestData.outputFileName); - tl.debug("Final archive file created"); - - return manifestData.outputFileName; - } - - private async editVsixManifest(dirPath: string): Promise { - const x2jsLib = require("x2js"); - const x2js = new x2jsLib(); - - const vsixManifestPath = path.join(dirPath, "extension.vsixmanifest"); - - try { - let vsixManifestData = await fse.readFile(vsixManifestPath, "utf8"); - - const vsixmanifest:any = x2js.xml2js(vsixManifestData); - const identity = vsixmanifest.PackageManifest.Metadata.Identity; - - if (this.versionNumber) { identity._Version = this.versionNumber; } - if (this.id) { identity._Id = this.id; } - if (this.idTag) { identity._Id += this.idTag; } - if (this.publisher) { identity._Publisher = this.publisher; } - if (this.extensionName) { vsixmanifest.PackageManifest.Metadata.DisplayName = this.extensionName; } - if (this.extensionVisibility && this.extensionVisibility !== "default") { - const flagsEditor = new GalleryFlagsEditor(vsixmanifest.PackageManifest.Metadata.GalleryFlags); - - const isPublic = this.extensionVisibility.indexOf("public") >= 0; - const isPreview = this.extensionVisibility.indexOf("preview") >= 0; - - if (isPublic) { - flagsEditor.addPublicFlag(); - } - else { - flagsEditor.removePublicFlag(); - } - - if (isPreview) { - flagsEditor.addPreviewFlag(); - } - else { - flagsEditor.removePreviewFlag(); - } - - vsixmanifest.PackageManifest.Metadata.GalleryFlags = flagsEditor.toString(); - } - if (this.extensionPricing && this.extensionPricing !== "default") { - const flagsEditor = new GalleryFlagsEditor(vsixmanifest.PackageManifest.Metadata.GalleryFlags); - - const isFree = this.extensionPricing.indexOf("free") >= 0; - const isPaid = this.extensionPricing.indexOf("paid") >= 0; - - if (isFree) { - flagsEditor.removePaidFlag(); - } - - if (isPaid) { - flagsEditor.addPaidFlag(); - } - - vsixmanifest.PackageManifest.Metadata.GalleryFlags = flagsEditor.toString(); - } - - vsixManifestData = x2js.js2xml(vsixmanifest); - const manifestData = new ManifestData(identity._Version, - identity._Id, - identity._Publisher, - this.extensionVisibility, - this.extensionPricing, - vsixmanifest.PackageManifest.Metadata.DisplayName, - dirPath); - - await fse.writeFile(vsixManifestPath, vsixManifestData, { encoding: "utf8" }); - return Promise.resolve(manifestData); - } - catch (err: any) { - return Promise.reject(new Error(err.message)); - } - } - - public hasEdits(): boolean { - return (this.versionNumber - || this.id - || this.idTag - || this.publisher - || this.extensionName - || (this.extensionVisibility && this.extensionVisibility !== "default") - || (this.extensionPricing && this.extensionPricing !== "default")) - || this.updateTasksId; - } - - public editVersion(version: string) : void { - this.validateEditMode(); - this.versionNumber = version; - } - - public editExtensionName(name: string) : void { - this.validateEditMode(); - this.extensionName = name; - } - - public editExtensionVisibility(visibility: string) : void { - this.validateEditMode(); - this.extensionVisibility = visibility; - } - - public editExtensionPricing(pricing: string) : void { - this.validateEditMode(); - this.extensionPricing = pricing; - } - - public editId(id: string) : void { - this.validateEditMode(); - this.id = id; - } - - public editIdTag(tag: string) : void { - this.validateEditMode(); - this.idTag = tag; - } - - public editPublisher(publisher: string) : void { - this.validateEditMode(); - this.publisher = publisher; - } - - public editUpdateTasksVersion(updateTasksVersion: boolean) : void { - this.validateEditMode(); - this.updateTasksVersion = updateTasksVersion; - } - - public editUpdateTasksId(updateTasksId: boolean) : void { - this.validateEditMode(); - this.updateTasksId = updateTasksId; - } - - private validateEditMode() : void { - if (!this.edit) { throw new Error("Editing is not started"); } - } -} - - diff --git a/BuildTasks/PublishExtension/v5/icon.png b/BuildTasks/PublishExtension/v5/icon.png deleted file mode 100644 index b62f737e..00000000 Binary files a/BuildTasks/PublishExtension/v5/icon.png and /dev/null differ diff --git a/BuildTasks/PublishExtension/v5/package-lock.json b/BuildTasks/PublishExtension/v5/package-lock.json deleted file mode 100644 index 22b0512f..00000000 --- a/BuildTasks/PublishExtension/v5/package-lock.json +++ /dev/null @@ -1,1549 +0,0 @@ -{ - "name": "vsts-developer-tools.publishextensionv5", - "version": "5.0.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "vsts-developer-tools.publishextensionv5", - "version": "5.0.0", - "license": "MIT", - "dependencies": { - "7zip-bin": "^5.2.0", - "azure-pipelines-task-lib": "^4.17.3", - "azure-pipelines-tasks-azure-arm-rest": "^3.263.1", - "fs-extra": "^11.3.2", - "temp": "^0.9.4", - "tmp": "^0.2.5", - "uuidv5": "^1.0.0", - "x2js": "^3.4.4" - }, - "devDependencies": {} - }, - "node_modules/@azure/abort-controller": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", - "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@azure/core-auth": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz", - "integrity": "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==", - "dependencies": { - "@azure/abort-controller": "^2.1.2", - "@azure/core-util": "^1.13.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-auth/node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-client": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.1.tgz", - "integrity": "sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==", - "dependencies": { - "@azure/abort-controller": "^2.1.2", - "@azure/core-auth": "^1.10.0", - "@azure/core-rest-pipeline": "^1.22.0", - "@azure/core-tracing": "^1.3.0", - "@azure/core-util": "^1.13.0", - "@azure/logger": "^1.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-client/node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-rest-pipeline": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.1.tgz", - "integrity": "sha512-UVZlVLfLyz6g3Hy7GNDpooMQonUygH7ghdiSASOOHy97fKj/mPLqgDX7aidOijn+sCMU+WU8NjlPlNTgnvbcGA==", - "dependencies": { - "@azure/abort-controller": "^2.1.2", - "@azure/core-auth": "^1.10.0", - "@azure/core-tracing": "^1.3.0", - "@azure/core-util": "^1.13.0", - "@azure/logger": "^1.3.0", - "@typespec/ts-http-runtime": "^0.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-tracing": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz", - "integrity": "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-util": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz", - "integrity": "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==", - "dependencies": { - "@azure/abort-controller": "^2.1.2", - "@typespec/ts-http-runtime": "^0.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-util/node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/identity": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-3.4.2.tgz", - "integrity": "sha512-0q5DL4uyR0EZ4RXQKD8MadGH6zTIcloUoS/RVbCpNpej4pwte0xpqYxk8K97Py2RiuUvI7F4GXpoT4046VfufA==", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.5.0", - "@azure/core-client": "^1.4.0", - "@azure/core-rest-pipeline": "^1.1.0", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.6.1", - "@azure/logger": "^1.0.0", - "@azure/msal-browser": "^3.5.0", - "@azure/msal-node": "^2.5.1", - "events": "^3.0.0", - "jws": "^4.0.0", - "open": "^8.0.0", - "stoppable": "^1.1.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@azure/identity/node_modules/jwa": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", - "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", - "dependencies": { - "buffer-equal-constant-time": "^1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@azure/identity/node_modules/jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@azure/logger": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz", - "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==", - "dependencies": { - "@typespec/ts-http-runtime": "^0.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/msal-browser": { - "version": "3.30.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.30.0.tgz", - "integrity": "sha512-I0XlIGVdM4E9kYP5eTjgW8fgATdzwxJvQ6bm2PNiHaZhEuUz47NYw1xHthC9R+lXz4i9zbShS0VdLyxd7n0GGA==", - "dependencies": { - "@azure/msal-common": "14.16.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-browser/node_modules/@azure/msal-common": { - "version": "14.16.1", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.16.1.tgz", - "integrity": "sha512-nyxsA6NA4SVKh5YyRpbSXiMr7oQbwark7JU9LMeg6tJYTSPyAGkdx61wPT4gyxZfxlSxMMEyAsWaubBlNyIa1w==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-common": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-13.3.1.tgz", - "integrity": "sha512-Lrk1ozoAtaP/cp53May3v6HtcFSVxdFrg2Pa/1xu5oIvsIwhxW6zSPibKefCOVgd5osgykMi5jjcZHv8XkzZEQ==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-node": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.16.3.tgz", - "integrity": "sha512-CO+SE4weOsfJf+C5LM8argzvotrXw252/ZU6SM2Tz63fEblhH1uuVaaO4ISYFuN4Q6BhTo7I3qIdi8ydUQCqhw==", - "dependencies": { - "@azure/msal-common": "14.16.1", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@azure/msal-node/node_modules/@azure/msal-common": { - "version": "14.16.1", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.16.1.tgz", - "integrity": "sha512-nyxsA6NA4SVKh5YyRpbSXiMr7oQbwark7JU9LMeg6tJYTSPyAGkdx61wPT4gyxZfxlSxMMEyAsWaubBlNyIa1w==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-node/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/@types/jsonwebtoken": { - "version": "8.5.9", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", - "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/mocha": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", - "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==" - }, - "node_modules/@types/node": { - "version": "20.19.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.24.tgz", - "integrity": "sha512-FE5u0ezmi6y9OZEzlJfg37mqqf6ZDSF2V/NLjUyGrR9uTZ7Sb9F7bLNZ03S4XVUNRWGA7Ck4c1kK+YnuWjl+DA==", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/q": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", - "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" - }, - "node_modules/@typespec/ts-http-runtime": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.1.tgz", - "integrity": "sha512-SnbaqayTVFEA6/tYumdF0UmybY0KHyKwGPBXnyckFlrrKdhWFrL3a2HIPXHjht5ZOElKGcXfD2D63P36btb+ww==", - "dependencies": { - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@typespec/ts-http-runtime/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "engines": { - "node": ">= 14" - } - }, - "node_modules/@typespec/ts-http-runtime/node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/@xmldom/xmldom": { - "version": "0.8.10", - "resolved": "https://registry.npmjs.org/@xmldom/xmldom/-/xmldom-0.8.10.tgz", - "integrity": "sha512-2WALfTl4xo2SkGCYRt6rDTFfk9R1czmBvUQy12gK2KuRKIpWEhcbbzy8EZXtz/jkRqHX8bFEc6FC1HjX4TUWYw==", - "engines": { - "node": ">=10.0.0" - } - }, - "node_modules/7zip-bin": { - "version": "5.2.0", - "resolved": "https://registry.npmjs.org/7zip-bin/-/7zip-bin-5.2.0.tgz", - "integrity": "sha512-ukTPVhqG4jNzMro2qA9HSCSSVJN3aN7tlb+hfqYCt3ER0yWroeA2VR38MNrOHLQ/cVj+DaIMad0kFCtWWowh/A==" - }, - "node_modules/adm-zip": { - "version": "0.5.12", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.12.tgz", - "integrity": "sha512-6TVU49mK6KZb4qG6xWaaM4C7sA/sgUMLy/JYMOzkcp3BvVLpW0fXDFQiIzAuxFCt/2+xD7fNIiPFAoLZPhVNLQ==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/async-mutex": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.1.tgz", - "integrity": "sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==", - "dependencies": { - "tslib": "^2.4.0" - } - }, - "node_modules/azure-devops-node-api": { - "version": "14.1.0", - "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-14.1.0.tgz", - "integrity": "sha512-QhpgjH1LQ+vgDJ7oBwcmsZ3+o4ZpjLVilw0D3oJQpYpRzN+L39lk5jZDLJ464hLUgsDzWn/Ksv7zLLMKLfoBzA==", - "license": "MIT", - "dependencies": { - "tunnel": "0.0.6", - "typed-rest-client": "2.1.0" - }, - "engines": { - "node": ">= 16.0.0" - } - }, - "node_modules/azure-pipelines-task-lib": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.17.3.tgz", - "integrity": "sha512-UxfH5pk3uOHTi9TtLtdDyugQVkFES5A836ZEePjcs3jYyxm3EJ6IlFYq6gbfd6mNBhrM9fxG2u/MFYIJ+Z0cxQ==", - "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-azure-arm-rest": { - "version": "3.263.1", - "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-azure-arm-rest/-/azure-pipelines-tasks-azure-arm-rest-3.263.1.tgz", - "integrity": "sha512-19HPDiU1aHpeqe1BQMucjZhkYKM/rHXr5dGmOLIf4toEw2MwsJmtXA4nPFsfVRX/VkBzdgrn7/XRyfT4UfXWcw==", - "license": "MIT", - "dependencies": { - "@azure/identity": "^3.4.2", - "@types/jsonwebtoken": "^8.5.8", - "@types/mocha": "^5.2.7", - "@types/node": "^10.17.0", - "@types/q": "1.5.4", - "async-mutex": "^0.4.0", - "azure-devops-node-api": "^14.0.1", - "azure-pipelines-task-lib": "^4.11.0", - "https-proxy-agent": "^4.0.0", - "jsonwebtoken": "^9.0.0", - "msalv1": "npm:@azure/msal-node@^1.18.4", - "msalv2": "npm:@azure/msal-node@^2.7.0", - "msalv3": "npm:@azure/msal-node@^3.5.3", - "node-fetch": "^2.6.7", - "q": "1.5.1", - "typed-rest-client": "^2.0.1", - "xml2js": "0.6.2" - } - }, - "node_modules/azure-pipelines-tasks-azure-arm-rest/node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", - "license": "MIT" - }, - "node_modules/azure-pipelines-tasks-azure-arm-rest/node_modules/agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", - "license": "MIT", - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/azure-pipelines-tasks-azure-arm-rest/node_modules/https-proxy-agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", - "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", - "license": "MIT", - "dependencies": { - "agent-base": "5", - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/balanced-match": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", - "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", - "license": "BSD-3-Clause" - }, - "node_modules/call-bind-apply-helpers": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/call-bind-apply-helpers/-/call-bind-apply-helpers-1.0.1.tgz", - "integrity": "sha512-BhYE+WDaywFg2TBWYNXAE+8B1ATnThNBqXHP5nQu0jWJdVvY2hvkpyB3qOmtmDePiS5/BDQ8wASEWGMWRG148g==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/call-bound": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/call-bound/-/call-bound-1.0.3.tgz", - "integrity": "sha512-YTd+6wGlNlPxSuri7Y6X8tY2dmm12UMH66RpKMhiX6rsk5wXXnYgbUcOt8kiS31/AjfoTOvCsE+w8nZQLQnzHA==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "get-intrinsic": "^1.2.6" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "engines": { - "node": ">=8" - } - }, - "node_modules/des.js": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/des.js/-/des.js-1.1.0.tgz", - "integrity": "sha512-r17GxjhUCjSRy8aiJpr8/UadFIzMzJGexI3Nmz4ADi9LYSFx4gTBp80+NaX/YsXWWLhpZ7v/v/ubEc/bCNfKwg==", - "license": "MIT", - "dependencies": { - "inherits": "^2.0.1", - "minimalistic-assert": "^1.0.0" - } - }, - "node_modules/dunder-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/dunder-proto/-/dunder-proto-1.0.1.tgz", - "integrity": "sha512-KIN/nDJBQRcXw0MLVhZE9iQHmG68qAVIBg9CqmUYjmQIhgij9U5MFvrqkUL5FbtyyzZuOeOt0zdeRe4UY7ct+A==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-errors": "^1.3.0", - "gopd": "^1.2.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, - "node_modules/es-define-property": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.1.tgz", - "integrity": "sha512-e3nRfgfUZ4rNGL232gUgX06QNyyez04KdjFrF+LTRoOXmrOgFKDg4BCdsjW8EnT69eqdYGmRpJwiPVYNrCaW3g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-errors": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", - "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/es-object-atoms": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", - "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/events": { - "version": "3.3.0", - "resolved": "https://registry.npmjs.org/events/-/events-3.3.0.tgz", - "integrity": "sha512-mQw+2fkQbALzQ7V0MY0IqdnXNOeTtP4r0lN9z7AAawCXgqea7bDii20AYrIBrFd/Hx0M2Ocz6S111CaFkUcb0Q==", - "engines": { - "node": ">=0.8.x" - } - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/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-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.7", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.7.tgz", - "integrity": "sha512-VW6Pxhsrk0KAOqs3WEd0klDiF/+V7gQOpAvY1jVU/LHmaD/kQO4523aiJuikX/QAKYiW6x8Jh+RJej1almdtCA==", - "license": "MIT", - "dependencies": { - "call-bind-apply-helpers": "^1.0.1", - "es-define-property": "^1.0.1", - "es-errors": "^1.3.0", - "es-object-atoms": "^1.0.0", - "function-bind": "^1.1.2", - "get-proto": "^1.0.0", - "gopd": "^1.2.0", - "has-symbols": "^1.1.0", - "hasown": "^2.0.2", - "math-intrinsics": "^1.1.0" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/get-proto/-/get-proto-1.0.1.tgz", - "integrity": "sha512-sTSfBjoXBp89JvIKIefqw7U2CCebsc74kiY6awiGogKtoSGbgjYE/G/+l9sF3MWFPNc9IcoOC4ODfKHfxFmp0g==", - "license": "MIT", - "dependencies": { - "dunder-proto": "^1.0.1", - "es-object-atoms": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/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/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/gopd": { - "version": "1.2.0", - "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.2.0.tgz", - "integrity": "sha512-ZUKRh6/kUFoAiTAtTYPZJ3hw9wNxx+BIBOijnlG9PnrJsCcSjs1wyyD6vJpaYtgnzDrKYRSqf3OO6Rfa93xsRg==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, - "node_modules/has-symbols": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", - "integrity": "sha512-1cDNdwJ2Jaohmb3sg4OmKaMBwuC48sYni5HUw2DvsC8LjGTLK9h+eb1X6RyuOHe4hT0ULCW68iomhjUoKUqlPQ==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/hasown": { - "version": "2.0.2", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", - "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", - "dependencies": { - "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/http-proxy-agent/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "engines": { - "node": ">= 14" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/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/inflight": { - "version": "1.0.6", - "resolved": "https://registry.npmjs.org/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://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, - "node_modules/js-md4": { - "version": "0.3.2", - "resolved": "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz", - "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==", - "license": "MIT" - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", - "license": "MIT", - "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "node_modules/jsonwebtoken/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, - "node_modules/jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "license": "MIT", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", - "license": "MIT" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", - "license": "MIT" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", - "license": "MIT" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", - "license": "MIT" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "license": "MIT" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", - "license": "MIT" - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "license": "MIT" - }, - "node_modules/math-intrinsics": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/math-intrinsics/-/math-intrinsics-1.1.0.tgz", - "integrity": "sha512-/IXtbwEk5HTPyEwyKX6hGkYXxM9nbj64B+ilVJnC/R6B0pH5G4V3b0pVbL7DBj4tkhBAppbQUlf6F6Xl9LHu1g==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/mime-db": { - "version": "1.52.0", - "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", - "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.35", - "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", - "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", - "dependencies": { - "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimalistic-assert": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/minimalistic-assert/-/minimalistic-assert-1.0.1.tgz", - "integrity": "sha512-UtJcAD4yEaGtjPezWuO9wC4nwUnVH/8/Im3yEHQP4b67cXlD/Qr9hdITCU1xDbSEXg2XKNaP8jsReV7vQd00/A==", - "license": "ISC" - }, - "node_modules/minimatch": { - "version": "3.0.5", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", - "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/minimist": { - "version": "1.2.8", - "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", - "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mkdirp": { - "version": "0.5.6", - "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.6.tgz", - "integrity": "sha512-FP+p8RB8OWpF3YZBCrP5gtADmtXApB5AMLn+vdyA+PyxCjrCs00mjyUozssO33cwDeT3wNGdLxJ5M//YqtHAJw==", - "dependencies": { - "minimist": "^1.2.6" - }, - "bin": { - "mkdirp": "bin/cmd.js" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/msalv1": { - "name": "@azure/msal-node", - "version": "1.18.4", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.18.4.tgz", - "integrity": "sha512-Kc/dRvhZ9Q4+1FSfsTFDME/v6+R2Y1fuMty/TfwqE5p9GTPw08BPbKgeWinE8JRHRp+LemjQbUZsn4Q4l6Lszg==", - "deprecated": "A newer major version of this library is available. Please upgrade to the latest available version.", - "license": "MIT", - "dependencies": { - "@azure/msal-common": "13.3.1", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": "10 || 12 || 14 || 16 || 18" - } - }, - "node_modules/msalv1/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/msalv2": { - "name": "@azure/msal-node", - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.16.2.tgz", - "integrity": "sha512-An7l1hEr0w1HMMh1LU+rtDtqL7/jw74ORlc9Wnh06v7TU/xpG39/Zdr1ZJu3QpjUfKJ+E0/OXMW8DRSWTlh7qQ==", - "license": "MIT", - "dependencies": { - "@azure/msal-common": "14.16.0", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/msalv2/node_modules/@azure/msal-common": { - "version": "14.16.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.16.0.tgz", - "integrity": "sha512-1KOZj9IpcDSwpNiQNjt0jDYZpQvNZay7QAEi/5DLubay40iGYtLzya/jbjRPLyOTZhEKyL1MzPuw2HqBCjceYA==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/msalv2/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/msalv3": { - "name": "@azure/msal-node", - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.7.4.tgz", - "integrity": "sha512-fjqvhrThwzzPvqhFOdkkGRJCHPQZTNijpceVy8QjcfQuH482tOVEjHyamZaioOhVtx+FK1u+eMpJA2Zz4U9LVg==", - "dependencies": { - "@azure/msal-common": "15.12.0", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/msalv3/node_modules/@azure/msal-common": { - "version": "15.12.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.12.0.tgz", - "integrity": "sha512-4ucXbjVw8KJ5QBgnGJUeA07c8iznwlk5ioHIhI4ASXcXgcf2yRFhWzYOyWg/cI49LC9ekpFJeQtO3zjDTbl6TQ==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/msalv3/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, - "node_modules/nodejs-file-downloader": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.12.1.tgz", - "integrity": "sha512-LpfCTNhh805AlLnJnzt1PuEj+RmbrccbAQZ6hBRw2e6QPVR0Qntuo6qqyvPHG5s77/0w0IEKgRAD4nbSnr/X4w==", - "dependencies": { - "follow-redirects": "^1.15.1", - "https-proxy-agent": "^5.0.0", - "mime-types": "^2.1.27", - "sanitize-filename": "^1.6.3" - } - }, - "node_modules/object-inspect": { - "version": "1.13.3", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.3.tgz", - "integrity": "sha512-kDCGIbxkDSXE3euJZZXzc6to7fCrKHNI/hSRQnRuQ+BWjFNzZwiFF8fj/6o2t2G9/jTj8PSIYTfCLelLZEeRpA==", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qs": { - "version": "6.13.1", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.1.tgz", - "integrity": "sha512-EJPeIn0CYrGu+hli1xilKAPXODtJ12T0sP63Ijx2/khC2JtuaN3JyNIpvmnkmaEtha9ocbG4A4cMcr+TvqvwQg==", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.6" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/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/rimraf": { - "version": "2.6.3", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.6.3.tgz", - "integrity": "sha512-mwqeW5XsA2qAejG46gYdENaxXjx9onRNCfn7L0duuP4hCuTIi/QO7PDK07KJfp1d+izWPrzEJDcSqBa0OZQriA==", - "deprecated": "Rimraf versions prior to v4 are no longer supported", - "dependencies": { - "glob": "^7.1.3" - }, - "bin": { - "rimraf": "bin.js" - } - }, - "node_modules/safe-buffer": { - "version": "5.2.1", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", - "integrity": "sha512-rp3So07KcdmmKbGvgaNxQSJr7bGVSVk5S9Eq1F+ppbRo70+YeaDxkw5Dd8NPN+GD6bjnYm2VuPuCXmpuYvmCXQ==", - "funding": [ - { - "type": "github", - "url": "https://github.com/sponsors/feross" - }, - { - "type": "patreon", - "url": "https://www.patreon.com/feross" - }, - { - "type": "consulting", - "url": "https://feross.org/support" - } - ], - "license": "MIT" - }, - "node_modules/sanitize-filename": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/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.3.0", - "resolved": "https://registry.npmjs.org/sax/-/sax-1.3.0.tgz", - "integrity": "sha512-0s+oAmw9zLl1V1cS9BtZN7JAd0cW5e0QH4W3LWEK6a4LaLEA2OTpGYWDY+6XasBLtz6wkm3u1xRw95mRuJ59WA==" - }, - "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/shelljs": { - "version": "0.8.5", - "resolved": "https://registry.npmjs.org/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.1.0", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.1.0.tgz", - "integrity": "sha512-ZX99e6tRweoUXqR+VBrslhda51Nh5MTQwou5tnUDgbtyM0dBgmhEDtWGP/xbKn6hqfPRHujUNwz5fy/wbbhnpw==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3", - "side-channel-list": "^1.0.0", - "side-channel-map": "^1.0.1", - "side-channel-weakmap": "^1.0.2" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-list": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/side-channel-list/-/side-channel-list-1.0.0.tgz", - "integrity": "sha512-FCLHtRD/gnpCiCHEiJLOwdmFP+wzCmDEkc9y7NsYxeF4u7Btsn1ZuwgwJGxImImHicJArLP4R0yX4c2KCrMrTA==", - "license": "MIT", - "dependencies": { - "es-errors": "^1.3.0", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-map": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/side-channel-map/-/side-channel-map-1.0.1.tgz", - "integrity": "sha512-VCjCNfgMsby3tTdo02nbjtM/ewra6jPHmpThenkTYh8pG9ucZ/1P8So4u4FGBek/BjpOVsDCMoLA/iuBKIFXRA==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/side-channel-weakmap": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/side-channel-weakmap/-/side-channel-weakmap-1.0.2.tgz", - "integrity": "sha512-WPS/HvHQTYnHisLo9McqBHOJk2FkHO/tlpvldyrnem4aeQp4hai3gythswg6p01oSoTl58rcpiFAjF2br2Ak2A==", - "license": "MIT", - "dependencies": { - "call-bound": "^1.0.2", - "es-errors": "^1.3.0", - "get-intrinsic": "^1.2.5", - "object-inspect": "^1.13.3", - "side-channel-map": "^1.0.1" - }, - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/stoppable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", - "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", - "engines": { - "node": ">=4", - "npm": ">=6" - } - }, - "node_modules/supports-preserve-symlinks-flag": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", - "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/temp": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/temp/-/temp-0.9.4.tgz", - "integrity": "sha512-yYrrsWnrXMcdsnu/7YMYAofM1ktpL5By7vZhf15CrXijWWrEYZks5AXBudalfSWJLlnen/QUJUB5aoB0kqZUGA==", - "dependencies": { - "mkdirp": "^0.5.1", - "rimraf": "~2.6.2" - }, - "engines": { - "node": ">=6.0.0" - } - }, - "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, - "node_modules/truncate-utf8-bytes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", - "dependencies": { - "utf8-byte-length": "^1.0.1" - } - }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, - "node_modules/tunnel": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", - "license": "MIT", - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "node_modules/typed-rest-client": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-2.1.0.tgz", - "integrity": "sha512-Nel9aPbgSzRxfs1+4GoSB4wexCF+4Axlk7OSGVQCMa+4fWcyxIsN/YNmkp0xTT2iQzMD98h8yFLav/cNaULmRA==", - "license": "MIT", - "dependencies": { - "des.js": "^1.1.0", - "js-md4": "^0.3.2", - "qs": "^6.10.3", - "tunnel": "0.0.6", - "underscore": "^1.12.1" - }, - "engines": { - "node": ">= 16.0.0" - } - }, - "node_modules/underscore": { - "version": "1.13.7", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", - "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==", - "license": "MIT" - }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "license": "MIT" - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/utf8-byte-length": { - "version": "1.0.5", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", - "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==" - }, - "node_modules/uuid": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/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/uuidv5": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/uuidv5/-/uuidv5-1.0.0.tgz", - "integrity": "sha512-OIrdJoTuC0Sbk1CKrGWG02gwrZHZptlYTHGkVOH7wxVNmMsGYFzJ77N7+SbrctXfpp9sI8Bp/nsu6C932p2MGQ==" - }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - }, - "node_modules/x2js": { - "version": "3.4.4", - "resolved": "https://registry.npmjs.org/x2js/-/x2js-3.4.4.tgz", - "integrity": "sha512-yG/ThaBCgnsa3aoMPAe7QwDpcyU4D70hjXC4Y1lZSfD/Tgd0MpE19FnZZRAjekryw0c8cffpOt9zsPEiqktO6Q==", - "dependencies": { - "@xmldom/xmldom": "^0.8.3" - } - }, - "node_modules/xml2js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/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://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", - "integrity": "sha512-fDlsI/kFEx7gLvbecc0/ohLG50fugQp8ryHzMTuW9vSa1GJ0XYWKnhsUx7oie3G98+r56aTQIUB4kht42R3JvA==", - "engines": { - "node": ">=4.0" - } - } - } -} diff --git a/BuildTasks/PublishExtension/v5/vsixeditor.ts b/BuildTasks/PublishExtension/vsixeditor.ts similarity index 85% rename from BuildTasks/PublishExtension/v5/vsixeditor.ts rename to BuildTasks/PublishExtension/vsixeditor.ts index 66471a9b..2e6639ea 100644 --- a/BuildTasks/PublishExtension/v5/vsixeditor.ts +++ b/BuildTasks/PublishExtension/vsixeditor.ts @@ -1,9 +1,9 @@ -import temp from "temp"; import fs from "node:fs/promises"; import path from "node:path"; +import os from "node:os"; import tl from "azure-pipelines-task-lib"; import tr from "azure-pipelines-task-lib/toolrunner.js"; -import * as common from "../../Common/v5/Common.js"; +import * as common from "../Common/Common.js"; interface VsixManifest { PackageManifest: { @@ -209,27 +209,44 @@ export default class VSIXEditor { if (!this.hasEdits()) { return this.inputFile; } - temp.track(); - - const dirPath = await temp.mkdir("vsixeditor"); - tl.debug("Extracting files to " + dirPath); + const tempRoot = tl.getVariable("Agent.TempDirectory") || os.tmpdir(); + let dirPath: string | undefined; + let cleanupTempDir: (() => Promise) | undefined; + + try { + dirPath = await fs.mkdtemp(path.join(tempRoot, "vsixeditor-")); + const directoryToClean = dirPath; + cleanupTempDir = async () => { + try { + await fs.rm(directoryToClean, { recursive: true, force: true }); + } catch (error) { + const cleanupError = error instanceof Error ? error.message : String(error); + tl.debug(`Failed to remove temporary directory ${directoryToClean}: ${cleanupError}`); + } + }; + tl.debug("Extracting files to " + dirPath); - await this.extractArchive(this.inputFile, dirPath); - if (this.versionNumber && this.updateTasksVersion || this.updateTasksId) { - tl.debug("Look for build tasks manifest"); - const extensionManifest = path.join(dirPath, "extension.vsomanifest"); - await common.checkUpdateTasksManifests(extensionManifest); - } + await this.extractArchive(this.inputFile, dirPath); + if (this.versionNumber && this.updateTasksVersion || this.updateTasksId) { + tl.debug("Look for build tasks manifest"); + const extensionManifest = path.join(dirPath, "extension.vsomanifest"); + await common.checkUpdateTasksManifests(extensionManifest); + } - tl.debug("Editing VSIX manifest"); - const manifestData = await this.editVsixManifest(dirPath); - manifestData.outputFileName = await manifestData.createOutputFilePath(this.outputPath); + tl.debug("Editing VSIX manifest"); + const manifestData = await this.editVsixManifest(dirPath); + manifestData.outputFileName = await manifestData.createOutputFilePath(this.outputPath); - tl.debug(`Creating final archive file at ${this.outputPath}`); - await this.createArchive(this.inputFile, manifestData.dirPath, manifestData.outputFileName); - tl.debug("Final archive file created"); + tl.debug(`Creating final archive file at ${this.outputPath}`); + await this.createArchive(this.inputFile, manifestData.dirPath, manifestData.outputFileName); + tl.debug("Final archive file created"); - return manifestData.outputFileName; + return manifestData.outputFileName; + } finally { + if (cleanupTempDir) { + await cleanupTempDir(); + } + } } private async editVsixManifest(dirPath: string): Promise { diff --git a/BuildTasks/PublishVSExtension/v5/PublishVSExtension.ts b/BuildTasks/PublishVSExtension/PublishVSExtension.ts similarity index 100% rename from BuildTasks/PublishVSExtension/v5/PublishVSExtension.ts rename to BuildTasks/PublishVSExtension/PublishVSExtension.ts diff --git a/BuildTasks/PublishVSExtension/v5/Utils.ts b/BuildTasks/PublishVSExtension/Utils.ts similarity index 100% rename from BuildTasks/PublishVSExtension/v5/Utils.ts rename to BuildTasks/PublishVSExtension/Utils.ts diff --git a/BuildTasks/PublishVSExtension/v4/icon.png b/BuildTasks/PublishVSExtension/icon.png similarity index 100% rename from BuildTasks/PublishVSExtension/v4/icon.png rename to BuildTasks/PublishVSExtension/icon.png diff --git a/BuildTasks/PublishVSExtension/v5/package-lock.json b/BuildTasks/PublishVSExtension/package-lock.json similarity index 97% rename from BuildTasks/PublishVSExtension/v5/package-lock.json rename to BuildTasks/PublishVSExtension/package-lock.json index f8cde7b5..60b630ff 100644 --- a/BuildTasks/PublishVSExtension/v5/package-lock.json +++ b/BuildTasks/PublishVSExtension/package-lock.json @@ -11,7 +11,6 @@ "dependencies": { "azure-pipelines-task-lib": "^4.17.3", "azure-pipelines-tasks-azure-arm-rest": "^3.263.1", - "fs-extra": "^11.3.2", "tmp": "^0.2.5", "uuidv5": "^1.0.0" }, @@ -591,20 +590,6 @@ } } }, - "node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -698,11 +683,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -823,17 +803,6 @@ "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==", "license": "MIT" }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jsonwebtoken": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", @@ -1412,14 +1381,6 @@ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "license": "MIT" }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/utf8-byte-length": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", diff --git a/BuildTasks/PublishVSExtension/v5/package.json b/BuildTasks/PublishVSExtension/package.json similarity index 95% rename from BuildTasks/PublishVSExtension/v5/package.json rename to BuildTasks/PublishVSExtension/package.json index f09d1277..d0b9c51e 100644 --- a/BuildTasks/PublishVSExtension/v5/package.json +++ b/BuildTasks/PublishVSExtension/package.json @@ -15,7 +15,6 @@ "dependencies": { "azure-pipelines-task-lib": "^4.17.3", "azure-pipelines-tasks-azure-arm-rest": "^3.263.1", - "fs-extra": "^11.3.2", "tmp": "^0.2.5", "uuidv5": "^1.0.0" }, diff --git a/BuildTasks/PublishVSExtension/v4/readme.md b/BuildTasks/PublishVSExtension/readme.md similarity index 100% rename from BuildTasks/PublishVSExtension/v4/readme.md rename to BuildTasks/PublishVSExtension/readme.md diff --git a/BuildTasks/PublishVSExtension/v4/screenshot.png b/BuildTasks/PublishVSExtension/screenshot.png similarity index 100% rename from BuildTasks/PublishVSExtension/v4/screenshot.png rename to BuildTasks/PublishVSExtension/screenshot.png diff --git a/BuildTasks/PublishVSExtension/v5/task.json b/BuildTasks/PublishVSExtension/task.json similarity index 96% rename from BuildTasks/PublishVSExtension/v5/task.json rename to BuildTasks/PublishVSExtension/task.json index 0de5c0af..afe8378a 100644 --- a/BuildTasks/PublishVSExtension/v5/task.json +++ b/BuildTasks/PublishVSExtension/task.json @@ -86,14 +86,14 @@ ], "execution": { "Node20_1": { - "target": "PublishVSExtension/v5/PublishVSExtension.js", + "target": "PublishVSExtension/PublishVSExtension.js", "argumentFormat": "", "platforms": [ "windows" ] }, "Node16": { - "target": "PublishVSExtension/v5/PublishVSExtension.js", + "target": "PublishVSExtension/PublishVSExtension.js", "argumentFormat": "", "platforms": [ "windows" diff --git a/BuildTasks/PublishVSExtension/v5/tsconfig.json b/BuildTasks/PublishVSExtension/tsconfig.json similarity index 77% rename from BuildTasks/PublishVSExtension/v5/tsconfig.json rename to BuildTasks/PublishVSExtension/tsconfig.json index e9528d8c..8f5bb9af 100644 --- a/BuildTasks/PublishVSExtension/v5/tsconfig.json +++ b/BuildTasks/PublishVSExtension/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.v5.json", + "extends": "../tsconfig.v5.json", "compilerOptions": { "outDir": "./", "sourceRoot": "./" diff --git a/BuildTasks/PublishVSExtension/v4/PublishVSExtension.js b/BuildTasks/PublishVSExtension/v4/PublishVSExtension.js deleted file mode 100644 index 32b13244..00000000 --- a/BuildTasks/PublishVSExtension/v4/PublishVSExtension.js +++ /dev/null @@ -1,28 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -const tl = require("azure-pipelines-task-lib"); -const util = require("./Utils"); -let publisher = ""; -try { - const connectedService = tl.getInput("ConnectedServiceName", true); - const token = tl.getEndpointAuthorizationParameter(connectedService, "password", true); - const vsixFile = tl.getPathInput("vsixFile", true, true); - const manifestFile = tl.getPathInput("manifestFile", true, true); - const publisherId = tl.getInput("publisherId", true); - publisher = publisherId; - const ignoreWarnings = tl.getInput("ignoreWarnings", false); - console.info(`Logging in as '${publisherId}'`); - util.login(publisherId, token); - console.info(`Publishing '${vsixFile}' to Visual Studio marketplace`); - util.publish(vsixFile, manifestFile, ignoreWarnings); -} -catch (error) { - tl.error(error); - tl.setResult(tl.TaskResult.Failed, error); -} -finally { - console.info(`Logging out publisher '${publisher}'`); - util.logout(publisher); - console.log("All done"); -} -//# sourceMappingURL=PublishVSExtension.js.map \ No newline at end of file diff --git a/BuildTasks/PublishVSExtension/v4/PublishVSExtension.js.map b/BuildTasks/PublishVSExtension/v4/PublishVSExtension.js.map deleted file mode 100644 index 318a7cef..00000000 --- a/BuildTasks/PublishVSExtension/v4/PublishVSExtension.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"PublishVSExtension.js","sourceRoot":"","sources":["PublishVSExtension.ts"],"names":[],"mappings":";;AAAA,+CAA+C;AAC/C,gCAAgC;AAEhC,IAAI,SAAS,GAAG,EAAE,CAAC;AAEnB,IAAI,CAAC;IACD,MAAM,gBAAgB,GAAG,EAAE,CAAC,QAAQ,CAAC,sBAAsB,EAAE,IAAI,CAAC,CAAC;IACnE,MAAM,KAAK,GAAG,EAAE,CAAC,iCAAiC,CAAC,gBAAgB,EAAE,UAAU,EAAE,IAAI,CAAC,CAAC;IAEvF,MAAM,QAAQ,GAAG,EAAE,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACzD,MAAM,YAAY,GAAG,EAAE,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,EAAE,IAAI,CAAC,CAAC;IACjE,MAAM,WAAW,GAAG,EAAE,CAAC,QAAQ,CAAC,aAAa,EAAE,IAAI,CAAC,CAAC;IACrD,SAAS,GAAG,WAAW,CAAC;IACxB,MAAM,cAAc,GAAG,EAAE,CAAC,QAAQ,CAAC,gBAAgB,EAAE,KAAK,CAAC,CAAC;IAE5D,OAAO,CAAC,IAAI,CAAC,kBAAkB,WAAW,GAAG,CAAC,CAAC;IAC/C,IAAI,CAAC,KAAK,CAAC,WAAW,EAAE,KAAK,CAAC,CAAC;IAE/B,OAAO,CAAC,IAAI,CAAC,eAAe,QAAQ,gCAAgC,CAAC,CAAA;IACrE,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,YAAY,EAAE,cAAc,CAAC,CAAC;AACzD,CAAC;AAAC,OAAO,KAAK,EAAE,CAAC;IACb,EAAE,CAAC,KAAK,CAAC,KAAK,CAAC,CAAC;IAChB,EAAE,CAAC,SAAS,CAAC,EAAE,CAAC,UAAU,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;AAC9C,CAAC;QACO,CAAC;IACL,OAAO,CAAC,IAAI,CAAC,0BAA0B,SAAS,GAAG,CAAC,CAAC;IACrD,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACvB,OAAO,CAAC,GAAG,CAAC,UAAU,CAAC,CAAC;AAC5B,CAAC"} \ No newline at end of file diff --git a/BuildTasks/PublishVSExtension/v4/PublishVSExtension.ts b/BuildTasks/PublishVSExtension/v4/PublishVSExtension.ts deleted file mode 100644 index d6349353..00000000 --- a/BuildTasks/PublishVSExtension/v4/PublishVSExtension.ts +++ /dev/null @@ -1,29 +0,0 @@ -import * as tl from "azure-pipelines-task-lib"; -import * as util from "./Utils"; - -let publisher = ""; - -try { - const connectedService = tl.getInput("ConnectedServiceName", true); - const token = tl.getEndpointAuthorizationParameter(connectedService, "password", true); - - const vsixFile = tl.getPathInput("vsixFile", true, true); - const manifestFile = tl.getPathInput("manifestFile", true, true); - const publisherId = tl.getInput("publisherId", true); - publisher = publisherId; - const ignoreWarnings = tl.getInput("ignoreWarnings", false); - - console.info(`Logging in as '${publisherId}'`); - util.login(publisherId, token); - - console.info(`Publishing '${vsixFile}' to Visual Studio marketplace`) - util.publish(vsixFile, manifestFile, ignoreWarnings); -} catch (error) { - tl.error(error); - tl.setResult(tl.TaskResult.Failed, error); -} -finally { - console.info(`Logging out publisher '${publisher}'`); - util.logout(publisher); - console.log("All done"); -} \ No newline at end of file diff --git a/BuildTasks/PublishVSExtension/v4/Utils.js b/BuildTasks/PublishVSExtension/v4/Utils.js deleted file mode 100644 index d41f5417..00000000 --- a/BuildTasks/PublishVSExtension/v4/Utils.js +++ /dev/null @@ -1,65 +0,0 @@ -"use strict"; -Object.defineProperty(exports, "__esModule", { value: true }); -exports.getVsixPublisherExe = getVsixPublisherExe; -exports.login = login; -exports.logout = logout; -exports.publish = publish; -const tl = require("azure-pipelines-task-lib"); -const path = require("path"); -let cacheVsixPublisherExe = ""; -let loggedIn = false; -function getVsixPublisherExe() { - if (cacheVsixPublisherExe === "") { - const vswhereTool = tl.tool(path.join(__dirname, "tools", "vswhere.exe")); - vswhereTool.line("-version [15.0,) -latest -requires Microsoft.VisualStudio.Component.VSSDK -find VSSDK\\VisualStudioIntegration\\Tools\\Bin\\VsixPublisher.exe"); - const vswhereResult = vswhereTool.execSync({ silent: true }); - const vsixPublisherExe = vswhereResult.stdout.trim(); - if (vswhereResult.code === 0 && vsixPublisherExe && tl.exist(vsixPublisherExe)) { - tl.debug('VsixPublisher.exe installed path: ' + vsixPublisherExe); - cacheVsixPublisherExe = vsixPublisherExe; - } - else { - throw new Error("Could not locate vsixpublisher.exe. Ensure the Visual Studio SDK is installed on the agent."); - } - } - return cacheVsixPublisherExe; -} -function login(publisher, token) { - const vsixPublisherExe = getVsixPublisherExe(); - const vsixPublisher = tl.tool(vsixPublisherExe); - vsixPublisher.arg("login"); - vsixPublisher.arg(["-personalAccessToken", token]); - vsixPublisher.arg(["-publisherName", publisher]); - if (vsixPublisher.execSync({ failOnStdErr: true }).code !== 0) { - throw new Error("Login failed."); - } - loggedIn = true; - console.info(`Login successful.`); -} -function logout(publisher) { - if (loggedIn) { - const vsixPublisherExe = getVsixPublisherExe(); - const vsixPublisher = tl.tool(vsixPublisherExe); - vsixPublisher.arg("logout"); - vsixPublisher.arg(["-publisherName", publisher]); - vsixPublisher.arg("-ignoreMissingPublisher"); - if (vsixPublisher.execSync({ failOnStdErr: true }).code !== 0) { - throw new Error("Logout failed."); - } - loggedIn = false; - } - console.info(`Logout successful.`); -} -function publish(vsixPath, manifestPath, warningsToIgnore) { - const vsixPublisherExe = getVsixPublisherExe(); - const vsixPublisher = tl.tool(vsixPublisherExe); - vsixPublisher.arg("publish"); - vsixPublisher.arg(["-payload", vsixPath]); - vsixPublisher.arg(["-publishManifest", manifestPath]); - vsixPublisher.arg(["-ignoreWarnings", warningsToIgnore]); - if (vsixPublisher.execSync({ failOnStdErr: true }).code !== 0) { - throw new Error("Publish failed."); - } - console.info(`Published successfully.`); -} -//# sourceMappingURL=Utils.js.map \ No newline at end of file diff --git a/BuildTasks/PublishVSExtension/v4/Utils.js.map b/BuildTasks/PublishVSExtension/v4/Utils.js.map deleted file mode 100644 index 7fc49f41..00000000 --- a/BuildTasks/PublishVSExtension/v4/Utils.js.map +++ /dev/null @@ -1 +0,0 @@ -{"version":3,"file":"Utils.js","sourceRoot":"","sources":["Utils.ts"],"names":[],"mappings":";;AAOA,kDAiBE;AAEF,sBAeC;AAED,wBAiBC;AAED,0BAeC;AA7ED,+CAA+C;AAE/C,6BAA6B;AAE7B,IAAI,qBAAqB,GAAG,EAAE,CAAC;AAC/B,IAAI,QAAQ,GAAG,KAAK,CAAC;AAErB,SAAgB,mBAAmB;IAC/B,IAAI,qBAAqB,KAAK,EAAE,EAAE,CAAC;QAC/B,MAAM,WAAW,GAAG,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;QAC1E,WAAW,CAAC,IAAI,CAAC,+IAA+I,CAAC,CAAC;QAClK,MAAM,aAAa,GAAG,WAAW,CAAC,QAAQ,CAAC,EAAE,MAAM,EAAE,IAAI,EAAyB,CAAC,CAAC;QACpF,MAAM,gBAAgB,GAAG,aAAa,CAAC,MAAM,CAAC,IAAI,EAAE,CAAC;QACrD,IAAI,aAAa,CAAC,IAAI,KAAK,CAAC,IAAI,gBAAgB,IAAI,EAAE,CAAC,KAAK,CAAC,gBAAgB,CAAC,EAC9E,CAAC;YACG,EAAE,CAAC,KAAK,CAAC,oCAAoC,GAAG,gBAAgB,CAAC,CAAC;YAClE,qBAAqB,GAAG,gBAAgB,CAAC;QAC7C,CAAC;aAED,CAAC;YACG,MAAM,IAAI,KAAK,CAAC,6FAA6F,CAAC,CAAC;QACnH,CAAC;IACL,CAAC;IACD,OAAO,qBAAqB,CAAC;AAChC,CAAC;AAEF,SAAgB,KAAK,CAAC,SAAiB,EAAE,KAAa;IAClD,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;IAC/C,MAAM,aAAa,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAEhD,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,aAAa,CAAC,GAAG,CAAC,CAAC,sBAAsB,EAAE,KAAK,CAAC,CAAC,CAAC;IACnD,aAAa,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC;IAEjD,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAqB,CAAC,CAAC,IAAI,KAAK,CAAC,EAChF,CAAC;QACG,MAAM,IAAI,KAAK,CAAC,eAAe,CAAC,CAAC;IACrC,CAAC;IAED,QAAQ,GAAG,IAAI,CAAC;IAChB,OAAO,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAA;AACrC,CAAC;AAED,SAAgB,MAAM,CAAC,SAAiB;IACpC,IAAI,QAAQ,EACZ,CAAC;QACG,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;QAC/C,MAAM,aAAa,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;QAEhD,aAAa,CAAC,GAAG,CAAC,QAAQ,CAAC,CAAC;QAC5B,aAAa,CAAC,GAAG,CAAC,CAAC,gBAAgB,EAAE,SAAS,CAAC,CAAC,CAAC;QACjD,aAAa,CAAC,GAAG,CAAC,yBAAyB,CAAC,CAAC;QAE7C,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAqB,CAAC,CAAC,IAAI,KAAK,CAAC,EAChF,CAAC;YACG,MAAM,IAAI,KAAK,CAAC,gBAAgB,CAAC,CAAC;QACtC,CAAC;QACD,QAAQ,GAAG,KAAK,CAAC;IACrB,CAAC;IACD,OAAO,CAAC,IAAI,CAAC,oBAAoB,CAAC,CAAA;AACtC,CAAC;AAED,SAAgB,OAAO,CAAC,QAAgB,EAAE,YAAoB,EAAE,gBAAwB;IACpF,MAAM,gBAAgB,GAAG,mBAAmB,EAAE,CAAC;IAC/C,MAAM,aAAa,GAAG,EAAE,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAEhD,aAAa,CAAC,GAAG,CAAC,SAAS,CAAC,CAAC;IAC7B,aAAa,CAAC,GAAG,CAAC,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC,CAAC;IAC1C,aAAa,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE,YAAY,CAAC,CAAC,CAAC;IACtD,aAAa,CAAC,GAAG,CAAC,CAAC,iBAAiB,EAAE,gBAAgB,CAAC,CAAC,CAAC;IAEzD,IAAI,aAAa,CAAC,QAAQ,CAAC,EAAE,YAAY,EAAE,IAAI,EAAqB,CAAC,CAAC,IAAI,KAAK,CAAC,EAChF,CAAC;QACG,MAAM,IAAI,KAAK,CAAC,iBAAiB,CAAC,CAAC;IACvC,CAAC;IAED,OAAO,CAAC,IAAI,CAAC,yBAAyB,CAAC,CAAA;AAC3C,CAAC"} \ No newline at end of file diff --git a/BuildTasks/PublishVSExtension/v4/Utils.ts b/BuildTasks/PublishVSExtension/v4/Utils.ts deleted file mode 100644 index 4396c14b..00000000 --- a/BuildTasks/PublishVSExtension/v4/Utils.ts +++ /dev/null @@ -1,78 +0,0 @@ -import * as tl from "azure-pipelines-task-lib"; -import * as tr from "azure-pipelines-task-lib/toolrunner"; -import * as path from "path"; - -let cacheVsixPublisherExe = ""; -let loggedIn = false; - -export function getVsixPublisherExe(): string { - if (cacheVsixPublisherExe === "") { - const vswhereTool = tl.tool(path.join(__dirname, "tools", "vswhere.exe")); - vswhereTool.line("-version [15.0,) -latest -requires Microsoft.VisualStudio.Component.VSSDK -find VSSDK\\VisualStudioIntegration\\Tools\\Bin\\VsixPublisher.exe"); - const vswhereResult = vswhereTool.execSync({ silent: true } as tr.IExecSyncOptions); - const vsixPublisherExe = vswhereResult.stdout.trim(); - if (vswhereResult.code === 0 && vsixPublisherExe && tl.exist(vsixPublisherExe)) - { - tl.debug('VsixPublisher.exe installed path: ' + vsixPublisherExe); - cacheVsixPublisherExe = vsixPublisherExe; - } - else - { - throw new Error("Could not locate vsixpublisher.exe. Ensure the Visual Studio SDK is installed on the agent."); - } - } - return cacheVsixPublisherExe; - } - -export function login(publisher: string, token: string) { - const vsixPublisherExe = getVsixPublisherExe(); - const vsixPublisher = tl.tool(vsixPublisherExe); - - vsixPublisher.arg("login"); - vsixPublisher.arg(["-personalAccessToken", token]); - vsixPublisher.arg(["-publisherName", publisher]); - - if (vsixPublisher.execSync({ failOnStdErr: true } as tr.IExecOptions).code !== 0) - { - throw new Error("Login failed."); - } - - loggedIn = true; - console.info(`Login successful.`) -} - -export function logout(publisher: string) { - if (loggedIn) - { - const vsixPublisherExe = getVsixPublisherExe(); - const vsixPublisher = tl.tool(vsixPublisherExe); - - vsixPublisher.arg("logout"); - vsixPublisher.arg(["-publisherName", publisher]); - vsixPublisher.arg("-ignoreMissingPublisher"); - - if (vsixPublisher.execSync({ failOnStdErr: true } as tr.IExecOptions).code !== 0) - { - throw new Error("Logout failed."); - } - loggedIn = false; - } - console.info(`Logout successful.`) -} - -export function publish(vsixPath: string, manifestPath: string, warningsToIgnore: string) { - const vsixPublisherExe = getVsixPublisherExe(); - const vsixPublisher = tl.tool(vsixPublisherExe); - - vsixPublisher.arg("publish"); - vsixPublisher.arg(["-payload", vsixPath]); - vsixPublisher.arg(["-publishManifest", manifestPath]); - vsixPublisher.arg(["-ignoreWarnings", warningsToIgnore]); - - if (vsixPublisher.execSync({ failOnStdErr: true } as tr.IExecOptions).code !== 0) - { - throw new Error("Publish failed."); - } - - console.info(`Published successfully.`) -} diff --git a/BuildTasks/PublishVSExtension/v4/package-lock.json b/BuildTasks/PublishVSExtension/v4/package-lock.json deleted file mode 100644 index 06e35385..00000000 --- a/BuildTasks/PublishVSExtension/v4/package-lock.json +++ /dev/null @@ -1,383 +0,0 @@ -{ - "name": "publishvsextension", - "version": "4.3.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "publishvsextension", - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "azure-pipelines-task-lib": "^4.17.3", - "core-js": "^3.46.0", - "path": "~0.12.7", - "tmp": "^0.2.5" - }, - "devDependencies": {} - }, - "node_modules/adm-zip": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", - "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/azure-pipelines-task-lib": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.17.3.tgz", - "integrity": "sha512-UxfH5pk3uOHTi9TtLtdDyugQVkFES5A836ZEePjcs3jYyxm3EJ6IlFYq6gbfd6mNBhrM9fxG2u/MFYIJ+Z0cxQ==", - "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/balanced-match": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "license": "MIT" - }, - "node_modules/core-js": { - "version": "3.46.0", - "resolved": "https://registry.npmjs.org/core-js/-/core-js-3.46.0.tgz", - "integrity": "sha512-vDMm9B0xnqqZ8uSBpZ8sNtRtOdmfShrvT6h2TuQGLs0Is+cR0DYbj/KWP6ALVNbWPpqA/qPLoOuppJN07humpA==", - "hasInstallScript": true, - "license": "MIT", - "funding": { - "type": "opencollective", - "url": "https://opencollective.com/core-js" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/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", - "license": "ISC" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "license": "MIT" - }, - "node_modules/glob": { - "version": "7.2.0", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/has": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/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/inflight": { - "version": "1.0.6", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.3", - "license": "ISC" - }, - "node_modules/interpret": { - "version": "1.4.0", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-core-module": { - "version": "2.8.1", - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mime-db": { - "version": "1.51.0", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.34", - "license": "MIT", - "dependencies": { - "mime-db": "1.51.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.0.5", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/nodejs-file-downloader": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.12.1.tgz", - "integrity": "sha512-LpfCTNhh805AlLnJnzt1PuEj+RmbrccbAQZ6hBRw2e6QPVR0Qntuo6qqyvPHG5s77/0w0IEKgRAD4nbSnr/X4w==", - "dependencies": { - "follow-redirects": "^1.15.1", - "https-proxy-agent": "^5.0.0", - "mime-types": "^2.1.27", - "sanitize-filename": "^1.6.3" - } - }, - "node_modules/once": { - "version": "1.4.0", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/path": { - "version": "0.12.7", - "license": "MIT", - "dependencies": { - "process": "^0.11.1", - "util": "^0.10.3" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "license": "MIT" - }, - "node_modules/process": { - "version": "0.11.10", - "license": "MIT", - "engines": { - "node": ">= 0.6.0" - } - }, - "node_modules/q": { - "version": "1.5.1", - "license": "MIT", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/resolve": { - "version": "1.22.0", - "license": "MIT", - "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://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", - "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", - "dependencies": { - "truncate-utf8-bytes": "^1.0.0" - } - }, - "node_modules/semver": { - "version": "5.7.2", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/shelljs": { - "version": "0.8.5", - "license": "BSD-3-Clause", - "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", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/truncate-utf8-bytes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", - "dependencies": { - "utf8-byte-length": "^1.0.1" - } - }, - "node_modules/utf8-byte-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" - }, - "node_modules/util": { - "version": "0.10.4", - "license": "MIT", - "dependencies": { - "inherits": "2.0.3" - } - }, - "node_modules/uuid": { - "version": "3.4.0", - "license": "MIT", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "license": "ISC" - } - } -} diff --git a/BuildTasks/PublishVSExtension/v4/package.json b/BuildTasks/PublishVSExtension/v4/package.json deleted file mode 100644 index 645077c3..00000000 --- a/BuildTasks/PublishVSExtension/v4/package.json +++ /dev/null @@ -1,23 +0,0 @@ -{ - "name": "publishvsextension", - "version": "4.3.0", - "description": "Publish Visual Studio Extension Task", - "repository": { - "type": "git", - "url": "https://github.com/Microsoft/azure-devops-extension-tasks.git" - }, - "main": "index.js", - "scripts": { - "test": "echo \"Error: no test specified\" && exit 1" - }, - "keywords": [], - "license": "MIT", - "dependencies": { - "azure-pipelines-task-lib": "^4.17.3", - "core-js": "^3.46.0", - "path": "~0.12.7", - "tmp": "^0.2.5" - }, - "devDependencies": { - } -} diff --git a/BuildTasks/PublishVSExtension/v4/task.json b/BuildTasks/PublishVSExtension/v4/task.json deleted file mode 100644 index 2c416af6..00000000 --- a/BuildTasks/PublishVSExtension/v4/task.json +++ /dev/null @@ -1,75 +0,0 @@ -{ - "id": "17654839-813a-4e5f-a724-223a68ec647c", - "name": "PublishVisualStudioExtension", - "friendlyName": "Publish Visual Studio Extension", - "description": "Publish Visual Studio extension to the Visual Studio Marketplace", - "author": "Microsoft Corporation", - "helpMarkDown": "[More Information](https://marketplace.visualstudio.com/items?itemName=ms-devlabs.vsts-developer-tools-build-tasks)", - "preview": true, - "category": "Deploy", - "version": { - "Major": 4, - "Minor": 4, - "Patch": 0 - }, - "visibility": [ - "Build", - "Release" - ], - "demands": [ - "visualstudio" - ], - "minimumAgentVersion": "2.206.1", - "groups": [], - "instanceNameFormat": "Publish Visual Studio Extension", - "inputs": [ - { - "name": "connectedServiceName", - "type": "connectedService:VstsMarketplacePublishing", - "label": "Visual Studio Marketplace connection", - "required": true, - "helpMarkDown": "Service endpoint connection to install the extension." - }, - { - "name": "vsixFile", - "type": "filePath", - "label": "VSIX file", - "defaultValue": "", - "required": true, - "helpMarkDown": "VSIX file to publish." - }, - { - "name": "manifestFile", - "type": "filePath", - "label": "Manifest file", - "defaultValue": "", - "required": true, - "helpMarkDown": "Path for the manifest file. [more](https://docs.microsoft.com/en-us/visualstudio/extensibility/walkthrough-publishing-a-visual-studio-extension-via-command-line?view=vs-2017#publishmanifest-file)" - }, - { - "name": "publisherId", - "type": "string", - "label": "Publisher ID", - "defaultValue": "", - "required": true, - "helpMarkDown": "Extension publisher ID." - }, - { - "name": "ignoreWarnings", - "type": "string", - "label": "Warnings to ignore", - "defaultValue": "", - "helpMarkDown": "List of warnings to ignore when publishing an extension. These warnings are shown as command line messages when publishing an extension. (for example, \"VSIXValidatorWarning01, VSIXValidatorWarning02\")", - "required": false - } - ], - "execution": { - "Node16": { - "target": "PublishVSExtension.js", - "argumentFormat": "", - "platforms": [ - "windows" - ] - } - } -} \ No newline at end of file diff --git a/BuildTasks/PublishVSExtension/v4/tsconfig.json b/BuildTasks/PublishVSExtension/v4/tsconfig.json deleted file mode 100644 index f54fa7b7..00000000 --- a/BuildTasks/PublishVSExtension/v4/tsconfig.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "compilerOptions": { - "module": "commonjs", - "target": "es6", - "noImplicitAny": false, - "rootDir": ".", - "sourceMap": true, - "moduleResolution": "node", - "plugins": [ - { - "name": "tslint-language-service", - "alwaysShowRuleFailuresAsWarnings": false, - "ignoreDefinitionFiles": true, - "disableNoUnusedVariableRule": false, - "supressWhileTypeErrorsPresent": false, - "mockTypeScriptVersion": false - } - ] - }, - "exclude": [ - "node_modules", - "**/*.js" - ] -} \ No newline at end of file diff --git a/BuildTasks/PublishVSExtension/v5/icon.png b/BuildTasks/PublishVSExtension/v5/icon.png deleted file mode 100644 index b8e55d02..00000000 Binary files a/BuildTasks/PublishVSExtension/v5/icon.png and /dev/null differ diff --git a/BuildTasks/PublishVSExtension/v5/readme.md b/BuildTasks/PublishVSExtension/v5/readme.md deleted file mode 100644 index 7151308b..00000000 --- a/BuildTasks/PublishVSExtension/v5/readme.md +++ /dev/null @@ -1,12 +0,0 @@ -## Publish Visual Studio Extension task - -With this task you will be able to publish a Visual Studio extension to Marketplace. - -This task uses [VSIXPublisher](https://docs.microsoft.com/en-us/visualstudio/extensibility/walkthrough-publishing-a-visual-studio-extension-via-command-line?view=vs-2017) program to publish Visual Studio extension to Marketplace. - -> VSIXPublisher executable is not shipped with this task, hence this task needs to be run on an agent where at least Visual Studio 2017 with `Microsoft.VisualStudio.Component.VSSDK` workload installed. `Hosted VS 2017` pool contains agents with both Visual Studio and Microsoft.VisualStudio.Component.VSSDK installed. - -### Screenshot - -![screenshot](screenshot.png) - diff --git a/BuildTasks/PublishVSExtension/v5/screenshot.png b/BuildTasks/PublishVSExtension/v5/screenshot.png deleted file mode 100644 index d41cda00..00000000 Binary files a/BuildTasks/PublishVSExtension/v5/screenshot.png and /dev/null differ diff --git a/BuildTasks/ShareExtension/v5/ShareExtension.ts b/BuildTasks/ShareExtension/ShareExtension.ts similarity index 79% rename from BuildTasks/ShareExtension/v5/ShareExtension.ts rename to BuildTasks/ShareExtension/ShareExtension.ts index 0e6a0d8b..b93c344a 100644 --- a/BuildTasks/ShareExtension/v5/ShareExtension.ts +++ b/BuildTasks/ShareExtension/ShareExtension.ts @@ -1,10 +1,11 @@ import tl from "azure-pipelines-task-lib"; -import * as common from "../../Common/v5/Common.js"; +import * as common from "../Common/Common.js"; +import * as commonAuth from "../Common-Auth/CommonAuth.js"; await common.runTfx(async tfx => { tfx.arg(["extension", "share", "--no-color"]); - await common.setTfxMarketplaceArguments(tfx); + await commonAuth.setTfxMarketplaceArguments(tfx); common.validateAndSetTfxManifestArguments(tfx); // Installation targets diff --git a/BuildTasks/ShareExtension/v4/icon.png b/BuildTasks/ShareExtension/icon.png similarity index 100% rename from BuildTasks/ShareExtension/v4/icon.png rename to BuildTasks/ShareExtension/icon.png diff --git a/BuildTasks/ShareExtension/v5/package-lock.json b/BuildTasks/ShareExtension/package-lock.json similarity index 96% rename from BuildTasks/ShareExtension/v5/package-lock.json rename to BuildTasks/ShareExtension/package-lock.json index ce9de5e9..e87691da 100644 --- a/BuildTasks/ShareExtension/v5/package-lock.json +++ b/BuildTasks/ShareExtension/package-lock.json @@ -11,8 +11,6 @@ "dependencies": { "azure-pipelines-task-lib": "^4.17.3", "azure-pipelines-tasks-azure-arm-rest": "^3.263.1", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", "uuidv5": "^1.0.0" }, "devDependencies": {} @@ -591,20 +589,6 @@ } } }, - "node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -698,11 +682,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -823,17 +802,6 @@ "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==", "license": "MIT" }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jsonwebtoken": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", @@ -1348,15 +1316,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -1412,14 +1371,6 @@ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "license": "MIT" }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/utf8-byte-length": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", diff --git a/BuildTasks/ShareExtension/v5/package.json b/BuildTasks/ShareExtension/package.json similarity index 90% rename from BuildTasks/ShareExtension/v5/package.json rename to BuildTasks/ShareExtension/package.json index 89c5c991..9e5bcd36 100644 --- a/BuildTasks/ShareExtension/v5/package.json +++ b/BuildTasks/ShareExtension/package.json @@ -11,8 +11,6 @@ "dependencies": { "azure-pipelines-task-lib": "^4.17.3", "azure-pipelines-tasks-azure-arm-rest": "^3.263.1", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", "uuidv5": "^1.0.0" }, "devDependencies": { diff --git a/BuildTasks/ShareExtension/v5/task.json b/BuildTasks/ShareExtension/task.json similarity index 97% rename from BuildTasks/ShareExtension/v5/task.json rename to BuildTasks/ShareExtension/task.json index c0f21e1e..00e6c8b9 100644 --- a/BuildTasks/ShareExtension/v5/task.json +++ b/BuildTasks/ShareExtension/task.json @@ -149,11 +149,11 @@ ], "execution": { "Node20_1": { - "target": "ShareExtension/v5/ShareExtension.js", + "target": "ShareExtension/ShareExtension.js", "argumentFormat": "" }, "Node16": { - "target": "ShareExtension/v5/ShareExtension.js", + "target": "ShareExtension/ShareExtension.js", "argumentFormat": "" } }, diff --git a/BuildTasks/ShareExtension/v5/tsconfig.json b/BuildTasks/ShareExtension/tsconfig.json similarity index 76% rename from BuildTasks/ShareExtension/v5/tsconfig.json rename to BuildTasks/ShareExtension/tsconfig.json index e69fca07..6ac4ead4 100644 --- a/BuildTasks/ShareExtension/v5/tsconfig.json +++ b/BuildTasks/ShareExtension/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.v5.json", + "extends": "../tsconfig.v5.json", "compilerOptions": { "outDir": "./", "sourceRoot": "./" diff --git a/BuildTasks/ShareExtension/v4/ShareExtension.ts b/BuildTasks/ShareExtension/v4/ShareExtension.ts deleted file mode 100644 index e830f7ce..00000000 --- a/BuildTasks/ShareExtension/v4/ShareExtension.ts +++ /dev/null @@ -1,21 +0,0 @@ -import * as tl from "azure-pipelines-task-lib/task"; -import * as common from "../../Common/v4/Common"; - -void common.runTfx(async tfx => { - tfx.arg(["extension", "share", "--no-color"]); - - common.setTfxMarketplaceArguments(tfx); - common.validateAndSetTfxManifestArguments(tfx); - - // Installation targets - const accounts = tl.getDelimitedInput("accounts", ",", true); - tfx.arg(["--share-with"].concat(accounts).map((value) => { return value.trim(); })); - - try{ - const code = await tfx.execAsync(); - tl.setResult(tl.TaskResult.Succeeded, `tfx exited with return code: ${code}`); - } catch (err) - { - tl.setResult(tl.TaskResult.Failed, `tfx failed with error: ${err}`); - } -}); diff --git a/BuildTasks/ShareExtension/v4/package-lock.json b/BuildTasks/ShareExtension/v4/package-lock.json deleted file mode 100644 index 68e1ca7c..00000000 --- a/BuildTasks/ShareExtension/v4/package-lock.json +++ /dev/null @@ -1,389 +0,0 @@ -{ - "name": "vsts-developer-tools.shareextensionv4", - "version": "4.3.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "vsts-developer-tools.shareextensionv4", - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "azure-pipelines-task-lib": "^4.17.3", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", - "uuidv5": "^1.0.0" - }, - "devDependencies": {} - }, - "node_modules/adm-zip": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", - "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/azure-pipelines-task-lib": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.17.3.tgz", - "integrity": "sha512-UxfH5pk3uOHTi9TtLtdDyugQVkFES5A836ZEePjcs3jYyxm3EJ6IlFYq6gbfd6mNBhrM9fxG2u/MFYIJ+Z0cxQ==", - "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/balanced-match": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/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-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "license": "MIT" - }, - "node_modules/glob": { - "version": "7.2.0", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "license": "ISC" - }, - "node_modules/has": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/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/inflight": { - "version": "1.0.6", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "node_modules/interpret": { - "version": "1.4.0", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-core-module": { - "version": "2.8.1", - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/mime-db": { - "version": "1.51.0", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.34", - "license": "MIT", - "dependencies": { - "mime-db": "1.51.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.0.5", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/nodejs-file-downloader": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.12.1.tgz", - "integrity": "sha512-LpfCTNhh805AlLnJnzt1PuEj+RmbrccbAQZ6hBRw2e6QPVR0Qntuo6qqyvPHG5s77/0w0IEKgRAD4nbSnr/X4w==", - "dependencies": { - "follow-redirects": "^1.15.1", - "https-proxy-agent": "^5.0.0", - "mime-types": "^2.1.27", - "sanitize-filename": "^1.6.3" - } - }, - "node_modules/once": { - "version": "1.4.0", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "license": "MIT" - }, - "node_modules/q": { - "version": "1.5.1", - "license": "MIT", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/resolve": { - "version": "1.22.0", - "license": "MIT", - "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://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", - "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", - "dependencies": { - "truncate-utf8-bytes": "^1.0.0" - } - }, - "node_modules/semver": { - "version": "5.7.2", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/shelljs": { - "version": "0.8.5", - "license": "BSD-3-Clause", - "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", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/truncate-utf8-bytes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", - "dependencies": { - "utf8-byte-length": "^1.0.1" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/utf8-byte-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" - }, - "node_modules/uuid": { - "version": "3.4.0", - "license": "MIT", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/uuidv5": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "license": "ISC" - } - } -} diff --git a/BuildTasks/ShareExtension/v4/package.json b/BuildTasks/ShareExtension/v4/package.json deleted file mode 100644 index ab8706f8..00000000 --- a/BuildTasks/ShareExtension/v4/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "vsts-developer-tools.shareextensionv4", - "version": "4.3.0", - "description": "Share Extension Task", - "repository": { - "type": "git", - "url": "https://github.com/Microsoft/azure-devops-extension-tasks.git" - }, - "license": "MIT", - "dependencies": { - "azure-pipelines-task-lib": "^4.17.3", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", - "uuidv5": "^1.0.0" - }, - "devDependencies": { - } -} diff --git a/BuildTasks/ShareExtension/v4/task.json b/BuildTasks/ShareExtension/v4/task.json deleted file mode 100644 index 692d32ba..00000000 --- a/BuildTasks/ShareExtension/v4/task.json +++ /dev/null @@ -1,147 +0,0 @@ -{ - "id": "22683a08-0dbe-4fe8-8c53-4606fcb32752", - "name": "ShareAzureDevOpsExtension", - "friendlyName": "Share Extension", - "description": "Share a published extension with a Azure Devops organisation", - "author": "Microsoft Corporation", - "helpMarkDown": "", - "category": "Deploy", - "version": { - "Major": 4, - "Minor": 4, - "Patch": 0 - }, - "visibility": [ - "Build", - "Release" - ], - "demands": [ - "npm" - ], - "minimumAgentVersion": "2.206.1", - "groups": [ - { - "name": "extension", - "displayName": "Extension", - "isExpanded": true - }, - { - "name": "share", - "displayName": "Share", - "isExpanded": true - }, - { - "name": "advanced", - "displayName": "Advanced", - "isExpanded": false - } - ], - "instanceNameFormat": "Share Extension", - "inputs": [ - { - "name": "connectTo", - "type": "radio", - "label": "Connect to", - "required": true, - "defaultValue": "VsTeam", - "helpMarkDown": "Connect to Visual Studio Marketplace.", - "options": { - "VsTeam": "Visual Studio Marketplace" - } - }, - { - "name": "connectedServiceName", - "type": "connectedService:VstsMarketplacePublishing", - "label": "Visual Studio Marketplace connection", - "required": true, - "helpMarkDown": "Service endpoint connection to install the extension.", - "visibleRule": "connectTo=VsTeam" - }, - { - "name": "method", - "type": "radio", - "label": "Share using", - "required": true, - "defaultValue": "id", - "helpMarkDown": "Share using either an existing VSIX or using the Publisher and Extension ID.", - "options": { - "id": "Publisher + Extension ID", - "vsix": "VSIX file" - }, - "groupName": "extension" - }, - { - "name": "publisherId", - "type": "string", - "label": "Publisher ID", - "defaultValue": "", - "required": true, - "helpMarkDown": "Publisher ID of the extension to be shared.", - "groupName": "extension", - "visibleRule": "method = id" - }, - { - "name": "extensionId", - "type": "string", - "label": "Extension ID", - "defaultValue": "", - "helpMarkDown": "Extension ID of the extension to be shared", - "required": true, - "groupName": "extension", - "visibleRule": "method = id" - }, - { - "name": "extensionTag", - "type": "string", - "label": "Extension Tag", - "defaultValue": "", - "helpMarkDown": "Extension Tag to append to the extension id", - "required": false, - "groupName": "extension", - "visibleRule": "method = id" - }, - { - "name": "vsixFile", - "type": "filePath", - "label": "VSIX file", - "defaultValue": "", - "required": true, - "helpMarkDown": "VSIX file of the extension to be shared. Supports wildcards.", - "visibleRule": "method = vsix", - "groupName": "extension" - }, - { - "name": "accounts", - "type": "string", - "label": "Share with", - "defaultValue": "", - "helpMarkDown": "Comma separated list of organisations where to install the extension (e.g. org_x,org_y,org_z)", - "required": true, - "groupName": "share" - }, - { - "name": "arguments", - "type": "string", - "label": "Arguments", - "defaultValue": "", - "helpMarkDown": "Additional arguments passed to the package and publishing tool.", - "required": false, - "groupName": "advanced" - }, - { - "name": "cwd", - "type": "filePath", - "label": "Working Directory", - "defaultValue": "", - "required": false, - "helpMarkDown": "Working directory to run the package and publishing process from. Defaults to the folder where the manifest is located.", - "groupName": "advanced" - } - ], - "execution": { - "Node16": { - "target": "ShareExtension/v4/ShareExtension.js", - "argumentFormat": "" - } - } -} diff --git a/BuildTasks/ShareExtension/v4/tsconfig.json b/BuildTasks/ShareExtension/v4/tsconfig.json deleted file mode 100644 index 1597fc59..00000000 --- a/BuildTasks/ShareExtension/v4/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.v4.json", - "compilerOptions": { - "outDir": "./", - "sourceRoot": "./" - }, - "files": [ - "ShareExtension.ts" - ] - } \ No newline at end of file diff --git a/BuildTasks/ShareExtension/v5/icon.png b/BuildTasks/ShareExtension/v5/icon.png deleted file mode 100644 index 99c23b67..00000000 Binary files a/BuildTasks/ShareExtension/v5/icon.png and /dev/null differ diff --git a/BuildTasks/TfxInstaller/v5/.npmrc b/BuildTasks/TfxInstaller/.npmrc similarity index 100% rename from BuildTasks/TfxInstaller/v5/.npmrc rename to BuildTasks/TfxInstaller/.npmrc diff --git a/BuildTasks/TfxInstaller/v5/TfxInstaller.ts b/BuildTasks/TfxInstaller/TfxInstaller.ts similarity index 100% rename from BuildTasks/TfxInstaller/v5/TfxInstaller.ts rename to BuildTasks/TfxInstaller/TfxInstaller.ts diff --git a/BuildTasks/TfxInstaller/v4/icon.png b/BuildTasks/TfxInstaller/icon.png similarity index 100% rename from BuildTasks/TfxInstaller/v4/icon.png rename to BuildTasks/TfxInstaller/icon.png diff --git a/BuildTasks/TfxInstaller/v5/package-lock.json b/BuildTasks/TfxInstaller/package-lock.json similarity index 83% rename from BuildTasks/TfxInstaller/v5/package-lock.json rename to BuildTasks/TfxInstaller/package-lock.json index c345531c..6f84c69c 100644 --- a/BuildTasks/TfxInstaller/v5/package-lock.json +++ b/BuildTasks/TfxInstaller/package-lock.json @@ -10,252 +10,11 @@ "license": "MIT", "dependencies": { "azure-pipelines-task-lib": "^4.17.3", - "azure-pipelines-tasks-azure-arm-rest": "^3.263.1", "azure-pipelines-tool-lib": "^2.0.10", - "fs-extra": "^11.3.2", "tfx-cli": "^0.22.2", - "tmp": "^0.2.5", "uuidv5": "^1.0.0" } }, - "node_modules/@azure/abort-controller": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-1.1.0.tgz", - "integrity": "sha512-TrRLIoSQVzfAJX9H1JeFjzAoDGcoK1IYX1UImfceTZpsyYfWr09Ss1aHW1y5TrrR3iq6RZLBwJ3E24uwPhwahw==", - "dependencies": { - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=12.0.0" - } - }, - "node_modules/@azure/core-auth": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@azure/core-auth/-/core-auth-1.10.1.tgz", - "integrity": "sha512-ykRMW8PjVAn+RS6ww5cmK9U2CyH9p4Q88YJwvUslfuMmN98w/2rdGRLPqJYObapBCdzBVeDgYWdJnFPFb7qzpg==", - "dependencies": { - "@azure/abort-controller": "^2.1.2", - "@azure/core-util": "^1.13.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-auth/node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-client": { - "version": "1.10.1", - "resolved": "https://registry.npmjs.org/@azure/core-client/-/core-client-1.10.1.tgz", - "integrity": "sha512-Nh5PhEOeY6PrnxNPsEHRr9eimxLwgLlpmguQaHKBinFYA/RU9+kOYVOQqOrTsCL+KSxrLLl1gD8Dk5BFW/7l/w==", - "dependencies": { - "@azure/abort-controller": "^2.1.2", - "@azure/core-auth": "^1.10.0", - "@azure/core-rest-pipeline": "^1.22.0", - "@azure/core-tracing": "^1.3.0", - "@azure/core-util": "^1.13.0", - "@azure/logger": "^1.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-client/node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-rest-pipeline": { - "version": "1.22.1", - "resolved": "https://registry.npmjs.org/@azure/core-rest-pipeline/-/core-rest-pipeline-1.22.1.tgz", - "integrity": "sha512-UVZlVLfLyz6g3Hy7GNDpooMQonUygH7ghdiSASOOHy97fKj/mPLqgDX7aidOijn+sCMU+WU8NjlPlNTgnvbcGA==", - "dependencies": { - "@azure/abort-controller": "^2.1.2", - "@azure/core-auth": "^1.10.0", - "@azure/core-tracing": "^1.3.0", - "@azure/core-util": "^1.13.0", - "@azure/logger": "^1.3.0", - "@typespec/ts-http-runtime": "^0.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-rest-pipeline/node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/core-tracing": { - "version": "1.3.1", - "resolved": "https://registry.npmjs.org/@azure/core-tracing/-/core-tracing-1.3.1.tgz", - "integrity": "sha512-9MWKevR7Hz8kNzzPLfX4EAtGM2b8mr50HPDBvio96bURP/9C+HjdH3sBlLSNNrvRAr5/k/svoH457gB5IKpmwQ==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-util": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/@azure/core-util/-/core-util-1.13.1.tgz", - "integrity": "sha512-XPArKLzsvl0Hf0CaGyKHUyVgF7oDnhKoP85Xv6M4StF/1AhfORhZudHtOyf2s+FcbuQ9dPRAjB8J2KvRRMUK2A==", - "dependencies": { - "@azure/abort-controller": "^2.1.2", - "@typespec/ts-http-runtime": "^0.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/core-util/node_modules/@azure/abort-controller": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/@azure/abort-controller/-/abort-controller-2.1.2.tgz", - "integrity": "sha512-nBrLsEWm4J2u5LpAPjxADTlq3trDgVZZXHNKabeXZtpq3d3AbN/KGO82R87rdDz5/lYB024rtEf10/q0urNgsA==", - "dependencies": { - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=18.0.0" - } - }, - "node_modules/@azure/identity": { - "version": "3.4.2", - "resolved": "https://registry.npmjs.org/@azure/identity/-/identity-3.4.2.tgz", - "integrity": "sha512-0q5DL4uyR0EZ4RXQKD8MadGH6zTIcloUoS/RVbCpNpej4pwte0xpqYxk8K97Py2RiuUvI7F4GXpoT4046VfufA==", - "dependencies": { - "@azure/abort-controller": "^1.0.0", - "@azure/core-auth": "^1.5.0", - "@azure/core-client": "^1.4.0", - "@azure/core-rest-pipeline": "^1.1.0", - "@azure/core-tracing": "^1.0.0", - "@azure/core-util": "^1.6.1", - "@azure/logger": "^1.0.0", - "@azure/msal-browser": "^3.5.0", - "@azure/msal-node": "^2.5.1", - "events": "^3.0.0", - "jws": "^4.0.0", - "open": "^8.0.0", - "stoppable": "^1.1.0", - "tslib": "^2.2.0" - }, - "engines": { - "node": ">=14.0.0" - } - }, - "node_modules/@azure/identity/node_modules/jwa": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-2.0.1.tgz", - "integrity": "sha512-hRF04fqJIP8Abbkq5NKGN0Bbr3JxlQ+qhZufXVr0DvujKy93ZCbXZMHDL4EOtodSbCWxOqR8MS1tXA5hwqCXDg==", - "dependencies": { - "buffer-equal-constant-time": "^1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@azure/identity/node_modules/jws": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/jws/-/jws-4.0.0.tgz", - "integrity": "sha512-KDncfTmOZoOMTFG4mBlG0qUIOlc03fmzH+ru6RgYVZhPkyiy/92Owlt/8UEN+a4TXR1FQetfIpJE8ApdvdVxTg==", - "dependencies": { - "jwa": "^2.0.0", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/@azure/logger": { - "version": "1.3.0", - "resolved": "https://registry.npmjs.org/@azure/logger/-/logger-1.3.0.tgz", - "integrity": "sha512-fCqPIfOcLE+CGqGPd66c8bZpwAji98tZ4JI9i/mlTNTlsIWslCfpg48s/ypyLxZTump5sypjrKn2/kY7q8oAbA==", - "dependencies": { - "@typespec/ts-http-runtime": "^0.3.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@azure/msal-browser": { - "version": "3.30.0", - "resolved": "https://registry.npmjs.org/@azure/msal-browser/-/msal-browser-3.30.0.tgz", - "integrity": "sha512-I0XlIGVdM4E9kYP5eTjgW8fgATdzwxJvQ6bm2PNiHaZhEuUz47NYw1xHthC9R+lXz4i9zbShS0VdLyxd7n0GGA==", - "dependencies": { - "@azure/msal-common": "14.16.1" - }, - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-browser/node_modules/@azure/msal-common": { - "version": "14.16.1", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.16.1.tgz", - "integrity": "sha512-nyxsA6NA4SVKh5YyRpbSXiMr7oQbwark7JU9LMeg6tJYTSPyAGkdx61wPT4gyxZfxlSxMMEyAsWaubBlNyIa1w==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-common": { - "version": "13.3.1", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-13.3.1.tgz", - "integrity": "sha512-Lrk1ozoAtaP/cp53May3v6HtcFSVxdFrg2Pa/1xu5oIvsIwhxW6zSPibKefCOVgd5osgykMi5jjcZHv8XkzZEQ==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-node": { - "version": "2.16.3", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.16.3.tgz", - "integrity": "sha512-CO+SE4weOsfJf+C5LM8argzvotrXw252/ZU6SM2Tz63fEblhH1uuVaaO4ISYFuN4Q6BhTo7I3qIdi8ydUQCqhw==", - "dependencies": { - "@azure/msal-common": "14.16.1", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/@azure/msal-node/node_modules/@azure/msal-common": { - "version": "14.16.1", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.16.1.tgz", - "integrity": "sha512-nyxsA6NA4SVKh5YyRpbSXiMr7oQbwark7JU9LMeg6tJYTSPyAGkdx61wPT4gyxZfxlSxMMEyAsWaubBlNyIa1w==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/@azure/msal-node/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/@colors/colors": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/@colors/colors/-/colors-1.5.0.tgz", @@ -341,32 +100,6 @@ "node": ">=14" } }, - "node_modules/@types/jsonwebtoken": { - "version": "8.5.9", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", - "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==", - "dependencies": { - "@types/node": "*" - } - }, - "node_modules/@types/mocha": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", - "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==" - }, - "node_modules/@types/node": { - "version": "20.19.24", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.19.24.tgz", - "integrity": "sha512-FE5u0ezmi6y9OZEzlJfg37mqqf6ZDSF2V/NLjUyGrR9uTZ7Sb9F7bLNZ03S4XVUNRWGA7Ck4c1kK+YnuWjl+DA==", - "dependencies": { - "undici-types": "~6.21.0" - } - }, - "node_modules/@types/q": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", - "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" - }, "node_modules/@types/semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-5.5.0.tgz", @@ -377,39 +110,6 @@ "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.13.tgz", "integrity": "sha512-pAeZeUbLE4Z9Vi9wsWV2bYPTweEHeJJy0G4pEjOA/FSvy1Ad5U5Km8iDV6TKre1mjBiVNfAdVHKruP8bAh4Q5A==" }, - "node_modules/@typespec/ts-http-runtime": { - "version": "0.3.1", - "resolved": "https://registry.npmjs.org/@typespec/ts-http-runtime/-/ts-http-runtime-0.3.1.tgz", - "integrity": "sha512-SnbaqayTVFEA6/tYumdF0UmybY0KHyKwGPBXnyckFlrrKdhWFrL3a2HIPXHjht5ZOElKGcXfD2D63P36btb+ww==", - "dependencies": { - "http-proxy-agent": "^7.0.0", - "https-proxy-agent": "^7.0.0", - "tslib": "^2.6.2" - }, - "engines": { - "node": ">=20.0.0" - } - }, - "node_modules/@typespec/ts-http-runtime/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "engines": { - "node": ">= 14" - } - }, - "node_modules/@typespec/ts-http-runtime/node_modules/https-proxy-agent": { - "version": "7.0.6", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.6.tgz", - "integrity": "sha512-vK9P5/iUfdl95AI+JVyUuIcVtd4ofvtrOr3HNtM2yxC9bnMbEdp3x01OhQNnjb8IJYi38VlTE3mBXwcfvywuSw==", - "dependencies": { - "agent-base": "^7.1.2", - "debug": "4" - }, - "engines": { - "node": ">= 14" - } - }, "node_modules/abort-controller": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/abort-controller/-/abort-controller-3.0.0.tgz", @@ -682,14 +382,6 @@ "node": ">= 0.4" } }, - "node_modules/async-mutex": { - "version": "0.4.1", - "resolved": "https://registry.npmjs.org/async-mutex/-/async-mutex-0.4.1.tgz", - "integrity": "sha512-WfoBo4E/TbCX1G95XTjbWTE3X2XLG0m1Xbv2cwOtuPdyH9CZvnaA5nCt1ucjaKEgW2A5IF71hxrRhr83Je5xjA==", - "dependencies": { - "tslib": "^2.4.0" - } - }, "node_modules/available-typed-arrays": { "version": "1.0.7", "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", @@ -749,75 +441,6 @@ "uuid": "^3.0.1" } }, - "node_modules/azure-pipelines-tasks-azure-arm-rest": { - "version": "3.263.1", - "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-azure-arm-rest/-/azure-pipelines-tasks-azure-arm-rest-3.263.1.tgz", - "integrity": "sha512-19HPDiU1aHpeqe1BQMucjZhkYKM/rHXr5dGmOLIf4toEw2MwsJmtXA4nPFsfVRX/VkBzdgrn7/XRyfT4UfXWcw==", - "license": "MIT", - "dependencies": { - "@azure/identity": "^3.4.2", - "@types/jsonwebtoken": "^8.5.8", - "@types/mocha": "^5.2.7", - "@types/node": "^10.17.0", - "@types/q": "1.5.4", - "async-mutex": "^0.4.0", - "azure-devops-node-api": "^14.0.1", - "azure-pipelines-task-lib": "^4.11.0", - "https-proxy-agent": "^4.0.0", - "jsonwebtoken": "^9.0.0", - "msalv1": "npm:@azure/msal-node@^1.18.4", - "msalv2": "npm:@azure/msal-node@^2.7.0", - "msalv3": "npm:@azure/msal-node@^3.5.3", - "node-fetch": "^2.6.7", - "q": "1.5.1", - "typed-rest-client": "^2.0.1", - "xml2js": "0.6.2" - } - }, - "node_modules/azure-pipelines-tasks-azure-arm-rest/node_modules/@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==", - "license": "MIT" - }, - "node_modules/azure-pipelines-tasks-azure-arm-rest/node_modules/agent-base": { - "version": "5.1.1", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-5.1.1.tgz", - "integrity": "sha512-TMeqbNl2fMW0nMjTEPOwe3J/PRFP4vqeoNuQMG0HlMrtm5QxKqdvAkZ1pRBQ/ulIyDD5Yq0nJ7YbdD8ey0TO3g==", - "license": "MIT", - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/azure-pipelines-tasks-azure-arm-rest/node_modules/https-proxy-agent": { - "version": "4.0.0", - "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-4.0.0.tgz", - "integrity": "sha512-zoDhWrkR3of1l9QAL8/scJZyLu8j/gBkcwcaQOZh7Gyh/+uJQzGVETdgT30akuwkpL8HTRfssqI3BZuV18teDg==", - "license": "MIT", - "dependencies": { - "agent-base": "5", - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/azure-pipelines-tasks-azure-arm-rest/node_modules/typed-rest-client": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-2.1.0.tgz", - "integrity": "sha512-Nel9aPbgSzRxfs1+4GoSB4wexCF+4Axlk7OSGVQCMa+4fWcyxIsN/YNmkp0xTT2iQzMD98h8yFLav/cNaULmRA==", - "license": "MIT", - "dependencies": { - "des.js": "^1.1.0", - "js-md4": "^0.3.2", - "qs": "^6.10.3", - "tunnel": "0.0.6", - "underscore": "^1.12.1" - }, - "engines": { - "node": ">= 16.0.0" - } - }, "node_modules/azure-pipelines-tool-lib": { "version": "2.0.10", "resolved": "https://registry.npmjs.org/azure-pipelines-tool-lib/-/azure-pipelines-tool-lib-2.0.10.tgz", @@ -935,12 +558,6 @@ "node": ">=8.0.0" } }, - "node_modules/buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==", - "license": "BSD-3-Clause" - }, "node_modules/call-bind": { "version": "1.0.8", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.8.tgz", @@ -1256,14 +873,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/define-lazy-prop": { - "version": "2.0.0", - "resolved": "https://registry.npmjs.org/define-lazy-prop/-/define-lazy-prop-2.0.0.tgz", - "integrity": "sha512-Ds09qNh8yw3khSjiJjiUInaGX9xlqZDY7JVryGxdxV7NPeuqQfplOpQ66yJFZut3jLa5zOwkXw1g9EI2uKh4Og==", - "engines": { - "node": ">=8" - } - }, "node_modules/define-properties": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", @@ -1310,15 +919,6 @@ "resolved": "https://registry.npmjs.org/eastasianwidth/-/eastasianwidth-0.2.0.tgz", "integrity": "sha512-I88TYZWc9XiYHRQ4/3c5rjjfgkjhLyW2luGIheGERbNQ6OY7yTybanSpDXZa8y7VUP9YmDcYa+eyq4ca7iLqWA==" }, - "node_modules/ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "license": "Apache-2.0", - "dependencies": { - "safe-buffer": "^5.0.1" - } - }, "node_modules/emoji-regex": { "version": "9.2.2", "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", @@ -1602,20 +1202,6 @@ "url": "https://github.com/sponsors/isaacs" } }, - "node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -1874,26 +1460,6 @@ "node": ">= 0.4" } }, - "node_modules/http-proxy-agent": { - "version": "7.0.2", - "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", - "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", - "dependencies": { - "agent-base": "^7.1.0", - "debug": "^4.3.4" - }, - "engines": { - "node": ">= 14" - } - }, - "node_modules/http-proxy-agent/node_modules/agent-base": { - "version": "7.1.4", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.4.tgz", - "integrity": "sha512-MnA+YT8fwfJPgBx3m60MNqakm30XOkyIoH1y6huTQvC0PwZG7ki8NacLBcrPbNoo8vEZy7Jpuk7+jMO+CUovTQ==", - "engines": { - "node": ">= 14" - } - }, "node_modules/https-proxy-agent": { "version": "5.0.1", "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-5.0.1.tgz", @@ -2478,51 +2044,6 @@ "integrity": "sha512-kdpvcH1gqYXQEAVFxVwIWZKihrS0o9SjbwW2v8+0p6HA/YSMk5c4BkXdMiz/kDz2QW0XlOSkFKrJsC9KL0Mb5g==", "license": "ISC" }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/jsonwebtoken": { - "version": "9.0.2", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", - "integrity": "sha512-PRp66vJ865SSqOlgqS8hujT5U4AOgMfhrwYIuIhfKaoSCZcirrmASQr8CX7cUg+RMih+hgznrjp99o+W4pJLHQ==", - "license": "MIT", - "dependencies": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^7.5.4" - }, - "engines": { - "node": ">=12", - "npm": ">=6" - } - }, - "node_modules/jsonwebtoken/node_modules/semver": { - "version": "7.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-7.7.2.tgz", - "integrity": "sha512-RF0Fw+rO5AMf9MAyaRXI4AV0Ulj5lMHqVxxdSgiVbixSCXoEmmX/jk0CuJw4+3SqroYO9VoUh+HcuJivvtJemA==", - "license": "ISC", - "bin": { - "semver": "bin/semver.js" - }, - "engines": { - "node": ">=10" - } - }, "node_modules/jszip": { "version": "3.10.1", "resolved": "https://registry.npmjs.org/jszip/-/jszip-3.10.1.tgz", @@ -2535,27 +2056,6 @@ "setimmediate": "^1.0.5" } }, - "node_modules/jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "license": "MIT", - "dependencies": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "node_modules/jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "license": "MIT", - "dependencies": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, "node_modules/lazystream": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/lazystream/-/lazystream-1.0.1.tgz", @@ -2582,48 +2082,6 @@ "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==", "license": "MIT" }, - "node_modules/lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==", - "license": "MIT" - }, - "node_modules/lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==", - "license": "MIT" - }, - "node_modules/lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==", - "license": "MIT" - }, - "node_modules/lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==", - "license": "MIT" - }, - "node_modules/lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==", - "license": "MIT" - }, - "node_modules/lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==", - "license": "MIT" - }, - "node_modules/lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==", - "license": "MIT" - }, "node_modules/lru-cache": { "version": "10.4.3", "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-10.4.3.tgz", @@ -2758,119 +2216,12 @@ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" }, - "node_modules/msalv1": { - "name": "@azure/msal-node", - "version": "1.18.4", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-1.18.4.tgz", - "integrity": "sha512-Kc/dRvhZ9Q4+1FSfsTFDME/v6+R2Y1fuMty/TfwqE5p9GTPw08BPbKgeWinE8JRHRp+LemjQbUZsn4Q4l6Lszg==", - "deprecated": "A newer major version of this library is available. Please upgrade to the latest available version.", - "license": "MIT", - "dependencies": { - "@azure/msal-common": "13.3.1", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": "10 || 12 || 14 || 16 || 18" - } - }, - "node_modules/msalv1/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/msalv2": { - "name": "@azure/msal-node", - "version": "2.16.2", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-2.16.2.tgz", - "integrity": "sha512-An7l1hEr0w1HMMh1LU+rtDtqL7/jw74ORlc9Wnh06v7TU/xpG39/Zdr1ZJu3QpjUfKJ+E0/OXMW8DRSWTlh7qQ==", - "license": "MIT", - "dependencies": { - "@azure/msal-common": "14.16.0", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/msalv2/node_modules/@azure/msal-common": { - "version": "14.16.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-14.16.0.tgz", - "integrity": "sha512-1KOZj9IpcDSwpNiQNjt0jDYZpQvNZay7QAEi/5DLubay40iGYtLzya/jbjRPLyOTZhEKyL1MzPuw2HqBCjceYA==", - "license": "MIT", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/msalv2/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "license": "MIT", - "bin": { - "uuid": "dist/bin/uuid" - } - }, - "node_modules/msalv3": { - "name": "@azure/msal-node", - "version": "3.7.4", - "resolved": "https://registry.npmjs.org/@azure/msal-node/-/msal-node-3.7.4.tgz", - "integrity": "sha512-fjqvhrThwzzPvqhFOdkkGRJCHPQZTNijpceVy8QjcfQuH482tOVEjHyamZaioOhVtx+FK1u+eMpJA2Zz4U9LVg==", - "dependencies": { - "@azure/msal-common": "15.12.0", - "jsonwebtoken": "^9.0.0", - "uuid": "^8.3.0" - }, - "engines": { - "node": ">=16" - } - }, - "node_modules/msalv3/node_modules/@azure/msal-common": { - "version": "15.12.0", - "resolved": "https://registry.npmjs.org/@azure/msal-common/-/msal-common-15.12.0.tgz", - "integrity": "sha512-4ucXbjVw8KJ5QBgnGJUeA07c8iznwlk5ioHIhI4ASXcXgcf2yRFhWzYOyWg/cI49LC9ekpFJeQtO3zjDTbl6TQ==", - "engines": { - "node": ">=0.8.0" - } - }, - "node_modules/msalv3/node_modules/uuid": { - "version": "8.3.2", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-8.3.2.tgz", - "integrity": "sha512-+NYs2QeMWy+GWFOEm9xnn6HCDp0l7QBD7ml8zLUmJ+93Q5NF0NocErnwkTkXVFNiX3/fpC6afS8Dhb/gz7R7eg==", - "bin": { - "uuid": "dist/bin/uuid" - } - }, "node_modules/mute-stream": { "version": "0.0.8", "resolved": "https://registry.npmjs.org/mute-stream/-/mute-stream-0.0.8.tgz", "integrity": "sha512-nnbWWOkoWyUsTjKrhgD0dcz22mdkSnpYqbEjIm2nhwhuxlSkpywJmBo8h0ZqJdkp73mb90SssHkN4rsRaBAfAA==", "license": "ISC" }, - "node_modules/node-fetch": { - "version": "2.7.0", - "resolved": "https://registry.npmjs.org/node-fetch/-/node-fetch-2.7.0.tgz", - "integrity": "sha512-c4FRfUm/dbcWZ7U+1Wq0AwCyFL+3nt2bEw05wfxSz+DWpWsitgmSgYmy2dQdWyKC1694ELPqMs/YzUSNozLt8A==", - "dependencies": { - "whatwg-url": "^5.0.0" - }, - "engines": { - "node": "4.x || >=6.0.0" - }, - "peerDependencies": { - "encoding": "^0.1.0" - }, - "peerDependenciesMeta": { - "encoding": { - "optional": true - } - } - }, "node_modules/nodejs-file-downloader": { "version": "4.12.1", "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.12.1.tgz", @@ -3010,47 +2361,6 @@ "url": "https://github.com/sponsors/sindresorhus" } }, - "node_modules/open": { - "version": "8.4.2", - "resolved": "https://registry.npmjs.org/open/-/open-8.4.2.tgz", - "integrity": "sha512-7x81NCL719oNbsq/3mh+hVrAWmFuEYUqrq/Iw3kUzH8ReypT9QQ0BLoJS7/G9k6N81XjW4qHWtjWwe/9eLy1EQ==", - "dependencies": { - "define-lazy-prop": "^2.0.0", - "is-docker": "^2.1.1", - "is-wsl": "^2.2.0" - }, - "engines": { - "node": ">=12" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open/node_modules/is-docker": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/is-docker/-/is-docker-2.2.1.tgz", - "integrity": "sha512-F+i2BKsFrH66iaUFc0woD8sLy8getkwTwtOBjvs56Cx4CgJDeKQeqfz8wAYiSb8JOprWhHH5p77PbmYCvvUuXQ==", - "bin": { - "is-docker": "cli.js" - }, - "engines": { - "node": ">=8" - }, - "funding": { - "url": "https://github.com/sponsors/sindresorhus" - } - }, - "node_modules/open/node_modules/is-wsl": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/is-wsl/-/is-wsl-2.2.0.tgz", - "integrity": "sha512-fKzAra0rGJUUBwGBgNkHZuToZcn+TtXHpeCgmkMJMMYx1sQDYaCSyjJBSCa2nH1DGm7s3n1oBnohoVTBaN7Lww==", - "dependencies": { - "is-docker": "^2.0.0" - }, - "engines": { - "node": ">=8" - } - }, "node_modules/os-homedir": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz", @@ -3696,15 +3006,6 @@ "node": ">= 0.4" } }, - "node_modules/stoppable": { - "version": "1.1.0", - "resolved": "https://registry.npmjs.org/stoppable/-/stoppable-1.1.0.tgz", - "integrity": "sha512-KXDYZ9dszj6bzvnEMRYvxgeTHU74QBFL54XKtP3nyMuJ81CFYtABZ3bAzL2EdFUaEwJOBOgENyFj3R7oTzDyyw==", - "engines": { - "node": ">=4", - "npm": ">=6" - } - }, "node_modules/streamx": { "version": "2.23.0", "resolved": "https://registry.npmjs.org/streamx/-/streamx-2.23.0.tgz", @@ -4201,11 +3502,6 @@ "node": ">=8.0" } }, - "node_modules/tr46": { - "version": "0.0.3", - "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", - "integrity": "sha512-N3WMsuqV66lT30CrXNbEjx4GEwlow3v6rr4mCcv6prnfwhS01rkgyFdjPNBYd9br7LpXV1+Emh01fHnq2Gdgrw==" - }, "node_modules/tracer": { "version": "0.7.4", "resolved": "https://registry.npmjs.org/tracer/-/tracer-0.7.4.tgz", @@ -4237,11 +3533,6 @@ "utf8-byte-length": "^1.0.1" } }, - "node_modules/tslib": { - "version": "2.6.2", - "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.6.2.tgz", - "integrity": "sha512-AEYxH93jGFPn/a2iVAwW87VuUIkR1FVUKB77NwMF7nBTDkDrrT/Hpt/IrCJ0QXhW27jTBDcf5ZY7w6RiqTMw2Q==" - }, "node_modules/tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", @@ -4357,20 +3648,6 @@ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" }, - "node_modules/undici-types": { - "version": "6.21.0", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.21.0.tgz", - "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", - "license": "MIT" - }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/utf8-byte-length": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", @@ -4431,20 +3708,6 @@ "node": ">= 0.10" } }, - "node_modules/webidl-conversions": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/webidl-conversions/-/webidl-conversions-3.0.1.tgz", - "integrity": "sha512-2JAn3z8AR6rjK8Sm8orRC0h/bcl/DqL7tRPdGZ4I1CjdF+EaMLmYxBHyXuKL849eucPFhvBoxMsflfOb8kxaeQ==" - }, - "node_modules/whatwg-url": { - "version": "5.0.0", - "resolved": "https://registry.npmjs.org/whatwg-url/-/whatwg-url-5.0.0.tgz", - "integrity": "sha512-saE57nupxk6v3HY35+jzBwYa0rKSy0XR8JSxZPwgLr7ys0IBzhGviA1/TUGJLmSVqs8pb9AnvICXEuOHLprYTw==", - "dependencies": { - "tr46": "~0.0.3", - "webidl-conversions": "^3.0.0" - } - }, "node_modules/which": { "version": "2.0.2", "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", @@ -4672,18 +3935,6 @@ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" }, - "node_modules/xml2js": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/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://registry.npmjs.org/xmlbuilder/-/xmlbuilder-11.0.1.tgz", diff --git a/BuildTasks/TfxInstaller/v5/package.json b/BuildTasks/TfxInstaller/package.json similarity index 81% rename from BuildTasks/TfxInstaller/v5/package.json rename to BuildTasks/TfxInstaller/package.json index a56b8ebf..91501359 100644 --- a/BuildTasks/TfxInstaller/v5/package.json +++ b/BuildTasks/TfxInstaller/package.json @@ -10,11 +10,8 @@ "license": "MIT", "dependencies": { "azure-pipelines-task-lib": "^4.17.3", - "azure-pipelines-tasks-azure-arm-rest": "^3.263.1", "azure-pipelines-tool-lib": "^2.0.10", - "fs-extra": "^11.3.2", "tfx-cli": "^0.22.2", - "tmp": "^0.2.5", "uuidv5": "^1.0.0" } } diff --git a/BuildTasks/TfxInstaller/v5/task.json b/BuildTasks/TfxInstaller/task.json similarity index 93% rename from BuildTasks/TfxInstaller/v5/task.json rename to BuildTasks/TfxInstaller/task.json index 09a5b9e4..e159c211 100644 --- a/BuildTasks/TfxInstaller/v5/task.json +++ b/BuildTasks/TfxInstaller/task.json @@ -52,11 +52,11 @@ ], "execution": { "Node20_1": { - "target": "TfxInstaller/v5/TfxInstaller.js", + "target": "TfxInstaller/TfxInstaller.js", "argumentFormat": "" }, "Node16": { - "target": "TfxInstaller/v5/TfxInstaller.js", + "target": "TfxInstaller/TfxInstaller.js", "argumentFormat": "" } } diff --git a/BuildTasks/TfxInstaller/v5/tsconfig.json b/BuildTasks/TfxInstaller/tsconfig.json similarity index 76% rename from BuildTasks/TfxInstaller/v5/tsconfig.json rename to BuildTasks/TfxInstaller/tsconfig.json index 4acefe76..8985bb3f 100644 --- a/BuildTasks/TfxInstaller/v5/tsconfig.json +++ b/BuildTasks/TfxInstaller/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.v5.json", + "extends": "../tsconfig.v5.json", "compilerOptions": { "outDir": "./", "sourceRoot": "./" diff --git a/BuildTasks/TfxInstaller/v4/TfxInstaller.ts b/BuildTasks/TfxInstaller/v4/TfxInstaller.ts deleted file mode 100644 index 1cfb44e7..00000000 --- a/BuildTasks/TfxInstaller/v4/TfxInstaller.ts +++ /dev/null @@ -1,112 +0,0 @@ -import * as tr from 'azure-pipelines-task-lib/toolrunner'; - -import * as taskLib from 'azure-pipelines-task-lib/task'; -import * as toolLib from 'azure-pipelines-tool-lib/tool'; - -import * as path from 'path'; -import * as os from 'os'; -import * as fs from 'fs'; - -const debug = taskLib.getVariable("system.debug") || false; - -async function run() -{ - try { - const version = taskLib.getInput("version", true); - const checkLatest = taskLib.getBoolInput("checkLatest", false) || false; - - await getTfx(version, checkLatest); - await taskLib.tool("tfx").arg(["version", "--no-color"]).execAsync(); - } - catch (error: any) { - taskLib.setResult(taskLib.TaskResult.Failed, error.message); - } -} - -async function getTfx(versionSpec: string, checkLatest: boolean) { - if (toolLib.isExplicitVersion(versionSpec)) { - checkLatest = false; // check latest doesn't make sense when explicit version - } - - let toolPath: string; - if (!checkLatest) { - toolPath = toolLib.findLocalTool('tfx', versionSpec); - } - - if (!toolPath) { - let version: string; - if (toolLib.isExplicitVersion(versionSpec)) { - version = versionSpec; - } - else { - version = queryLatestMatch(versionSpec); - if (!version) { - throw new Error(`Unable to find Tfx version '${versionSpec}'`); - } - - toolPath = toolLib.findLocalTool('tfx', version); - } - - if (!toolPath) { - toolPath = await acquireTfx(version); - } - } - - if (os.platform() !== "win32") - { - // Depending on target platform npm behaves slightly different. This seems to differ between distros and npm versions too. - const probePaths = [toolPath, path.join(toolPath, "/bin"), path.join(toolPath, "/node_modules/.bin/")]; - toolPath = probePaths.find((probePath) => { - return taskLib.exist(path.join(probePath, "/tfx")); - }); - } - - taskLib.setVariable("__tfxpath", toolPath, false); - toolLib.prependPath(toolPath); -} - -function queryLatestMatch(versionSpec: string): string { - const npmRunner = new tr.ToolRunner("npm"); - npmRunner.arg(["show", "tfx-cli", "versions", "--json"]); - const result = npmRunner.execSync({ failOnStdErr: false, silent: !debug, ignoreReturnCode: false} as tr.IExecOptions); - if (result.code === 0) - { - const versions: string[] = JSON.parse(result.stdout.trim()); - const version: string = toolLib.evaluateVersions(versions, versionSpec); - return version; - } - return ""; -} - -async function acquireTfx(version: string): Promise { - try{ - version = toolLib.cleanVersion(version); - - let extPath: string; - taskLib.assertAgent('2.115.0'); - extPath = taskLib.getVariable('Agent.TempDirectory'); - if (!extPath) { - throw new Error('Expected Agent.TempDirectory to be set'); - } - extPath = path.join(extPath, 'tfx'); // use as short a path as possible due to nested node_modules folders - - taskLib.mkdirP(path.join(extPath)); - const npmRunner = new tr.ToolRunner("npm"); - npmRunner.arg(["install", "tfx-cli@" + version, "-g", "--prefix", extPath, '--no-fund']); - - const result = npmRunner.execSync({ failOnStdErr: false, silent: !debug, ignoreReturnCode: false} as tr.IExecOptions); - if (result.code === 0) - { - if (os.platform() === "win32") - { - fs.unlinkSync(path.join(extPath, "/tfx")); - } - return await toolLib.cacheDir(extPath, 'tfx', version); - } - } - catch { - return Promise.reject(new Error("Failed to install tfx")); - } -} - -void run(); \ No newline at end of file diff --git a/BuildTasks/TfxInstaller/v4/package-lock.json b/BuildTasks/TfxInstaller/v4/package-lock.json deleted file mode 100644 index 5e4c854e..00000000 --- a/BuildTasks/TfxInstaller/v4/package-lock.json +++ /dev/null @@ -1,447 +0,0 @@ -{ - "name": "vsts-developer-tools.tfxinstallerv4", - "version": "4.3.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "vsts-developer-tools.tfxinstallerv4", - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "azure-pipelines-task-lib": "^4.17.3", - "azure-pipelines-tool-lib": "^2.0.10", - "tmp": "^0.2.5" - }, - "devDependencies": {} - }, - "node_modules/@types/semver": { - "version": "5.5.0", - "license": "MIT" - }, - "node_modules/@types/uuid": { - "version": "3.4.9", - "license": "MIT" - }, - "node_modules/adm-zip": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", - "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/azure-pipelines-task-lib": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.17.3.tgz", - "integrity": "sha512-UxfH5pk3uOHTi9TtLtdDyugQVkFES5A836ZEePjcs3jYyxm3EJ6IlFYq6gbfd6mNBhrM9fxG2u/MFYIJ+Z0cxQ==", - "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-tool-lib": { - "version": "2.0.10", - "resolved": "https://registry.npmjs.org/azure-pipelines-tool-lib/-/azure-pipelines-tool-lib-2.0.10.tgz", - "integrity": "sha512-UiwgFUjbooyEpDQX/0eY6teTUjKXD5VDbe3USpLaFpjbzxI2/XglboA9fj86dQBFvMx6NVg0LKYtECflfYiJOQ==", - "license": "MIT", - "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/balanced-match": { - "version": "1.0.2", - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/call-bind": { - "version": "1.0.2", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/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", - "license": "ISC" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "license": "MIT" - }, - "node_modules/get-intrinsic": { - "version": "1.1.1", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.1.7", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/has": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/has-symbols": { - "version": "1.0.2", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/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/inflight": { - "version": "1.0.6", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "node_modules/interpret": { - "version": "1.4.0", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-core-module": { - "version": "2.4.0", - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/mime-db": { - "version": "1.48.0", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.31", - "license": "MIT", - "dependencies": { - "mime-db": "1.48.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.0.5", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/nodejs-file-downloader": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.12.1.tgz", - "integrity": "sha512-LpfCTNhh805AlLnJnzt1PuEj+RmbrccbAQZ6hBRw2e6QPVR0Qntuo6qqyvPHG5s77/0w0IEKgRAD4nbSnr/X4w==", - "dependencies": { - "follow-redirects": "^1.15.1", - "https-proxy-agent": "^5.0.0", - "mime-types": "^2.1.27", - "sanitize-filename": "^1.6.3" - } - }, - "node_modules/object-inspect": { - "version": "1.10.3", - "license": "MIT", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "license": "MIT" - }, - "node_modules/q": { - "version": "1.5.1", - "license": "MIT", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qs": { - "version": "6.11.0", - "license": "BSD-3-Clause", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/resolve": { - "version": "1.20.0", - "license": "MIT", - "dependencies": { - "is-core-module": "^2.2.0", - "path-parse": "^1.0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sanitize-filename": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", - "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", - "dependencies": { - "truncate-utf8-bytes": "^1.0.0" - } - }, - "node_modules/semver": { - "version": "5.7.2", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/semver-compare": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/shelljs": { - "version": "0.8.5", - "license": "BSD-3-Clause", - "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.4", - "license": "MIT", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/truncate-utf8-bytes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/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", - "license": "MIT", - "engines": { - "node": ">=0.6.11 <=0.7.0 || >=0.7.3" - } - }, - "node_modules/typed-rest-client": { - "version": "1.8.9", - "license": "MIT", - "dependencies": { - "qs": "^6.9.1", - "tunnel": "0.0.6", - "underscore": "^1.12.1" - } - }, - "node_modules/underscore": { - "version": "1.13.6", - "license": "MIT" - }, - "node_modules/utf8-byte-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" - }, - "node_modules/uuid": { - "version": "3.4.0", - "license": "MIT", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/wrappy": { - "version": "1.0.2", - "license": "ISC" - } - } -} diff --git a/BuildTasks/TfxInstaller/v4/package.json b/BuildTasks/TfxInstaller/v4/package.json deleted file mode 100644 index a6d8ac46..00000000 --- a/BuildTasks/TfxInstaller/v4/package.json +++ /dev/null @@ -1,17 +0,0 @@ -{ - "name": "vsts-developer-tools.tfxinstallerv4", - "version": "4.3.0", - "description": "Node CLI for Azure DevOps Installer Task", - "repository": { - "type": "git", - "url": "https://github.com/Microsoft/azure-devops-extension-tasks.git" - }, - "license": "MIT", - "dependencies": { - "azure-pipelines-task-lib": "^4.17.3", - "azure-pipelines-tool-lib": "^2.0.10", - "tmp": "^0.2.5" - }, - "devDependencies": { - } -} diff --git a/BuildTasks/TfxInstaller/v4/task.json b/BuildTasks/TfxInstaller/v4/task.json deleted file mode 100644 index e26283cb..00000000 --- a/BuildTasks/TfxInstaller/v4/task.json +++ /dev/null @@ -1,51 +0,0 @@ -{ - "id": "f7c56a03-d9d3-4019-b144-6283b88a66a8", - "name": "TfxInstaller", - "friendlyName": "Use Node CLI for Azure DevOps (tfx-cli)", - "description": "Installs the Node CLI for Azure DevOps (tfx-cli) on your agent.", - "author": "Microsoft Corporation", - "helpMarkDown": "", - "category": "Tool", - "version": { - "Major": 4, - "Minor": 4, - "Patch": 0 - }, - "visibility": [ - "Build", - "Release" - ], - "demands": [ - "npm" - ], - "preview": false, - "satisfies": [ "tfx-cli" ], - "minimumAgentVersion": "2.115.0", - "groups": [ - ], - "instanceNameFormat": "Use Node CLI for Azure DevOps (tfx-cli): $(version)", - "inputs": [ - { - "name": "version", - "type": "string", - "label": "Version", - "defaultValue": "v0.x", - "helpMarkDown": "Specify which `tfx-cli` version you want to use. Examples: `v0.9.x`, `>=v0.5.x`.", - "required": true - }, - { - "name": "checkLatest", - "type": "boolean", - "label": "Auto update", - "defaultValue": "true", - "required": false, - "helpMarkDown": "Automatically download the latest version." - } - ], - "execution": { - "Node16": { - "target": "TfxInstaller/v4/TfxInstaller.js", - "argumentFormat": "" - } - } -} diff --git a/BuildTasks/TfxInstaller/v4/tsconfig.json b/BuildTasks/TfxInstaller/v4/tsconfig.json deleted file mode 100644 index 7492265e..00000000 --- a/BuildTasks/TfxInstaller/v4/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.v4.json", - "compilerOptions": { - "outDir": "./", - "sourceRoot": "./" - }, - "files": [ - "TfxInstaller.ts" - ] - } \ No newline at end of file diff --git a/BuildTasks/TfxInstaller/v5/icon.png b/BuildTasks/TfxInstaller/v5/icon.png deleted file mode 100644 index 1faf17da..00000000 Binary files a/BuildTasks/TfxInstaller/v5/icon.png and /dev/null differ diff --git a/BuildTasks/UnpublishExtension/v5/UnpublishExtension.ts b/BuildTasks/UnpublishExtension/UnpublishExtension.ts similarity index 77% rename from BuildTasks/UnpublishExtension/v5/UnpublishExtension.ts rename to BuildTasks/UnpublishExtension/UnpublishExtension.ts index 7c515f91..3a584bf1 100644 --- a/BuildTasks/UnpublishExtension/v5/UnpublishExtension.ts +++ b/BuildTasks/UnpublishExtension/UnpublishExtension.ts @@ -1,11 +1,12 @@ import tl from "azure-pipelines-task-lib"; -import * as common from "../../Common/v5/Common.js"; +import * as common from "../Common/Common.js"; +import * as commonAuth from "../Common-Auth/CommonAuth.js"; await common.runTfx(async tfx => { try { tfx.arg(["extension", "unpublish", "--no-color"]); - await common.setTfxMarketplaceArguments(tfx); + await commonAuth.setTfxMarketplaceArguments(tfx); common.validateAndSetTfxManifestArguments(tfx); const result = await tfx.execAsync({ silent: false, failOnStdErr: false }); diff --git a/BuildTasks/UnpublishExtension/v4/icon.png b/BuildTasks/UnpublishExtension/icon.png similarity index 100% rename from BuildTasks/UnpublishExtension/v4/icon.png rename to BuildTasks/UnpublishExtension/icon.png diff --git a/BuildTasks/UnpublishExtension/v5/package-lock.json b/BuildTasks/UnpublishExtension/package-lock.json similarity index 96% rename from BuildTasks/UnpublishExtension/v5/package-lock.json rename to BuildTasks/UnpublishExtension/package-lock.json index 01b5a168..df5b476d 100644 --- a/BuildTasks/UnpublishExtension/v5/package-lock.json +++ b/BuildTasks/UnpublishExtension/package-lock.json @@ -11,8 +11,6 @@ "dependencies": { "azure-pipelines-task-lib": "^4.17.3", "azure-pipelines-tasks-azure-arm-rest": "^3.263.1", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", "uuidv5": "^1.0.0" }, "devDependencies": {} @@ -591,20 +589,6 @@ } } }, - "node_modules/fs-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", @@ -698,11 +682,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/graceful-fs": { - "version": "4.2.11", - "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", - "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" - }, "node_modules/has-symbols": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.1.0.tgz", @@ -823,17 +802,6 @@ "integrity": "sha512-/GDnfQYsltsjRswQhN9fhv3EMw2sCpUdrdxyWDOUK7eyD++r3gRhzgiQgc/x4MAv2i1iuQ4lxO5mvqM3vj4bwA==", "license": "MIT" }, - "node_modules/jsonfile": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", - "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, "node_modules/jsonwebtoken": { "version": "9.0.2", "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-9.0.2.tgz", @@ -1348,15 +1316,6 @@ "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, "node_modules/tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -1412,14 +1371,6 @@ "integrity": "sha512-iwDZqg0QAGrg9Rav5H4n0M64c3mkR59cJ6wQp+7C4nI0gsmExaedaYLNO44eT4AtBBwjbTiGPMlt2Md0T9H9JQ==", "license": "MIT" }, - "node_modules/universalify": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", - "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", - "engines": { - "node": ">= 10.0.0" - } - }, "node_modules/utf8-byte-length": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", diff --git a/BuildTasks/UnpublishExtension/v5/package.json b/BuildTasks/UnpublishExtension/package.json similarity index 90% rename from BuildTasks/UnpublishExtension/v5/package.json rename to BuildTasks/UnpublishExtension/package.json index c2e80d96..2f283106 100644 --- a/BuildTasks/UnpublishExtension/v5/package.json +++ b/BuildTasks/UnpublishExtension/package.json @@ -11,8 +11,6 @@ "dependencies": { "azure-pipelines-task-lib": "^4.17.3", "azure-pipelines-tasks-azure-arm-rest": "^3.263.1", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", "uuidv5": "^1.0.0" }, "devDependencies": { diff --git a/BuildTasks/UnpublishExtension/v5/task.json b/BuildTasks/UnpublishExtension/task.json similarity index 97% rename from BuildTasks/UnpublishExtension/v5/task.json rename to BuildTasks/UnpublishExtension/task.json index 843be374..cd3a40aa 100644 --- a/BuildTasks/UnpublishExtension/v5/task.json +++ b/BuildTasks/UnpublishExtension/task.json @@ -144,11 +144,11 @@ ], "execution": { "Node20_1": { - "target": "UnpublishExtension/v5/UnpublishExtension.js", + "target": "UnpublishExtension/UnpublishExtension.js", "argumentFormat": "" }, "Node16": { - "target": "UnpublishExtension/v5/UnpublishExtension.js", + "target": "UnpublishExtension/UnpublishExtension.js", "argumentFormat": "" } }, diff --git a/BuildTasks/UnpublishExtension/v5/tsconfig.json b/BuildTasks/UnpublishExtension/tsconfig.json similarity index 77% rename from BuildTasks/UnpublishExtension/v5/tsconfig.json rename to BuildTasks/UnpublishExtension/tsconfig.json index 1e89c1ed..bd8cb7ed 100644 --- a/BuildTasks/UnpublishExtension/v5/tsconfig.json +++ b/BuildTasks/UnpublishExtension/tsconfig.json @@ -1,5 +1,5 @@ { - "extends": "../../tsconfig.v5.json", + "extends": "../tsconfig.v5.json", "compilerOptions": { "outDir": "./", "sourceRoot": "./" diff --git a/BuildTasks/UnpublishExtension/v4/UnpublishExtension.ts b/BuildTasks/UnpublishExtension/v4/UnpublishExtension.ts deleted file mode 100644 index 168304ee..00000000 --- a/BuildTasks/UnpublishExtension/v4/UnpublishExtension.ts +++ /dev/null @@ -1,23 +0,0 @@ -import * as tl from "azure-pipelines-task-lib/task"; -import * as common from "../../Common/v4/Common"; - -async function run() { - await common.runTfx(tfx => { - try { - tfx.arg(["extension", "unpublish", "--no-color"]); - - common.setTfxMarketplaceArguments(tfx); - common.validateAndSetTfxManifestArguments(tfx); - - const result = tfx.execSync({ silent: false, failOnStdErr: false }); - if (result.code != 0) { - tl.setResult(tl.TaskResult.Failed, "Failed"); - } - tl.setResult(tl.TaskResult.Succeeded, "Unpublished"); - } catch (err) { - tl.setResult(tl.TaskResult.Failed, `Failed: ${err}`); - } - }); -} - -void run(); \ No newline at end of file diff --git a/BuildTasks/UnpublishExtension/v4/package-lock.json b/BuildTasks/UnpublishExtension/v4/package-lock.json deleted file mode 100644 index 6ee94c7f..00000000 --- a/BuildTasks/UnpublishExtension/v4/package-lock.json +++ /dev/null @@ -1,389 +0,0 @@ -{ - "name": "vsts-developer-tools.unpublishextensionv4", - "version": "4.3.0", - "lockfileVersion": 3, - "requires": true, - "packages": { - "": { - "name": "vsts-developer-tools.unpublishextensionv4", - "version": "4.3.0", - "license": "MIT", - "dependencies": { - "azure-pipelines-task-lib": "^4.17.3", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", - "uuidv5": "^1.0.0" - }, - "devDependencies": {} - }, - "node_modules/adm-zip": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", - "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/azure-pipelines-task-lib": { - "version": "4.17.3", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.17.3.tgz", - "integrity": "sha512-UxfH5pk3uOHTi9TtLtdDyugQVkFES5A836ZEePjcs3jYyxm3EJ6IlFYq6gbfd6mNBhrM9fxG2u/MFYIJ+Z0cxQ==", - "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/balanced-match": { - "version": "1.0.0", - "license": "MIT" - }, - "node_modules/brace-expansion": { - "version": "1.1.12", - "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.12.tgz", - "integrity": "sha512-9T9UjW3r0UW5c1Q7GTwllptXwhvYmEzFhzMfZ9H7FQWt+uZePjZPjBP/W1ZEyZ1twGWom5/56TF4lPcqjnDHcg==", - "license": "MIT", - "dependencies": { - "balanced-match": "^1.0.0", - "concat-map": "0.0.1" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "license": "MIT" - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/follow-redirects": { - "version": "1.15.6", - "resolved": "https://registry.npmjs.org/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-extra": { - "version": "11.3.2", - "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.3.2.tgz", - "integrity": "sha512-Xr9F6z6up6Ws+NjzMCZc6WXg2YFRlrLP9NQDO3VQrWrfiojdhS56TzueT88ze0uBdCTwEIhQ3ptnmKeWGFAe0A==", - "license": "MIT", - "dependencies": { - "graceful-fs": "^4.2.0", - "jsonfile": "^6.0.1", - "universalify": "^2.0.0" - }, - "engines": { - "node": ">=14.14" - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/function-bind": { - "version": "1.1.1", - "license": "MIT" - }, - "node_modules/glob": { - "version": "7.2.0", - "license": "ISC", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.0.4", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/graceful-fs": { - "version": "4.2.10", - "license": "ISC" - }, - "node_modules/has": { - "version": "1.0.3", - "license": "MIT", - "dependencies": { - "function-bind": "^1.1.1" - }, - "engines": { - "node": ">= 0.4.0" - } - }, - "node_modules/https-proxy-agent": { - "version": "5.0.1", - "resolved": "https://registry.npmjs.org/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/inflight": { - "version": "1.0.6", - "license": "ISC", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "license": "ISC" - }, - "node_modules/interpret": { - "version": "1.4.0", - "license": "MIT", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-core-module": { - "version": "2.8.1", - "license": "MIT", - "dependencies": { - "has": "^1.0.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/jsonfile": { - "version": "6.1.0", - "license": "MIT", - "dependencies": { - "universalify": "^2.0.0" - }, - "optionalDependencies": { - "graceful-fs": "^4.1.6" - } - }, - "node_modules/mime-db": { - "version": "1.51.0", - "license": "MIT", - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/mime-types": { - "version": "2.1.34", - "license": "MIT", - "dependencies": { - "mime-db": "1.51.0" - }, - "engines": { - "node": ">= 0.6" - } - }, - "node_modules/minimatch": { - "version": "3.0.5", - "license": "ISC", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/ms": { - "version": "2.1.2", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", - "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" - }, - "node_modules/nodejs-file-downloader": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.12.1.tgz", - "integrity": "sha512-LpfCTNhh805AlLnJnzt1PuEj+RmbrccbAQZ6hBRw2e6QPVR0Qntuo6qqyvPHG5s77/0w0IEKgRAD4nbSnr/X4w==", - "dependencies": { - "follow-redirects": "^1.15.1", - "https-proxy-agent": "^5.0.0", - "mime-types": "^2.1.27", - "sanitize-filename": "^1.6.3" - } - }, - "node_modules/once": { - "version": "1.4.0", - "license": "ISC", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "license": "MIT", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "license": "MIT" - }, - "node_modules/q": { - "version": "1.5.1", - "license": "MIT", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/resolve": { - "version": "1.22.0", - "license": "MIT", - "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://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", - "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", - "dependencies": { - "truncate-utf8-bytes": "^1.0.0" - } - }, - "node_modules/semver": { - "version": "5.7.2", - "license": "ISC", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/shelljs": { - "version": "0.8.5", - "license": "BSD-3-Clause", - "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", - "license": "MIT", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/tmp": { - "version": "0.2.5", - "resolved": "https://registry.npmjs.org/tmp/-/tmp-0.2.5.tgz", - "integrity": "sha512-voyz6MApa1rQGUxT3E+BK7/ROe8itEx7vD8/HEvt4xwXucvQ5G5oeEiHkmHZJuBO21RpOf+YYm9MOivj709jow==", - "license": "MIT", - "engines": { - "node": ">=14.14" - } - }, - "node_modules/truncate-utf8-bytes": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/truncate-utf8-bytes/-/truncate-utf8-bytes-1.0.2.tgz", - "integrity": "sha512-95Pu1QXQvruGEhv62XCMO3Mm90GscOCClvrIUwCM0PYOXK3kaF3l3sIHxx71ThJfcbM2O5Au6SO3AWCSEfW4mQ==", - "dependencies": { - "utf8-byte-length": "^1.0.1" - } - }, - "node_modules/universalify": { - "version": "2.0.0", - "license": "MIT", - "engines": { - "node": ">= 10.0.0" - } - }, - "node_modules/utf8-byte-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" - }, - "node_modules/uuid": { - "version": "3.4.0", - "license": "MIT", - "bin": { - "uuid": "bin/uuid" - } - }, - "node_modules/uuidv5": { - "version": "1.0.0", - "license": "ISC" - }, - "node_modules/wrappy": { - "version": "1.0.2", - "license": "ISC" - } - } -} diff --git a/BuildTasks/UnpublishExtension/v4/package.json b/BuildTasks/UnpublishExtension/v4/package.json deleted file mode 100644 index 43e328d4..00000000 --- a/BuildTasks/UnpublishExtension/v4/package.json +++ /dev/null @@ -1,18 +0,0 @@ -{ - "name": "vsts-developer-tools.unpublishextensionv4", - "version": "4.3.0", - "description": "Unpublish Extension Task", - "repository": { - "type": "git", - "url": "https://github.com/Microsoft/azure-devops-extension-tasks.git" - }, - "license": "MIT", - "dependencies": { - "azure-pipelines-task-lib": "^4.17.3", - "fs-extra": "^11.3.2", - "tmp": "^0.2.5", - "uuidv5": "^1.0.0" - }, - "devDependencies": { - } -} diff --git a/BuildTasks/UnpublishExtension/v4/task.json b/BuildTasks/UnpublishExtension/v4/task.json deleted file mode 100644 index 2962dcb3..00000000 --- a/BuildTasks/UnpublishExtension/v4/task.json +++ /dev/null @@ -1,142 +0,0 @@ -{ - "id": "b2664b33-2f30-40a4-b75f-bb9456ad27d2", - "name": "UnpublishAzureDevOpsExtension", - "friendlyName": "Unpublish Extension", - "description": "Unpublish a published extension from the marketplace", - "author": "Microsoft Corporation", - "helpMarkDown": "", - "category": "Deploy", - "version": { - "Major": 4, - "Minor": 4, - "Patch": 0 - }, - "visibility": [ - "Build", - "Release" - ], - "demands": [ - "npm" - ], - "minimumAgentVersion": "2.206.1", - "groups": [ - { - "name": "extension", - "displayName": "Extension", - "isExpanded": true - }, - { - "name": "advanced", - "displayName": "Advanced", - "isExpanded": false - } - ], - "instanceNameFormat": "Unpublish Extension", - "inputs": [ - { - "name": "connectTo", - "type": "radio", - "label": "Connect to", - "required": true, - "defaultValue": "VsTeam", - "helpMarkDown": "Connect to Visual Studio Marketplace.", - "options": { - "VsTeam": "Visual Studio Marketplace", - "TFS": "Azure DevOps Server" - } - }, - { - "name": "connectedServiceName", - "type": "connectedService:VstsMarketplacePublishing", - "label": "Visual Studio Marketplace", - "required": true, - "helpMarkDown": "Service endpoint connection to unpublish the extension.", - "visibleRule": "connectTo=VsTeam" - }, - { - "name": "connectedServiceNameTFS", - "type": "connectedService:TFSMarketplacePublishing", - "label": "TFS Local Gallery connection", - "required": true, - "helpMarkDown": "Service endpoint connection to unpublish the extension.", - "visibleRule": "connectTo=TFS" - }, - { - "name": "method", - "type": "radio", - "label": "Unpublish using", - "required": true, - "defaultValue": "id", - "helpMarkDown": "Unpublish using either an existing VSIX or using the Publisher and Extension ID.", - "options": { - "id": "Publisher + Extension ID", - "vsix": "VSIX file" - }, - "groupName": "extension" - }, - { - "name": "publisherId", - "type": "string", - "label": "Publisher ID", - "defaultValue": "", - "required": true, - "helpMarkDown": "Publisher ID of the extension to be unpublished.", - "groupName": "extension", - "visibleRule": "method = id" - }, - { - "name": "extensionId", - "type": "string", - "label": "Extension ID", - "defaultValue": "", - "helpMarkDown": "Extension ID of the extension to be unpublished", - "required": true, - "groupName": "extension", - "visibleRule": "method = id" - }, - { - "name": "extensionTag", - "type": "string", - "label": "Extension Tag", - "defaultValue": "", - "helpMarkDown": "Extension Tag to append to the extension ID", - "required": false, - "groupName": "extension", - "visibleRule": "method = id" - }, - { - "name": "vsixFile", - "type": "filePath", - "label": "VSIX file", - "defaultValue": "", - "required": true, - "helpMarkDown": "VSIX file of the extension to be unpublished. Supports wildcards.", - "visibleRule": "method = vsix", - "groupName": "extension" - }, - { - "name": "arguments", - "type": "string", - "label": "Arguments", - "defaultValue": "", - "helpMarkDown": "Additional arguments passed to the package and publishing tool.", - "required": false, - "groupName": "advanced" - }, - { - "name": "cwd", - "type": "filePath", - "label": "Working Directory", - "defaultValue": "", - "required": false, - "helpMarkDown": "Working directory to run the package and publishing process from. Defaults to the folder where the manifest is located.", - "groupName": "advanced" - } - ], - "execution": { - "Node16": { - "target": "UnpublishExtension/v4/UnpublishExtension.js", - "argumentFormat": "" - } - } -} diff --git a/BuildTasks/UnpublishExtension/v4/tsconfig.json b/BuildTasks/UnpublishExtension/v4/tsconfig.json deleted file mode 100644 index 10c23f5a..00000000 --- a/BuildTasks/UnpublishExtension/v4/tsconfig.json +++ /dev/null @@ -1,10 +0,0 @@ -{ - "extends": "../../tsconfig.v4.json", - "compilerOptions": { - "outDir": "./", - "sourceRoot": "./" - }, - "files": [ - "UnpublishExtension.ts" - ] - } \ No newline at end of file diff --git a/BuildTasks/UnpublishExtension/v5/icon.png b/BuildTasks/UnpublishExtension/v5/icon.png deleted file mode 100644 index 2f335ab9..00000000 Binary files a/BuildTasks/UnpublishExtension/v5/icon.png and /dev/null differ diff --git a/BuildTasks/tsconfig.v4.json b/BuildTasks/tsconfig.v4.json deleted file mode 100644 index d5c19369..00000000 --- a/BuildTasks/tsconfig.v4.json +++ /dev/null @@ -1,20 +0,0 @@ -{ - "compileOnSave": true, - "compilerOptions": { - "module": "commonjs", - "target": "es6", - "sourceMap": true, - "strict": true, - "strictNullChecks": false, - "removeComments": true, - "forceConsistentCasingInFileNames": true, - "esModuleInterop": true - }, - "include": [ - "./Common/v4/Common.ts", - "./Common/v4/uuidv5.d.ts" - ], - "exclude": [ - "*/v4/**/*.js" - ] -} \ No newline at end of file diff --git a/BuildTasks/tsconfig.v5.json b/BuildTasks/tsconfig.v5.json index 0dd5ab37..85c6fe45 100644 --- a/BuildTasks/tsconfig.v5.json +++ b/BuildTasks/tsconfig.v5.json @@ -8,13 +8,20 @@ "strictNullChecks": false, "removeComments": true, "forceConsistentCasingInFileNames": true, - "esModuleInterop": true + "esModuleInterop": true, + "typeRoots": [ + "../node_modules/@types" + ], + "types": [ + "node" + ] }, "include": [ - "./Common/v5/Common.ts", - "./Common/v5/uuidv5.d.ts" + "./Common/Common.ts", + "./Common/uuidv5.d.ts", + "./Common-Auth/CommonAuth.ts" ], "exclude": [ - "*/v5/**/*.js" + "*/**/*.js" ] } diff --git a/azure-pipelines.yml b/azure-pipelines.yml index 3534a4fd..ea311c6a 100644 --- a/azure-pipelines.yml +++ b/azure-pipelines.yml @@ -37,9 +37,8 @@ stages: $vswhereLatest = "https://github.com/Microsoft/vswhere/releases/latest/download/vswhere.exe" $targets = @( - ".\BuildTasks\PublishVSExtension\v4\tools\", - ".\BuildTasks\PublishVSExtension\v5\tools\" - ".\BuildTasks\PublishVSExtension\v5\PublishVSExtension\v5\tools\" + ".\BuildTasks\PublishVSExtension\tools\" + ".\BuildTasks\PublishVSExtension\PublishVSExtension\tools\" ) invoke-webrequest $vswhereLatest -OutFile $env:temp\vswhere.exe @@ -66,8 +65,8 @@ stages: - pwsh: | $erroractionpreference = "silentlycontinue" - del BuildTasks\PublishExtension\v5\node_modules\7zip-bin\linux -recurse - del BuildTasks\PublishExtension\v5\node_modules\7zip-bin\mac -recurse + del BuildTasks\PublishExtension\node_modules\7zip-bin\linux -recurse + del BuildTasks\PublishExtension\node_modules\7zip-bin\mac -recurse del -include @( "package-lock.json", "*.ts", @@ -75,8 +74,13 @@ stages: "tsconfig.json", ".snyk", "*.md", - "tsconfig.tsbuildinfo" - ) -recurse BuildTasks\*\v* + "tsconfig.tsbuildinfo", + "@types" + ) -recurse BuildTasks\*\ + + del -include @( + "msal-browser" + ) -recurse BuildTasks\*\node_modules\@azure\ del -include @( ".package-lock.json", @@ -100,11 +104,11 @@ stages: "LICENSE", "license", "AUTHORS" - ) -recurse BuildTasks\*\v*\node_modules -force + ) -recurse BuildTasks\*\node_modules -force del -include @( "*.pem" - ) -recurse BuildTasks\*\v*\node_modules\azure-pipelines-tasks-azure-arm-rest\openssl\PEM\ -force + ) -recurse BuildTasks\*\node_modules\azure-pipelines-tasks-azure-arm-rest\openssl*\PEM\ -force displayName: 'Delete unneeded files' - pwsh: | ./fix-manifest-file.ps1 @@ -140,6 +144,19 @@ stages: extensionTag: '-dev' extensionVisibility: 'private' + - task: PackageAzureDevOpsExtension@5 + name: 'packagedebug' + displayName: 'Package the private extension' + inputs: + rootFolder: '$(Build.SourcesDirectory)' + outputPath: '$(Build.ArtifactStagingDirectory)\jessehouwing.vsts-developer-tools-build-tasks-dev.vsix' + publisherId: 'jessehouwing' + extensionName: 'Azure DevOps Extension Tasks' + extensionId: 'vsts-developer-tools-build-tasks' + extensionVersion: '$(Build.BuildNumber)' + extensionTag: '-dev' + extensionVisibility: 'private' + - task: PackageAzureDevOpsExtension@5 displayName: 'Package the public extension' name: 'packagepublic' diff --git a/fix-manifest-file.ps1 b/fix-manifest-file.ps1 index 73d78888..e334595f 100644 --- a/fix-manifest-file.ps1 +++ b/fix-manifest-file.ps1 @@ -11,6 +11,7 @@ if (-not (Test-Path "vss-extension.json")) { } $extensionManifest = Get-Content -Raw "vss-extension.json" | ConvertFrom-Json +$repoRoot = (Get-Location).Path Write-Host "Original file count in manifest: $($extensionManifest.files.Count)" -ForegroundColor Cyan @@ -23,12 +24,30 @@ $removedCount = $originalCount - $extensionManifest.files.Count Write-Host "Removed $removedCount files with contentType 'application/octet-stream'" -ForegroundColor Yellow -# Get all files in BuildTasks\* folders -Write-Host "Scanning BuildTasks\* folders for files without extensions..." -ForegroundColor Yellow +# Get all files in BuildTasks folders referenced by the manifest +$manifestTaskDirectories = $extensionManifest.files | + Where-Object { $_.path -like "BuildTasks/*" } | + ForEach-Object { + $fullPath = Join-Path -Path $repoRoot -ChildPath ($_.path -replace '/', '\') + if (Test-Path -LiteralPath $fullPath -PathType Container) { + $fullPath + } + } | + Sort-Object -Unique + +$buildTasksFiles = @() -$buildTasksFiles = Get-ChildItem -Path "BuildTasks\*" -File -Recurse | Where-Object { - # Select files that don't have an extension (no dot in the name or ends with a dot) - $_.Name -notmatch '\.[^.]+$' -or $_.Name.EndsWith('.') +if ($manifestTaskDirectories.Count -eq 0) { + Write-Host "No BuildTasks directories referenced in manifest; skipping scan." -ForegroundColor Yellow +} else { + Write-Host "Scanning BuildTasks folders referenced in manifest for files without extensions..." -ForegroundColor Yellow + + $buildTasksFiles = $manifestTaskDirectories | ForEach-Object { + Get-ChildItem -Path $_ -File -Recurse + } | Where-Object { + # Select files that don't have an extension (no dot in the name or ends with a dot) + $_.Name -notmatch '\.[^.]+$' -or $_.Name.EndsWith('.') + } } Write-Host "Found $($buildTasksFiles.Count) files without extensions" -ForegroundColor Cyan @@ -44,7 +63,7 @@ foreach ($file in $extensionManifest.files) { # Add files without extensions to the manifest if they're not already there $addedCount = 0 foreach ($file in $buildTasksFiles) { - $relativePath = $file.FullName.Substring((Get-Location).Path.Length + 1).Replace('\', '/') + $relativePath = $file.FullName.Substring($repoRoot.Length + 1).Replace('\', '/') if (-not $existingFilePaths.ContainsKey($relativePath)) { $extensionManifest.files += @{ diff --git a/package-lock.json b/package-lock.json index d16c4ceb..1b9583e4 100644 --- a/package-lock.json +++ b/package-lock.json @@ -9,12 +9,9 @@ "devDependencies": { "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.39.1", - "@types/core-js": "^2.5.8", - "@types/fs-extra": "^5.1.0", "@types/node": "^20.19.24", "@types/promise-retry": "^1.1.6", "@types/q": "^1.5.8", - "@types/temp": "^0.9.4", "@types/xmldom": "^0.1.34", "@typescript-eslint/eslint-plugin": "^8.46.3", "@typescript-eslint/parser": "^8.46.3", @@ -285,13 +282,6 @@ "node": ">= 8" } }, - "node_modules/@types/core-js": { - "version": "2.5.8", - "resolved": "https://registry.npmjs.org/@types/core-js/-/core-js-2.5.8.tgz", - "integrity": "sha512-VgnAj6tIAhJhZdJ8/IpxdatM8G4OD3VWGlp6xIxUGENZlpbob9Ty4VVdC1FIEp0aK6DBscDDjyzy5FB60TuNqg==", - "dev": true, - "license": "MIT" - }, "node_modules/@types/estree": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", @@ -299,16 +289,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/fs-extra": { - "version": "5.1.0", - "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-5.1.0.tgz", - "integrity": "sha512-AInn5+UBFIK9FK5xc9yP5e3TQSPNNgjHByqYcj9g5elVBnDQcQL7PlO1CIRy2gWlbwK7UPYqi7vRvFA44dCmYQ==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/json-schema": { "version": "7.0.15", "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", @@ -349,16 +329,6 @@ "dev": true, "license": "MIT" }, - "node_modules/@types/temp": { - "version": "0.9.4", - "resolved": "https://registry.npmjs.org/@types/temp/-/temp-0.9.4.tgz", - "integrity": "sha512-+VfWIwrlept2VBTj7Y2wQnI/Xfscy1u8Pyj/puYwss6V1IblXn1x7S0S9eFh6KyBolgLCm+rUFzhFAbdkR691g==", - "dev": true, - "license": "MIT", - "dependencies": { - "@types/node": "*" - } - }, "node_modules/@types/xmldom": { "version": "0.1.34", "resolved": "https://registry.npmjs.org/@types/xmldom/-/xmldom-0.1.34.tgz", diff --git a/package.json b/package.json index 9fed8a80..4be51b44 100644 --- a/package.json +++ b/package.json @@ -15,19 +15,17 @@ "initdev": "npm run initdev:npm", "initdev:npm": "npm run initdev:npm:base & npm run initdev:npm:tasks", "initdev:npm:base": "npm install --no-progress --force --no-update-notifier --legacy-peer-deps --no-fund", - "initdev:npm:tasks": "glob-exec --parallel --foreach \"BuildTasks/*/*/tsconfig.json\" -- \"cd {{file.dir}} && npm install --force --no-update-notifier --no-progress --legacy-peer-deps --no-fund\"", - "compile:tasks": "npm run compile:tasks:v4 && npm run compile:tasks:v5", - "compile:tasks:v4": "glob-exec \"BuildTasks/*/v4/tsconfig.json\" -- \"tsc -b {{files.join(' ')}}\"", - "compile:tasks:v5": "glob-exec \"BuildTasks/*/v5/tsconfig.json\" -- \"tsc -b {{files.join(' ')}}\"", + "initdev:npm:tasks": "glob-exec --parallel --foreach \"BuildTasks/*/tsconfig.json\" -- \"cd {{file.dir}} && npm install --force --no-update-notifier --no-progress --legacy-peer-deps --no-fund\"", + "compile:tasks": "npm run compile:tasks:v5", + "compile:tasks:v5": "glob-exec \"BuildTasks/*/tsconfig.json\" -- \"tsc -b {{files.join(' ')}}\"", "postcompile:tasks": "npm run lint:tasks", - "lint:tasks": "npm run lint:tasks:v4 && npm run lint:tasks:v5", - "lint:tasks:v4": "glob-exec --parallel --foreach \"BuildTasks/*/v4/tsconfig.json\" -- \"eslint {{file.dir}}\\*.ts --parser-options \"{'project':['{{file}}']}\"", - "lint:tasks:v5": "glob-exec --parallel --foreach \"BuildTasks/*/v5/tsconfig.json\" -- \"eslint {{file.dir}}\\*.ts --parser-options \"{'project':['{{file}}']}\"", + "lint:tasks": "npm run lint:tasks:v5", + "lint:tasks:v5": "glob-exec --parallel --foreach \"BuildTasks/*/tsconfig.json\" -- \"eslint {{file.dir}}\\*.ts --parser-options \"{'project':['{{file}}']}\"", "package:tasks": "tfx extension create --root . --output-path dist --manifest-globs vss-extension.json", "build": "npm run build:tasks", "build:clean": "npm run clean && npm run initdev && npm run build", "build:tasks": "npm run compile:tasks", - "package": "glob-exec --parallel --foreach \"BuildTasks/*/*/tsconfig.json\" -- \"cd {{file.dir}} && npm dedupe && npm prune --omit=dev\"", + "package": "glob-exec --parallel --foreach \"BuildTasks/*/tsconfig.json\" -- \"cd {{file.dir}} && npm dedupe && npm prune --omit=dev\"", "clean": "git clean -fdX" }, "author": "Microsoft Corporation", @@ -35,16 +33,13 @@ "devDependencies": { "@eslint/eslintrc": "^3.3.1", "@eslint/js": "^9.39.1", - "@types/core-js": "^2.5.8", - "@types/fs-extra": "^5.1.0", + "@types/node": "^20.19.24", "@types/promise-retry": "^1.1.6", "@types/q": "^1.5.8", - "@types/temp": "^0.9.4", "@types/xmldom": "^0.1.34", "@typescript-eslint/eslint-plugin": "^8.46.3", "@typescript-eslint/parser": "^8.46.3", "@ungap/structured-clone": "^1.3.0", - "@types/node": "^20.19.24", "eslint": "^9.39.1", "glob-exec": "^0.1.1", "globals": "^16.5.0", diff --git a/test-extensionversion.cmd b/test-extensionversion.cmd index 85898c75..d039585e 100644 --- a/test-extensionversion.cmd +++ b/test-extensionversion.cmd @@ -1,14 +1,17 @@ set INPUT_EXTENSIONID=vsts-ensure-tests-tasks set INPUT_EXTENSIONVERSION=8.9.10 set INPUT_PUBLISHERID=jessehouwing -set INPUT_ROOTFOLDER=C:\Users\jesse\source\repos\vsts-ping-task-demo +set INPUT_ROOTFOLDER=D:\azure-devops-extension-tasks set INPUT_UPDATETASKSID=true set INPUT_UPDATETASKSVERSION=true set INPUT_UPDATETASKSVERSIONTYPE=minor SET INPUT_CONNECTEDSERVICENAME=A -SET INPUT_VERSION=0.x +SET INPUT_VERSION=builtin +set azdo_token= SET ENDPOINT_URL_A=https://marketplace.visualstudio.com -SET ENDPOINT_AUTH_A={ "parameters": { "apitoken": "token", "username": "user", "password": "password" }, "Scheme": "basic" } +SET ENDPOINT_AUTH_A={ "parameters": { "password": "%azdo_token%" }, "Scheme": "basic" } +set __TFXPATH=%~dp0BuildTasks\TfxInstaller\node_modules\.bin +set PATH=%__TFXPATH%;%PATH% set AGENT_WORKFOLDER=%temp%\agent\work set AGENT_TOOLSDIRECTORY=%temp%\agent\tools @@ -24,18 +27,11 @@ set NO_UPDATE_NOTIFIER=true REM cmd /c "npm run build:tasks" -pushd BuildTasks\TfxInstaller\v4\TfxInstaller\v4 +pushd BuildTasks\TfxInstaller\TfxInstaller node TfxInstaller.js popd -pushd BuildTasks\TfxInstaller\v5\TfxInstaller\v5 -node TfxInstaller.js -popd - -pushd BuildTasks\ExtensionVersion\v4\ExtensionVersion\v4 -node ExtensionVersion.js -popd -pushd BuildTasks\ExtensionVersion\v5\ExtensionVersion\v5 +pushd BuildTasks\ExtensionVersion\ExtensionVersion node ExtensionVersion.js popd \ No newline at end of file diff --git a/test-isvalid.cmd b/test-isvalid.cmd index c3fe7aaa..c06af52c 100644 --- a/test-isvalid.cmd +++ b/test-isvalid.cmd @@ -11,7 +11,9 @@ SET ENDPOINT_AUTH_A={ "parameters": { "password": "%azdo_token%" }, "Scheme": "b set AGENT_WORKFOLDER=%temp%\agent\work set AGENT_TOOLSDIRECTORY=%temp%\agent\tools SET AGENT_TEMPDIRECTORY=%temp%\agent\tmp -set __TFXPATH=E:\azure-devops-extension-tasks\BuildTasks\TfxInstaller\v5\node_modules\.bin +REM Use a relative path to make the script portable +set __TFXPATH=%~dp0BuildTasks\TfxInstaller\node_modules\.bin +set PATH=%__TFXPATH%;%PATH% md %temp%\agent md %AGENT_WORKFOLDER% md %AGENT_TOOLSDIRECTORY% @@ -22,40 +24,25 @@ set NO_UPDATE_NOTIFIER=true REM cmd /c "npm run build:tasks" -pushd BuildTasks\TfxInstaller\v5\TfxInstaller\v5 +pushd BuildTasks\TfxInstaller\TfxInstaller node TfxInstaller.js popd -echo. -echo ======================================== -echo Testing IsValidExtension v4 -echo ======================================== -pushd BuildTasks\IsValidExtensionAgent\v4\IsValidExtensionAgent\v4 -node IsValidExtension.js -popd echo. echo ======================================== echo Testing IsValidExtension v5 echo ======================================== -pushd BuildTasks\IsValidExtensionAgent\v5\IsValidExtensionAgent\v5 +pushd BuildTasks\IsValidExtensionAgent\IsValidExtensionAgent node IsValidExtension.js popd -echo. -echo ======================================== -echo Testing IsValidExtension v4 with TFX_TRACE=1 -echo ======================================== -set TFX_TRACE=1 -pushd BuildTasks\IsValidExtensionAgent\v4\IsValidExtensionAgent\v4 -node IsValidExtension.js -popd echo. echo ======================================== echo Testing IsValidExtension v5 with TFX_TRACE=1 echo ======================================== -pushd BuildTasks\IsValidExtensionAgent\v5\IsValidExtensionAgent\v5 +pushd BuildTasks\IsValidExtensionAgent\IsValidExtensionAgent node IsValidExtension.js popd set TFX_TRACE= diff --git a/test-packaging.cmd b/test-packaging.cmd index 5a35bb32..3267bb0d 100644 --- a/test-packaging.cmd +++ b/test-packaging.cmd @@ -1,4 +1,4 @@ -set INPUT_VERSION=v0.7.x +set INPUT_VERSION=builtin set INPUT_PUBLISHERID=meA set AGENT_VERSION=2.211.2 @@ -16,22 +16,21 @@ set NO_UPDATE_NOTIFIER=true cmd /c "npm run build:tasks" -pushd BuildTasks\TfxInstaller\v4\TfxInstaller\v4 +pushd BuildTasks\TfxInstaller\TfxInstaller node TfxInstaller.js popd -set __TFXPATH=C:\Users\JESSEH~1\AppData\Local\Temp\agent\tools\tfx\0.18.0\x64\ +set __TFXPATH=%~dp0BuildTasks\TfxInstaller\node_modules\.bin +set PATH=%__TFXPATH%;%PATH% set INPUT_EXTENSIONID=ext set INPUT_EXTENSIONVERSION=8.9.10 -set INPUT_ROOTFOLDER=C:\Users\jesse\source\repos\vsts-ping-task-demo +set INPUT_ROOTFOLDER=D:\azure-devops-extension-tasks\ set INPUT_UPDATETASKSID=true set INPUT_UPDATETASKSVERSION=true set INPUT_UPDATETASKSVERSIONTYPE=minor -set INPUT_PATTERNMANIFEST=vss-extension*.json -pushd BuildTasks\PackageExtension\v4\PackageExtension\v4 -rem c:\TfsData\jessehouwing\externals.2.111.1\node\bin\node.exe PackageExtension.js -rem c:\TfsData\jessehouwing\externals.2.136.1\node\bin\node.exe PackageExtension.js +set INPUT_PATTERNMANIFEST=vss-extension.json +pushd BuildTasks\PackageExtension\PackageExtension node PackageExtension.js popd \ No newline at end of file diff --git a/test-publishing.cmd b/test-publishing.cmd index 10e64dd9..18530f8b 100644 --- a/test-publishing.cmd +++ b/test-publishing.cmd @@ -1,7 +1,7 @@ -SET SYSTEM_DEFAULTWORKINGDIRECTORY=E:\azure-devops-extension-tasks\ -set INPUT_CWD=E:\azure-devops-extension-tasks\ -set INPUT_ROOTFOLDER=E:\azure-devops-extension-tasks\ -set INPUT_VSIXFILE=E:\azure-devops-extension-tasks\ms-devlabs.vsts-developer-tools-build-tasks-5.0.0.vsix +SET SYSTEM_DEFAULTWORKINGDIRECTORY=D:\azure-devops-extension-tasks\ +set INPUT_CWD=D:\azure-devops-extension-tasks\ +set INPUT_ROOTFOLDER=D:\azure-devops-extension-tasks\ +set INPUT_VSIXFILE=D:\azure-devops-extension-tasks\jessehouwing.vsts-developer-tools-build-tasks-5.0.0.vsix SET INPUT_CONNECTTO=VsTeam SET INPUT_FILETYPE=vsix SET INPUT_EXTENSIONVISIBILITY=default @@ -9,8 +9,14 @@ SET INPUT_EXTENSIONVERSION=3.26.23 SET INPUT_UPDATETASKSVERSION=true SET INPUT_UPDATETASKSVERSIONTYPE=minor SET INPUT_CONNECTEDSERVICENAME=A + +SET INPUT_VERSION=builtin +set azdo_token= SET ENDPOINT_URL_A=https://marketplace.visualstudio.com -SET ENDPOINT_AUTH_A={ "parameters": { "apitoken": "token", "username": "user", "password": "password" }, "Scheme": "basic" } +SET ENDPOINT_AUTH_A={ "parameters": { "password": "%azdo_token%" }, "Scheme": "basic" } + +set __TFXPATH=%~dp0BuildTasks\TfxInstaller\node_modules\.bin +set PATH=%__TFXPATH%;%PATH% set NODE_ENV=production set NO_UPDATE_NOTIFIER=true @@ -28,12 +34,7 @@ fnm use v20 cmd /c "npm run build:tasks" -set __TFXPATH=C:\Users\JESSEH~1\AppData\Local\Temp\agent\tools\tfx\0.18.0\x64\ - -pushd BuildTasks\PublishExtension\v4\PublishExtension\v5 -node PublishExtension.js -popd -pushd BuildTasks\PublishExtension\v4\PublishExtension\v4 +pushd BuildTasks\PublishExtension\PublishExtension node PublishExtension.js popd \ No newline at end of file diff --git a/test-tfxinstaller.cmd b/test-tfxinstaller.cmd index 73d82270..19d5322b 100644 --- a/test-tfxinstaller.cmd +++ b/test-tfxinstaller.cmd @@ -19,21 +19,21 @@ fnm use v20 cmd /c "npm run build:tasks" -pushd BuildTasks\TfxInstaller\v5\ +pushd BuildTasks\TfxInstaller\ set INPUT_VERSION=0.21.1 set INPUT_CHECKLATEST=true -node TfxInstaller\v5\TfxInstaller.js +node TfxInstaller\TfxInstaller.js set INPUT_VERSION=0.21.x set INPUT_CHECKLATEST=true -node TfxInstaller\v5\TfxInstaller.js +node TfxInstaller\TfxInstaller.js set INPUT_VERSION=latest set INPUT_CHECKLATEST=true -node TfxInstaller\v5\TfxInstaller.js +node TfxInstaller\TfxInstaller.js set INPUT_VERSION=builtin -node TfxInstaller\v5\TfxInstaller.js +node TfxInstaller\TfxInstaller.js popd