From e0693ba32e8161e50f901d608ca207d6207a44fd Mon Sep 17 00:00:00 2001 From: embetten <53092095+embetten@users.noreply.github.com> Date: Mon, 19 Aug 2024 13:06:50 -0700 Subject: [PATCH] NuGetAuthenticateV1: Add WIF Service Connection Support (#20299) * Adding task changes * Adding TaskJsonOverride to support new input * Adding generated wif * Updating logic in main, adding locstrings * task bump && bump common package * removing groupname from task json * adding url check and spelling * Removing duplicate error checking, try parse url * Improved feed url check * Adding telemetry for federatedFeedAuthCount * bumping azure-pipelines-task-lib * UX improvements * merge conflict fix * Bump Task Version * run --write-updates * Fix Url Validation and PR Comments * --write-updates * bump common task * --write-updates * --write-updates * write updates * add input validation * write updates * build validation passes locally * revert en-us changes * Add en-us strings * fix strings part 2 * write updates --------- Co-authored-by: Alex Torres Co-authored-by: Alex Torres <95253638+AlexVTor@users.noreply.github.com> --- .../resources.resjson/en-US/resources.resjson | 11 +- .../_buildConfigs/Node20/package-lock.json | 16 +- .../_buildConfigs/Node20/package.json | 6 +- .../_buildConfigs/Wif/package-lock.json | 754 ++++++++++++++++++ .../_buildConfigs/Wif/package.json | 33 + Tasks/NuGetAuthenticateV1/main.ts | 30 +- Tasks/NuGetAuthenticateV1/package-lock.json | 432 ++++------ Tasks/NuGetAuthenticateV1/package.json | 6 +- Tasks/NuGetAuthenticateV1/task.json | 10 +- Tasks/NuGetAuthenticateV1/task.loc.json | 10 +- .../NuGetAuthenticateV1/taskJsonOverride.json | 41 + .../taskJsonOverride.loc.json | 41 + _generated/NuGetAuthenticateV1.versionmap.txt | 5 +- .../resources.resjson/en-US/resources.resjson | 7 +- _generated/NuGetAuthenticateV1/main.ts | 12 +- .../NuGetAuthenticateV1/package-lock.json | 432 ++++------ _generated/NuGetAuthenticateV1/package.json | 6 +- _generated/NuGetAuthenticateV1/task.json | 15 +- _generated/NuGetAuthenticateV1/task.loc.json | 15 +- .../NuGetAuthenticateV1/taskJsonOverride.json | 41 + .../taskJsonOverride.loc.json | 41 + .../resources.resjson/en-US/resources.resjson | 7 +- _generated/NuGetAuthenticateV1_Node20/main.ts | 12 +- .../package-lock.json | 16 +- .../NuGetAuthenticateV1_Node20/package.json | 6 +- .../NuGetAuthenticateV1_Node20/task.json | 15 +- .../NuGetAuthenticateV1_Node20/task.loc.json | 15 +- .../taskJsonOverride.json | 41 + .../taskJsonOverride.loc.json | 41 + _generated/NuGetAuthenticateV1_Wif/.npmrc | 1 + .../resources.resjson/de-DE/resources.resjson | 10 + .../resources.resjson/en-US/resources.resjson | 19 + .../resources.resjson/es-ES/resources.resjson | 10 + .../resources.resjson/fr-FR/resources.resjson | 10 + .../resources.resjson/it-IT/resources.resjson | 10 + .../resources.resjson/ja-JP/resources.resjson | 10 + .../resources.resjson/ko-KR/resources.resjson | 10 + .../resources.resjson/ru-RU/resources.resjson | 10 + .../resources.resjson/zh-CN/resources.resjson | 10 + .../resources.resjson/zh-TW/resources.resjson | 10 + _generated/NuGetAuthenticateV1_Wif/icon.png | Bin 0 -> 1621 bytes _generated/NuGetAuthenticateV1_Wif/icon.svg | 10 + _generated/NuGetAuthenticateV1_Wif/main.ts | 47 ++ _generated/NuGetAuthenticateV1_Wif/make.json | 22 + .../NuGetAuthenticateV1_Wif/package-lock.json | 754 ++++++++++++++++++ .../NuGetAuthenticateV1_Wif/package.json | 33 + _generated/NuGetAuthenticateV1_Wif/task.json | 86 ++ .../NuGetAuthenticateV1_Wif/task.loc.json | 86 ++ .../taskJsonOverride.json | 41 + .../taskJsonOverride.loc.json | 41 + .../NuGetAuthenticateV1_Wif/tsconfig.json | 6 + make-options.json | 3 +- 52 files changed, 2698 insertions(+), 658 deletions(-) create mode 100644 Tasks/NuGetAuthenticateV1/_buildConfigs/Wif/package-lock.json create mode 100644 Tasks/NuGetAuthenticateV1/_buildConfigs/Wif/package.json create mode 100644 Tasks/NuGetAuthenticateV1/taskJsonOverride.json create mode 100644 Tasks/NuGetAuthenticateV1/taskJsonOverride.loc.json create mode 100644 _generated/NuGetAuthenticateV1/taskJsonOverride.json create mode 100644 _generated/NuGetAuthenticateV1/taskJsonOverride.loc.json create mode 100644 _generated/NuGetAuthenticateV1_Node20/taskJsonOverride.json create mode 100644 _generated/NuGetAuthenticateV1_Node20/taskJsonOverride.loc.json create mode 100644 _generated/NuGetAuthenticateV1_Wif/.npmrc create mode 100644 _generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/de-DE/resources.resjson create mode 100644 _generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/en-US/resources.resjson create mode 100644 _generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/es-ES/resources.resjson create mode 100644 _generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/fr-FR/resources.resjson create mode 100644 _generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/it-IT/resources.resjson create mode 100644 _generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/ja-JP/resources.resjson create mode 100644 _generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/ko-KR/resources.resjson create mode 100644 _generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/ru-RU/resources.resjson create mode 100644 _generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/zh-CN/resources.resjson create mode 100644 _generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/zh-TW/resources.resjson create mode 100644 _generated/NuGetAuthenticateV1_Wif/icon.png create mode 100644 _generated/NuGetAuthenticateV1_Wif/icon.svg create mode 100644 _generated/NuGetAuthenticateV1_Wif/main.ts create mode 100644 _generated/NuGetAuthenticateV1_Wif/make.json create mode 100644 _generated/NuGetAuthenticateV1_Wif/package-lock.json create mode 100644 _generated/NuGetAuthenticateV1_Wif/package.json create mode 100644 _generated/NuGetAuthenticateV1_Wif/task.json create mode 100644 _generated/NuGetAuthenticateV1_Wif/task.loc.json create mode 100644 _generated/NuGetAuthenticateV1_Wif/taskJsonOverride.json create mode 100644 _generated/NuGetAuthenticateV1_Wif/taskJsonOverride.loc.json create mode 100644 _generated/NuGetAuthenticateV1_Wif/tsconfig.json diff --git a/Tasks/NuGetAuthenticateV1/Strings/resources.resjson/en-US/resources.resjson b/Tasks/NuGetAuthenticateV1/Strings/resources.resjson/en-US/resources.resjson index 6c52f008fb6e..3da65bf8f250 100644 --- a/Tasks/NuGetAuthenticateV1/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/NuGetAuthenticateV1/Strings/resources.resjson/en-US/resources.resjson @@ -6,5 +6,14 @@ "loc.input.label.nuGetServiceConnections": "Service connection credentials for feeds outside this organization", "loc.input.help.nuGetServiceConnections": "Comma-separated list of NuGet service connection names for feeds outside this organization/collection. For feeds in this organization/collection, leave this blank; the build’s credentials are used automatically.", "loc.input.label.forceReinstallCredentialProvider": "Reinstall the credential provider even if already installed", - "loc.input.help.forceReinstallCredentialProvider": "If the credential provider is already installed in the user profile, determines if it is overwritten with the task-provided credential provider. This may upgrade (or potentially downgrade) the credential provider." + "loc.input.help.forceReinstallCredentialProvider": "If the credential provider is already installed in the user profile, determines if it is overwritten with the task-provided credential provider. This may upgrade (or potentially downgrade) the credential provider.", + "loc.input.help.feedUrl": "If this is set, workloadIdentityServiceConnection is required. All other inputs are ignored. Not compatible with nuGetServiceConnections. Feed Url should be in the NuGet service index format, e.g. https://pkgs.dev.azure.com/{ORG_NAME}/{PROJECT}/_packaging/{FEED_NAME}/nuget/v3/index.json/", + "loc.input.label.feedUrl": "Azure Artifacts URL", + "loc.input.help.workloadIdentityServiceConnection": "If this is set, feedUrl is required. All other inputs are ignored.", + "loc.input.label.workloadIdentityServiceConnection": "'Entra Workload ID-backed Azure DevOps user' Service Connection", + "loc.messages.Error_ServiceConnectionExists": "An existing service connection already exists for the endpoint", + "loc.messages.Error_MissingFeedUrlOrServiceConnection": "Both feedUrl and workloadIdentityServiceConnection must be set together.", + "loc.messages.Info_AddingFederatedFeedAuth": "Unable to get federated credentials from service connection", + "loc.messages.Info_SuccessAddingFederatedFeedAuth": "Adding auth information from service connection %s for feed %s", + "loc.messages.FailedToGetServiceConnectionAuth": "Successfully added auth for feed %s." } \ No newline at end of file diff --git a/Tasks/NuGetAuthenticateV1/_buildConfigs/Node20/package-lock.json b/Tasks/NuGetAuthenticateV1/_buildConfigs/Node20/package-lock.json index 2629f15792cd..68ee77d4db68 100644 --- a/Tasks/NuGetAuthenticateV1/_buildConfigs/Node20/package-lock.json +++ b/Tasks/NuGetAuthenticateV1/_buildConfigs/Node20/package-lock.json @@ -10,8 +10,8 @@ "license": "MIT", "dependencies": { "@types/node": "^20.3.1", - "azure-pipelines-task-lib": "^4.0.0-preview", - "azure-pipelines-tasks-artifacts-common": "^2.244.0" + "azure-pipelines-task-lib": "^4.13.0", + "azure-pipelines-tasks-artifacts-common": "^2.244.3" }, "devDependencies": { "typescript": "5.1.6" @@ -39,9 +39,9 @@ } }, "node_modules/adm-zip": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.15.tgz", - "integrity": "sha512-jYPWSeOA8EFoZnucrKCNihqBjoEGQSU4HKgHYQgKNEQ0pQF9a/DYuo/+fAxY76k4qe75LUlLWpAM1QWcBMTOKw==", + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.14.tgz", + "integrity": "sha512-DnyqqifT4Jrcvb8USYjp6FHtBpEIz1mnXu6pTRHZ0RL69LbQYiO+0lDFg5+OKA7U29oWSs3a/i8fhn8ZcceIWg==", "engines": { "node": ">=12.0" } @@ -84,9 +84,9 @@ } }, "node_modules/azure-pipelines-tasks-artifacts-common": { - "version": "2.244.0", - "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-artifacts-common/-/azure-pipelines-tasks-artifacts-common-2.244.0.tgz", - "integrity": "sha512-loWwla6anIIfrovQpVHw1COlij16u+KebYXorzaN3He8XsKMnxt6bZ7tujVF3iOZCDZSMZHrmTvnQCoJACu0Kw==", + "version": "2.244.3", + "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-artifacts-common/-/azure-pipelines-tasks-artifacts-common-2.244.3.tgz", + "integrity": "sha512-PF4dJ2Y6+pF3DcOxqwd1fyillx5UFlRrPXYtwC7ByubrewJPGH55VfPz/iqZuPDZkr/KuB2dM1vVk/22Kfq87Q==", "dependencies": { "@types/fs-extra": "8.0.0", "@types/mocha": "^5.2.6", diff --git a/Tasks/NuGetAuthenticateV1/_buildConfigs/Node20/package.json b/Tasks/NuGetAuthenticateV1/_buildConfigs/Node20/package.json index 0b96b97f346e..79186c007125 100644 --- a/Tasks/NuGetAuthenticateV1/_buildConfigs/Node20/package.json +++ b/Tasks/NuGetAuthenticateV1/_buildConfigs/Node20/package.json @@ -23,9 +23,9 @@ }, "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", "dependencies": { - "azure-pipelines-tasks-artifacts-common": "^2.244.0", - "azure-pipelines-task-lib": "^4.0.0-preview", - "@types/node": "^20.3.1" + "@types/node": "^20.3.1", + "azure-pipelines-task-lib": "^4.13.0", + "azure-pipelines-tasks-artifacts-common": "^2.244.3" }, "devDependencies": { "typescript": "5.1.6" diff --git a/Tasks/NuGetAuthenticateV1/_buildConfigs/Wif/package-lock.json b/Tasks/NuGetAuthenticateV1/_buildConfigs/Wif/package-lock.json new file mode 100644 index 000000000000..68ee77d4db68 --- /dev/null +++ b/Tasks/NuGetAuthenticateV1/_buildConfigs/Wif/package-lock.json @@ -0,0 +1,754 @@ +{ + "name": "nugetauthenticate", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "nugetauthenticate", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@types/node": "^20.3.1", + "azure-pipelines-task-lib": "^4.13.0", + "azure-pipelines-tasks-artifacts-common": "^2.244.3" + }, + "devDependencies": { + "typescript": "5.1.6" + } + }, + "node_modules/@types/fs-extra": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.0.0.tgz", + "integrity": "sha512-bCtL5v9zdbQW86yexOlXWTEGvLNqWxMFyi7gQA7Gcthbezr2cPSOb8SkESVKA937QD5cIwOFLDFt0MQoXOEr9Q==", + "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.8.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.4.tgz", + "integrity": "sha512-ZVPnqU58giiCjSxjVUESDtdPk4QR5WQhhINbc9UBrKLU68MX5BF6kbQzTrkwbolyr0X8ChBpXfavr5mZFKZQ5A==", + "dependencies": { + "undici-types": "~5.25.1" + } + }, + "node_modules/adm-zip": { + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.14.tgz", + "integrity": "sha512-DnyqqifT4Jrcvb8USYjp6FHtBpEIz1mnXu6pTRHZ0RL69LbQYiO+0lDFg5+OKA7U29oWSs3a/i8fhn8ZcceIWg==", + "engines": { + "node": ">=12.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-devops-node-api": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-14.0.2.tgz", + "integrity": "sha512-TwjAEnWnOSZ2oypkDyqppgvJw43qArEfPiJtEWLL3NBgdvAuOuB0xgFz/Eiz4H6Dk0Yv52wCodZxtZvAMhJXwQ==", + "dependencies": { + "tunnel": "0.0.6", + "typed-rest-client": "^2.0.1" + }, + "engines": { + "node": ">= 16.0.0" + } + }, + "node_modules/azure-pipelines-task-lib": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.15.0.tgz", + "integrity": "sha512-Y72FjLTE2CAM9KrBXzc6vjelTBCpdYb2NkyFB0hwksTrhA3q8nsF680dofuTeXztQ94UTpkK27hpgSHnqYf5ZA==", + "dependencies": { + "adm-zip": "^0.5.10", + "minimatch": "3.0.5", + "nodejs-file-downloader": "^4.11.1", + "q": "^1.5.1", + "semver": "^5.1.0", + "shelljs": "^0.8.5", + "uuid": "^3.0.1" + } + }, + "node_modules/azure-pipelines-tasks-artifacts-common": { + "version": "2.244.3", + "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-artifacts-common/-/azure-pipelines-tasks-artifacts-common-2.244.3.tgz", + "integrity": "sha512-PF4dJ2Y6+pF3DcOxqwd1fyillx5UFlRrPXYtwC7ByubrewJPGH55VfPz/iqZuPDZkr/KuB2dM1vVk/22Kfq87Q==", + "dependencies": { + "@types/fs-extra": "8.0.0", + "@types/mocha": "^5.2.6", + "@types/node": "^16.11.39", + "azure-devops-node-api": "^14.0.2", + "azure-pipelines-task-lib": "^4.13.0", + "fs-extra": "8.1.0", + "node-fetch": "^2.7.0", + "semver": "6.3.0" + } + }, + "node_modules/azure-pipelines-tasks-artifacts-common/node_modules/@types/node": { + "version": "16.18.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.0.tgz", + "integrity": "sha512-LqYqYzYvnbCaQfLAwRt0zboqnsViwhZm+vjaMSqcfN36vulAg7Pt0T83q4WZO2YOBw3XdyHi8cQ88H22zmULOA==" + }, + "node_modules/azure-pipelines-tasks-artifacts-common/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "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.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "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": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "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.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "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", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://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/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": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "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.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==" + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "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==" + }, + "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/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.13.0", + "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.13.0.tgz", + "integrity": "sha512-nI2fKnmJWWFZF6SgMPe1iBodKhfpztLKJTtCtNYGhm/9QXmWa/Pk9Sv00qHgzEvNLe1x7hjGDRor7gcm/ChaIQ==", + "dependencies": { + "follow-redirects": "^1.15.6", + "https-proxy-agent": "^5.0.0", + "mime-types": "^2.1.27", + "sanitize-filename": "^1.6.3" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "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": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "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.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/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.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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/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/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/typed-rest-client": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-2.0.2.tgz", + "integrity": "sha512-rmAQM2gZw/PQpK5+5aSs+I6ZBv4PFC2BT1o+0ADS1SgSejA+14EmbI2Lt8uXwkX7oeOMkwFmg0pHKwe8D9IT5A==", + "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/typescript": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/underscore": { + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==" + }, + "node_modules/undici-types": { + "version": "5.25.3", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", + "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==" + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.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/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": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + } +} diff --git a/Tasks/NuGetAuthenticateV1/_buildConfigs/Wif/package.json b/Tasks/NuGetAuthenticateV1/_buildConfigs/Wif/package.json new file mode 100644 index 000000000000..79186c007125 --- /dev/null +++ b/Tasks/NuGetAuthenticateV1/_buildConfigs/Wif/package.json @@ -0,0 +1,33 @@ +{ + "name": "nugetauthenticate", + "version": "0.1.0", + "description": "NuGet Authenticate", + "main": "main.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Microsoft/azure-pipelines-tasks.git" + }, + "keywords": [ + "Azure", + "Pipelines", + "Tasks", + "NuGet" + ], + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "dependencies": { + "@types/node": "^20.3.1", + "azure-pipelines-task-lib": "^4.13.0", + "azure-pipelines-tasks-artifacts-common": "^2.244.3" + }, + "devDependencies": { + "typescript": "5.1.6" + } +} diff --git a/Tasks/NuGetAuthenticateV1/main.ts b/Tasks/NuGetAuthenticateV1/main.ts index 9ecda6dd754a..95a4750fdd37 100644 --- a/Tasks/NuGetAuthenticateV1/main.ts +++ b/Tasks/NuGetAuthenticateV1/main.ts @@ -1,12 +1,17 @@ import * as path from 'path'; import * as tl from 'azure-pipelines-task-lib/task'; -import { installCredProviderToUserProfile, configureCredProvider } from 'azure-pipelines-tasks-artifacts-common/credentialProviderUtils' +#if WIF +import { configureEntraCredProvider } from "azure-pipelines-tasks-artifacts-common/credentialProviderUtils"; +#endif +import { installCredProviderToUserProfile, configureCredProvider} from 'azure-pipelines-tasks-artifacts-common/credentialProviderUtils' import { ProtocolType } from 'azure-pipelines-tasks-artifacts-common/protocols'; import { getPackagingServiceConnections } from 'azure-pipelines-tasks-artifacts-common/serviceConnectionUtils' import { emitTelemetry } from 'azure-pipelines-tasks-artifacts-common/telemetry' async function main(): Promise { let forceReinstallCredentialProvider = null; + let federatedFeedAuthSuccessCount: number = 0; + try { tl.setResourcePath(path.join(__dirname, 'task.json')); @@ -14,16 +19,33 @@ async function main(): Promise { forceReinstallCredentialProvider = tl.getBoolInput("forceReinstallCredentialProvider", false); await installCredProviderToUserProfile(forceReinstallCredentialProvider); +#if WIF + const feedUrl = tl.getInput("feedUrl"); + const entraWifServiceConnectionName = tl.getInput("workloadIdentityServiceConnection"); + + if (feedUrl && entraWifServiceConnectionName) { + tl.debug(tl.loc("Info_AddingFederatedFeedAuth", entraWifServiceConnectionName, feedUrl)); + await configureEntraCredProvider(ProtocolType.NuGet, feedUrl, entraWifServiceConnectionName); + console.log(tl.loc("Info_SuccessAddingFederatedFeedAuth", feedUrl)); + federatedFeedAuthSuccessCount++; + + return; + } else if (feedUrl || entraWifServiceConnectionName) { + throw new Error(tl.loc("Error_MissingFeedUrlOrServiceConnection")); + } +#endif + // Configure the credential provider for both same-organization feeds and service connections - const serviceConnections = getPackagingServiceConnections('nuGetServiceConnections'); + var serviceConnections = getPackagingServiceConnections('nuGetServiceConnections'); await configureCredProvider(ProtocolType.NuGet, serviceConnections); } catch (error) { tl.setResult(tl.TaskResult.Failed, error); } finally { emitTelemetry("Packaging", "NuGetAuthenticateV1", { - 'NuGetAuthenticate.ForceReinstallCredentialProvider': forceReinstallCredentialProvider + 'NuGetAuthenticate.ForceReinstallCredentialProvider': forceReinstallCredentialProvider, + "FederatedFeedAuthCount": federatedFeedAuthSuccessCount }); } } -main(); \ No newline at end of file +main(); diff --git a/Tasks/NuGetAuthenticateV1/package-lock.json b/Tasks/NuGetAuthenticateV1/package-lock.json index 901f924ef755..e0a8b1b763b4 100644 --- a/Tasks/NuGetAuthenticateV1/package-lock.json +++ b/Tasks/NuGetAuthenticateV1/package-lock.json @@ -4,22 +4,6 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "@types/concat-stream": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", - "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", - "requires": { - "@types/node": "*" - } - }, - "@types/form-data": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", - "integrity": "sha1-yayFsqX9GENbjIXZ7LUObWyJP/g=", - "requires": { - "@types/node": "*" - } - }, "@types/fs-extra": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.0.0.tgz", @@ -38,11 +22,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.0.tgz", "integrity": "sha512-wuJwN2KV4tIRz1bu9vq5kSPasJ8IsEjZaP1ZR7KlmdUZvGF/rXy8DmXOVwUD0kAtvtJ7aqMKPqUXC0NUTDbrDg==" }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - }, "adm-zip": { "version": "0.5.15", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.15.tgz", @@ -56,16 +35,6 @@ "debug": "4" } }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, "azure-devops-node-api": { "version": "14.0.2", "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-14.0.2.tgz", @@ -76,23 +45,23 @@ } }, "azure-pipelines-task-lib": { - "version": "4.0.0-preview", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.0.0-preview.tgz", - "integrity": "sha512-BK+VOo42Bec72Wic6Vsm2MaAJezNyF05OYAQS5FuZJM5Z972lZqYpujtSc4BFKUhC3HO+F/Yf4xhAV2tZCzN9Q==", + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.16.0.tgz", + "integrity": "sha512-hjyDi5GI1cFmS2o6GzTFPqloeTZBeaTLOjPn/H3CVr0vV/MV+eYoWszVe9kn7XnRSiv22j3p4Rhw/Sy4v1okxA==", "requires": { + "adm-zip": "^0.5.10", "minimatch": "3.0.5", - "mockery": "^1.7.0", + "nodejs-file-downloader": "^4.11.1", "q": "^1.5.1", - "semver": "^5.1.0", + "semver": "^5.7.2", "shelljs": "^0.8.5", - "sync-request": "6.1.0", "uuid": "^3.0.1" } }, "azure-pipelines-tasks-artifacts-common": { - "version": "2.244.0", - "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-artifacts-common/-/azure-pipelines-tasks-artifacts-common-2.244.0.tgz", - "integrity": "sha512-loWwla6anIIfrovQpVHw1COlij16u+KebYXorzaN3He8XsKMnxt6bZ7tujVF3iOZCDZSMZHrmTvnQCoJACu0Kw==", + "version": "2.244.3", + "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-artifacts-common/-/azure-pipelines-tasks-artifacts-common-2.244.3.tgz", + "integrity": "sha512-PF4dJ2Y6+pF3DcOxqwd1fyillx5UFlRrPXYtwC7ByubrewJPGH55VfPz/iqZuPDZkr/KuB2dM1vVk/22Kfq87Q==", "requires": { "@types/fs-extra": "8.0.0", "@types/mocha": "^5.2.6", @@ -105,30 +74,9 @@ }, "dependencies": { "@types/node": { - "version": "16.18.104", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.104.tgz", - "integrity": "sha512-OF3keVCbfPlkzxnnDBUZJn1RiCJzKeadjiW0xTEb0G1SUJ5gDVb3qnzZr2T4uIFvsbKJbXy1v2DN7e2zaEY7jQ==" - }, - "azure-pipelines-task-lib": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.15.0.tgz", - "integrity": "sha512-Y72FjLTE2CAM9KrBXzc6vjelTBCpdYb2NkyFB0hwksTrhA3q8nsF680dofuTeXztQ94UTpkK27hpgSHnqYf5ZA==", - "requires": { - "adm-zip": "^0.5.10", - "minimatch": "3.0.5", - "nodejs-file-downloader": "^4.11.1", - "q": "^1.5.1", - "semver": "^5.1.0", - "shelljs": "^0.8.5", - "uuid": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" - } - } + "version": "16.18.105", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.105.tgz", + "integrity": "sha512-w2d0Z9yMk07uH3+Cx0N8lqFyi3yjXZxlbYappPj+AsOlT02OyxyiuNoNHdGt6EuiSm8Wtgp2YV7vWg+GMFrvFA==" }, "semver": { "version": "6.3.0", @@ -151,53 +99,22 @@ "concat-map": "0.0.1" } }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "requires": { - "delayed-stream": "~1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" } }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "debug": { "version": "4.3.6", @@ -207,10 +124,15 @@ "ms": "2.1.2" } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } }, "des.js": { "version": "1.1.0", @@ -221,21 +143,24 @@ "minimalistic-assert": "^1.0.0" } }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, "follow-redirects": { "version": "1.15.6", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" }, - "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, "fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -249,39 +174,54 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, - "get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=" - }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" } }, "graceful-fs": { @@ -289,36 +229,30 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "requires": { - "function-bind": "^1.1.1" + "es-define-property": "^1.0.0" } }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, - "http-basic": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", - "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", - "requires": { - "caseless": "^0.12.0", - "concat-stream": "^1.6.2", - "http-response-object": "^3.0.1", - "parse-cache-control": "^1.0.1" - } - }, - "http-response-object": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", - "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "requires": { - "@types/node": "^10.0.3" + "function-bind": "^1.1.2" } }, "https-proxy-agent": { @@ -333,7 +267,7 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "requires": { "once": "^1.3.0", "wrappy": "1" @@ -350,18 +284,13 @@ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" }, "is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", "requires": { - "has": "^1.0.3" + "hasown": "^2.0.2" } }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, "js-md4": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz", @@ -401,11 +330,6 @@ "brace-expansion": "^1.1.7" } }, - "mockery": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/mockery/-/mockery-1.7.0.tgz", - "integrity": "sha1-9O3g2HUMHJcnwnLqLGBiniyaHE8=" - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -431,96 +355,59 @@ } }, "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==" }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "requires": { "wrappy": "1" } }, - "parse-cache-control": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", - "integrity": "sha1-juqz5U+laSD+Fro493+iGqzC104=" - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, "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==" }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "promise": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", - "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", - "requires": { - "asap": "~2.0.6" - } - }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" }, "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "requires": { - "side-channel": "^1.0.4" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "side-channel": "^1.0.6" } }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "requires": { "resolve": "^1.1.6" } }, "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "requires": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, "sanitize-filename": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", @@ -530,9 +417,22 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } }, "shelljs": { "version": "0.8.5", @@ -545,21 +445,14 @@ } }, "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "requires": { - "safe-buffer": "~5.1.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" } }, "supports-preserve-symlinks-flag": { @@ -567,49 +460,6 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, - "sync-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", - "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", - "requires": { - "http-response-object": "^3.0.1", - "sync-rpc": "^1.2.1", - "then-request": "^6.0.0" - } - }, - "sync-rpc": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", - "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", - "requires": { - "get-port": "^3.1.0" - } - }, - "then-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", - "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", - "requires": { - "@types/concat-stream": "^1.6.0", - "@types/form-data": "0.0.33", - "@types/node": "^8.0.0", - "@types/qs": "^6.2.31", - "caseless": "~0.12.0", - "concat-stream": "^1.6.0", - "form-data": "^2.2.0", - "http-basic": "^8.1.1", - "http-response-object": "^3.0.1", - "promise": "^8.0.0", - "qs": "^6.4.0" - }, - "dependencies": { - "@types/node": { - "version": "8.10.66", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", - "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==" - } - } - }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -640,11 +490,6 @@ "underscore": "^1.12.1" } }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, "typescript": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz", @@ -666,11 +511,6 @@ "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==" }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", @@ -693,7 +533,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" } } } diff --git a/Tasks/NuGetAuthenticateV1/package.json b/Tasks/NuGetAuthenticateV1/package.json index 4831a728596d..5f5a09fd3ab5 100644 --- a/Tasks/NuGetAuthenticateV1/package.json +++ b/Tasks/NuGetAuthenticateV1/package.json @@ -23,9 +23,9 @@ }, "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", "dependencies": { - "azure-pipelines-tasks-artifacts-common": "^2.244.0", - "azure-pipelines-task-lib": "^4.0.0-preview", - "@types/node": "10.17.0" + "@types/node": "10.17.0", + "azure-pipelines-task-lib": "^4.13.0", + "azure-pipelines-tasks-artifacts-common": "^2.244.3" }, "devDependencies": { "typescript": "4.0.2" diff --git a/Tasks/NuGetAuthenticateV1/task.json b/Tasks/NuGetAuthenticateV1/task.json index d12c24c9cb53..430f4f8f2bab 100644 --- a/Tasks/NuGetAuthenticateV1/task.json +++ b/Tasks/NuGetAuthenticateV1/task.json @@ -14,7 +14,7 @@ "version": { "Major": 1, "Minor": 244, - "Patch": 0 + "Patch": 3 }, "minimumAgentVersion": "2.144.0", "instanceNameFormat": "NuGet Authenticate", @@ -48,5 +48,11 @@ "argumentFormat": "" } }, - "messages": {} + "messages": { + "Error_ServiceConnectionExists": "An existing service connection already exists for the endpoint", + "Error_MissingFeedUrlOrServiceConnection": "Both feedUrl and workloadIdentityServiceConnection must be set together.", + "FailedToGetServiceConnectionAuth": "Unable to get federated credentials from service connection", + "Info_AddingFederatedFeedAuth": "Adding auth information from service connection %s for feed %s", + "Info_SuccessAddingFederatedFeedAuth": "Successfully added auth for feed %s." + } } \ No newline at end of file diff --git a/Tasks/NuGetAuthenticateV1/task.loc.json b/Tasks/NuGetAuthenticateV1/task.loc.json index 4f1d4c7bce63..12a41f5bc903 100644 --- a/Tasks/NuGetAuthenticateV1/task.loc.json +++ b/Tasks/NuGetAuthenticateV1/task.loc.json @@ -14,7 +14,7 @@ "version": { "Major": 1, "Minor": 244, - "Patch": 0 + "Patch": 3 }, "minimumAgentVersion": "2.144.0", "instanceNameFormat": "ms-resource:loc.instanceNameFormat", @@ -48,5 +48,11 @@ "argumentFormat": "" } }, - "messages": {} + "messages": { + "Error_ServiceConnectionExists": "ms-resource:loc.messages.Error_ServiceConnectionExists", + "Error_MissingFeedUrlOrServiceConnection": "ms-resource:loc.messages.Error_MissingFeedUrlOrServiceConnection", + "FailedToGetServiceConnectionAuth": "ms-resource:loc.messages.FailedToGetServiceConnectionAuth", + "Info_AddingFederatedFeedAuth": "ms-resource:loc.messages.Info_AddingFederatedFeedAuth", + "Info_SuccessAddingFederatedFeedAuth": "ms-resource:loc.messages.Info_SuccessAddingFederatedFeedAuth" + } } \ No newline at end of file diff --git a/Tasks/NuGetAuthenticateV1/taskJsonOverride.json b/Tasks/NuGetAuthenticateV1/taskJsonOverride.json new file mode 100644 index 000000000000..467aa60f9555 --- /dev/null +++ b/Tasks/NuGetAuthenticateV1/taskJsonOverride.json @@ -0,0 +1,41 @@ +{ + "inputs": [ + { + "name": "workloadIdentityServiceConnection", + "label": "'Entra Workload ID-backed Azure DevOps user' Service Connection", + "helpMarkDown": "If this is set, feedUrl is required. All other inputs are ignored.", + "type": "connectedService:workloadidentityuser", + "required": false, + "properties": { + "EditableOptions": "False", + "MultiSelectFlatList": "False" + } + }, + { + "name": "feedUrl", + "label": "Azure Artifacts URL", + "helpMarkDown": "If this is set, workloadIdentityServiceConnection is required. All other inputs are ignored. Not compatible with nuGetServiceConnections. Feed Url should be in the NuGet service index format, e.g. https://pkgs.dev.azure.com/{ORG_NAME}/{PROJECT}/_packaging/{FEED_NAME}/nuget/v3/index.json/", + "type": "string", + "defaultValue": "", + "required": false + }, + { + "name": "forceReinstallCredentialProvider", + "type": "boolean", + "label": "Reinstall the credential provider even if already installed", + "defaultValue": "false", + "helpMarkDown": "If the credential provider is already installed in the user profile, determines if it is overwritten with the task-provided credential provider. This may upgrade (or potentially downgrade) the credential provider." + }, + { + "name": "nuGetServiceConnections", + "type": "connectedService:ExternalNuGetFeed", + "label": "Service connection credentials for feeds outside this organization", + "required": false, + "helpMarkDown": "Comma-separated list of NuGet service connection names for feeds outside this organization/collection. For feeds in this organization/collection, leave this blank; the build’s credentials are used automatically.", + "properties": { + "EditableOptions": "False", + "MultiSelectFlatList": "True" + } + } + ] +} \ No newline at end of file diff --git a/Tasks/NuGetAuthenticateV1/taskJsonOverride.loc.json b/Tasks/NuGetAuthenticateV1/taskJsonOverride.loc.json new file mode 100644 index 000000000000..f32f885c2462 --- /dev/null +++ b/Tasks/NuGetAuthenticateV1/taskJsonOverride.loc.json @@ -0,0 +1,41 @@ +{ + "inputs": [ + { + "name": "workloadIdentityServiceConnection", + "label": "ms-resource:loc.input.label.workloadIdentityServiceConnection", + "helpMarkDown": "ms-resource:loc.input.help.workloadIdentityServiceConnection", + "type": "connectedService:workloadidentityuser", + "required": false, + "properties": { + "EditableOptions": "False", + "MultiSelectFlatList": "False" + } + }, + { + "name": "feedUrl", + "label": "ms-resource:loc.input.label.feedUrl", + "helpMarkDown": "ms-resource:loc.input.help.feedUrl", + "type": "string", + "defaultValue": "", + "required": false + }, + { + "name": "forceReinstallCredentialProvider", + "type": "boolean", + "label": "ms-resource:loc.input.label.forceReinstallCredentialProvider", + "defaultValue": "false", + "helpMarkDown": "ms-resource:loc.input.help.forceReinstallCredentialProvider" + }, + { + "name": "nuGetServiceConnections", + "type": "connectedService:ExternalNuGetFeed", + "label": "ms-resource:loc.input.label.nuGetServiceConnections", + "required": false, + "helpMarkDown": "ms-resource:loc.input.help.nuGetServiceConnections", + "properties": { + "EditableOptions": "False", + "MultiSelectFlatList": "True" + } + } + ] +} \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1.versionmap.txt b/_generated/NuGetAuthenticateV1.versionmap.txt index 1cf752bf801b..499f8f551f57 100644 --- a/_generated/NuGetAuthenticateV1.versionmap.txt +++ b/_generated/NuGetAuthenticateV1.versionmap.txt @@ -1,2 +1,3 @@ -Default|1.244.0 -Node20_229_1|1.244.1 +Default|1.244.3 +Node20_229_1|1.244.4 +wif_242|1.244.5 diff --git a/_generated/NuGetAuthenticateV1/Strings/resources.resjson/en-US/resources.resjson b/_generated/NuGetAuthenticateV1/Strings/resources.resjson/en-US/resources.resjson index 6c52f008fb6e..b772db129a3a 100644 --- a/_generated/NuGetAuthenticateV1/Strings/resources.resjson/en-US/resources.resjson +++ b/_generated/NuGetAuthenticateV1/Strings/resources.resjson/en-US/resources.resjson @@ -6,5 +6,10 @@ "loc.input.label.nuGetServiceConnections": "Service connection credentials for feeds outside this organization", "loc.input.help.nuGetServiceConnections": "Comma-separated list of NuGet service connection names for feeds outside this organization/collection. For feeds in this organization/collection, leave this blank; the build’s credentials are used automatically.", "loc.input.label.forceReinstallCredentialProvider": "Reinstall the credential provider even if already installed", - "loc.input.help.forceReinstallCredentialProvider": "If the credential provider is already installed in the user profile, determines if it is overwritten with the task-provided credential provider. This may upgrade (or potentially downgrade) the credential provider." + "loc.input.help.forceReinstallCredentialProvider": "If the credential provider is already installed in the user profile, determines if it is overwritten with the task-provided credential provider. This may upgrade (or potentially downgrade) the credential provider.", + "loc.messages.Error_ServiceConnectionExists": "An existing service connection already exists for the endpoint", + "loc.messages.Error_MissingFeedUrlOrServiceConnection": "Both feedUrl and workloadIdentityServiceConnection must be set together.", + "loc.messages.FailedToGetServiceConnectionAuth": "Unable to get federated credentials from service connection", + "loc.messages.Info_AddingFederatedFeedAuth": "Adding auth information from service connection %s for feed %s", + "loc.messages.Info_SuccessAddingFederatedFeedAuth": "Successfully added auth for feed %s." } \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1/main.ts b/_generated/NuGetAuthenticateV1/main.ts index 9ecda6dd754a..2f4f924b2d7b 100644 --- a/_generated/NuGetAuthenticateV1/main.ts +++ b/_generated/NuGetAuthenticateV1/main.ts @@ -1,12 +1,14 @@ import * as path from 'path'; import * as tl from 'azure-pipelines-task-lib/task'; -import { installCredProviderToUserProfile, configureCredProvider } from 'azure-pipelines-tasks-artifacts-common/credentialProviderUtils' +import { installCredProviderToUserProfile, configureCredProvider} from 'azure-pipelines-tasks-artifacts-common/credentialProviderUtils' import { ProtocolType } from 'azure-pipelines-tasks-artifacts-common/protocols'; import { getPackagingServiceConnections } from 'azure-pipelines-tasks-artifacts-common/serviceConnectionUtils' import { emitTelemetry } from 'azure-pipelines-tasks-artifacts-common/telemetry' async function main(): Promise { let forceReinstallCredentialProvider = null; + let federatedFeedAuthSuccessCount: number = 0; + try { tl.setResourcePath(path.join(__dirname, 'task.json')); @@ -14,16 +16,18 @@ async function main(): Promise { forceReinstallCredentialProvider = tl.getBoolInput("forceReinstallCredentialProvider", false); await installCredProviderToUserProfile(forceReinstallCredentialProvider); + // Configure the credential provider for both same-organization feeds and service connections - const serviceConnections = getPackagingServiceConnections('nuGetServiceConnections'); + var serviceConnections = getPackagingServiceConnections('nuGetServiceConnections'); await configureCredProvider(ProtocolType.NuGet, serviceConnections); } catch (error) { tl.setResult(tl.TaskResult.Failed, error); } finally { emitTelemetry("Packaging", "NuGetAuthenticateV1", { - 'NuGetAuthenticate.ForceReinstallCredentialProvider': forceReinstallCredentialProvider + 'NuGetAuthenticate.ForceReinstallCredentialProvider': forceReinstallCredentialProvider, + "FederatedFeedAuthCount": federatedFeedAuthSuccessCount }); } } -main(); \ No newline at end of file +main(); diff --git a/_generated/NuGetAuthenticateV1/package-lock.json b/_generated/NuGetAuthenticateV1/package-lock.json index 901f924ef755..e0a8b1b763b4 100644 --- a/_generated/NuGetAuthenticateV1/package-lock.json +++ b/_generated/NuGetAuthenticateV1/package-lock.json @@ -4,22 +4,6 @@ "lockfileVersion": 1, "requires": true, "dependencies": { - "@types/concat-stream": { - "version": "1.6.1", - "resolved": "https://registry.npmjs.org/@types/concat-stream/-/concat-stream-1.6.1.tgz", - "integrity": "sha512-eHE4cQPoj6ngxBZMvVf6Hw7Mh4jMW4U9lpGmS5GBPB9RYxlFg+CHaVN7ErNY4W9XfLIEn20b4VDYaIrbq0q4uA==", - "requires": { - "@types/node": "*" - } - }, - "@types/form-data": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", - "integrity": "sha1-yayFsqX9GENbjIXZ7LUObWyJP/g=", - "requires": { - "@types/node": "*" - } - }, "@types/fs-extra": { "version": "8.0.0", "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.0.0.tgz", @@ -38,11 +22,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.0.tgz", "integrity": "sha512-wuJwN2KV4tIRz1bu9vq5kSPasJ8IsEjZaP1ZR7KlmdUZvGF/rXy8DmXOVwUD0kAtvtJ7aqMKPqUXC0NUTDbrDg==" }, - "@types/qs": { - "version": "6.9.7", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.7.tgz", - "integrity": "sha512-FGa1F62FT09qcrueBA6qYTrJPVDzah9a+493+o2PCXsesWHIn27G98TsSMs3WPNbZIEj4+VJf6saSFpvD+3Zsw==" - }, "adm-zip": { "version": "0.5.15", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.15.tgz", @@ -56,16 +35,6 @@ "debug": "4" } }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=" - }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=" - }, "azure-devops-node-api": { "version": "14.0.2", "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-14.0.2.tgz", @@ -76,23 +45,23 @@ } }, "azure-pipelines-task-lib": { - "version": "4.0.0-preview", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.0.0-preview.tgz", - "integrity": "sha512-BK+VOo42Bec72Wic6Vsm2MaAJezNyF05OYAQS5FuZJM5Z972lZqYpujtSc4BFKUhC3HO+F/Yf4xhAV2tZCzN9Q==", + "version": "4.16.0", + "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.16.0.tgz", + "integrity": "sha512-hjyDi5GI1cFmS2o6GzTFPqloeTZBeaTLOjPn/H3CVr0vV/MV+eYoWszVe9kn7XnRSiv22j3p4Rhw/Sy4v1okxA==", "requires": { + "adm-zip": "^0.5.10", "minimatch": "3.0.5", - "mockery": "^1.7.0", + "nodejs-file-downloader": "^4.11.1", "q": "^1.5.1", - "semver": "^5.1.0", + "semver": "^5.7.2", "shelljs": "^0.8.5", - "sync-request": "6.1.0", "uuid": "^3.0.1" } }, "azure-pipelines-tasks-artifacts-common": { - "version": "2.244.0", - "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-artifacts-common/-/azure-pipelines-tasks-artifacts-common-2.244.0.tgz", - "integrity": "sha512-loWwla6anIIfrovQpVHw1COlij16u+KebYXorzaN3He8XsKMnxt6bZ7tujVF3iOZCDZSMZHrmTvnQCoJACu0Kw==", + "version": "2.244.3", + "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-artifacts-common/-/azure-pipelines-tasks-artifacts-common-2.244.3.tgz", + "integrity": "sha512-PF4dJ2Y6+pF3DcOxqwd1fyillx5UFlRrPXYtwC7ByubrewJPGH55VfPz/iqZuPDZkr/KuB2dM1vVk/22Kfq87Q==", "requires": { "@types/fs-extra": "8.0.0", "@types/mocha": "^5.2.6", @@ -105,30 +74,9 @@ }, "dependencies": { "@types/node": { - "version": "16.18.104", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.104.tgz", - "integrity": "sha512-OF3keVCbfPlkzxnnDBUZJn1RiCJzKeadjiW0xTEb0G1SUJ5gDVb3qnzZr2T4uIFvsbKJbXy1v2DN7e2zaEY7jQ==" - }, - "azure-pipelines-task-lib": { - "version": "4.15.0", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.15.0.tgz", - "integrity": "sha512-Y72FjLTE2CAM9KrBXzc6vjelTBCpdYb2NkyFB0hwksTrhA3q8nsF680dofuTeXztQ94UTpkK27hpgSHnqYf5ZA==", - "requires": { - "adm-zip": "^0.5.10", - "minimatch": "3.0.5", - "nodejs-file-downloader": "^4.11.1", - "q": "^1.5.1", - "semver": "^5.1.0", - "shelljs": "^0.8.5", - "uuid": "^3.0.1" - }, - "dependencies": { - "semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" - } - } + "version": "16.18.105", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.105.tgz", + "integrity": "sha512-w2d0Z9yMk07uH3+Cx0N8lqFyi3yjXZxlbYappPj+AsOlT02OyxyiuNoNHdGt6EuiSm8Wtgp2YV7vWg+GMFrvFA==" }, "semver": { "version": "6.3.0", @@ -151,53 +99,22 @@ "concat-map": "0.0.1" } }, - "buffer-from": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", - "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==" - }, "call-bind": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.2.tgz", - "integrity": "sha512-7O+FbCihrB5WGbFYesctwmTKae6rOiIzmz1icreWJ+0aA7LJfuqhEso2T9ncpcFtzMQtzXf2QGGueWJGTYsqrA==", - "requires": { - "function-bind": "^1.1.1", - "get-intrinsic": "^1.0.2" - } - }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", "requires": { - "delayed-stream": "~1.0.0" + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" } }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" - }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", - "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" - } - }, - "core-util-is": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.3.tgz", - "integrity": "sha512-ZQBvi1DcpJ4GDqanjucZ2Hj3wEO5pZDS89BWbkcrvdxksJorwUDDZamX9ldFkp9aw2lmBDLgkObEA4DWNJ9FYQ==" + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, "debug": { "version": "4.3.6", @@ -207,10 +124,15 @@ "ms": "2.1.2" } }, - "delayed-stream": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=" + "define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "requires": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + } }, "des.js": { "version": "1.1.0", @@ -221,21 +143,24 @@ "minimalistic-assert": "^1.0.0" } }, + "es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "requires": { + "get-intrinsic": "^1.2.4" + } + }, + "es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==" + }, "follow-redirects": { "version": "1.15.6", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.6.tgz", "integrity": "sha512-wWN62YITEaOpSK584EZXJafH1AGpO8RVgElfkuXbTOrPX4fIfOyEpW/CsiNd8JdYrAoOvafRTOEnvsO++qCqFA==" }, - "form-data": { - "version": "2.5.1", - "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", - "integrity": "sha512-m21N3WOmEEURgk6B9GLOE4RuWOFf28Lhh9qGYeNlGq4VDXUlJy2th2slBNU8Gp8EzloYZOibZJ7t5ecIrFSjVA==", - "requires": { - "asynckit": "^0.4.0", - "combined-stream": "^1.0.6", - "mime-types": "^2.1.12" - } - }, "fs-extra": { "version": "8.1.0", "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", @@ -249,39 +174,54 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, "function-bind": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", - "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, "get-intrinsic": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.1.1.tgz", - "integrity": "sha512-kWZrnVM42QCiEA2Ig1bG8zjoIMOgxWwYCEeNdwY6Tv/cOSeGpcoX4pXHfKUxNKVoArnrEr2e9srnAxxGIraS9Q==", + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", "requires": { - "function-bind": "^1.1.1", - "has": "^1.0.3", - "has-symbols": "^1.0.1" + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" } }, - "get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=" - }, "glob": { - "version": "7.2.0", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", - "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", - "minimatch": "^3.0.4", + "minimatch": "^3.1.1", "once": "^1.3.0", "path-is-absolute": "^1.0.0" + }, + "dependencies": { + "minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "requires": { + "brace-expansion": "^1.1.7" + } + } + } + }, + "gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "requires": { + "get-intrinsic": "^1.1.3" } }, "graceful-fs": { @@ -289,36 +229,30 @@ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==" }, - "has": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", - "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", "requires": { - "function-bind": "^1.1.1" + "es-define-property": "^1.0.0" } }, + "has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==" + }, "has-symbols": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, - "http-basic": { - "version": "8.1.3", - "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-8.1.3.tgz", - "integrity": "sha512-/EcDMwJZh3mABI2NhGfHOGOeOZITqfkEO4p/xK+l3NpyncIHUQBoMvCSF/b5GqvKtySC2srL/GGG3+EtlqlmCw==", - "requires": { - "caseless": "^0.12.0", - "concat-stream": "^1.6.2", - "http-response-object": "^3.0.1", - "parse-cache-control": "^1.0.1" - } - }, - "http-response-object": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-3.0.2.tgz", - "integrity": "sha512-bqX0XTF6fnXSQcEJ2Iuyr75yVakyjIDCqroJQ/aHfSdlM743Cwqoi2nDYMzLGWUcuTWGWy8AAvOKXTfiv6q9RA==", + "hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", "requires": { - "@types/node": "^10.0.3" + "function-bind": "^1.1.2" } }, "https-proxy-agent": { @@ -333,7 +267,7 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", "requires": { "once": "^1.3.0", "wrappy": "1" @@ -350,18 +284,13 @@ "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" }, "is-core-module": { - "version": "2.8.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", - "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "version": "2.15.0", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.0.tgz", + "integrity": "sha512-Dd+Lb2/zvk9SKy1TGCt1wFJFo/MWBPMX5x7KcvLajWTGuomczdQX61PvY5yK6SVACwpoexWo81IfFyoKY2QnTA==", "requires": { - "has": "^1.0.3" + "hasown": "^2.0.2" } }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE=" - }, "js-md4": { "version": "0.3.2", "resolved": "https://registry.npmjs.org/js-md4/-/js-md4-0.3.2.tgz", @@ -401,11 +330,6 @@ "brace-expansion": "^1.1.7" } }, - "mockery": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/mockery/-/mockery-1.7.0.tgz", - "integrity": "sha1-9O3g2HUMHJcnwnLqLGBiniyaHE8=" - }, "ms": { "version": "2.1.2", "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", @@ -431,96 +355,59 @@ } }, "object-inspect": { - "version": "1.12.0", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.12.0.tgz", - "integrity": "sha512-Ho2z80bVIvJloH+YzRmpZVQe87+qASmBUKZDWgx9cu+KDrX2ZDH/3tMy+gXbZETVGs2M8YdxObOh7XAtim9Y0g==" + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==" }, "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", "requires": { "wrappy": "1" } }, - "parse-cache-control": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/parse-cache-control/-/parse-cache-control-1.0.1.tgz", - "integrity": "sha1-juqz5U+laSD+Fro493+iGqzC104=" - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=" + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, "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==" }, - "process-nextick-args": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", - "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag==" - }, - "promise": { - "version": "8.1.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.1.0.tgz", - "integrity": "sha512-W04AqnILOL/sPRXziNicCjSNRruLAuIHEOVBazepu0545DDNGYHz7ar9ZgZ1fMU8/MA4mVxp5rkBWRi6OXIy3Q==", - "requires": { - "asap": "~2.0.6" - } - }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=" + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" }, "qs": { - "version": "6.10.3", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.10.3.tgz", - "integrity": "sha512-wr7M2E0OFRfIfJZjKGieI8lBKb7fRCH4Fv5KNPEs7gJ8jadvotdsS08PzOKR7opXhZ/Xkjtt3WF9g38drmyRqQ==", - "requires": { - "side-channel": "^1.0.4" - } - }, - "readable-stream": { - "version": "2.3.7", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz", - "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==", + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" + "side-channel": "^1.0.6" } }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", "requires": { "resolve": "^1.1.6" } }, "resolve": { - "version": "1.22.0", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", - "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", "requires": { - "is-core-module": "^2.8.1", + "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" } }, - "safe-buffer": { - "version": "5.1.2", - "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", - "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" - }, "sanitize-filename": { "version": "1.6.3", "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", @@ -530,9 +417,22 @@ } }, "semver": { - "version": "5.7.1", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", - "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==" + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + }, + "set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "requires": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + } }, "shelljs": { "version": "0.8.5", @@ -545,21 +445,14 @@ } }, "side-channel": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - } - }, - "string_decoder": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", - "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", "requires": { - "safe-buffer": "~5.1.0" + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" } }, "supports-preserve-symlinks-flag": { @@ -567,49 +460,6 @@ "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, - "sync-request": { - "version": "6.1.0", - "resolved": "https://registry.npmjs.org/sync-request/-/sync-request-6.1.0.tgz", - "integrity": "sha512-8fjNkrNlNCrVc/av+Jn+xxqfCjYaBoHqCsDz6mt030UMxJGr+GSfCV1dQt2gRtlL63+VPidwDVLr7V2OcTSdRw==", - "requires": { - "http-response-object": "^3.0.1", - "sync-rpc": "^1.2.1", - "then-request": "^6.0.0" - } - }, - "sync-rpc": { - "version": "1.3.6", - "resolved": "https://registry.npmjs.org/sync-rpc/-/sync-rpc-1.3.6.tgz", - "integrity": "sha512-J8jTXuZzRlvU7HemDgHi3pGnh/rkoqR/OZSjhTyyZrEkkYQbk7Z33AXp37mkPfPpfdOuj7Ex3H/TJM1z48uPQw==", - "requires": { - "get-port": "^3.1.0" - } - }, - "then-request": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/then-request/-/then-request-6.0.2.tgz", - "integrity": "sha512-3ZBiG7JvP3wbDzA9iNY5zJQcHL4jn/0BWtXIkagfz7QgOL/LqjCEOBQuJNZfu0XYnv5JhKh+cDxCPM4ILrqruA==", - "requires": { - "@types/concat-stream": "^1.6.0", - "@types/form-data": "0.0.33", - "@types/node": "^8.0.0", - "@types/qs": "^6.2.31", - "caseless": "~0.12.0", - "concat-stream": "^1.6.0", - "form-data": "^2.2.0", - "http-basic": "^8.1.1", - "http-response-object": "^3.0.1", - "promise": "^8.0.0", - "qs": "^6.4.0" - }, - "dependencies": { - "@types/node": { - "version": "8.10.66", - "resolved": "https://registry.npmjs.org/@types/node/-/node-8.10.66.tgz", - "integrity": "sha512-tktOkFUA4kXx2hhhrB8bIFb5TbwzS4uOhKEmwiD+NoiL0qtP2OQ9mFldbgD4dV1djrlBYP6eBuQZiWjuHUpqFw==" - } - } - }, "tr46": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/tr46/-/tr46-0.0.3.tgz", @@ -640,11 +490,6 @@ "underscore": "^1.12.1" } }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=" - }, "typescript": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz", @@ -666,11 +511,6 @@ "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.5.tgz", "integrity": "sha512-Xn0w3MtiQ6zoz2vFyUVruaCL53O/DwUvkEeOvj+uulMm0BkUGYWmBYVyElqZaSLhY6ZD0ulfU3aBra2aVT4xfA==" }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" - }, "uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", @@ -693,7 +533,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" } } } diff --git a/_generated/NuGetAuthenticateV1/package.json b/_generated/NuGetAuthenticateV1/package.json index 4831a728596d..5f5a09fd3ab5 100644 --- a/_generated/NuGetAuthenticateV1/package.json +++ b/_generated/NuGetAuthenticateV1/package.json @@ -23,9 +23,9 @@ }, "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", "dependencies": { - "azure-pipelines-tasks-artifacts-common": "^2.244.0", - "azure-pipelines-task-lib": "^4.0.0-preview", - "@types/node": "10.17.0" + "@types/node": "10.17.0", + "azure-pipelines-task-lib": "^4.13.0", + "azure-pipelines-tasks-artifacts-common": "^2.244.3" }, "devDependencies": { "typescript": "4.0.2" diff --git a/_generated/NuGetAuthenticateV1/task.json b/_generated/NuGetAuthenticateV1/task.json index 7fae997fe724..52c825dc0ecc 100644 --- a/_generated/NuGetAuthenticateV1/task.json +++ b/_generated/NuGetAuthenticateV1/task.json @@ -14,7 +14,7 @@ "version": { "Major": 1, "Minor": 244, - "Patch": 0 + "Patch": 3 }, "minimumAgentVersion": "2.144.0", "instanceNameFormat": "NuGet Authenticate", @@ -48,9 +48,16 @@ "argumentFormat": "" } }, - "messages": {}, + "messages": { + "Error_ServiceConnectionExists": "An existing service connection already exists for the endpoint", + "Error_MissingFeedUrlOrServiceConnection": "Both feedUrl and workloadIdentityServiceConnection must be set together.", + "FailedToGetServiceConnectionAuth": "Unable to get federated credentials from service connection", + "Info_AddingFederatedFeedAuth": "Adding auth information from service connection %s for feed %s", + "Info_SuccessAddingFederatedFeedAuth": "Successfully added auth for feed %s." + }, "_buildConfigMapping": { - "Default": "1.244.0", - "Node20_229_1": "1.244.1" + "Default": "1.244.3", + "Node20_229_1": "1.244.4", + "wif_242": "1.244.5" } } \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1/task.loc.json b/_generated/NuGetAuthenticateV1/task.loc.json index 7e1754d46657..568db4cc5d5d 100644 --- a/_generated/NuGetAuthenticateV1/task.loc.json +++ b/_generated/NuGetAuthenticateV1/task.loc.json @@ -14,7 +14,7 @@ "version": { "Major": 1, "Minor": 244, - "Patch": 0 + "Patch": 3 }, "minimumAgentVersion": "2.144.0", "instanceNameFormat": "ms-resource:loc.instanceNameFormat", @@ -48,9 +48,16 @@ "argumentFormat": "" } }, - "messages": {}, + "messages": { + "Error_ServiceConnectionExists": "ms-resource:loc.messages.Error_ServiceConnectionExists", + "Error_MissingFeedUrlOrServiceConnection": "ms-resource:loc.messages.Error_MissingFeedUrlOrServiceConnection", + "FailedToGetServiceConnectionAuth": "ms-resource:loc.messages.FailedToGetServiceConnectionAuth", + "Info_AddingFederatedFeedAuth": "ms-resource:loc.messages.Info_AddingFederatedFeedAuth", + "Info_SuccessAddingFederatedFeedAuth": "ms-resource:loc.messages.Info_SuccessAddingFederatedFeedAuth" + }, "_buildConfigMapping": { - "Default": "1.244.0", - "Node20_229_1": "1.244.1" + "Default": "1.244.3", + "Node20_229_1": "1.244.4", + "wif_242": "1.244.5" } } \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1/taskJsonOverride.json b/_generated/NuGetAuthenticateV1/taskJsonOverride.json new file mode 100644 index 000000000000..467aa60f9555 --- /dev/null +++ b/_generated/NuGetAuthenticateV1/taskJsonOverride.json @@ -0,0 +1,41 @@ +{ + "inputs": [ + { + "name": "workloadIdentityServiceConnection", + "label": "'Entra Workload ID-backed Azure DevOps user' Service Connection", + "helpMarkDown": "If this is set, feedUrl is required. All other inputs are ignored.", + "type": "connectedService:workloadidentityuser", + "required": false, + "properties": { + "EditableOptions": "False", + "MultiSelectFlatList": "False" + } + }, + { + "name": "feedUrl", + "label": "Azure Artifacts URL", + "helpMarkDown": "If this is set, workloadIdentityServiceConnection is required. All other inputs are ignored. Not compatible with nuGetServiceConnections. Feed Url should be in the NuGet service index format, e.g. https://pkgs.dev.azure.com/{ORG_NAME}/{PROJECT}/_packaging/{FEED_NAME}/nuget/v3/index.json/", + "type": "string", + "defaultValue": "", + "required": false + }, + { + "name": "forceReinstallCredentialProvider", + "type": "boolean", + "label": "Reinstall the credential provider even if already installed", + "defaultValue": "false", + "helpMarkDown": "If the credential provider is already installed in the user profile, determines if it is overwritten with the task-provided credential provider. This may upgrade (or potentially downgrade) the credential provider." + }, + { + "name": "nuGetServiceConnections", + "type": "connectedService:ExternalNuGetFeed", + "label": "Service connection credentials for feeds outside this organization", + "required": false, + "helpMarkDown": "Comma-separated list of NuGet service connection names for feeds outside this organization/collection. For feeds in this organization/collection, leave this blank; the build’s credentials are used automatically.", + "properties": { + "EditableOptions": "False", + "MultiSelectFlatList": "True" + } + } + ] +} \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1/taskJsonOverride.loc.json b/_generated/NuGetAuthenticateV1/taskJsonOverride.loc.json new file mode 100644 index 000000000000..f32f885c2462 --- /dev/null +++ b/_generated/NuGetAuthenticateV1/taskJsonOverride.loc.json @@ -0,0 +1,41 @@ +{ + "inputs": [ + { + "name": "workloadIdentityServiceConnection", + "label": "ms-resource:loc.input.label.workloadIdentityServiceConnection", + "helpMarkDown": "ms-resource:loc.input.help.workloadIdentityServiceConnection", + "type": "connectedService:workloadidentityuser", + "required": false, + "properties": { + "EditableOptions": "False", + "MultiSelectFlatList": "False" + } + }, + { + "name": "feedUrl", + "label": "ms-resource:loc.input.label.feedUrl", + "helpMarkDown": "ms-resource:loc.input.help.feedUrl", + "type": "string", + "defaultValue": "", + "required": false + }, + { + "name": "forceReinstallCredentialProvider", + "type": "boolean", + "label": "ms-resource:loc.input.label.forceReinstallCredentialProvider", + "defaultValue": "false", + "helpMarkDown": "ms-resource:loc.input.help.forceReinstallCredentialProvider" + }, + { + "name": "nuGetServiceConnections", + "type": "connectedService:ExternalNuGetFeed", + "label": "ms-resource:loc.input.label.nuGetServiceConnections", + "required": false, + "helpMarkDown": "ms-resource:loc.input.help.nuGetServiceConnections", + "properties": { + "EditableOptions": "False", + "MultiSelectFlatList": "True" + } + } + ] +} \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1_Node20/Strings/resources.resjson/en-US/resources.resjson b/_generated/NuGetAuthenticateV1_Node20/Strings/resources.resjson/en-US/resources.resjson index 6c52f008fb6e..b772db129a3a 100644 --- a/_generated/NuGetAuthenticateV1_Node20/Strings/resources.resjson/en-US/resources.resjson +++ b/_generated/NuGetAuthenticateV1_Node20/Strings/resources.resjson/en-US/resources.resjson @@ -6,5 +6,10 @@ "loc.input.label.nuGetServiceConnections": "Service connection credentials for feeds outside this organization", "loc.input.help.nuGetServiceConnections": "Comma-separated list of NuGet service connection names for feeds outside this organization/collection. For feeds in this organization/collection, leave this blank; the build’s credentials are used automatically.", "loc.input.label.forceReinstallCredentialProvider": "Reinstall the credential provider even if already installed", - "loc.input.help.forceReinstallCredentialProvider": "If the credential provider is already installed in the user profile, determines if it is overwritten with the task-provided credential provider. This may upgrade (or potentially downgrade) the credential provider." + "loc.input.help.forceReinstallCredentialProvider": "If the credential provider is already installed in the user profile, determines if it is overwritten with the task-provided credential provider. This may upgrade (or potentially downgrade) the credential provider.", + "loc.messages.Error_ServiceConnectionExists": "An existing service connection already exists for the endpoint", + "loc.messages.Error_MissingFeedUrlOrServiceConnection": "Both feedUrl and workloadIdentityServiceConnection must be set together.", + "loc.messages.FailedToGetServiceConnectionAuth": "Unable to get federated credentials from service connection", + "loc.messages.Info_AddingFederatedFeedAuth": "Adding auth information from service connection %s for feed %s", + "loc.messages.Info_SuccessAddingFederatedFeedAuth": "Successfully added auth for feed %s." } \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1_Node20/main.ts b/_generated/NuGetAuthenticateV1_Node20/main.ts index 9ecda6dd754a..2f4f924b2d7b 100644 --- a/_generated/NuGetAuthenticateV1_Node20/main.ts +++ b/_generated/NuGetAuthenticateV1_Node20/main.ts @@ -1,12 +1,14 @@ import * as path from 'path'; import * as tl from 'azure-pipelines-task-lib/task'; -import { installCredProviderToUserProfile, configureCredProvider } from 'azure-pipelines-tasks-artifacts-common/credentialProviderUtils' +import { installCredProviderToUserProfile, configureCredProvider} from 'azure-pipelines-tasks-artifacts-common/credentialProviderUtils' import { ProtocolType } from 'azure-pipelines-tasks-artifacts-common/protocols'; import { getPackagingServiceConnections } from 'azure-pipelines-tasks-artifacts-common/serviceConnectionUtils' import { emitTelemetry } from 'azure-pipelines-tasks-artifacts-common/telemetry' async function main(): Promise { let forceReinstallCredentialProvider = null; + let federatedFeedAuthSuccessCount: number = 0; + try { tl.setResourcePath(path.join(__dirname, 'task.json')); @@ -14,16 +16,18 @@ async function main(): Promise { forceReinstallCredentialProvider = tl.getBoolInput("forceReinstallCredentialProvider", false); await installCredProviderToUserProfile(forceReinstallCredentialProvider); + // Configure the credential provider for both same-organization feeds and service connections - const serviceConnections = getPackagingServiceConnections('nuGetServiceConnections'); + var serviceConnections = getPackagingServiceConnections('nuGetServiceConnections'); await configureCredProvider(ProtocolType.NuGet, serviceConnections); } catch (error) { tl.setResult(tl.TaskResult.Failed, error); } finally { emitTelemetry("Packaging", "NuGetAuthenticateV1", { - 'NuGetAuthenticate.ForceReinstallCredentialProvider': forceReinstallCredentialProvider + 'NuGetAuthenticate.ForceReinstallCredentialProvider': forceReinstallCredentialProvider, + "FederatedFeedAuthCount": federatedFeedAuthSuccessCount }); } } -main(); \ No newline at end of file +main(); diff --git a/_generated/NuGetAuthenticateV1_Node20/package-lock.json b/_generated/NuGetAuthenticateV1_Node20/package-lock.json index 2629f15792cd..68ee77d4db68 100644 --- a/_generated/NuGetAuthenticateV1_Node20/package-lock.json +++ b/_generated/NuGetAuthenticateV1_Node20/package-lock.json @@ -10,8 +10,8 @@ "license": "MIT", "dependencies": { "@types/node": "^20.3.1", - "azure-pipelines-task-lib": "^4.0.0-preview", - "azure-pipelines-tasks-artifacts-common": "^2.244.0" + "azure-pipelines-task-lib": "^4.13.0", + "azure-pipelines-tasks-artifacts-common": "^2.244.3" }, "devDependencies": { "typescript": "5.1.6" @@ -39,9 +39,9 @@ } }, "node_modules/adm-zip": { - "version": "0.5.15", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.15.tgz", - "integrity": "sha512-jYPWSeOA8EFoZnucrKCNihqBjoEGQSU4HKgHYQgKNEQ0pQF9a/DYuo/+fAxY76k4qe75LUlLWpAM1QWcBMTOKw==", + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.14.tgz", + "integrity": "sha512-DnyqqifT4Jrcvb8USYjp6FHtBpEIz1mnXu6pTRHZ0RL69LbQYiO+0lDFg5+OKA7U29oWSs3a/i8fhn8ZcceIWg==", "engines": { "node": ">=12.0" } @@ -84,9 +84,9 @@ } }, "node_modules/azure-pipelines-tasks-artifacts-common": { - "version": "2.244.0", - "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-artifacts-common/-/azure-pipelines-tasks-artifacts-common-2.244.0.tgz", - "integrity": "sha512-loWwla6anIIfrovQpVHw1COlij16u+KebYXorzaN3He8XsKMnxt6bZ7tujVF3iOZCDZSMZHrmTvnQCoJACu0Kw==", + "version": "2.244.3", + "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-artifacts-common/-/azure-pipelines-tasks-artifacts-common-2.244.3.tgz", + "integrity": "sha512-PF4dJ2Y6+pF3DcOxqwd1fyillx5UFlRrPXYtwC7ByubrewJPGH55VfPz/iqZuPDZkr/KuB2dM1vVk/22Kfq87Q==", "dependencies": { "@types/fs-extra": "8.0.0", "@types/mocha": "^5.2.6", diff --git a/_generated/NuGetAuthenticateV1_Node20/package.json b/_generated/NuGetAuthenticateV1_Node20/package.json index 0b96b97f346e..79186c007125 100644 --- a/_generated/NuGetAuthenticateV1_Node20/package.json +++ b/_generated/NuGetAuthenticateV1_Node20/package.json @@ -23,9 +23,9 @@ }, "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", "dependencies": { - "azure-pipelines-tasks-artifacts-common": "^2.244.0", - "azure-pipelines-task-lib": "^4.0.0-preview", - "@types/node": "^20.3.1" + "@types/node": "^20.3.1", + "azure-pipelines-task-lib": "^4.13.0", + "azure-pipelines-tasks-artifacts-common": "^2.244.3" }, "devDependencies": { "typescript": "5.1.6" diff --git a/_generated/NuGetAuthenticateV1_Node20/task.json b/_generated/NuGetAuthenticateV1_Node20/task.json index 711f59e728bb..08e576ae376f 100644 --- a/_generated/NuGetAuthenticateV1_Node20/task.json +++ b/_generated/NuGetAuthenticateV1_Node20/task.json @@ -14,7 +14,7 @@ "version": { "Major": 1, "Minor": 244, - "Patch": 1 + "Patch": 4 }, "minimumAgentVersion": "2.144.0", "instanceNameFormat": "NuGet Authenticate", @@ -52,9 +52,16 @@ "argumentFormat": "" } }, - "messages": {}, + "messages": { + "Error_ServiceConnectionExists": "An existing service connection already exists for the endpoint", + "Error_MissingFeedUrlOrServiceConnection": "Both feedUrl and workloadIdentityServiceConnection must be set together.", + "FailedToGetServiceConnectionAuth": "Unable to get federated credentials from service connection", + "Info_AddingFederatedFeedAuth": "Adding auth information from service connection %s for feed %s", + "Info_SuccessAddingFederatedFeedAuth": "Successfully added auth for feed %s." + }, "_buildConfigMapping": { - "Default": "1.244.0", - "Node20_229_1": "1.244.1" + "Default": "1.244.3", + "Node20_229_1": "1.244.4", + "wif_242": "1.244.5" } } \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1_Node20/task.loc.json b/_generated/NuGetAuthenticateV1_Node20/task.loc.json index a98238447060..02258c67511e 100644 --- a/_generated/NuGetAuthenticateV1_Node20/task.loc.json +++ b/_generated/NuGetAuthenticateV1_Node20/task.loc.json @@ -14,7 +14,7 @@ "version": { "Major": 1, "Minor": 244, - "Patch": 1 + "Patch": 4 }, "minimumAgentVersion": "2.144.0", "instanceNameFormat": "ms-resource:loc.instanceNameFormat", @@ -52,9 +52,16 @@ "argumentFormat": "" } }, - "messages": {}, + "messages": { + "Error_ServiceConnectionExists": "ms-resource:loc.messages.Error_ServiceConnectionExists", + "Error_MissingFeedUrlOrServiceConnection": "ms-resource:loc.messages.Error_MissingFeedUrlOrServiceConnection", + "FailedToGetServiceConnectionAuth": "ms-resource:loc.messages.FailedToGetServiceConnectionAuth", + "Info_AddingFederatedFeedAuth": "ms-resource:loc.messages.Info_AddingFederatedFeedAuth", + "Info_SuccessAddingFederatedFeedAuth": "ms-resource:loc.messages.Info_SuccessAddingFederatedFeedAuth" + }, "_buildConfigMapping": { - "Default": "1.244.0", - "Node20_229_1": "1.244.1" + "Default": "1.244.3", + "Node20_229_1": "1.244.4", + "wif_242": "1.244.5" } } \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1_Node20/taskJsonOverride.json b/_generated/NuGetAuthenticateV1_Node20/taskJsonOverride.json new file mode 100644 index 000000000000..467aa60f9555 --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Node20/taskJsonOverride.json @@ -0,0 +1,41 @@ +{ + "inputs": [ + { + "name": "workloadIdentityServiceConnection", + "label": "'Entra Workload ID-backed Azure DevOps user' Service Connection", + "helpMarkDown": "If this is set, feedUrl is required. All other inputs are ignored.", + "type": "connectedService:workloadidentityuser", + "required": false, + "properties": { + "EditableOptions": "False", + "MultiSelectFlatList": "False" + } + }, + { + "name": "feedUrl", + "label": "Azure Artifacts URL", + "helpMarkDown": "If this is set, workloadIdentityServiceConnection is required. All other inputs are ignored. Not compatible with nuGetServiceConnections. Feed Url should be in the NuGet service index format, e.g. https://pkgs.dev.azure.com/{ORG_NAME}/{PROJECT}/_packaging/{FEED_NAME}/nuget/v3/index.json/", + "type": "string", + "defaultValue": "", + "required": false + }, + { + "name": "forceReinstallCredentialProvider", + "type": "boolean", + "label": "Reinstall the credential provider even if already installed", + "defaultValue": "false", + "helpMarkDown": "If the credential provider is already installed in the user profile, determines if it is overwritten with the task-provided credential provider. This may upgrade (or potentially downgrade) the credential provider." + }, + { + "name": "nuGetServiceConnections", + "type": "connectedService:ExternalNuGetFeed", + "label": "Service connection credentials for feeds outside this organization", + "required": false, + "helpMarkDown": "Comma-separated list of NuGet service connection names for feeds outside this organization/collection. For feeds in this organization/collection, leave this blank; the build’s credentials are used automatically.", + "properties": { + "EditableOptions": "False", + "MultiSelectFlatList": "True" + } + } + ] +} \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1_Node20/taskJsonOverride.loc.json b/_generated/NuGetAuthenticateV1_Node20/taskJsonOverride.loc.json new file mode 100644 index 000000000000..f32f885c2462 --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Node20/taskJsonOverride.loc.json @@ -0,0 +1,41 @@ +{ + "inputs": [ + { + "name": "workloadIdentityServiceConnection", + "label": "ms-resource:loc.input.label.workloadIdentityServiceConnection", + "helpMarkDown": "ms-resource:loc.input.help.workloadIdentityServiceConnection", + "type": "connectedService:workloadidentityuser", + "required": false, + "properties": { + "EditableOptions": "False", + "MultiSelectFlatList": "False" + } + }, + { + "name": "feedUrl", + "label": "ms-resource:loc.input.label.feedUrl", + "helpMarkDown": "ms-resource:loc.input.help.feedUrl", + "type": "string", + "defaultValue": "", + "required": false + }, + { + "name": "forceReinstallCredentialProvider", + "type": "boolean", + "label": "ms-resource:loc.input.label.forceReinstallCredentialProvider", + "defaultValue": "false", + "helpMarkDown": "ms-resource:loc.input.help.forceReinstallCredentialProvider" + }, + { + "name": "nuGetServiceConnections", + "type": "connectedService:ExternalNuGetFeed", + "label": "ms-resource:loc.input.label.nuGetServiceConnections", + "required": false, + "helpMarkDown": "ms-resource:loc.input.help.nuGetServiceConnections", + "properties": { + "EditableOptions": "False", + "MultiSelectFlatList": "True" + } + } + ] +} \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1_Wif/.npmrc b/_generated/NuGetAuthenticateV1_Wif/.npmrc new file mode 100644 index 000000000000..5fca0d518be7 --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Wif/.npmrc @@ -0,0 +1 @@ +scripts-prepend-node-path=true diff --git a/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/de-DE/resources.resjson b/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/de-DE/resources.resjson new file mode 100644 index 000000000000..bf090922d674 --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/de-DE/resources.resjson @@ -0,0 +1,10 @@ +{ + "loc.friendlyName": "NuGet-Authentifizierung", + "loc.helpMarkDown": "[Weitere Informationen zu dieser Aufgabe](https://aka.ms/NuGetAuthenticateTask)", + "loc.description": "Konfigurieren Sie NuGet-Tools für die Authentifizierung bei Azure Artifacts und anderen NuGet-Repositorys. Erfordert NuGet >= 4.8.5385, .NET >= 2.1.400 oder MSBuild >= 15.8.166.59604", + "loc.instanceNameFormat": "NuGet-Authentifizierung", + "loc.input.label.nuGetServiceConnections": "Anmeldeinformationen für Dienstverbindungen für Feeds außerhalb dieser Organisation", + "loc.input.help.nuGetServiceConnections": "Durch Trennzeichen getrennte Liste mit NuGet-Dienstverbindungsnamen für Feeds außerhalb dieser Organisation/Sammlung. Lassen Sie dieses Feld für Feeds in dieser Organisation/Sammlung leer. Es werden automatisch die Anmeldeinformationen des Builds verwendet.", + "loc.input.label.forceReinstallCredentialProvider": "Anmeldeinformationsanbieter neu installieren, auch wenn er bereits installiert ist", + "loc.input.help.forceReinstallCredentialProvider": "Wenn der Anmeldeinformationsanbieter bereits im Benutzerprofil installiert ist, wird bestimmt, ob er mit dem durch die Aufgabe angegebenen Anmeldeinformationsanbieter überschrieben wird. Hierdurch wird möglicherweise ein Upgrade (oder Downgrade) für den Anmeldeinformationsanbieter durchgeführt." +} \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/en-US/resources.resjson b/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/en-US/resources.resjson new file mode 100644 index 000000000000..ec422c7b6566 --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/en-US/resources.resjson @@ -0,0 +1,19 @@ +{ + "loc.friendlyName": "NuGet authenticate", + "loc.helpMarkDown": "[Learn more about this task](https://aka.ms/NuGetAuthenticateTask)", + "loc.description": "Configure NuGet tools to authenticate with Azure Artifacts and other NuGet repositories. Requires NuGet >= 4.8.5385, dotnet >= 6, or MSBuild >= 15.8.166.59604", + "loc.instanceNameFormat": "NuGet Authenticate", + "loc.input.label.workloadIdentityServiceConnection": "'Entra Workload ID-backed Azure DevOps user' Service Connection", + "loc.input.help.workloadIdentityServiceConnection": "If this is set, feedUrl is required. All other inputs are ignored.", + "loc.input.label.feedUrl": "Azure Artifacts URL", + "loc.input.help.feedUrl": "If this is set, workloadIdentityServiceConnection is required. All other inputs are ignored. Not compatible with nuGetServiceConnections. Feed Url should be in the NuGet service index format, e.g. https://pkgs.dev.azure.com/{ORG_NAME}/{PROJECT}/_packaging/{FEED_NAME}/nuget/v3/index.json/", + "loc.input.label.forceReinstallCredentialProvider": "Reinstall the credential provider even if already installed", + "loc.input.help.forceReinstallCredentialProvider": "If the credential provider is already installed in the user profile, determines if it is overwritten with the task-provided credential provider. This may upgrade (or potentially downgrade) the credential provider.", + "loc.input.label.nuGetServiceConnections": "Service connection credentials for feeds outside this organization", + "loc.input.help.nuGetServiceConnections": "Comma-separated list of NuGet service connection names for feeds outside this organization/collection. For feeds in this organization/collection, leave this blank; the build’s credentials are used automatically.", + "loc.messages.Error_ServiceConnectionExists": "An existing service connection already exists for the endpoint", + "loc.messages.Error_MissingFeedUrlOrServiceConnection": "Both feedUrl and workloadIdentityServiceConnection must be set together.", + "loc.messages.FailedToGetServiceConnectionAuth": "Unable to get federated credentials from service connection", + "loc.messages.Info_AddingFederatedFeedAuth": "Adding auth information from service connection %s for feed %s", + "loc.messages.Info_SuccessAddingFederatedFeedAuth": "Successfully added auth for feed %s." +} \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/es-ES/resources.resjson b/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/es-ES/resources.resjson new file mode 100644 index 000000000000..f2faed8820a7 --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/es-ES/resources.resjson @@ -0,0 +1,10 @@ +{ + "loc.friendlyName": "Autenticación de NuGet", + "loc.helpMarkDown": "[Obtener más información acerca de esta tarea](https://aka.ms/NuGetAuthenticateTask)", + "loc.description": "Configure las herramientas de NuGet para autenticar con Azure Artifacts y otros repositorios de NuGet. Requiere NuGet >= 4.8.5385, dotnet >= 2.1.400 o MSBuild >= 15.8.166.59604", + "loc.instanceNameFormat": "Autenticación de NuGet", + "loc.input.label.nuGetServiceConnections": "Credenciales de conexión de servicio para fuentes fuera de esta organización", + "loc.input.help.nuGetServiceConnections": "Lista separada por comas de nombres de conexión de servicio NuGet para fuentes que se encuentran fuera de esta organización o colección. Déjela en blanco para las fuentes de esta organización o colección; las credenciales de la compilación se usan de forma automática.", + "loc.input.label.forceReinstallCredentialProvider": "Reinstalar el proveedor de credenciales, aunque ya esté instalado", + "loc.input.help.forceReinstallCredentialProvider": "Si el proveedor de credenciales ya está instalado en el perfil de usuario, determina si se sobrescribe con el proveedor de credenciales proporcionado por la tarea. Esto puede actualizar (o posiblemente cambiar a una versión anterior) el proveedor de credenciales." +} \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/fr-FR/resources.resjson b/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/fr-FR/resources.resjson new file mode 100644 index 000000000000..0c112fac4863 --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/fr-FR/resources.resjson @@ -0,0 +1,10 @@ +{ + "loc.friendlyName": "Authentification NuGet", + "loc.helpMarkDown": "[En savoir plus sur cette tâche](https://aka.ms/NuGetAuthenticateTask)", + "loc.description": "Configurez les outils NuGet pour l'authentification auprès d'Azure Artifacts et d'autres dépôts NuGet. Nécessite NuGet >= 4.8.5385, dotnet >= 2.1.400 ou MSBuild >= 15.8.166.59604", + "loc.instanceNameFormat": "Authentification NuGet", + "loc.input.label.nuGetServiceConnections": "Informations d'identification de connexion de service pour les flux situés en dehors de cette organisation", + "loc.input.help.nuGetServiceConnections": "Liste d'éléments séparés par des virgules correspondant à des noms de connexions de service NuGet pour les flux situés en dehors de cette organisation/collection. Pour les flux présents dans cette organisation/collection, n'indiquez aucune valeur. Les informations d'identification de la build sont utilisées automatiquement.", + "loc.input.label.forceReinstallCredentialProvider": "Réinstaller le fournisseur d'informations d'identification même s'il est déjà installé", + "loc.input.help.forceReinstallCredentialProvider": "Si le fournisseur d'informations d'identification est déjà installé dans le profil utilisateur, détermine s'il est remplacé par le fournisseur d'informations d'identification indiqué par la tâche. Cela peut entraîner une mise à niveau (ou éventuellement un passage à une version antérieure) du fournisseur d'informations d'identification." +} \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/it-IT/resources.resjson b/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/it-IT/resources.resjson new file mode 100644 index 000000000000..2df39b8d9c6d --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/it-IT/resources.resjson @@ -0,0 +1,10 @@ +{ + "loc.friendlyName": "Autenticazione NuGet", + "loc.helpMarkDown": "[Altre informazioni su questa attività](https://aka.ms/NuGetAuthenticateTask)", + "loc.description": "Configura gli strumenti NuGet per l'autenticazione con Azure Artifacts e altri repository NuGet. Richiede NuGet >= 4.8.5385, .NET >= 2.1.400 oppure MSBuild >= 15.8.166.59604", + "loc.instanceNameFormat": "Autenticazione NuGet", + "loc.input.label.nuGetServiceConnections": "Credenziali di connessione al servizio per feed esterni all'organizzazione", + "loc.input.help.nuGetServiceConnections": "Elenco di nomi di connessione al servizio NuGet delimitato da virgole per i feed esterni a questa organizzazione/raccolta. Per i feed in questa organizzazione/raccolta, lasciare vuoto questo campo. Verranno usate automaticamente le credenziali della compilazione.", + "loc.input.label.forceReinstallCredentialProvider": "Reinstalla il provider di credenziali anche se è già installato", + "loc.input.help.forceReinstallCredentialProvider": "Se il provider di credenziali è già installato nel profilo utente, determina se viene sovrascritto con il provider di credenziali specificato dall'attività. Potrebbe causare l'aggiornamento o il downgrade del provider di credenziali." +} \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/ja-JP/resources.resjson b/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/ja-JP/resources.resjson new file mode 100644 index 000000000000..666b6e92bd29 --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/ja-JP/resources.resjson @@ -0,0 +1,10 @@ +{ + "loc.friendlyName": "NuGet 認証", + "loc.helpMarkDown": "[このタスクの詳細を表示](https://aka.ms/NuGetAuthenticateTask)", + "loc.description": "Azure Artifacts とその他の NuGet リポジトリで認証するように NuGet ツールを構成します。NuGet 4.8.5385 以上、dotnet 2.1.400 以上、MSBuild 15.8.166.59604 以上が必要です", + "loc.instanceNameFormat": "NuGet 認証", + "loc.input.label.nuGetServiceConnections": "この組織外のフィードへのサービス接続の資格情報", + "loc.input.help.nuGetServiceConnections": "この組織またはコレクション外のフィードへの NuGet サービス接続名のコンマ区切りリストです。この組織またはコレクション内のフィードの場合は空白のままにします。ビルドの資格情報が自動的に使用されます。", + "loc.input.label.forceReinstallCredentialProvider": "資格情報プロバイダーが既にインストールされている場合でも再インストールする", + "loc.input.help.forceReinstallCredentialProvider": "資格情報プロバイダーがユーザー プロファイルに既にインストールされている場合に、タスクで指定された資格情報プロバイダーでそれを上書きするかどうかを決定します。これにより、資格情報プロバイダーがアップグレード (場合によってはダウングレード) されることがあります。" +} \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/ko-KR/resources.resjson b/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/ko-KR/resources.resjson new file mode 100644 index 000000000000..33a75e90b4c8 --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/ko-KR/resources.resjson @@ -0,0 +1,10 @@ +{ + "loc.friendlyName": "NuGet 인증", + "loc.helpMarkDown": "[이 작업에 대한 자세한 정보](https://aka.ms/NuGetAuthenticateTask)", + "loc.description": "Azure Artifacts 및 기타 NuGet 리포지토리를 사용하여 인증하도록 NuGet 도구를 구성합니다. NuGet >= 4.8.5385, dotnet >= 2.1.400 또는 MSBuild >= 15.8.166.59604가 필요합니다.", + "loc.instanceNameFormat": "NuGet 인증", + "loc.input.label.nuGetServiceConnections": "이 조직 외부 피드에 대한 서비스 연결 자격 증명", + "loc.input.help.nuGetServiceConnections": "이 조직/컬렉션 외부 피드에 대한 쉼표로 구분된 NuGet 서비스 연결 이름 목록입니다. 이 조직/컬렉션 피드의 경우 이 필드를 비워 두세요. 빌드의 자격 증명이 자동으로 사용됩니다.", + "loc.input.label.forceReinstallCredentialProvider": "자격 증명 공급자를 이미 설치한 경우에만 다시 설치합니다.", + "loc.input.help.forceReinstallCredentialProvider": "자격 증명 공급자가 사용자 프로필에 이미 설치되어 있는 경우 작업에서 제공하는 자격 증명 공급자로 덮어쓸지 여부를 결정합니다. 이는 자격 증명 공급자를 업그레이드하거나 잠재적으로 다운그레이드할 수 있습니다." +} \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/ru-RU/resources.resjson b/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/ru-RU/resources.resjson new file mode 100644 index 000000000000..4663b516b3e8 --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/ru-RU/resources.resjson @@ -0,0 +1,10 @@ +{ + "loc.friendlyName": "Проверка подлинности NuGet", + "loc.helpMarkDown": "[См. дополнительные сведения об этой задаче](https://aka.ms/NuGetAuthenticateTask)", + "loc.description": "Настройте средства NuGet для проверки подлинности с помощью Azure Artifacts и других репозиториев NuGet. Требуется NuGet >= 4.8.5385, dotnet >= 2.1.400 или MSBuild >= 15.8.166.59604", + "loc.instanceNameFormat": "Проверка подлинности NuGet", + "loc.input.label.nuGetServiceConnections": "Учетные данные подключения службы для веб-каналов за пределами этой организации", + "loc.input.help.nuGetServiceConnections": "Разделенный запятыми список имен подключений к службе NuGet для веб-каналов за пределами этой организации или коллекции. Для веб-каналов в этой организации или коллекции оставьте это поле пустым; учетные данные сборки используются автоматически.", + "loc.input.label.forceReinstallCredentialProvider": "Переустановить поставщик учетных данных, даже если он уже установлен", + "loc.input.help.forceReinstallCredentialProvider": "Если поставщик учетных данных уже установлен в профиле пользователя, параметр определяет, перезаписывается ли он поставщиком учетных данных, предоставленным задачей. Это может привести к обновлению (или, возможно, использованию более ранней версии) поставщика учетных данных." +} \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/zh-CN/resources.resjson b/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/zh-CN/resources.resjson new file mode 100644 index 000000000000..3a3965f34934 --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/zh-CN/resources.resjson @@ -0,0 +1,10 @@ +{ + "loc.friendlyName": "NuGet 身份验证", + "loc.helpMarkDown": "[详细了解此任务](https://aka.ms/NuGetAuthenticateTask)", + "loc.description": "配置 NuGet 工具以使用 Azure Artifacts 和其他 NuGet 存储库进行身份验证。要求 NuGet >= 4.8.5385、dotnet >= 2.1.400 或 MSBuild >= 15.8.166.59604", + "loc.instanceNameFormat": "NuGet 身份验证", + "loc.input.label.nuGetServiceConnections": "此组织外部源的服务连接凭据", + "loc.input.help.nuGetServiceConnections": "此组织/集合外部源的 NuGet 服务连接名称的逗号分隔列表。对于此组织/集合中的源,请将此项留空;将自动使用内部版本的凭据。", + "loc.input.label.forceReinstallCredentialProvider": "重新安装凭据提供程序(即使已安装)", + "loc.input.help.forceReinstallCredentialProvider": "如果已在用户配置文件中安装凭据提供程序,请确定它是否被任务提供的凭据提供程序覆盖。这可能会升级(或可能降级)凭据提供程序。" +} \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/zh-TW/resources.resjson b/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/zh-TW/resources.resjson new file mode 100644 index 000000000000..30afab8c883c --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Wif/Strings/resources.resjson/zh-TW/resources.resjson @@ -0,0 +1,10 @@ +{ + "loc.friendlyName": "NuGet 驗證", + "loc.helpMarkDown": "[深入了解此工作](https://aka.ms/NuGetAuthenticateTask)", + "loc.description": "設定用來向 Azure Artifacts 及其他 NuGet 存放庫進行驗證的 NuGet 工具。需要 NuGet >= 4.8.5385、dotnet >= 2.1.400 或 MSBuild >= 15.8.166.59604", + "loc.instanceNameFormat": "NuGet 驗證", + "loc.input.label.nuGetServiceConnections": "此組織外部摘要的服務連線認證", + "loc.input.help.nuGetServiceConnections": "此組織/集合外部摘要的 NuGet 服務連線名稱逗點分隔清單。如需此組織/集合中的摘要,請將此項保留空白; 系統會自動使用組建的認證。", + "loc.input.label.forceReinstallCredentialProvider": "即使已安裝認證提供者,也會重新安裝", + "loc.input.help.forceReinstallCredentialProvider": "如果使用者設定檔中已安裝認證提供者,則會決定是否使用工作提供的認證提供者加以覆寫。這可能會將認證提供者升級 (也可能降級)。" +} \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1_Wif/icon.png b/_generated/NuGetAuthenticateV1_Wif/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..4140f9bd9693f66a5521dd4f77a87d28a01b3b13 GIT binary patch literal 1621 zcmV-b2CDgqP)(9@`Ml40EBlx@ooKQ?7_**hnFNc05P1cJp0A5oL`kKsIrA$PZvD9Pg`5}XS0z@ z0idT#GVGM>SwE&q4l#2xfaL!Uup(^iZZq)cc-Gbc!0Qp**XA1?2?kGI=r}kveHSr3 zD4F_-677y+&wS#BE-X{1(**p;gwOh-p#yV$=s+^LbRtLJ>^PKKS#l(8=?N!#V!p@L zGzSL&VBb`3rDA^fNJicIR~|T1W++uX%*-`GiRkPXfC$h9p~Ek*qCw%x2KtuB^ITul zJblg|00x=;zD!}AbW}hY80ZZKlK?Q3oZc{5rZ4;BvN2@=idFT<*}x1JfSJgseh>&m z1QI~257-#PWY|NS*0wYqJO|)rL&@CLBZbO=@5WTXQUpgz#3#y_O4%q`5=zwuztDsr z_`MpU5igdsn$WZ=jHv@#mxx5nFK@Uh5*c*`U}mv1p84(5Q*u?oQAnn39Q`|oc2h&T zq>!=XMT5^ZuOZNLRU;xHFF-)VC-CqR(SJvK(><;L`zEI!>5n@*{zxk%rz_C1Hnwf< zKv&oR1NiD_7B7DvN8VNoh9Cm2?G7Q@?12y(dZUD!!}>bm=A3u%#Ib1w+g2DGDPa5k zm!T_cRD}RMaCH!`-_g3LEHDE{Ph??P3eu4{oRUx^A9V%zr@*&Yq{2wNfc2M~Xl>AI zd>-xzLKk&Q$ki&6F*05RD@NXCj1+Kp4ZuJm(U>YJla)duX`{*K$_TG6;MErg004=U z4W%SlF)}4?uTj^92o)U#M>0wk#{RJq+zS5CL>Yxe)WD3D?5ei1C9H~SaJ`;V3Y7{2 z4E#A|;qAexSskA)OT6-Ze9^%H01T815>CE4&}tv^)V$?aKm4mnFVF zmc^O8^Pl2d1qGQ`P^JJB*8`}{`QT^~gQLa&6tpVIC}tUUQGpdhNd|LW0Gu1Qi?J0^ zFP^`#8GVI4poC{qPn7q>eK)c1l36n14;r;MZvKc z9qskYXs&g~yyx`=frJZyqf{n90-7Y0a}uloRs`m1>qv=NU0QJ#J`F390Rp^U4MGsS zI^}DwxxS?(7xIXr&N|2;SVe|iR;XAE>7Zsr{2sR!3~+e748K={N3TADfFUMa^Sm@j zdo`WV(c+(1^hCnKzTt%psE>Y5qdjUs2m!;Rp|g>8x&lP}^igL>M|W2PG;RKBeCf+^ zlq(k>TmvTy`1oK3S9S(KLZBz6!>@}^T>(a;!5w`abi6TOV9l!Lc{}3ZXbD^18%DC= z{#R|+@jUK({}fhr2Vt5X_zexc9b#8+EV#F>^iPxN>kcQieS1cgZzNv8FNf3f7F^iW z@bua+Zs`i3$*Zl*Wzqjv9;Ei8%$(3A4%c! zJ!8sWC`p_c&SQMCh+N)*BQKtET_ZFGbhO9(Sl-zHuUEh$2pgA)bayj0t&N0+fCY@3 zp^4PBlNIfQUna!$Co>9Co!wJh-DWfI1{covnMpVEPM`_Kiip6P81D|6{M5Q|_|!Sy z`2fy})BZ&Eo+9Is@jPxVIn-uL_~!V`IzvP-G|rnko#`<72UDX@dSk)8bG82k23VUh TEYhhc00000NkvXXu0mjfEIQ~M literal 0 HcmV?d00001 diff --git a/_generated/NuGetAuthenticateV1_Wif/icon.svg b/_generated/NuGetAuthenticateV1_Wif/icon.svg new file mode 100644 index 000000000000..76379b002043 --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Wif/icon.svg @@ -0,0 +1,10 @@ + + + + + + + + + + diff --git a/_generated/NuGetAuthenticateV1_Wif/main.ts b/_generated/NuGetAuthenticateV1_Wif/main.ts new file mode 100644 index 000000000000..9339e76f8ef5 --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Wif/main.ts @@ -0,0 +1,47 @@ +import * as path from 'path'; +import * as tl from 'azure-pipelines-task-lib/task'; +import { configureEntraCredProvider } from "azure-pipelines-tasks-artifacts-common/credentialProviderUtils"; +import { installCredProviderToUserProfile, configureCredProvider} from 'azure-pipelines-tasks-artifacts-common/credentialProviderUtils' +import { ProtocolType } from 'azure-pipelines-tasks-artifacts-common/protocols'; +import { getPackagingServiceConnections } from 'azure-pipelines-tasks-artifacts-common/serviceConnectionUtils' +import { emitTelemetry } from 'azure-pipelines-tasks-artifacts-common/telemetry' + +async function main(): Promise { + let forceReinstallCredentialProvider = null; + let federatedFeedAuthSuccessCount: number = 0; + + try { + tl.setResourcePath(path.join(__dirname, 'task.json')); + + // Install the credential provider + forceReinstallCredentialProvider = tl.getBoolInput("forceReinstallCredentialProvider", false); + await installCredProviderToUserProfile(forceReinstallCredentialProvider); + + const feedUrl = tl.getInput("feedUrl"); + const entraWifServiceConnectionName = tl.getInput("workloadIdentityServiceConnection"); + + if (feedUrl && entraWifServiceConnectionName) { + tl.debug(tl.loc("Info_AddingFederatedFeedAuth", entraWifServiceConnectionName, feedUrl)); + await configureEntraCredProvider(ProtocolType.NuGet, feedUrl, entraWifServiceConnectionName); + console.log(tl.loc("Info_SuccessAddingFederatedFeedAuth", feedUrl)); + federatedFeedAuthSuccessCount++; + + return; + } else if (feedUrl || entraWifServiceConnectionName) { + throw new Error(tl.loc("Error_MissingFeedUrlOrServiceConnection")); + } + + // Configure the credential provider for both same-organization feeds and service connections + var serviceConnections = getPackagingServiceConnections('nuGetServiceConnections'); + await configureCredProvider(ProtocolType.NuGet, serviceConnections); + } catch (error) { + tl.setResult(tl.TaskResult.Failed, error); + } finally { + emitTelemetry("Packaging", "NuGetAuthenticateV1", { + 'NuGetAuthenticate.ForceReinstallCredentialProvider': forceReinstallCredentialProvider, + "FederatedFeedAuthCount": federatedFeedAuthSuccessCount + }); + } +} + +main(); diff --git a/_generated/NuGetAuthenticateV1_Wif/make.json b/_generated/NuGetAuthenticateV1_Wif/make.json new file mode 100644 index 000000000000..9311fa3d97a7 --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Wif/make.json @@ -0,0 +1,22 @@ +{ + "rm": [ + { + "items": [ + "node_modules/azure-pipelines-tasks-artifacts-common/node_modules/azure-pipelines-task-lib" + ], + "options": "-Rf" + } + ], + "externals": { + "archivePackages": [ + { + "url": "https://vstsagenttools.blob.core.windows.net/tools/NuGetCredProvider/1.0.9/c.zip", + "dest": "./ArtifactsCredProvider/" + }, + { + "url": "https://vstsagenttools.blob.core.windows.net/tools/NuGetCredProvider/1.0.9/n6.zip", + "dest": "./ArtifactsCredProviderNet6/" + } + ] + } +} \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1_Wif/package-lock.json b/_generated/NuGetAuthenticateV1_Wif/package-lock.json new file mode 100644 index 000000000000..68ee77d4db68 --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Wif/package-lock.json @@ -0,0 +1,754 @@ +{ + "name": "nugetauthenticate", + "version": "0.1.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "nugetauthenticate", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@types/node": "^20.3.1", + "azure-pipelines-task-lib": "^4.13.0", + "azure-pipelines-tasks-artifacts-common": "^2.244.3" + }, + "devDependencies": { + "typescript": "5.1.6" + } + }, + "node_modules/@types/fs-extra": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@types/fs-extra/-/fs-extra-8.0.0.tgz", + "integrity": "sha512-bCtL5v9zdbQW86yexOlXWTEGvLNqWxMFyi7gQA7Gcthbezr2cPSOb8SkESVKA937QD5cIwOFLDFt0MQoXOEr9Q==", + "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.8.4", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.8.4.tgz", + "integrity": "sha512-ZVPnqU58giiCjSxjVUESDtdPk4QR5WQhhINbc9UBrKLU68MX5BF6kbQzTrkwbolyr0X8ChBpXfavr5mZFKZQ5A==", + "dependencies": { + "undici-types": "~5.25.1" + } + }, + "node_modules/adm-zip": { + "version": "0.5.14", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.14.tgz", + "integrity": "sha512-DnyqqifT4Jrcvb8USYjp6FHtBpEIz1mnXu6pTRHZ0RL69LbQYiO+0lDFg5+OKA7U29oWSs3a/i8fhn8ZcceIWg==", + "engines": { + "node": ">=12.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-devops-node-api": { + "version": "14.0.2", + "resolved": "https://registry.npmjs.org/azure-devops-node-api/-/azure-devops-node-api-14.0.2.tgz", + "integrity": "sha512-TwjAEnWnOSZ2oypkDyqppgvJw43qArEfPiJtEWLL3NBgdvAuOuB0xgFz/Eiz4H6Dk0Yv52wCodZxtZvAMhJXwQ==", + "dependencies": { + "tunnel": "0.0.6", + "typed-rest-client": "^2.0.1" + }, + "engines": { + "node": ">= 16.0.0" + } + }, + "node_modules/azure-pipelines-task-lib": { + "version": "4.15.0", + "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.15.0.tgz", + "integrity": "sha512-Y72FjLTE2CAM9KrBXzc6vjelTBCpdYb2NkyFB0hwksTrhA3q8nsF680dofuTeXztQ94UTpkK27hpgSHnqYf5ZA==", + "dependencies": { + "adm-zip": "^0.5.10", + "minimatch": "3.0.5", + "nodejs-file-downloader": "^4.11.1", + "q": "^1.5.1", + "semver": "^5.1.0", + "shelljs": "^0.8.5", + "uuid": "^3.0.1" + } + }, + "node_modules/azure-pipelines-tasks-artifacts-common": { + "version": "2.244.3", + "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-artifacts-common/-/azure-pipelines-tasks-artifacts-common-2.244.3.tgz", + "integrity": "sha512-PF4dJ2Y6+pF3DcOxqwd1fyillx5UFlRrPXYtwC7ByubrewJPGH55VfPz/iqZuPDZkr/KuB2dM1vVk/22Kfq87Q==", + "dependencies": { + "@types/fs-extra": "8.0.0", + "@types/mocha": "^5.2.6", + "@types/node": "^16.11.39", + "azure-devops-node-api": "^14.0.2", + "azure-pipelines-task-lib": "^4.13.0", + "fs-extra": "8.1.0", + "node-fetch": "^2.7.0", + "semver": "6.3.0" + } + }, + "node_modules/azure-pipelines-tasks-artifacts-common/node_modules/@types/node": { + "version": "16.18.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.0.tgz", + "integrity": "sha512-LqYqYzYvnbCaQfLAwRt0zboqnsViwhZm+vjaMSqcfN36vulAg7Pt0T83q4WZO2YOBw3XdyHi8cQ88H22zmULOA==" + }, + "node_modules/azure-pipelines-tasks-artifacts-common/node_modules/semver": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", + "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", + "bin": { + "semver": "bin/semver.js" + } + }, + "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.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=" + }, + "node_modules/debug": { + "version": "4.3.6", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.6.tgz", + "integrity": "sha512-O/09Bd4Z1fBrU4VzkhFqVgpPzaGbw6Sm9FEkBT1A/YBXQFGuuSxa1dN2nxgxS34JmKXqYx8CZAwEVoJFImUXIg==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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==", + "dependencies": { + "inherits": "^2.0.1", + "minimalistic-assert": "^1.0.0" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "engines": { + "node": ">= 0.4" + } + }, + "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": "8.1.0", + "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-8.1.0.tgz", + "integrity": "sha512-yhlQgA6mnOJUKOsRUFsgJdQCvkKhcz8tlZG5HBQfReYZy46OwLcY+Zia0mtdHsOo9y/hP+CxMN0TU9QxoOtG4g==", + "dependencies": { + "graceful-fs": "^4.2.0", + "jsonfile": "^4.0.0", + "universalify": "^0.1.0" + }, + "engines": { + "node": ">=6 <7 || >=8" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=" + }, + "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.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.0.tgz", + "integrity": "sha512-lmLf6gtyrPq8tTjSmrO94wBeQbFR3HbLHbuyD69wuyQkImp2hWqMGB47OX65FBkPffO641IP9jWa1z4ivqG26Q==", + "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", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.10", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.10.tgz", + "integrity": "sha512-9ByhssR2fPVsNZj478qUUbKfmL0+t5BDVyjShtyZZLiK7ZDAArFFfopyOTj0M05wE2tJPisA4iTnnXl2YoPvOA==" + }, + "node_modules/has": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", + "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", + "dependencies": { + "function-bind": "^1.1.1" + }, + "engines": { + "node": ">= 0.4.0" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://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/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": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", + "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.8.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", + "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", + "dependencies": { + "has": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "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==" + }, + "node_modules/jsonfile": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-4.0.0.tgz", + "integrity": "sha1-h3Gq4HmbZAdrdmQPygWPnBDjPss=", + "optionalDependencies": { + "graceful-fs": "^4.1.6" + } + }, + "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==" + }, + "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/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.13.0", + "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.13.0.tgz", + "integrity": "sha512-nI2fKnmJWWFZF6SgMPe1iBodKhfpztLKJTtCtNYGhm/9QXmWa/Pk9Sv00qHgzEvNLe1x7hjGDRor7gcm/ChaIQ==", + "dependencies": { + "follow-redirects": "^1.15.6", + "https-proxy-agent": "^5.0.0", + "mime-types": "^2.1.27", + "sanitize-filename": "^1.6.3" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", + "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": "sha1-fjL3W0E4EpHQRhHxvxQQmsAGUdc=", + "deprecated": "You or someone you depend on is using Q, the JavaScript Promise library that gave JavaScript developers strong feelings about promises. They can almost certainly migrate to the native JavaScript promise now. Thank you literally everyone for joining me in this bet against the odds. Be excellent to each other.\n\n(For a CapTP with native promises, see @endo/eventual-send and @endo/captp)", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.13.0", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", + "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", + "dependencies": { + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve": { + "version": "1.22.0", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", + "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", + "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.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.1.tgz", + "integrity": "sha512-sauaDf/PZdVgrLTNYHRtpXa1iRiKcaebiKQ1BJdpQlWH2lCvexQdX55snPFyK7QzpudqbCI0qXFfOasHdyNDGQ==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/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.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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/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/tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } + }, + "node_modules/typed-rest-client": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-2.0.2.tgz", + "integrity": "sha512-rmAQM2gZw/PQpK5+5aSs+I6ZBv4PFC2BT1o+0ADS1SgSejA+14EmbI2Lt8uXwkX7oeOMkwFmg0pHKwe8D9IT5A==", + "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/typescript": { + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/underscore": { + "version": "1.13.7", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.7.tgz", + "integrity": "sha512-GMXzWtsc57XAtguZgaQViUOzs0KTkk8ojr3/xAxXLITqf/3EMwxC0inyETfDFjH/Krbhuep0HNbbjI9i/q3F3g==" + }, + "node_modules/undici-types": { + "version": "5.25.3", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.25.3.tgz", + "integrity": "sha512-Ga1jfYwRn7+cP9v8auvEXN1rX3sWqlayd4HP7OKk4mZWylEmu3KzXDUGrQUN6Ol7qo1gPvB2e5gX6udnyEPgdA==" + }, + "node_modules/universalify": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/universalify/-/universalify-0.1.2.tgz", + "integrity": "sha512-rBJeI5CXAlmy1pV+617WB9J63U6XcazHHF2f2dbJix4XzpUF0RS3Zbj0FGIOCAva5P/d/GBOYaACQ1w+0azUkg==", + "engines": { + "node": ">= 4.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/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": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=" + } + } +} diff --git a/_generated/NuGetAuthenticateV1_Wif/package.json b/_generated/NuGetAuthenticateV1_Wif/package.json new file mode 100644 index 000000000000..79186c007125 --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Wif/package.json @@ -0,0 +1,33 @@ +{ + "name": "nugetauthenticate", + "version": "0.1.0", + "description": "NuGet Authenticate", + "main": "main.js", + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + }, + "repository": { + "type": "git", + "url": "git+https://github.com/Microsoft/azure-pipelines-tasks.git" + }, + "keywords": [ + "Azure", + "Pipelines", + "Tasks", + "NuGet" + ], + "author": "Microsoft Corporation", + "license": "MIT", + "bugs": { + "url": "https://github.com/Microsoft/azure-pipelines-tasks/issues" + }, + "homepage": "https://github.com/Microsoft/azure-pipelines-tasks#readme", + "dependencies": { + "@types/node": "^20.3.1", + "azure-pipelines-task-lib": "^4.13.0", + "azure-pipelines-tasks-artifacts-common": "^2.244.3" + }, + "devDependencies": { + "typescript": "5.1.6" + } +} diff --git a/_generated/NuGetAuthenticateV1_Wif/task.json b/_generated/NuGetAuthenticateV1_Wif/task.json new file mode 100644 index 000000000000..560a7cb9f7df --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Wif/task.json @@ -0,0 +1,86 @@ +{ + "id": "f5fd8599-ccfa-4d6e-b965-4d14bed7097b", + "name": "NuGetAuthenticate", + "friendlyName": "NuGet authenticate", + "description": "Configure NuGet tools to authenticate with Azure Artifacts and other NuGet repositories. Requires NuGet >= 4.8.5385, dotnet >= 6, or MSBuild >= 15.8.166.59604", + "author": "Microsoft Corporation", + "helpUrl": "https://aka.ms/NuGetAuthenticateTask", + "helpMarkDown": "[Learn more about this task](https://aka.ms/NuGetAuthenticateTask)", + "category": "Package", + "runsOn": [ + "Agent", + "DeploymentGroup" + ], + "version": { + "Major": 1, + "Minor": 244, + "Patch": 5 + }, + "minimumAgentVersion": "2.144.0", + "instanceNameFormat": "NuGet Authenticate", + "inputs": [ + { + "name": "workloadIdentityServiceConnection", + "label": "'Entra Workload ID-backed Azure DevOps user' Service Connection", + "helpMarkDown": "If this is set, feedUrl is required. All other inputs are ignored.", + "type": "connectedService:workloadidentityuser", + "required": false, + "properties": { + "EditableOptions": "False", + "MultiSelectFlatList": "False" + } + }, + { + "name": "feedUrl", + "label": "Azure Artifacts URL", + "helpMarkDown": "If this is set, workloadIdentityServiceConnection is required. All other inputs are ignored. Not compatible with nuGetServiceConnections. Feed Url should be in the NuGet service index format, e.g. https://pkgs.dev.azure.com/{ORG_NAME}/{PROJECT}/_packaging/{FEED_NAME}/nuget/v3/index.json/", + "type": "string", + "defaultValue": "", + "required": false + }, + { + "name": "forceReinstallCredentialProvider", + "type": "boolean", + "label": "Reinstall the credential provider even if already installed", + "defaultValue": "false", + "helpMarkDown": "If the credential provider is already installed in the user profile, determines if it is overwritten with the task-provided credential provider. This may upgrade (or potentially downgrade) the credential provider." + }, + { + "name": "nuGetServiceConnections", + "type": "connectedService:ExternalNuGetFeed", + "label": "Service connection credentials for feeds outside this organization", + "required": false, + "helpMarkDown": "Comma-separated list of NuGet service connection names for feeds outside this organization/collection. For feeds in this organization/collection, leave this blank; the build’s credentials are used automatically.", + "properties": { + "EditableOptions": "False", + "MultiSelectFlatList": "True" + } + } + ], + "execution": { + "Node10": { + "target": "main.js", + "argumentFormat": "" + }, + "Node16": { + "target": "main.js", + "argumentFormat": "" + }, + "Node20_1": { + "target": "main.js", + "argumentFormat": "" + } + }, + "messages": { + "Error_ServiceConnectionExists": "An existing service connection already exists for the endpoint", + "Error_MissingFeedUrlOrServiceConnection": "Both feedUrl and workloadIdentityServiceConnection must be set together.", + "FailedToGetServiceConnectionAuth": "Unable to get federated credentials from service connection", + "Info_AddingFederatedFeedAuth": "Adding auth information from service connection %s for feed %s", + "Info_SuccessAddingFederatedFeedAuth": "Successfully added auth for feed %s." + }, + "_buildConfigMapping": { + "Default": "1.244.3", + "Node20_229_1": "1.244.4", + "wif_242": "1.244.5" + } +} \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1_Wif/task.loc.json b/_generated/NuGetAuthenticateV1_Wif/task.loc.json new file mode 100644 index 000000000000..4c411311c546 --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Wif/task.loc.json @@ -0,0 +1,86 @@ +{ + "id": "f5fd8599-ccfa-4d6e-b965-4d14bed7097b", + "name": "NuGetAuthenticate", + "friendlyName": "ms-resource:loc.friendlyName", + "description": "ms-resource:loc.description", + "author": "Microsoft Corporation", + "helpUrl": "https://aka.ms/NuGetAuthenticateTask", + "helpMarkDown": "ms-resource:loc.helpMarkDown", + "category": "Package", + "runsOn": [ + "Agent", + "DeploymentGroup" + ], + "version": { + "Major": 1, + "Minor": 244, + "Patch": 5 + }, + "minimumAgentVersion": "2.144.0", + "instanceNameFormat": "ms-resource:loc.instanceNameFormat", + "inputs": [ + { + "name": "workloadIdentityServiceConnection", + "label": "ms-resource:loc.input.label.workloadIdentityServiceConnection", + "helpMarkDown": "ms-resource:loc.input.help.workloadIdentityServiceConnection", + "type": "connectedService:workloadidentityuser", + "required": false, + "properties": { + "EditableOptions": "False", + "MultiSelectFlatList": "False" + } + }, + { + "name": "feedUrl", + "label": "ms-resource:loc.input.label.feedUrl", + "helpMarkDown": "ms-resource:loc.input.help.feedUrl", + "type": "string", + "defaultValue": "", + "required": false + }, + { + "name": "forceReinstallCredentialProvider", + "type": "boolean", + "label": "ms-resource:loc.input.label.forceReinstallCredentialProvider", + "defaultValue": "false", + "helpMarkDown": "ms-resource:loc.input.help.forceReinstallCredentialProvider" + }, + { + "name": "nuGetServiceConnections", + "type": "connectedService:ExternalNuGetFeed", + "label": "ms-resource:loc.input.label.nuGetServiceConnections", + "required": false, + "helpMarkDown": "ms-resource:loc.input.help.nuGetServiceConnections", + "properties": { + "EditableOptions": "False", + "MultiSelectFlatList": "True" + } + } + ], + "execution": { + "Node10": { + "target": "main.js", + "argumentFormat": "" + }, + "Node16": { + "target": "main.js", + "argumentFormat": "" + }, + "Node20_1": { + "target": "main.js", + "argumentFormat": "" + } + }, + "messages": { + "Error_ServiceConnectionExists": "ms-resource:loc.messages.Error_ServiceConnectionExists", + "Error_MissingFeedUrlOrServiceConnection": "ms-resource:loc.messages.Error_MissingFeedUrlOrServiceConnection", + "FailedToGetServiceConnectionAuth": "ms-resource:loc.messages.FailedToGetServiceConnectionAuth", + "Info_AddingFederatedFeedAuth": "ms-resource:loc.messages.Info_AddingFederatedFeedAuth", + "Info_SuccessAddingFederatedFeedAuth": "ms-resource:loc.messages.Info_SuccessAddingFederatedFeedAuth" + }, + "_buildConfigMapping": { + "Default": "1.244.3", + "Node20_229_1": "1.244.4", + "wif_242": "1.244.5" + } +} \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1_Wif/taskJsonOverride.json b/_generated/NuGetAuthenticateV1_Wif/taskJsonOverride.json new file mode 100644 index 000000000000..467aa60f9555 --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Wif/taskJsonOverride.json @@ -0,0 +1,41 @@ +{ + "inputs": [ + { + "name": "workloadIdentityServiceConnection", + "label": "'Entra Workload ID-backed Azure DevOps user' Service Connection", + "helpMarkDown": "If this is set, feedUrl is required. All other inputs are ignored.", + "type": "connectedService:workloadidentityuser", + "required": false, + "properties": { + "EditableOptions": "False", + "MultiSelectFlatList": "False" + } + }, + { + "name": "feedUrl", + "label": "Azure Artifacts URL", + "helpMarkDown": "If this is set, workloadIdentityServiceConnection is required. All other inputs are ignored. Not compatible with nuGetServiceConnections. Feed Url should be in the NuGet service index format, e.g. https://pkgs.dev.azure.com/{ORG_NAME}/{PROJECT}/_packaging/{FEED_NAME}/nuget/v3/index.json/", + "type": "string", + "defaultValue": "", + "required": false + }, + { + "name": "forceReinstallCredentialProvider", + "type": "boolean", + "label": "Reinstall the credential provider even if already installed", + "defaultValue": "false", + "helpMarkDown": "If the credential provider is already installed in the user profile, determines if it is overwritten with the task-provided credential provider. This may upgrade (or potentially downgrade) the credential provider." + }, + { + "name": "nuGetServiceConnections", + "type": "connectedService:ExternalNuGetFeed", + "label": "Service connection credentials for feeds outside this organization", + "required": false, + "helpMarkDown": "Comma-separated list of NuGet service connection names for feeds outside this organization/collection. For feeds in this organization/collection, leave this blank; the build’s credentials are used automatically.", + "properties": { + "EditableOptions": "False", + "MultiSelectFlatList": "True" + } + } + ] +} \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1_Wif/taskJsonOverride.loc.json b/_generated/NuGetAuthenticateV1_Wif/taskJsonOverride.loc.json new file mode 100644 index 000000000000..f32f885c2462 --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Wif/taskJsonOverride.loc.json @@ -0,0 +1,41 @@ +{ + "inputs": [ + { + "name": "workloadIdentityServiceConnection", + "label": "ms-resource:loc.input.label.workloadIdentityServiceConnection", + "helpMarkDown": "ms-resource:loc.input.help.workloadIdentityServiceConnection", + "type": "connectedService:workloadidentityuser", + "required": false, + "properties": { + "EditableOptions": "False", + "MultiSelectFlatList": "False" + } + }, + { + "name": "feedUrl", + "label": "ms-resource:loc.input.label.feedUrl", + "helpMarkDown": "ms-resource:loc.input.help.feedUrl", + "type": "string", + "defaultValue": "", + "required": false + }, + { + "name": "forceReinstallCredentialProvider", + "type": "boolean", + "label": "ms-resource:loc.input.label.forceReinstallCredentialProvider", + "defaultValue": "false", + "helpMarkDown": "ms-resource:loc.input.help.forceReinstallCredentialProvider" + }, + { + "name": "nuGetServiceConnections", + "type": "connectedService:ExternalNuGetFeed", + "label": "ms-resource:loc.input.label.nuGetServiceConnections", + "required": false, + "helpMarkDown": "ms-resource:loc.input.help.nuGetServiceConnections", + "properties": { + "EditableOptions": "False", + "MultiSelectFlatList": "True" + } + } + ] +} \ No newline at end of file diff --git a/_generated/NuGetAuthenticateV1_Wif/tsconfig.json b/_generated/NuGetAuthenticateV1_Wif/tsconfig.json new file mode 100644 index 000000000000..0438b79f69ac --- /dev/null +++ b/_generated/NuGetAuthenticateV1_Wif/tsconfig.json @@ -0,0 +1,6 @@ +{ + "compilerOptions": { + "target": "ES6", + "module": "commonjs" + } +} \ No newline at end of file diff --git a/make-options.json b/make-options.json index cbb648e7e6a1..6eec6ca73c87 100644 --- a/make-options.json +++ b/make-options.json @@ -406,6 +406,7 @@ "PublishSymbolsV2" ], "wif_242": [ - "PipAuthenticateV1" + "PipAuthenticateV1", + "NuGetAuthenticateV1" ] } \ No newline at end of file