From ccb7298098806980a27fd7234da1e46c61e0ee3a Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Mon, 6 Nov 2023 20:18:49 +0800 Subject: [PATCH 01/32] feat: add Notation task Signed-off-by: Junjie Gao --- .../resources.resjson/en-US/resources.resjson | 73 ++ Tasks/NotationV0/Tests/L0.ts | 35 + Tasks/NotationV0/Tests/L0Install.ts | 41 + Tasks/NotationV0/Tests/L0Sign.ts | 50 + Tasks/NotationV0/Tests/L0Verify.ts | 55 ++ Tasks/NotationV0/data/azure_kv_versions.json | 60 ++ Tasks/NotationV0/data/notation_versions.json | 31 + Tasks/NotationV0/icon.png | Bin 0 -> 16917 bytes Tasks/NotationV0/icon.svg | 1 + Tasks/NotationV0/make.json | 20 + Tasks/NotationV0/package-lock.json | 917 ++++++++++++++++++ Tasks/NotationV0/package.json | 22 + Tasks/NotationV0/src/index.ts | 50 + Tasks/NotationV0/src/install.ts | 41 + Tasks/NotationV0/src/lib/constants.ts | 16 + Tasks/NotationV0/src/lib/credentials.ts | 58 ++ Tasks/NotationV0/src/lib/crypto.ts | 23 + Tasks/NotationV0/src/lib/fs.ts | 20 + Tasks/NotationV0/src/lib/install.ts | 117 +++ Tasks/NotationV0/src/lib/runner.ts | 56 ++ Tasks/NotationV0/src/lib/variables.ts | 53 + Tasks/NotationV0/src/sign.ts | 67 ++ Tasks/NotationV0/src/verify.ts | 105 ++ Tasks/NotationV0/task.json | 248 +++++ Tasks/NotationV0/task.loc.json | 248 +++++ Tasks/NotationV0/tsconfig.json | 101 ++ 26 files changed, 2508 insertions(+) create mode 100644 Tasks/NotationV0/Strings/resources.resjson/en-US/resources.resjson create mode 100644 Tasks/NotationV0/Tests/L0.ts create mode 100644 Tasks/NotationV0/Tests/L0Install.ts create mode 100644 Tasks/NotationV0/Tests/L0Sign.ts create mode 100644 Tasks/NotationV0/Tests/L0Verify.ts create mode 100644 Tasks/NotationV0/data/azure_kv_versions.json create mode 100644 Tasks/NotationV0/data/notation_versions.json create mode 100644 Tasks/NotationV0/icon.png create mode 100644 Tasks/NotationV0/icon.svg create mode 100644 Tasks/NotationV0/make.json create mode 100644 Tasks/NotationV0/package-lock.json create mode 100644 Tasks/NotationV0/package.json create mode 100644 Tasks/NotationV0/src/index.ts create mode 100644 Tasks/NotationV0/src/install.ts create mode 100644 Tasks/NotationV0/src/lib/constants.ts create mode 100644 Tasks/NotationV0/src/lib/credentials.ts create mode 100644 Tasks/NotationV0/src/lib/crypto.ts create mode 100644 Tasks/NotationV0/src/lib/fs.ts create mode 100644 Tasks/NotationV0/src/lib/install.ts create mode 100644 Tasks/NotationV0/src/lib/runner.ts create mode 100644 Tasks/NotationV0/src/lib/variables.ts create mode 100644 Tasks/NotationV0/src/sign.ts create mode 100644 Tasks/NotationV0/src/verify.ts create mode 100644 Tasks/NotationV0/task.json create mode 100644 Tasks/NotationV0/task.loc.json create mode 100644 Tasks/NotationV0/tsconfig.json diff --git a/Tasks/NotationV0/Strings/resources.resjson/en-US/resources.resjson b/Tasks/NotationV0/Strings/resources.resjson/en-US/resources.resjson new file mode 100644 index 000000000000..f4ed96c07691 --- /dev/null +++ b/Tasks/NotationV0/Strings/resources.resjson/en-US/resources.resjson @@ -0,0 +1,73 @@ +{ + "loc.friendlyName": "Notation", + "loc.helpMarkDown": "", + "loc.description": "Azure Pipepine Task for setting up Notation CLI, sign and verify with Notation", + "loc.instanceNameFormat": "$(command)", + "loc.group.displayName.commandConfig": "Command Configuration", + "loc.group.displayName.pluginConfig": "Plugin Configuration", + "loc.group.displayName.advancedConfig": "Advanced Configuration", + "loc.input.label.command": "Command to run", + "loc.input.help.command": "example: install", + "loc.input.label.isCustomVersion": "Custom Version", + "loc.input.help.isCustomVersion": "If checked, you can provide a custom version for the task", + "loc.input.label.version": "Version", + "loc.input.help.version": "The version of Notation to install. Example: 1.0.0, 1, 1.0, 1.0.0", + "loc.input.label.url": "Download URL", + "loc.input.help.url": "example: https://github.com/notaryproject/notation/releases/download/v1.0.0/notation_1.0.0_linux_amd64.tar.gz", + "loc.input.label.checksum": "Checksum", + "loc.input.help.checksum": "The SHA-256 checksum of the downloaded file", + "loc.input.label.artifactRefs": "Artifact references", + "loc.input.help.artifactRefs": "Container artifact references for signing. If it was not specified, use the artifact reference from previous Docker push task. Example: /@ If multiple, separate by comma.", + "loc.input.label.signatureFormat": "Signature Format", + "loc.input.help.signatureFormat": "Signature envelope format, options: \"jws\", \"cose\" (default \"jws\")", + "loc.input.label.allowReferrersAPI": "[Experimental] Allow Referrers API", + "loc.input.help.allowReferrersAPI": "Use the Referrers API to sign signatures, if not supported (returns 404), fallback to the Referrers tag schema.", + "loc.input.label.plugin": "Plugin", + "loc.input.label.akvPluginVersion": "Plugin Version", + "loc.input.help.akvPluginVersion": "The version of the Azure Key Vualt plugin to be install. please visit the [release page](https://github.com/Azure/notation-azure-kv/releases) for the available versions.", + "loc.input.label.azurekvServiceConection": "Azure Key Vault service connection", + "loc.input.help.azurekvServiceConection": "Select the Azure subscription for the key vault if prefer to use service connection for authentication.", + "loc.input.label.keyid": "Key ID", + "loc.input.help.keyid": "The Key ID is the key or certificate identifier for Azure Key Vault.", + "loc.input.label.caCertBundle": "Certificate Bundle File Path", + "loc.input.help.caCertBundle": "A file with root and all intermediate certificates, starting from the root certificate, following the order in the certificate chain.", + "loc.input.label.selfSigned": "Self-signed Certificate", + "loc.input.label.trustPolicy": "Trust Policy File Path", + "loc.input.help.trustPolicy": "The path to the [trust policy](https://github.com/notaryproject/specifications/blob/v1.0.0/specs/trust-store-trust-policy.md#trust-policy) file relative to the repository. Example: ./path/to/trust-policy.json", + "loc.input.label.trustStore": "Trust Store Folder Path", + "loc.input.help.trustStore": "The path to the directory containing the [trust store](https://github.com/notaryproject/specifications/blob/v1.0.0/specs/trust-store-trust-policy.md#trust-store) relative to the repository. Example: ./path/to/truststore/", + "loc.messages.ArtifactRefs": "Artifact references: %s.", + "loc.messages.ArtifactRefsNotSpecified": "Artifact references are not specified.", + "loc.messages.APPDATANotSet": "APPDATA is not set.", + "loc.messages.AzureKVPluginAlreadyInstalled": "Azure Key Vault plugin is already installed.", + "loc.messages.CannotFindTrustStore": "Cannot find trust store directory: %s.", + "loc.messages.ChecksumValidated": "Checksum validated: %s.", + "loc.messages.ChecksumValidationFailed": "Checksum validation failed. Expected: %s, Actual: %s.", + "loc.messages.FailedArtifacts": "Failed artifacts: %s.", + "loc.messages.FailedToAddCertToTrustStore": "Failed to add a certificate to trust store: %s.", + "loc.messages.FailedToImportTrustPolicy": "Failed to import trust policy: %s.", + "loc.messages.FailedToListTrustStore": "Failed to list the trust store.", + "loc.messages.FailedToShowTrustPolicy": "Failed to show trust policy.", + "loc.messages.TryToGetArtifactRefsFromDockerTask": "Try to get artifact references from Docker task.", + "loc.messages.InvalidResourceURI": "Invalid resource URI: %s.", + "loc.messages.InvalidVersionPrefix": "Invalid version prefix: %s.", + "loc.messages.ResultSummary": "Total artifacts: %s, succeeded: %s, failed: %s.", + "loc.messages.RepeatedArtifactRef": "Repeated artifact reference: %s.", + "loc.messages.SucceededArtifacts": "Succeeded artifacts: %s.", + "loc.messages.TempDirectoryNotSet": "Agent.TempDirectory is not set.", + "loc.messages.TempDirectoryOrWorkingDirectoryNotSet": "Agent.TempDirectory or system.DefaultWorkingDirectory is not set", + "loc.messages.NoAuthScheme": "No authentication scheme is specified.", + "loc.messages.NotationAlreadyInstalled": "Notation is already installed, please do not install it again.", + "loc.messages.NotationInstalledFromURL": "Notation is installed from %s.", + "loc.messages.NotationInstalledFromVersion": "Notation v%s is installed.", + "loc.messages.NoServiceConnection": "No Azure Key Vault service connection endpoint is specified.", + "loc.messages.UnsupportedArchitecture": "Unsupported architecture: %s.", + "loc.messages.UnsupportedFileExtension": "Unsupported file extension: %s.", + "loc.messages.UnsupportedPlatform": "Unsupported platform: %s.", + "loc.messages.UnsupportedVersion": "Unsupported version: %s.", + "loc.messages.UseManagedIdentity": "Use managed identity to access Azure Key Vault.", + "loc.messages.UnknownCommand": "Unknown command: %s.", + "loc.messages.UnknownError": "An unknown error occurred.", + "loc.messages.UnknownPlugin": "Unknown plugin: %s.", + "loc.messages.UnsupportedAuthScheme": "Unsupported authentication scheme: %s." +} \ No newline at end of file diff --git a/Tasks/NotationV0/Tests/L0.ts b/Tasks/NotationV0/Tests/L0.ts new file mode 100644 index 000000000000..4f7e5e1945df --- /dev/null +++ b/Tasks/NotationV0/Tests/L0.ts @@ -0,0 +1,35 @@ +import * as path from 'path'; +import * as ttm from 'azure-pipelines-task-lib/mock-test'; +import assert = require('assert'); + +describe('NotationV0 Suite', function () { + it('install notation', function () { + this.timeout(1000); + + let tp = path.join(__dirname, 'L0Install.js'); + let tr = new ttm.MockTestRunner(tp); + tr.run(); + + assert(tr.succeeded, 'should have succeeded'); + }) + + it('notation sign', function () { + this.timeout(1000); + + let tp = path.join(__dirname, 'L0Sign.js'); + let tr = new ttm.MockTestRunner(tp); + tr.run(); + + assert(tr.succeeded, 'should have succeeded'); + }) + + it('notation verify', function () { + this.timeout(1000); + + let tp = path.join(__dirname, 'L0Verify.js'); + let tr = new ttm.MockTestRunner(tp); + tr.run(); + + assert(tr.succeeded, 'should have succeeded'); + }) +}) \ No newline at end of file diff --git a/Tasks/NotationV0/Tests/L0Install.ts b/Tasks/NotationV0/Tests/L0Install.ts new file mode 100644 index 000000000000..1de0f03af56b --- /dev/null +++ b/Tasks/NotationV0/Tests/L0Install.ts @@ -0,0 +1,41 @@ +import * as path from 'path'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; + +let taskPath = path.join(__dirname, '..', 'src', 'index.js'); +let tmr = new tmrm.TaskMockRunner(taskPath); + +tmr.setAnswers({ + "which": { + "notation": "" + }, + "exec": { + "tar xC . -f notation_1.0.0_linux_amd64.tar.gz": { + "code": 0, + "stdout": "extracted" + } + } +}) + +tmr.registerMock('azure-pipelines-tool-lib/tool', { + downloadTool(url: string, filename: string): Promise { + return Promise.resolve('notation_1.0.0_linux_amd64.tar.gz'); + }, + extractTar(file: string, destination?: string | undefined): Promise { + return Promise.resolve('extracted'); + }, + prependPath(toolPath: string) { + return; + } +}); + +tmr.registerMock('./crypto', { + computeChecksum: (filePath: string) => { + return Promise.resolve('eceec8cb6d5cbaeb8f6f22399eb89317fe005a85206a5e780fdde1ef5bb64596'); + } +}) + +process.env['AGENT_TEMPDIRECTORY'] = '.'; +tmr.setInput('command', 'install'); +tmr.setInput('version', '1.0.0'); + +tmr.run(); diff --git a/Tasks/NotationV0/Tests/L0Sign.ts b/Tasks/NotationV0/Tests/L0Sign.ts new file mode 100644 index 000000000000..e0e7b5cdbdbe --- /dev/null +++ b/Tasks/NotationV0/Tests/L0Sign.ts @@ -0,0 +1,50 @@ +import * as path from 'path'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; + +let taskPath = path.join(__dirname, '..', 'src', 'index.js'); +let tmr = new tmrm.TaskMockRunner(taskPath); + +tmr.setAnswers({ + "which": { + "notation": "notation" + }, + "checkPath": { + "notation": true + }, + "exec": { + "notation plugin list": { + "code": 0, + "stdout": "extracted" + }, + "notation sign localhost:5000/e2e@sha256:xxxxxx --plugin azure-kv --id https://xxx.vault.azure.net/keys/self-signed-cert/a12c1ba176df4476a9325ca48ff796ad --signature-format cose --plugin-config=self_signed=true": { + "code": 0, + "stdout": "extracted" + } + }, +}) + +tmr.registerMock('azure-pipelines-tool-lib/tool', { + downloadTool(url: string, filename: string): Promise { + return Promise.resolve('notation-azure-kv_1.0.0_linux_amd64.tar.gz'); + }, + extractTar(file: string, destination?: string | undefined): Promise { + return Promise.resolve('extracted'); + }, +}); + +tmr.registerMock('./crypto', { + computeChecksum: (filePath: string) => { + return Promise.resolve('f8a75d9234db90069d9eb5660e5374820edf36d710bd063f4ef81e7063d3810b'); + } +}) + +process.env['AGENT_TEMPDIRECTORY'] = '.'; +tmr.setInput('command', 'sign'); +tmr.setInput('akvPluginVersion', '1.0.1'); +tmr.setInput('artifactRefs', 'localhost:5000/e2e@sha256:xxxxxx'); +tmr.setInput('plugin', 'azureKeyVault'); +tmr.setInput('azurekvServiceConection', 'akv-service-connection'); +tmr.setInput('keyid', 'https://xxx.vault.azure.net/keys/self-signed-cert/a12c1ba176df4476a9325ca48ff796ad') +tmr.setInput('selfSigned', 'true'); + +tmr.run(); diff --git a/Tasks/NotationV0/Tests/L0Verify.ts b/Tasks/NotationV0/Tests/L0Verify.ts new file mode 100644 index 000000000000..c7723625c0a0 --- /dev/null +++ b/Tasks/NotationV0/Tests/L0Verify.ts @@ -0,0 +1,55 @@ +import * as path from 'path'; +import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import os = require('os'); + +let taskPath = path.join(__dirname, '..', 'src', 'index.js'); +let tmr = new tmrm.TaskMockRunner(taskPath); + +tmr.setAnswers({ + "which": { + "notation": "notation" + }, + "checkPath": { + "notation": true + }, + "exec": { + "notation policy show": { + "code": 0, + "stdout": "extracted" + }, + "notation policy import --force ./policy.json": { + "code": 0, + "stdout": "extracted" + }, + "notation cert list": { + "code": 0, + "stdout": "extracted" + }, + "notation verify localhost:5000/e2e@sha256:xxxxxx --verbose": { + "code": 0, + "stdout": "extracted" + }, + }, + "exist": { + "truststore/x509": true + }, + "rmRF": { + "/user/config/notation/truststore": { + "success": true + } + }, +}) + +process.env['AGENT_TEMPDIRECTORY'] = '.'; +process.env['XDG_CONFIG_HOME'] = '/user/config'; +tmr.setInput('command', 'verify'); +tmr.setInput('artifactRefs', 'localhost:5000/e2e@sha256:xxxxxx'); +tmr.setInput('trustpolicy', './policy.json') +tmr.setInput('truststore', './truststore') + +os.platform = () => { + return 'linux'; +} +tmr.registerMock('os', os); + +tmr.run(); diff --git a/Tasks/NotationV0/data/azure_kv_versions.json b/Tasks/NotationV0/data/azure_kv_versions.json new file mode 100644 index 000000000000..4fda41d876b6 --- /dev/null +++ b/Tasks/NotationV0/data/azure_kv_versions.json @@ -0,0 +1,60 @@ +[ + { + "darwin": { + "amd64": { + "checksum": "b69a4a0f09d7779108bdd74df680eb8c8ad7c9184f084524f7bb3398e256a89a", + "url": "https://github.com/Azure/notation-azure-kv/releases/download/v1.0.1/notation-azure-kv_1.0.1_darwin_amd64.tar.gz" + }, + "arm64": { + "checksum": "8bd1de75be6da28bd32b3169bfaba575cef9c2387c0025c7d24b550ddcaf7db2", + "url": "https://github.com/Azure/notation-azure-kv/releases/download/v1.0.1/notation-azure-kv_1.0.1_darwin_arm64.tar.gz" + } + }, + "linux": { + "amd64": { + "checksum": "f8a75d9234db90069d9eb5660e5374820edf36d710bd063f4ef81e7063d3810b", + "url": "https://github.com/Azure/notation-azure-kv/releases/download/v1.0.1/notation-azure-kv_1.0.1_linux_amd64.tar.gz" + }, + "arm64": { + "checksum": "d6b4be3cef6a5cb154ddd73f7bdc83f5d7e913e3b72eb88f7a5f82872ca63a5a", + "url": "https://github.com/Azure/notation-azure-kv/releases/download/v1.0.1/notation-azure-kv_1.0.1_linux_arm64.tar.gz" + } + }, + "version": "1.0.1", + "windows": { + "amd64": { + "checksum": "113062a462674a0e35cb5cad75a0bb2ea16e9537025531c0fd705018fcdbc17e", + "url": "https://github.com/Azure/notation-azure-kv/releases/download/v1.0.1/notation-azure-kv_1.0.1_windows_amd64.zip" + } + } + }, + { + "darwin": { + "amd64": { + "checksum": "952b1a92b342edf2d1591cf0b6e75f12bc3807bd12cc24aa816e8f6ec1da325f", + "url": "https://github.com/Azure/notation-azure-kv/releases/download/v1.0.0/notation-azure-kv_1.0.0_darwin_amd64.tar.gz" + }, + "arm64": { + "checksum": "9cdf2fa73813c88e9e9fc2f1e92173245a1abec61c63dc1dab1f93b329d536c0", + "url": "https://github.com/Azure/notation-azure-kv/releases/download/v1.0.0/notation-azure-kv_1.0.0_darwin_arm64.tar.gz" + } + }, + "linux": { + "amd64": { + "checksum": "82d4fee34dfe5e9303e4340d8d7f651da0a89fa8ae03195558f83bb6fa8dd263", + "url": "https://github.com/Azure/notation-azure-kv/releases/download/v1.0.0/notation-azure-kv_1.0.0_linux_amd64.tar.gz" + }, + "arm64": { + "checksum": "ccbbaa249dd9eec49457e51cc96ca98210ac3668ac106a22b117bc9f2f7413c7", + "url": "https://github.com/Azure/notation-azure-kv/releases/download/v1.0.0/notation-azure-kv_1.0.0_linux_arm64.tar.gz" + } + }, + "version": "1.0.0", + "windows": { + "amd64": { + "checksum": "8b9fee362dc92ded0423153bdabd458a0b6fa759ff2d4db1702e5d874c7be4ad", + "url": "https://github.com/Azure/notation-azure-kv/releases/download/v1.0.0/notation-azure-kv_1.0.0_windows_amd64.zip" + } + } + } +] \ No newline at end of file diff --git a/Tasks/NotationV0/data/notation_versions.json b/Tasks/NotationV0/data/notation_versions.json new file mode 100644 index 000000000000..c7bfefaabd03 --- /dev/null +++ b/Tasks/NotationV0/data/notation_versions.json @@ -0,0 +1,31 @@ +[ + { + "darwin": { + "amd64": { + "checksum": "b977590bbeca6f53171ed3f06ae3fe8f56b1f27a0682c06fa902a4892a998858", + "url": "https://github.com/notaryproject/notation/releases/download/v1.0.0/notation_1.0.0_darwin_amd64.tar.gz" + }, + "arm64": { + "checksum": "7e00cbcd642d337f93af4ddc8bc08c2b4bf36e0ff9093304d7ae4bc962bc91a5", + "url": "https://github.com/notaryproject/notation/releases/download/v1.0.0/notation_1.0.0_darwin_arm64.tar.gz" + } + }, + "linux": { + "amd64": { + "checksum": "eceec8cb6d5cbaeb8f6f22399eb89317fe005a85206a5e780fdde1ef5bb64596", + "url": "https://github.com/notaryproject/notation/releases/download/v1.0.0/notation_1.0.0_linux_amd64.tar.gz" + }, + "arm64": { + "checksum": "ae1884ae17b7ae7ce694c63d51a52ab0dac1f2c0ca384163455c1e96c5663db0", + "url": "https://github.com/notaryproject/notation/releases/download/v1.0.0/notation_1.0.0_linux_arm64.tar.gz" + } + }, + "version": "1.0.0", + "windows": { + "amd64": { + "checksum": "c175270af703caa63473c8d9ea503ad07ffdcc91c7b95d30f4184dfe1374872c", + "url": "https://github.com/notaryproject/notation/releases/download/v1.0.0/notation_1.0.0_windows_amd64.zip" + } + } + } +] \ No newline at end of file diff --git a/Tasks/NotationV0/icon.png b/Tasks/NotationV0/icon.png new file mode 100644 index 0000000000000000000000000000000000000000..ac27ec2027d49209d5113f56e8ea552a6a030596 GIT binary patch literal 16917 zcmeHPTS!z<6y3M+G1s(4qf$|_#vUNq#4XA~(s8sIQOO9(7fl+2m_;FkWP$b|3!@Yw z2m2}V%f<}#L&y*+`sh0JLQw?ohfP7EiJ*RI=ghhO^`SLL!Wy{D=047ab@tl(>~+pP zcaG&9jR=bkBcce0-FBQPROW{`)TB*${jQZu>H&(U6d&ff4+OGYu3$7~y_UiwMbK zAVL;FrsaNs1c?O6+@R!i`~JnX07#Y?bMw%EWQmf??*}MLQE~en0jh+Uut7D6Y7z;O z=1cVA1JC%Wo3RytG53f^s6_#9>4HT&4OMfH_L|N9D3Xy~g>Ltow! zVRSG$7*l1KEo6xpL;wWvf|Vmeikq6<)9R~!DoPzJydC3gX_IO0(rov@hwzSvMZt8n z(QZ`LIHgK4RDR2qsEbX2pJ5*&&EJ~L5)-qaEGP@gt{i1CwqE8Jh$t@*q7kAIq7kAQ z0wBUFgFyS@jsHsY#$x*UZ0h|!SNwy{tz$K8Q-CE1tL3Mj*omYUd|!YiJ%F1SL;eJ8 w&kl0=+?+o|hrAPoqVyr_$UQNS6u^B9)X \ No newline at end of file diff --git a/Tasks/NotationV0/make.json b/Tasks/NotationV0/make.json new file mode 100644 index 000000000000..56b8a6195bca --- /dev/null +++ b/Tasks/NotationV0/make.json @@ -0,0 +1,20 @@ +{ + "rm": [ + { + "items": [ + "node_modules/azure-pipelines-tasks-utility-common/node_modules/azure-pipelines-task-lib", + "node_modules/azure-pipelines-tasks-docker-common/node_modules/azure-pipelines-task-lib", + "node_modules/azure-pipelines-tasks-azure-arm-rest-v2/node_modules/azure-pipelines-task-lib" + ], + "options": "-Rf" + } + ], + "cp": [ + { + "source": [ + "data" + ], + "options": "-R" + } + ] +} \ No newline at end of file diff --git a/Tasks/NotationV0/package-lock.json b/Tasks/NotationV0/package-lock.json new file mode 100644 index 000000000000..e04e967e762c --- /dev/null +++ b/Tasks/NotationV0/package-lock.json @@ -0,0 +1,917 @@ +{ + "name": "notation", + "version": "0.1.0", + "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": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", + "requires": { + "@types/node": "*" + } + }, + "@types/jsonwebtoken": { + "version": "8.5.9", + "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", + "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==", + "requires": { + "@types/node": "*" + } + }, + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==" + }, + "@types/node": { + "version": "10.17.60", + "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", + "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" + }, + "@types/q": { + "version": "1.5.4", + "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", + "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" + }, + "@types/qs": { + "version": "6.9.9", + "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.9.tgz", + "integrity": "sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg==" + }, + "@types/semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" + }, + "@types/uuid": { + "version": "8.3.4", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", + "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" + }, + "array-union": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", + "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", + "requires": { + "array-uniq": "^1.0.1" + } + }, + "array-uniq": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", + "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==" + }, + "arrify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", + "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==" + }, + "asap": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + }, + "asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "azure-pipelines-task-lib": { + "version": "4.0.1-preview", + "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.0.1-preview.tgz", + "integrity": "sha512-yvxqTzBy6G1U4lDkQgvewGDtd4UxrFTTI49JBByS0vjz55lE/9hmOttFm/BSRCEeLkG0lp3t3ja54bsNBBM4cA==", + "requires": { + "minimatch": "3.0.5", + "mockery": "^1.7.0", + "q": "^1.5.1", + "semver": "^5.1.0", + "shelljs": "^0.8.5", + "sync-request": "6.1.0", + "uuid": "^3.0.1" + } + }, + "azure-pipelines-tasks-azure-arm-rest-v2": { + "version": "2.210.0", + "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-azure-arm-rest-v2/-/azure-pipelines-tasks-azure-arm-rest-v2-2.210.0.tgz", + "integrity": "sha512-zKkFPah6ng4oGRej5Ax5eNEEd6FQ48y+1/MIXvh/VTDAFnLfLJ9M8lUh1UlmZOetX6zTcoidSKmmZWmq/KamOw==", + "requires": { + "@types/jsonwebtoken": "^8.5.8", + "@types/mocha": "^5.2.7", + "@types/node": "^10.17.0", + "@types/q": "1.5.4", + "azure-pipelines-task-lib": "^3.1.0", + "jsonwebtoken": "^8.5.1", + "q": "1.5.1", + "typed-rest-client": "1.8.4" + }, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==" + }, + "azure-pipelines-task-lib": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-3.4.0.tgz", + "integrity": "sha512-3eC4OTFw+7xD7A2aUhxR/j+jRlTI+vVfS0CGxt1pCLs4c/KmY0tQWgbqjD3157kmiucWxELBvgZHaD2gCBe9fg==", + "requires": { + "minimatch": "3.0.5", + "mockery": "^2.1.0", + "q": "^1.5.1", + "semver": "^5.1.0", + "shelljs": "^0.8.5", + "sync-request": "6.1.0", + "uuid": "^3.0.1" + } + }, + "mockery": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mockery/-/mockery-2.1.0.tgz", + "integrity": "sha512-9VkOmxKlWXoDO/h1jDZaS4lH33aWfRiJiNT/tKj+8OGzrcFDLo8d0syGdbsc3Bc4GvRXPb+NMMvojotmuGJTvA==" + } + } + }, + "azure-pipelines-tasks-docker-common": { + "version": "2.211.0", + "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-docker-common/-/azure-pipelines-tasks-docker-common-2.211.0.tgz", + "integrity": "sha512-5FMFZjgTt4eKmcDYvQRx1kYd622Bgb36B9QLgvwYibaKfHLAYYshdO3Q/iOHxiO1ApazQbIhN4Wqzy3YtQxzVw==", + "requires": { + "@types/mocha": "^5.2.7", + "@types/node": "^10.17.0", + "@types/q": "1.5.4", + "@types/uuid": "^8.3.0", + "azure-pipelines-task-lib": "^3.1.0", + "azure-pipelines-tasks-azure-arm-rest-v2": "^2.210.0", + "del": "2.2.0", + "q": "1.4.1" + }, + "dependencies": { + "@types/mocha": { + "version": "5.2.7", + "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", + "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==" + }, + "azure-pipelines-task-lib": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-3.4.0.tgz", + "integrity": "sha512-3eC4OTFw+7xD7A2aUhxR/j+jRlTI+vVfS0CGxt1pCLs4c/KmY0tQWgbqjD3157kmiucWxELBvgZHaD2gCBe9fg==", + "requires": { + "minimatch": "3.0.5", + "mockery": "^2.1.0", + "q": "^1.5.1", + "semver": "^5.1.0", + "shelljs": "^0.8.5", + "sync-request": "6.1.0", + "uuid": "^3.0.1" + }, + "dependencies": { + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" + } + } + }, + "mockery": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mockery/-/mockery-2.1.0.tgz", + "integrity": "sha512-9VkOmxKlWXoDO/h1jDZaS4lH33aWfRiJiNT/tKj+8OGzrcFDLo8d0syGdbsc3Bc4GvRXPb+NMMvojotmuGJTvA==" + }, + "q": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", + "integrity": "sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==" + } + } + }, + "azure-pipelines-tool-lib": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/azure-pipelines-tool-lib/-/azure-pipelines-tool-lib-1.3.2.tgz", + "integrity": "sha512-PtYcd3E2ouwZhLuaOpWA00FYoLjRuJs1V8mNu3u6lBnqeYd4jh/8VL/of6nchm8f2NM6Div+EEnbOcmWvcptPg==", + "requires": { + "@types/semver": "^5.3.0", + "@types/uuid": "^3.4.5", + "azure-pipelines-task-lib": "^3.1.10", + "semver": "^5.7.0", + "semver-compare": "^1.0.0", + "typed-rest-client": "^1.8.6", + "uuid": "^3.3.2" + }, + "dependencies": { + "@types/uuid": { + "version": "3.4.12", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.12.tgz", + "integrity": "sha512-4mZWvs9415R6KNlPUZaMDgpnNpFZrO7yZoFfVc6phuOpnUlU06KGu4+83e857jfWkYBMNVZF/1HDoG/aEbePow==" + }, + "azure-pipelines-task-lib": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-3.4.0.tgz", + "integrity": "sha512-3eC4OTFw+7xD7A2aUhxR/j+jRlTI+vVfS0CGxt1pCLs4c/KmY0tQWgbqjD3157kmiucWxELBvgZHaD2gCBe9fg==", + "requires": { + "minimatch": "3.0.5", + "mockery": "^2.1.0", + "q": "^1.5.1", + "semver": "^5.1.0", + "shelljs": "^0.8.5", + "sync-request": "6.1.0", + "uuid": "^3.0.1" + } + }, + "mockery": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mockery/-/mockery-2.1.0.tgz", + "integrity": "sha512-9VkOmxKlWXoDO/h1jDZaS4lH33aWfRiJiNT/tKj+8OGzrcFDLo8d0syGdbsc3Bc4GvRXPb+NMMvojotmuGJTvA==" + }, + "typed-rest-client": { + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", + "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", + "requires": { + "qs": "^6.9.1", + "tunnel": "0.0.6", + "underscore": "^1.12.1" + } + } + } + }, + "balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" + }, + "brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "requires": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "buffer-equal-constant-time": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", + "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" + }, + "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.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "requires": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + } + }, + "caseless": { + "version": "0.12.0", + "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", + "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" + }, + "combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "requires": { + "delayed-stream": "~1.0.0" + } + }, + "concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "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==" + }, + "define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "requires": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "del": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/del/-/del-2.2.0.tgz", + "integrity": "sha512-AZDiRb78EEGYCsAZTG3v+CM5q8J0BIs+wI7QeUtyosm+zIMm4XSmp6aI/K7cU9l+YaKpDKN9dYP1xTrNjLQ+LA==", + "requires": { + "globby": "^4.0.0", + "is-path-cwd": "^1.0.0", + "is-path-in-cwd": "^1.0.0", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "rimraf": "^2.2.8" + } + }, + "delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + }, + "ecdsa-sig-formatter": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", + "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", + "requires": { + "safe-buffer": "^5.0.1" + } + }, + "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.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "function-bind": { + "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.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "requires": { + "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": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==" + }, + "glob": { + "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.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" + } + } + } + }, + "globby": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz", + "integrity": "sha512-JPDtMSr0bt25W64q792rvlrSwIaZwqUAhqdYKSr57Wh/xBcQ5JDWLM85ndn+Q1WdBQXLb9YGCl0QN/T0HpqU0A==", + "requires": { + "array-union": "^1.0.1", + "arrify": "^1.0.0", + "glob": "^6.0.1", + "object-assign": "^4.0.1", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" + }, + "dependencies": { + "glob": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", + "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", + "requires": { + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "2 || 3", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + } + } + } + }, + "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" + } + }, + "has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "requires": { + "get-intrinsic": "^1.2.2" + } + }, + "has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + }, + "has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" + }, + "hasown": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "requires": { + "function-bind": "^1.1.2" + } + }, + "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==", + "requires": { + "@types/node": "^10.0.3" + } + }, + "inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "requires": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + }, + "is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "requires": { + "hasown": "^2.0.0" + } + }, + "is-path-cwd": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", + "integrity": "sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==" + }, + "is-path-in-cwd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", + "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", + "requires": { + "is-path-inside": "^1.0.0" + } + }, + "is-path-inside": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", + "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", + "requires": { + "path-is-inside": "^1.0.1" + } + }, + "isarray": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", + "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" + }, + "jsonwebtoken": { + "version": "8.5.1", + "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", + "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", + "requires": { + "jws": "^3.2.2", + "lodash.includes": "^4.3.0", + "lodash.isboolean": "^3.0.3", + "lodash.isinteger": "^4.0.4", + "lodash.isnumber": "^3.0.3", + "lodash.isplainobject": "^4.0.6", + "lodash.isstring": "^4.0.1", + "lodash.once": "^4.0.0", + "ms": "^2.1.1", + "semver": "^5.6.0" + } + }, + "jwa": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", + "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", + "requires": { + "buffer-equal-constant-time": "1.0.1", + "ecdsa-sig-formatter": "1.0.11", + "safe-buffer": "^5.0.1" + } + }, + "jws": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", + "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", + "requires": { + "jwa": "^1.4.1", + "safe-buffer": "^5.0.1" + } + }, + "lodash.includes": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", + "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" + }, + "lodash.isboolean": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", + "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" + }, + "lodash.isinteger": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", + "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" + }, + "lodash.isnumber": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", + "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" + }, + "lodash.isplainobject": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", + "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" + }, + "lodash.isstring": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", + "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" + }, + "lodash.once": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", + "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" + }, + "mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" + }, + "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==", + "requires": { + "mime-db": "1.52.0" + } + }, + "minimatch": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", + "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mockery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/mockery/-/mockery-1.7.0.tgz", + "integrity": "sha512-gUQA33ayi0tuAhr/rJNZPr7Q7uvlBt4gyJPbi0CDcAfIzIrDu1YgGMFgmAu3stJqBpK57m7+RxUbcS+pt59fKQ==" + }, + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" + }, + "object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" + }, + "once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "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": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==" + }, + "path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + }, + "path-is-inside": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", + "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" + }, + "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==" + }, + "pify": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", + "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" + }, + "pinkie": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", + "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==" + }, + "pinkie-promise": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", + "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", + "requires": { + "pinkie": "^2.0.0" + } + }, + "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.3.0", + "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", + "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", + "requires": { + "asap": "~2.0.6" + } + }, + "q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" + }, + "qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "requires": { + "side-channel": "^1.0.4" + } + }, + "readable-stream": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", + "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", + "requires": { + "core-util-is": "~1.0.0", + "inherits": "~2.0.3", + "isarray": "~1.0.0", + "process-nextick-args": "~2.0.0", + "safe-buffer": "~5.1.1", + "string_decoder": "~1.1.1", + "util-deprecate": "~1.0.1" + } + }, + "rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "requires": { + "resolve": "^1.1.6" + } + }, + "resolve": { + "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.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + } + }, + "rimraf": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", + "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", + "requires": { + "glob": "^7.1.3" + } + }, + "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==" + }, + "semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + }, + "semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==" + }, + "set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "requires": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + } + }, + "shelljs": { + "version": "0.8.5", + "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", + "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", + "requires": { + "glob": "^7.0.0", + "interpret": "^1.0.0", + "rechoir": "^0.6.2" + } + }, + "side-channel": { + "version": "1.0.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==", + "requires": { + "safe-buffer": "~5.1.0" + } + }, + "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==" + }, + "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==" + } + } + }, + "tunnel": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" + }, + "typed-rest-client": { + "version": "1.8.4", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.4.tgz", + "integrity": "sha512-MyfKKYzk3I6/QQp6e1T50py4qg+c+9BzOEl2rBmQIpStwNUoqQ73An+Tkfy9YuV7O+o2mpVVJpe+fH//POZkbg==", + "requires": { + "qs": "^6.9.1", + "tunnel": "0.0.6", + "underscore": "^1.12.1" + } + }, + "typedarray": { + "version": "0.0.6", + "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" + }, + "typescript": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz", + "integrity": "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==", + "dev": true + }, + "underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" + }, + "util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + }, + "uuid": { + "version": "3.4.0", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + }, + "wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + } + } +} diff --git a/Tasks/NotationV0/package.json b/Tasks/NotationV0/package.json new file mode 100644 index 000000000000..a9a388e9b57f --- /dev/null +++ b/Tasks/NotationV0/package.json @@ -0,0 +1,22 @@ +{ + "name": "notation", + "version": "0.1.0", + "description": "Azure Pipepine Task for setting up Notation CLI, sign and verify with Notation", + "main": "src/index.js", + "scripts": { + "build": "tsc -b" + }, + "keywords": [], + "author": "", + "license": "MIT", + "dependencies": { + "@types/node": "^10.17.0", + "@types/mocha": "^5.2.7", + "azure-pipelines-task-lib": "4.0.1-preview", + "azure-pipelines-tasks-docker-common": "2.211.0", + "azure-pipelines-tool-lib": "1.3.2" + }, + "devDependencies": { + "typescript": "4.0.2" + } +} diff --git a/Tasks/NotationV0/src/index.ts b/Tasks/NotationV0/src/index.ts new file mode 100644 index 000000000000..a21d9687baa9 --- /dev/null +++ b/Tasks/NotationV0/src/index.ts @@ -0,0 +1,50 @@ +import * as path from 'path'; +import * as taskLib from 'azure-pipelines-task-lib/task'; +import { FAILED, STATUS, SUCCEEDED, WARNING } from './lib/constants'; +import { NOTATION_BINARY } from './lib/constants'; +import { install } from './install'; +import { sign } from './sign' +import { verify } from './verify'; + +taskLib.setResourcePath(path.join(__dirname, '..', 'task.json')); + +async function run() { + try { + let command = taskLib.getInput('command', true); + switch (command) { + case 'install': + if (taskLib.which(NOTATION_BINARY, false)) { + throw new Error(taskLib.loc('NotationAlreadyInstalled')); + } + await install(); + break; + case 'sign': + // check if notation is installed before sign + taskLib.which(NOTATION_BINARY, true); + await sign(); + break; + case 'verify': + // check if notation is installed before verify + taskLib.which(NOTATION_BINARY, true); + await verify(); + break; + default: + throw new Error(taskLib.loc('UnknownCommand', command)); + } + + if (taskLib.getTaskVariable(STATUS) === WARNING) { + taskLib.setVariable(STATUS, WARNING, false, true); + } else { + taskLib.setVariable(STATUS, SUCCEEDED, false, true); + } + } catch (err: unknown) { + taskLib.setVariable(STATUS, FAILED, false, true); + if (err instanceof Error) { + taskLib.setResult(taskLib.TaskResult.Failed, err.message); + } else { + taskLib.setResult(taskLib.TaskResult.Failed, taskLib.loc('UnknownError')); + } + } +} + +run(); diff --git a/Tasks/NotationV0/src/install.ts b/Tasks/NotationV0/src/install.ts new file mode 100644 index 000000000000..46336d33c2a3 --- /dev/null +++ b/Tasks/NotationV0/src/install.ts @@ -0,0 +1,41 @@ +import * as path from 'path'; +import * as taskLib from 'azure-pipelines-task-lib/task'; +import { getDownloadInfo, installFromURL } from './lib/install'; +import { NOTATION_VERSION_FILE } from './lib/constants'; + +export async function install(): Promise { + // the notation download URL + let version = ''; + let downloadURL = ''; + let checksum: string; + + if (taskLib.getBoolInput('isCustomVersion', false)) { + // for custom version, download the notation from specified URL + downloadURL = taskLib.getInput('url', true) || ''; + checksum = taskLib.getInput('checksum', true) || ''; + } else { + const versionPrefix = taskLib.getInput('version', true) || ''; + const downloadInfo = getDownloadInfo(versionPrefix, NOTATION_VERSION_FILE); + version = downloadInfo.version; + downloadURL = downloadInfo.url; + checksum = downloadInfo.checksum; + } + + // install notation binary + const extractPath = taskLib.getVariable('Agent.TempDirectory'); + if (!extractPath) { + throw new Error(taskLib.loc('TempDirectoryNotSet')); + } + await installFromURL(downloadURL, checksum, extractPath); + + // add to path for subsequent tasks + taskLib.prependPath(extractPath); + // add to path for current process + process.env['PATH'] = `${extractPath}${path.delimiter}${process.env['PATH']}`; + + if (!version) { + console.log(taskLib.loc('NotationInstalledFromURL', downloadURL)); + } else { + console.log(taskLib.loc('NotationInstalledFromVersion', version)); + } +} diff --git a/Tasks/NotationV0/src/lib/constants.ts b/Tasks/NotationV0/src/lib/constants.ts new file mode 100644 index 000000000000..88bfe1071ba1 --- /dev/null +++ b/Tasks/NotationV0/src/lib/constants.ts @@ -0,0 +1,16 @@ +// task constants +export const AZURE_KV_PLUGIN_VERSION_FILE = 'azure_kv_versions.json'; +export const NOTATION_VERSION_FILE = 'notation_versions.json'; + +// notation constant +export const PLUGINS = 'plugins'; +export const TRUST_STORE = 'truststore'; +export const NOTATION = 'notation'; +export const NOTATION_BINARY = 'notation'; +export const X509 = 'x509'; + +// status +export const STATUS = 'Status'; +export const SUCCEEDED = 'Succeeded'; +export const FAILED = 'Failed'; +export const WARNING = 'Warning'; \ No newline at end of file diff --git a/Tasks/NotationV0/src/lib/credentials.ts b/Tasks/NotationV0/src/lib/credentials.ts new file mode 100644 index 000000000000..3a0d1a531b67 --- /dev/null +++ b/Tasks/NotationV0/src/lib/credentials.ts @@ -0,0 +1,58 @@ +import * as fs from 'fs'; +import * as path from 'path'; +import * as taskLib from 'azure-pipelines-task-lib/task'; + +export async function getVaultCredentials(): Promise<{ [key: string]: string }> { + let connectedService = taskLib.getInput("azurekvServiceConection", true); + if (!connectedService) { + console.log(taskLib.loc('NoServiceConnection')); + return {}; + } + var authScheme = taskLib.getEndpointAuthorizationScheme(connectedService, true); + if (!authScheme) { + console.log(taskLib.loc('NoAuthScheme')); + return {}; + } + + let envVariables = {}; + switch (authScheme.toLocaleLowerCase()) { + case "managedserviceidentity": + // azure key vault plugin will automatially try managed idenitty + console.log(taskLib.loc('UseManagedIdentity')); + break; + case "serviceprincipal": + let authType = taskLib.getEndpointAuthorizationParameter(connectedService, 'authenticationType', true); + let cliPassword: string | undefined = ""; + var servicePrincipalId = taskLib.getEndpointAuthorizationParameter(connectedService, "serviceprincipalid", false); + var tenantId = taskLib.getEndpointAuthorizationParameter(connectedService, "tenantid", false); + + if (authType == "spnCertificate") { + taskLib.debug('certificate based endpoint'); + let certificateContent = taskLib.getEndpointAuthorizationParameter(connectedService, "servicePrincipalCertificate", false); + let tempDir = taskLib.getVariable('Agent.TempDirectory') || taskLib.getVariable('system.DefaultWorkingDirectory'); + if (!tempDir) { + throw new Error(taskLib.loc('TempDirectoryOrWorkingDirectoryNotSet')); + } + cliPassword = path.join(tempDir, 'spnCert.pem'); + fs.writeFileSync(cliPassword, certificateContent); + envVariables = { + "AZURE_TENANT_ID": tenantId, + "AZURE_CLIENT_ID": servicePrincipalId, + "AZURE_CLIENT_CERTIFICATE_PATH": cliPassword, + } + } + else { + taskLib.debug('key based endpoint'); + cliPassword = taskLib.getEndpointAuthorizationParameter(connectedService, "serviceprincipalkey", false); + envVariables = { + "AZURE_TENANT_ID": tenantId, + "AZURE_CLIENT_ID": servicePrincipalId, + "AZURE_CLIENT_SECRET": cliPassword, + } + } + break; + default: + throw new Error(taskLib.loc('UnsupportedAuthScheme', authScheme)); + } + return envVariables; +} diff --git a/Tasks/NotationV0/src/lib/crypto.ts b/Tasks/NotationV0/src/lib/crypto.ts new file mode 100644 index 000000000000..0452c222a160 --- /dev/null +++ b/Tasks/NotationV0/src/lib/crypto.ts @@ -0,0 +1,23 @@ +import * as crypto from 'crypto'; +import * as fs from 'fs'; + +// compute the checksum of the file +export async function computeChecksum(filePath: string): Promise { + return new Promise((resolve, reject) => { + const hash = crypto.createHash('sha256'); + const stream = fs.createReadStream(filePath); + + stream.on('data', (data) => { + hash.update(data); + }); + + stream.on('end', () => { + const result = hash.digest('hex'); + resolve(result); + }); + + stream.on('error', (error) => { + reject(error); + }); + }); +} diff --git a/Tasks/NotationV0/src/lib/fs.ts b/Tasks/NotationV0/src/lib/fs.ts new file mode 100644 index 000000000000..8db25ebc8982 --- /dev/null +++ b/Tasks/NotationV0/src/lib/fs.ts @@ -0,0 +1,20 @@ +import * as os from 'os'; +import * as path from 'path'; +import * as taskLib from 'azure-pipelines-task-lib/task'; + +export function getConfigHome(): string { + const platform = os.platform(); + switch (platform) { + case 'win32': + if (!process.env.APPDATA) { + throw new Error(taskLib.loc('APPDATANotSet')); + } + return process.env.APPDATA; + case 'darwin': + return path.join(os.homedir(), 'Library', 'Application Support'); + case 'linux': + return process.env.XDG_CONFIG_HOME ? process.env.XDG_CONFIG_HOME : path.join(os.homedir(), '.config'); + default: + throw new Error(`Unknown platform: ${platform}`); + } +} diff --git a/Tasks/NotationV0/src/lib/install.ts b/Tasks/NotationV0/src/lib/install.ts new file mode 100644 index 000000000000..81b47ba9d90d --- /dev/null +++ b/Tasks/NotationV0/src/lib/install.ts @@ -0,0 +1,117 @@ +import * as fs from 'fs'; +import * as os from 'os'; +import * as path from 'path'; +import * as taskLib from 'azure-pipelines-task-lib/task'; +import * as toolLib from 'azure-pipelines-tool-lib/tool'; +import { computeChecksum } from './crypto'; + +export async function installFromURL(downloadURL: string, expectedChecksum: string, extractPath: string): Promise { + // Download notation + const fileName = path.basename(downloadURL); + console.log('start'); + const downloadPath = await toolLib.downloadTool(downloadURL, fileName); + console.log('end'); + + // Validate checksum + const checksum = await computeChecksum(downloadPath); + if (expectedChecksum !== checksum) { + throw new Error(taskLib.loc('ChecksumValidationFailed', expectedChecksum, checksum)); + } + console.log(taskLib.loc('ChecksumValidated', expectedChecksum)); + + taskLib.mkdirP(extractPath); + + // Extract notation binary + await extractBinary(downloadPath, extractPath); +} + +async function extractBinary(filePath: string, extractPath: string): Promise { + if (filePath.endsWith('.zip')) { + return toolLib.extractZip(filePath, extractPath); + } else if (filePath.endsWith('.tar.gz')) { + return toolLib.extractTar(filePath, extractPath); + } + throw new Error(taskLib.loc('UnsupportedFileExtension', path.extname(filePath))); +} + +// Get the download URL and checksum for the notation binary +// based on the version +export function getDownloadInfo(versionPrefix: string, versionFileName: string): { version: string, url: string, checksum: string } { + const versionFile = path.join(__dirname, '..', '..', 'data', versionFileName); + const versionData = fs.readFileSync(versionFile, 'utf8'); + const versionList = JSON.parse(versionData); + + for (const versionSuite of versionList) { + if (isMatch(versionSuite["version"], versionPrefix)) { + return fetchTarget(versionSuite); + } + } + + throw new Error(taskLib.loc('UnsupportedVersion', versionPrefix)); +} + +function isMatch(version: string, versionPrefix: string): boolean { + // if the version range is for pre-release version, it needs to match + // the full version + if (versionPrefix.includes('-')) { + return versionPrefix === version; + } + + // for released version, it only needs to match the prefix + const versionParts = version.split('.'); // major.minor.patch + const versionPrefixParts = versionPrefix.split('.'); + if (versionPrefixParts.length > versionParts.length) { + throw new Error(taskLib.loc('InvalidVersionPrefix', versionPrefix)); + } + + for (let i = 0; i < versionPrefixParts.length; i++) { + if (versionPrefixParts[i] !== versionParts[i]) { + return false; + } + } + return true; +} + +function fetchTarget(versionSuite: any): { version: string, url: string, checksum: string } { + const platform = getPlatform(); + const arch = getArch(); + if (!(platform in versionSuite)) { + throw new Error(taskLib.loc('UnsupportedPlatform', platform)); + } + + if (!(arch in versionSuite[platform])) { + throw new Error(taskLib.loc('UnsupportedArchitecture', arch)); + } + + return { + version: versionSuite["version"], + url: versionSuite[platform][arch]["url"], + checksum: versionSuite[platform][arch]["checksum"] + }; +} + +function getPlatform(): string { + const platform = os.platform(); + switch (platform) { + case 'linux': + return 'linux'; + case 'darwin': + return 'darwin'; + case 'win32': + return 'windows'; + default: + throw new Error(taskLib.loc('UnsupportedPlatform', platform)); + } +} + +function getArch(): string { + const architecture = os.arch(); + switch (architecture) { + case 'x64': + return 'amd64'; + case 'arm64': + return 'arm64'; + default: + throw new Error(taskLib.loc('UnsupportedArchitecture', architecture)); + } +} diff --git a/Tasks/NotationV0/src/lib/runner.ts b/Tasks/NotationV0/src/lib/runner.ts new file mode 100644 index 000000000000..0dbc7043f3f6 --- /dev/null +++ b/Tasks/NotationV0/src/lib/runner.ts @@ -0,0 +1,56 @@ +import { Writable } from 'stream'; +import * as taskLib from 'azure-pipelines-task-lib/task'; +import { IExecOptions, ToolRunner } from 'azure-pipelines-task-lib/toolrunner'; +import { NOTATION, STATUS, WARNING } from './constants'; + +// notationRunner runs the notation command for each artifact. +export async function notationRunner(artifactRefs: string[], runCommand: (notation: ToolRunner, artifactRef: string, execOptions: IExecOptions) => Promise): Promise { + // run notation command for each artifact + let failedArtifactRefs = []; + let succeededArtifactRefs = []; + for (const artifactRef of artifactRefs) { + let outStream = new WarningStream(); + const code = await runCommand(taskLib.tool(NOTATION), artifactRef, { outStream: outStream }); + if (code !== 0) { + failedArtifactRefs.push(artifactRef); + continue; + } + + succeededArtifactRefs.push(artifactRef); + } + + // output conclusion + console.log(taskLib.loc('ResultSummary', artifactRefs.length, artifactRefs.length - failedArtifactRefs.length, failedArtifactRefs.length)); + if (succeededArtifactRefs.length > 0) { + console.log(taskLib.loc('SucceededArtifacts', succeededArtifactRefs.join(', '))); + } + if (failedArtifactRefs.length > 0) { + throw new Error(taskLib.loc('FailedArtifacts', failedArtifactRefs.join(', '))); + } +} + +// WarningStream is a writable stream that extracts warnings from logs. +class WarningStream extends Writable { + private buffer: string; + + constructor() { + super(); + this.buffer = ''; + } + + _write(chunk: Buffer, encoding: string, callback: () => void) { + this.buffer += chunk.toString(); + const lines = this.buffer.split('\n'); + this.buffer = lines.pop() || ''; + // extract warnings related to security from logs + for (const line of lines) { + if (line.startsWith('Warning: Always sign the artifact using the digest')) { + taskLib.warning(line); + taskLib.setTaskVariable(STATUS, WARNING); + } else { + console.log(line); + } + } + callback(); + } +} diff --git a/Tasks/NotationV0/src/lib/variables.ts b/Tasks/NotationV0/src/lib/variables.ts new file mode 100644 index 000000000000..eb6410b97967 --- /dev/null +++ b/Tasks/NotationV0/src/lib/variables.ts @@ -0,0 +1,53 @@ +import * as taskLib from 'azure-pipelines-task-lib/task'; +import { STATUS, WARNING } from './constants'; + +// get artifact references from input or from previous docker push task +// through "RESOURCE_URIS" variable. +export function getArtifactReferences(): string[] { + let artifactRefs = [] + const artifactRefsInput = taskLib.getInput('artifactRefs', false); + if (!artifactRefsInput) { + console.log(taskLib.loc('TryToGetArtifactRefsFromDockerTask')); + artifactRefs = getArtifactReferencesFromDockerTask(); + } else { + artifactRefs = artifactRefsInput.split(',').map((artifactRef) => artifactRef.trim()); + } + + if (artifactRefs.length === 0) { + throw new Error(taskLib.loc('ArtifactRefsNotSpecified')); + } + + // validate repeated artifact references + let uniqueArtifactRefs = new Set(); + for (const artifactRef of artifactRefs) { + if (uniqueArtifactRefs.has(artifactRef)) { + taskLib.warning(taskLib.loc('RepeatedArtifactRef', artifactRef)); + taskLib.setTaskVariable(STATUS, WARNING); + } else { + uniqueArtifactRefs.add(artifactRef); + } + } + + console.log(taskLib.loc('ArtifactRefs', artifactRefs)); + return Array.from(uniqueArtifactRefs); +} + +// get artifact references from previous docker push task through +// "RESOURCE_URIS" variable. +function getArtifactReferencesFromDockerTask(): string[] { + const resourceURIs = taskLib.getVariable('RESOURCE_URIS'); + if (!resourceURIs) { + return []; + } + + let references = []; + const resourceURIArray = resourceURIs.split(','); + for (const uri of resourceURIArray) { + const parts = uri.split('://'); + if (parts.length !== 2) { + throw new Error(taskLib.loc('InvalidResourceURI', uri)); + } + references.push(parts[1]); + } + return references; +} diff --git a/Tasks/NotationV0/src/sign.ts b/Tasks/NotationV0/src/sign.ts new file mode 100644 index 000000000000..8da77453c891 --- /dev/null +++ b/Tasks/NotationV0/src/sign.ts @@ -0,0 +1,67 @@ +import * as os from 'os'; +import * as path from 'path'; +import * as taskLib from 'azure-pipelines-task-lib/task'; +import { AZURE_KV_PLUGIN_VERSION_FILE, NOTATION, NOTATION_BINARY, PLUGINS } from './lib/constants'; +import { IExecOptions, ToolRunner } from 'azure-pipelines-task-lib/toolrunner'; +import { getDownloadInfo, installFromURL } from './lib/install'; +import { getArtifactReferences } from './lib/variables'; +import { getConfigHome } from './lib/fs'; +import { getVaultCredentials } from './lib/credentials'; +import { notationRunner } from './lib/runner'; + +export async function sign(): Promise { + const artifactRefs = getArtifactReferences(); + const keyid = taskLib.getInput('keyid', true) || ''; + const signatureFormat = taskLib.getInput('signatureFormat', false) || 'cose'; + const allowReferrerAPI = taskLib.getBoolInput('allowReferrersAPI', false); + const debug = taskLib.getVariable('system.debug'); + let env = { ...process.env }; + if (allowReferrerAPI) { + env["NOTATION_EXPERIMENTAL"] = "1"; + } + + const pluginName = taskLib.getInput('plugin', true); + switch (pluginName) { + case 'azureKeyVault': + // azure-kv plugin specific inputs + const akvPluginVersion = taskLib.getInput('akvPluginVersion', true) || ''; + const caCertBundle = taskLib.getInput('caCertBundle', false) || ''; + const selfSignedCert = taskLib.getBoolInput('selfSigned', false); + const keyVaultPluginEnv = { ...env, ...await getVaultCredentials() } + await installAzureKV(akvPluginVersion); + await notationRunner(artifactRefs, async (notation: ToolRunner, artifactRef: string, execOptions: IExecOptions) => { + execOptions.env = keyVaultPluginEnv; + return notation + .arg(['sign', artifactRef, + '--plugin', 'azure-kv', + '--id', keyid, + '--signature-format', signatureFormat]) + .argIf(allowReferrerAPI, '--allow-referrers-api') + .argIf(caCertBundle, `--plugin-config=ca_certs=${caCertBundle}`) + .argIf(selfSignedCert, '--plugin-config=self_signed=true') + .argIf(debug && debug.toLowerCase() === 'true', '--debug') + .exec(execOptions); + }) + break; + default: + throw new Error(taskLib.loc('UnknownPlugin', pluginName)); + } +} + +// install azurekv plugin +async function installAzureKV(versionPrefix: string): Promise { + // check if the plugin is already installed + let binaryName = 'notation-azure-kv'; + if (os.platform() == 'win32') { + binaryName += '.exe'; + } + const pluginDir = path.join(getConfigHome(), NOTATION, PLUGINS, 'azure-kv'); + if (taskLib.exist(path.join(pluginDir, binaryName))) { + console.log(taskLib.loc('AzureKVPluginAlreadyInstalled')); + } else { + // get azure-kv latest v1.x download info + const downloadInfo = getDownloadInfo(versionPrefix, AZURE_KV_PLUGIN_VERSION_FILE); + await installFromURL(downloadInfo.url, downloadInfo.checksum, pluginDir); + } + taskLib.tool(NOTATION_BINARY).arg(['plugin', 'list']).execSync(); +} diff --git a/Tasks/NotationV0/src/verify.ts b/Tasks/NotationV0/src/verify.ts new file mode 100644 index 000000000000..132e8428eca0 --- /dev/null +++ b/Tasks/NotationV0/src/verify.ts @@ -0,0 +1,105 @@ +import * as path from 'path'; +import * as taskLib from 'azure-pipelines-task-lib/task'; +import { IExecOptions, ToolRunner } from 'azure-pipelines-task-lib/toolrunner'; +import { NOTATION, NOTATION_BINARY, TRUST_STORE, X509 } from './lib/constants'; +import { getArtifactReferences } from './lib/variables'; +import { getConfigHome } from './lib/fs'; +import { notationRunner } from './lib/runner'; + +export async function verify(): Promise { + const artifactRefs = getArtifactReferences(); + const trustPolicy = taskLib.getInput('trustPolicy', true) || ''; + const trustStore = taskLib.getInput('trustStore', true) || ''; + const allowReferrerAPI = taskLib.getBoolInput('allowReferrersAPI', false); + const debug = taskLib.getVariable('system.debug') + + // config trust policy + await configTrustPolicy(trustPolicy); + // config trust store + taskLib.rmRF(path.join(getConfigHome(), NOTATION, TRUST_STORE)); + await configTrustStore(trustStore); + + let env = { ...process.env } + if (allowReferrerAPI) { + env["NOTATION_EXPERIMENTAL"] = "1"; + } + + // run notation verify for each artifact + await notationRunner(artifactRefs, async (notation: ToolRunner, artifactRef: string, execOptions: IExecOptions) => { + execOptions.env = env; + return notation + .arg(['verify', artifactRef, '--verbose']) + .argIf(allowReferrerAPI, '--allow-referrers-api') + .argIf(debug && debug.toLowerCase() === 'true', '--debug') + .exec(execOptions); + }) +} + +async function configTrustPolicy(trustPolicy: string): Promise { + // run notation command to install trust policy + let code = await taskLib.tool(NOTATION_BINARY) + .arg(['policy', 'import', '--force', trustPolicy]) + .exec(); + if (code !== 0) { + throw new Error(taskLib.loc('FailedToImportTrustPolicy', trustPolicy)); + } + + code = await taskLib.tool(NOTATION_BINARY) + .arg(['policy', 'show']) + .exec(); + if (code !== 0) { + throw new Error(taskLib.loc('FailedToShowTrustPolicy')); + } +} + +// configTrustStore configures Notation trust store based on specs. +// Reference: https://github.com/notaryproject/specifications/blob/v1.0.0-rc.2/specs/trust-store-trust-policy.md#trust-store +async function configTrustStore(dir: string): Promise { + const trustStoreX509 = path.join(dir, X509); // .github/truststore/x509 + if (!taskLib.exist(trustStoreX509)) { + throw new Error(taskLib.loc('CannotFindTrustStore', trustStoreX509)); + } + + // traverse all trust store types + for (var trustStoreTypePath of getSubdir(trustStoreX509)) { // [.github/truststore/x509/ca, .github/truststore/x509/signingAuthority, ...] + const trustStoreType = path.basename(trustStoreTypePath); + + // traverse all trust stores + for (var trustStorePath of getSubdir(trustStoreTypePath)) { // [.github/truststore/x509/ca/, .github/truststore/x509/ca/, ...] + const trustStore = path.basename(trustStorePath); + + // get all certs + const certs = getFilesFromDir(trustStorePath); // [.github/truststore/x509/ca//, .github/truststore/x509/ca//, ...] + + // run notation command to add cert to trust store + const code = await taskLib.tool(NOTATION_BINARY) + .arg(['cert', 'add', '--type', trustStoreType, '--store', trustStore, ...certs]) + .exec(); + if (code !== 0) { + throw new Error(taskLib.loc('FailedToAddCertToTrustStore', trustStore)); + } + } + } + + // list trust store + const code = await taskLib.tool(NOTATION_BINARY) + .arg(['cert', 'list']) + .exec(); + if (code !== 0) { + throw new Error(taskLib.loc('FailedToListTrustStore')); + } +} + +// getSubdir gets all sub dirs under dir without recursive +function getSubdir(dir: string): string[] { + return taskLib.ls('', [dir]) + .map(filename => path.join(dir, filename)) + .filter(filepath => taskLib.stats(filepath).isDirectory()) +} + +// getFilesFromDir gets all files under dir without recursive +function getFilesFromDir(dir: string): string[] { + return taskLib.ls('', [dir]) + .map(filename => path.join(dir, filename)) + .filter(filepath => taskLib.stats(filepath).isFile()) +} diff --git a/Tasks/NotationV0/task.json b/Tasks/NotationV0/task.json new file mode 100644 index 000000000000..86d1ce6bb0ef --- /dev/null +++ b/Tasks/NotationV0/task.json @@ -0,0 +1,248 @@ +{ + "$schema": "https://raw.githubusercontent.com/Microsoft/azure-pipelines-task-lib/master/tasks.schema.json", + "id": "f7d56ba6-35a6-453d-8192-8b602bf234bd", + "name": "Notation", + "friendlyName": "Notation", + "description": "Azure Pipepine Task for setting up Notation CLI, sign and verify with Notation", + "helpMarkDown": "", + "category": "Utility", + "author": "Notation Developers", + "version": { + "Major": 0, + "Minor": 1, + "Patch": 0 + }, + "groups": [ + { + "name": "commandConfig", + "displayName": "Command Configuration", + "isExpanded": true + }, + { + "name": "pluginConfig", + "displayName": "Plugin Configuration", + "isExpanded": true, + "visibleRule": "command = sign" + }, + { + "name": "advancedConfig", + "displayName": "Advanced Configuration", + "isExpanded": false, + "visibleRule": "command = sign || command = verify" + } + ], + "instanceNameFormat": "$(command)", + "inputs": [ + { + "name": "command", + "type": "pickList", + "label": "Command to run", + "defaultValue": "install", + "helpMarkDown": "example: install", + "required": true, + "options": { + "install": "Install", + "sign": "Sign", + "verify": "Verify" + } + }, + { + "name": "isCustomVersion", + "type": "boolean", + "label": "Custom Version", + "defaultValue": false, + "required": false, + "helpMarkDown": "If checked, you can provide a custom version for the task", + "visibleRule": "command = install", + "groupName": "commandConfig" + }, + { + "name": "version", + "type": "string", + "label": "Version", + "defaultValue": "1.0.0", + "required": true, + "helpMarkDown": "The version of Notation to install. Example: 1.0.0, 1, 1.0, 1.0.0", + "visibleRule": "command = install && isCustomVersion = false", + "groupName": "commandConfig" + }, + { + "name": "url", + "type": "string", + "label": "Download URL", + "defaultValue": "", + "required": true, + "helpMarkDown": "example: https://github.com/notaryproject/notation/releases/download/v1.0.0/notation_1.0.0_linux_amd64.tar.gz", + "groupName": "commandConfig", + "visibleRule": "command = install && isCustomVersion = true" + }, + { + "name": "checksum", + "type": "string", + "label": "Checksum", + "defaultValue": "", + "required": true, + "helpMarkDown": "The SHA-256 checksum of the downloaded file", + "groupName": "commandConfig", + "visibleRule": "command = install && isCustomVersion = true" + }, + { + "name": "artifactRefs", + "type": "string", + "label": "Artifact references", + "defaultValue": "", + "required": false, + "visibleRule": "command = verify || command = sign", + "helpMarkDown": "Container artifact references for signing. If it was not specified, use the artifact reference from previous Docker push task. Example: /@ If multiple, separate by comma.", + "groupName": "commandConfig" + }, + { + "name": "signatureFormat", + "type": "pickList", + "label": "Signature Format", + "defaultValue": "cose", + "required": false, + "options": { + "cose": "COSE", + "jws": "JWS" + }, + "visibleRule": "command = sign", + "helpMarkDown": "Signature envelope format, options: \"jws\", \"cose\" (default \"jws\")", + "groupName": "advancedConfig" + }, + { + "name": "allowReferrersAPI", + "type": "boolean", + "label": "[Experimental] Allow Referrers API", + "defaultValue": false, + "required": false, + "visibleRule": "command = sign || command = verify", + "helpMarkDown": "Use the Referrers API to sign signatures, if not supported (returns 404), fallback to the Referrers tag schema.", + "groupName": "advancedConfig" + }, + { + "name": "plugin", + "type": "pickList", + "label": "Plugin", + "defaultValue": "azureKeyVault", + "required": true, + "options": { + "azureKeyVault": "Azure Key Vault Plugin" + }, + "groupName": "pluginConfig" + }, + { + "name": "akvPluginVersion", + "type": "string", + "label": "Plugin Version", + "defaultValue": "1.0.1", + "required": true, + "helpMarkDown": "The version of the Azure Key Vualt plugin to be install. please visit the [release page](https://github.com/Azure/notation-azure-kv/releases) for the available versions.", + "visibleRule": "plugin = azureKeyVault", + "groupName": "pluginConfig" + }, + { + "name": "azurekvServiceConection", + "type": "connectedService:AzureRM", + "label": "Azure Key Vault service connection", + "defaultValue": "", + "required": false, + "helpMarkDown": "Select the Azure subscription for the key vault if prefer to use service connection for authentication.", + "visibleRule": "plugin = azureKeyVault", + "groupName": "pluginConfig" + }, + { + "name": "keyid", + "type": "string", + "label": "Key ID", + "required": true, + "defaultValue": "", + "helpMarkDown": "The Key ID is the key or certificate identifier for Azure Key Vault.", + "visibleRule": "plugin = azureKeyVault", + "groupName": "pluginConfig" + }, + { + "name": "caCertBundle", + "type": "string", + "label": "Certificate Bundle File Path", + "required": false, + "defaultValue": "", + "visibleRule": "plugin = azureKeyVault", + "helpMarkDown": "A file with root and all intermediate certificates, starting from the root certificate, following the order in the certificate chain.", + "groupName": "pluginConfig" + }, + { + "name": "selfSigned", + "type": "boolean", + "label": "Self-signed Certificate", + "required": false, + "defaultValue": false, + "visibleRule": "plugin = azureKeyVault", + "groupName": "pluginConfig" + }, + { + "name": "trustPolicy", + "type": "string", + "label": "Trust Policy File Path", + "required": true, + "defaultValue": "", + "visibleRule": "command = verify", + "helpMarkDown": "The path to the [trust policy](https://github.com/notaryproject/specifications/blob/v1.0.0/specs/trust-store-trust-policy.md#trust-policy) file relative to the repository. Example: ./path/to/trust-policy.json", + "groupName": "commandConfig" + }, + { + "name": "trustStore", + "type": "string", + "label": "Trust Store Folder Path", + "required": true, + "defaultValue": "", + "visibleRule": "command = verify", + "helpMarkDown": "The path to the directory containing the [trust store](https://github.com/notaryproject/specifications/blob/v1.0.0/specs/trust-store-trust-policy.md#trust-store) relative to the repository. Example: ./path/to/truststore/", + "groupName": "commandConfig" + } + ], + "execution": { + "Node10": { + "target": "src/index.js" + }, + "Node16": { + "target": "src/index.js" + } + }, + "messages": { + "ArtifactRefs": "Artifact references: %s.", + "ArtifactRefsNotSpecified": "Artifact references are not specified.", + "APPDATANotSet": "APPDATA is not set.", + "AzureKVPluginAlreadyInstalled": "Azure Key Vault plugin is already installed.", + "CannotFindTrustStore": "Cannot find trust store directory: %s.", + "ChecksumValidated": "Checksum validated: %s.", + "ChecksumValidationFailed": "Checksum validation failed. Expected: %s, Actual: %s.", + "FailedArtifacts": "Failed artifacts: %s.", + "FailedToAddCertToTrustStore": "Failed to add a certificate to trust store: %s.", + "FailedToImportTrustPolicy": "Failed to import trust policy: %s.", + "FailedToListTrustStore": "Failed to list the trust store.", + "FailedToShowTrustPolicy": "Failed to show trust policy.", + "TryToGetArtifactRefsFromDockerTask": "Try to get artifact references from Docker task.", + "InvalidResourceURI": "Invalid resource URI: %s.", + "InvalidVersionPrefix": "Invalid version prefix: %s.", + "ResultSummary": "Total artifacts: %s, succeeded: %s, failed: %s.", + "RepeatedArtifactRef": "Repeated artifact reference: %s.", + "SucceededArtifacts": "Succeeded artifacts: %s.", + "TempDirectoryNotSet": "Agent.TempDirectory is not set.", + "TempDirectoryOrWorkingDirectoryNotSet": "Agent.TempDirectory or system.DefaultWorkingDirectory is not set", + "NoAuthScheme": "No authentication scheme is specified.", + "NotationAlreadyInstalled": "Notation is already installed, please do not install it again.", + "NotationInstalledFromURL": "Notation is installed from %s.", + "NotationInstalledFromVersion": "Notation v%s is installed.", + "NoServiceConnection": "No Azure Key Vault service connection endpoint is specified.", + "UnsupportedArchitecture": "Unsupported architecture: %s.", + "UnsupportedFileExtension": "Unsupported file extension: %s.", + "UnsupportedPlatform": "Unsupported platform: %s.", + "UnsupportedVersion": "Unsupported version: %s.", + "UseManagedIdentity": "Use managed identity to access Azure Key Vault.", + "UnknownCommand": "Unknown command: %s.", + "UnknownError": "An unknown error occurred.", + "UnknownPlugin": "Unknown plugin: %s.", + "UnsupportedAuthScheme": "Unsupported authentication scheme: %s." + } +} \ No newline at end of file diff --git a/Tasks/NotationV0/task.loc.json b/Tasks/NotationV0/task.loc.json new file mode 100644 index 000000000000..4598b5b9dd8a --- /dev/null +++ b/Tasks/NotationV0/task.loc.json @@ -0,0 +1,248 @@ +{ + "$schema": "https://raw.githubusercontent.com/Microsoft/azure-pipelines-task-lib/master/tasks.schema.json", + "id": "f7d56ba6-35a6-453d-8192-8b602bf234bd", + "name": "Notation", + "friendlyName": "ms-resource:loc.friendlyName", + "description": "ms-resource:loc.description", + "helpMarkDown": "ms-resource:loc.helpMarkDown", + "category": "Utility", + "author": "Notation Developers", + "version": { + "Major": 0, + "Minor": 1, + "Patch": 0 + }, + "groups": [ + { + "name": "commandConfig", + "displayName": "ms-resource:loc.group.displayName.commandConfig", + "isExpanded": true + }, + { + "name": "pluginConfig", + "displayName": "ms-resource:loc.group.displayName.pluginConfig", + "isExpanded": true, + "visibleRule": "command = sign" + }, + { + "name": "advancedConfig", + "displayName": "ms-resource:loc.group.displayName.advancedConfig", + "isExpanded": false, + "visibleRule": "command = sign || command = verify" + } + ], + "instanceNameFormat": "ms-resource:loc.instanceNameFormat", + "inputs": [ + { + "name": "command", + "type": "pickList", + "label": "ms-resource:loc.input.label.command", + "defaultValue": "install", + "helpMarkDown": "ms-resource:loc.input.help.command", + "required": true, + "options": { + "install": "Install", + "sign": "Sign", + "verify": "Verify" + } + }, + { + "name": "isCustomVersion", + "type": "boolean", + "label": "ms-resource:loc.input.label.isCustomVersion", + "defaultValue": false, + "required": false, + "helpMarkDown": "ms-resource:loc.input.help.isCustomVersion", + "visibleRule": "command = install", + "groupName": "commandConfig" + }, + { + "name": "version", + "type": "string", + "label": "ms-resource:loc.input.label.version", + "defaultValue": "1.0.0", + "required": true, + "helpMarkDown": "ms-resource:loc.input.help.version", + "visibleRule": "command = install && isCustomVersion = false", + "groupName": "commandConfig" + }, + { + "name": "url", + "type": "string", + "label": "ms-resource:loc.input.label.url", + "defaultValue": "", + "required": true, + "helpMarkDown": "ms-resource:loc.input.help.url", + "groupName": "commandConfig", + "visibleRule": "command = install && isCustomVersion = true" + }, + { + "name": "checksum", + "type": "string", + "label": "ms-resource:loc.input.label.checksum", + "defaultValue": "", + "required": true, + "helpMarkDown": "ms-resource:loc.input.help.checksum", + "groupName": "commandConfig", + "visibleRule": "command = install && isCustomVersion = true" + }, + { + "name": "artifactRefs", + "type": "string", + "label": "ms-resource:loc.input.label.artifactRefs", + "defaultValue": "", + "required": false, + "visibleRule": "command = verify || command = sign", + "helpMarkDown": "ms-resource:loc.input.help.artifactRefs", + "groupName": "commandConfig" + }, + { + "name": "signatureFormat", + "type": "pickList", + "label": "ms-resource:loc.input.label.signatureFormat", + "defaultValue": "cose", + "required": false, + "options": { + "cose": "COSE", + "jws": "JWS" + }, + "visibleRule": "command = sign", + "helpMarkDown": "ms-resource:loc.input.help.signatureFormat", + "groupName": "advancedConfig" + }, + { + "name": "allowReferrersAPI", + "type": "boolean", + "label": "ms-resource:loc.input.label.allowReferrersAPI", + "defaultValue": false, + "required": false, + "visibleRule": "command = sign || command = verify", + "helpMarkDown": "ms-resource:loc.input.help.allowReferrersAPI", + "groupName": "advancedConfig" + }, + { + "name": "plugin", + "type": "pickList", + "label": "ms-resource:loc.input.label.plugin", + "defaultValue": "azureKeyVault", + "required": true, + "options": { + "azureKeyVault": "Azure Key Vault Plugin" + }, + "groupName": "pluginConfig" + }, + { + "name": "akvPluginVersion", + "type": "string", + "label": "ms-resource:loc.input.label.akvPluginVersion", + "defaultValue": "1.0.1", + "required": true, + "helpMarkDown": "ms-resource:loc.input.help.akvPluginVersion", + "visibleRule": "plugin = azureKeyVault", + "groupName": "pluginConfig" + }, + { + "name": "azurekvServiceConection", + "type": "connectedService:AzureRM", + "label": "ms-resource:loc.input.label.azurekvServiceConection", + "defaultValue": "", + "required": false, + "helpMarkDown": "ms-resource:loc.input.help.azurekvServiceConection", + "visibleRule": "plugin = azureKeyVault", + "groupName": "pluginConfig" + }, + { + "name": "keyid", + "type": "string", + "label": "ms-resource:loc.input.label.keyid", + "required": true, + "defaultValue": "", + "helpMarkDown": "ms-resource:loc.input.help.keyid", + "visibleRule": "plugin = azureKeyVault", + "groupName": "pluginConfig" + }, + { + "name": "caCertBundle", + "type": "string", + "label": "ms-resource:loc.input.label.caCertBundle", + "required": false, + "defaultValue": "", + "visibleRule": "plugin = azureKeyVault", + "helpMarkDown": "ms-resource:loc.input.help.caCertBundle", + "groupName": "pluginConfig" + }, + { + "name": "selfSigned", + "type": "boolean", + "label": "ms-resource:loc.input.label.selfSigned", + "required": false, + "defaultValue": false, + "visibleRule": "plugin = azureKeyVault", + "groupName": "pluginConfig" + }, + { + "name": "trustPolicy", + "type": "string", + "label": "ms-resource:loc.input.label.trustPolicy", + "required": true, + "defaultValue": "", + "visibleRule": "command = verify", + "helpMarkDown": "ms-resource:loc.input.help.trustPolicy", + "groupName": "commandConfig" + }, + { + "name": "trustStore", + "type": "string", + "label": "ms-resource:loc.input.label.trustStore", + "required": true, + "defaultValue": "", + "visibleRule": "command = verify", + "helpMarkDown": "ms-resource:loc.input.help.trustStore", + "groupName": "commandConfig" + } + ], + "execution": { + "Node10": { + "target": "src/index.js" + }, + "Node16": { + "target": "src/index.js" + } + }, + "messages": { + "ArtifactRefs": "ms-resource:loc.messages.ArtifactRefs", + "ArtifactRefsNotSpecified": "ms-resource:loc.messages.ArtifactRefsNotSpecified", + "APPDATANotSet": "ms-resource:loc.messages.APPDATANotSet", + "AzureKVPluginAlreadyInstalled": "ms-resource:loc.messages.AzureKVPluginAlreadyInstalled", + "CannotFindTrustStore": "ms-resource:loc.messages.CannotFindTrustStore", + "ChecksumValidated": "ms-resource:loc.messages.ChecksumValidated", + "ChecksumValidationFailed": "ms-resource:loc.messages.ChecksumValidationFailed", + "FailedArtifacts": "ms-resource:loc.messages.FailedArtifacts", + "FailedToAddCertToTrustStore": "ms-resource:loc.messages.FailedToAddCertToTrustStore", + "FailedToImportTrustPolicy": "ms-resource:loc.messages.FailedToImportTrustPolicy", + "FailedToListTrustStore": "ms-resource:loc.messages.FailedToListTrustStore", + "FailedToShowTrustPolicy": "ms-resource:loc.messages.FailedToShowTrustPolicy", + "TryToGetArtifactRefsFromDockerTask": "ms-resource:loc.messages.TryToGetArtifactRefsFromDockerTask", + "InvalidResourceURI": "ms-resource:loc.messages.InvalidResourceURI", + "InvalidVersionPrefix": "ms-resource:loc.messages.InvalidVersionPrefix", + "ResultSummary": "ms-resource:loc.messages.ResultSummary", + "RepeatedArtifactRef": "ms-resource:loc.messages.RepeatedArtifactRef", + "SucceededArtifacts": "ms-resource:loc.messages.SucceededArtifacts", + "TempDirectoryNotSet": "ms-resource:loc.messages.TempDirectoryNotSet", + "TempDirectoryOrWorkingDirectoryNotSet": "ms-resource:loc.messages.TempDirectoryOrWorkingDirectoryNotSet", + "NoAuthScheme": "ms-resource:loc.messages.NoAuthScheme", + "NotationAlreadyInstalled": "ms-resource:loc.messages.NotationAlreadyInstalled", + "NotationInstalledFromURL": "ms-resource:loc.messages.NotationInstalledFromURL", + "NotationInstalledFromVersion": "ms-resource:loc.messages.NotationInstalledFromVersion", + "NoServiceConnection": "ms-resource:loc.messages.NoServiceConnection", + "UnsupportedArchitecture": "ms-resource:loc.messages.UnsupportedArchitecture", + "UnsupportedFileExtension": "ms-resource:loc.messages.UnsupportedFileExtension", + "UnsupportedPlatform": "ms-resource:loc.messages.UnsupportedPlatform", + "UnsupportedVersion": "ms-resource:loc.messages.UnsupportedVersion", + "UseManagedIdentity": "ms-resource:loc.messages.UseManagedIdentity", + "UnknownCommand": "ms-resource:loc.messages.UnknownCommand", + "UnknownError": "ms-resource:loc.messages.UnknownError", + "UnknownPlugin": "ms-resource:loc.messages.UnknownPlugin", + "UnsupportedAuthScheme": "ms-resource:loc.messages.UnsupportedAuthScheme" + } +} \ No newline at end of file diff --git a/Tasks/NotationV0/tsconfig.json b/Tasks/NotationV0/tsconfig.json new file mode 100644 index 000000000000..c4f1f313d193 --- /dev/null +++ b/Tasks/NotationV0/tsconfig.json @@ -0,0 +1,101 @@ +{ + "compilerOptions": { + /* Visit https://aka.ms/tsconfig.json to read more about this file */ + + /* Projects */ + // "incremental": true, /* Enable incremental compilation */ + // "composite": true, /* Enable constraints that allow a TypeScript project to be used with project references. */ + // "tsBuildInfoFile": "./", /* Specify the folder for .tsbuildinfo incremental compilation files. */ + // "disableSourceOfProjectReferenceRedirect": true, /* Disable preferring source files instead of declaration files when referencing composite projects */ + // "disableSolutionSearching": true, /* Opt a project out of multi-project reference checking when editing. */ + // "disableReferencedProjectLoad": true, /* Reduce the number of projects loaded automatically by TypeScript. */ + + /* Language and Environment */ + "target": "es6", /* Set the JavaScript language version for emitted JavaScript and include compatible library declarations. */ + // "lib": [], /* Specify a set of bundled library declaration files that describe the target runtime environment. */ + // "jsx": "preserve", /* Specify what JSX code is generated. */ + // "experimentalDecorators": true, /* Enable experimental support for TC39 stage 2 draft decorators. */ + // "emitDecoratorMetadata": true, /* Emit design-type metadata for decorated declarations in source files. */ + // "jsxFactory": "", /* Specify the JSX factory function used when targeting React JSX emit, e.g. 'React.createElement' or 'h' */ + // "jsxFragmentFactory": "", /* Specify the JSX Fragment reference used for fragments when targeting React JSX emit e.g. 'React.Fragment' or 'Fragment'. */ + // "jsxImportSource": "", /* Specify module specifier used to import the JSX factory functions when using `jsx: react-jsx*`.` */ + // "reactNamespace": "", /* Specify the object invoked for `createElement`. This only applies when targeting `react` JSX emit. */ + // "noLib": true, /* Disable including any library files, including the default lib.d.ts. */ + // "useDefineForClassFields": true, /* Emit ECMAScript-standard-compliant class fields. */ + + /* Modules */ + "module": "commonjs", /* Specify what module code is generated. */ + // "rootDir": "./", /* Specify the root folder within your source files. */ + // "moduleResolution": "node", /* Specify how TypeScript looks up a file from a given module specifier. */ + // "baseUrl": "./", /* Specify the base directory to resolve non-relative module names. */ + // "paths": {}, /* Specify a set of entries that re-map imports to additional lookup locations. */ + // "rootDirs": [], /* Allow multiple folders to be treated as one when resolving modules. */ + // "typeRoots": [], /* Specify multiple folders that act like `./node_modules/@types`. */ + // "types": [], /* Specify type package names to be included without being referenced in a source file. */ + // "allowUmdGlobalAccess": true, /* Allow accessing UMD globals from modules. */ + // "resolveJsonModule": true, /* Enable importing .json files */ + // "noResolve": true, /* Disallow `import`s, `require`s or ``s from expanding the number of files TypeScript should add to a project. */ + + /* JavaScript Support */ + // "allowJs": true, /* Allow JavaScript files to be a part of your program. Use the `checkJS` option to get errors from these files. */ + // "checkJs": true, /* Enable error reporting in type-checked JavaScript files. */ + // "maxNodeModuleJsDepth": 1, /* Specify the maximum folder depth used for checking JavaScript files from `node_modules`. Only applicable with `allowJs`. */ + + /* Emit */ + // "declaration": true, /* Generate .d.ts files from TypeScript and JavaScript files in your project. */ + // "declarationMap": true, /* Create sourcemaps for d.ts files. */ + // "emitDeclarationOnly": true, /* Only output d.ts files and not JavaScript files. */ + // "sourceMap": true, /* Create source map files for emitted JavaScript files. */ + // "outFile": "./", /* Specify a file that bundles all outputs into one JavaScript file. If `declaration` is true, also designates a file that bundles all .d.ts output. */ + // "outDir": "./", /* Specify an output folder for all emitted files. */ + // "removeComments": true, /* Disable emitting comments. */ + // "noEmit": true, /* Disable emitting files from a compilation. */ + // "importHelpers": true, /* Allow importing helper functions from tslib once per project, instead of including them per-file. */ + // "importsNotUsedAsValues": "remove", /* Specify emit/checking behavior for imports that are only used for types */ + // "downlevelIteration": true, /* Emit more compliant, but verbose and less performant JavaScript for iteration. */ + // "sourceRoot": "", /* Specify the root path for debuggers to find the reference source code. */ + // "mapRoot": "", /* Specify the location where debugger should locate map files instead of generated locations. */ + // "inlineSourceMap": true, /* Include sourcemap files inside the emitted JavaScript. */ + // "inlineSources": true, /* Include source code in the sourcemaps inside the emitted JavaScript. */ + // "emitBOM": true, /* Emit a UTF-8 Byte Order Mark (BOM) in the beginning of output files. */ + // "newLine": "crlf", /* Set the newline character for emitting files. */ + // "stripInternal": true, /* Disable emitting declarations that have `@internal` in their JSDoc comments. */ + // "noEmitHelpers": true, /* Disable generating custom helper functions like `__extends` in compiled output. */ + // "noEmitOnError": true, /* Disable emitting files if any type checking errors are reported. */ + // "preserveConstEnums": true, /* Disable erasing `const enum` declarations in generated code. */ + // "declarationDir": "./", /* Specify the output directory for generated declaration files. */ + // "preserveValueImports": true, /* Preserve unused imported values in the JavaScript output that would otherwise be removed. */ + + /* Interop Constraints */ + // "isolatedModules": true, /* Ensure that each file can be safely transpiled without relying on other imports. */ + // "allowSyntheticDefaultImports": true, /* Allow 'import x from y' when a module doesn't have a default export. */ + "esModuleInterop": true, /* Emit additional JavaScript to ease support for importing CommonJS modules. This enables `allowSyntheticDefaultImports` for type compatibility. */ + // "preserveSymlinks": true, /* Disable resolving symlinks to their realpath. This correlates to the same flag in node. */ + "forceConsistentCasingInFileNames": true, /* Ensure that casing is correct in imports. */ + + /* Type Checking */ + "strict": true, /* Enable all strict type-checking options. */ + // "noImplicitAny": true, /* Enable error reporting for expressions and declarations with an implied `any` type.. */ + // "strictNullChecks": true, /* When type checking, take into account `null` and `undefined`. */ + // "strictFunctionTypes": true, /* When assigning functions, check to ensure parameters and the return values are subtype-compatible. */ + // "strictBindCallApply": true, /* Check that the arguments for `bind`, `call`, and `apply` methods match the original function. */ + // "strictPropertyInitialization": true, /* Check for class properties that are declared but not set in the constructor. */ + // "noImplicitThis": true, /* Enable error reporting when `this` is given the type `any`. */ + // "useUnknownInCatchVariables": true, /* Type catch clause variables as 'unknown' instead of 'any'. */ + // "alwaysStrict": true, /* Ensure 'use strict' is always emitted. */ + // "noUnusedLocals": true, /* Enable error reporting when a local variables aren't read. */ + // "noUnusedParameters": true, /* Raise an error when a function parameter isn't read */ + // "exactOptionalPropertyTypes": true, /* Interpret optional property types as written, rather than adding 'undefined'. */ + // "noImplicitReturns": true, /* Enable error reporting for codepaths that do not explicitly return in a function. */ + // "noFallthroughCasesInSwitch": true, /* Enable error reporting for fallthrough cases in switch statements. */ + // "noUncheckedIndexedAccess": true, /* Include 'undefined' in index signature results */ + // "noImplicitOverride": true, /* Ensure overriding members in derived classes are marked with an override modifier. */ + // "noPropertyAccessFromIndexSignature": true, /* Enforces using indexed accessors for keys declared using an indexed type */ + // "allowUnusedLabels": true, /* Disable error reporting for unused labels. */ + // "allowUnreachableCode": true, /* Disable error reporting for unreachable code. */ + + /* Completeness */ + // "skipDefaultLibCheck": true, /* Skip type checking .d.ts files that are included with TypeScript. */ + "skipLibCheck": true /* Skip type checking all .d.ts files. */ + } +} From c1f7d65971608de9ad4083952e84bb7a391f52a2 Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Mon, 6 Nov 2023 20:20:23 +0800 Subject: [PATCH 02/32] fix: update id Signed-off-by: Junjie Gao --- Tasks/NotationV0/task.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tasks/NotationV0/task.json b/Tasks/NotationV0/task.json index 86d1ce6bb0ef..1c39af6ad677 100644 --- a/Tasks/NotationV0/task.json +++ b/Tasks/NotationV0/task.json @@ -1,6 +1,6 @@ { "$schema": "https://raw.githubusercontent.com/Microsoft/azure-pipelines-task-lib/master/tasks.schema.json", - "id": "f7d56ba6-35a6-453d-8192-8b602bf234bd", + "id": "a7d56ba6-35a6-453d-8192-8b602bf234bd", "name": "Notation", "friendlyName": "Notation", "description": "Azure Pipepine Task for setting up Notation CLI, sign and verify with Notation", From 9908793bb1e6e4f8bb510568fd77065c1ec76e3f Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Mon, 6 Nov 2023 20:27:29 +0800 Subject: [PATCH 03/32] fix: update Signed-off-by: Junjie Gao --- Tasks/NotationV0/make.json | 4 +-- Tasks/NotationV0/task.loc.json | 2 +- package-lock.json | 66 +++++++++++++++++----------------- 3 files changed, 36 insertions(+), 36 deletions(-) diff --git a/Tasks/NotationV0/make.json b/Tasks/NotationV0/make.json index 56b8a6195bca..a755d3cd6fc9 100644 --- a/Tasks/NotationV0/make.json +++ b/Tasks/NotationV0/make.json @@ -1,5 +1,5 @@ { - "rm": [ + "rm": [ { "items": [ "node_modules/azure-pipelines-tasks-utility-common/node_modules/azure-pipelines-task-lib", @@ -10,7 +10,7 @@ } ], "cp": [ - { + { "source": [ "data" ], diff --git a/Tasks/NotationV0/task.loc.json b/Tasks/NotationV0/task.loc.json index 4598b5b9dd8a..df8c08b3eba8 100644 --- a/Tasks/NotationV0/task.loc.json +++ b/Tasks/NotationV0/task.loc.json @@ -1,6 +1,6 @@ { "$schema": "https://raw.githubusercontent.com/Microsoft/azure-pipelines-task-lib/master/tasks.schema.json", - "id": "f7d56ba6-35a6-453d-8192-8b602bf234bd", + "id": "a7d56ba6-35a6-453d-8192-8b602bf234bd", "name": "Notation", "friendlyName": "ms-resource:loc.friendlyName", "description": "ms-resource:loc.description", diff --git a/package-lock.json b/package-lock.json index 2f62f316abb3..921d98458015 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,7 +468,7 @@ "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", + "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", "dev": true }, "available-typed-arrays": { @@ -564,7 +564,7 @@ "caseless": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha512-ODLXH644w9C2fMPAm7bMDQ3GRvipZWZfKc+8As6hIadRIelE0n0xZuN38NS6kiK3KPEVrpymmQD8bvncAHWQkQ==", + "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", "dev": true }, "chalk": { @@ -646,7 +646,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", "dev": true }, "command-exists": { @@ -664,7 +664,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", "dev": true }, "concat-stream": { @@ -725,7 +725,7 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", + "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", "dev": true }, "default-require-extensions": { @@ -864,7 +864,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", "dev": true }, "esprima": { @@ -930,7 +930,7 @@ "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8=", "dev": true }, "function-bind": { @@ -989,7 +989,7 @@ "get-port": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", + "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", "dev": true }, "get-symbol-description": { @@ -1081,7 +1081,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", "dev": true }, "has-property-descriptors": { @@ -1139,7 +1139,7 @@ "http-basic": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-2.5.1.tgz", - "integrity": "sha512-q/qOkgjcnZ90v0wSaMwamhfAhIf6lhOsH0ehHFnQHAt1lA9MedSnmqEEnh8bq0njTBAK3IsmS2gEuXryfWCDkw==", + "integrity": "sha1-jORHvbW2xXf4pj4/p4BW7Eu02/s=", "dev": true, "requires": { "caseless": "~0.11.0", @@ -1150,7 +1150,7 @@ "http-response-object": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-1.1.0.tgz", - "integrity": "sha512-adERueQxEMtIfGk4ee/9CG7AGUjS09OyHeKrubTjmHUsEVXesrGlZLWYnCL8fajPZIX9H4NDnXyyzBPrF078sA==", + "integrity": "sha1-p8TnWq6C87tJBOT0P2FWc7TVGMM=", "dev": true }, "imurmurhash": { @@ -1168,7 +1168,7 @@ "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", - "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=", "dev": true, "requires": { "once": "^1.3.0", @@ -1261,7 +1261,7 @@ "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", + "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", "dev": true }, "is-negative-zero": { @@ -1365,7 +1365,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", "dev": true }, "istanbul-lib-coverage": { @@ -1579,7 +1579,7 @@ "minimatch": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "integrity": "sha512-itcYJNfVYt/6nrpMDiFA6FY9msZ9G7jEfB896PrgYCakHrW0mOPmzBVvfI2b9yoy6kUKNde1Rvw4ah0f1E25tA==", + "integrity": "sha1-DzmKcwDqRB6cNIyD2Yq4ydv5xAo=", "dev": true, "requires": { "brace-expansion": "^1.0.0" @@ -1703,7 +1703,7 @@ "node-uuid": { "version": "1.4.6", "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.6.tgz", - "integrity": "sha512-88D65cvjzQZEHCBfA5ZinRU7moQunwKN3y0LfvgM8DeeEzg8IKhzU9/BXrn31wu3WLCHHzTozepPRbYiyTzRVw==", + "integrity": "sha1-apYy9GNSJDyE0vRVNNYUwL3L6vI=", "dev": true }, "nyc": { @@ -1952,7 +1952,7 @@ "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=", "dev": true, "requires": { "wrappy": "1" @@ -2006,13 +2006,13 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", + "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", "dev": true }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18=", "dev": true }, "path-key": { @@ -2096,7 +2096,7 @@ "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", + "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=", "dev": true, "requires": { "asap": "~2.0.3" @@ -2105,7 +2105,7 @@ "q": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", - "integrity": "sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==", + "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", "dev": true }, "qs": { @@ -2135,7 +2135,7 @@ "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "integrity": "sha1-hSBLVNuoLVdC4oyWdW70OvUOM4Q=", "dev": true, "requires": { "resolve": "^1.1.6" @@ -2164,7 +2164,7 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", "dev": true }, "require-main-filename": { @@ -2219,13 +2219,13 @@ "semver": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.3.tgz", - "integrity": "sha512-jXRt0450HFhUqjxdOchxCfajQsS9NjXEe+NxorJNyHXef2t9lmbuq2gDPFs5107LEYrU2RZDg9zGzcMjeng0Fw==", + "integrity": "sha1-FUZrYSILw3HNjw5map94Uynqgig=", "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", + "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", "dev": true }, "shebang-command": { @@ -2305,7 +2305,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", "dev": true }, "string-width": { @@ -2363,7 +2363,7 @@ "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", + "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -2378,7 +2378,7 @@ "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", + "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", "dev": true }, "supports-color": { @@ -2448,7 +2448,7 @@ "then-request": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/then-request/-/then-request-2.2.0.tgz", - "integrity": "sha512-YM/Fho1bQ3JFX9dgFQsBswc3aSTePXvtNHl3aXJTZNz/444yC86EVJR92aWMRNA0O9X0UfmojyCTUcT8Lbo5yA==", + "integrity": "sha1-ZnizL6DKIY/laZgbvYhxtZQGDYE=", "dev": true, "requires": { "caseless": "~0.11.0", @@ -2508,7 +2508,7 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", + "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", "dev": true }, "typedarray-to-buffer": { @@ -2557,7 +2557,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", "dev": true }, "validator": { @@ -2607,7 +2607,7 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", + "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", "dev": true }, "which-typed-array": { @@ -2675,7 +2675,7 @@ "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8=", "dev": true }, "write-file-atomic": { From cd0d7ef4fb2b7598e45bbf692560c7b20a88b31a Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Mon, 6 Nov 2023 20:41:09 +0800 Subject: [PATCH 04/32] fix: restore file Signed-off-by: Junjie Gao --- package-lock.json | 66 +++++++++++++++++++++++------------------------ 1 file changed, 33 insertions(+), 33 deletions(-) diff --git a/package-lock.json b/package-lock.json index 921d98458015..2f62f316abb3 100644 --- a/package-lock.json +++ b/package-lock.json @@ -468,7 +468,7 @@ "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha1-5QNHYR1+aQlDIIu9r+vLwvuGbUY=", + "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==", "dev": true }, "available-typed-arrays": { @@ -564,7 +564,7 @@ "caseless": { "version": "0.11.0", "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.11.0.tgz", - "integrity": "sha1-cVuW6phBWTzDMGeSP17GDr2k99c=", + "integrity": "sha512-ODLXH644w9C2fMPAm7bMDQ3GRvipZWZfKc+8As6hIadRIelE0n0xZuN38NS6kiK3KPEVrpymmQD8bvncAHWQkQ==", "dev": true }, "chalk": { @@ -646,7 +646,7 @@ "color-name": { "version": "1.1.3", "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", - "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", "dev": true }, "command-exists": { @@ -664,7 +664,7 @@ "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s=", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", "dev": true }, "concat-stream": { @@ -725,7 +725,7 @@ "decamelize": { "version": "1.2.0", "resolved": "https://registry.npmjs.org/decamelize/-/decamelize-1.2.0.tgz", - "integrity": "sha1-9lNNFRSCabIDUue+4m9QH5oZEpA=", + "integrity": "sha512-z2S+W9X73hAUUki+N+9Za2lBlun89zigOyGrsax+KUQ6wKW4ZoWpEYBkGhQjwAjjDCkWxhY0VKEhk8wzY7F5cA==", "dev": true }, "default-require-extensions": { @@ -864,7 +864,7 @@ "escape-string-regexp": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", - "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", "dev": true }, "esprima": { @@ -930,7 +930,7 @@ "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==", "dev": true }, "function-bind": { @@ -989,7 +989,7 @@ "get-port": { "version": "3.2.0", "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha1-3Xzn3hh8Bsi/NTeWrHHgmfCYDrw=", + "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==", "dev": true }, "get-symbol-description": { @@ -1081,7 +1081,7 @@ "has-flag": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", - "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", "dev": true }, "has-property-descriptors": { @@ -1139,7 +1139,7 @@ "http-basic": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/http-basic/-/http-basic-2.5.1.tgz", - "integrity": "sha1-jORHvbW2xXf4pj4/p4BW7Eu02/s=", + "integrity": "sha512-q/qOkgjcnZ90v0wSaMwamhfAhIf6lhOsH0ehHFnQHAt1lA9MedSnmqEEnh8bq0njTBAK3IsmS2gEuXryfWCDkw==", "dev": true, "requires": { "caseless": "~0.11.0", @@ -1150,7 +1150,7 @@ "http-response-object": { "version": "1.1.0", "resolved": "https://registry.npmjs.org/http-response-object/-/http-response-object-1.1.0.tgz", - "integrity": "sha1-p8TnWq6C87tJBOT0P2FWc7TVGMM=", + "integrity": "sha512-adERueQxEMtIfGk4ee/9CG7AGUjS09OyHeKrubTjmHUsEVXesrGlZLWYnCL8fajPZIX9H4NDnXyyzBPrF078sA==", "dev": true }, "imurmurhash": { @@ -1168,7 +1168,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==", "dev": true, "requires": { "once": "^1.3.0", @@ -1261,7 +1261,7 @@ "is-fullwidth-code-point": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-2.0.0.tgz", - "integrity": "sha1-o7MKXE8ZkYMWeqq5O+764937ZU8=", + "integrity": "sha512-VHskAKYM8RfSFXwee5t5cbN5PZeq1Wrh6qd5bkyiXIf6UQcN6w/A0eXM9r6t8d+GYOh+o6ZhiEnb88LN/Y8m2w==", "dev": true }, "is-negative-zero": { @@ -1365,7 +1365,7 @@ "isexe": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", - "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", "dev": true }, "istanbul-lib-coverage": { @@ -1579,7 +1579,7 @@ "minimatch": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", - "integrity": "sha1-DzmKcwDqRB6cNIyD2Yq4ydv5xAo=", + "integrity": "sha512-itcYJNfVYt/6nrpMDiFA6FY9msZ9G7jEfB896PrgYCakHrW0mOPmzBVvfI2b9yoy6kUKNde1Rvw4ah0f1E25tA==", "dev": true, "requires": { "brace-expansion": "^1.0.0" @@ -1703,7 +1703,7 @@ "node-uuid": { "version": "1.4.6", "resolved": "https://registry.npmjs.org/node-uuid/-/node-uuid-1.4.6.tgz", - "integrity": "sha1-apYy9GNSJDyE0vRVNNYUwL3L6vI=", + "integrity": "sha512-88D65cvjzQZEHCBfA5ZinRU7moQunwKN3y0LfvgM8DeeEzg8IKhzU9/BXrn31wu3WLCHHzTozepPRbYiyTzRVw==", "dev": true }, "nyc": { @@ -1952,7 +1952,7 @@ "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==", "dev": true, "requires": { "wrappy": "1" @@ -2006,13 +2006,13 @@ "path-exists": { "version": "3.0.0", "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-3.0.0.tgz", - "integrity": "sha1-zg6+ql94yxiSXqfYENe1mwEP1RU=", + "integrity": "sha512-bpC7GYwiDYQ4wYLe+FA8lhRjhQCMcQGuSgGGqDkg/QerRWw9CmGRT0iSOVRSZJ29NMLZgIzqaljJ63oaL4NIJQ==", "dev": true }, "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==", "dev": true }, "path-key": { @@ -2096,7 +2096,7 @@ "promise": { "version": "7.3.1", "resolved": "https://registry.npmjs.org/promise/-/promise-7.3.1.tgz", - "integrity": "sha1-BktyYCsY+Q8pGSuLG8QY/9Hr078=", + "integrity": "sha512-nolQXZ/4L+bP/UGlkfaIujX9BKxGwmQ9OT4mOt5yvy8iK1h3wqTEJCijzGANTCCl9nWjY41juyAn2K3Q1hLLTg==", "dev": true, "requires": { "asap": "~2.0.3" @@ -2105,7 +2105,7 @@ "q": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", - "integrity": "sha1-VXBbzZPF82c1MMLCy8DCs63cKG4=", + "integrity": "sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==", "dev": true }, "qs": { @@ -2135,7 +2135,7 @@ "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==", "dev": true, "requires": { "resolve": "^1.1.6" @@ -2164,7 +2164,7 @@ "require-directory": { "version": "2.1.1", "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", - "integrity": "sha1-jGStX9MNqxyXbiNE/+f3kqam30I=", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", "dev": true }, "require-main-filename": { @@ -2219,13 +2219,13 @@ "semver": { "version": "4.3.3", "resolved": "https://registry.npmjs.org/semver/-/semver-4.3.3.tgz", - "integrity": "sha1-FUZrYSILw3HNjw5map94Uynqgig=", + "integrity": "sha512-jXRt0450HFhUqjxdOchxCfajQsS9NjXEe+NxorJNyHXef2t9lmbuq2gDPFs5107LEYrU2RZDg9zGzcMjeng0Fw==", "dev": true }, "set-blocking": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz", - "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc=", + "integrity": "sha512-KiKBS8AnWGEyLzofFfmvKwpdPzqiy16LvQfK3yv/fVH7Bj13/wl3JSR1J+rfgRE9q7xUJK4qvgS8raSOeLUehw==", "dev": true }, "shebang-command": { @@ -2305,7 +2305,7 @@ "sprintf-js": { "version": "1.0.3", "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", - "integrity": "sha1-BOaSb2YolTVPPdAVIDYzuFcpfiw=", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", "dev": true }, "string-width": { @@ -2363,7 +2363,7 @@ "strip-ansi": { "version": "4.0.0", "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-4.0.0.tgz", - "integrity": "sha1-qEeQIusaw2iocTibY1JixQXuNo8=", + "integrity": "sha512-4XaJ2zQdCzROZDivEVIDPkcQn8LMFSa8kj8Gxb/Lnwzv9A8VctNZ+lfivC/sV3ivW8ElJTERXZoPBRrZKkNKow==", "dev": true, "requires": { "ansi-regex": "^3.0.0" @@ -2378,7 +2378,7 @@ "strip-json-comments": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz", - "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo=", + "integrity": "sha512-4gB8na07fecVVkOI6Rs4e7T6NOTki5EmL7TUduTs6bu3EdnSycntVJ4re8kgZA+wx9IueI2Y11bfbgwtzuE0KQ==", "dev": true }, "supports-color": { @@ -2448,7 +2448,7 @@ "then-request": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/then-request/-/then-request-2.2.0.tgz", - "integrity": "sha1-ZnizL6DKIY/laZgbvYhxtZQGDYE=", + "integrity": "sha512-YM/Fho1bQ3JFX9dgFQsBswc3aSTePXvtNHl3aXJTZNz/444yC86EVJR92aWMRNA0O9X0UfmojyCTUcT8Lbo5yA==", "dev": true, "requires": { "caseless": "~0.11.0", @@ -2508,7 +2508,7 @@ "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha1-hnrHTjhkGHsdPUfZlqeOxciDB3c=", + "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==", "dev": true }, "typedarray-to-buffer": { @@ -2557,7 +2557,7 @@ "util-deprecate": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", "dev": true }, "validator": { @@ -2607,7 +2607,7 @@ "which-module": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/which-module/-/which-module-2.0.0.tgz", - "integrity": "sha1-2e8H3Od7mQK4o6j6SzHD4/fm6Ho=", + "integrity": "sha512-B+enWhmw6cjfVC7kS8Pj9pCrKSc5txArRyaYGe088shv/FGWH+0Rjx/xPgtsWfsUtS27FkP697E4DDhgrgoc0Q==", "dev": true }, "which-typed-array": { @@ -2675,7 +2675,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==", "dev": true }, "write-file-atomic": { From 48a98163915819b8a90791356063ae92f2523869 Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Mon, 6 Nov 2023 21:03:49 +0800 Subject: [PATCH 05/32] fix: update Signed-off-by: Junjie Gao --- Tasks/NotationV0/src/lib/install.ts | 2 -- 1 file changed, 2 deletions(-) diff --git a/Tasks/NotationV0/src/lib/install.ts b/Tasks/NotationV0/src/lib/install.ts index 81b47ba9d90d..61f51fe08b2f 100644 --- a/Tasks/NotationV0/src/lib/install.ts +++ b/Tasks/NotationV0/src/lib/install.ts @@ -8,9 +8,7 @@ import { computeChecksum } from './crypto'; export async function installFromURL(downloadURL: string, expectedChecksum: string, extractPath: string): Promise { // Download notation const fileName = path.basename(downloadURL); - console.log('start'); const downloadPath = await toolLib.downloadTool(downloadURL, fileName); - console.log('end'); // Validate checksum const checksum = await computeChecksum(downloadPath); From 3511d2aaa96c4e5aeecb3c556e2fe7d51fe8b383 Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Tue, 7 Nov 2023 21:48:04 +0800 Subject: [PATCH 06/32] feat: add notation v1.0.1 Signed-off-by: Junjie Gao --- .../resources.resjson/en-US/resources.resjson | 2 +- Tasks/NotationV0/data/notation_versions.json | 29 ++ Tasks/NotationV0/make.json | 1 - Tasks/NotationV0/package-lock.json | 327 ------------ Tasks/NotationV0/package.json | 1 - Tasks/NotationV0/task.json | 490 +++++++++--------- Tasks/NotationV0/task.loc.json | 2 +- 7 files changed, 276 insertions(+), 576 deletions(-) diff --git a/Tasks/NotationV0/Strings/resources.resjson/en-US/resources.resjson b/Tasks/NotationV0/Strings/resources.resjson/en-US/resources.resjson index f4ed96c07691..b198c8d89c45 100644 --- a/Tasks/NotationV0/Strings/resources.resjson/en-US/resources.resjson +++ b/Tasks/NotationV0/Strings/resources.resjson/en-US/resources.resjson @@ -24,7 +24,7 @@ "loc.input.help.allowReferrersAPI": "Use the Referrers API to sign signatures, if not supported (returns 404), fallback to the Referrers tag schema.", "loc.input.label.plugin": "Plugin", "loc.input.label.akvPluginVersion": "Plugin Version", - "loc.input.help.akvPluginVersion": "The version of the Azure Key Vualt plugin to be install. please visit the [release page](https://github.com/Azure/notation-azure-kv/releases) for the available versions.", + "loc.input.help.akvPluginVersion": "The version of the Azure Key Vault plugin to be installed. please visit the [release page](https://github.com/Azure/notation-azure-kv/releases) for the available versions.", "loc.input.label.azurekvServiceConection": "Azure Key Vault service connection", "loc.input.help.azurekvServiceConection": "Select the Azure subscription for the key vault if prefer to use service connection for authentication.", "loc.input.label.keyid": "Key ID", diff --git a/Tasks/NotationV0/data/notation_versions.json b/Tasks/NotationV0/data/notation_versions.json index c7bfefaabd03..c10e69f58e08 100644 --- a/Tasks/NotationV0/data/notation_versions.json +++ b/Tasks/NotationV0/data/notation_versions.json @@ -1,4 +1,33 @@ [ + { + "darwin": { + "amd64": { + "checksum": "8bf5e64cd46729619c0b5c39234a73605da5bc1e422b5e0481cbee9e1e4e0cf1", + "url": "https://github.com/notaryproject/notation/releases/download/v1.0.1/notation_1.0.1_darwin_amd64.tar.gz" + }, + "arm64": { + "checksum": "0f320e95cce9e48ea171ad8a9f59490749d2fb8ca68d616e2aa6551d813f4bf3", + "url": "https://github.com/notaryproject/notation/releases/download/v1.0.1/notation_1.0.1_darwin_arm64.tar.gz" + } + }, + "linux": { + "amd64": { + "checksum": "898b6c1cab5763d2dbe979132ae1a5d09571bfd62d14cc9114b77815e0228302", + "url": "https://github.com/notaryproject/notation/releases/download/v1.0.1/notation_1.0.1_linux_amd64.tar.gz" + }, + "arm64": { + "checksum": "c3145753e5426598e78ab283c1ff4b77a479d6485ccc523288033ea5aa5b9389", + "url": "https://github.com/notaryproject/notation/releases/download/v1.0.1/notation_1.0.1_linux_arm64.tar.gz" + } + }, + "version": "1.0.1", + "windows": { + "amd64": { + "checksum": "278fd5da38e431ee6821b3a51c0e276d20e26309db010464886d931d63ab1b46", + "url": "https://github.com/notaryproject/notation/releases/download/v1.0.1/notation_1.0.1_windows_amd64.zip" + } + } + }, { "darwin": { "amd64": { diff --git a/Tasks/NotationV0/make.json b/Tasks/NotationV0/make.json index a755d3cd6fc9..748131e5d3cd 100644 --- a/Tasks/NotationV0/make.json +++ b/Tasks/NotationV0/make.json @@ -3,7 +3,6 @@ { "items": [ "node_modules/azure-pipelines-tasks-utility-common/node_modules/azure-pipelines-task-lib", - "node_modules/azure-pipelines-tasks-docker-common/node_modules/azure-pipelines-task-lib", "node_modules/azure-pipelines-tasks-azure-arm-rest-v2/node_modules/azure-pipelines-task-lib" ], "options": "-Rf" diff --git a/Tasks/NotationV0/package-lock.json b/Tasks/NotationV0/package-lock.json index e04e967e762c..1c812947cb76 100644 --- a/Tasks/NotationV0/package-lock.json +++ b/Tasks/NotationV0/package-lock.json @@ -20,14 +20,6 @@ "@types/node": "*" } }, - "@types/jsonwebtoken": { - "version": "8.5.9", - "resolved": "https://registry.npmjs.org/@types/jsonwebtoken/-/jsonwebtoken-8.5.9.tgz", - "integrity": "sha512-272FMnFGzAVMGtu9tkr29hRL6bZj4Zs1KZNeHLnKqAvp06tAIcarTMwOh8/8bz4FmKRcMxZhZNeUAQsNLoiPhg==", - "requires": { - "@types/node": "*" - } - }, "@types/mocha": { "version": "5.2.7", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", @@ -38,11 +30,6 @@ "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" }, - "@types/q": { - "version": "1.5.4", - "resolved": "https://registry.npmjs.org/@types/q/-/q-1.5.4.tgz", - "integrity": "sha512-1HcDas8SEj4z1Wc696tH56G8OlRaH/sqZOynNNB+HF0WOeXPaxTtbYzJY2oEfiUxjSKjhCKr+MvR7dCHcEelug==" - }, "@types/qs": { "version": "6.9.9", "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.9.tgz", @@ -53,29 +40,6 @@ "resolved": "https://registry.npmjs.org/@types/semver/-/semver-5.5.0.tgz", "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" }, - "@types/uuid": { - "version": "8.3.4", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-8.3.4.tgz", - "integrity": "sha512-c/I8ZRb51j+pYGAu5CrFMRxqZ2ke4y2grEBO5AUjgSkSk+qT2Ea+OdWElz/OiMf5MNpn2b17kuVBwZLQJXzihw==" - }, - "array-union": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/array-union/-/array-union-1.0.2.tgz", - "integrity": "sha512-Dxr6QJj/RdU/hCaBjOfxW+q6lyuVE6JFWIrAUpuOOhoJJoQ99cUn3igRaHVB5P9WrgFVN0FfArM3x0cueOU8ng==", - "requires": { - "array-uniq": "^1.0.1" - } - }, - "array-uniq": { - "version": "1.0.3", - "resolved": "https://registry.npmjs.org/array-uniq/-/array-uniq-1.0.3.tgz", - "integrity": "sha512-MNha4BWQ6JbwhFhj03YK552f7cb3AzoE8SzeljgChvL1dl3IcvggXVz1DilzySZkCja+CXuZbdW7yATchWn8/Q==" - }, - "arrify": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/arrify/-/arrify-1.0.1.tgz", - "integrity": "sha512-3CYzex9M9FGQjCGMGyi6/31c8GJbgb0qGyrx5HWxPd0aCwh4cB2YjMb2Xf9UuoogrMrlO9cTqnB5rI5GHZTcUA==" - }, "asap": { "version": "2.0.6", "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", @@ -100,100 +64,6 @@ "uuid": "^3.0.1" } }, - "azure-pipelines-tasks-azure-arm-rest-v2": { - "version": "2.210.0", - "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-azure-arm-rest-v2/-/azure-pipelines-tasks-azure-arm-rest-v2-2.210.0.tgz", - "integrity": "sha512-zKkFPah6ng4oGRej5Ax5eNEEd6FQ48y+1/MIXvh/VTDAFnLfLJ9M8lUh1UlmZOetX6zTcoidSKmmZWmq/KamOw==", - "requires": { - "@types/jsonwebtoken": "^8.5.8", - "@types/mocha": "^5.2.7", - "@types/node": "^10.17.0", - "@types/q": "1.5.4", - "azure-pipelines-task-lib": "^3.1.0", - "jsonwebtoken": "^8.5.1", - "q": "1.5.1", - "typed-rest-client": "1.8.4" - }, - "dependencies": { - "@types/mocha": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", - "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==" - }, - "azure-pipelines-task-lib": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-3.4.0.tgz", - "integrity": "sha512-3eC4OTFw+7xD7A2aUhxR/j+jRlTI+vVfS0CGxt1pCLs4c/KmY0tQWgbqjD3157kmiucWxELBvgZHaD2gCBe9fg==", - "requires": { - "minimatch": "3.0.5", - "mockery": "^2.1.0", - "q": "^1.5.1", - "semver": "^5.1.0", - "shelljs": "^0.8.5", - "sync-request": "6.1.0", - "uuid": "^3.0.1" - } - }, - "mockery": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mockery/-/mockery-2.1.0.tgz", - "integrity": "sha512-9VkOmxKlWXoDO/h1jDZaS4lH33aWfRiJiNT/tKj+8OGzrcFDLo8d0syGdbsc3Bc4GvRXPb+NMMvojotmuGJTvA==" - } - } - }, - "azure-pipelines-tasks-docker-common": { - "version": "2.211.0", - "resolved": "https://registry.npmjs.org/azure-pipelines-tasks-docker-common/-/azure-pipelines-tasks-docker-common-2.211.0.tgz", - "integrity": "sha512-5FMFZjgTt4eKmcDYvQRx1kYd622Bgb36B9QLgvwYibaKfHLAYYshdO3Q/iOHxiO1ApazQbIhN4Wqzy3YtQxzVw==", - "requires": { - "@types/mocha": "^5.2.7", - "@types/node": "^10.17.0", - "@types/q": "1.5.4", - "@types/uuid": "^8.3.0", - "azure-pipelines-task-lib": "^3.1.0", - "azure-pipelines-tasks-azure-arm-rest-v2": "^2.210.0", - "del": "2.2.0", - "q": "1.4.1" - }, - "dependencies": { - "@types/mocha": { - "version": "5.2.7", - "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", - "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==" - }, - "azure-pipelines-task-lib": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-3.4.0.tgz", - "integrity": "sha512-3eC4OTFw+7xD7A2aUhxR/j+jRlTI+vVfS0CGxt1pCLs4c/KmY0tQWgbqjD3157kmiucWxELBvgZHaD2gCBe9fg==", - "requires": { - "minimatch": "3.0.5", - "mockery": "^2.1.0", - "q": "^1.5.1", - "semver": "^5.1.0", - "shelljs": "^0.8.5", - "sync-request": "6.1.0", - "uuid": "^3.0.1" - }, - "dependencies": { - "q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" - } - } - }, - "mockery": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mockery/-/mockery-2.1.0.tgz", - "integrity": "sha512-9VkOmxKlWXoDO/h1jDZaS4lH33aWfRiJiNT/tKj+8OGzrcFDLo8d0syGdbsc3Bc4GvRXPb+NMMvojotmuGJTvA==" - }, - "q": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.4.1.tgz", - "integrity": "sha512-/CdEdaw49VZVmyIDGUQKDDT53c7qBkO6g5CefWz91Ae+l4+cRtcDYwMTXh6me4O8TMldeGHG3N2Bl84V78Ywbg==" - } - } - }, "azure-pipelines-tool-lib": { "version": "1.3.2", "resolved": "https://registry.npmjs.org/azure-pipelines-tool-lib/-/azure-pipelines-tool-lib-1.3.2.tgz", @@ -258,11 +128,6 @@ "concat-map": "0.0.1" } }, - "buffer-equal-constant-time": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/buffer-equal-constant-time/-/buffer-equal-constant-time-1.0.1.tgz", - "integrity": "sha512-zRpUiDwd/xk6ADqPMATG8vc9VPrkck7T07OIx0gnjmJAnHnTVXNQG3vfvWNuiZIkwu9KrKdA1iJKfsfTVxE6NA==" - }, "buffer-from": { "version": "1.1.2", "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", @@ -322,33 +187,11 @@ "has-property-descriptors": "^1.0.0" } }, - "del": { - "version": "2.2.0", - "resolved": "https://registry.npmjs.org/del/-/del-2.2.0.tgz", - "integrity": "sha512-AZDiRb78EEGYCsAZTG3v+CM5q8J0BIs+wI7QeUtyosm+zIMm4XSmp6aI/K7cU9l+YaKpDKN9dYP1xTrNjLQ+LA==", - "requires": { - "globby": "^4.0.0", - "is-path-cwd": "^1.0.0", - "is-path-in-cwd": "^1.0.0", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0", - "rimraf": "^2.2.8" - } - }, "delayed-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" }, - "ecdsa-sig-formatter": { - "version": "1.0.11", - "resolved": "https://registry.npmjs.org/ecdsa-sig-formatter/-/ecdsa-sig-formatter-1.0.11.tgz", - "integrity": "sha512-nagl3RYrbNv6kQkeJIpt6NJZy8twLB/2vtz6yN9Z4vRKHN4/QZJIEbqohALSgwKdnksuY3k5Addp5lg8sVoVcQ==", - "requires": { - "safe-buffer": "^5.0.1" - } - }, "form-data": { "version": "2.5.1", "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.5.1.tgz", @@ -408,33 +251,6 @@ } } }, - "globby": { - "version": "4.1.0", - "resolved": "https://registry.npmjs.org/globby/-/globby-4.1.0.tgz", - "integrity": "sha512-JPDtMSr0bt25W64q792rvlrSwIaZwqUAhqdYKSr57Wh/xBcQ5JDWLM85ndn+Q1WdBQXLb9YGCl0QN/T0HpqU0A==", - "requires": { - "array-union": "^1.0.1", - "arrify": "^1.0.0", - "glob": "^6.0.1", - "object-assign": "^4.0.1", - "pify": "^2.0.0", - "pinkie-promise": "^2.0.0" - }, - "dependencies": { - "glob": { - "version": "6.0.4", - "resolved": "https://registry.npmjs.org/glob/-/glob-6.0.4.tgz", - "integrity": "sha512-MKZeRNyYZAVVVG1oZeLaWie1uweH40m9AZwIwxyPbTSX4hHrVYSzLg0Ro5Z5R7XKkIX+Cc6oD1rqeDJnwsB8/A==", - "requires": { - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "2 || 3", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - } - } - } - }, "gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", @@ -515,103 +331,11 @@ "hasown": "^2.0.0" } }, - "is-path-cwd": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/is-path-cwd/-/is-path-cwd-1.0.0.tgz", - "integrity": "sha512-cnS56eR9SPAscL77ik76ATVqoPARTqPIVkMDVxRaWH06zT+6+CzIroYRJ0VVvm0Z1zfAvxvz9i/D3Ppjaqt5Nw==" - }, - "is-path-in-cwd": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-in-cwd/-/is-path-in-cwd-1.0.1.tgz", - "integrity": "sha512-FjV1RTW48E7CWM7eE/J2NJvAEEVektecDBVBE5Hh3nM1Jd0kvhHtX68Pr3xsDf857xt3Y4AkwVULK1Vku62aaQ==", - "requires": { - "is-path-inside": "^1.0.0" - } - }, - "is-path-inside": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-1.0.1.tgz", - "integrity": "sha512-qhsCR/Esx4U4hg/9I19OVUAJkGWtjRYHMRgUMZE2TDdj+Ag+kttZanLupfddNyglzz50cUlmWzUaI37GDfNx/g==", - "requires": { - "path-is-inside": "^1.0.1" - } - }, "isarray": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" }, - "jsonwebtoken": { - "version": "8.5.1", - "resolved": "https://registry.npmjs.org/jsonwebtoken/-/jsonwebtoken-8.5.1.tgz", - "integrity": "sha512-XjwVfRS6jTMsqYs0EsuJ4LGxXV14zQybNd4L2r0UvbVnSF9Af8x7p5MzbJ90Ioz/9TI41/hTCvznF/loiSzn8w==", - "requires": { - "jws": "^3.2.2", - "lodash.includes": "^4.3.0", - "lodash.isboolean": "^3.0.3", - "lodash.isinteger": "^4.0.4", - "lodash.isnumber": "^3.0.3", - "lodash.isplainobject": "^4.0.6", - "lodash.isstring": "^4.0.1", - "lodash.once": "^4.0.0", - "ms": "^2.1.1", - "semver": "^5.6.0" - } - }, - "jwa": { - "version": "1.4.1", - "resolved": "https://registry.npmjs.org/jwa/-/jwa-1.4.1.tgz", - "integrity": "sha512-qiLX/xhEEFKUAJ6FiBMbes3w9ATzyk5W7Hvzpa/SLYdxNtng+gcurvrI7TbACjIXlsJyr05/S1oUhZrc63evQA==", - "requires": { - "buffer-equal-constant-time": "1.0.1", - "ecdsa-sig-formatter": "1.0.11", - "safe-buffer": "^5.0.1" - } - }, - "jws": { - "version": "3.2.2", - "resolved": "https://registry.npmjs.org/jws/-/jws-3.2.2.tgz", - "integrity": "sha512-YHlZCB6lMTllWDtSPHz/ZXTsi8S00usEV6v1tjq8tOUZzw7DpSDWVXjXDre6ed1w/pd495ODpHZYSdkRTsa0HA==", - "requires": { - "jwa": "^1.4.1", - "safe-buffer": "^5.0.1" - } - }, - "lodash.includes": { - "version": "4.3.0", - "resolved": "https://registry.npmjs.org/lodash.includes/-/lodash.includes-4.3.0.tgz", - "integrity": "sha512-W3Bx6mdkRTGtlJISOvVD/lbqjTlPPUDTMnlXZFnVwi9NKJ6tiAk6LVdlhZMm17VZisqhKcgzpO5Wz91PCt5b0w==" - }, - "lodash.isboolean": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isboolean/-/lodash.isboolean-3.0.3.tgz", - "integrity": "sha512-Bz5mupy2SVbPHURB98VAcw+aHh4vRV5IPNhILUCsOzRmsTmSQ17jIuqopAentWoehktxGd9e/hbIXq980/1QJg==" - }, - "lodash.isinteger": { - "version": "4.0.4", - "resolved": "https://registry.npmjs.org/lodash.isinteger/-/lodash.isinteger-4.0.4.tgz", - "integrity": "sha512-DBwtEWN2caHQ9/imiNeEA5ys1JoRtRfY3d7V9wkqtbycnAmTvRRmbHKDV4a0EYc678/dia0jrte4tjYwVBaZUA==" - }, - "lodash.isnumber": { - "version": "3.0.3", - "resolved": "https://registry.npmjs.org/lodash.isnumber/-/lodash.isnumber-3.0.3.tgz", - "integrity": "sha512-QYqzpfwO3/CWf3XP+Z+tkQsfaLL/EnUlXWVkIk5FUPc4sBdTehEqZONuyRt2P67PXAk+NXmTBcc97zw9t1FQrw==" - }, - "lodash.isplainobject": { - "version": "4.0.6", - "resolved": "https://registry.npmjs.org/lodash.isplainobject/-/lodash.isplainobject-4.0.6.tgz", - "integrity": "sha512-oSXzaWypCMHkPC3NvBEaPHf0KsA5mvPrOPgQWDsbg8n7orZ290M0BmC/jgRZ4vcJ6DTAhjrsSYgdsW/F+MFOBA==" - }, - "lodash.isstring": { - "version": "4.0.1", - "resolved": "https://registry.npmjs.org/lodash.isstring/-/lodash.isstring-4.0.1.tgz", - "integrity": "sha512-0wJxfxH1wgO3GrbuP+dTTk7op+6L41QCXbGINEmD+ny/G/eCqGzxyCsh7159S+mgDDcoarnBw6PC1PS5+wUGgw==" - }, - "lodash.once": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/lodash.once/-/lodash.once-4.1.1.tgz", - "integrity": "sha512-Sb487aTOCr9drQVL8pIxOzVhafOjZN9UU54hiN8PU3uAiSV7lx1yYNpbNmex2PK6dSJoNTSJUUswT651yww3Mg==" - }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -638,16 +362,6 @@ "resolved": "https://registry.npmjs.org/mockery/-/mockery-1.7.0.tgz", "integrity": "sha512-gUQA33ayi0tuAhr/rJNZPr7Q7uvlBt4gyJPbi0CDcAfIzIrDu1YgGMFgmAu3stJqBpK57m7+RxUbcS+pt59fKQ==" }, - "ms": { - "version": "2.1.3", - "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", - "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" - }, - "object-assign": { - "version": "4.1.1", - "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", - "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==" - }, "object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", @@ -671,34 +385,11 @@ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, - "path-is-inside": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/path-is-inside/-/path-is-inside-1.0.2.tgz", - "integrity": "sha512-DUWJr3+ULp4zXmol/SZkFf3JGsS9/SIv+Y3Rt93/UjPpDpklB5f1er4O3POIbUuUJ3FXgqte2Q7SrU6zAqwk8w==" - }, "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==" }, - "pify": { - "version": "2.3.0", - "resolved": "https://registry.npmjs.org/pify/-/pify-2.3.0.tgz", - "integrity": "sha512-udgsAY+fTnvv7kI7aaxbqwWNb0AHiB0qBO89PZKPkoTmGOgdbrHDKD+0B2X4uTfJ/FT1R09r9gTsjUjNJotuog==" - }, - "pinkie": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/pinkie/-/pinkie-2.0.4.tgz", - "integrity": "sha512-MnUuEycAemtSaeFSjXKW/aroV7akBbY+Sv+RkyqFjgAe73F+MR0TBWKBRDkmfWq/HiFmdavfZ1G7h4SPZXaCSg==" - }, - "pinkie-promise": { - "version": "2.0.1", - "resolved": "https://registry.npmjs.org/pinkie-promise/-/pinkie-promise-2.0.1.tgz", - "integrity": "sha512-0Gni6D4UcLTbv9c57DfxDGdr41XfgUjqWZu492f0cIGr16zDU06BWP/RAEvOuo7CQ0CNjHaLlM59YJJFm3NWlw==", - "requires": { - "pinkie": "^2.0.0" - } - }, "process-nextick-args": { "version": "2.0.1", "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz", @@ -757,14 +448,6 @@ "supports-preserve-symlinks-flag": "^1.0.0" } }, - "rimraf": { - "version": "2.7.1", - "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz", - "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==", - "requires": { - "glob": "^7.1.3" - } - }, "safe-buffer": { "version": "5.1.2", "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", @@ -872,16 +555,6 @@ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" }, - "typed-rest-client": { - "version": "1.8.4", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.4.tgz", - "integrity": "sha512-MyfKKYzk3I6/QQp6e1T50py4qg+c+9BzOEl2rBmQIpStwNUoqQ73An+Tkfy9YuV7O+o2mpVVJpe+fH//POZkbg==", - "requires": { - "qs": "^6.9.1", - "tunnel": "0.0.6", - "underscore": "^1.12.1" - } - }, "typedarray": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", diff --git a/Tasks/NotationV0/package.json b/Tasks/NotationV0/package.json index a9a388e9b57f..c477c0fa7866 100644 --- a/Tasks/NotationV0/package.json +++ b/Tasks/NotationV0/package.json @@ -13,7 +13,6 @@ "@types/node": "^10.17.0", "@types/mocha": "^5.2.7", "azure-pipelines-task-lib": "4.0.1-preview", - "azure-pipelines-tasks-docker-common": "2.211.0", "azure-pipelines-tool-lib": "1.3.2" }, "devDependencies": { diff --git a/Tasks/NotationV0/task.json b/Tasks/NotationV0/task.json index 1c39af6ad677..014015f20ac4 100644 --- a/Tasks/NotationV0/task.json +++ b/Tasks/NotationV0/task.json @@ -1,248 +1,248 @@ { - "$schema": "https://raw.githubusercontent.com/Microsoft/azure-pipelines-task-lib/master/tasks.schema.json", - "id": "a7d56ba6-35a6-453d-8192-8b602bf234bd", - "name": "Notation", - "friendlyName": "Notation", - "description": "Azure Pipepine Task for setting up Notation CLI, sign and verify with Notation", - "helpMarkDown": "", - "category": "Utility", - "author": "Notation Developers", - "version": { - "Major": 0, - "Minor": 1, - "Patch": 0 - }, - "groups": [ - { - "name": "commandConfig", - "displayName": "Command Configuration", - "isExpanded": true - }, - { - "name": "pluginConfig", - "displayName": "Plugin Configuration", - "isExpanded": true, - "visibleRule": "command = sign" - }, - { - "name": "advancedConfig", - "displayName": "Advanced Configuration", - "isExpanded": false, - "visibleRule": "command = sign || command = verify" - } - ], - "instanceNameFormat": "$(command)", - "inputs": [ - { - "name": "command", - "type": "pickList", - "label": "Command to run", - "defaultValue": "install", - "helpMarkDown": "example: install", - "required": true, - "options": { - "install": "Install", - "sign": "Sign", - "verify": "Verify" - } - }, - { - "name": "isCustomVersion", - "type": "boolean", - "label": "Custom Version", - "defaultValue": false, - "required": false, - "helpMarkDown": "If checked, you can provide a custom version for the task", - "visibleRule": "command = install", - "groupName": "commandConfig" - }, - { - "name": "version", - "type": "string", - "label": "Version", - "defaultValue": "1.0.0", - "required": true, - "helpMarkDown": "The version of Notation to install. Example: 1.0.0, 1, 1.0, 1.0.0", - "visibleRule": "command = install && isCustomVersion = false", - "groupName": "commandConfig" - }, - { - "name": "url", - "type": "string", - "label": "Download URL", - "defaultValue": "", - "required": true, - "helpMarkDown": "example: https://github.com/notaryproject/notation/releases/download/v1.0.0/notation_1.0.0_linux_amd64.tar.gz", - "groupName": "commandConfig", - "visibleRule": "command = install && isCustomVersion = true" - }, - { - "name": "checksum", - "type": "string", - "label": "Checksum", - "defaultValue": "", - "required": true, - "helpMarkDown": "The SHA-256 checksum of the downloaded file", - "groupName": "commandConfig", - "visibleRule": "command = install && isCustomVersion = true" - }, - { - "name": "artifactRefs", - "type": "string", - "label": "Artifact references", - "defaultValue": "", - "required": false, - "visibleRule": "command = verify || command = sign", - "helpMarkDown": "Container artifact references for signing. If it was not specified, use the artifact reference from previous Docker push task. Example: /@ If multiple, separate by comma.", - "groupName": "commandConfig" - }, - { - "name": "signatureFormat", - "type": "pickList", - "label": "Signature Format", - "defaultValue": "cose", - "required": false, - "options": { - "cose": "COSE", - "jws": "JWS" - }, - "visibleRule": "command = sign", - "helpMarkDown": "Signature envelope format, options: \"jws\", \"cose\" (default \"jws\")", - "groupName": "advancedConfig" - }, - { - "name": "allowReferrersAPI", - "type": "boolean", - "label": "[Experimental] Allow Referrers API", - "defaultValue": false, - "required": false, - "visibleRule": "command = sign || command = verify", - "helpMarkDown": "Use the Referrers API to sign signatures, if not supported (returns 404), fallback to the Referrers tag schema.", - "groupName": "advancedConfig" - }, - { - "name": "plugin", - "type": "pickList", - "label": "Plugin", - "defaultValue": "azureKeyVault", - "required": true, - "options": { - "azureKeyVault": "Azure Key Vault Plugin" - }, - "groupName": "pluginConfig" - }, - { - "name": "akvPluginVersion", - "type": "string", - "label": "Plugin Version", - "defaultValue": "1.0.1", - "required": true, - "helpMarkDown": "The version of the Azure Key Vualt plugin to be install. please visit the [release page](https://github.com/Azure/notation-azure-kv/releases) for the available versions.", - "visibleRule": "plugin = azureKeyVault", - "groupName": "pluginConfig" - }, - { - "name": "azurekvServiceConection", - "type": "connectedService:AzureRM", - "label": "Azure Key Vault service connection", - "defaultValue": "", - "required": false, - "helpMarkDown": "Select the Azure subscription for the key vault if prefer to use service connection for authentication.", - "visibleRule": "plugin = azureKeyVault", - "groupName": "pluginConfig" - }, - { - "name": "keyid", - "type": "string", - "label": "Key ID", - "required": true, - "defaultValue": "", - "helpMarkDown": "The Key ID is the key or certificate identifier for Azure Key Vault.", - "visibleRule": "plugin = azureKeyVault", - "groupName": "pluginConfig" - }, - { - "name": "caCertBundle", - "type": "string", - "label": "Certificate Bundle File Path", - "required": false, - "defaultValue": "", - "visibleRule": "plugin = azureKeyVault", - "helpMarkDown": "A file with root and all intermediate certificates, starting from the root certificate, following the order in the certificate chain.", - "groupName": "pluginConfig" - }, - { - "name": "selfSigned", - "type": "boolean", - "label": "Self-signed Certificate", - "required": false, - "defaultValue": false, - "visibleRule": "plugin = azureKeyVault", - "groupName": "pluginConfig" - }, - { - "name": "trustPolicy", - "type": "string", - "label": "Trust Policy File Path", - "required": true, - "defaultValue": "", - "visibleRule": "command = verify", - "helpMarkDown": "The path to the [trust policy](https://github.com/notaryproject/specifications/blob/v1.0.0/specs/trust-store-trust-policy.md#trust-policy) file relative to the repository. Example: ./path/to/trust-policy.json", - "groupName": "commandConfig" - }, - { - "name": "trustStore", - "type": "string", - "label": "Trust Store Folder Path", - "required": true, - "defaultValue": "", - "visibleRule": "command = verify", - "helpMarkDown": "The path to the directory containing the [trust store](https://github.com/notaryproject/specifications/blob/v1.0.0/specs/trust-store-trust-policy.md#trust-store) relative to the repository. Example: ./path/to/truststore/", - "groupName": "commandConfig" - } - ], - "execution": { - "Node10": { - "target": "src/index.js" - }, - "Node16": { - "target": "src/index.js" - } - }, - "messages": { - "ArtifactRefs": "Artifact references: %s.", - "ArtifactRefsNotSpecified": "Artifact references are not specified.", - "APPDATANotSet": "APPDATA is not set.", - "AzureKVPluginAlreadyInstalled": "Azure Key Vault plugin is already installed.", - "CannotFindTrustStore": "Cannot find trust store directory: %s.", - "ChecksumValidated": "Checksum validated: %s.", - "ChecksumValidationFailed": "Checksum validation failed. Expected: %s, Actual: %s.", - "FailedArtifacts": "Failed artifacts: %s.", - "FailedToAddCertToTrustStore": "Failed to add a certificate to trust store: %s.", - "FailedToImportTrustPolicy": "Failed to import trust policy: %s.", - "FailedToListTrustStore": "Failed to list the trust store.", - "FailedToShowTrustPolicy": "Failed to show trust policy.", - "TryToGetArtifactRefsFromDockerTask": "Try to get artifact references from Docker task.", - "InvalidResourceURI": "Invalid resource URI: %s.", - "InvalidVersionPrefix": "Invalid version prefix: %s.", - "ResultSummary": "Total artifacts: %s, succeeded: %s, failed: %s.", - "RepeatedArtifactRef": "Repeated artifact reference: %s.", - "SucceededArtifacts": "Succeeded artifacts: %s.", - "TempDirectoryNotSet": "Agent.TempDirectory is not set.", - "TempDirectoryOrWorkingDirectoryNotSet": "Agent.TempDirectory or system.DefaultWorkingDirectory is not set", - "NoAuthScheme": "No authentication scheme is specified.", - "NotationAlreadyInstalled": "Notation is already installed, please do not install it again.", - "NotationInstalledFromURL": "Notation is installed from %s.", - "NotationInstalledFromVersion": "Notation v%s is installed.", - "NoServiceConnection": "No Azure Key Vault service connection endpoint is specified.", - "UnsupportedArchitecture": "Unsupported architecture: %s.", - "UnsupportedFileExtension": "Unsupported file extension: %s.", - "UnsupportedPlatform": "Unsupported platform: %s.", - "UnsupportedVersion": "Unsupported version: %s.", - "UseManagedIdentity": "Use managed identity to access Azure Key Vault.", - "UnknownCommand": "Unknown command: %s.", - "UnknownError": "An unknown error occurred.", - "UnknownPlugin": "Unknown plugin: %s.", - "UnsupportedAuthScheme": "Unsupported authentication scheme: %s." + "$schema": "https://raw.githubusercontent.com/Microsoft/azure-pipelines-task-lib/master/tasks.schema.json", + "id": "a7d56ba6-35a6-453d-8192-8b602bf234bd", + "name": "Notation", + "friendlyName": "Notation", + "description": "Azure Pipepine Task for setting up Notation CLI, sign and verify with Notation", + "helpMarkDown": "", + "category": "Utility", + "author": "Notation Developers", + "version": { + "Major": 0, + "Minor": 1, + "Patch": 0 + }, + "groups": [ + { + "name": "commandConfig", + "displayName": "Command Configuration", + "isExpanded": true + }, + { + "name": "pluginConfig", + "displayName": "Plugin Configuration", + "isExpanded": true, + "visibleRule": "command = sign" + }, + { + "name": "advancedConfig", + "displayName": "Advanced Configuration", + "isExpanded": false, + "visibleRule": "command = sign || command = verify" + } + ], + "instanceNameFormat": "$(command)", + "inputs": [ + { + "name": "command", + "type": "pickList", + "label": "Command to run", + "defaultValue": "install", + "helpMarkDown": "example: install", + "required": true, + "options": { + "install": "Install", + "sign": "Sign", + "verify": "Verify" + } + }, + { + "name": "isCustomVersion", + "type": "boolean", + "label": "Custom Version", + "defaultValue": false, + "required": false, + "helpMarkDown": "If checked, you can provide a custom version for the task", + "visibleRule": "command = install", + "groupName": "commandConfig" + }, + { + "name": "version", + "type": "string", + "label": "Version", + "defaultValue": "1.0.1", + "required": true, + "helpMarkDown": "The version of Notation to install. Example: 1.0.0, 1, 1.0, 1.0.0", + "visibleRule": "command = install && isCustomVersion = false", + "groupName": "commandConfig" + }, + { + "name": "url", + "type": "string", + "label": "Download URL", + "defaultValue": "", + "required": true, + "helpMarkDown": "example: https://github.com/notaryproject/notation/releases/download/v1.0.0/notation_1.0.0_linux_amd64.tar.gz", + "groupName": "commandConfig", + "visibleRule": "command = install && isCustomVersion = true" + }, + { + "name": "checksum", + "type": "string", + "label": "Checksum", + "defaultValue": "", + "required": true, + "helpMarkDown": "The SHA-256 checksum of the downloaded file", + "groupName": "commandConfig", + "visibleRule": "command = install && isCustomVersion = true" + }, + { + "name": "artifactRefs", + "type": "string", + "label": "Artifact references", + "defaultValue": "", + "required": false, + "visibleRule": "command = verify || command = sign", + "helpMarkDown": "Container artifact references for signing. If it was not specified, use the artifact reference from previous Docker push task. Example: /@ If multiple, separate by comma.", + "groupName": "commandConfig" + }, + { + "name": "signatureFormat", + "type": "pickList", + "label": "Signature Format", + "defaultValue": "cose", + "required": false, + "options": { + "cose": "COSE", + "jws": "JWS" + }, + "visibleRule": "command = sign", + "helpMarkDown": "Signature envelope format, options: \"jws\", \"cose\" (default \"jws\")", + "groupName": "advancedConfig" + }, + { + "name": "allowReferrersAPI", + "type": "boolean", + "label": "[Experimental] Allow Referrers API", + "defaultValue": false, + "required": false, + "visibleRule": "command = sign || command = verify", + "helpMarkDown": "Use the Referrers API to sign signatures, if not supported (returns 404), fallback to the Referrers tag schema.", + "groupName": "advancedConfig" + }, + { + "name": "plugin", + "type": "pickList", + "label": "Plugin", + "defaultValue": "azureKeyVault", + "required": true, + "options": { + "azureKeyVault": "Azure Key Vault Plugin" + }, + "groupName": "pluginConfig" + }, + { + "name": "akvPluginVersion", + "type": "string", + "label": "Plugin Version", + "defaultValue": "1.0.1", + "required": true, + "helpMarkDown": "The version of the Azure Key Vault plugin to be install. please visit the [release page](https://github.com/Azure/notation-azure-kv/releases) for the available versions.", + "visibleRule": "plugin = azureKeyVault", + "groupName": "pluginConfig" + }, + { + "name": "azurekvServiceConection", + "type": "connectedService:AzureRM", + "label": "Azure Key Vault service connection", + "defaultValue": "", + "required": false, + "helpMarkDown": "Select the Azure subscription for the key vault if prefer to use service connection for authentication.", + "visibleRule": "plugin = azureKeyVault", + "groupName": "pluginConfig" + }, + { + "name": "keyid", + "type": "string", + "label": "Key ID", + "required": true, + "defaultValue": "", + "helpMarkDown": "The Key ID is the key or certificate identifier for Azure Key Vault.", + "visibleRule": "plugin = azureKeyVault", + "groupName": "pluginConfig" + }, + { + "name": "caCertBundle", + "type": "string", + "label": "Certificate Bundle File Path", + "required": false, + "defaultValue": "", + "visibleRule": "plugin = azureKeyVault", + "helpMarkDown": "A file with root and all intermediate certificates, starting from the root certificate, following the order in the certificate chain.", + "groupName": "pluginConfig" + }, + { + "name": "selfSigned", + "type": "boolean", + "label": "Self-signed Certificate", + "required": false, + "defaultValue": false, + "visibleRule": "plugin = azureKeyVault", + "groupName": "pluginConfig" + }, + { + "name": "trustPolicy", + "type": "string", + "label": "Trust Policy File Path", + "required": true, + "defaultValue": "", + "visibleRule": "command = verify", + "helpMarkDown": "The path to the [trust policy](https://github.com/notaryproject/specifications/blob/v1.0.0/specs/trust-store-trust-policy.md#trust-policy) file relative to the repository. Example: ./path/to/trust-policy.json", + "groupName": "commandConfig" + }, + { + "name": "trustStore", + "type": "string", + "label": "Trust Store Folder Path", + "required": true, + "defaultValue": "", + "visibleRule": "command = verify", + "helpMarkDown": "The path to the directory containing the [trust store](https://github.com/notaryproject/specifications/blob/v1.0.0/specs/trust-store-trust-policy.md#trust-store) relative to the repository. Example: ./path/to/truststore/", + "groupName": "commandConfig" + } + ], + "execution": { + "Node10": { + "target": "src/index.js" + }, + "Node16": { + "target": "src/index.js" } + }, + "messages": { + "ArtifactRefs": "Artifact references: %s.", + "ArtifactRefsNotSpecified": "Artifact references are not specified.", + "APPDATANotSet": "APPDATA is not set.", + "AzureKVPluginAlreadyInstalled": "Azure Key Vault plugin is already installed.", + "CannotFindTrustStore": "Cannot find trust store directory: %s.", + "ChecksumValidated": "Checksum validated: %s.", + "ChecksumValidationFailed": "Checksum validation failed. Expected: %s, Actual: %s.", + "FailedArtifacts": "Failed artifacts: %s.", + "FailedToAddCertToTrustStore": "Failed to add a certificate to trust store: %s.", + "FailedToImportTrustPolicy": "Failed to import trust policy: %s.", + "FailedToListTrustStore": "Failed to list the trust store.", + "FailedToShowTrustPolicy": "Failed to show trust policy.", + "TryToGetArtifactRefsFromDockerTask": "Try to get artifact references from Docker task.", + "InvalidResourceURI": "Invalid resource URI: %s.", + "InvalidVersionPrefix": "Invalid version prefix: %s.", + "ResultSummary": "Total artifacts: %s, succeeded: %s, failed: %s.", + "RepeatedArtifactRef": "Repeated artifact reference: %s.", + "SucceededArtifacts": "Succeeded artifacts: %s.", + "TempDirectoryNotSet": "Agent.TempDirectory is not set.", + "TempDirectoryOrWorkingDirectoryNotSet": "Agent.TempDirectory or system.DefaultWorkingDirectory is not set", + "NoAuthScheme": "No authentication scheme is specified.", + "NotationAlreadyInstalled": "Notation is already installed, please do not install it again.", + "NotationInstalledFromURL": "Notation is installed from %s.", + "NotationInstalledFromVersion": "Notation v%s is installed.", + "NoServiceConnection": "No Azure Key Vault service connection endpoint is specified.", + "UnsupportedArchitecture": "Unsupported architecture: %s.", + "UnsupportedFileExtension": "Unsupported file extension: %s.", + "UnsupportedPlatform": "Unsupported platform: %s.", + "UnsupportedVersion": "Unsupported version: %s.", + "UseManagedIdentity": "Use managed identity to access Azure Key Vault.", + "UnknownCommand": "Unknown command: %s.", + "UnknownError": "An unknown error occurred.", + "UnknownPlugin": "Unknown plugin: %s.", + "UnsupportedAuthScheme": "Unsupported authentication scheme: %s." + } } \ No newline at end of file diff --git a/Tasks/NotationV0/task.loc.json b/Tasks/NotationV0/task.loc.json index df8c08b3eba8..8afb9311f8d8 100644 --- a/Tasks/NotationV0/task.loc.json +++ b/Tasks/NotationV0/task.loc.json @@ -60,7 +60,7 @@ "name": "version", "type": "string", "label": "ms-resource:loc.input.label.version", - "defaultValue": "1.0.0", + "defaultValue": "1.0.1", "required": true, "helpMarkDown": "ms-resource:loc.input.help.version", "visibleRule": "command = install && isCustomVersion = false", From 4f85a8635b78397b0e754ee6ea8b060f2301994f Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Tue, 7 Nov 2023 21:57:39 +0800 Subject: [PATCH 07/32] fix: update code Signed-off-by: Junjie Gao --- Tasks/NotationV0/task.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Tasks/NotationV0/task.json b/Tasks/NotationV0/task.json index 014015f20ac4..c65ba74b8ba4 100644 --- a/Tasks/NotationV0/task.json +++ b/Tasks/NotationV0/task.json @@ -137,7 +137,7 @@ "label": "Plugin Version", "defaultValue": "1.0.1", "required": true, - "helpMarkDown": "The version of the Azure Key Vault plugin to be install. please visit the [release page](https://github.com/Azure/notation-azure-kv/releases) for the available versions.", + "helpMarkDown": "The version of the Azure Key Vault plugin to be installed. please visit the [release page](https://github.com/Azure/notation-azure-kv/releases) for the available versions.", "visibleRule": "plugin = azureKeyVault", "groupName": "pluginConfig" }, From 6984b6f314fb7b3f618141824d5b3c6e6b4e2b00 Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Tue, 7 Nov 2023 22:00:43 +0800 Subject: [PATCH 08/32] fix: update version Signed-off-by: Junjie Gao --- Tasks/NotationV0/task.json | 2 +- Tasks/NotationV0/task.loc.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Tasks/NotationV0/task.json b/Tasks/NotationV0/task.json index c65ba74b8ba4..ebb746b8ea5f 100644 --- a/Tasks/NotationV0/task.json +++ b/Tasks/NotationV0/task.json @@ -9,7 +9,7 @@ "author": "Notation Developers", "version": { "Major": 0, - "Minor": 1, + "Minor": 231, "Patch": 0 }, "groups": [ diff --git a/Tasks/NotationV0/task.loc.json b/Tasks/NotationV0/task.loc.json index 8afb9311f8d8..edfc2e494180 100644 --- a/Tasks/NotationV0/task.loc.json +++ b/Tasks/NotationV0/task.loc.json @@ -9,7 +9,7 @@ "author": "Notation Developers", "version": { "Major": 0, - "Minor": 1, + "Minor": 231, "Patch": 0 }, "groups": [ From be910a2563da31336c99cdb0b4a5b533118537fa Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Wed, 8 Nov 2023 14:12:03 +0800 Subject: [PATCH 09/32] fix: update files Signed-off-by: Junjie Gao --- .github/CODEOWNERS | 2 + Tasks/NotationV0/package-lock.json | 940 ++++++++++++++++++++++------- Tasks/NotationV0/package.json | 6 +- Tasks/NotationV0/task.json | 7 +- make-options.json | 2 + 5 files changed, 730 insertions(+), 227 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 6cf75e76ac25..80afd45c442d 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -314,6 +314,8 @@ Tasks/NodeTaskRunnerInstallerV0/ @microsoft/akvelon-build-task-team Tasks/NodeToolV0/ @microsoft/akvelon-build-task-team +Tasks/NotationV0/ @microsoft/akvelon-build-task-team @JeyJeyGao @shizhMSFT + Tasks/NpmV0/ @microsoft/azure-artifacts-packages Tasks/NpmV1/ @microsoft/azure-artifacts-packages diff --git a/Tasks/NotationV0/package-lock.json b/Tasks/NotationV0/package-lock.json index 1c812947cb76..061a0cbdf4e7 100644 --- a/Tasks/NotationV0/package-lock.json +++ b/Tasks/NotationV0/package-lock.json @@ -1,77 +1,682 @@ { "name": "notation", "version": "0.1.0", - "lockfileVersion": 1, + "lockfileVersion": 2, "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": "*" + "packages": { + "": { + "name": "notation", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@types/mocha": "^5.2.7", + "@types/node": "^16.11.39", + "azure-pipelines-task-lib": "4.6.1", + "azure-pipelines-tool-lib": "2.0.7" + }, + "devDependencies": { + "typescript": "4.0.2" } }, - "@types/form-data": { - "version": "0.0.33", - "resolved": "https://registry.npmjs.org/@types/form-data/-/form-data-0.0.33.tgz", - "integrity": "sha512-8BSvG1kGm83cyJITQMZSulnl6QV8jqAGreJsc5tPu1Jq0vTSOiY/k24Wx82JRpWwZSqrala6sd5rWi6aNXvqcw==", - "requires": { - "@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": "16.18.61", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.61.tgz", + "integrity": "sha512-k0N7BqGhJoJzdh6MuQg1V1ragJiXTh8VUBAZTWjJ9cUq23SG0F0xavOwZbhiP4J3y20xd6jxKx+xNUhkMAi76Q==" + }, + "node_modules/@types/semver": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-5.5.0.tgz", + "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" + }, + "node_modules/adm-zip": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", + "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", + "engines": { + "node": ">=6.0" + } + }, + "node_modules/agent-base": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", + "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", + "dependencies": { + "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" + } + }, + "node_modules/azure-pipelines-task-lib": { + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.6.1.tgz", + "integrity": "sha512-3/LFgNNHY0Cw9vArQPxM6ZgPWt3/G2Yy6F75k2AJzKUCotp5X9gZcvF399tVo6T6lTOlp3Vm7VBXq+kzZ6hZmw==", + "dependencies": { + "adm-zip": "^0.5.10", + "deasync": "^0.1.28", + "minimatch": "3.0.5", + "mockery": "^2.1.0", + "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-tool-lib": { + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/azure-pipelines-tool-lib/-/azure-pipelines-tool-lib-2.0.7.tgz", + "integrity": "sha512-1FN67ypNwNhgZllYSm4/pAQdffSfEZJhwW8YeNvm/cKDTS6t6bukTBIkt04c1CsaQe7Ot+eDOVMn41wX1ketXw==", + "dependencies": { + "@types/semver": "^5.3.0", + "@types/uuid": "^3.4.5", + "azure-pipelines-task-lib": "^4.1.0", + "semver": "^5.7.0", + "semver-compare": "^1.0.0", + "typed-rest-client": "^1.8.6", + "uuid": "^3.3.2" + } + }, + "node_modules/azure-pipelines-tool-lib/node_modules/@types/uuid": { + "version": "3.4.12", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.12.tgz", + "integrity": "sha512-4mZWvs9415R6KNlPUZaMDgpnNpFZrO7yZoFfVc6phuOpnUlU06KGu4+83e857jfWkYBMNVZF/1HDoG/aEbePow==" + }, + "node_modules/azure-pipelines-tool-lib/node_modules/typed-rest-client": { + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", + "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", + "dependencies": { + "qs": "^6.9.1", + "tunnel": "0.0.6", + "underscore": "^1.12.1" + } + }, + "node_modules/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/bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "dependencies": { + "file-uri-to-path": "1.0.0" + } + }, + "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.5", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", + "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", + "dependencies": { + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.1", + "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" + }, + "node_modules/deasync": { + "version": "0.1.29", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.29.tgz", + "integrity": "sha512-EBtfUhVX23CE9GR6m+F8WPeImEE4hR/FW9RkK0PMl9V1t283s0elqsTD8EZjaKX28SY1BW2rYfCgNsAYdpamUw==", + "hasInstallScript": true, + "dependencies": { + "bindings": "^1.5.0", + "node-addon-api": "^1.7.1" + }, + "engines": { + "node": ">=0.11.0" + } + }, + "node_modules/debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/define-data-property": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", + "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", + "dependencies": { + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/file-uri-to-path": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" + }, + "node_modules/follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", + "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", + "dependencies": { + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/gopd": { + "version": "1.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/has-property-descriptors": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", + "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", + "dependencies": { + "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "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.0", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", + "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", + "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": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/interpret": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/is-core-module": { + "version": "2.13.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", + "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", + "dependencies": { + "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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/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/mockery": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mockery/-/mockery-2.1.0.tgz", + "integrity": "sha512-9VkOmxKlWXoDO/h1jDZaS4lH33aWfRiJiNT/tKj+8OGzrcFDLo8d0syGdbsc3Bc4GvRXPb+NMMvojotmuGJTvA==" + }, + "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-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==" + }, + "node_modules/nodejs-file-downloader": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.12.1.tgz", + "integrity": "sha512-LpfCTNhh805AlLnJnzt1PuEj+RmbrccbAQZ6hBRw2e6QPVR0Qntuo6qqyvPHG5s77/0w0IEKgRAD4nbSnr/X4w==", + "dependencies": { + "follow-redirects": "^1.15.1", + "https-proxy-agent": "^5.0.0", + "mime-types": "^2.1.27", + "sanitize-filename": "^1.6.3" + } + }, + "node_modules/object-inspect": { + "version": "1.13.1", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" + }, + "node_modules/q": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } + }, + "node_modules/qs": { + "version": "6.11.2", + "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", + "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", + "dependencies": { + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/rechoir": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", + "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", + "dependencies": { + "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sanitize-filename": { + "version": "1.6.3", + "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "dependencies": { + "truncate-utf8-bytes": "^1.0.0" + } + }, + "node_modules/semver": { + "version": "5.7.2", + "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } + }, + "node_modules/semver-compare": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", + "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==" + }, + "node_modules/set-function-length": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", + "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", + "dependencies": { + "define-data-property": "^1.1.1", + "get-intrinsic": "^1.2.1", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.0" + }, + "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.4", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", + "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", + "dependencies": { + "call-bind": "^1.0.0", + "get-intrinsic": "^1.0.2", + "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/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/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/typescript": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz", + "integrity": "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==", + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=4.2.0" + } + }, + "node_modules/underscore": { + "version": "1.13.6", + "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", + "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" + }, + "node_modules/utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" + }, + "node_modules/uuid": { + "version": "3.4.0", + "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/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" + } + }, + "dependencies": { "@types/mocha": { "version": "5.2.7", "resolved": "https://registry.npmjs.org/@types/mocha/-/mocha-5.2.7.tgz", "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==" }, "@types/node": { - "version": "10.17.60", - "resolved": "https://registry.npmjs.org/@types/node/-/node-10.17.60.tgz", - "integrity": "sha512-F0KIgDJfy2nA3zMLmWGKxcH2ZVEtCZXHHdOQs2gSaQ27+lNeEfGxzkIw90aXswATX7AZ33tahPbzy6KAfUreVw==" - }, - "@types/qs": { - "version": "6.9.9", - "resolved": "https://registry.npmjs.org/@types/qs/-/qs-6.9.9.tgz", - "integrity": "sha512-wYLxw35euwqGvTDx6zfY1vokBFnsK0HNrzc6xNHchxfO2hpuRg74GbkEW7e3sSmPvj0TjCDT1VCa6OtHXnubsg==" + "version": "16.18.61", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.61.tgz", + "integrity": "sha512-k0N7BqGhJoJzdh6MuQg1V1ragJiXTh8VUBAZTWjJ9cUq23SG0F0xavOwZbhiP4J3y20xd6jxKx+xNUhkMAi76Q==" }, "@types/semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-5.5.0.tgz", "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" }, - "asap": { - "version": "2.0.6", - "resolved": "https://registry.npmjs.org/asap/-/asap-2.0.6.tgz", - "integrity": "sha512-BSHWgDSAiKs50o2Re8ppvp3seVHXSRM44cdSsT9FfNEUUZLOGWVCsiWaRPWM1Znn+mqZ1OfVZ3z3DWEzSp7hRA==" + "adm-zip": { + "version": "0.5.10", + "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", + "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==" }, - "asynckit": { - "version": "0.4.0", - "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", - "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + "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==", + "requires": { + "debug": "4" + } }, "azure-pipelines-task-lib": { - "version": "4.0.1-preview", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.0.1-preview.tgz", - "integrity": "sha512-yvxqTzBy6G1U4lDkQgvewGDtd4UxrFTTI49JBByS0vjz55lE/9hmOttFm/BSRCEeLkG0lp3t3ja54bsNBBM4cA==", + "version": "4.6.1", + "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.6.1.tgz", + "integrity": "sha512-3/LFgNNHY0Cw9vArQPxM6ZgPWt3/G2Yy6F75k2AJzKUCotp5X9gZcvF399tVo6T6lTOlp3Vm7VBXq+kzZ6hZmw==", "requires": { + "adm-zip": "^0.5.10", + "deasync": "^0.1.28", "minimatch": "3.0.5", - "mockery": "^1.7.0", + "mockery": "^2.1.0", + "nodejs-file-downloader": "^4.11.1", "q": "^1.5.1", "semver": "^5.1.0", "shelljs": "^0.8.5", - "sync-request": "6.1.0", "uuid": "^3.0.1" } }, "azure-pipelines-tool-lib": { - "version": "1.3.2", - "resolved": "https://registry.npmjs.org/azure-pipelines-tool-lib/-/azure-pipelines-tool-lib-1.3.2.tgz", - "integrity": "sha512-PtYcd3E2ouwZhLuaOpWA00FYoLjRuJs1V8mNu3u6lBnqeYd4jh/8VL/of6nchm8f2NM6Div+EEnbOcmWvcptPg==", + "version": "2.0.7", + "resolved": "https://registry.npmjs.org/azure-pipelines-tool-lib/-/azure-pipelines-tool-lib-2.0.7.tgz", + "integrity": "sha512-1FN67ypNwNhgZllYSm4/pAQdffSfEZJhwW8YeNvm/cKDTS6t6bukTBIkt04c1CsaQe7Ot+eDOVMn41wX1ketXw==", "requires": { "@types/semver": "^5.3.0", "@types/uuid": "^3.4.5", - "azure-pipelines-task-lib": "^3.1.10", + "azure-pipelines-task-lib": "^4.1.0", "semver": "^5.7.0", "semver-compare": "^1.0.0", "typed-rest-client": "^1.8.6", @@ -83,25 +688,6 @@ "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.12.tgz", "integrity": "sha512-4mZWvs9415R6KNlPUZaMDgpnNpFZrO7yZoFfVc6phuOpnUlU06KGu4+83e857jfWkYBMNVZF/1HDoG/aEbePow==" }, - "azure-pipelines-task-lib": { - "version": "3.4.0", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-3.4.0.tgz", - "integrity": "sha512-3eC4OTFw+7xD7A2aUhxR/j+jRlTI+vVfS0CGxt1pCLs4c/KmY0tQWgbqjD3157kmiucWxELBvgZHaD2gCBe9fg==", - "requires": { - "minimatch": "3.0.5", - "mockery": "^2.1.0", - "q": "^1.5.1", - "semver": "^5.1.0", - "shelljs": "^0.8.5", - "sync-request": "6.1.0", - "uuid": "^3.0.1" - } - }, - "mockery": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mockery/-/mockery-2.1.0.tgz", - "integrity": "sha512-9VkOmxKlWXoDO/h1jDZaS4lH33aWfRiJiNT/tKj+8OGzrcFDLo8d0syGdbsc3Bc4GvRXPb+NMMvojotmuGJTvA==" - }, "typed-rest-client": { "version": "1.8.11", "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", @@ -119,6 +705,14 @@ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==" }, + "bindings": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", + "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", + "requires": { + "file-uri-to-path": "1.0.0" + } + }, "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", @@ -128,11 +722,6 @@ "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.5", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", @@ -143,39 +732,27 @@ "set-function-length": "^1.1.1" } }, - "caseless": { - "version": "0.12.0", - "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz", - "integrity": "sha512-4tYFyifaFfGacoiObjJegolkwSU4xQNGbVgUiNYVUxbQ2x2lUsFvY4hVgVzGiIe6WLOPqycWXA40l+PWsxthUw==" - }, - "combined-stream": { - "version": "1.0.8", - "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", - "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", - "requires": { - "delayed-stream": "~1.0.0" - } - }, "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, - "concat-stream": { - "version": "1.6.2", - "resolved": "https://registry.npmjs.org/concat-stream/-/concat-stream-1.6.2.tgz", - "integrity": "sha512-27HBghJxjiZtIk3Ycvn/4kbJk/1uZuJFfuPEns6LaEvpvG1f0hTea8lilrouyo9mVc2GWdcEZ8OLoGmSADlrCw==", + "deasync": { + "version": "0.1.29", + "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.29.tgz", + "integrity": "sha512-EBtfUhVX23CE9GR6m+F8WPeImEE4hR/FW9RkK0PMl9V1t283s0elqsTD8EZjaKX28SY1BW2rYfCgNsAYdpamUw==", "requires": { - "buffer-from": "^1.0.0", - "inherits": "^2.0.3", - "readable-stream": "^2.2.2", - "typedarray": "^0.0.6" + "bindings": "^1.5.0", + "node-addon-api": "^1.7.1" } }, - "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==" + "debug": { + "version": "4.3.4", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", + "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", + "requires": { + "ms": "2.1.2" + } }, "define-data-property": { "version": "1.1.1", @@ -187,20 +764,15 @@ "has-property-descriptors": "^1.0.0" } }, - "delayed-stream": { + "file-uri-to-path": { "version": "1.0.0", - "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", - "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==" + "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", + "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, - "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" - } + "follow-redirects": { + "version": "1.15.3", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" }, "fs.realpath": { "version": "1.0.0", @@ -223,11 +795,6 @@ "hasown": "^2.0.0" } }, - "get-port": { - "version": "3.2.0", - "resolved": "https://registry.npmjs.org/get-port/-/get-port-3.2.0.tgz", - "integrity": "sha512-x5UJKlgeUiNT8nyo/AcnwLnZuZNcSjSw0kogRB+Whd1fjjFq4B1hySFxSFWWSn4mIBzg3sRNUDFYc4g5gjPoLg==" - }, "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", @@ -285,23 +852,13 @@ "function-bind": "^1.1.2" } }, - "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==", + "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==", "requires": { - "@types/node": "^10.0.3" + "agent-base": "6", + "debug": "4" } }, "inflight": { @@ -331,11 +888,6 @@ "hasown": "^2.0.0" } }, - "isarray": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz", - "integrity": "sha512-VLghIWNM6ELQzo7zwmcg0NmTVyWKYjvIeM83yjp0wRDTmUnrM678fQbcKBo6n2CJEF0szoG//ytg+TKla89ALQ==" - }, "mime-db": { "version": "1.52.0", "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", @@ -358,9 +910,30 @@ } }, "mockery": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/mockery/-/mockery-1.7.0.tgz", - "integrity": "sha512-gUQA33ayi0tuAhr/rJNZPr7Q7uvlBt4gyJPbi0CDcAfIzIrDu1YgGMFgmAu3stJqBpK57m7+RxUbcS+pt59fKQ==" + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mockery/-/mockery-2.1.0.tgz", + "integrity": "sha512-9VkOmxKlWXoDO/h1jDZaS4lH33aWfRiJiNT/tKj+8OGzrcFDLo8d0syGdbsc3Bc4GvRXPb+NMMvojotmuGJTvA==" + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node-addon-api": { + "version": "1.7.2", + "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", + "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==" + }, + "nodejs-file-downloader": { + "version": "4.12.1", + "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.12.1.tgz", + "integrity": "sha512-LpfCTNhh805AlLnJnzt1PuEj+RmbrccbAQZ6hBRw2e6QPVR0Qntuo6qqyvPHG5s77/0w0IEKgRAD4nbSnr/X4w==", + "requires": { + "follow-redirects": "^1.15.1", + "https-proxy-agent": "^5.0.0", + "mime-types": "^2.1.27", + "sanitize-filename": "^1.6.3" + } }, "object-inspect": { "version": "1.13.1", @@ -375,11 +948,6 @@ "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": "sha512-60zvsJReQPX5/QP0Kzfd/VrpjScIQ7SHBW6bFCYfEP+fp0Eppr1SHhIO5nd1PjZtvclzSzES9D/p5nFJurwfWg==" - }, "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", @@ -390,19 +958,6 @@ "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.3.0", - "resolved": "https://registry.npmjs.org/promise/-/promise-8.3.0.tgz", - "integrity": "sha512-rZPNPKTOYVNEEKFaq1HqTgOwZD+4/YHS5ukLzQCypkj+OkYx7iv0mA91lJlpPPZ8vMau3IIGj5Qlwrx+8iiSmg==", - "requires": { - "asap": "~2.0.6" - } - }, "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", @@ -416,20 +971,6 @@ "side-channel": "^1.0.4" } }, - "readable-stream": { - "version": "2.3.8", - "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.8.tgz", - "integrity": "sha512-8p0AUk4XODgIewSi0l8Epjs+EVnWiK7NoDIEGU0HhE7+ZyY8D1IMY7odu5lRrFXGg71L15KG8QrPmum45RTtdA==", - "requires": { - "core-util-is": "~1.0.0", - "inherits": "~2.0.3", - "isarray": "~1.0.0", - "process-nextick-args": "~2.0.0", - "safe-buffer": "~5.1.1", - "string_decoder": "~1.1.1", - "util-deprecate": "~1.0.1" - } - }, "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", @@ -448,10 +989,13 @@ "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", + "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", + "requires": { + "truncate-utf8-bytes": "^1.0.0" + } }, "semver": { "version": "5.7.2", @@ -494,60 +1038,17 @@ "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==", - "requires": { - "safe-buffer": "~5.1.0" - } - }, "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==" }, - "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==", + "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==", "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==" - } + "utf8-byte-length": "^1.0.1" } }, "tunnel": { @@ -555,11 +1056,6 @@ "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" }, - "typedarray": { - "version": "0.0.6", - "resolved": "https://registry.npmjs.org/typedarray/-/typedarray-0.0.6.tgz", - "integrity": "sha512-/aCDEGatGvZ2BIk+HmLf4ifCJFwvKFNb9/JeZPMulfgFracn9QFcAf5GO8B/mweUjSoblS5In0cWhqpfs/5PQA==" - }, "typescript": { "version": "4.0.2", "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz", @@ -571,10 +1067,10 @@ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" }, - "util-deprecate": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", - "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==" + "utf8-byte-length": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", + "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" }, "uuid": { "version": "3.4.0", diff --git a/Tasks/NotationV0/package.json b/Tasks/NotationV0/package.json index c477c0fa7866..11b51888da41 100644 --- a/Tasks/NotationV0/package.json +++ b/Tasks/NotationV0/package.json @@ -10,10 +10,10 @@ "author": "", "license": "MIT", "dependencies": { - "@types/node": "^10.17.0", + "@types/node": "^16.11.39", "@types/mocha": "^5.2.7", - "azure-pipelines-task-lib": "4.0.1-preview", - "azure-pipelines-tool-lib": "1.3.2" + "azure-pipelines-task-lib": "4.6.1", + "azure-pipelines-tool-lib": "2.0.7" }, "devDependencies": { "typescript": "4.0.2" diff --git a/Tasks/NotationV0/task.json b/Tasks/NotationV0/task.json index ebb746b8ea5f..ed004bbad837 100644 --- a/Tasks/NotationV0/task.json +++ b/Tasks/NotationV0/task.json @@ -7,6 +7,7 @@ "helpMarkDown": "", "category": "Utility", "author": "Notation Developers", + "minimumAgentVersion": "2.144.0", "version": { "Major": 0, "Minor": 231, @@ -203,10 +204,12 @@ ], "execution": { "Node10": { - "target": "src/index.js" + "target": "src/index.js", + "argumentFormat": "" }, "Node16": { - "target": "src/index.js" + "target": "src/index.js", + "argumentFormat": "" } }, "messages": { diff --git a/make-options.json b/make-options.json index 797e6f07aace..5ab7ac3121dc 100644 --- a/make-options.json +++ b/make-options.json @@ -137,6 +137,7 @@ "MysqlDeploymentOnMachineGroupV1", "NodeTaskRunnerInstallerV0", "NodeToolV0", + "NotationV0", "NpmV0", "NpmV1", "NpmAuthenticateV0", @@ -245,6 +246,7 @@ "FtpUploadV2", "MSBuildV1", "NodeToolV0", + "NotationV0", "PowerShellV2", "PythonScriptV0", "ShellScriptV2", From 8cebd627dd560b529af9c5cb99bb34f0b92638fa Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Wed, 8 Nov 2023 14:49:15 +0800 Subject: [PATCH 10/32] fix: update code Signed-off-by: Junjie Gao --- Tasks/NotationV0/src/lib/credentials.ts | 2 +- Tasks/NotationV0/task.json | 2 +- Tasks/NotationV0/task.loc.json | 9 ++++++--- 3 files changed, 8 insertions(+), 5 deletions(-) diff --git a/Tasks/NotationV0/src/lib/credentials.ts b/Tasks/NotationV0/src/lib/credentials.ts index 3a0d1a531b67..9320e66db433 100644 --- a/Tasks/NotationV0/src/lib/credentials.ts +++ b/Tasks/NotationV0/src/lib/credentials.ts @@ -28,7 +28,7 @@ export async function getVaultCredentials(): Promise<{ [key: string]: string }> if (authType == "spnCertificate") { taskLib.debug('certificate based endpoint'); - let certificateContent = taskLib.getEndpointAuthorizationParameter(connectedService, "servicePrincipalCertificate", false); + let certificateContent = taskLib.getEndpointAuthorizationParameter(connectedService, "servicePrincipalCertificate", false) ?? ''; let tempDir = taskLib.getVariable('Agent.TempDirectory') || taskLib.getVariable('system.DefaultWorkingDirectory'); if (!tempDir) { throw new Error(taskLib.loc('TempDirectoryOrWorkingDirectoryNotSet')); diff --git a/Tasks/NotationV0/task.json b/Tasks/NotationV0/task.json index ed004bbad837..29005216dc40 100644 --- a/Tasks/NotationV0/task.json +++ b/Tasks/NotationV0/task.json @@ -1,6 +1,6 @@ { "$schema": "https://raw.githubusercontent.com/Microsoft/azure-pipelines-task-lib/master/tasks.schema.json", - "id": "a7d56ba6-35a6-453d-8192-8b602bf234bd", + "id": "c7d56ba6-35a6-453d-8192-8b602bf234bd", "name": "Notation", "friendlyName": "Notation", "description": "Azure Pipepine Task for setting up Notation CLI, sign and verify with Notation", diff --git a/Tasks/NotationV0/task.loc.json b/Tasks/NotationV0/task.loc.json index edfc2e494180..73d552f332e2 100644 --- a/Tasks/NotationV0/task.loc.json +++ b/Tasks/NotationV0/task.loc.json @@ -1,12 +1,13 @@ { "$schema": "https://raw.githubusercontent.com/Microsoft/azure-pipelines-task-lib/master/tasks.schema.json", - "id": "a7d56ba6-35a6-453d-8192-8b602bf234bd", + "id": "c7d56ba6-35a6-453d-8192-8b602bf234bd", "name": "Notation", "friendlyName": "ms-resource:loc.friendlyName", "description": "ms-resource:loc.description", "helpMarkDown": "ms-resource:loc.helpMarkDown", "category": "Utility", "author": "Notation Developers", + "minimumAgentVersion": "2.144.0", "version": { "Major": 0, "Minor": 231, @@ -203,10 +204,12 @@ ], "execution": { "Node10": { - "target": "src/index.js" + "target": "src/index.js", + "argumentFormat": "" }, "Node16": { - "target": "src/index.js" + "target": "src/index.js", + "argumentFormat": "" } }, "messages": { From a210586eb36fc40343de01bedb6943fe5f47b9e3 Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Wed, 8 Nov 2023 15:58:34 +0800 Subject: [PATCH 11/32] fix: update code owners and update node version Signed-off-by: Junjie Gao --- .github/CODEOWNERS | 3 ++- Tasks/NotationV0/package.json | 2 +- Tasks/NotationV0/task.json | 6 +----- Tasks/NotationV0/task.loc.json | 4 ++++ 4 files changed, 8 insertions(+), 7 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 80afd45c442d..ad75d8b33170 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -314,7 +314,8 @@ Tasks/NodeTaskRunnerInstallerV0/ @microsoft/akvelon-build-task-team Tasks/NodeToolV0/ @microsoft/akvelon-build-task-team -Tasks/NotationV0/ @microsoft/akvelon-build-task-team @JeyJeyGao @shizhMSFT +# DRI rotation: Azure Container Registry / Triage +Tasks/NotationV0/ @azure/azure-container-registry Tasks/NpmV0/ @microsoft/azure-artifacts-packages diff --git a/Tasks/NotationV0/package.json b/Tasks/NotationV0/package.json index 11b51888da41..38f413c94289 100644 --- a/Tasks/NotationV0/package.json +++ b/Tasks/NotationV0/package.json @@ -10,7 +10,7 @@ "author": "", "license": "MIT", "dependencies": { - "@types/node": "^16.11.39", + "@types/node": "^20.3.1", "@types/mocha": "^5.2.7", "azure-pipelines-task-lib": "4.6.1", "azure-pipelines-tool-lib": "2.0.7" diff --git a/Tasks/NotationV0/task.json b/Tasks/NotationV0/task.json index 29005216dc40..8b5282672596 100644 --- a/Tasks/NotationV0/task.json +++ b/Tasks/NotationV0/task.json @@ -203,11 +203,7 @@ } ], "execution": { - "Node10": { - "target": "src/index.js", - "argumentFormat": "" - }, - "Node16": { + "Node20": { "target": "src/index.js", "argumentFormat": "" } diff --git a/Tasks/NotationV0/task.loc.json b/Tasks/NotationV0/task.loc.json index 73d552f332e2..93a563bd46d1 100644 --- a/Tasks/NotationV0/task.loc.json +++ b/Tasks/NotationV0/task.loc.json @@ -210,6 +210,10 @@ "Node16": { "target": "src/index.js", "argumentFormat": "" + }, + "Node20": { + "target": "src/index.js", + "argumentFormat": "" } }, "messages": { From be60ba4e2abb8077f52dd5f02a1ce7f204daa282 Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Wed, 8 Nov 2023 16:52:03 +0800 Subject: [PATCH 12/32] fix: update node version to 20 Signed-off-by: Junjie Gao --- Tasks/NotationV0/make.json | 9 ------ Tasks/NotationV0/package-lock.json | 46 ++++++++++++++++++++---------- Tasks/NotationV0/package.json | 2 +- Tasks/NotationV0/task.loc.json | 8 ------ make-options.json | 1 - 5 files changed, 32 insertions(+), 34 deletions(-) diff --git a/Tasks/NotationV0/make.json b/Tasks/NotationV0/make.json index 748131e5d3cd..c559fd0be3dd 100644 --- a/Tasks/NotationV0/make.json +++ b/Tasks/NotationV0/make.json @@ -1,13 +1,4 @@ { - "rm": [ - { - "items": [ - "node_modules/azure-pipelines-tasks-utility-common/node_modules/azure-pipelines-task-lib", - "node_modules/azure-pipelines-tasks-azure-arm-rest-v2/node_modules/azure-pipelines-task-lib" - ], - "options": "-Rf" - } - ], "cp": [ { "source": [ diff --git a/Tasks/NotationV0/package-lock.json b/Tasks/NotationV0/package-lock.json index 061a0cbdf4e7..ad278f3411a6 100644 --- a/Tasks/NotationV0/package-lock.json +++ b/Tasks/NotationV0/package-lock.json @@ -10,12 +10,12 @@ "license": "MIT", "dependencies": { "@types/mocha": "^5.2.7", - "@types/node": "^16.11.39", + "@types/node": "^20.3.1", "azure-pipelines-task-lib": "4.6.1", "azure-pipelines-tool-lib": "2.0.7" }, "devDependencies": { - "typescript": "4.0.2" + "typescript": "5.1.6" } }, "node_modules/@types/mocha": { @@ -24,9 +24,12 @@ "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==" }, "node_modules/@types/node": { - "version": "16.18.61", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.61.tgz", - "integrity": "sha512-k0N7BqGhJoJzdh6MuQg1V1ragJiXTh8VUBAZTWjJ9cUq23SG0F0xavOwZbhiP4J3y20xd6jxKx+xNUhkMAi76Q==" + "version": "20.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz", + "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==", + "dependencies": { + "undici-types": "~5.26.4" + } }, "node_modules/@types/semver": { "version": "5.5.0", @@ -587,16 +590,16 @@ } }, "node_modules/typescript": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz", - "integrity": "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==", + "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": ">=4.2.0" + "node": ">=14.17" } }, "node_modules/underscore": { @@ -604,6 +607,11 @@ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" }, + "node_modules/undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "node_modules/utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", @@ -631,9 +639,12 @@ "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==" }, "@types/node": { - "version": "16.18.61", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.61.tgz", - "integrity": "sha512-k0N7BqGhJoJzdh6MuQg1V1ragJiXTh8VUBAZTWjJ9cUq23SG0F0xavOwZbhiP4J3y20xd6jxKx+xNUhkMAi76Q==" + "version": "20.9.0", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz", + "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==", + "requires": { + "undici-types": "~5.26.4" + } }, "@types/semver": { "version": "5.5.0", @@ -1057,9 +1068,9 @@ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" }, "typescript": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz", - "integrity": "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", "dev": true }, "underscore": { @@ -1067,6 +1078,11 @@ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", diff --git a/Tasks/NotationV0/package.json b/Tasks/NotationV0/package.json index 38f413c94289..f4f5eb1d39ec 100644 --- a/Tasks/NotationV0/package.json +++ b/Tasks/NotationV0/package.json @@ -16,6 +16,6 @@ "azure-pipelines-tool-lib": "2.0.7" }, "devDependencies": { - "typescript": "4.0.2" + "typescript": "5.1.6" } } diff --git a/Tasks/NotationV0/task.loc.json b/Tasks/NotationV0/task.loc.json index 93a563bd46d1..5c07ee957c5c 100644 --- a/Tasks/NotationV0/task.loc.json +++ b/Tasks/NotationV0/task.loc.json @@ -203,14 +203,6 @@ } ], "execution": { - "Node10": { - "target": "src/index.js", - "argumentFormat": "" - }, - "Node16": { - "target": "src/index.js", - "argumentFormat": "" - }, "Node20": { "target": "src/index.js", "argumentFormat": "" diff --git a/make-options.json b/make-options.json index 5ab7ac3121dc..4972c92108df 100644 --- a/make-options.json +++ b/make-options.json @@ -246,7 +246,6 @@ "FtpUploadV2", "MSBuildV1", "NodeToolV0", - "NotationV0", "PowerShellV2", "PythonScriptV0", "ShellScriptV2", From 558cfdfeacc36af752fc19b80bd79445d79410cb Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Wed, 8 Nov 2023 18:03:16 +0800 Subject: [PATCH 13/32] fix: update maintainer Signed-off-by: Junjie Gao --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index ad75d8b33170..ae7604f76919 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -315,7 +315,7 @@ Tasks/NodeTaskRunnerInstallerV0/ @microsoft/akvelon-build-task-team Tasks/NodeToolV0/ @microsoft/akvelon-build-task-team # DRI rotation: Azure Container Registry / Triage -Tasks/NotationV0/ @azure/azure-container-registry +Tasks/NotationV0/ @microsoft/azure-containerregistry-contributors Tasks/NpmV0/ @microsoft/azure-artifacts-packages From 9a6f465cafce86ec344fc3453748164cee3c30a8 Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Wed, 8 Nov 2023 18:49:49 +0800 Subject: [PATCH 14/32] fix: update test Signed-off-by: Junjie Gao --- Tasks/NotationV0/Tests/L0.ts | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/Tasks/NotationV0/Tests/L0.ts b/Tasks/NotationV0/Tests/L0.ts index 4f7e5e1945df..cd8d7c31d51e 100644 --- a/Tasks/NotationV0/Tests/L0.ts +++ b/Tasks/NotationV0/Tests/L0.ts @@ -3,32 +3,32 @@ import * as ttm from 'azure-pipelines-task-lib/mock-test'; import assert = require('assert'); describe('NotationV0 Suite', function () { - it('install notation', function () { - this.timeout(1000); + it('install notation', async function () { + this.timeout(2000); let tp = path.join(__dirname, 'L0Install.js'); let tr = new ttm.MockTestRunner(tp); - tr.run(); + await tr.runAsync() assert(tr.succeeded, 'should have succeeded'); }) - it('notation sign', function () { - this.timeout(1000); + it('notation sign', async function () { + this.timeout(2000); let tp = path.join(__dirname, 'L0Sign.js'); let tr = new ttm.MockTestRunner(tp); - tr.run(); + await tr.runAsync() assert(tr.succeeded, 'should have succeeded'); }) - it('notation verify', function () { - this.timeout(1000); + it('notation verify', async function () { + this.timeout(2000); let tp = path.join(__dirname, 'L0Verify.js'); let tr = new ttm.MockTestRunner(tp); - tr.run(); + await tr.runAsync() assert(tr.succeeded, 'should have succeeded'); }) From 4cd6540b14db7beb795ae290a8ceb7ef2f370646 Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Wed, 8 Nov 2023 18:56:23 +0800 Subject: [PATCH 15/32] fix: update test timeout Signed-off-by: Junjie Gao --- Tasks/NotationV0/Tests/L0.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Tasks/NotationV0/Tests/L0.ts b/Tasks/NotationV0/Tests/L0.ts index cd8d7c31d51e..e7cd76f3574b 100644 --- a/Tasks/NotationV0/Tests/L0.ts +++ b/Tasks/NotationV0/Tests/L0.ts @@ -4,7 +4,7 @@ import assert = require('assert'); describe('NotationV0 Suite', function () { it('install notation', async function () { - this.timeout(2000); + this.timeout(3000); let tp = path.join(__dirname, 'L0Install.js'); let tr = new ttm.MockTestRunner(tp); @@ -14,7 +14,7 @@ describe('NotationV0 Suite', function () { }) it('notation sign', async function () { - this.timeout(2000); + this.timeout(3000); let tp = path.join(__dirname, 'L0Sign.js'); let tr = new ttm.MockTestRunner(tp); @@ -24,7 +24,7 @@ describe('NotationV0 Suite', function () { }) it('notation verify', async function () { - this.timeout(2000); + this.timeout(3000); let tp = path.join(__dirname, 'L0Verify.js'); let tr = new ttm.MockTestRunner(tp); From 9131cd077a02585c1295ee988c981d11925e5ecd Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Wed, 8 Nov 2023 19:20:48 +0800 Subject: [PATCH 16/32] fix: update package-lock.json Signed-off-by: Junjie Gao --- Tasks/NotationV0/package-lock.json | 631 +---------------------------- 1 file changed, 1 insertion(+), 630 deletions(-) diff --git a/Tasks/NotationV0/package-lock.json b/Tasks/NotationV0/package-lock.json index ad278f3411a6..1535e803aea7 100644 --- a/Tasks/NotationV0/package-lock.json +++ b/Tasks/NotationV0/package-lock.json @@ -1,637 +1,8 @@ { "name": "notation", "version": "0.1.0", - "lockfileVersion": 2, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "notation", - "version": "0.1.0", - "license": "MIT", - "dependencies": { - "@types/mocha": "^5.2.7", - "@types/node": "^20.3.1", - "azure-pipelines-task-lib": "4.6.1", - "azure-pipelines-tool-lib": "2.0.7" - }, - "devDependencies": { - "typescript": "5.1.6" - } - }, - "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.9.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz", - "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==", - "dependencies": { - "undici-types": "~5.26.4" - } - }, - "node_modules/@types/semver": { - "version": "5.5.0", - "resolved": "https://registry.npmjs.org/@types/semver/-/semver-5.5.0.tgz", - "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" - }, - "node_modules/adm-zip": { - "version": "0.5.10", - "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", - "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", - "engines": { - "node": ">=6.0" - } - }, - "node_modules/agent-base": { - "version": "6.0.2", - "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-6.0.2.tgz", - "integrity": "sha512-RZNwNclF7+MS/8bDg70amg32dyeZGZxiDuQmZxKLAlQjr3jGyLx+4Kkk58UO7D2QdgFIQCovuSuZESne6RG6XQ==", - "dependencies": { - "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" - } - }, - "node_modules/azure-pipelines-task-lib": { - "version": "4.6.1", - "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.6.1.tgz", - "integrity": "sha512-3/LFgNNHY0Cw9vArQPxM6ZgPWt3/G2Yy6F75k2AJzKUCotp5X9gZcvF399tVo6T6lTOlp3Vm7VBXq+kzZ6hZmw==", - "dependencies": { - "adm-zip": "^0.5.10", - "deasync": "^0.1.28", - "minimatch": "3.0.5", - "mockery": "^2.1.0", - "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-tool-lib": { - "version": "2.0.7", - "resolved": "https://registry.npmjs.org/azure-pipelines-tool-lib/-/azure-pipelines-tool-lib-2.0.7.tgz", - "integrity": "sha512-1FN67ypNwNhgZllYSm4/pAQdffSfEZJhwW8YeNvm/cKDTS6t6bukTBIkt04c1CsaQe7Ot+eDOVMn41wX1ketXw==", - "dependencies": { - "@types/semver": "^5.3.0", - "@types/uuid": "^3.4.5", - "azure-pipelines-task-lib": "^4.1.0", - "semver": "^5.7.0", - "semver-compare": "^1.0.0", - "typed-rest-client": "^1.8.6", - "uuid": "^3.3.2" - } - }, - "node_modules/azure-pipelines-tool-lib/node_modules/@types/uuid": { - "version": "3.4.12", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.12.tgz", - "integrity": "sha512-4mZWvs9415R6KNlPUZaMDgpnNpFZrO7yZoFfVc6phuOpnUlU06KGu4+83e857jfWkYBMNVZF/1HDoG/aEbePow==" - }, - "node_modules/azure-pipelines-tool-lib/node_modules/typed-rest-client": { - "version": "1.8.11", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", - "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", - "dependencies": { - "qs": "^6.9.1", - "tunnel": "0.0.6", - "underscore": "^1.12.1" - } - }, - "node_modules/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/bindings": { - "version": "1.5.0", - "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", - "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dependencies": { - "file-uri-to-path": "1.0.0" - } - }, - "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.5", - "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", - "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", - "dependencies": { - "function-bind": "^1.1.2", - "get-intrinsic": "^1.2.1", - "set-function-length": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/concat-map": { - "version": "0.0.1", - "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", - "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" - }, - "node_modules/deasync": { - "version": "0.1.29", - "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.29.tgz", - "integrity": "sha512-EBtfUhVX23CE9GR6m+F8WPeImEE4hR/FW9RkK0PMl9V1t283s0elqsTD8EZjaKX28SY1BW2rYfCgNsAYdpamUw==", - "hasInstallScript": true, - "dependencies": { - "bindings": "^1.5.0", - "node-addon-api": "^1.7.1" - }, - "engines": { - "node": ">=0.11.0" - } - }, - "node_modules/debug": { - "version": "4.3.4", - "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", - "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { - "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } - } - }, - "node_modules/define-data-property": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", - "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dependencies": { - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" - } - }, - "node_modules/file-uri-to-path": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", - "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" - }, - "node_modules/follow-redirects": { - "version": "1.15.3", - "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } - }, - "node_modules/fs.realpath": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", - "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" - }, - "node_modules/function-bind": { - "version": "1.1.2", - "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", - "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/get-intrinsic": { - "version": "1.2.2", - "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", - "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", - "dependencies": { - "function-bind": "^1.1.2", - "has-proto": "^1.0.1", - "has-symbols": "^1.0.3", - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/glob": { - "version": "7.2.3", - "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", - "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { - "fs.realpath": "^1.0.0", - "inflight": "^1.0.4", - "inherits": "2", - "minimatch": "^3.1.1", - "once": "^1.3.0", - "path-is-absolute": "^1.0.0" - }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", - "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" - } - }, - "node_modules/gopd": { - "version": "1.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/has-property-descriptors": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", - "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "dependencies": { - "get-intrinsic": "^1.2.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/has-proto": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "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.0", - "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", - "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "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": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { - "once": "^1.3.0", - "wrappy": "1" - } - }, - "node_modules/inherits": { - "version": "2.0.4", - "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", - "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" - }, - "node_modules/interpret": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/is-core-module": { - "version": "2.13.1", - "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", - "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dependencies": { - "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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/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/mockery": { - "version": "2.1.0", - "resolved": "https://registry.npmjs.org/mockery/-/mockery-2.1.0.tgz", - "integrity": "sha512-9VkOmxKlWXoDO/h1jDZaS4lH33aWfRiJiNT/tKj+8OGzrcFDLo8d0syGdbsc3Bc4GvRXPb+NMMvojotmuGJTvA==" - }, - "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-addon-api": { - "version": "1.7.2", - "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", - "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==" - }, - "node_modules/nodejs-file-downloader": { - "version": "4.12.1", - "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.12.1.tgz", - "integrity": "sha512-LpfCTNhh805AlLnJnzt1PuEj+RmbrccbAQZ6hBRw2e6QPVR0Qntuo6qqyvPHG5s77/0w0IEKgRAD4nbSnr/X4w==", - "dependencies": { - "follow-redirects": "^1.15.1", - "https-proxy-agent": "^5.0.0", - "mime-types": "^2.1.27", - "sanitize-filename": "^1.6.3" - } - }, - "node_modules/object-inspect": { - "version": "1.13.1", - "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/once": { - "version": "1.4.0", - "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", - "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { - "wrappy": "1" - } - }, - "node_modules/path-is-absolute": { - "version": "1.0.1", - "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } - }, - "node_modules/path-parse": { - "version": "1.0.7", - "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", - "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" - }, - "node_modules/q": { - "version": "1.5.1", - "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } - }, - "node_modules/qs": { - "version": "6.11.2", - "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", - "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", - "dependencies": { - "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/rechoir": { - "version": "0.6.2", - "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", - "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dependencies": { - "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" - } - }, - "node_modules/resolve": { - "version": "1.22.8", - "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", - "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dependencies": { - "is-core-module": "^2.13.0", - "path-parse": "^1.0.7", - "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/sanitize-filename": { - "version": "1.6.3", - "resolved": "https://registry.npmjs.org/sanitize-filename/-/sanitize-filename-1.6.3.tgz", - "integrity": "sha512-y/52Mcy7aw3gRm7IrcGDFx/bCk4AhRh2eI9luHOQM86nZsqwiRkkq2GekHXBBD+SmPidc8i2PqtYZl+pWJ8Oeg==", - "dependencies": { - "truncate-utf8-bytes": "^1.0.0" - } - }, - "node_modules/semver": { - "version": "5.7.2", - "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } - }, - "node_modules/semver-compare": { - "version": "1.0.0", - "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", - "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==" - }, - "node_modules/set-function-length": { - "version": "1.1.1", - "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", - "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", - "dependencies": { - "define-data-property": "^1.1.1", - "get-intrinsic": "^1.2.1", - "gopd": "^1.0.1", - "has-property-descriptors": "^1.0.0" - }, - "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.4", - "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", - "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { - "call-bind": "^1.0.0", - "get-intrinsic": "^1.0.2", - "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } - }, - "node_modules/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/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/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.6", - "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", - "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" - }, - "node_modules/undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, - "node_modules/utf8-byte-length": { - "version": "1.0.4", - "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", - "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" - }, - "node_modules/uuid": { - "version": "3.4.0", - "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/wrappy": { - "version": "1.0.2", - "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", - "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" - } - }, "dependencies": { "@types/mocha": { "version": "5.2.7", From c8f3506a278beaf25d32d661f0e20b97cf2438f7 Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Wed, 8 Nov 2023 19:32:31 +0800 Subject: [PATCH 17/32] fix: update package-lock.json file Signed-off-by: Junjie Gao --- Tasks/NotationV0/package-lock.json | 426 ++++++++++++++++++++--------- 1 file changed, 294 insertions(+), 132 deletions(-) diff --git a/Tasks/NotationV0/package-lock.json b/Tasks/NotationV0/package-lock.json index 1535e803aea7..defbceb3715b 100644 --- a/Tasks/NotationV0/package-lock.json +++ b/Tasks/NotationV0/package-lock.json @@ -1,45 +1,65 @@ { "name": "notation", "version": "0.1.0", - "lockfileVersion": 1, + "lockfileVersion": 3, "requires": true, - "dependencies": { - "@types/mocha": { + "packages": { + "": { + "name": "notation", + "version": "0.1.0", + "license": "MIT", + "dependencies": { + "@types/mocha": "^5.2.7", + "@types/node": "^20.3.1", + "azure-pipelines-task-lib": "4.6.1", + "azure-pipelines-tool-lib": "2.0.7" + }, + "devDependencies": { + "typescript": "5.1.6" + } + }, + "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==" }, - "@types/node": { + "node_modules/@types/node": { "version": "20.9.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz", "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==", - "requires": { + "dependencies": { "undici-types": "~5.26.4" } }, - "@types/semver": { + "node_modules/@types/semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-5.5.0.tgz", "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" }, - "adm-zip": { + "node_modules/adm-zip": { "version": "0.5.10", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", - "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==" + "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", + "engines": { + "node": ">=6.0" + } }, - "agent-base": { + "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==", - "requires": { + "dependencies": { "debug": "4" + }, + "engines": { + "node": ">= 6.0.0" } }, - "azure-pipelines-task-lib": { + "node_modules/azure-pipelines-task-lib": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.6.1.tgz", "integrity": "sha512-3/LFgNNHY0Cw9vArQPxM6ZgPWt3/G2Yy6F75k2AJzKUCotp5X9gZcvF399tVo6T6lTOlp3Vm7VBXq+kzZ6hZmw==", - "requires": { + "dependencies": { "adm-zip": "^0.5.10", "deasync": "^0.1.28", "minimatch": "3.0.5", @@ -51,11 +71,11 @@ "uuid": "^3.0.1" } }, - "azure-pipelines-tool-lib": { + "node_modules/azure-pipelines-tool-lib": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/azure-pipelines-tool-lib/-/azure-pipelines-tool-lib-2.0.7.tgz", "integrity": "sha512-1FN67ypNwNhgZllYSm4/pAQdffSfEZJhwW8YeNvm/cKDTS6t6bukTBIkt04c1CsaQe7Ot+eDOVMn41wX1ketXw==", - "requires": { + "dependencies": { "@types/semver": "^5.3.0", "@types/uuid": "^3.4.5", "azure-pipelines-task-lib": "^4.1.0", @@ -63,125 +83,161 @@ "semver-compare": "^1.0.0", "typed-rest-client": "^1.8.6", "uuid": "^3.3.2" - }, + } + }, + "node_modules/azure-pipelines-tool-lib/node_modules/@types/uuid": { + "version": "3.4.12", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.12.tgz", + "integrity": "sha512-4mZWvs9415R6KNlPUZaMDgpnNpFZrO7yZoFfVc6phuOpnUlU06KGu4+83e857jfWkYBMNVZF/1HDoG/aEbePow==" + }, + "node_modules/azure-pipelines-tool-lib/node_modules/typed-rest-client": { + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", + "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", "dependencies": { - "@types/uuid": { - "version": "3.4.12", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.12.tgz", - "integrity": "sha512-4mZWvs9415R6KNlPUZaMDgpnNpFZrO7yZoFfVc6phuOpnUlU06KGu4+83e857jfWkYBMNVZF/1HDoG/aEbePow==" - }, - "typed-rest-client": { - "version": "1.8.11", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", - "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", - "requires": { - "qs": "^6.9.1", - "tunnel": "0.0.6", - "underscore": "^1.12.1" - } - } + "qs": "^6.9.1", + "tunnel": "0.0.6", + "underscore": "^1.12.1" } }, - "balanced-match": { + "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==" }, - "bindings": { + "node_modules/bindings": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "requires": { + "dependencies": { "file-uri-to-path": "1.0.0" } }, - "brace-expansion": { + "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==", - "requires": { + "dependencies": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "call-bind": { + "node_modules/call-bind": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", - "requires": { + "dependencies": { "function-bind": "^1.1.2", "get-intrinsic": "^1.2.1", "set-function-length": "^1.1.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "concat-map": { + "node_modules/concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, - "deasync": { + "node_modules/deasync": { "version": "0.1.29", "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.29.tgz", "integrity": "sha512-EBtfUhVX23CE9GR6m+F8WPeImEE4hR/FW9RkK0PMl9V1t283s0elqsTD8EZjaKX28SY1BW2rYfCgNsAYdpamUw==", - "requires": { + "hasInstallScript": true, + "dependencies": { "bindings": "^1.5.0", "node-addon-api": "^1.7.1" + }, + "engines": { + "node": ">=0.11.0" } }, - "debug": { + "node_modules/debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "requires": { + "dependencies": { "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } } }, - "define-data-property": { + "node_modules/define-data-property": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "requires": { + "dependencies": { "get-intrinsic": "^1.2.1", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" } }, - "file-uri-to-path": { + "node_modules/file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, - "follow-redirects": { + "node_modules/follow-redirects": { "version": "1.15.3", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } }, - "fs.realpath": { + "node_modules/fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, - "function-bind": { + "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==" + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "get-intrinsic": { + "node_modules/get-intrinsic": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", - "requires": { + "dependencies": { "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "glob": { + "node_modules/glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "requires": { + "dependencies": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", @@ -189,282 +245,388 @@ "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { - "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" - } - } + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "gopd": { + "node_modules/gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "requires": { + "dependencies": { "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "has-property-descriptors": { + "node_modules/has-property-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "requires": { + "dependencies": { "get-intrinsic": "^1.2.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "has-proto": { + "node_modules/has-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "has-symbols": { + "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==" + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "hasown": { + "node_modules/hasown": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "requires": { + "dependencies": { "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" } }, - "https-proxy-agent": { + "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==", - "requires": { + "dependencies": { "agent-base": "6", "debug": "4" + }, + "engines": { + "node": ">= 6" } }, - "inflight": { + "node_modules/inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "requires": { + "dependencies": { "once": "^1.3.0", "wrappy": "1" } }, - "inherits": { + "node_modules/inherits": { "version": "2.0.4", "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" }, - "interpret": { + "node_modules/interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", + "engines": { + "node": ">= 0.10" + } }, - "is-core-module": { + "node_modules/is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "requires": { + "dependencies": { "hasown": "^2.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "mime-db": { + "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==" + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } }, - "mime-types": { + "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==", - "requires": { + "dependencies": { "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" } }, - "minimatch": { + "node_modules/minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", - "requires": { + "dependencies": { "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" } }, - "mockery": { + "node_modules/mockery": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mockery/-/mockery-2.1.0.tgz", "integrity": "sha512-9VkOmxKlWXoDO/h1jDZaS4lH33aWfRiJiNT/tKj+8OGzrcFDLo8d0syGdbsc3Bc4GvRXPb+NMMvojotmuGJTvA==" }, - "ms": { + "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-addon-api": { + "node_modules/node-addon-api": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==" }, - "nodejs-file-downloader": { + "node_modules/nodejs-file-downloader": { "version": "4.12.1", "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.12.1.tgz", "integrity": "sha512-LpfCTNhh805AlLnJnzt1PuEj+RmbrccbAQZ6hBRw2e6QPVR0Qntuo6qqyvPHG5s77/0w0IEKgRAD4nbSnr/X4w==", - "requires": { + "dependencies": { "follow-redirects": "^1.15.1", "https-proxy-agent": "^5.0.0", "mime-types": "^2.1.27", "sanitize-filename": "^1.6.3" } }, - "object-inspect": { + "node_modules/object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "once": { + "node_modules/once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "requires": { + "dependencies": { "wrappy": "1" } }, - "path-is-absolute": { + "node_modules/path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "engines": { + "node": ">=0.10.0" + } }, - "path-parse": { + "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==" }, - "q": { + "node_modules/q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", + "engines": { + "node": ">=0.6.0", + "teleport": ">=0.2.0" + } }, - "qs": { + "node_modules/qs": { "version": "6.11.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", - "requires": { + "dependencies": { "side-channel": "^1.0.4" + }, + "engines": { + "node": ">=0.6" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "rechoir": { + "node_modules/rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "requires": { + "dependencies": { "resolve": "^1.1.6" + }, + "engines": { + "node": ">= 0.10" } }, - "resolve": { + "node_modules/resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "requires": { + "dependencies": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "sanitize-filename": { + "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==", - "requires": { + "dependencies": { "truncate-utf8-bytes": "^1.0.0" } }, - "semver": { + "node_modules/semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", + "bin": { + "semver": "bin/semver" + } }, - "semver-compare": { + "node_modules/semver-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==" }, - "set-function-length": { + "node_modules/set-function-length": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", - "requires": { + "dependencies": { "define-data-property": "^1.1.1", "get-intrinsic": "^1.2.1", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" } }, - "shelljs": { + "node_modules/shelljs": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "requires": { + "dependencies": { "glob": "^7.0.0", "interpret": "^1.0.0", "rechoir": "^0.6.2" + }, + "bin": { + "shjs": "bin/shjs" + }, + "engines": { + "node": ">=4" } }, - "side-channel": { + "node_modules/side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "requires": { + "dependencies": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", "object-inspect": "^1.9.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" } }, - "supports-preserve-symlinks-flag": { + "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==" + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } }, - "truncate-utf8-bytes": { + "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==", - "requires": { + "dependencies": { "utf8-byte-length": "^1.0.1" } }, - "tunnel": { + "node_modules/tunnel": { "version": "0.0.6", "resolved": "https://registry.npmjs.org/tunnel/-/tunnel-0.0.6.tgz", - "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==", + "engines": { + "node": ">=0.6.11 <=0.7.0 || >=0.7.3" + } }, - "typescript": { + "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 + "dev": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } }, - "underscore": { + "node_modules/underscore": { "version": "1.13.6", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" }, - "undici-types": { + "node_modules/undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, - "utf8-byte-length": { + "node_modules/utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" }, - "uuid": { + "node_modules/uuid": { "version": "3.4.0", "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz", - "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" + "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" + } }, - "wrappy": { + "node_modules/wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" From 4fa11c6a007abf8c23b2b28e5ca084abb2a3c6f8 Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Wed, 8 Nov 2023 19:44:03 +0800 Subject: [PATCH 18/32] fix: update task.json Signed-off-by: Junjie Gao --- Tasks/NotationV0/task.json | 4 ++++ Tasks/NotationV0/task.loc.json | 4 ++++ 2 files changed, 8 insertions(+) diff --git a/Tasks/NotationV0/task.json b/Tasks/NotationV0/task.json index 8b5282672596..4d49840e19f5 100644 --- a/Tasks/NotationV0/task.json +++ b/Tasks/NotationV0/task.json @@ -203,6 +203,10 @@ } ], "execution": { + "Node16": { + "target": "src/index.js", + "argumentFormat": "" + }, "Node20": { "target": "src/index.js", "argumentFormat": "" diff --git a/Tasks/NotationV0/task.loc.json b/Tasks/NotationV0/task.loc.json index 5c07ee957c5c..3d4c11b2f7e1 100644 --- a/Tasks/NotationV0/task.loc.json +++ b/Tasks/NotationV0/task.loc.json @@ -203,6 +203,10 @@ } ], "execution": { + "Node16": { + "target": "src/index.js", + "argumentFormat": "" + }, "Node20": { "target": "src/index.js", "argumentFormat": "" From 0d9888d829ddc7e59f97debe7130bffe4d88a4e0 Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Thu, 9 Nov 2023 07:26:35 +0800 Subject: [PATCH 19/32] fix: update package-lock.json Signed-off-by: Junjie Gao --- Tasks/NotationV0/package-lock.json | 426 +++++++++-------------------- 1 file changed, 132 insertions(+), 294 deletions(-) diff --git a/Tasks/NotationV0/package-lock.json b/Tasks/NotationV0/package-lock.json index defbceb3715b..1535e803aea7 100644 --- a/Tasks/NotationV0/package-lock.json +++ b/Tasks/NotationV0/package-lock.json @@ -1,65 +1,45 @@ { "name": "notation", "version": "0.1.0", - "lockfileVersion": 3, + "lockfileVersion": 1, "requires": true, - "packages": { - "": { - "name": "notation", - "version": "0.1.0", - "license": "MIT", - "dependencies": { - "@types/mocha": "^5.2.7", - "@types/node": "^20.3.1", - "azure-pipelines-task-lib": "4.6.1", - "azure-pipelines-tool-lib": "2.0.7" - }, - "devDependencies": { - "typescript": "5.1.6" - } - }, - "node_modules/@types/mocha": { + "dependencies": { + "@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": { + "@types/node": { "version": "20.9.0", "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz", "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==", - "dependencies": { + "requires": { "undici-types": "~5.26.4" } }, - "node_modules/@types/semver": { + "@types/semver": { "version": "5.5.0", "resolved": "https://registry.npmjs.org/@types/semver/-/semver-5.5.0.tgz", "integrity": "sha512-41qEJgBH/TWgo5NFSvBCJ1qkoi3Q6ONSF2avrHq1LVEZfYpdHmj0y9SuTK+u9ZhG1sYQKBL1AWXKyLWP4RaUoQ==" }, - "node_modules/adm-zip": { + "adm-zip": { "version": "0.5.10", "resolved": "https://registry.npmjs.org/adm-zip/-/adm-zip-0.5.10.tgz", - "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==", - "engines": { - "node": ">=6.0" - } + "integrity": "sha512-x0HvcHqVJNTPk/Bw8JbLWlWoo6Wwnsug0fnYYro1HBrjxZ3G7/AZk7Ahv8JwDe1uIcz8eBqvu86FuF1POiG7vQ==" }, - "node_modules/agent-base": { + "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": { + "requires": { "debug": "4" - }, - "engines": { - "node": ">= 6.0.0" } }, - "node_modules/azure-pipelines-task-lib": { + "azure-pipelines-task-lib": { "version": "4.6.1", "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-4.6.1.tgz", "integrity": "sha512-3/LFgNNHY0Cw9vArQPxM6ZgPWt3/G2Yy6F75k2AJzKUCotp5X9gZcvF399tVo6T6lTOlp3Vm7VBXq+kzZ6hZmw==", - "dependencies": { + "requires": { "adm-zip": "^0.5.10", "deasync": "^0.1.28", "minimatch": "3.0.5", @@ -71,11 +51,11 @@ "uuid": "^3.0.1" } }, - "node_modules/azure-pipelines-tool-lib": { + "azure-pipelines-tool-lib": { "version": "2.0.7", "resolved": "https://registry.npmjs.org/azure-pipelines-tool-lib/-/azure-pipelines-tool-lib-2.0.7.tgz", "integrity": "sha512-1FN67ypNwNhgZllYSm4/pAQdffSfEZJhwW8YeNvm/cKDTS6t6bukTBIkt04c1CsaQe7Ot+eDOVMn41wX1ketXw==", - "dependencies": { + "requires": { "@types/semver": "^5.3.0", "@types/uuid": "^3.4.5", "azure-pipelines-task-lib": "^4.1.0", @@ -83,161 +63,125 @@ "semver-compare": "^1.0.0", "typed-rest-client": "^1.8.6", "uuid": "^3.3.2" - } - }, - "node_modules/azure-pipelines-tool-lib/node_modules/@types/uuid": { - "version": "3.4.12", - "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.12.tgz", - "integrity": "sha512-4mZWvs9415R6KNlPUZaMDgpnNpFZrO7yZoFfVc6phuOpnUlU06KGu4+83e857jfWkYBMNVZF/1HDoG/aEbePow==" - }, - "node_modules/azure-pipelines-tool-lib/node_modules/typed-rest-client": { - "version": "1.8.11", - "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", - "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", + }, "dependencies": { - "qs": "^6.9.1", - "tunnel": "0.0.6", - "underscore": "^1.12.1" + "@types/uuid": { + "version": "3.4.12", + "resolved": "https://registry.npmjs.org/@types/uuid/-/uuid-3.4.12.tgz", + "integrity": "sha512-4mZWvs9415R6KNlPUZaMDgpnNpFZrO7yZoFfVc6phuOpnUlU06KGu4+83e857jfWkYBMNVZF/1HDoG/aEbePow==" + }, + "typed-rest-client": { + "version": "1.8.11", + "resolved": "https://registry.npmjs.org/typed-rest-client/-/typed-rest-client-1.8.11.tgz", + "integrity": "sha512-5UvfMpd1oelmUPRbbaVnq+rHP7ng2cE4qoQkQeAqxRL6PklkxsM0g32/HL0yfvruK6ojQ5x8EE+HF4YV6DtuCA==", + "requires": { + "qs": "^6.9.1", + "tunnel": "0.0.6", + "underscore": "^1.12.1" + } + } } }, - "node_modules/balanced-match": { + "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/bindings": { + "bindings": { "version": "1.5.0", "resolved": "https://registry.npmjs.org/bindings/-/bindings-1.5.0.tgz", "integrity": "sha512-p2q/t/mhvuOj/UeLlV6566GD/guowlr0hHxClI0W9m7MWYkL1F0hLo+0Aexs9HSPCtR1SXQ0TD3MMKrXZajbiQ==", - "dependencies": { + "requires": { "file-uri-to-path": "1.0.0" } }, - "node_modules/brace-expansion": { + "brace-expansion": { "version": "1.1.11", "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", - "dependencies": { + "requires": { "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, - "node_modules/call-bind": { + "call-bind": { "version": "1.0.5", "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.5.tgz", "integrity": "sha512-C3nQxfFZxFRVoJoGKKI8y3MOEo129NQ+FgQ08iye+Mk4zNZZGdjfs06bVTr+DBSlA66Q2VEcMki/cUCP4SercQ==", - "dependencies": { + "requires": { "function-bind": "^1.1.2", "get-intrinsic": "^1.2.1", "set-function-length": "^1.1.1" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/concat-map": { + "concat-map": { "version": "0.0.1", "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==" }, - "node_modules/deasync": { + "deasync": { "version": "0.1.29", "resolved": "https://registry.npmjs.org/deasync/-/deasync-0.1.29.tgz", "integrity": "sha512-EBtfUhVX23CE9GR6m+F8WPeImEE4hR/FW9RkK0PMl9V1t283s0elqsTD8EZjaKX28SY1BW2rYfCgNsAYdpamUw==", - "hasInstallScript": true, - "dependencies": { + "requires": { "bindings": "^1.5.0", "node-addon-api": "^1.7.1" - }, - "engines": { - "node": ">=0.11.0" } }, - "node_modules/debug": { + "debug": { "version": "4.3.4", "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", - "dependencies": { + "requires": { "ms": "2.1.2" - }, - "engines": { - "node": ">=6.0" - }, - "peerDependenciesMeta": { - "supports-color": { - "optional": true - } } }, - "node_modules/define-data-property": { + "define-data-property": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.1.tgz", "integrity": "sha512-E7uGkTzkk1d0ByLeSc6ZsFS79Axg+m1P/VsgYsxHgiuc3tFSj+MjMIwe90FC4lOAZzNBdY7kkO2P2wKdsQ1vgQ==", - "dependencies": { + "requires": { "get-intrinsic": "^1.2.1", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" } }, - "node_modules/file-uri-to-path": { + "file-uri-to-path": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/file-uri-to-path/-/file-uri-to-path-1.0.0.tgz", "integrity": "sha512-0Zt+s3L7Vf1biwWZ29aARiVYLx7iMGnEUl9x33fbB/j3jR81u/O2LbqK+Bm1CDSNDKVtJ/YjwY7TUd5SkeLQLw==" }, - "node_modules/follow-redirects": { + "follow-redirects": { "version": "1.15.3", "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.3.tgz", - "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==", - "funding": [ - { - "type": "individual", - "url": "https://github.com/sponsors/RubenVerborgh" - } - ], - "engines": { - "node": ">=4.0" - }, - "peerDependenciesMeta": { - "debug": { - "optional": true - } - } + "integrity": "sha512-1VzOtuEM8pC9SFU1E+8KfTjZyMztRsgEfwQl44z8A25uy13jSzTj6dyK2Df52iV0vgHCfBwLhDWevLn95w5v6Q==" }, - "node_modules/fs.realpath": { + "fs.realpath": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==" }, - "node_modules/function-bind": { + "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" - } + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==" }, - "node_modules/get-intrinsic": { + "get-intrinsic": { "version": "1.2.2", "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.2.tgz", "integrity": "sha512-0gSo4ml/0j98Y3lngkFEot/zhiCeWsbYIlZ+uZOVgzLyLaUw7wxUL+nCTP0XJvJg1AXulJRI3UJi8GsbDuxdGA==", - "dependencies": { + "requires": { "function-bind": "^1.1.2", "has-proto": "^1.0.1", "has-symbols": "^1.0.3", "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/glob": { + "glob": { "version": "7.2.3", "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", - "dependencies": { + "requires": { "fs.realpath": "^1.0.0", "inflight": "^1.0.4", "inherits": "2", @@ -245,388 +189,282 @@ "once": "^1.3.0", "path-is-absolute": "^1.0.0" }, - "engines": { - "node": "*" - }, - "funding": { - "url": "https://github.com/sponsors/isaacs" - } - }, - "node_modules/glob/node_modules/minimatch": { - "version": "3.1.2", - "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", - "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", "dependencies": { - "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" + "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" + } + } } }, - "node_modules/gopd": { + "gopd": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", - "dependencies": { + "requires": { "get-intrinsic": "^1.1.3" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-property-descriptors": { + "has-property-descriptors": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.1.tgz", "integrity": "sha512-VsX8eaIewvas0xnvinAe9bw4WfIeODpGYikiWYLH+dma0Jw6KHYqWiWfhQlgOVK8D6PvjubK5Uc4P0iIhIcNVg==", - "dependencies": { + "requires": { "get-intrinsic": "^1.2.2" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/has-proto": { + "has-proto": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.1.tgz", - "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==", - "engines": { - "node": ">= 0.4" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "integrity": "sha512-7qE+iP+O+bgF9clE5+UoBFzE65mlBiVj3tKCrlNQ0Ogwm0BjpT/gK4SlLYDMybDh5I3TCTKnPPa0oMG7JDYrhg==" }, - "node_modules/has-symbols": { + "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" - } + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==" }, - "node_modules/hasown": { + "hasown": { "version": "2.0.0", "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.0.tgz", "integrity": "sha512-vUptKVTpIJhcczKBbgnS+RtcuYMB8+oNzPK2/Hp3hanz8JmpATdmmgLgSaadVREkDm+e2giHwY3ZRkyjSIDDFA==", - "dependencies": { + "requires": { "function-bind": "^1.1.2" - }, - "engines": { - "node": ">= 0.4" } }, - "node_modules/https-proxy-agent": { + "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": { + "requires": { "agent-base": "6", "debug": "4" - }, - "engines": { - "node": ">= 6" } }, - "node_modules/inflight": { + "inflight": { "version": "1.0.6", "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", - "dependencies": { + "requires": { "once": "^1.3.0", "wrappy": "1" } }, - "node_modules/inherits": { + "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": { + "interpret": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/interpret/-/interpret-1.4.0.tgz", - "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==", - "engines": { - "node": ">= 0.10" - } + "integrity": "sha512-agE4QfB2Lkp9uICn7BAqoscw4SZP9kTE2hxiFI3jBPmXJfdqiahTbUuKGsMoN2GtqL9AxhYioAcVvgsb1HvRbA==" }, - "node_modules/is-core-module": { + "is-core-module": { "version": "2.13.1", "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.13.1.tgz", "integrity": "sha512-hHrIjvZsftOsvKSn2TRYl63zvxsgE0K+0mYMoH6gD4omR5IWB2KynivBQczo3+wF1cCkjzvptnI9Q0sPU66ilw==", - "dependencies": { + "requires": { "hasown": "^2.0.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/mime-db": { + "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" - } + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==" }, - "node_modules/mime-types": { + "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": { + "requires": { "mime-db": "1.52.0" - }, - "engines": { - "node": ">= 0.6" } }, - "node_modules/minimatch": { + "minimatch": { "version": "3.0.5", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.5.tgz", "integrity": "sha512-tUpxzX0VAzJHjLu0xUfFv1gwVp9ba3IOuRAVH2EGuRW8a5emA2FlACLqiT/lDVtS1W+TGNwqz3sWaNyLgDJWuw==", - "dependencies": { + "requires": { "brace-expansion": "^1.1.7" - }, - "engines": { - "node": "*" } }, - "node_modules/mockery": { + "mockery": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/mockery/-/mockery-2.1.0.tgz", "integrity": "sha512-9VkOmxKlWXoDO/h1jDZaS4lH33aWfRiJiNT/tKj+8OGzrcFDLo8d0syGdbsc3Bc4GvRXPb+NMMvojotmuGJTvA==" }, - "node_modules/ms": { + "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-addon-api": { + "node-addon-api": { "version": "1.7.2", "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-1.7.2.tgz", "integrity": "sha512-ibPK3iA+vaY1eEjESkQkM0BbCqFOaZMiXRTtdB0u7b4djtY6JnsjvPdUHVMg6xQt3B8fpTTWHI9A+ADjM9frzg==" }, - "node_modules/nodejs-file-downloader": { + "nodejs-file-downloader": { "version": "4.12.1", "resolved": "https://registry.npmjs.org/nodejs-file-downloader/-/nodejs-file-downloader-4.12.1.tgz", "integrity": "sha512-LpfCTNhh805AlLnJnzt1PuEj+RmbrccbAQZ6hBRw2e6QPVR0Qntuo6qqyvPHG5s77/0w0IEKgRAD4nbSnr/X4w==", - "dependencies": { + "requires": { "follow-redirects": "^1.15.1", "https-proxy-agent": "^5.0.0", "mime-types": "^2.1.27", "sanitize-filename": "^1.6.3" } }, - "node_modules/object-inspect": { + "object-inspect": { "version": "1.13.1", "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.1.tgz", - "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==", - "funding": { - "url": "https://github.com/sponsors/ljharb" - } + "integrity": "sha512-5qoj1RUiKOMsCCNLV1CBiPYE10sziTsnmNxkAI/rZhiD63CF7IqdFGC/XzjWjpSgLf0LxXX3bDFIh0E18f6UhQ==" }, - "node_modules/once": { + "once": { "version": "1.4.0", "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", - "dependencies": { + "requires": { "wrappy": "1" } }, - "node_modules/path-is-absolute": { + "path-is-absolute": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", - "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", - "engines": { - "node": ">=0.10.0" - } + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==" }, - "node_modules/path-parse": { + "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": { + "q": { "version": "1.5.1", "resolved": "https://registry.npmjs.org/q/-/q-1.5.1.tgz", - "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==", - "engines": { - "node": ">=0.6.0", - "teleport": ">=0.2.0" - } + "integrity": "sha512-kV/CThkXo6xyFEZUugw/+pIOywXcDbFYgSct5cT3gqlbkBE1SJdwy6UQoZvodiWF/ckQLZyDE/Bu1M6gVu5lVw==" }, - "node_modules/qs": { + "qs": { "version": "6.11.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.2.tgz", "integrity": "sha512-tDNIz22aBzCDxLtVH++VnTfzxlfeK5CbqohpSqpJgj1Wg/cQbStNAz3NuqCs5vV+pjBsK4x4pN9HlVh7rcYRiA==", - "dependencies": { + "requires": { "side-channel": "^1.0.4" - }, - "engines": { - "node": ">=0.6" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/rechoir": { + "rechoir": { "version": "0.6.2", "resolved": "https://registry.npmjs.org/rechoir/-/rechoir-0.6.2.tgz", "integrity": "sha512-HFM8rkZ+i3zrV+4LQjwQ0W+ez98pApMGM3HUrN04j3CqzPOzl9nmP15Y8YXNm8QHGv/eacOVEjqhmWpkRV0NAw==", - "dependencies": { + "requires": { "resolve": "^1.1.6" - }, - "engines": { - "node": ">= 0.10" } }, - "node_modules/resolve": { + "resolve": { "version": "1.22.8", "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", - "dependencies": { + "requires": { "is-core-module": "^2.13.0", "path-parse": "^1.0.7", "supports-preserve-symlinks-flag": "^1.0.0" - }, - "bin": { - "resolve": "bin/resolve" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/sanitize-filename": { + "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": { + "requires": { "truncate-utf8-bytes": "^1.0.0" } }, - "node_modules/semver": { + "semver": { "version": "5.7.2", "resolved": "https://registry.npmjs.org/semver/-/semver-5.7.2.tgz", - "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==", - "bin": { - "semver": "bin/semver" - } + "integrity": "sha512-cBznnQ9KjJqU67B52RMC65CMarK2600WFnbkcaiwWq3xy/5haFJlshgnpjovMVJ+Hff49d8GEn0b87C5pDQ10g==" }, - "node_modules/semver-compare": { + "semver-compare": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/semver-compare/-/semver-compare-1.0.0.tgz", "integrity": "sha512-YM3/ITh2MJ5MtzaM429anh+x2jiLVjqILF4m4oyQB18W7Ggea7BfqdH/wGMK7dDiMghv/6WG7znWMwUDzJiXow==" }, - "node_modules/set-function-length": { + "set-function-length": { "version": "1.1.1", "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.1.1.tgz", "integrity": "sha512-VoaqjbBJKiWtg4yRcKBQ7g7wnGnLV3M8oLvVWwOk2PdYY6PEFegR1vezXR0tw6fZGF9csVakIRjrJiy2veSBFQ==", - "dependencies": { + "requires": { "define-data-property": "^1.1.1", "get-intrinsic": "^1.2.1", "gopd": "^1.0.1", "has-property-descriptors": "^1.0.0" - }, - "engines": { - "node": ">= 0.4" } }, - "node_modules/shelljs": { + "shelljs": { "version": "0.8.5", "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.8.5.tgz", "integrity": "sha512-TiwcRcrkhHvbrZbnRcFYMLl30Dfov3HKqzp5tO5b4pt6G/SezKcYhmDg15zXVBswHmctSAQKznqNW2LO5tTDow==", - "dependencies": { + "requires": { "glob": "^7.0.0", "interpret": "^1.0.0", "rechoir": "^0.6.2" - }, - "bin": { - "shjs": "bin/shjs" - }, - "engines": { - "node": ">=4" } }, - "node_modules/side-channel": { + "side-channel": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.4.tgz", "integrity": "sha512-q5XPytqFEIKHkGdiMIrY10mvLRvnQh42/+GoBlFW3b2LXLE2xxJpZFdm94we0BaoV3RwJyGqg5wS7epxTv0Zvw==", - "dependencies": { + "requires": { "call-bind": "^1.0.0", "get-intrinsic": "^1.0.2", "object-inspect": "^1.9.0" - }, - "funding": { - "url": "https://github.com/sponsors/ljharb" } }, - "node_modules/supports-preserve-symlinks-flag": { + "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" - } + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" }, - "node_modules/truncate-utf8-bytes": { + "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": { + "requires": { "utf8-byte-length": "^1.0.1" } }, - "node_modules/tunnel": { + "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" - } + "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" }, - "node_modules/typescript": { + "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" - } + "dev": true }, - "node_modules/underscore": { + "underscore": { "version": "1.13.6", "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" }, - "node_modules/undici-types": { + "undici-types": { "version": "5.26.5", "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" }, - "node_modules/utf8-byte-length": { + "utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", "integrity": "sha512-4+wkEYLBbWxqTahEsWrhxepcoVOJ+1z5PGIjPZxRkytcdSUaNjIjBM7Xn8E+pdSuV7SzvWovBFA54FO0JSoqhA==" }, - "node_modules/uuid": { + "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" - } + "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==" }, - "node_modules/wrappy": { + "wrappy": { "version": "1.0.2", "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==" From 5bffa0dc247dca9cef0ce4ce0dddcedafb381006 Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Thu, 9 Nov 2023 07:35:06 +0800 Subject: [PATCH 20/32] fix: update package.json Signed-off-by: Junjie Gao --- Tasks/NotationV0/package-lock.json | 20 ++++++-------------- Tasks/NotationV0/package.json | 4 ++-- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/Tasks/NotationV0/package-lock.json b/Tasks/NotationV0/package-lock.json index 1535e803aea7..728d75196a94 100644 --- a/Tasks/NotationV0/package-lock.json +++ b/Tasks/NotationV0/package-lock.json @@ -10,12 +10,9 @@ "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==" }, "@types/node": { - "version": "20.9.0", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.0.tgz", - "integrity": "sha512-nekiGu2NDb1BcVofVcEKMIwzlx4NjHlcjhoxxKBNLtz15Y1z7MYf549DFvkHSId02Ax6kGwWntIBPC3l/JZcmw==", - "requires": { - "undici-types": "~5.26.4" - } + "version": "16.18.61", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.61.tgz", + "integrity": "sha512-k0N7BqGhJoJzdh6MuQg1V1ragJiXTh8VUBAZTWjJ9cUq23SG0F0xavOwZbhiP4J3y20xd6jxKx+xNUhkMAi76Q==" }, "@types/semver": { "version": "5.5.0", @@ -439,9 +436,9 @@ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" }, "typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz", + "integrity": "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==", "dev": true }, "underscore": { @@ -449,11 +446,6 @@ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" }, - "undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, "utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", diff --git a/Tasks/NotationV0/package.json b/Tasks/NotationV0/package.json index f4f5eb1d39ec..11b51888da41 100644 --- a/Tasks/NotationV0/package.json +++ b/Tasks/NotationV0/package.json @@ -10,12 +10,12 @@ "author": "", "license": "MIT", "dependencies": { - "@types/node": "^20.3.1", + "@types/node": "^16.11.39", "@types/mocha": "^5.2.7", "azure-pipelines-task-lib": "4.6.1", "azure-pipelines-tool-lib": "2.0.7" }, "devDependencies": { - "typescript": "5.1.6" + "typescript": "4.0.2" } } From 0f981537cd87c1e30135dbfecf6b3ff5bd5a2a91 Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Thu, 9 Nov 2023 08:06:25 +0800 Subject: [PATCH 21/32] fix: update test Signed-off-by: Junjie Gao --- Tasks/NotationV0/Tests/L0Install.ts | 12 ++++++++++++ Tasks/NotationV0/Tests/L0Sign.ts | 11 +++++++++++ Tasks/NotationV0/Tests/L0Verify.ts | 7 ++++++- 3 files changed, 29 insertions(+), 1 deletion(-) diff --git a/Tasks/NotationV0/Tests/L0Install.ts b/Tasks/NotationV0/Tests/L0Install.ts index 1de0f03af56b..d200ceb60ef0 100644 --- a/Tasks/NotationV0/Tests/L0Install.ts +++ b/Tasks/NotationV0/Tests/L0Install.ts @@ -1,5 +1,6 @@ import * as path from 'path'; import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import os = require('os'); let taskPath = path.join(__dirname, '..', 'src', 'index.js'); let tmr = new tmrm.TaskMockRunner(taskPath); @@ -34,6 +35,17 @@ tmr.registerMock('./crypto', { } }) +os.platform = () => { + return 'linux' as NodeJS.Platform; +} + +os.arch = () => { + return 'x64'; +} + +tmr.registerMock('os', os); + + process.env['AGENT_TEMPDIRECTORY'] = '.'; tmr.setInput('command', 'install'); tmr.setInput('version', '1.0.0'); diff --git a/Tasks/NotationV0/Tests/L0Sign.ts b/Tasks/NotationV0/Tests/L0Sign.ts index e0e7b5cdbdbe..70a7d4b0f0a8 100644 --- a/Tasks/NotationV0/Tests/L0Sign.ts +++ b/Tasks/NotationV0/Tests/L0Sign.ts @@ -1,5 +1,6 @@ import * as path from 'path'; import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import os = require('os'); let taskPath = path.join(__dirname, '..', 'src', 'index.js'); let tmr = new tmrm.TaskMockRunner(taskPath); @@ -38,6 +39,16 @@ tmr.registerMock('./crypto', { } }) +os.platform = () => { + return 'linux' as NodeJS.Platform; +} + +os.arch = () => { + return 'x64'; +} + +tmr.registerMock('os', os); + process.env['AGENT_TEMPDIRECTORY'] = '.'; tmr.setInput('command', 'sign'); tmr.setInput('akvPluginVersion', '1.0.1'); diff --git a/Tasks/NotationV0/Tests/L0Verify.ts b/Tasks/NotationV0/Tests/L0Verify.ts index c7723625c0a0..8cb277067733 100644 --- a/Tasks/NotationV0/Tests/L0Verify.ts +++ b/Tasks/NotationV0/Tests/L0Verify.ts @@ -48,8 +48,13 @@ tmr.setInput('trustpolicy', './policy.json') tmr.setInput('truststore', './truststore') os.platform = () => { - return 'linux'; + return 'linux' as NodeJS.Platform; } + +os.arch = () => { + return 'x64'; +} + tmr.registerMock('os', os); tmr.run(); From 5e76de78e963cd2bfb79941084e505b548a79a98 Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Thu, 9 Nov 2023 08:14:00 +0800 Subject: [PATCH 22/32] fix: update test Signed-off-by: Junjie Gao --- Tasks/NotationV0/Tests/L0Verify.ts | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/Tasks/NotationV0/Tests/L0Verify.ts b/Tasks/NotationV0/Tests/L0Verify.ts index 8cb277067733..27dbe9d12887 100644 --- a/Tasks/NotationV0/Tests/L0Verify.ts +++ b/Tasks/NotationV0/Tests/L0Verify.ts @@ -31,11 +31,15 @@ tmr.setAnswers({ }, }, "exist": { - "truststore/x509": true + "truststore/x509": true, + "truststore\\x509": true }, "rmRF": { "/user/config/notation/truststore": { "success": true + }, + "\\user\\config\\notation\\truststore": { + "success": true } }, }) From ab948ea997aa92fefc4e48f5fa803646e76003a3 Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Thu, 9 Nov 2023 08:34:07 +0800 Subject: [PATCH 23/32] fix: update test timeout Signed-off-by: Junjie Gao --- Tasks/NotationV0/Tests/L0.ts | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/Tasks/NotationV0/Tests/L0.ts b/Tasks/NotationV0/Tests/L0.ts index e7cd76f3574b..04c7bbe4c715 100644 --- a/Tasks/NotationV0/Tests/L0.ts +++ b/Tasks/NotationV0/Tests/L0.ts @@ -4,7 +4,7 @@ import assert = require('assert'); describe('NotationV0 Suite', function () { it('install notation', async function () { - this.timeout(3000); + this.timeout(5000); let tp = path.join(__dirname, 'L0Install.js'); let tr = new ttm.MockTestRunner(tp); @@ -14,7 +14,7 @@ describe('NotationV0 Suite', function () { }) it('notation sign', async function () { - this.timeout(3000); + this.timeout(5000); let tp = path.join(__dirname, 'L0Sign.js'); let tr = new ttm.MockTestRunner(tp); @@ -24,7 +24,7 @@ describe('NotationV0 Suite', function () { }) it('notation verify', async function () { - this.timeout(3000); + this.timeout(5000); let tp = path.join(__dirname, 'L0Verify.js'); let tr = new ttm.MockTestRunner(tp); From f17aef14b9735da13a7aed9fc84d019616dfb763 Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Thu, 9 Nov 2023 08:47:39 +0800 Subject: [PATCH 24/32] fix: update code and readme file Signed-off-by: Junjie Gao --- Tasks/NotationV0/README.md | 43 +++++ Tasks/NotationV0/Tests/L0.ts | 6 +- Tasks/NotationV0/docs/sign-images-pipeline.md | 161 ++++++++++++++++++ 3 files changed, 207 insertions(+), 3 deletions(-) create mode 100644 Tasks/NotationV0/README.md create mode 100644 Tasks/NotationV0/docs/sign-images-pipeline.md diff --git a/Tasks/NotationV0/README.md b/Tasks/NotationV0/README.md new file mode 100644 index 000000000000..5e8a6537373a --- /dev/null +++ b/Tasks/NotationV0/README.md @@ -0,0 +1,43 @@ +# Notation for Azure DevOps Task + +Install Notation CLI, sign or verify container registry artifact. + +## Usage +- [Notation sign on ADO pipeline](./docs/sign-images-pipeline.md) + +## Inputs +`command` - Command +`string`. Required. Allowed values: `install`, `sign` and `verify`. + +`artifactRefs` - Artifact References +`string`. The container artifact reference with digest. If multiple references are used, please use comma to separate them. If it was not specified, the task will automatically detect it from previous Docker task. + +`plugin` - Plugin +`string`. Required for sign command. Allowed values: `azureKeyVault`. + +`akvPluginVersion` - Azure Key Vault Plugin Version +`string`. Required for `azureKeyVault` plugin. The version for Azure Key Vault plugin. Please visit the [release page](https://github.com/Azure/notation-azure-kv/releases) to choose a released version. + +`azurekvServiceConnection` - Azure Key Vault Service Connection +`string`. Required for `azure-kv` plugin. Select the The Azure Resource Manager service connection for the key vault if prefer to use service connection for authentication. + +`keyid` - Key ID +`string`. Required for `azure-kv` plugin. The key identifier of an Azure Key Vault certificate. + +`selfSigned` - Self signed +`boolean`. Whether the certficate is self-signed certificate. + +`caCertBundle` - Certificate Bundle File Path +`string`. The certificate bundle file containing intermidiate certificates and root certificate. + +`trustPolicy` - Trust Policy File Path +`string`. Required for `verify` command. The trust policy file path. + +`trustStore` - Trust Store Folder Path +`string`. Requried for `verify` command. The trust store folder path. + +`signatureFormat` - Signature Format +`string`. Signature envelope format. Allowed values: `jws`, `cose`. + +`allowReferrersAPI` - [Experimental] Allow Referrers API +`boolean`. Use the Referrers API to sign signatures, if not supported (returns 404), fallback to the Referrers tag schema. diff --git a/Tasks/NotationV0/Tests/L0.ts b/Tasks/NotationV0/Tests/L0.ts index 04c7bbe4c715..2335a643ef77 100644 --- a/Tasks/NotationV0/Tests/L0.ts +++ b/Tasks/NotationV0/Tests/L0.ts @@ -4,7 +4,7 @@ import assert = require('assert'); describe('NotationV0 Suite', function () { it('install notation', async function () { - this.timeout(5000); + this.timeout(10000); let tp = path.join(__dirname, 'L0Install.js'); let tr = new ttm.MockTestRunner(tp); @@ -14,7 +14,7 @@ describe('NotationV0 Suite', function () { }) it('notation sign', async function () { - this.timeout(5000); + this.timeout(3000); let tp = path.join(__dirname, 'L0Sign.js'); let tr = new ttm.MockTestRunner(tp); @@ -24,7 +24,7 @@ describe('NotationV0 Suite', function () { }) it('notation verify', async function () { - this.timeout(5000); + this.timeout(3000); let tp = path.join(__dirname, 'L0Verify.js'); let tr = new ttm.MockTestRunner(tp); diff --git a/Tasks/NotationV0/docs/sign-images-pipeline.md b/Tasks/NotationV0/docs/sign-images-pipeline.md new file mode 100644 index 000000000000..f3f9fba1fabe --- /dev/null +++ b/Tasks/NotationV0/docs/sign-images-pipeline.md @@ -0,0 +1,161 @@ +# Notation sign task for Azure DevOps pipeline + +This document walks you through how to create an Azure pipeline to achieve the following goals: + +1. Build a container image and push it to Azure Container Registry (ACR). +2. Install Notation CLI, sign the image with Notation and Notation AKV plugin. The generated signature will be automatically pushed to ACR. + +## Prerequisites + +- You have created a Key Vault in Azure Key Vault and created a self-signed signing key and certificate. You can follow this [doc](https://learn.microsoft.com/en-us/azure/container-registry/container-registry-tutorial-sign-build-push#create-a-self-signed-certificate-azure-cli) to create self-signed key and certificate for testing purposes. If you have a CA issued certificate, see this doc for details. +- You have created a registry in ACR. +- You have an Azure DevOps repository or GitHub repository. + +## Create Service Connection + +Signing an image stored in ACR registry requires the ACR credential. Use the [Docker task](https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/docker-v2?view=azure-pipelines&tabs=yaml#build-and-push) to log in to the ACR registry. + +Create a [Docker Registry service connection](https://learn.microsoft.com/azure/devops/pipelines/library/service-endpoints?view=azure-devops&tabs=yaml#docker-registry-service-connection) in Azure DevOps pipeline to grant the access permission to your ACR registry for the Notation tasks. + +- Sign in to your organization (`https://dev.azure.com/{yourorganization}`) and select your project. +- Select the **Settings** button in the bottom-left corner. +- Go to **Pipelines**, and then select **Service connection**. +- Choose **New service connection** and select **Docker Registry**. +- Next choose **Azure Container Registry**. +- Choose **Service Principle** in the **Authentication Type** and enter the Service Principal details including your Azure Subscription and ACR registry. +- Enter a user-friendly **Connection name** to use when referring to this service connection. + +Similarly, Create a service connection with the connection type of [Azure Resource Manager](https://learn.microsoft.com/azure/devops/pipelines/library/service-endpoints?view=azure-devops&tabs=yaml#azure-resource-manager-service-connection). This will grant the access to your Azure Key Vault: + +- Choose **Service principal (automatic)**. +- Next, choose **Subscription** and find your Azure subscription from the drop-down list. +- Choose an available Resource group from the drop-down list. +- Enter a user-friendly **Service connection name** to use when referring to this service connection. +- Save it to finish the creation. + +Grant the access policy to your service principal. + +- Open the created Azure Resource Manager service connection and click **Manage Service Principal** to enter the Azure service principal portal. +- Copy the `Application (client) ID`. It will be used to grant the permission for the service principal. +- Open the Azure Key Vault portal and enter **Access Policies** page. +- Create a new access policy with `key sign`, `secret get` and `certificate get` permission. +- Grant this new access policy to a service principle using the `Application (client) ID` paste from the previous step. +- Save it to finish the creation. + +See [this doc](https://learn.microsoft.com/en-us/azure/devops/pipelines/library/service-endpoints?view=azure-devops&tabs=yaml#create-a-service-connection) for more details. + +## Create a pipeline and use Notation task + +Create an Azure pipeline for your git repository as follows: + +- Navigate to the project in your AOD organization. +- Go to **Pipelines** from the left menu and then select **New pipeline**. +- Choose your git repository. We use the Azure DevOps repository for demonstration convenience. +- Configure the pipeline with a **Starter Pipeline** if you are new to Azure DevOps. Review and create the pipeline by clicking on **Save and run**. + +> [!NOTE] +> The example assumes that the default branch is `main`. If it's not, please follow the [guide](https://learn.microsoft.com/azure/devops/repos/git/change-default-branch?view=azure-devops#temporary-mirroring) to update the default branch. + +Edit the pipeline created in the previous step. There are two ways to use Notation tasks to sign images in your Azure pipeline: use the ADO panel to add Notation tasks to your pipeline or copy from the sample Azure Pipeline file from the option 2 below. + +### Option 1: Using editing panel + +Search the `Docker` task from the pipeline editing panel on the right side. We use its `login` command with the Docker Registry service connection to authenticate with ACR. + +- Choose the Docker Registry service connection created in the previous step from the **Container registry** drop-down list. Click **Add** to add the `notation install` task to the pipeline. +- Choose `login` from the **Command** drop-down list. +- Click **Add** to add the `notation sign` to the pipeline file left. + +Similarly, search the `Docker` task from the pipeline editing panel again. We use its `buildAndPush` command to automatically build the source code to an image and push it to the target ACR repository. It will generate an image digest that will be used for signing in the next step. + +- Input the repository name to **Container repository**. +- Choose **buildAndPush** from the the **Command** drop-down list. +- Specify the file path of Dockerfile. For example, use `./Dockerfile` if your Dockerfile is stored in the root folder. +- Click **Add** to add the `notation sign` to the pipeline file left. + +Search the `Notation` task from the pipeline editing panel on the right side. + +- Choose **Install** from the drop-down list **command to run**. Click **Add** to add the `notation install` task to the pipeline. +- Similarly, search the `Notation` task from the pipeline editing panel again and choose **Sign**. +- You can skip **Artifact references** since we sign an image using its latest digest that is built and pushed to the registry by a [Docker task](https://learn.microsoft.com/en-us/azure/devops/pipelines/tasks/reference/docker-v2?view=azure-pipelines&tabs=yaml). Instead, you can manually specify a digest using `/@`. +- Fill out the plugin configuration in the form. We will use the default AKV plugin and the service connection created in the previous step. Copy your Key ID from your AKV into the **Key ID**. +- Check the **Self-signed Certificate** box since we use a self-signed certificate for demonstration convenience. Instead, you can input your certificate file path in **Certificate Bundle File Path** if you want to use a CA issued certificate. +- Click **Add** to add the `notation sign` to the pipeline file left. + +### Option 2: Editing the pipeline file + +If you are familiar with Azure Pipeline and Notation, start with a template pipeline file will be efficient to use Notation tasks. + +Copy the same pipeline template below to your pipeline file. Then fill out the required values according to the references and comments below. + +
+ +See the signing task template of option 1 (Click here). + +```yaml +trigger: + - main +pool: + vmImage: 'ubuntu-latest' + +steps: +# log in to registry +- task: Docker@2 + inputs: + containerRegistry: + command: 'login' +# build and push artifact to registry +- task: Docker@2 + inputs: + repository: + command: 'buildAndPush' + Dockerfile: './Dockerfile' +# install notation +- task: Notation@0 + inputs: + command: 'install' + version: '1.0.0' +# automatically detect the artifact pushed by Docker task and sign the artifact. +- task: Notation@0 + inputs: + command: 'sign' + plugin: 'azureKeyVault' + akvPluginVersion: + azurekvServiceConection: + keyid: + selfSigned: true +``` + +
+ +> [!NOTE] +> Apart from using the Docker task, you can sign a specified image digest by manually specifying an artifact reference in `artifactRefs` as follows. + +
+ +See the example (Click here). + +```yaml +# sign the artifact +- task: Notation@0 + inputs: + artifactRefs: '/@' + command: 'sign' + plugin: 'azureKeyVault' + akvPluginVersion: + azurekvServiceConection: + keyid: + selfSigned: true +``` + +
+ +## Trigger the pipeline + +After filled out the inputs in the pipeline, you can save and run it to trigger the pipeline. + +Go to **Job** page of the running pipeline, you will be able to see the execution result in each step. This pipeline will build and sign the latest build or the specified digest, then will push the signed image with its associated signature to the registry. On success, you will be able to see the image pushed to your ACR with a COSE format signature attached. + +## Reference + +See [Inputs](README.md#inputs) for more details about the Notation Tasks configurations. \ No newline at end of file From 60ad93205a7a5e31d6a75306e2748fbc5725f2de Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Thu, 9 Nov 2023 09:01:08 +0800 Subject: [PATCH 25/32] fix: update codeowners Signed-off-by: Junjie Gao --- .github/CODEOWNERS | 2 +- Tasks/NotationV0/README.md | 2 +- Tasks/NotationV0/package-lock.json | 2 +- Tasks/NotationV0/package.json | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index ae7604f76919..53db3d11474e 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -315,7 +315,7 @@ Tasks/NodeTaskRunnerInstallerV0/ @microsoft/akvelon-build-task-team Tasks/NodeToolV0/ @microsoft/akvelon-build-task-team # DRI rotation: Azure Container Registry / Triage -Tasks/NotationV0/ @microsoft/azure-containerregistry-contributors +Tasks/NotationV0/ @Azure/azure-container-registry @JeyJeyGao @Two-Hearts @shizhMSFT Tasks/NpmV0/ @microsoft/azure-artifacts-packages diff --git a/Tasks/NotationV0/README.md b/Tasks/NotationV0/README.md index 5e8a6537373a..77c08b109a69 100644 --- a/Tasks/NotationV0/README.md +++ b/Tasks/NotationV0/README.md @@ -1,6 +1,6 @@ # Notation for Azure DevOps Task -Install Notation CLI, sign or verify container registry artifact. +Install Notation CLI, sign or verify container registry artifact. The Notation ADO task invokes Notation CLI to run the signing and verification operations. ## Usage - [Notation sign on ADO pipeline](./docs/sign-images-pipeline.md) diff --git a/Tasks/NotationV0/package-lock.json b/Tasks/NotationV0/package-lock.json index 728d75196a94..cd188ba46e63 100644 --- a/Tasks/NotationV0/package-lock.json +++ b/Tasks/NotationV0/package-lock.json @@ -1,6 +1,6 @@ { "name": "notation", - "version": "0.1.0", + "version": "0.231.0", "lockfileVersion": 1, "requires": true, "dependencies": { diff --git a/Tasks/NotationV0/package.json b/Tasks/NotationV0/package.json index 11b51888da41..e29b4c9e1d57 100644 --- a/Tasks/NotationV0/package.json +++ b/Tasks/NotationV0/package.json @@ -1,6 +1,6 @@ { "name": "notation", - "version": "0.1.0", + "version": "0.231.0", "description": "Azure Pipepine Task for setting up Notation CLI, sign and verify with Notation", "main": "src/index.js", "scripts": { From 6b340947e4f510b0f73d711620a5f07d7613aeb2 Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Thu, 9 Nov 2023 09:29:45 +0800 Subject: [PATCH 26/32] fix: update test Signed-off-by: Junjie Gao --- Tasks/NotationV0/Tests/L0Install.ts | 3 --- Tasks/NotationV0/Tests/L0Sign.ts | 2 -- Tasks/NotationV0/Tests/L0Verify.ts | 2 -- 3 files changed, 7 deletions(-) diff --git a/Tasks/NotationV0/Tests/L0Install.ts b/Tasks/NotationV0/Tests/L0Install.ts index d200ceb60ef0..d53d4ac2dbd1 100644 --- a/Tasks/NotationV0/Tests/L0Install.ts +++ b/Tasks/NotationV0/Tests/L0Install.ts @@ -38,14 +38,11 @@ tmr.registerMock('./crypto', { os.platform = () => { return 'linux' as NodeJS.Platform; } - os.arch = () => { return 'x64'; } - tmr.registerMock('os', os); - process.env['AGENT_TEMPDIRECTORY'] = '.'; tmr.setInput('command', 'install'); tmr.setInput('version', '1.0.0'); diff --git a/Tasks/NotationV0/Tests/L0Sign.ts b/Tasks/NotationV0/Tests/L0Sign.ts index 70a7d4b0f0a8..8fca9dfd2889 100644 --- a/Tasks/NotationV0/Tests/L0Sign.ts +++ b/Tasks/NotationV0/Tests/L0Sign.ts @@ -42,11 +42,9 @@ tmr.registerMock('./crypto', { os.platform = () => { return 'linux' as NodeJS.Platform; } - os.arch = () => { return 'x64'; } - tmr.registerMock('os', os); process.env['AGENT_TEMPDIRECTORY'] = '.'; diff --git a/Tasks/NotationV0/Tests/L0Verify.ts b/Tasks/NotationV0/Tests/L0Verify.ts index 27dbe9d12887..7cc7c05fc263 100644 --- a/Tasks/NotationV0/Tests/L0Verify.ts +++ b/Tasks/NotationV0/Tests/L0Verify.ts @@ -54,11 +54,9 @@ tmr.setInput('truststore', './truststore') os.platform = () => { return 'linux' as NodeJS.Platform; } - os.arch = () => { return 'x64'; } - tmr.registerMock('os', os); tmr.run(); From 8df36120b93b71bb3d948f45e508832a73679fa2 Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Thu, 9 Nov 2023 09:32:08 +0800 Subject: [PATCH 27/32] fix: sort import Signed-off-by: Junjie Gao --- Tasks/NotationV0/Tests/L0.ts | 2 +- Tasks/NotationV0/Tests/L0Install.ts | 2 +- Tasks/NotationV0/Tests/L0Sign.ts | 2 +- Tasks/NotationV0/Tests/L0Verify.ts | 2 +- Tasks/NotationV0/src/index.ts | 7 +++---- Tasks/NotationV0/src/install.ts | 4 ++-- Tasks/NotationV0/src/lib/credentials.ts | 2 +- Tasks/NotationV0/src/lib/fs.ts | 2 +- Tasks/NotationV0/src/lib/install.ts | 4 ++-- Tasks/NotationV0/src/lib/runner.ts | 2 +- Tasks/NotationV0/src/sign.ts | 10 +++++----- Tasks/NotationV0/src/verify.ts | 4 ++-- 12 files changed, 21 insertions(+), 22 deletions(-) diff --git a/Tasks/NotationV0/Tests/L0.ts b/Tasks/NotationV0/Tests/L0.ts index 2335a643ef77..2af726d6ce81 100644 --- a/Tasks/NotationV0/Tests/L0.ts +++ b/Tasks/NotationV0/Tests/L0.ts @@ -1,5 +1,5 @@ -import * as path from 'path'; import * as ttm from 'azure-pipelines-task-lib/mock-test'; +import * as path from 'path'; import assert = require('assert'); describe('NotationV0 Suite', function () { diff --git a/Tasks/NotationV0/Tests/L0Install.ts b/Tasks/NotationV0/Tests/L0Install.ts index d53d4ac2dbd1..16214b781003 100644 --- a/Tasks/NotationV0/Tests/L0Install.ts +++ b/Tasks/NotationV0/Tests/L0Install.ts @@ -1,5 +1,5 @@ -import * as path from 'path'; import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import * as path from 'path'; import os = require('os'); let taskPath = path.join(__dirname, '..', 'src', 'index.js'); diff --git a/Tasks/NotationV0/Tests/L0Sign.ts b/Tasks/NotationV0/Tests/L0Sign.ts index 8fca9dfd2889..7567da763f9a 100644 --- a/Tasks/NotationV0/Tests/L0Sign.ts +++ b/Tasks/NotationV0/Tests/L0Sign.ts @@ -1,5 +1,5 @@ -import * as path from 'path'; import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import * as path from 'path'; import os = require('os'); let taskPath = path.join(__dirname, '..', 'src', 'index.js'); diff --git a/Tasks/NotationV0/Tests/L0Verify.ts b/Tasks/NotationV0/Tests/L0Verify.ts index 7cc7c05fc263..f8536af088a9 100644 --- a/Tasks/NotationV0/Tests/L0Verify.ts +++ b/Tasks/NotationV0/Tests/L0Verify.ts @@ -1,5 +1,5 @@ -import * as path from 'path'; import * as tmrm from 'azure-pipelines-task-lib/mock-run'; +import * as path from 'path'; import os = require('os'); let taskPath = path.join(__dirname, '..', 'src', 'index.js'); diff --git a/Tasks/NotationV0/src/index.ts b/Tasks/NotationV0/src/index.ts index a21d9687baa9..e3e699628833 100644 --- a/Tasks/NotationV0/src/index.ts +++ b/Tasks/NotationV0/src/index.ts @@ -1,9 +1,8 @@ -import * as path from 'path'; import * as taskLib from 'azure-pipelines-task-lib/task'; -import { FAILED, STATUS, SUCCEEDED, WARNING } from './lib/constants'; -import { NOTATION_BINARY } from './lib/constants'; +import * as path from 'path'; import { install } from './install'; -import { sign } from './sign' +import { FAILED, NOTATION_BINARY, STATUS, SUCCEEDED, WARNING } from './lib/constants'; +import { sign } from './sign'; import { verify } from './verify'; taskLib.setResourcePath(path.join(__dirname, '..', 'task.json')); diff --git a/Tasks/NotationV0/src/install.ts b/Tasks/NotationV0/src/install.ts index 46336d33c2a3..c62224b49c58 100644 --- a/Tasks/NotationV0/src/install.ts +++ b/Tasks/NotationV0/src/install.ts @@ -1,7 +1,7 @@ -import * as path from 'path'; import * as taskLib from 'azure-pipelines-task-lib/task'; -import { getDownloadInfo, installFromURL } from './lib/install'; +import * as path from 'path'; import { NOTATION_VERSION_FILE } from './lib/constants'; +import { getDownloadInfo, installFromURL } from './lib/install'; export async function install(): Promise { // the notation download URL diff --git a/Tasks/NotationV0/src/lib/credentials.ts b/Tasks/NotationV0/src/lib/credentials.ts index 9320e66db433..75543b9c3f50 100644 --- a/Tasks/NotationV0/src/lib/credentials.ts +++ b/Tasks/NotationV0/src/lib/credentials.ts @@ -1,6 +1,6 @@ +import * as taskLib from 'azure-pipelines-task-lib/task'; import * as fs from 'fs'; import * as path from 'path'; -import * as taskLib from 'azure-pipelines-task-lib/task'; export async function getVaultCredentials(): Promise<{ [key: string]: string }> { let connectedService = taskLib.getInput("azurekvServiceConection", true); diff --git a/Tasks/NotationV0/src/lib/fs.ts b/Tasks/NotationV0/src/lib/fs.ts index 8db25ebc8982..c90945f5acf4 100644 --- a/Tasks/NotationV0/src/lib/fs.ts +++ b/Tasks/NotationV0/src/lib/fs.ts @@ -1,6 +1,6 @@ +import * as taskLib from 'azure-pipelines-task-lib/task'; import * as os from 'os'; import * as path from 'path'; -import * as taskLib from 'azure-pipelines-task-lib/task'; export function getConfigHome(): string { const platform = os.platform(); diff --git a/Tasks/NotationV0/src/lib/install.ts b/Tasks/NotationV0/src/lib/install.ts index 61f51fe08b2f..567f2d9b248f 100644 --- a/Tasks/NotationV0/src/lib/install.ts +++ b/Tasks/NotationV0/src/lib/install.ts @@ -1,8 +1,8 @@ +import * as taskLib from 'azure-pipelines-task-lib/task'; +import * as toolLib from 'azure-pipelines-tool-lib/tool'; import * as fs from 'fs'; import * as os from 'os'; import * as path from 'path'; -import * as taskLib from 'azure-pipelines-task-lib/task'; -import * as toolLib from 'azure-pipelines-tool-lib/tool'; import { computeChecksum } from './crypto'; export async function installFromURL(downloadURL: string, expectedChecksum: string, extractPath: string): Promise { diff --git a/Tasks/NotationV0/src/lib/runner.ts b/Tasks/NotationV0/src/lib/runner.ts index 0dbc7043f3f6..5e2aed5cc53b 100644 --- a/Tasks/NotationV0/src/lib/runner.ts +++ b/Tasks/NotationV0/src/lib/runner.ts @@ -1,6 +1,6 @@ -import { Writable } from 'stream'; import * as taskLib from 'azure-pipelines-task-lib/task'; import { IExecOptions, ToolRunner } from 'azure-pipelines-task-lib/toolrunner'; +import { Writable } from 'stream'; import { NOTATION, STATUS, WARNING } from './constants'; // notationRunner runs the notation command for each artifact. diff --git a/Tasks/NotationV0/src/sign.ts b/Tasks/NotationV0/src/sign.ts index 8da77453c891..69ee9dd29764 100644 --- a/Tasks/NotationV0/src/sign.ts +++ b/Tasks/NotationV0/src/sign.ts @@ -1,13 +1,13 @@ +import * as taskLib from 'azure-pipelines-task-lib/task'; +import { IExecOptions, ToolRunner } from 'azure-pipelines-task-lib/toolrunner'; import * as os from 'os'; import * as path from 'path'; -import * as taskLib from 'azure-pipelines-task-lib/task'; import { AZURE_KV_PLUGIN_VERSION_FILE, NOTATION, NOTATION_BINARY, PLUGINS } from './lib/constants'; -import { IExecOptions, ToolRunner } from 'azure-pipelines-task-lib/toolrunner'; -import { getDownloadInfo, installFromURL } from './lib/install'; -import { getArtifactReferences } from './lib/variables'; -import { getConfigHome } from './lib/fs'; import { getVaultCredentials } from './lib/credentials'; +import { getConfigHome } from './lib/fs'; +import { getDownloadInfo, installFromURL } from './lib/install'; import { notationRunner } from './lib/runner'; +import { getArtifactReferences } from './lib/variables'; export async function sign(): Promise { const artifactRefs = getArtifactReferences(); diff --git a/Tasks/NotationV0/src/verify.ts b/Tasks/NotationV0/src/verify.ts index 132e8428eca0..f9b8d09c315d 100644 --- a/Tasks/NotationV0/src/verify.ts +++ b/Tasks/NotationV0/src/verify.ts @@ -1,10 +1,10 @@ -import * as path from 'path'; import * as taskLib from 'azure-pipelines-task-lib/task'; import { IExecOptions, ToolRunner } from 'azure-pipelines-task-lib/toolrunner'; +import * as path from 'path'; import { NOTATION, NOTATION_BINARY, TRUST_STORE, X509 } from './lib/constants'; -import { getArtifactReferences } from './lib/variables'; import { getConfigHome } from './lib/fs'; import { notationRunner } from './lib/runner'; +import { getArtifactReferences } from './lib/variables'; export async function verify(): Promise { const artifactRefs = getArtifactReferences(); From 97e9ab6071d61e1cd8b5c3598d6b5ef227b1e8dd Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Thu, 9 Nov 2023 11:54:06 +0800 Subject: [PATCH 28/32] doc: update readme Signed-off-by: Junjie Gao --- Tasks/NotationV0/README.md | 20 ++++++++++++++++++-- 1 file changed, 18 insertions(+), 2 deletions(-) diff --git a/Tasks/NotationV0/README.md b/Tasks/NotationV0/README.md index 77c08b109a69..6da57e5e067f 100644 --- a/Tasks/NotationV0/README.md +++ b/Tasks/NotationV0/README.md @@ -1,8 +1,24 @@ # Notation for Azure DevOps Task -Install Notation CLI, sign or verify container registry artifact. The Notation ADO task invokes Notation CLI to run the signing and verification operations. +Install Notation CLI, sign or verify container registry artifact. -## Usage +# Technical Design +The Notation ADO task calls upon the Notation CLI to execute signing and verification operations. Notation CLI is a tool used to sign and verify Docker container artifacts or images. When signing an artifact, Notation signs the artifact's unique manifest descriptor and attaches the signature to the same repository. When verifying an artifact, Notation retrieves the signature from the repository and validates it against the certificate in the trust store. + +## notation install command +The command detects the current operating system and architecture to download the corresponding Notation CLI from GitHub releases. It also verifies the checksum of the downloaded file against the golden file in the `./data` folder and adds Notation to the PATH. + +## notation sign command +This command downloads the selected Notation plugin, validates its checksum, and then calls on the Notation CLI to sign. + +## notation verfy command +It transfers the trust store and trust policy from the user's code repository to the Notation configuration folder, as required by Notation CLI. It then invokes the Notation CLI to perform verification. + +## Requirements +- public network access for downloading Notation CLI and Notation Azure Key Vault plugin from Github releases. +- Supported OS: Linux x64/ARM64, Windows x64, macOS x64/ARM64 + +# User Documents - [Notation sign on ADO pipeline](./docs/sign-images-pipeline.md) ## Inputs From 611900416e4a31fb1a6d8ccb92a324c02c0a2a7f Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Tue, 21 Nov 2023 21:37:35 +0800 Subject: [PATCH 29/32] fix: update Node20 to be Node20_1 Signed-off-by: Junjie Gao --- Tasks/NotationV0/task.json | 2 +- Tasks/NotationV0/task.loc.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/Tasks/NotationV0/task.json b/Tasks/NotationV0/task.json index 4d49840e19f5..b837363e75bf 100644 --- a/Tasks/NotationV0/task.json +++ b/Tasks/NotationV0/task.json @@ -207,7 +207,7 @@ "target": "src/index.js", "argumentFormat": "" }, - "Node20": { + "Node20_1": { "target": "src/index.js", "argumentFormat": "" } diff --git a/Tasks/NotationV0/task.loc.json b/Tasks/NotationV0/task.loc.json index 3d4c11b2f7e1..e07216b66707 100644 --- a/Tasks/NotationV0/task.loc.json +++ b/Tasks/NotationV0/task.loc.json @@ -207,7 +207,7 @@ "target": "src/index.js", "argumentFormat": "" }, - "Node20": { + "Node20_1": { "target": "src/index.js", "argumentFormat": "" } From 79d4f5d47a141f4deec2690b20fffa45da309348 Mon Sep 17 00:00:00 2001 From: "Dmitrii Bobreshev (Akvelon INC)" Date: Tue, 21 Nov 2023 15:24:22 +0100 Subject: [PATCH 30/32] Updated typescript and @types/node, since task are using node20 --- Tasks/NotationV0/package-lock.json | 20 ++++++++++++++------ Tasks/NotationV0/package.json | 4 ++-- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/Tasks/NotationV0/package-lock.json b/Tasks/NotationV0/package-lock.json index cd188ba46e63..2e0a1840ff66 100644 --- a/Tasks/NotationV0/package-lock.json +++ b/Tasks/NotationV0/package-lock.json @@ -10,9 +10,12 @@ "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==" }, "@types/node": { - "version": "16.18.61", - "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.61.tgz", - "integrity": "sha512-k0N7BqGhJoJzdh6MuQg1V1ragJiXTh8VUBAZTWjJ9cUq23SG0F0xavOwZbhiP4J3y20xd6jxKx+xNUhkMAi76Q==" + "version": "20.9.3", + "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.3.tgz", + "integrity": "sha512-nk5wXLAXGBKfrhLB0cyHGbSqopS+nz0BUgZkUQqSHSSgdee0kssp1IAqlQOu333bW+gMNs2QREx7iynm19Abxw==", + "requires": { + "undici-types": "~5.26.4" + } }, "@types/semver": { "version": "5.5.0", @@ -436,9 +439,9 @@ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" }, "typescript": { - "version": "4.0.2", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz", - "integrity": "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==", + "version": "5.1.6", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", + "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", "dev": true }, "underscore": { @@ -446,6 +449,11 @@ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" }, + "undici-types": { + "version": "5.26.5", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", + "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" + }, "utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", diff --git a/Tasks/NotationV0/package.json b/Tasks/NotationV0/package.json index e29b4c9e1d57..d9a94cfdadf1 100644 --- a/Tasks/NotationV0/package.json +++ b/Tasks/NotationV0/package.json @@ -10,12 +10,12 @@ "author": "", "license": "MIT", "dependencies": { - "@types/node": "^16.11.39", + "@types/node": "^20.3.1", "@types/mocha": "^5.2.7", "azure-pipelines-task-lib": "4.6.1", "azure-pipelines-tool-lib": "2.0.7" }, "devDependencies": { - "typescript": "4.0.2" + "typescript": "5.1.6" } } From fdfd0688c4d3d5fb8721310707b575de9b4191d8 Mon Sep 17 00:00:00 2001 From: "Dmitrii Bobreshev (Akvelon INC)" Date: Tue, 21 Nov 2023 15:46:33 +0100 Subject: [PATCH 31/32] Revert "Updated typescript and @types/node, since task are using node20" This reverts commit 79d4f5d47a141f4deec2690b20fffa45da309348. --- Tasks/NotationV0/package-lock.json | 20 ++++++-------------- Tasks/NotationV0/package.json | 4 ++-- 2 files changed, 8 insertions(+), 16 deletions(-) diff --git a/Tasks/NotationV0/package-lock.json b/Tasks/NotationV0/package-lock.json index 2e0a1840ff66..cd188ba46e63 100644 --- a/Tasks/NotationV0/package-lock.json +++ b/Tasks/NotationV0/package-lock.json @@ -10,12 +10,9 @@ "integrity": "sha512-NYrtPht0wGzhwe9+/idPaBB+TqkY9AhTvOLMkThm0IoEfLaiVQZwBwyJ5puCkO3AUCWrmcoePjp2mbFocKy4SQ==" }, "@types/node": { - "version": "20.9.3", - "resolved": "https://registry.npmjs.org/@types/node/-/node-20.9.3.tgz", - "integrity": "sha512-nk5wXLAXGBKfrhLB0cyHGbSqopS+nz0BUgZkUQqSHSSgdee0kssp1IAqlQOu333bW+gMNs2QREx7iynm19Abxw==", - "requires": { - "undici-types": "~5.26.4" - } + "version": "16.18.61", + "resolved": "https://registry.npmjs.org/@types/node/-/node-16.18.61.tgz", + "integrity": "sha512-k0N7BqGhJoJzdh6MuQg1V1ragJiXTh8VUBAZTWjJ9cUq23SG0F0xavOwZbhiP4J3y20xd6jxKx+xNUhkMAi76Q==" }, "@types/semver": { "version": "5.5.0", @@ -439,9 +436,9 @@ "integrity": "sha512-1h/Lnq9yajKY2PEbBadPXj3VxsDDu844OnaAo52UVmIzIvwwtBPIuNvkjuzBlTWpfJyUbG3ez0KSBibQkj4ojg==" }, "typescript": { - "version": "5.1.6", - "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.1.6.tgz", - "integrity": "sha512-zaWCozRZ6DLEWAWFrVDz1H6FVXzUSfTy5FUMWsQlU8Ym5JP9eO4xkTIROFCQvhQf61z6O/G6ugw3SgAnvvm+HA==", + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.0.2.tgz", + "integrity": "sha512-e4ERvRV2wb+rRZ/IQeb3jm2VxBsirQLpQhdxplZ2MEzGvDkkMmPglecnNDfSUBivMjP93vRbngYYDQqQ/78bcQ==", "dev": true }, "underscore": { @@ -449,11 +446,6 @@ "resolved": "https://registry.npmjs.org/underscore/-/underscore-1.13.6.tgz", "integrity": "sha512-+A5Sja4HP1M08MaXya7p5LvjuM7K6q/2EaC0+iovj/wOcMsTzMvDFbasi/oSapiwOlt252IqsKqPjCl7huKS0A==" }, - "undici-types": { - "version": "5.26.5", - "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-5.26.5.tgz", - "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==" - }, "utf8-byte-length": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/utf8-byte-length/-/utf8-byte-length-1.0.4.tgz", diff --git a/Tasks/NotationV0/package.json b/Tasks/NotationV0/package.json index d9a94cfdadf1..e29b4c9e1d57 100644 --- a/Tasks/NotationV0/package.json +++ b/Tasks/NotationV0/package.json @@ -10,12 +10,12 @@ "author": "", "license": "MIT", "dependencies": { - "@types/node": "^20.3.1", + "@types/node": "^16.11.39", "@types/mocha": "^5.2.7", "azure-pipelines-task-lib": "4.6.1", "azure-pipelines-tool-lib": "2.0.7" }, "devDependencies": { - "typescript": "5.1.6" + "typescript": "4.0.2" } } From a724979b4ad332c3cebc63edcb9df2e14977547b Mon Sep 17 00:00:00 2001 From: Junjie Gao Date: Wed, 22 Nov 2023 10:27:07 +0800 Subject: [PATCH 32/32] fix: update test timeout Signed-off-by: Junjie Gao --- Tasks/NotationV0/Tests/L0.ts | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Tasks/NotationV0/Tests/L0.ts b/Tasks/NotationV0/Tests/L0.ts index 2af726d6ce81..1fe4f20b124a 100644 --- a/Tasks/NotationV0/Tests/L0.ts +++ b/Tasks/NotationV0/Tests/L0.ts @@ -14,7 +14,7 @@ describe('NotationV0 Suite', function () { }) it('notation sign', async function () { - this.timeout(3000); + this.timeout(10000); let tp = path.join(__dirname, 'L0Sign.js'); let tr = new ttm.MockTestRunner(tp); @@ -24,7 +24,7 @@ describe('NotationV0 Suite', function () { }) it('notation verify', async function () { - this.timeout(3000); + this.timeout(10000); let tp = path.join(__dirname, 'L0Verify.js'); let tr = new ttm.MockTestRunner(tp);