diff --git a/Extensions/Ansible/Src/Images/AnisbleTower.png b/Extensions/Ansible/Src/Images/AnisbleTower.png deleted file mode 100644 index 3460ee341..000000000 Binary files a/Extensions/Ansible/Src/Images/AnisbleTower.png and /dev/null differ diff --git a/Extensions/Ansible/Src/Images/AnsibleCLI.png b/Extensions/Ansible/Src/Images/AnsibleCLI.png deleted file mode 100644 index 17ef9b4d9..000000000 Binary files a/Extensions/Ansible/Src/Images/AnsibleCLI.png and /dev/null differ diff --git a/Extensions/Ansible/Src/Images/ServiceEndpoint.png b/Extensions/Ansible/Src/Images/ServiceEndpoint.png deleted file mode 100644 index 6fed958c6..000000000 Binary files a/Extensions/Ansible/Src/Images/ServiceEndpoint.png and /dev/null differ diff --git a/Extensions/Ansible/Src/Images/icon.png b/Extensions/Ansible/Src/Images/icon.png deleted file mode 100644 index 95e277d85..000000000 Binary files a/Extensions/Ansible/Src/Images/icon.png and /dev/null differ diff --git a/Extensions/Ansible/Src/Tasks/Ansible/ansibleCommandLineInterface.ts b/Extensions/Ansible/Src/Tasks/Ansible/ansibleCommandLineInterface.ts index 89d4e6d82..05e923619 100644 --- a/Extensions/Ansible/Src/Tasks/Ansible/ansibleCommandLineInterface.ts +++ b/Extensions/Ansible/Src/Tasks/Ansible/ansibleCommandLineInterface.ts @@ -4,7 +4,6 @@ import * as ansibleUtils from './ansibleUtils'; import { RemoteCommandOptions } from './ansibleUtils' import { ansibleTaskParameters } from './ansibleTaskParameters'; -var uuid = require('uuid/v4'); //randomly generated uid var os = require('os'); var shell = require('shelljs'); @@ -131,7 +130,7 @@ export class ansibleCommandLineInterface extends ansibleInterface { return new Promise(async (resolve, reject) => { try { - let remoteInventory = '/tmp/' + uuid() + 'inventory.ini'; + let remoteInventory = ansibleUtils.getTemporaryInventoryFilePath(); let remoteInventoryPath = '"' + remoteInventory + '"'; tl.debug('RemoteInventoryPath = ' + remoteInventoryPath); diff --git a/Extensions/Ansible/Src/Tasks/Ansible/ansibleUtils.ts b/Extensions/Ansible/Src/Tasks/Ansible/ansibleUtils.ts index ec329f778..06d876a4a 100644 --- a/Extensions/Ansible/Src/Tasks/Ansible/ansibleUtils.ts +++ b/Extensions/Ansible/Src/Tasks/Ansible/ansibleUtils.ts @@ -2,6 +2,8 @@ import tl = require("vsts-task-lib/task"); import Q = require("q"); import util = require("util"); import querystring = require('querystring'); + +var uuid = require('uuid/v4'); var httpClient = require('vso-node-api/HttpClient'); var httpObj = new httpClient.HttpCallbackClient(tl.getVariable("AZURE_HTTP_USER_AGENT")); @@ -195,6 +197,10 @@ function beginRequestInternal(request: WebRequest): Promise { }); } +export function getTemporaryInventoryFilePath(): string { + return '/tmp/' + uuid() + 'inventory.ini'; +} + function toWebResponse(response, body): WebResponse { var res = new WebResponse(); diff --git a/Extensions/Ansible/Src/Tasks/Ansible/task.json b/Extensions/Ansible/Src/Tasks/Ansible/task.json index fea3732d3..6b2406c7e 100644 --- a/Extensions/Ansible/Src/Tasks/Ansible/task.json +++ b/Extensions/Ansible/Src/Tasks/Ansible/task.json @@ -10,13 +10,14 @@ "Release" ], "runsOn": [ - "Agent" + "Agent", + "DeploymentGroup" ], "author": "Microsoft Corporation", "version": { "Major": 0, "Minor": 0, - "Patch": 4 + "Patch": 5 }, "demands": [], "instanceNameFormat": "Run playbook", @@ -203,7 +204,7 @@ "helpMarkDown": "Specify [inventory](http://docs.ansible.com/ansible/latest/intro_inventory.html) inline", "visibleRule": "inventoriesRemoteMachine = inlineContent", "groupName": "inventoryRemoteMachine" - }, + }, { "name": "inventoriesAgentMachine", "type": "pickList", @@ -258,7 +259,7 @@ "helpMarkDown": "Specify [inventory](http://docs.ansible.com/ansible/latest/intro_inventory.html) inline", "visibleRule": "inventoriesAgentMachine = inlineContent", "groupName": "inventoryAgentMachine" - }, + }, { "name": "sudoEnabled", "type": "boolean", @@ -267,7 +268,7 @@ "required": false, "helpMarkDown": "Run operations with sudo. It works only when the Ansible user is sudoer with nopasswd option.", "groupName": "advanced" - }, + }, { "name": "sudoUser", "type": "string", @@ -277,7 +278,7 @@ "helpMarkDown": "Desired sudo user. \"root\" is used when this field is empty.", "visibleRule": "sudoEnabled = true", "groupName": "advanced" - }, + }, { "name": "args", "type": "multiLine", diff --git a/Extensions/Ansible/Src/readme.md b/Extensions/Ansible/Src/readme.md index 0b8090509..38a397f78 100644 --- a/Extensions/Ansible/Src/readme.md +++ b/Extensions/Ansible/Src/readme.md @@ -1,65 +1,70 @@ -# **Ansible extension** +# Ansible extension This extension includes a build/release task to integrate with [Ansible](http://docs.ansible.com/ansible/latest/index.html). The task executes a given Ansible playbook on a specified list of inventory nodes via command line interface. -Ansible is an open-source IT automation engine that can configure systems, deploy software and orchestrate application deployments. -Ansible uses [Playbooks](http://docs.ansible.com/ansible/latest/playbooks.html) which express configurations, deployment, and orchestration steps in YAML format. Each Playbook maps a group of hosts to a set of roles. Each role is represented by calls to Ansible tasks. -[Inventory](http://docs.ansible.com/ansible/latest/intro_inventory.html) file is a description of the nodes that can be accessed by Ansible. +Ansible is an open-source IT automation engine that can configure systems, deploy software and orchestrate application deployments. +Ansible uses [Playbooks](http://docs.ansible.com/ansible/latest/playbooks.html) which express configurations, deployment, and orchestration steps in YAML format. Each Playbook maps a group of hosts to a set of roles. Each role is represented by calls to Ansible tasks. +[Inventory](http://docs.ansible.com/ansible/latest/intro_inventory.html) file is a description of the nodes that can be accessed by Ansible. This task requires that the Playbook and Inventory files be located either on a private Linux agent or on a remote machine where Ansible automation engine has been installed. Additionally Inventory can also be specified inline or as a Host list. -## **Prerequisites** +## Prerequisites + +### Install Ansible automation engine -### **Install Ansible automation engine** Follow the [installation guidance](http://docs.ansible.com/ansible/latest/intro_installation.html) to install Ansible on a private Linux agent or on a remote machine. Currently Ansible can be run from any machine with Python 2.6 or 2.7 installed (Windows isn’t supported for the control machine). - -### **Create an SSH endpoint** + +### Create an SSH endpoint + If Ansible is installed on a remote machine, you would need to set up an [SSH endpoint](https://www.visualstudio.com/en-us/docs/build/concepts/library/service-endpoints#sep-ssh) in the administration section of your VSTS project. - - - The hostname or IP address of the remote machine, the port number, and the user name are required - - The private key and the passphrase must be specified for authentication. - - A password can be used to authenticate to remote Linux machines, but this is not supported for Mac or OSX systems. + +- The hostname or IP address of the remote machine, the port number, and the user name are required +- The private key and the passphrase must be specified for authentication. +- A password can be used to authenticate to remote Linux machines, but this is not supported for Mac or OSX systems. - The public key must be pre-installed or copied to the remote machine. - - ![Ansible SSH Endpoint](Images/ansible_endpoint.png) - -## **Task** + +![Ansible SSH Endpoint](Images/ansible_endpoint.png) + +## Task + Installing the extension adds the following Ansible task which runs a given Playbook: When Ansible automation engine is located on an Agent machine: - ![Run Ansible Playbook](Images/ansible_screen_1.png) +![Run Ansible Playbook](Images/ansible_screen_1.png) + +When Ansible automation engine is located on a remote machine: + +![Run Ansible Playbook](Images/ansible_screen_2.png) + +## Task arguments + +* **Ansible location**: Location where Ansible automation engine is installed. Can be either a private agent machine or a remote machine. Ansible communicates with remote machines over SSH and would require the SSH endpoint details. -When Ansible automation engine is located on a remote machine: - ![Run Ansible Playbook](Images/ansible_screen_2.png) +* **SSH endpoint**\*: Name of the SSH service endpoint containing connection details for the remote machine where Ansible automation engine has been installed. - ## **Task arguments** - - * **Ansible location**: Location where Ansible automation engine is installed. Can be either a private agent machine or a remote machine. Ansible communicates with remote machines over SSH and would require the SSH endpoint details. - - * **SSH endpoint**\*: Name of the SSH service endpoint containing connection details for the remote machine where Ansible automation engine has been installed. +* **Playbook Source**: Choose agent machine if playbook is part of a linked artifact and should be copied to the remote Ansible machine. Otherwise, select Ansible machine. - * **Playbook Source**: Choose agent machine if playbook is part of a linked artifact and should be copied to the remote Ansible machine. Otherwise, select Ansible machine. +* **Playbook root**\*: Specify the working directory path where playbook and associated files are located on the agent machine. All the files in this folder will be copied to Ansible machine. - * **Playbook root**\*: Specify the working directory path where playbook and associated files are located on the agent machine. All the files in this folder will be copied to Ansible machine. +* **Playbook file path**\*: Specify the path to the playbook file to be executed on the Ansible machine. [Playbooks](http://docs.ansible.com/ansible/latest/playbooks.html) declare Ansible’s configuration, deployment, and orchestration steps in YAML format. - * **Playbook file path**\*: Specify the path to the playbook file to be executed on the Ansible machine. [Playbooks](http://docs.ansible.com/ansible/latest/playbooks.html) declare Ansible’s configuration, deployment, and orchestration steps in YAML format. +* **Inventory location**: By default, Ansible Inventory is described by a configuration file, in INI format, whose default location is in /etc/ansible/hosts. Inventory can also be specified as a separate configuration file which lists either the IP address or hostname of each node that is accessible by Ansible. Or can be specified as a Host list of comma separated hosts. Example - foo.example.com, bar.example.com. - * **Inventory location**: By default, Ansible Inventory is described by a configuration file, in INI format, whose default location is in /etc/ansible/hosts. Inventory can also be specified as a separate configuration file which lists either the IP address or hostname of each node that is accessible by Ansible. Or can be specified as a Host list of comma separated hosts. Example - foo.example.com, bar.example.com. Alternatively Inventory can be specified inline. - * **Inventory file path**\*: Specify the path to [inventory](http://docs.ansible.com/ansible/latest/intro_inventory.html) host file on Ansible/Agent machine +* **Inventory file path**\*: Specify the path to [inventory](http://docs.ansible.com/ansible/latest/intro_inventory.html) host file on Ansible/Agent machine - * **Dynamic Inventory**: Ansible can also use a custom Dynamic Inventory script, which can dynamically pull data from a different system. Check this box if [dynamic inventory](http://docs.ansible.com/ansible/latest/intro_dynamic_inventory.html) is used. +* **Dynamic Inventory**: Ansible can also use a custom Dynamic Inventory script, which can dynamically pull data from a different system. Check this box if [dynamic inventory](http://docs.ansible.com/ansible/latest/intro_dynamic_inventory.html) is used. - * **Advanced - Sudo**: Run operations with sudo. It works only when the Ansible user is sudoer with nopasswd option. +* **Advanced - Sudo**: Run operations with sudo. It works only when the Ansible user is sudoer with nopasswd option. This also requires desired sudo user name. \"root\" is used when this field is empty. - * **Additional arguments**: The arguments to pass to Ansible command line. Refer to documentation on Ansible [Commands Modules](http://docs.ansible.com/ansible/latest/list_of_commands_modules.html) and [Ad-Hoc Commands](http://docs.ansible.com/ansible/latest/intro_adhoc.html) +* **Additional arguments**: The arguments to pass to Ansible command line. Refer to documentation on Ansible [Commands Modules](http://docs.ansible.com/ansible/latest/list_of_commands_modules.html) and [Ad-Hoc Commands](http://docs.ansible.com/ansible/latest/intro_adhoc.html) - * **Advanced - Fail on STDERR**: If this option is selected (the default), the build will fail if the remote commands or script write to STDERR. +* **Advanced - Fail on STDERR**: If this option is selected (the default), the build will fail if the remote commands or script write to STDERR. - * **Control options**: See [Control options](https://www.visualstudio.com/en-us/docs/build/concepts/process/tasks#controloptions) +* **Control options**: See [Control options](https://www.visualstudio.com/en-us/docs/build/concepts/process/tasks#controloptions) -### **Contact Information** +### Contact Information -For further information or to resolve issues, contact [Developer Community Forum](https://developercommunity.visualstudio.com/spaces/21/index.html). \ No newline at end of file +For further information or to resolve issues, contact [Developer Community Forum](https://developercommunity.visualstudio.com/spaces/21/index.html). diff --git a/Extensions/Ansible/Src/vss-extension.json b/Extensions/Ansible/Src/vss-extension.json index 9b2e69d42..15e1985e1 100644 --- a/Extensions/Ansible/Src/vss-extension.json +++ b/Extensions/Ansible/Src/vss-extension.json @@ -3,12 +3,12 @@ "id": "vss-services-ansible", "name": "Ansible", "publisher": "ms-vscs-rm", - "version": "0.0.5", + "version": "0.0.6", "public": true, "description": "This extension executes an Ansible playbook using a specified inventory via command line interface", "_description.comment": "The below format to define extensions is currently in preview and may change in future.", "categories": [ - "Build and release" + "Azure Pipelines" ], "Tags": [ "Ansible", diff --git a/Extensions/Ansible/Tests/Tasks/Ansible/_suite.ts b/Extensions/Ansible/Tests/Tasks/Ansible/_suite.ts index 2d98fe0bd..10d0d7ec8 100644 --- a/Extensions/Ansible/Tests/Tasks/Ansible/_suite.ts +++ b/Extensions/Ansible/Tests/Tasks/Ansible/_suite.ts @@ -1,5 +1,6 @@ import assert = require('assert'); import path = require('path'); +import {TestGuid} from './mockAnsibleUtils'; var mocktest = require('vsts-task-lib/mock-test'); @@ -73,28 +74,28 @@ describe('Ansible Suite', function () { } }); - // it('should run when inventory is inline content for remote machine', (done: MochaDone) => { - // this.timeout(1000); - // let testPath = path.join(__dirname, 'testInventoryToBeInlineForRemoteMachine'); - // let runner = new mocktest.MockTestRunner(testPath); - // runner.run(); - - // try { - // assert(runner.succeeded, "Should have succeeded"); - // assert(runner.stdOutContained('cmd run on remote machine = echo "DUMMY_IP_ADDRESS" > /tmp/inventory.ini'), 'should able to copy the inline content to inventory.ini file on remote machine'); - // assert(runner.stdOutContained('cmd run on remote machine = chmod +x /tmp/inventory.ini'), 'should able to make the inventory.ini file as executable for dynamic inventory'); - // assert(runner.stdOutContained('cmd run on remote machine = ansible-playbook -i /tmp/inventory.ini /path/to/ansiblePlaybookRoot/ansiblePlaybook.yml'), 'should able to run playbook on remote machine'); - // assert(runner.stdOutContained('connection to dummy client established'), 'should able connect to client'); - // assert(runner.stdOutContained('connection to dummy client terminated'), 'should able disconnect to client'); - // assert(runner.stdOutContained('cmd run on remote machine = rm -f /tmp/inventory.ini', 'should clean all the temporary inventory file on remote machine')); - // done(); - // } - // catch (error) { - // console.log("STDERR", runner.stderr); - // console.log("STDOUT", runner.stdout); - // done(error); - // } - // }); + it('should run when inventory is inline content for remote machine', (done: MochaDone) => { + this.timeout(1000); + let testPath = path.join(__dirname, 'testInventoryToBeInlineForRemoteMachine'); + let runner = new mocktest.MockTestRunner(testPath); + runner.run(); + + try { + assert(runner.succeeded, "Should have succeeded"); + assert(runner.stdOutContained(`cmd run on remote machine = echo "DUMMY_IP_ADDRESS" > /tmp/${TestGuid}inventory.ini`), 'should able to copy the inline content to inventory.ini file on remote machine'); + assert(runner.stdOutContained(`cmd run on remote machine = chmod +x /tmp/${TestGuid}inventory.ini`), 'should able to make the inventory.ini file as executable for dynamic inventory'); + assert(runner.stdOutContained(`cmd run on remote machine = ansible-playbook -i /tmp/${TestGuid}inventory.ini /path/to/ansiblePlaybookRoot/ansiblePlaybook.yml`), 'should able to run playbook on remote machine'); + assert(runner.stdOutContained('connection to dummy client established'), 'should able connect to client'); + assert(runner.stdOutContained('connection to dummy client terminated'), 'should able disconnect to client'); + assert(runner.stdOutContained(`cmd run on remote machine = rm -f /tmp/${TestGuid}inventory.ini`, 'should clean all the temporary inventory file on remote machine')); + done(); + } + catch (error) { + console.log("STDERR", runner.stderr); + console.log("STDOUT", runner.stdout); + done(error); + } + }); it('should run when sudo and additional parameters is present for remote machine', (done: MochaDone) => { this.timeout(1000); @@ -171,24 +172,24 @@ describe('Ansible Suite', function () { } }); - // it('should run when inventory is inline content for agent machine', (done: MochaDone) => { - // this.timeout(1000); - // let testPath = path.join(__dirname, 'testInventoryToBeInlineForAgentMachine'); - // let runner = new mocktest.MockTestRunner(testPath); - // runner.run(); - - // try { - // assert(runner.succeeded, "Should have succeeded"); - // assert(runner.stdOutContained('cmd run on agent machine = echo "DUMMY_IP_ADDRESS" > /tmp/inventory.ini'), 'should able to copy the inline content to inventory.ini file on remote machine'); - // assert(runner.stdOutContained('cmd run on agent machine = chmod +x /tmp/inventory.ini'), 'should able to make the inventory.ini file as executable for dynamic inventory'); - // assert(runner.stdOutContained('cmd run on agent machine = ansible-playbook -i /tmp/inventory.ini /path/to/ansiblePlaybookRoot/ansiblePlaybook.yml'), 'should able to run playbook on remote machine'); - // assert(runner.stdOutContained('cmd run on agent machine = rm -f /tmp/inventory.ini', 'should clean all the temporary inventory file on remote machine')); - // done(); - // } - // catch (error) { - // console.log("STDERR", runner.stderr); - // console.log("STDOUT", runner.stdout); - // done(error); - // } - // }); + it('should run when inventory is inline content for agent machine', (done: MochaDone) => { + this.timeout(1000); + let testPath = path.join(__dirname, 'testInventoryToBeInlineForAgentMachine'); + let runner = new mocktest.MockTestRunner(testPath); + runner.run(); + + try { + assert(runner.succeeded, "Should have succeeded"); + assert(runner.stdOutContained(`cmd run on agent machine = echo "DUMMY_IP_ADDRESS" > /tmp/${TestGuid}inventory.ini`), 'should able to copy the inline content to inventory.ini file on remote machine'); + assert(runner.stdOutContained(`cmd run on agent machine = chmod +x /tmp/${TestGuid}inventory.ini`), 'should able to make the inventory.ini file as executable for dynamic inventory'); + assert(runner.stdOutContained(`cmd run on agent machine = ansible-playbook -i /tmp/${TestGuid}inventory.ini /path/to/ansiblePlaybookRoot/ansiblePlaybook.yml`), 'should able to run playbook on remote machine'); + assert(runner.stdOutContained(`cmd run on agent machine = rm -f /tmp/${TestGuid}inventory.ini`, 'should clean all the temporary inventory file on remote machine')); + done(); + } + catch (error) { + console.log("STDERR", runner.stderr); + console.log("STDOUT", runner.stdout); + done(error); + } + }); }); \ No newline at end of file diff --git a/Extensions/Ansible/Tests/Tasks/Ansible/mockAnsibleUtils.ts b/Extensions/Ansible/Tests/Tasks/Ansible/mockAnsibleUtils.ts index 0dd8644d4..576411390 100644 --- a/Extensions/Ansible/Tests/Tasks/Ansible/mockAnsibleUtils.ts +++ b/Extensions/Ansible/Tests/Tasks/Ansible/mockAnsibleUtils.ts @@ -1,5 +1,7 @@ import Q = require("q"); +export const TestGuid: string = "7d9b7f32-41e5-43ed-8b0e-c6f2874836f8"; + export function _writeLine(str) { console.log(str); } @@ -151,4 +153,8 @@ export function beginRequest(request) { res.body = JSON.parse(body); return res; } +} + +export function getTemporaryInventoryFilePath(): string { + return '/tmp/' + TestGuid + 'inventory.ini'; } \ No newline at end of file diff --git a/Extensions/ArtifactEngine/.nyc_output/cd19e711c15902ea1b399b7e15047d4f.json b/Extensions/ArtifactEngine/.nyc_output/cd19e711c15902ea1b399b7e15047d4f.json deleted file mode 100644 index e548cfb6e..000000000 --- a/Extensions/ArtifactEngine/.nyc_output/cd19e711c15902ea1b399b7e15047d4f.json +++ /dev/null @@ -1 +0,0 @@ -{"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\EngineTests\\artifactEngineTests.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\EngineTests\\artifactEngineTests.js","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":8,"column":7}},"2":{"start":{"line":4,"column":36},"end":{"line":4,"column":97}},"3":{"start":{"line":4,"column":42},"end":{"line":4,"column":70}},"4":{"start":{"line":4,"column":85},"end":{"line":4,"column":95}},"5":{"start":{"line":5,"column":35},"end":{"line":5,"column":97}},"6":{"start":{"line":5,"column":41},"end":{"line":5,"column":70}},"7":{"start":{"line":5,"column":85},"end":{"line":5,"column":95}},"8":{"start":{"line":6,"column":32},"end":{"line":6,"column":149}},"9":{"start":{"line":6,"column":97},"end":{"line":6,"column":119}},"10":{"start":{"line":7,"column":8},"end":{"line":7,"column":72}},"11":{"start":{"line":10,"column":11},"end":{"line":10,"column":26}},"12":{"start":{"line":11,"column":13},"end":{"line":11,"column":30}},"13":{"start":{"line":12,"column":12},"end":{"line":12,"column":28}},"14":{"start":{"line":13,"column":14},"end":{"line":13,"column":32}},"15":{"start":{"line":14,"column":0},"end":{"line":17,"column":3}},"16":{"start":{"line":18,"column":0},"end":{"line":25,"column":3}},"17":{"start":{"line":20,"column":27},"end":{"line":20,"column":44}},"18":{"start":{"line":21,"column":8},"end":{"line":21,"column":40}},"19":{"start":{"line":22,"column":8},"end":{"line":22,"column":28}},"20":{"start":{"line":24,"column":22},"end":{"line":24,"column":26}},"21":{"start":{"line":26,"column":15},"end":{"line":26,"column":32}},"22":{"start":{"line":27,"column":15},"end":{"line":27,"column":35}},"23":{"start":{"line":28,"column":18},"end":{"line":28,"column":41}},"24":{"start":{"line":29,"column":0},"end":{"line":57,"column":3}},"25":{"start":{"line":30,"column":4},"end":{"line":34,"column":8}},"26":{"start":{"line":30,"column":84},"end":{"line":34,"column":6}},"27":{"start":{"line":31,"column":27},"end":{"line":31,"column":55}},"28":{"start":{"line":32,"column":8},"end":{"line":32,"column":119}},"29":{"start":{"line":33,"column":8},"end":{"line":33,"column":130}},"30":{"start":{"line":35,"column":4},"end":{"line":39,"column":8}},"31":{"start":{"line":35,"column":67},"end":{"line":39,"column":6}},"32":{"start":{"line":36,"column":27},"end":{"line":36,"column":55}},"33":{"start":{"line":37,"column":8},"end":{"line":37,"column":119}},"34":{"start":{"line":38,"column":8},"end":{"line":38,"column":65}},"35":{"start":{"line":40,"column":4},"end":{"line":44,"column":8}},"36":{"start":{"line":40,"column":83},"end":{"line":44,"column":6}},"37":{"start":{"line":41,"column":27},"end":{"line":41,"column":55}},"38":{"start":{"line":42,"column":8},"end":{"line":42,"column":119}},"39":{"start":{"line":43,"column":8},"end":{"line":43,"column":66}},"40":{"start":{"line":45,"column":4},"end":{"line":51,"column":8}},"41":{"start":{"line":45,"column":94},"end":{"line":51,"column":6}},"42":{"start":{"line":46,"column":27},"end":{"line":46,"column":55}},"43":{"start":{"line":47,"column":30},"end":{"line":47,"column":64}},"44":{"start":{"line":48,"column":8},"end":{"line":48,"column":59}},"45":{"start":{"line":49,"column":8},"end":{"line":49,"column":100}},"46":{"start":{"line":50,"column":8},"end":{"line":50,"column":65}},"47":{"start":{"line":52,"column":4},"end":{"line":56,"column":8}},"48":{"start":{"line":52,"column":53},"end":{"line":56,"column":6}},"49":{"start":{"line":53,"column":27},"end":{"line":53,"column":55}},"50":{"start":{"line":54,"column":20},"end":{"line":54,"column":130}},"51":{"start":{"line":55,"column":8},"end":{"line":55,"column":38}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":44},"end":{"line":2,"column":45}},"loc":{"start":{"line":2,"column":89},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":36},"end":{"line":3,"column":37}},"loc":{"start":{"line":3,"column":63},"end":{"line":8,"column":5}},"line":3},"2":{"name":"fulfilled","decl":{"start":{"line":4,"column":17},"end":{"line":4,"column":26}},"loc":{"start":{"line":4,"column":34},"end":{"line":4,"column":99}},"line":4},"3":{"name":"rejected","decl":{"start":{"line":5,"column":17},"end":{"line":5,"column":25}},"loc":{"start":{"line":5,"column":33},"end":{"line":5,"column":99}},"line":5},"4":{"name":"step","decl":{"start":{"line":6,"column":17},"end":{"line":6,"column":21}},"loc":{"start":{"line":6,"column":30},"end":{"line":6,"column":151}},"line":6},"5":{"name":"(anonymous_5)","decl":{"start":{"line":6,"column":76},"end":{"line":6,"column":77}},"loc":{"start":{"line":6,"column":95},"end":{"line":6,"column":121}},"line":6},"6":{"name":"(anonymous_6)","decl":{"start":{"line":19,"column":23},"end":{"line":19,"column":24}},"loc":{"start":{"line":19,"column":30},"end":{"line":23,"column":5}},"line":19},"7":{"name":"(anonymous_7)","decl":{"start":{"line":21,"column":30},"end":{"line":21,"column":31}},"loc":{"start":{"line":21,"column":36},"end":{"line":21,"column":39}},"line":21},"8":{"name":"(anonymous_8)","decl":{"start":{"line":24,"column":16},"end":{"line":24,"column":17}},"loc":{"start":{"line":24,"column":22},"end":{"line":24,"column":26}},"line":24},"9":{"name":"(anonymous_9)","decl":{"start":{"line":29,"column":40},"end":{"line":29,"column":41}},"loc":{"start":{"line":29,"column":46},"end":{"line":57,"column":1}},"line":29},"10":{"name":"(anonymous_10)","decl":{"start":{"line":30,"column":78},"end":{"line":30,"column":79}},"loc":{"start":{"line":30,"column":84},"end":{"line":34,"column":6}},"line":30},"11":{"name":"(anonymous_11)","decl":{"start":{"line":30,"column":116},"end":{"line":30,"column":117}},"loc":{"start":{"line":30,"column":129},"end":{"line":34,"column":5}},"line":30},"12":{"name":"(anonymous_12)","decl":{"start":{"line":35,"column":61},"end":{"line":35,"column":62}},"loc":{"start":{"line":35,"column":67},"end":{"line":39,"column":6}},"line":35},"13":{"name":"(anonymous_13)","decl":{"start":{"line":35,"column":99},"end":{"line":35,"column":100}},"loc":{"start":{"line":35,"column":112},"end":{"line":39,"column":5}},"line":35},"14":{"name":"(anonymous_14)","decl":{"start":{"line":40,"column":77},"end":{"line":40,"column":78}},"loc":{"start":{"line":40,"column":83},"end":{"line":44,"column":6}},"line":40},"15":{"name":"(anonymous_15)","decl":{"start":{"line":40,"column":115},"end":{"line":40,"column":116}},"loc":{"start":{"line":40,"column":128},"end":{"line":44,"column":5}},"line":40},"16":{"name":"(anonymous_16)","decl":{"start":{"line":45,"column":88},"end":{"line":45,"column":89}},"loc":{"start":{"line":45,"column":94},"end":{"line":51,"column":6}},"line":45},"17":{"name":"(anonymous_17)","decl":{"start":{"line":45,"column":126},"end":{"line":45,"column":127}},"loc":{"start":{"line":45,"column":139},"end":{"line":51,"column":5}},"line":45},"18":{"name":"(anonymous_18)","decl":{"start":{"line":52,"column":47},"end":{"line":52,"column":48}},"loc":{"start":{"line":52,"column":53},"end":{"line":56,"column":6}},"line":52},"19":{"name":"(anonymous_19)","decl":{"start":{"line":52,"column":85},"end":{"line":52,"column":86}},"loc":{"start":{"line":52,"column":98},"end":{"line":56,"column":5}},"line":52}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":9,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":34}},"type":"binary-expr","locations":[{"start":{"line":3,"column":16},"end":{"line":3,"column":17}},{"start":{"line":3,"column":22},"end":{"line":3,"column":33}}],"line":3},"2":{"loc":{"start":{"line":6,"column":32},"end":{"line":6,"column":148}},"type":"cond-expr","locations":[{"start":{"line":6,"column":46},"end":{"line":6,"column":67}},{"start":{"line":6,"column":70},"end":{"line":6,"column":148}}],"line":6}},"s":{"0":1,"1":5,"2":5,"3":5,"4":0,"5":0,"6":0,"7":0,"8":10,"9":5,"10":5,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":2,"18":2,"19":2,"20":2,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1},"f":{"0":5,"1":5,"2":5,"3":0,"4":10,"5":5,"6":2,"7":2,"8":2,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1},"b":{"0":[1,1,1],"1":[5,5],"2":[5,5]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"3be20c5e2a4ebceeb20b7aa55a43ab13665e58a2","contentHash":"d3242532fece9d8ac82795d4b4db4e2a_11.2.1"},"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Engine\\index.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Engine\\index.js","statementMap":{"0":{"start":{"line":2,"column":30},"end":{"line":2,"column":64}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":78}},"2":{"start":{"line":4,"column":23},"end":{"line":4,"column":50}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":57}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1},"f":{},"b":{},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"d6375636192778841b67dd52f962f066412b940c","contentHash":"daa30aa0dfdc2f232d484253ed098eb7_11.2.1"},"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Engine\\artifactEngineOptions.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Engine\\artifactEngineOptions.js","statementMap":{"0":{"start":{"line":4,"column":8},"end":{"line":4,"column":28}},"1":{"start":{"line":5,"column":8},"end":{"line":5,"column":40}},"2":{"start":{"line":6,"column":8},"end":{"line":6,"column":48}},"3":{"start":{"line":7,"column":8},"end":{"line":7,"column":41}},"4":{"start":{"line":8,"column":8},"end":{"line":8,"column":32}},"5":{"start":{"line":9,"column":8},"end":{"line":9,"column":29}},"6":{"start":{"line":12,"column":0},"end":{"line":12,"column":54}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":4},"end":{"line":3,"column":5}},"loc":{"start":{"line":3,"column":18},"end":{"line":10,"column":5}},"line":3}},"branchMap":{},"s":{"0":5,"1":5,"2":5,"3":5,"4":5,"5":5,"6":1},"f":{"0":5},"b":{},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"9f6a0090ea0c2999ba695d0f1ff4d66e2f89eee2","contentHash":"9509e7b03b61b955465ad3b39b5105c2_11.2.1"},"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Engine\\artifactEngine.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Engine\\artifactEngine.js","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":8,"column":7}},"2":{"start":{"line":4,"column":36},"end":{"line":4,"column":97}},"3":{"start":{"line":4,"column":42},"end":{"line":4,"column":70}},"4":{"start":{"line":4,"column":85},"end":{"line":4,"column":95}},"5":{"start":{"line":5,"column":35},"end":{"line":5,"column":97}},"6":{"start":{"line":5,"column":41},"end":{"line":5,"column":70}},"7":{"start":{"line":5,"column":85},"end":{"line":5,"column":95}},"8":{"start":{"line":6,"column":32},"end":{"line":6,"column":149}},"9":{"start":{"line":6,"column":97},"end":{"line":6,"column":119}},"10":{"start":{"line":7,"column":8},"end":{"line":7,"column":72}},"11":{"start":{"line":10,"column":13},"end":{"line":10,"column":28}},"12":{"start":{"line":11,"column":16},"end":{"line":11,"column":36}},"13":{"start":{"line":12,"column":15},"end":{"line":12,"column":35}},"14":{"start":{"line":13,"column":28},"end":{"line":13,"column":65}},"15":{"start":{"line":14,"column":32},"end":{"line":14,"column":66}},"16":{"start":{"line":15,"column":17},"end":{"line":15,"column":36}},"17":{"start":{"line":16,"column":17},"end":{"line":16,"column":36}},"18":{"start":{"line":19,"column":8},"end":{"line":19,"column":77}},"19":{"start":{"line":22,"column":8},"end":{"line":38,"column":11}},"20":{"start":{"line":23,"column":31},"end":{"line":23,"column":33}},"21":{"start":{"line":24,"column":12},"end":{"line":24,"column":113}},"22":{"start":{"line":25,"column":12},"end":{"line":25,"column":43}},"23":{"start":{"line":26,"column":12},"end":{"line":26,"column":68}},"24":{"start":{"line":27,"column":12},"end":{"line":27,"column":70}},"25":{"start":{"line":28,"column":12},"end":{"line":28,"column":38}},"26":{"start":{"line":29,"column":32},"end":{"line":29,"column":67}},"27":{"start":{"line":30,"column":12},"end":{"line":30,"column":57}},"28":{"start":{"line":31,"column":12},"end":{"line":34,"column":13}},"29":{"start":{"line":32,"column":29},"end":{"line":32,"column":257}},"30":{"start":{"line":32,"column":64},"end":{"line":32,"column":147}},"31":{"start":{"line":32,"column":155},"end":{"line":32,"column":200}},"32":{"start":{"line":32,"column":208},"end":{"line":32,"column":256}},"33":{"start":{"line":33,"column":16},"end":{"line":33,"column":47}},"34":{"start":{"line":35,"column":12},"end":{"line":35,"column":42}},"35":{"start":{"line":36,"column":12},"end":{"line":36,"column":37}},"36":{"start":{"line":37,"column":12},"end":{"line":37,"column":55}},"37":{"start":{"line":41,"column":8},"end":{"line":43,"column":12}},"38":{"start":{"line":41,"column":64},"end":{"line":43,"column":10}},"39":{"start":{"line":42,"column":12},"end":{"line":42,"column":143}},"40":{"start":{"line":46,"column":8},"end":{"line":89,"column":11}},"41":{"start":{"line":47,"column":12},"end":{"line":88,"column":13}},"42":{"start":{"line":48,"column":16},"end":{"line":48,"column":57}},"43":{"start":{"line":49,"column":16},"end":{"line":76,"column":17}},"44":{"start":{"line":50,"column":20},"end":{"line":62,"column":21}},"45":{"start":{"line":51,"column":24},"end":{"line":51,"column":75}},"46":{"start":{"line":52,"column":46},"end":{"line":52,"column":88}},"47":{"start":{"line":53,"column":24},"end":{"line":53,"column":94}},"48":{"start":{"line":54,"column":24},"end":{"line":54,"column":80}},"49":{"start":{"line":55,"column":24},"end":{"line":55,"column":95}},"50":{"start":{"line":56,"column":24},"end":{"line":56,"column":34}},"51":{"start":{"line":59,"column":24},"end":{"line":59,"column":88}},"52":{"start":{"line":60,"column":24},"end":{"line":60,"column":93}},"53":{"start":{"line":61,"column":24},"end":{"line":61,"column":34}},"54":{"start":{"line":65,"column":32},"end":{"line":65,"column":75}},"55":{"start":{"line":66,"column":20},"end":{"line":71,"column":23}},"56":{"start":{"line":67,"column":24},"end":{"line":69,"column":25}},"57":{"start":{"line":68,"column":28},"end":{"line":68,"column":74}},"58":{"start":{"line":70,"column":24},"end":{"line":70,"column":37}},"59":{"start":{"line":72,"column":20},"end":{"line":72,"column":59}},"60":{"start":{"line":73,"column":20},"end":{"line":73,"column":91}},"61":{"start":{"line":74,"column":20},"end":{"line":74,"column":93}},"62":{"start":{"line":75,"column":20},"end":{"line":75,"column":30}},"63":{"start":{"line":79,"column":16},"end":{"line":79,"column":91}},"64":{"start":{"line":80,"column":16},"end":{"line":87,"column":17}},"65":{"start":{"line":81,"column":20},"end":{"line":81,"column":88}},"66":{"start":{"line":82,"column":20},"end":{"line":82,"column":32}},"67":{"start":{"line":85,"column":20},"end":{"line":86,"column":205}},"68":{"start":{"line":85,"column":37},"end":{"line":86,"column":150}},"69":{"start":{"line":92,"column":0},"end":{"line":92,"column":40}},"70":{"start":{"line":93,"column":0},"end":{"line":96,"column":3}},"71":{"start":{"line":94,"column":4},"end":{"line":94,"column":26}},"72":{"start":{"line":95,"column":4},"end":{"line":95,"column":17}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":44},"end":{"line":2,"column":45}},"loc":{"start":{"line":2,"column":89},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":36},"end":{"line":3,"column":37}},"loc":{"start":{"line":3,"column":63},"end":{"line":8,"column":5}},"line":3},"2":{"name":"fulfilled","decl":{"start":{"line":4,"column":17},"end":{"line":4,"column":26}},"loc":{"start":{"line":4,"column":34},"end":{"line":4,"column":99}},"line":4},"3":{"name":"rejected","decl":{"start":{"line":5,"column":17},"end":{"line":5,"column":25}},"loc":{"start":{"line":5,"column":33},"end":{"line":5,"column":99}},"line":5},"4":{"name":"step","decl":{"start":{"line":6,"column":17},"end":{"line":6,"column":21}},"loc":{"start":{"line":6,"column":30},"end":{"line":6,"column":151}},"line":6},"5":{"name":"(anonymous_5)","decl":{"start":{"line":6,"column":76},"end":{"line":6,"column":77}},"loc":{"start":{"line":6,"column":95},"end":{"line":6,"column":121}},"line":6},"6":{"name":"(anonymous_6)","decl":{"start":{"line":18,"column":4},"end":{"line":18,"column":5}},"loc":{"start":{"line":18,"column":18},"end":{"line":20,"column":5}},"line":18},"7":{"name":"(anonymous_7)","decl":{"start":{"line":21,"column":4},"end":{"line":21,"column":5}},"loc":{"start":{"line":21,"column":70},"end":{"line":39,"column":5}},"line":21},"8":{"name":"(anonymous_8)","decl":{"start":{"line":22,"column":48},"end":{"line":22,"column":49}},"loc":{"start":{"line":22,"column":61},"end":{"line":38,"column":9}},"line":22},"9":{"name":"(anonymous_9)","decl":{"start":{"line":32,"column":56},"end":{"line":32,"column":57}},"loc":{"start":{"line":32,"column":64},"end":{"line":32,"column":147}},"line":32},"10":{"name":"(anonymous_10)","decl":{"start":{"line":32,"column":149},"end":{"line":32,"column":150}},"loc":{"start":{"line":32,"column":155},"end":{"line":32,"column":200}},"line":32},"11":{"name":"(anonymous_11)","decl":{"start":{"line":32,"column":202},"end":{"line":32,"column":203}},"loc":{"start":{"line":32,"column":208},"end":{"line":32,"column":256}},"line":32},"12":{"name":"(anonymous_12)","decl":{"start":{"line":40,"column":4},"end":{"line":40,"column":5}},"loc":{"start":{"line":40,"column":83},"end":{"line":44,"column":5}},"line":40},"13":{"name":"(anonymous_13)","decl":{"start":{"line":41,"column":27},"end":{"line":41,"column":28}},"loc":{"start":{"line":41,"column":64},"end":{"line":43,"column":10}},"line":41},"14":{"name":"(anonymous_14)","decl":{"start":{"line":41,"column":96},"end":{"line":41,"column":97}},"loc":{"start":{"line":41,"column":109},"end":{"line":43,"column":9}},"line":41},"15":{"name":"(anonymous_15)","decl":{"start":{"line":45,"column":4},"end":{"line":45,"column":5}},"loc":{"start":{"line":45,"column":126},"end":{"line":90,"column":5}},"line":45},"16":{"name":"(anonymous_16)","decl":{"start":{"line":46,"column":47},"end":{"line":46,"column":48}},"loc":{"start":{"line":46,"column":60},"end":{"line":89,"column":9}},"line":46},"17":{"name":"(anonymous_17)","decl":{"start":{"line":66,"column":38},"end":{"line":66,"column":39}},"loc":{"start":{"line":66,"column":56},"end":{"line":71,"column":21}},"line":66},"18":{"name":"(anonymous_18)","decl":{"start":{"line":85,"column":31},"end":{"line":85,"column":32}},"loc":{"start":{"line":85,"column":37},"end":{"line":86,"column":150}},"line":85},"19":{"name":"(anonymous_19)","decl":{"start":{"line":93,"column":33},"end":{"line":93,"column":34}},"loc":{"start":{"line":93,"column":54},"end":{"line":96,"column":1}},"line":93}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":9,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":34}},"type":"binary-expr","locations":[{"start":{"line":3,"column":16},"end":{"line":3,"column":17}},{"start":{"line":3,"column":22},"end":{"line":3,"column":33}}],"line":3},"2":{"loc":{"start":{"line":6,"column":32},"end":{"line":6,"column":148}},"type":"cond-expr","locations":[{"start":{"line":6,"column":46},"end":{"line":6,"column":67}},{"start":{"line":6,"column":70},"end":{"line":6,"column":148}}],"line":6},"3":{"loc":{"start":{"line":24,"column":36},"end":{"line":24,"column":112}},"type":"binary-expr","locations":[{"start":{"line":24,"column":36},"end":{"line":24,"column":57}},{"start":{"line":24,"column":61},"end":{"line":24,"column":112}}],"line":24},"4":{"loc":{"start":{"line":48,"column":29},"end":{"line":48,"column":56}},"type":"cond-expr","locations":[{"start":{"line":48,"column":42},"end":{"line":48,"column":52}},{"start":{"line":48,"column":55},"end":{"line":48,"column":56}}],"line":48},"5":{"loc":{"start":{"line":49,"column":16},"end":{"line":76,"column":17}},"type":"if","locations":[{"start":{"line":49,"column":16},"end":{"line":76,"column":17}},{"start":{"line":49,"column":16},"end":{"line":76,"column":17}}],"line":49},"6":{"loc":{"start":{"line":50,"column":20},"end":{"line":62,"column":21}},"type":"if","locations":[{"start":{"line":50,"column":20},"end":{"line":62,"column":21}},{"start":{"line":50,"column":20},"end":{"line":62,"column":21}}],"line":50},"7":{"loc":{"start":{"line":67,"column":24},"end":{"line":69,"column":25}},"type":"if","locations":[{"start":{"line":67,"column":24},"end":{"line":69,"column":25}},{"start":{"line":67,"column":24},"end":{"line":69,"column":25}}],"line":67},"8":{"loc":{"start":{"line":80,"column":16},"end":{"line":87,"column":17}},"type":"if","locations":[{"start":{"line":80,"column":16},"end":{"line":87,"column":17}},{"start":{"line":80,"column":16},"end":{"line":87,"column":17}}],"line":80}},"s":{"0":1,"1":65,"2":56,"3":56,"4":0,"5":0,"6":0,"7":0,"8":121,"9":56,"10":65,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":5,"19":5,"20":5,"21":5,"22":5,"23":5,"24":5,"25":5,"26":5,"27":5,"28":5,"29":20,"30":30,"31":65,"32":35,"33":20,"34":5,"35":5,"36":5,"37":30,"38":30,"39":30,"40":30,"41":30,"42":30,"43":30,"44":20,"45":18,"46":18,"47":18,"48":18,"49":18,"50":18,"51":2,"52":2,"53":2,"54":10,"55":10,"56":5,"57":0,"58":5,"59":10,"60":10,"61":10,"62":10,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":1,"70":1,"71":2,"72":2},"f":{"0":65,"1":65,"2":56,"3":0,"4":121,"5":56,"6":5,"7":5,"8":5,"9":30,"10":65,"11":35,"12":30,"13":30,"14":30,"15":30,"16":30,"17":5,"18":0,"19":2},"b":{"0":[1,1,1],"1":[65,60],"2":[65,56],"3":[5,0],"4":[0,30],"5":[20,10],"6":[18,2],"7":[0,5],"8":[0,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"1d50d99718d93837edcedb8f5e898c99b9f6f4b2","contentHash":"947fc9f1cbc45ea3ea2bea29da347d07_11.2.1"},"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Models\\index.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Models\\index.js","statementMap":{"0":{"start":{"line":2,"column":31},"end":{"line":2,"column":66}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":81}},"2":{"start":{"line":4,"column":21},"end":{"line":4,"column":46}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":51}},"4":{"start":{"line":6,"column":17},"end":{"line":6,"column":38}},"5":{"start":{"line":7,"column":0},"end":{"line":7,"column":39}},"6":{"start":{"line":8,"column":20},"end":{"line":8,"column":44}},"7":{"start":{"line":9,"column":0},"end":{"line":9,"column":48}},"8":{"start":{"line":10,"column":18},"end":{"line":10,"column":40}},"9":{"start":{"line":11,"column":0},"end":{"line":11,"column":42}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1},"f":{},"b":{},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"af7ad95ff2832a9c561d5ec14cc289cf54ee3786","contentHash":"9b61b2d666a149668d0ae17f418021cb_11.2.1"},"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Models\\artifactDownloadTicket.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Models\\artifactDownloadTicket.js","statementMap":{"0":{"start":{"line":4,"column":0},"end":{"line":4,"column":56}}},"fnMap":{},"branchMap":{},"s":{"0":1},"f":{},"b":{},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"8e6bf229e24e772ea67bb1cc3bea4341b25fad87","contentHash":"24d0647112cd37c187be3209f9c820e6_11.2.1"},"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Models\\artifactItem.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Models\\artifactItem.js","statementMap":{"0":{"start":{"line":4,"column":8},"end":{"line":4,"column":27}},"1":{"start":{"line":7,"column":0},"end":{"line":7,"column":36}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":4},"end":{"line":3,"column":5}},"loc":{"start":{"line":3,"column":18},"end":{"line":5,"column":5}},"line":3}},"branchMap":{},"s":{"0":51,"1":1},"f":{"0":51},"b":{},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"25b4e333f0f4f34f2a17d8e09e525039307dd5e2","contentHash":"3af77de6a79fa8f2625f9c0a56798eb3_11.2.1"},"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Models\\itemType.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Models\\itemType.js","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":6,"column":48}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":46}},"2":{"start":{"line":4,"column":4},"end":{"line":4,"column":55}},"3":{"start":{"line":5,"column":4},"end":{"line":5,"column":49}},"4":{"start":{"line":7,"column":15},"end":{"line":7,"column":31}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":1},"end":{"line":2,"column":2}},"loc":{"start":{"line":2,"column":21},"end":{"line":6,"column":1}},"line":2}},"branchMap":{"0":{"loc":{"start":{"line":6,"column":3},"end":{"line":6,"column":46}},"type":"binary-expr","locations":[{"start":{"line":6,"column":3},"end":{"line":6,"column":19}},{"start":{"line":6,"column":24},"end":{"line":6,"column":45}}],"line":6}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1},"f":{"0":1},"b":{"0":[1,1]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"524f195cdb434fce9ae047e30e09fcf6de5b6c04","contentHash":"d2ff7fbd2f30de6061e83b0e8135a7cd_11.2.1"},"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Models\\ticketState.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Models\\ticketState.js","statementMap":{"0":{"start":{"line":2,"column":0},"end":{"line":8,"column":54}},"1":{"start":{"line":3,"column":4},"end":{"line":3,"column":64}},"2":{"start":{"line":4,"column":4},"end":{"line":4,"column":73}},"3":{"start":{"line":5,"column":4},"end":{"line":5,"column":70}},"4":{"start":{"line":6,"column":4},"end":{"line":6,"column":64}},"5":{"start":{"line":7,"column":4},"end":{"line":7,"column":61}},"6":{"start":{"line":9,"column":18},"end":{"line":9,"column":37}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":1},"end":{"line":2,"column":2}},"loc":{"start":{"line":2,"column":24},"end":{"line":8,"column":1}},"line":2}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":3},"end":{"line":8,"column":52}},"type":"binary-expr","locations":[{"start":{"line":8,"column":3},"end":{"line":8,"column":22}},{"start":{"line":8,"column":27},"end":{"line":8,"column":51}}],"line":8}},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1},"f":{"0":1},"b":{"0":[1,1]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"8dd92cca2cfce9f9005e4f5f468924866e601652","contentHash":"87510a2111b723395cd500b42074572b_11.2.1"},"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Models\\constants.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Models\\constants.js","statementMap":{"0":{"start":{"line":4,"column":0},"end":{"line":4,"column":47}},"1":{"start":{"line":5,"column":0},"end":{"line":5,"column":30}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1},"f":{},"b":{},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"f48543c77cd1ba5f1764b27bc04ff1f66608902d","contentHash":"1f3db5de8f53044085e7089302b28e39_11.2.1"},"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Store\\artifactItemStore.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Store\\artifactItemStore.js","statementMap":{"0":{"start":{"line":2,"column":15},"end":{"line":2,"column":35}},"1":{"start":{"line":5,"column":8},"end":{"line":5,"column":35}},"2":{"start":{"line":8,"column":8},"end":{"line":10,"column":9}},"3":{"start":{"line":8,"column":44},"end":{"line":8,"column":77}},"4":{"start":{"line":9,"column":12},"end":{"line":9,"column":19}},"5":{"start":{"line":11,"column":37},"end":{"line":16,"column":9}},"6":{"start":{"line":17,"column":8},"end":{"line":17,"column":59}},"7":{"start":{"line":20,"column":8},"end":{"line":22,"column":11}},"8":{"start":{"line":21,"column":12},"end":{"line":21,"column":32}},"9":{"start":{"line":25,"column":8},"end":{"line":25,"column":37}},"10":{"start":{"line":28,"column":32},"end":{"line":28,"column":150}},"11":{"start":{"line":28,"column":66},"end":{"line":28,"column":149}},"12":{"start":{"line":29,"column":8},"end":{"line":29,"column":45}},"13":{"start":{"line":32,"column":32},"end":{"line":32,"column":103}},"14":{"start":{"line":32,"column":64},"end":{"line":32,"column":102}},"15":{"start":{"line":33,"column":8},"end":{"line":37,"column":9}},"16":{"start":{"line":34,"column":12},"end":{"line":34,"column":68}},"17":{"start":{"line":35,"column":12},"end":{"line":35,"column":53}},"18":{"start":{"line":36,"column":12},"end":{"line":36,"column":50}},"19":{"start":{"line":38,"column":8},"end":{"line":38,"column":25}},"20":{"start":{"line":41,"column":28},"end":{"line":41,"column":94}},"21":{"start":{"line":41,"column":60},"end":{"line":41,"column":93}},"22":{"start":{"line":42,"column":8},"end":{"line":47,"column":9}},"23":{"start":{"line":43,"column":12},"end":{"line":43,"column":40}},"24":{"start":{"line":44,"column":12},"end":{"line":46,"column":13}},"25":{"start":{"line":45,"column":16},"end":{"line":45,"column":54}},"26":{"start":{"line":50,"column":8},"end":{"line":50,"column":44}},"27":{"start":{"line":53,"column":8},"end":{"line":53,"column":35}},"28":{"start":{"line":56,"column":0},"end":{"line":56,"column":46}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":4,"column":4},"end":{"line":4,"column":5}},"loc":{"start":{"line":4,"column":18},"end":{"line":6,"column":5}},"line":4},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":4},"end":{"line":7,"column":5}},"loc":{"start":{"line":7,"column":18},"end":{"line":18,"column":5}},"line":7},"2":{"name":"(anonymous_2)","decl":{"start":{"line":8,"column":39},"end":{"line":8,"column":40}},"loc":{"start":{"line":8,"column":44},"end":{"line":8,"column":77}},"line":8},"3":{"name":"(anonymous_3)","decl":{"start":{"line":19,"column":4},"end":{"line":19,"column":5}},"loc":{"start":{"line":19,"column":20},"end":{"line":23,"column":5}},"line":19},"4":{"name":"(anonymous_4)","decl":{"start":{"line":20,"column":18},"end":{"line":20,"column":19}},"loc":{"start":{"line":20,"column":36},"end":{"line":22,"column":9}},"line":20},"5":{"name":"(anonymous_5)","decl":{"start":{"line":24,"column":4},"end":{"line":24,"column":5}},"loc":{"start":{"line":24,"column":17},"end":{"line":26,"column":5}},"line":24},"6":{"name":"(anonymous_6)","decl":{"start":{"line":27,"column":4},"end":{"line":27,"column":5}},"loc":{"start":{"line":27,"column":29},"end":{"line":30,"column":5}},"line":27},"7":{"name":"(anonymous_7)","decl":{"start":{"line":28,"column":61},"end":{"line":28,"column":62}},"loc":{"start":{"line":28,"column":66},"end":{"line":28,"column":149}},"line":28},"8":{"name":"(anonymous_8)","decl":{"start":{"line":31,"column":4},"end":{"line":31,"column":5}},"loc":{"start":{"line":31,"column":27},"end":{"line":39,"column":5}},"line":31},"9":{"name":"(anonymous_9)","decl":{"start":{"line":32,"column":59},"end":{"line":32,"column":60}},"loc":{"start":{"line":32,"column":64},"end":{"line":32,"column":102}},"line":32},"10":{"name":"(anonymous_10)","decl":{"start":{"line":40,"column":4},"end":{"line":40,"column":5}},"loc":{"start":{"line":40,"column":29},"end":{"line":48,"column":5}},"line":40},"11":{"name":"(anonymous_11)","decl":{"start":{"line":41,"column":55},"end":{"line":41,"column":56}},"loc":{"start":{"line":41,"column":60},"end":{"line":41,"column":93}},"line":41},"12":{"name":"(anonymous_12)","decl":{"start":{"line":49,"column":4},"end":{"line":49,"column":5}},"loc":{"start":{"line":49,"column":11},"end":{"line":51,"column":5}},"line":49},"13":{"name":"(anonymous_13)","decl":{"start":{"line":52,"column":4},"end":{"line":52,"column":5}},"loc":{"start":{"line":52,"column":12},"end":{"line":54,"column":5}},"line":52}},"branchMap":{"0":{"loc":{"start":{"line":8,"column":8},"end":{"line":10,"column":9}},"type":"if","locations":[{"start":{"line":8,"column":8},"end":{"line":10,"column":9}},{"start":{"line":8,"column":8},"end":{"line":10,"column":9}}],"line":8},"1":{"loc":{"start":{"line":28,"column":66},"end":{"line":28,"column":149}},"type":"binary-expr","locations":[{"start":{"line":28,"column":66},"end":{"line":28,"column":107}},{"start":{"line":28,"column":111},"end":{"line":28,"column":149}}],"line":28},"2":{"loc":{"start":{"line":33,"column":8},"end":{"line":37,"column":9}},"type":"if","locations":[{"start":{"line":33,"column":8},"end":{"line":37,"column":9}},{"start":{"line":33,"column":8},"end":{"line":37,"column":9}}],"line":33},"3":{"loc":{"start":{"line":42,"column":8},"end":{"line":47,"column":9}},"type":"if","locations":[{"start":{"line":42,"column":8},"end":{"line":47,"column":9}},{"start":{"line":42,"column":8},"end":{"line":47,"column":9}}],"line":42},"4":{"loc":{"start":{"line":44,"column":12},"end":{"line":46,"column":13}},"type":"if","locations":[{"start":{"line":44,"column":12},"end":{"line":46,"column":13}},{"start":{"line":44,"column":12},"end":{"line":46,"column":13}}],"line":44},"5":{"loc":{"start":{"line":44,"column":16},"end":{"line":44,"column":93}},"type":"binary-expr","locations":[{"start":{"line":44,"column":16},"end":{"line":44,"column":51}},{"start":{"line":44,"column":55},"end":{"line":44,"column":93}}],"line":44}},"s":{"0":1,"1":26,"2":52,"3":79,"4":2,"5":50,"6":50,"7":16,"8":32,"9":16,"10":41,"11":215,"12":41,"13":72,"14":320,"15":72,"16":34,"17":34,"18":34,"19":38,"20":42,"21":116,"22":42,"23":41,"24":41,"25":37,"26":4,"27":6,"28":1},"f":{"0":26,"1":52,"2":79,"3":16,"4":32,"5":16,"6":41,"7":215,"8":72,"9":320,"10":42,"11":116,"12":4,"13":6},"b":{"0":[2,50],"1":[215,187],"2":[34,38],"3":[41,1],"4":[37,4],"5":[41,39]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"6fc223636b95713469be92a4775eca2279a262e0","contentHash":"42a295dbb7381818567a1c77fbe14efe_11.2.1"},"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Engine\\logger.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Engine\\logger.js","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":8,"column":7}},"2":{"start":{"line":4,"column":36},"end":{"line":4,"column":97}},"3":{"start":{"line":4,"column":42},"end":{"line":4,"column":70}},"4":{"start":{"line":4,"column":85},"end":{"line":4,"column":95}},"5":{"start":{"line":5,"column":35},"end":{"line":5,"column":97}},"6":{"start":{"line":5,"column":41},"end":{"line":5,"column":70}},"7":{"start":{"line":5,"column":85},"end":{"line":5,"column":95}},"8":{"start":{"line":6,"column":32},"end":{"line":6,"column":149}},"9":{"start":{"line":6,"column":97},"end":{"line":6,"column":119}},"10":{"start":{"line":7,"column":8},"end":{"line":7,"column":72}},"11":{"start":{"line":10,"column":17},"end":{"line":10,"column":37}},"12":{"start":{"line":11,"column":22},"end":{"line":11,"column":54}},"13":{"start":{"line":14,"column":8},"end":{"line":14,"column":27}},"14":{"start":{"line":15,"column":8},"end":{"line":15,"column":36}},"15":{"start":{"line":18,"column":8},"end":{"line":20,"column":9}},"16":{"start":{"line":19,"column":12},"end":{"line":19,"column":34}},"17":{"start":{"line":23,"column":8},"end":{"line":23,"column":31}},"18":{"start":{"line":26,"column":8},"end":{"line":26,"column":29}},"19":{"start":{"line":29,"column":8},"end":{"line":50,"column":9}},"20":{"start":{"line":30,"column":33},"end":{"line":48,"column":24}},"21":{"start":{"line":30,"column":39},"end":{"line":48,"column":24}},"22":{"start":{"line":30,"column":86},"end":{"line":48,"column":21}},"23":{"start":{"line":31,"column":30},"end":{"line":31,"column":53}},"24":{"start":{"line":32,"column":34},"end":{"line":32,"column":99}},"25":{"start":{"line":32,"column":54},"end":{"line":32,"column":98}},"26":{"start":{"line":33,"column":38},"end":{"line":33,"column":106}},"27":{"start":{"line":33,"column":58},"end":{"line":33,"column":105}},"28":{"start":{"line":34,"column":37},"end":{"line":34,"column":104}},"29":{"start":{"line":34,"column":57},"end":{"line":34,"column":103}},"30":{"start":{"line":35,"column":35},"end":{"line":35,"column":100}},"31":{"start":{"line":35,"column":55},"end":{"line":35,"column":99}},"32":{"start":{"line":36,"column":34},"end":{"line":36,"column":98}},"33":{"start":{"line":36,"column":54},"end":{"line":36,"column":97}},"34":{"start":{"line":37,"column":34},"end":{"line":37,"column":44}},"35":{"start":{"line":38,"column":16},"end":{"line":44,"column":113}},"36":{"start":{"line":45,"column":16},"end":{"line":47,"column":17}},"37":{"start":{"line":46,"column":20},"end":{"line":46,"column":37}},"38":{"start":{"line":49,"column":12},"end":{"line":49,"column":29}},"39":{"start":{"line":53,"column":22},"end":{"line":53,"column":45}},"40":{"start":{"line":54,"column":8},"end":{"line":54,"column":89}},"41":{"start":{"line":54,"column":38},"end":{"line":54,"column":87}},"42":{"start":{"line":55,"column":28},"end":{"line":55,"column":190}},"43":{"start":{"line":55,"column":48},"end":{"line":55,"column":189}},"44":{"start":{"line":56,"column":29},"end":{"line":56,"column":96}},"45":{"start":{"line":56,"column":49},"end":{"line":56,"column":95}},"46":{"start":{"line":57,"column":27},"end":{"line":57,"column":92}},"47":{"start":{"line":57,"column":47},"end":{"line":57,"column":91}},"48":{"start":{"line":58,"column":26},"end":{"line":58,"column":90}},"49":{"start":{"line":58,"column":46},"end":{"line":58,"column":89}},"50":{"start":{"line":59,"column":22},"end":{"line":59,"column":32}},"51":{"start":{"line":60,"column":8},"end":{"line":64,"column":101}},"52":{"start":{"line":65,"column":8},"end":{"line":82,"column":9}},"53":{"start":{"line":66,"column":12},"end":{"line":66,"column":36}},"54":{"start":{"line":67,"column":30},"end":{"line":67,"column":80}},"55":{"start":{"line":67,"column":53},"end":{"line":67,"column":79}},"56":{"start":{"line":68,"column":32},"end":{"line":68,"column":78}},"57":{"start":{"line":68,"column":61},"end":{"line":68,"column":74}},"58":{"start":{"line":69,"column":29},"end":{"line":69,"column":64}},"59":{"start":{"line":70,"column":34},"end":{"line":70,"column":64}},"60":{"start":{"line":71,"column":35},"end":{"line":71,"column":66}},"61":{"start":{"line":72,"column":33},"end":{"line":72,"column":61}},"62":{"start":{"line":73,"column":30},"end":{"line":73,"column":55}},"63":{"start":{"line":74,"column":12},"end":{"line":74,"column":87}},"64":{"start":{"line":75,"column":12},"end":{"line":75,"column":124}},"65":{"start":{"line":76,"column":12},"end":{"line":76,"column":87}},"66":{"start":{"line":77,"column":12},"end":{"line":81,"column":15}},"67":{"start":{"line":78,"column":31},"end":{"line":78,"column":106}},"68":{"start":{"line":79,"column":16},"end":{"line":79,"column":318}},"69":{"start":{"line":80,"column":16},"end":{"line":80,"column":91}},"70":{"start":{"line":85,"column":16},"end":{"line":85,"column":61}},"71":{"start":{"line":86,"column":18},"end":{"line":86,"column":66}},"72":{"start":{"line":87,"column":25},"end":{"line":87,"column":40}},"73":{"start":{"line":88,"column":8},"end":{"line":88,"column":26}},"74":{"start":{"line":91,"column":0},"end":{"line":91,"column":24}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":44},"end":{"line":2,"column":45}},"loc":{"start":{"line":2,"column":89},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":36},"end":{"line":3,"column":37}},"loc":{"start":{"line":3,"column":63},"end":{"line":8,"column":5}},"line":3},"2":{"name":"fulfilled","decl":{"start":{"line":4,"column":17},"end":{"line":4,"column":26}},"loc":{"start":{"line":4,"column":34},"end":{"line":4,"column":99}},"line":4},"3":{"name":"rejected","decl":{"start":{"line":5,"column":17},"end":{"line":5,"column":25}},"loc":{"start":{"line":5,"column":33},"end":{"line":5,"column":99}},"line":5},"4":{"name":"step","decl":{"start":{"line":6,"column":17},"end":{"line":6,"column":21}},"loc":{"start":{"line":6,"column":30},"end":{"line":6,"column":151}},"line":6},"5":{"name":"(anonymous_5)","decl":{"start":{"line":6,"column":76},"end":{"line":6,"column":77}},"loc":{"start":{"line":6,"column":95},"end":{"line":6,"column":121}},"line":6},"6":{"name":"(anonymous_6)","decl":{"start":{"line":13,"column":4},"end":{"line":13,"column":5}},"loc":{"start":{"line":13,"column":23},"end":{"line":16,"column":5}},"line":13},"7":{"name":"(anonymous_7)","decl":{"start":{"line":17,"column":4},"end":{"line":17,"column":5}},"loc":{"start":{"line":17,"column":28},"end":{"line":21,"column":5}},"line":17},"8":{"name":"(anonymous_8)","decl":{"start":{"line":22,"column":4},"end":{"line":22,"column":5}},"loc":{"start":{"line":22,"column":29},"end":{"line":24,"column":5}},"line":22},"9":{"name":"(anonymous_9)","decl":{"start":{"line":25,"column":4},"end":{"line":25,"column":5}},"loc":{"start":{"line":25,"column":31},"end":{"line":27,"column":5}},"line":25},"10":{"name":"(anonymous_10)","decl":{"start":{"line":28,"column":4},"end":{"line":28,"column":5}},"loc":{"start":{"line":28,"column":18},"end":{"line":51,"column":5}},"line":28},"11":{"name":"(anonymous_11)","decl":{"start":{"line":30,"column":33},"end":{"line":30,"column":34}},"loc":{"start":{"line":30,"column":39},"end":{"line":48,"column":24}},"line":30},"12":{"name":"(anonymous_12)","decl":{"start":{"line":30,"column":71},"end":{"line":30,"column":72}},"loc":{"start":{"line":30,"column":84},"end":{"line":48,"column":23}},"line":30},"13":{"name":"(anonymous_13)","decl":{"start":{"line":30,"column":104},"end":{"line":30,"column":105}},"loc":{"start":{"line":30,"column":110},"end":{"line":48,"column":13}},"line":30},"14":{"name":"(anonymous_14)","decl":{"start":{"line":32,"column":49},"end":{"line":32,"column":50}},"loc":{"start":{"line":32,"column":54},"end":{"line":32,"column":98}},"line":32},"15":{"name":"(anonymous_15)","decl":{"start":{"line":33,"column":53},"end":{"line":33,"column":54}},"loc":{"start":{"line":33,"column":58},"end":{"line":33,"column":105}},"line":33},"16":{"name":"(anonymous_16)","decl":{"start":{"line":34,"column":52},"end":{"line":34,"column":53}},"loc":{"start":{"line":34,"column":57},"end":{"line":34,"column":103}},"line":34},"17":{"name":"(anonymous_17)","decl":{"start":{"line":35,"column":50},"end":{"line":35,"column":51}},"loc":{"start":{"line":35,"column":55},"end":{"line":35,"column":99}},"line":35},"18":{"name":"(anonymous_18)","decl":{"start":{"line":36,"column":49},"end":{"line":36,"column":50}},"loc":{"start":{"line":36,"column":54},"end":{"line":36,"column":97}},"line":36},"19":{"name":"(anonymous_19)","decl":{"start":{"line":52,"column":4},"end":{"line":52,"column":5}},"loc":{"start":{"line":52,"column":17},"end":{"line":83,"column":5}},"line":52},"20":{"name":"(anonymous_20)","decl":{"start":{"line":54,"column":33},"end":{"line":54,"column":34}},"loc":{"start":{"line":54,"column":38},"end":{"line":54,"column":87}},"line":54},"21":{"name":"(anonymous_21)","decl":{"start":{"line":55,"column":43},"end":{"line":55,"column":44}},"loc":{"start":{"line":55,"column":48},"end":{"line":55,"column":189}},"line":55},"22":{"name":"(anonymous_22)","decl":{"start":{"line":56,"column":44},"end":{"line":56,"column":45}},"loc":{"start":{"line":56,"column":49},"end":{"line":56,"column":95}},"line":56},"23":{"name":"(anonymous_23)","decl":{"start":{"line":57,"column":42},"end":{"line":57,"column":43}},"loc":{"start":{"line":57,"column":47},"end":{"line":57,"column":91}},"line":57},"24":{"name":"(anonymous_24)","decl":{"start":{"line":58,"column":41},"end":{"line":58,"column":42}},"loc":{"start":{"line":58,"column":46},"end":{"line":58,"column":89}},"line":58},"25":{"name":"(anonymous_25)","decl":{"start":{"line":67,"column":48},"end":{"line":67,"column":49}},"loc":{"start":{"line":67,"column":53},"end":{"line":67,"column":79}},"line":67},"26":{"name":"(anonymous_26)","decl":{"start":{"line":68,"column":51},"end":{"line":68,"column":52}},"loc":{"start":{"line":68,"column":61},"end":{"line":68,"column":74}},"line":68},"27":{"name":"(anonymous_27)","decl":{"start":{"line":77,"column":28},"end":{"line":77,"column":29}},"loc":{"start":{"line":77,"column":38},"end":{"line":81,"column":13}},"line":77},"28":{"name":"(anonymous_28)","decl":{"start":{"line":84,"column":4},"end":{"line":84,"column":5}},"loc":{"start":{"line":84,"column":47},"end":{"line":89,"column":5}},"line":84}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":9,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":34}},"type":"binary-expr","locations":[{"start":{"line":3,"column":16},"end":{"line":3,"column":17}},{"start":{"line":3,"column":22},"end":{"line":3,"column":33}}],"line":3},"2":{"loc":{"start":{"line":6,"column":32},"end":{"line":6,"column":148}},"type":"cond-expr","locations":[{"start":{"line":6,"column":46},"end":{"line":6,"column":67}},{"start":{"line":6,"column":70},"end":{"line":6,"column":148}}],"line":6},"3":{"loc":{"start":{"line":18,"column":8},"end":{"line":20,"column":9}},"type":"if","locations":[{"start":{"line":18,"column":8},"end":{"line":20,"column":9}},{"start":{"line":18,"column":8},"end":{"line":20,"column":9}}],"line":18},"4":{"loc":{"start":{"line":29,"column":8},"end":{"line":50,"column":9}},"type":"if","locations":[{"start":{"line":29,"column":8},"end":{"line":50,"column":9}},{"start":{"line":29,"column":8},"end":{"line":50,"column":9}}],"line":29},"5":{"loc":{"start":{"line":45,"column":16},"end":{"line":47,"column":17}},"type":"if","locations":[{"start":{"line":45,"column":16},"end":{"line":47,"column":17}},{"start":{"line":45,"column":16},"end":{"line":47,"column":17}}],"line":45},"6":{"loc":{"start":{"line":55,"column":48},"end":{"line":55,"column":189}},"type":"binary-expr","locations":[{"start":{"line":55,"column":48},"end":{"line":55,"column":94}},{"start":{"line":55,"column":98},"end":{"line":55,"column":142}},{"start":{"line":55,"column":146},"end":{"line":55,"column":189}}],"line":55},"7":{"loc":{"start":{"line":65,"column":8},"end":{"line":82,"column":9}},"type":"if","locations":[{"start":{"line":65,"column":8},"end":{"line":82,"column":9}},{"start":{"line":65,"column":8},"end":{"line":82,"column":9}}],"line":65},"8":{"loc":{"start":{"line":68,"column":61},"end":{"line":68,"column":74}},"type":"cond-expr","locations":[{"start":{"line":68,"column":69},"end":{"line":68,"column":70}},{"start":{"line":68,"column":73},"end":{"line":68,"column":74}}],"line":68},"9":{"loc":{"start":{"line":86,"column":51},"end":{"line":86,"column":65}},"type":"binary-expr","locations":[{"start":{"line":86,"column":51},"end":{"line":86,"column":58}},{"start":{"line":86,"column":62},"end":{"line":86,"column":65}}],"line":86}},"s":{"0":1,"1":0,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":1,"12":1,"13":5,"14":5,"15":118,"16":0,"17":0,"18":4,"19":5,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":0,"29":0,"30":0,"31":0,"32":0,"33":0,"34":0,"35":0,"36":0,"37":0,"38":0,"39":5,"40":5,"41":30,"42":5,"43":20,"44":5,"45":20,"46":5,"47":20,"48":5,"49":20,"50":5,"51":5,"52":5,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":0,"65":0,"66":0,"67":0,"68":0,"69":0,"70":0,"71":0,"72":0,"73":0,"74":1},"f":{"0":0,"1":0,"2":0,"3":0,"4":0,"5":0,"6":5,"7":118,"8":0,"9":4,"10":5,"11":0,"12":0,"13":0,"14":0,"15":0,"16":0,"17":0,"18":0,"19":5,"20":30,"21":20,"22":20,"23":20,"24":20,"25":0,"26":0,"27":0,"28":0},"b":{"0":[1,1,1],"1":[0,0],"2":[0,0],"3":[0,118],"4":[0,5],"5":[0,0],"6":[20,2,0],"7":[0,5],"8":[0,0],"9":[0,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"db6efa7ce0cfdb99d9712b8c60410b42d9ba20dc","contentHash":"068849bb8f47623f0166fbb137c4ba86_11.2.1"},"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Engine\\worker.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Engine\\worker.js","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":8,"column":7}},"2":{"start":{"line":4,"column":36},"end":{"line":4,"column":97}},"3":{"start":{"line":4,"column":42},"end":{"line":4,"column":70}},"4":{"start":{"line":4,"column":85},"end":{"line":4,"column":95}},"5":{"start":{"line":5,"column":35},"end":{"line":5,"column":97}},"6":{"start":{"line":5,"column":41},"end":{"line":5,"column":70}},"7":{"start":{"line":5,"column":85},"end":{"line":5,"column":95}},"8":{"start":{"line":6,"column":32},"end":{"line":6,"column":149}},"9":{"start":{"line":6,"column":97},"end":{"line":6,"column":119}},"10":{"start":{"line":7,"column":8},"end":{"line":7,"column":72}},"11":{"start":{"line":10,"column":17},"end":{"line":10,"column":36}},"12":{"start":{"line":13,"column":8},"end":{"line":13,"column":21}},"13":{"start":{"line":14,"column":8},"end":{"line":14,"column":31}},"14":{"start":{"line":15,"column":8},"end":{"line":15,"column":39}},"15":{"start":{"line":16,"column":8},"end":{"line":16,"column":31}},"16":{"start":{"line":19,"column":22},"end":{"line":21,"column":11}},"17":{"start":{"line":19,"column":55},"end":{"line":21,"column":10}},"18":{"start":{"line":20,"column":12},"end":{"line":20,"column":52}},"19":{"start":{"line":22,"column":8},"end":{"line":22,"column":23}},"20":{"start":{"line":25,"column":8},"end":{"line":40,"column":11}},"21":{"start":{"line":26,"column":12},"end":{"line":39,"column":13}},"22":{"start":{"line":27,"column":16},"end":{"line":27,"column":50}},"23":{"start":{"line":28,"column":16},"end":{"line":35,"column":17}},"24":{"start":{"line":29,"column":20},"end":{"line":29,"column":97}},"25":{"start":{"line":30,"column":20},"end":{"line":30,"column":30}},"26":{"start":{"line":33,"column":20},"end":{"line":33,"column":109}},"27":{"start":{"line":34,"column":20},"end":{"line":34,"column":78}},"28":{"start":{"line":34,"column":37},"end":{"line":34,"column":70}},"29":{"start":{"line":38,"column":16},"end":{"line":38,"column":28}},"30":{"start":{"line":43,"column":8},"end":{"line":52,"column":11}},"31":{"start":{"line":44,"column":12},"end":{"line":51,"column":13}},"32":{"start":{"line":45,"column":29},"end":{"line":45,"column":47}},"33":{"start":{"line":46,"column":16},"end":{"line":49,"column":17}},"34":{"start":{"line":47,"column":20},"end":{"line":47,"column":124}},"35":{"start":{"line":48,"column":20},"end":{"line":48,"column":26}},"36":{"start":{"line":50,"column":16},"end":{"line":50,"column":41}},"37":{"start":{"line":55,"column":0},"end":{"line":55,"column":24}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":44},"end":{"line":2,"column":45}},"loc":{"start":{"line":2,"column":89},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":36},"end":{"line":3,"column":37}},"loc":{"start":{"line":3,"column":63},"end":{"line":8,"column":5}},"line":3},"2":{"name":"fulfilled","decl":{"start":{"line":4,"column":17},"end":{"line":4,"column":26}},"loc":{"start":{"line":4,"column":34},"end":{"line":4,"column":99}},"line":4},"3":{"name":"rejected","decl":{"start":{"line":5,"column":17},"end":{"line":5,"column":25}},"loc":{"start":{"line":5,"column":33},"end":{"line":5,"column":99}},"line":5},"4":{"name":"step","decl":{"start":{"line":6,"column":17},"end":{"line":6,"column":21}},"loc":{"start":{"line":6,"column":30},"end":{"line":6,"column":151}},"line":6},"5":{"name":"(anonymous_5)","decl":{"start":{"line":6,"column":76},"end":{"line":6,"column":77}},"loc":{"start":{"line":6,"column":95},"end":{"line":6,"column":121}},"line":6},"6":{"name":"(anonymous_6)","decl":{"start":{"line":12,"column":4},"end":{"line":12,"column":5}},"loc":{"start":{"line":12,"column":51},"end":{"line":17,"column":5}},"line":12},"7":{"name":"(anonymous_7)","decl":{"start":{"line":18,"column":4},"end":{"line":18,"column":5}},"loc":{"start":{"line":18,"column":11},"end":{"line":23,"column":5}},"line":18},"8":{"name":"(anonymous_8)","decl":{"start":{"line":19,"column":34},"end":{"line":19,"column":35}},"loc":{"start":{"line":19,"column":55},"end":{"line":21,"column":10}},"line":19},"9":{"name":"(anonymous_9)","decl":{"start":{"line":19,"column":87},"end":{"line":19,"column":88}},"loc":{"start":{"line":19,"column":100},"end":{"line":21,"column":9}},"line":19},"10":{"name":"(anonymous_10)","decl":{"start":{"line":24,"column":4},"end":{"line":24,"column":5}},"loc":{"start":{"line":24,"column":33},"end":{"line":41,"column":5}},"line":24},"11":{"name":"(anonymous_11)","decl":{"start":{"line":25,"column":47},"end":{"line":25,"column":48}},"loc":{"start":{"line":25,"column":60},"end":{"line":40,"column":9}},"line":25},"12":{"name":"(anonymous_12)","decl":{"start":{"line":34,"column":31},"end":{"line":34,"column":32}},"loc":{"start":{"line":34,"column":37},"end":{"line":34,"column":70}},"line":34},"13":{"name":"(anonymous_13)","decl":{"start":{"line":42,"column":4},"end":{"line":42,"column":5}},"loc":{"start":{"line":42,"column":27},"end":{"line":53,"column":5}},"line":42},"14":{"name":"(anonymous_14)","decl":{"start":{"line":43,"column":47},"end":{"line":43,"column":48}},"loc":{"start":{"line":43,"column":60},"end":{"line":52,"column":9}},"line":43}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":9,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":34}},"type":"binary-expr","locations":[{"start":{"line":3,"column":16},"end":{"line":3,"column":17}},{"start":{"line":3,"column":22},"end":{"line":3,"column":33}}],"line":3},"2":{"loc":{"start":{"line":6,"column":32},"end":{"line":6,"column":148}},"type":"cond-expr","locations":[{"start":{"line":6,"column":46},"end":{"line":6,"column":67}},{"start":{"line":6,"column":70},"end":{"line":6,"column":148}}],"line":6},"3":{"loc":{"start":{"line":28,"column":16},"end":{"line":35,"column":17}},"type":"if","locations":[{"start":{"line":28,"column":16},"end":{"line":35,"column":17}},{"start":{"line":28,"column":16},"end":{"line":35,"column":17}}],"line":28},"4":{"loc":{"start":{"line":46,"column":16},"end":{"line":49,"column":17}},"type":"if","locations":[{"start":{"line":46,"column":16},"end":{"line":49,"column":17}},{"start":{"line":46,"column":16},"end":{"line":49,"column":17}}],"line":46}},"s":{"0":1,"1":90,"2":85,"3":85,"4":0,"5":0,"6":0,"7":0,"8":175,"9":85,"10":90,"11":1,"12":20,"13":20,"14":20,"15":20,"16":20,"17":20,"18":20,"19":20,"20":35,"21":35,"22":35,"23":35,"24":20,"25":20,"26":15,"27":15,"28":15,"29":0,"30":35,"31":35,"32":65,"33":65,"34":35,"35":35,"36":30,"37":1},"f":{"0":90,"1":90,"2":85,"3":0,"4":175,"5":85,"6":20,"7":20,"8":20,"9":20,"10":35,"11":35,"12":15,"13":35,"14":35},"b":{"0":[1,1,1],"1":[90,90],"2":[90,85],"3":[20,15],"4":[35,30]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"daf1e1e867427496cf89b3f85eec4e3dc21b52a3","contentHash":"d8a23c16368815e968055c1686651f88_11.2.1"},"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Providers\\index.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Providers\\index.js","statementMap":{"0":{"start":{"line":2,"column":20},"end":{"line":2,"column":44}},"1":{"start":{"line":3,"column":0},"end":{"line":3,"column":48}},"2":{"start":{"line":4,"column":27},"end":{"line":4,"column":58}},"3":{"start":{"line":5,"column":0},"end":{"line":5,"column":69}},"4":{"start":{"line":6,"column":21},"end":{"line":6,"column":46}},"5":{"start":{"line":7,"column":0},"end":{"line":7,"column":51}}},"fnMap":{},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1},"f":{},"b":{},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"0f4c9520aea281a9097fb53a5c368471b19a1876","contentHash":"1235cc47ba34ac2a00d41753a42dea9b_11.2.1"},"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Providers\\webProvider.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Providers\\webProvider.js","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":8,"column":7}},"2":{"start":{"line":4,"column":36},"end":{"line":4,"column":97}},"3":{"start":{"line":4,"column":42},"end":{"line":4,"column":70}},"4":{"start":{"line":4,"column":85},"end":{"line":4,"column":95}},"5":{"start":{"line":5,"column":35},"end":{"line":5,"column":97}},"6":{"start":{"line":5,"column":41},"end":{"line":5,"column":70}},"7":{"start":{"line":5,"column":85},"end":{"line":5,"column":95}},"8":{"start":{"line":6,"column":32},"end":{"line":6,"column":149}},"9":{"start":{"line":6,"column":97},"end":{"line":6,"column":119}},"10":{"start":{"line":7,"column":8},"end":{"line":7,"column":72}},"11":{"start":{"line":10,"column":11},"end":{"line":10,"column":24}},"12":{"start":{"line":11,"column":13},"end":{"line":11,"column":28}},"13":{"start":{"line":12,"column":15},"end":{"line":12,"column":32}},"14":{"start":{"line":13,"column":13},"end":{"line":13,"column":28}},"15":{"start":{"line":14,"column":17},"end":{"line":14,"column":38}},"16":{"start":{"line":15,"column":14},"end":{"line":15,"column":53}},"17":{"start":{"line":16,"column":17},"end":{"line":16,"column":44}},"18":{"start":{"line":17,"column":18},"end":{"line":17,"column":44}},"19":{"start":{"line":20,"column":8},"end":{"line":20,"column":67}},"20":{"start":{"line":21,"column":8},"end":{"line":21,"column":26}},"21":{"start":{"line":22,"column":8},"end":{"line":22,"column":51}},"22":{"start":{"line":23,"column":8},"end":{"line":23,"column":41}},"23":{"start":{"line":24,"column":8},"end":{"line":24,"column":44}},"24":{"start":{"line":25,"column":8},"end":{"line":25,"column":33}},"25":{"start":{"line":26,"column":8},"end":{"line":26,"column":115}},"26":{"start":{"line":27,"column":8},"end":{"line":27,"column":35}},"27":{"start":{"line":30,"column":8},"end":{"line":30,"column":53}},"28":{"start":{"line":33,"column":23},"end":{"line":33,"column":59}},"29":{"start":{"line":34,"column":8},"end":{"line":34,"column":39}},"30":{"start":{"line":37,"column":22},"end":{"line":54,"column":11}},"31":{"start":{"line":37,"column":55},"end":{"line":54,"column":10}},"32":{"start":{"line":38,"column":12},"end":{"line":40,"column":13}},"33":{"start":{"line":39,"column":16},"end":{"line":39,"column":73}},"34":{"start":{"line":41,"column":26},"end":{"line":41,"column":62}},"35":{"start":{"line":42,"column":12},"end":{"line":42,"column":60}},"36":{"start":{"line":43,"column":26},"end":{"line":43,"column":49}},"37":{"start":{"line":44,"column":12},"end":{"line":46,"column":15}},"38":{"start":{"line":45,"column":16},"end":{"line":45,"column":31}},"39":{"start":{"line":47,"column":22},"end":{"line":47,"column":35}},"40":{"start":{"line":48,"column":12},"end":{"line":53,"column":13}},"41":{"start":{"line":49,"column":16},"end":{"line":49,"column":62}},"42":{"start":{"line":52,"column":16},"end":{"line":52,"column":37}},"43":{"start":{"line":55,"column":8},"end":{"line":55,"column":23}},"44":{"start":{"line":58,"column":8},"end":{"line":58,"column":43}},"45":{"start":{"line":61,"column":22},"end":{"line":83,"column":11}},"46":{"start":{"line":61,"column":55},"end":{"line":83,"column":10}},"47":{"start":{"line":62,"column":12},"end":{"line":62,"column":62}},"48":{"start":{"line":63,"column":23},"end":{"line":63,"column":87}},"49":{"start":{"line":64,"column":23},"end":{"line":64,"column":44}},"50":{"start":{"line":65,"column":12},"end":{"line":82,"column":15}},"51":{"start":{"line":66,"column":16},"end":{"line":69,"column":17}},"52":{"start":{"line":67,"column":20},"end":{"line":67,"column":77}},"53":{"start":{"line":68,"column":20},"end":{"line":68,"column":32}},"54":{"start":{"line":70,"column":31},"end":{"line":70,"column":70}},"55":{"start":{"line":71,"column":16},"end":{"line":81,"column":17}},"56":{"start":{"line":72,"column":35},"end":{"line":72,"column":51}},"57":{"start":{"line":73,"column":34},"end":{"line":73,"column":71}},"58":{"start":{"line":74,"column":33},"end":{"line":74,"column":50}},"59":{"start":{"line":75,"column":32},"end":{"line":75,"column":50}},"60":{"start":{"line":76,"column":20},"end":{"line":76,"column":35}},"61":{"start":{"line":79,"column":20},"end":{"line":79,"column":115}},"62":{"start":{"line":80,"column":20},"end":{"line":80,"column":34}},"63":{"start":{"line":84,"column":8},"end":{"line":84,"column":23}},"64":{"start":{"line":87,"column":8},"end":{"line":97,"column":9}},"65":{"start":{"line":88,"column":12},"end":{"line":96,"column":13}},"66":{"start":{"line":89,"column":35},"end":{"line":94,"column":17}},"67":{"start":{"line":95,"column":16},"end":{"line":95,"column":50}},"68":{"start":{"line":98,"column":8},"end":{"line":108,"column":9}},"69":{"start":{"line":99,"column":12},"end":{"line":107,"column":13}},"70":{"start":{"line":100,"column":34},"end":{"line":105,"column":17}},"71":{"start":{"line":106,"column":16},"end":{"line":106,"column":48}},"72":{"start":{"line":111,"column":8},"end":{"line":120,"column":9}},"73":{"start":{"line":112,"column":29},"end":{"line":112,"column":52}},"74":{"start":{"line":113,"column":26},"end":{"line":113,"column":78}},"75":{"start":{"line":114,"column":29},"end":{"line":114,"column":83}},"76":{"start":{"line":115,"column":35},"end":{"line":115,"column":87}},"77":{"start":{"line":116,"column":27},"end":{"line":116,"column":75}},"78":{"start":{"line":117,"column":35},"end":{"line":117,"column":83}},"79":{"start":{"line":118,"column":12},"end":{"line":118,"column":55}},"80":{"start":{"line":119,"column":12},"end":{"line":119,"column":36}},"81":{"start":{"line":123,"column":8},"end":{"line":123,"column":112}},"82":{"start":{"line":126,"column":8},"end":{"line":128,"column":9}},"83":{"start":{"line":127,"column":12},"end":{"line":127,"column":40}},"84":{"start":{"line":129,"column":8},"end":{"line":129,"column":22}},"85":{"start":{"line":132,"column":0},"end":{"line":132,"column":34}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":44},"end":{"line":2,"column":45}},"loc":{"start":{"line":2,"column":89},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":36},"end":{"line":3,"column":37}},"loc":{"start":{"line":3,"column":63},"end":{"line":8,"column":5}},"line":3},"2":{"name":"fulfilled","decl":{"start":{"line":4,"column":17},"end":{"line":4,"column":26}},"loc":{"start":{"line":4,"column":34},"end":{"line":4,"column":99}},"line":4},"3":{"name":"rejected","decl":{"start":{"line":5,"column":17},"end":{"line":5,"column":25}},"loc":{"start":{"line":5,"column":33},"end":{"line":5,"column":99}},"line":5},"4":{"name":"step","decl":{"start":{"line":6,"column":17},"end":{"line":6,"column":21}},"loc":{"start":{"line":6,"column":30},"end":{"line":6,"column":151}},"line":6},"5":{"name":"(anonymous_5)","decl":{"start":{"line":6,"column":76},"end":{"line":6,"column":77}},"loc":{"start":{"line":6,"column":95},"end":{"line":6,"column":121}},"line":6},"6":{"name":"(anonymous_6)","decl":{"start":{"line":19,"column":4},"end":{"line":19,"column":5}},"loc":{"start":{"line":19,"column":85},"end":{"line":28,"column":5}},"line":19},"7":{"name":"(anonymous_7)","decl":{"start":{"line":29,"column":4},"end":{"line":29,"column":5}},"loc":{"start":{"line":29,"column":19},"end":{"line":31,"column":5}},"line":29},"8":{"name":"(anonymous_8)","decl":{"start":{"line":32,"column":4},"end":{"line":32,"column":5}},"loc":{"start":{"line":32,"column":35},"end":{"line":35,"column":5}},"line":32},"9":{"name":"(anonymous_9)","decl":{"start":{"line":36,"column":4},"end":{"line":36,"column":5}},"loc":{"start":{"line":36,"column":34},"end":{"line":56,"column":5}},"line":36},"10":{"name":"(anonymous_10)","decl":{"start":{"line":37,"column":34},"end":{"line":37,"column":35}},"loc":{"start":{"line":37,"column":55},"end":{"line":54,"column":10}},"line":37},"11":{"name":"(anonymous_11)","decl":{"start":{"line":37,"column":87},"end":{"line":37,"column":88}},"loc":{"start":{"line":37,"column":100},"end":{"line":54,"column":9}},"line":37},"12":{"name":"(anonymous_12)","decl":{"start":{"line":44,"column":26},"end":{"line":44,"column":27}},"loc":{"start":{"line":44,"column":36},"end":{"line":46,"column":13}},"line":44},"13":{"name":"(anonymous_13)","decl":{"start":{"line":57,"column":4},"end":{"line":57,"column":5}},"loc":{"start":{"line":57,"column":38},"end":{"line":59,"column":5}},"line":57},"14":{"name":"(anonymous_14)","decl":{"start":{"line":60,"column":4},"end":{"line":60,"column":5}},"loc":{"start":{"line":60,"column":23},"end":{"line":85,"column":5}},"line":60},"15":{"name":"(anonymous_15)","decl":{"start":{"line":61,"column":34},"end":{"line":61,"column":35}},"loc":{"start":{"line":61,"column":55},"end":{"line":83,"column":10}},"line":61},"16":{"name":"(anonymous_16)","decl":{"start":{"line":61,"column":87},"end":{"line":61,"column":88}},"loc":{"start":{"line":61,"column":100},"end":{"line":83,"column":9}},"line":61},"17":{"name":"(anonymous_17)","decl":{"start":{"line":65,"column":60},"end":{"line":65,"column":61}},"loc":{"start":{"line":65,"column":90},"end":{"line":82,"column":13}},"line":65},"18":{"name":"(anonymous_18)","decl":{"start":{"line":86,"column":4},"end":{"line":86,"column":5}},"loc":{"start":{"line":86,"column":24},"end":{"line":109,"column":5}},"line":86},"19":{"name":"(anonymous_19)","decl":{"start":{"line":110,"column":4},"end":{"line":110,"column":5}},"loc":{"start":{"line":110,"column":35},"end":{"line":121,"column":5}},"line":110},"20":{"name":"(anonymous_20)","decl":{"start":{"line":122,"column":4},"end":{"line":122,"column":5}},"loc":{"start":{"line":122,"column":26},"end":{"line":124,"column":5}},"line":122},"21":{"name":"(anonymous_21)","decl":{"start":{"line":125,"column":4},"end":{"line":125,"column":5}},"loc":{"start":{"line":125,"column":27},"end":{"line":130,"column":5}},"line":125}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":9,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":34}},"type":"binary-expr","locations":[{"start":{"line":3,"column":16},"end":{"line":3,"column":17}},{"start":{"line":3,"column":22},"end":{"line":3,"column":33}}],"line":3},"2":{"loc":{"start":{"line":6,"column":32},"end":{"line":6,"column":148}},"type":"cond-expr","locations":[{"start":{"line":6,"column":46},"end":{"line":6,"column":67}},{"start":{"line":6,"column":70},"end":{"line":6,"column":148}}],"line":6},"3":{"loc":{"start":{"line":24,"column":23},"end":{"line":24,"column":43}},"type":"binary-expr","locations":[{"start":{"line":24,"column":23},"end":{"line":24,"column":37}},{"start":{"line":24,"column":41},"end":{"line":24,"column":43}}],"line":24},"4":{"loc":{"start":{"line":38,"column":12},"end":{"line":40,"column":13}},"type":"if","locations":[{"start":{"line":38,"column":12},"end":{"line":40,"column":13}},{"start":{"line":38,"column":12},"end":{"line":40,"column":13}}],"line":38},"5":{"loc":{"start":{"line":38,"column":16},"end":{"line":38,"column":79}},"type":"binary-expr","locations":[{"start":{"line":38,"column":16},"end":{"line":38,"column":38}},{"start":{"line":38,"column":42},"end":{"line":38,"column":79}}],"line":38},"6":{"loc":{"start":{"line":48,"column":12},"end":{"line":53,"column":13}},"type":"if","locations":[{"start":{"line":48,"column":12},"end":{"line":53,"column":13}},{"start":{"line":48,"column":12},"end":{"line":53,"column":13}}],"line":48},"7":{"loc":{"start":{"line":66,"column":16},"end":{"line":69,"column":17}},"type":"if","locations":[{"start":{"line":66,"column":16},"end":{"line":69,"column":17}},{"start":{"line":66,"column":16},"end":{"line":69,"column":17}}],"line":66},"8":{"loc":{"start":{"line":67,"column":45},"end":{"line":67,"column":75}},"type":"cond-expr","locations":[{"start":{"line":67,"column":51},"end":{"line":67,"column":70}},{"start":{"line":67,"column":73},"end":{"line":67,"column":75}}],"line":67},"9":{"loc":{"start":{"line":87,"column":8},"end":{"line":97,"column":9}},"type":"if","locations":[{"start":{"line":87,"column":8},"end":{"line":97,"column":9}},{"start":{"line":87,"column":8},"end":{"line":97,"column":9}}],"line":87},"10":{"loc":{"start":{"line":87,"column":12},"end":{"line":87,"column":63}},"type":"binary-expr","locations":[{"start":{"line":87,"column":12},"end":{"line":87,"column":31}},{"start":{"line":87,"column":35},"end":{"line":87,"column":63}}],"line":87},"11":{"loc":{"start":{"line":88,"column":12},"end":{"line":96,"column":13}},"type":"if","locations":[{"start":{"line":88,"column":12},"end":{"line":96,"column":13}},{"start":{"line":88,"column":12},"end":{"line":96,"column":13}}],"line":88},"12":{"loc":{"start":{"line":93,"column":49},"end":{"line":93,"column":94}},"type":"binary-expr","locations":[{"start":{"line":93,"column":49},"end":{"line":93,"column":86}},{"start":{"line":93,"column":90},"end":{"line":93,"column":94}}],"line":93},"13":{"loc":{"start":{"line":98,"column":8},"end":{"line":108,"column":9}},"type":"if","locations":[{"start":{"line":98,"column":8},"end":{"line":108,"column":9}},{"start":{"line":98,"column":8},"end":{"line":108,"column":9}}],"line":98},"14":{"loc":{"start":{"line":99,"column":12},"end":{"line":107,"column":13}},"type":"if","locations":[{"start":{"line":99,"column":12},"end":{"line":107,"column":13}},{"start":{"line":99,"column":12},"end":{"line":107,"column":13}}],"line":99},"15":{"loc":{"start":{"line":111,"column":8},"end":{"line":120,"column":9}},"type":"if","locations":[{"start":{"line":111,"column":8},"end":{"line":120,"column":9}},{"start":{"line":111,"column":8},"end":{"line":120,"column":9}}],"line":111},"16":{"loc":{"start":{"line":111,"column":12},"end":{"line":111,"column":51}},"type":"binary-expr","locations":[{"start":{"line":111,"column":12},"end":{"line":111,"column":21}},{"start":{"line":111,"column":25},"end":{"line":111,"column":51}}],"line":111},"17":{"loc":{"start":{"line":123,"column":15},"end":{"line":123,"column":111}},"type":"cond-expr","locations":[{"start":{"line":123,"column":52},"end":{"line":123,"column":69}},{"start":{"line":123,"column":72},"end":{"line":123,"column":111}}],"line":123}},"s":{"0":1,"1":2,"2":0,"3":0,"4":0,"5":1,"6":1,"7":1,"8":1,"9":1,"10":2,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":2,"20":2,"21":2,"22":2,"23":2,"24":2,"25":2,"26":2,"27":0,"28":0,"29":0,"30":2,"31":2,"32":2,"33":1,"34":2,"35":1,"36":1,"37":1,"38":1,"39":1,"40":0,"41":0,"42":0,"43":2,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":0,"58":0,"59":0,"60":0,"61":0,"62":0,"63":0,"64":2,"65":2,"66":0,"67":0,"68":2,"69":2,"70":0,"71":0,"72":0,"73":0,"74":0,"75":0,"76":0,"77":0,"78":0,"79":0,"80":0,"81":0,"82":0,"83":0,"84":0,"85":1},"f":{"0":2,"1":2,"2":0,"3":1,"4":1,"5":1,"6":2,"7":0,"8":0,"9":2,"10":2,"11":2,"12":1,"13":0,"14":0,"15":0,"16":0,"17":0,"18":2,"19":0,"20":0,"21":0},"b":{"0":[1,1,1],"1":[2,2],"2":[0,1],"3":[2,2],"4":[1,1],"5":[2,1],"6":[0,0],"7":[0,0],"8":[0,0],"9":[2,0],"10":[2,0],"11":[0,2],"12":[0,0],"13":[2,0],"14":[0,2],"15":[0,0],"16":[0,0],"17":[0,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"4a09aa6a4d4f3389ef8f78e2ba1ee0c094818947","contentHash":"32e37cb87134a41226db04c6bf88542f_11.2.1"},"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Providers\\filesystemProvider.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Providers\\filesystemProvider.js","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":8,"column":7}},"2":{"start":{"line":4,"column":36},"end":{"line":4,"column":97}},"3":{"start":{"line":4,"column":42},"end":{"line":4,"column":70}},"4":{"start":{"line":4,"column":85},"end":{"line":4,"column":95}},"5":{"start":{"line":5,"column":35},"end":{"line":5,"column":97}},"6":{"start":{"line":5,"column":41},"end":{"line":5,"column":70}},"7":{"start":{"line":5,"column":85},"end":{"line":5,"column":95}},"8":{"start":{"line":6,"column":32},"end":{"line":6,"column":149}},"9":{"start":{"line":6,"column":97},"end":{"line":6,"column":119}},"10":{"start":{"line":7,"column":8},"end":{"line":7,"column":72}},"11":{"start":{"line":10,"column":13},"end":{"line":10,"column":28}},"12":{"start":{"line":11,"column":11},"end":{"line":11,"column":24}},"13":{"start":{"line":12,"column":15},"end":{"line":12,"column":35}},"14":{"start":{"line":13,"column":17},"end":{"line":13,"column":44}},"15":{"start":{"line":16,"column":8},"end":{"line":16,"column":34}},"16":{"start":{"line":17,"column":8},"end":{"line":17,"column":42}},"17":{"start":{"line":20,"column":8},"end":{"line":20,"column":49}},"18":{"start":{"line":23,"column":24},"end":{"line":23,"column":60}},"19":{"start":{"line":24,"column":8},"end":{"line":24,"column":59}},"20":{"start":{"line":27,"column":22},"end":{"line":36,"column":11}},"21":{"start":{"line":27,"column":55},"end":{"line":36,"column":10}},"22":{"start":{"line":28,"column":27},"end":{"line":28,"column":63}},"23":{"start":{"line":29,"column":12},"end":{"line":35,"column":13}},"24":{"start":{"line":30,"column":36},"end":{"line":30,"column":65}},"25":{"start":{"line":31,"column":16},"end":{"line":31,"column":39}},"26":{"start":{"line":34,"column":16},"end":{"line":34,"column":30}},"27":{"start":{"line":37,"column":8},"end":{"line":37,"column":23}},"28":{"start":{"line":40,"column":8},"end":{"line":58,"column":12}},"29":{"start":{"line":40,"column":48},"end":{"line":58,"column":10}},"30":{"start":{"line":41,"column":35},"end":{"line":41,"column":75}},"31":{"start":{"line":42,"column":27},"end":{"line":42,"column":55}},"32":{"start":{"line":43,"column":12},"end":{"line":43,"column":50}},"33":{"start":{"line":44,"column":12},"end":{"line":44,"column":93}},"34":{"start":{"line":45,"column":33},"end":{"line":45,"column":69}},"35":{"start":{"line":46,"column":12},"end":{"line":46,"column":38}},"36":{"start":{"line":47,"column":12},"end":{"line":54,"column":15}},"37":{"start":{"line":48,"column":16},"end":{"line":48,"column":95}},"38":{"start":{"line":49,"column":16},"end":{"line":51,"column":17}},"39":{"start":{"line":50,"column":20},"end":{"line":50,"column":39}},"40":{"start":{"line":52,"column":16},"end":{"line":52,"column":83}},"41":{"start":{"line":53,"column":16},"end":{"line":53,"column":30}},"42":{"start":{"line":55,"column":12},"end":{"line":57,"column":15}},"43":{"start":{"line":56,"column":16},"end":{"line":56,"column":30}},"44":{"start":{"line":61,"column":22},"end":{"line":82,"column":10}},"45":{"start":{"line":62,"column":24},"end":{"line":62,"column":26}},"46":{"start":{"line":63,"column":12},"end":{"line":81,"column":15}},"47":{"start":{"line":64,"column":16},"end":{"line":66,"column":17}},"48":{"start":{"line":65,"column":20},"end":{"line":65,"column":108}},"49":{"start":{"line":67,"column":16},"end":{"line":79,"column":17}},"50":{"start":{"line":68,"column":31},"end":{"line":68,"column":43}},"51":{"start":{"line":69,"column":35},"end":{"line":69,"column":61}},"52":{"start":{"line":70,"column":35},"end":{"line":70,"column":57}},"53":{"start":{"line":71,"column":31},"end":{"line":77,"column":21}},"54":{"start":{"line":78,"column":20},"end":{"line":78,"column":47}},"55":{"start":{"line":80,"column":16},"end":{"line":80,"column":31}},"56":{"start":{"line":83,"column":8},"end":{"line":83,"column":23}},"57":{"start":{"line":86,"column":8},"end":{"line":94,"column":9}},"58":{"start":{"line":87,"column":26},"end":{"line":87,"column":46}},"59":{"start":{"line":88,"column":12},"end":{"line":90,"column":13}},"60":{"start":{"line":89,"column":16},"end":{"line":89,"column":23}},"61":{"start":{"line":91,"column":12},"end":{"line":91,"column":51}},"62":{"start":{"line":92,"column":12},"end":{"line":92,"column":33}},"63":{"start":{"line":93,"column":12},"end":{"line":93,"column":48}},"64":{"start":{"line":97,"column":0},"end":{"line":97,"column":48}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":44},"end":{"line":2,"column":45}},"loc":{"start":{"line":2,"column":89},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":36},"end":{"line":3,"column":37}},"loc":{"start":{"line":3,"column":63},"end":{"line":8,"column":5}},"line":3},"2":{"name":"fulfilled","decl":{"start":{"line":4,"column":17},"end":{"line":4,"column":26}},"loc":{"start":{"line":4,"column":34},"end":{"line":4,"column":99}},"line":4},"3":{"name":"rejected","decl":{"start":{"line":5,"column":17},"end":{"line":5,"column":25}},"loc":{"start":{"line":5,"column":33},"end":{"line":5,"column":99}},"line":5},"4":{"name":"step","decl":{"start":{"line":6,"column":17},"end":{"line":6,"column":21}},"loc":{"start":{"line":6,"column":30},"end":{"line":6,"column":151}},"line":6},"5":{"name":"(anonymous_5)","decl":{"start":{"line":6,"column":76},"end":{"line":6,"column":77}},"loc":{"start":{"line":6,"column":95},"end":{"line":6,"column":121}},"line":6},"6":{"name":"(anonymous_6)","decl":{"start":{"line":15,"column":4},"end":{"line":15,"column":5}},"loc":{"start":{"line":15,"column":30},"end":{"line":18,"column":5}},"line":15},"7":{"name":"(anonymous_7)","decl":{"start":{"line":19,"column":4},"end":{"line":19,"column":5}},"loc":{"start":{"line":19,"column":19},"end":{"line":21,"column":5}},"line":19},"8":{"name":"(anonymous_8)","decl":{"start":{"line":22,"column":4},"end":{"line":22,"column":5}},"loc":{"start":{"line":22,"column":35},"end":{"line":25,"column":5}},"line":22},"9":{"name":"(anonymous_9)","decl":{"start":{"line":26,"column":4},"end":{"line":26,"column":5}},"loc":{"start":{"line":26,"column":34},"end":{"line":38,"column":5}},"line":26},"10":{"name":"(anonymous_10)","decl":{"start":{"line":27,"column":34},"end":{"line":27,"column":35}},"loc":{"start":{"line":27,"column":55},"end":{"line":36,"column":10}},"line":27},"11":{"name":"(anonymous_11)","decl":{"start":{"line":27,"column":87},"end":{"line":27,"column":88}},"loc":{"start":{"line":27,"column":100},"end":{"line":36,"column":9}},"line":27},"12":{"name":"(anonymous_12)","decl":{"start":{"line":39,"column":4},"end":{"line":39,"column":5}},"loc":{"start":{"line":39,"column":34},"end":{"line":59,"column":5}},"line":39},"13":{"name":"(anonymous_13)","decl":{"start":{"line":40,"column":27},"end":{"line":40,"column":28}},"loc":{"start":{"line":40,"column":48},"end":{"line":58,"column":10}},"line":40},"14":{"name":"(anonymous_14)","decl":{"start":{"line":40,"column":80},"end":{"line":40,"column":81}},"loc":{"start":{"line":40,"column":93},"end":{"line":58,"column":9}},"line":40},"15":{"name":"(anonymous_15)","decl":{"start":{"line":47,"column":29},"end":{"line":47,"column":30}},"loc":{"start":{"line":47,"column":35},"end":{"line":54,"column":13}},"line":47},"16":{"name":"(anonymous_16)","decl":{"start":{"line":55,"column":31},"end":{"line":55,"column":32}},"loc":{"start":{"line":55,"column":42},"end":{"line":57,"column":13}},"line":55},"17":{"name":"(anonymous_17)","decl":{"start":{"line":60,"column":4},"end":{"line":60,"column":5}},"loc":{"start":{"line":60,"column":44},"end":{"line":84,"column":5}},"line":60},"18":{"name":"(anonymous_18)","decl":{"start":{"line":61,"column":34},"end":{"line":61,"column":35}},"loc":{"start":{"line":61,"column":55},"end":{"line":82,"column":9}},"line":61},"19":{"name":"(anonymous_19)","decl":{"start":{"line":63,"column":34},"end":{"line":63,"column":35}},"loc":{"start":{"line":63,"column":52},"end":{"line":81,"column":13}},"line":63},"20":{"name":"(anonymous_20)","decl":{"start":{"line":85,"column":4},"end":{"line":85,"column":5}},"loc":{"start":{"line":85,"column":37},"end":{"line":95,"column":5}},"line":85}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":9,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":34}},"type":"binary-expr","locations":[{"start":{"line":3,"column":16},"end":{"line":3,"column":17}},{"start":{"line":3,"column":22},"end":{"line":3,"column":33}}],"line":3},"2":{"loc":{"start":{"line":6,"column":32},"end":{"line":6,"column":148}},"type":"cond-expr","locations":[{"start":{"line":6,"column":46},"end":{"line":6,"column":67}},{"start":{"line":6,"column":70},"end":{"line":6,"column":148}}],"line":6},"3":{"loc":{"start":{"line":49,"column":16},"end":{"line":51,"column":17}},"type":"if","locations":[{"start":{"line":49,"column":16},"end":{"line":51,"column":17}},{"start":{"line":49,"column":16},"end":{"line":51,"column":17}}],"line":49},"4":{"loc":{"start":{"line":64,"column":16},"end":{"line":66,"column":17}},"type":"if","locations":[{"start":{"line":64,"column":16},"end":{"line":66,"column":17}},{"start":{"line":64,"column":16},"end":{"line":66,"column":17}}],"line":64},"5":{"loc":{"start":{"line":72,"column":34},"end":{"line":72,"column":99}},"type":"cond-expr","locations":[{"start":{"line":72,"column":54},"end":{"line":72,"column":74}},{"start":{"line":72,"column":77},"end":{"line":72,"column":99}}],"line":72},"6":{"loc":{"start":{"line":73,"column":30},"end":{"line":73,"column":93}},"type":"cond-expr","locations":[{"start":{"line":73,"column":51},"end":{"line":73,"column":86}},{"start":{"line":73,"column":89},"end":{"line":73,"column":93}}],"line":73},"7":{"loc":{"start":{"line":86,"column":8},"end":{"line":94,"column":9}},"type":"if","locations":[{"start":{"line":86,"column":8},"end":{"line":94,"column":9}},{"start":{"line":86,"column":8},"end":{"line":94,"column":9}}],"line":86},"8":{"loc":{"start":{"line":88,"column":12},"end":{"line":90,"column":13}},"type":"if","locations":[{"start":{"line":88,"column":12},"end":{"line":90,"column":13}},{"start":{"line":88,"column":12},"end":{"line":90,"column":13}}],"line":88}},"s":{"0":1,"1":2,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":2,"9":0,"10":2,"11":1,"12":1,"13":1,"14":1,"15":2,"16":2,"17":0,"18":0,"19":0,"20":0,"21":0,"22":0,"23":0,"24":0,"25":0,"26":0,"27":0,"28":2,"29":2,"30":2,"31":2,"32":2,"33":2,"34":2,"35":2,"36":2,"37":2,"38":2,"39":2,"40":2,"41":2,"42":2,"43":0,"44":0,"45":0,"46":0,"47":0,"48":0,"49":0,"50":0,"51":0,"52":0,"53":0,"54":0,"55":0,"56":0,"57":2,"58":2,"59":2,"60":2,"61":0,"62":0,"63":0,"64":1},"f":{"0":2,"1":2,"2":0,"3":0,"4":2,"5":0,"6":2,"7":0,"8":0,"9":0,"10":0,"11":0,"12":2,"13":2,"14":2,"15":2,"16":0,"17":0,"18":0,"19":0,"20":2},"b":{"0":[1,1,1],"1":[2,2],"2":[2,0],"3":[2,0],"4":[0,0],"5":[0,0],"6":[0,0],"7":[2,0],"8":[2,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"972f3edf35d96ce8e00e3bb4e5a21d65995a64bd","contentHash":"1e4119cd7393bc34d4eaa98a8510adb3_11.2.1"},"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Providers\\stubProvider.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Providers\\stubProvider.js","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":8,"column":7}},"2":{"start":{"line":4,"column":36},"end":{"line":4,"column":97}},"3":{"start":{"line":4,"column":42},"end":{"line":4,"column":70}},"4":{"start":{"line":4,"column":85},"end":{"line":4,"column":95}},"5":{"start":{"line":5,"column":35},"end":{"line":5,"column":97}},"6":{"start":{"line":5,"column":41},"end":{"line":5,"column":70}},"7":{"start":{"line":5,"column":85},"end":{"line":5,"column":95}},"8":{"start":{"line":6,"column":32},"end":{"line":6,"column":149}},"9":{"start":{"line":6,"column":97},"end":{"line":6,"column":119}},"10":{"start":{"line":7,"column":8},"end":{"line":7,"column":72}},"11":{"start":{"line":10,"column":15},"end":{"line":10,"column":32}},"12":{"start":{"line":11,"column":15},"end":{"line":11,"column":35}},"13":{"start":{"line":12,"column":17},"end":{"line":12,"column":37}},"14":{"start":{"line":15,"column":8},"end":{"line":15,"column":44}},"15":{"start":{"line":16,"column":8},"end":{"line":16,"column":45}},"16":{"start":{"line":17,"column":8},"end":{"line":17,"column":41}},"17":{"start":{"line":18,"column":8},"end":{"line":18,"column":34}},"18":{"start":{"line":21,"column":8},"end":{"line":24,"column":11}},"19":{"start":{"line":22,"column":12},"end":{"line":22,"column":43}},"20":{"start":{"line":23,"column":12},"end":{"line":23,"column":244}},"21":{"start":{"line":27,"column":8},"end":{"line":33,"column":11}},"22":{"start":{"line":28,"column":12},"end":{"line":28,"column":47}},"23":{"start":{"line":29,"column":12},"end":{"line":31,"column":13}},"24":{"start":{"line":30,"column":16},"end":{"line":30,"column":68}},"25":{"start":{"line":32,"column":12},"end":{"line":32,"column":22}},"26":{"start":{"line":36,"column":8},"end":{"line":45,"column":11}},"27":{"start":{"line":37,"column":12},"end":{"line":37,"column":46}},"28":{"start":{"line":38,"column":12},"end":{"line":38,"column":52}},"29":{"start":{"line":39,"column":12},"end":{"line":39,"column":60}},"30":{"start":{"line":40,"column":22},"end":{"line":40,"column":43}},"31":{"start":{"line":41,"column":12},"end":{"line":41,"column":32}},"32":{"start":{"line":42,"column":12},"end":{"line":42,"column":60}},"33":{"start":{"line":43,"column":12},"end":{"line":43,"column":25}},"34":{"start":{"line":44,"column":12},"end":{"line":44,"column":21}},"35":{"start":{"line":48,"column":29},"end":{"line":48,"column":54}},"36":{"start":{"line":49,"column":21},"end":{"line":49,"column":104}},"37":{"start":{"line":50,"column":8},"end":{"line":50,"column":33}},"38":{"start":{"line":51,"column":8},"end":{"line":51,"column":41}},"39":{"start":{"line":52,"column":8},"end":{"line":52,"column":41}},"40":{"start":{"line":53,"column":8},"end":{"line":53,"column":35}},"41":{"start":{"line":54,"column":8},"end":{"line":54,"column":28}},"42":{"start":{"line":57,"column":8},"end":{"line":57,"column":37}},"43":{"start":{"line":60,"column":8},"end":{"line":60,"column":63}},"44":{"start":{"line":60,"column":38},"end":{"line":60,"column":61}},"45":{"start":{"line":63,"column":0},"end":{"line":63,"column":36}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":44},"end":{"line":2,"column":45}},"loc":{"start":{"line":2,"column":89},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":36},"end":{"line":3,"column":37}},"loc":{"start":{"line":3,"column":63},"end":{"line":8,"column":5}},"line":3},"2":{"name":"fulfilled","decl":{"start":{"line":4,"column":17},"end":{"line":4,"column":26}},"loc":{"start":{"line":4,"column":34},"end":{"line":4,"column":99}},"line":4},"3":{"name":"rejected","decl":{"start":{"line":5,"column":17},"end":{"line":5,"column":25}},"loc":{"start":{"line":5,"column":33},"end":{"line":5,"column":99}},"line":5},"4":{"name":"step","decl":{"start":{"line":6,"column":17},"end":{"line":6,"column":21}},"loc":{"start":{"line":6,"column":30},"end":{"line":6,"column":151}},"line":6},"5":{"name":"(anonymous_5)","decl":{"start":{"line":6,"column":76},"end":{"line":6,"column":77}},"loc":{"start":{"line":6,"column":95},"end":{"line":6,"column":121}},"line":6},"6":{"name":"(anonymous_6)","decl":{"start":{"line":14,"column":4},"end":{"line":14,"column":5}},"loc":{"start":{"line":14,"column":18},"end":{"line":19,"column":5}},"line":14},"7":{"name":"(anonymous_7)","decl":{"start":{"line":20,"column":4},"end":{"line":20,"column":5}},"loc":{"start":{"line":20,"column":19},"end":{"line":25,"column":5}},"line":20},"8":{"name":"(anonymous_8)","decl":{"start":{"line":21,"column":48},"end":{"line":21,"column":49}},"loc":{"start":{"line":21,"column":61},"end":{"line":24,"column":9}},"line":21},"9":{"name":"(anonymous_9)","decl":{"start":{"line":26,"column":4},"end":{"line":26,"column":5}},"loc":{"start":{"line":26,"column":35},"end":{"line":34,"column":5}},"line":26},"10":{"name":"(anonymous_10)","decl":{"start":{"line":27,"column":48},"end":{"line":27,"column":49}},"loc":{"start":{"line":27,"column":61},"end":{"line":33,"column":9}},"line":27},"11":{"name":"(anonymous_11)","decl":{"start":{"line":35,"column":4},"end":{"line":35,"column":5}},"loc":{"start":{"line":35,"column":34},"end":{"line":46,"column":5}},"line":35},"12":{"name":"(anonymous_12)","decl":{"start":{"line":36,"column":48},"end":{"line":36,"column":49}},"loc":{"start":{"line":36,"column":61},"end":{"line":45,"column":9}},"line":36},"13":{"name":"(anonymous_13)","decl":{"start":{"line":41,"column":22},"end":{"line":41,"column":23}},"loc":{"start":{"line":41,"column":28},"end":{"line":41,"column":31}},"line":41},"14":{"name":"(anonymous_14)","decl":{"start":{"line":47,"column":4},"end":{"line":47,"column":5}},"loc":{"start":{"line":47,"column":37},"end":{"line":55,"column":5}},"line":47},"15":{"name":"(anonymous_15)","decl":{"start":{"line":56,"column":4},"end":{"line":56,"column":5}},"loc":{"start":{"line":56,"column":38},"end":{"line":58,"column":5}},"line":56},"16":{"name":"(anonymous_16)","decl":{"start":{"line":59,"column":4},"end":{"line":59,"column":5}},"loc":{"start":{"line":59,"column":14},"end":{"line":61,"column":5}},"line":59},"17":{"name":"(anonymous_17)","decl":{"start":{"line":60,"column":27},"end":{"line":60,"column":28}},"loc":{"start":{"line":60,"column":38},"end":{"line":60,"column":61}},"line":60}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":9,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":34}},"type":"binary-expr","locations":[{"start":{"line":3,"column":16},"end":{"line":3,"column":17}},{"start":{"line":3,"column":22},"end":{"line":3,"column":33}}],"line":3},"2":{"loc":{"start":{"line":6,"column":32},"end":{"line":6,"column":148}},"type":"cond-expr","locations":[{"start":{"line":6,"column":46},"end":{"line":6,"column":67}},{"start":{"line":6,"column":70},"end":{"line":6,"column":148}}],"line":6},"3":{"loc":{"start":{"line":29,"column":12},"end":{"line":31,"column":13}},"type":"if","locations":[{"start":{"line":29,"column":12},"end":{"line":31,"column":13}},{"start":{"line":29,"column":12},"end":{"line":31,"column":13}}],"line":29},"4":{"loc":{"start":{"line":49,"column":21},"end":{"line":49,"column":104}},"type":"cond-expr","locations":[{"start":{"line":49,"column":59},"end":{"line":49,"column":87}},{"start":{"line":49,"column":90},"end":{"line":49,"column":104}}],"line":49}},"s":{"0":1,"1":33,"2":18,"3":18,"4":0,"5":0,"6":0,"7":0,"8":51,"9":18,"10":33,"11":1,"12":1,"13":1,"14":5,"15":5,"16":5,"17":5,"18":5,"19":5,"20":5,"21":10,"22":10,"23":10,"24":5,"25":5,"26":18,"27":18,"28":18,"29":18,"30":18,"31":18,"32":18,"33":18,"34":18,"35":30,"36":30,"37":30,"38":30,"39":30,"40":30,"41":30,"42":18,"43":18,"44":18,"45":1},"f":{"0":33,"1":33,"2":18,"3":0,"4":51,"5":18,"6":5,"7":5,"8":5,"9":10,"10":10,"11":18,"12":18,"13":0,"14":30,"15":18,"16":18,"17":18},"b":{"0":[1,1,1],"1":[33,0],"2":[33,18],"3":[5,5],"4":[20,10]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"db87a6ad9f66f682faa4f80d12de5089af668695","contentHash":"2d28a2750698a551fe286f5c0309d503_11.2.1"},"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\EngineTests\\workerTests.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\EngineTests\\workerTests.js","statementMap":{},"fnMap":{},"branchMap":{},"s":{},"f":{},"b":{},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"0f38fc65a1c05a43ba69d38322a80a0feca724ab","contentHash":"b5ebd76e41a0f3b2141b528e5b12fc2f_11.2.1"},"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\ProvidersTests\\filesystemProviderTests.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\ProvidersTests\\filesystemProviderTests.js","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":8,"column":7}},"2":{"start":{"line":4,"column":36},"end":{"line":4,"column":97}},"3":{"start":{"line":4,"column":42},"end":{"line":4,"column":70}},"4":{"start":{"line":4,"column":85},"end":{"line":4,"column":95}},"5":{"start":{"line":5,"column":35},"end":{"line":5,"column":97}},"6":{"start":{"line":5,"column":41},"end":{"line":5,"column":70}},"7":{"start":{"line":5,"column":85},"end":{"line":5,"column":95}},"8":{"start":{"line":6,"column":32},"end":{"line":6,"column":149}},"9":{"start":{"line":6,"column":97},"end":{"line":6,"column":119}},"10":{"start":{"line":7,"column":8},"end":{"line":7,"column":72}},"11":{"start":{"line":10,"column":12},"end":{"line":10,"column":28}},"12":{"start":{"line":11,"column":14},"end":{"line":11,"column":32}},"13":{"start":{"line":12,"column":0},"end":{"line":15,"column":3}},"14":{"start":{"line":16,"column":0},"end":{"line":23,"column":3}},"15":{"start":{"line":18,"column":27},"end":{"line":18,"column":44}},"16":{"start":{"line":19,"column":8},"end":{"line":19,"column":40}},"17":{"start":{"line":20,"column":8},"end":{"line":20,"column":28}},"18":{"start":{"line":22,"column":22},"end":{"line":22,"column":26}},"19":{"start":{"line":24,"column":11},"end":{"line":24,"column":26}},"20":{"start":{"line":25,"column":13},"end":{"line":25,"column":30}},"21":{"start":{"line":26,"column":15},"end":{"line":26,"column":32}},"22":{"start":{"line":27,"column":15},"end":{"line":27,"column":35}},"23":{"start":{"line":28,"column":18},"end":{"line":28,"column":41}},"24":{"start":{"line":29,"column":0},"end":{"line":52,"column":3}},"25":{"start":{"line":30,"column":4},"end":{"line":38,"column":8}},"26":{"start":{"line":30,"column":70},"end":{"line":38,"column":6}},"27":{"start":{"line":31,"column":27},"end":{"line":31,"column":139}},"28":{"start":{"line":32,"column":32},"end":{"line":32,"column":76}},"29":{"start":{"line":33,"column":18},"end":{"line":33,"column":39}},"30":{"start":{"line":34,"column":8},"end":{"line":34,"column":28}},"31":{"start":{"line":35,"column":8},"end":{"line":35,"column":31}},"32":{"start":{"line":36,"column":8},"end":{"line":36,"column":21}},"33":{"start":{"line":37,"column":28},"end":{"line":37,"column":84}},"34":{"start":{"line":39,"column":4},"end":{"line":48,"column":8}},"35":{"start":{"line":39,"column":55},"end":{"line":48,"column":6}},"36":{"start":{"line":40,"column":27},"end":{"line":40,"column":134}},"37":{"start":{"line":41,"column":32},"end":{"line":41,"column":76}},"38":{"start":{"line":42,"column":18},"end":{"line":42,"column":39}},"39":{"start":{"line":43,"column":8},"end":{"line":43,"column":28}},"40":{"start":{"line":44,"column":8},"end":{"line":44,"column":31}},"41":{"start":{"line":45,"column":8},"end":{"line":45,"column":21}},"42":{"start":{"line":46,"column":28},"end":{"line":46,"column":84}},"43":{"start":{"line":47,"column":8},"end":{"line":47,"column":120}},"44":{"start":{"line":49,"column":4},"end":{"line":51,"column":7}},"45":{"start":{"line":50,"column":8},"end":{"line":50,"column":26}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":44},"end":{"line":2,"column":45}},"loc":{"start":{"line":2,"column":89},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":36},"end":{"line":3,"column":37}},"loc":{"start":{"line":3,"column":63},"end":{"line":8,"column":5}},"line":3},"2":{"name":"fulfilled","decl":{"start":{"line":4,"column":17},"end":{"line":4,"column":26}},"loc":{"start":{"line":4,"column":34},"end":{"line":4,"column":99}},"line":4},"3":{"name":"rejected","decl":{"start":{"line":5,"column":17},"end":{"line":5,"column":25}},"loc":{"start":{"line":5,"column":33},"end":{"line":5,"column":99}},"line":5},"4":{"name":"step","decl":{"start":{"line":6,"column":17},"end":{"line":6,"column":21}},"loc":{"start":{"line":6,"column":30},"end":{"line":6,"column":151}},"line":6},"5":{"name":"(anonymous_5)","decl":{"start":{"line":6,"column":76},"end":{"line":6,"column":77}},"loc":{"start":{"line":6,"column":95},"end":{"line":6,"column":121}},"line":6},"6":{"name":"(anonymous_6)","decl":{"start":{"line":17,"column":23},"end":{"line":17,"column":24}},"loc":{"start":{"line":17,"column":30},"end":{"line":21,"column":5}},"line":17},"7":{"name":"(anonymous_7)","decl":{"start":{"line":19,"column":30},"end":{"line":19,"column":31}},"loc":{"start":{"line":19,"column":36},"end":{"line":19,"column":39}},"line":19},"8":{"name":"(anonymous_8)","decl":{"start":{"line":22,"column":16},"end":{"line":22,"column":17}},"loc":{"start":{"line":22,"column":22},"end":{"line":22,"column":26}},"line":22},"9":{"name":"(anonymous_9)","decl":{"start":{"line":29,"column":47},"end":{"line":29,"column":48}},"loc":{"start":{"line":29,"column":53},"end":{"line":52,"column":1}},"line":29},"10":{"name":"(anonymous_10)","decl":{"start":{"line":30,"column":64},"end":{"line":30,"column":65}},"loc":{"start":{"line":30,"column":70},"end":{"line":38,"column":6}},"line":30},"11":{"name":"(anonymous_11)","decl":{"start":{"line":30,"column":102},"end":{"line":30,"column":103}},"loc":{"start":{"line":30,"column":115},"end":{"line":38,"column":5}},"line":30},"12":{"name":"(anonymous_12)","decl":{"start":{"line":34,"column":18},"end":{"line":34,"column":19}},"loc":{"start":{"line":34,"column":24},"end":{"line":34,"column":27}},"line":34},"13":{"name":"(anonymous_13)","decl":{"start":{"line":39,"column":49},"end":{"line":39,"column":50}},"loc":{"start":{"line":39,"column":55},"end":{"line":48,"column":6}},"line":39},"14":{"name":"(anonymous_14)","decl":{"start":{"line":39,"column":87},"end":{"line":39,"column":88}},"loc":{"start":{"line":39,"column":100},"end":{"line":48,"column":5}},"line":39},"15":{"name":"(anonymous_15)","decl":{"start":{"line":43,"column":18},"end":{"line":43,"column":19}},"loc":{"start":{"line":43,"column":24},"end":{"line":43,"column":27}},"line":43},"16":{"name":"(anonymous_16)","decl":{"start":{"line":49,"column":10},"end":{"line":49,"column":11}},"loc":{"start":{"line":49,"column":16},"end":{"line":51,"column":5}},"line":49}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":9,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":34}},"type":"binary-expr","locations":[{"start":{"line":3,"column":16},"end":{"line":3,"column":17}},{"start":{"line":3,"column":22},"end":{"line":3,"column":33}}],"line":3},"2":{"loc":{"start":{"line":6,"column":32},"end":{"line":6,"column":148}},"type":"cond-expr","locations":[{"start":{"line":6,"column":46},"end":{"line":6,"column":67}},{"start":{"line":6,"column":70},"end":{"line":6,"column":148}}],"line":6}},"s":{"0":1,"1":2,"2":2,"3":2,"4":0,"5":0,"6":0,"7":0,"8":4,"9":2,"10":2,"11":1,"12":1,"13":1,"14":1,"15":0,"16":0,"17":0,"18":0,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1},"f":{"0":2,"1":2,"2":2,"3":0,"4":4,"5":2,"6":0,"7":0,"8":0,"9":1,"10":1,"11":1,"12":0,"13":1,"14":1,"15":0,"16":1},"b":{"0":[1,1,1],"1":[2,2],"2":[2,2]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"33119e59040154812ba5ceafa7c3ba115b4fcf44","contentHash":"ae1b62f618d79fec8b24f594610026d0_11.2.1"},"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\ProvidersTests\\webProviderTests.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\ProvidersTests\\webProviderTests.js","statementMap":{"0":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"1":{"start":{"line":3,"column":4},"end":{"line":8,"column":7}},"2":{"start":{"line":4,"column":36},"end":{"line":4,"column":97}},"3":{"start":{"line":4,"column":42},"end":{"line":4,"column":70}},"4":{"start":{"line":4,"column":85},"end":{"line":4,"column":95}},"5":{"start":{"line":5,"column":35},"end":{"line":5,"column":97}},"6":{"start":{"line":5,"column":41},"end":{"line":5,"column":70}},"7":{"start":{"line":5,"column":85},"end":{"line":5,"column":95}},"8":{"start":{"line":6,"column":32},"end":{"line":6,"column":149}},"9":{"start":{"line":6,"column":97},"end":{"line":6,"column":119}},"10":{"start":{"line":7,"column":8},"end":{"line":7,"column":72}},"11":{"start":{"line":10,"column":12},"end":{"line":10,"column":28}},"12":{"start":{"line":11,"column":14},"end":{"line":11,"column":32}},"13":{"start":{"line":12,"column":0},"end":{"line":15,"column":3}},"14":{"start":{"line":16,"column":0},"end":{"line":23,"column":3}},"15":{"start":{"line":18,"column":27},"end":{"line":18,"column":44}},"16":{"start":{"line":19,"column":8},"end":{"line":19,"column":40}},"17":{"start":{"line":20,"column":8},"end":{"line":20,"column":28}},"18":{"start":{"line":22,"column":22},"end":{"line":22,"column":26}},"19":{"start":{"line":24,"column":0},"end":{"line":31,"column":3}},"20":{"start":{"line":26,"column":8},"end":{"line":26,"column":23}},"21":{"start":{"line":29,"column":8},"end":{"line":29,"column":41}},"22":{"start":{"line":32,"column":11},"end":{"line":32,"column":26}},"23":{"start":{"line":33,"column":13},"end":{"line":33,"column":30}},"24":{"start":{"line":34,"column":15},"end":{"line":34,"column":32}},"25":{"start":{"line":35,"column":15},"end":{"line":35,"column":35}},"26":{"start":{"line":36,"column":18},"end":{"line":36,"column":41}},"27":{"start":{"line":37,"column":21},"end":{"line":37,"column":64}},"28":{"start":{"line":38,"column":0},"end":{"line":71,"column":3}},"29":{"start":{"line":39,"column":4},"end":{"line":52,"column":8}},"30":{"start":{"line":39,"column":61},"end":{"line":52,"column":6}},"31":{"start":{"line":40,"column":22},"end":{"line":50,"column":10}},"32":{"start":{"line":41,"column":31},"end":{"line":41,"column":143}},"33":{"start":{"line":42,"column":30},"end":{"line":42,"column":163}},"34":{"start":{"line":43,"column":25},"end":{"line":43,"column":66}},"35":{"start":{"line":44,"column":12},"end":{"line":49,"column":15}},"36":{"start":{"line":45,"column":16},"end":{"line":45,"column":25}},"37":{"start":{"line":47,"column":16},"end":{"line":47,"column":87}},"38":{"start":{"line":48,"column":16},"end":{"line":48,"column":26}},"39":{"start":{"line":51,"column":8},"end":{"line":51,"column":23}},"40":{"start":{"line":53,"column":4},"end":{"line":67,"column":8}},"41":{"start":{"line":53,"column":46},"end":{"line":67,"column":6}},"42":{"start":{"line":54,"column":22},"end":{"line":65,"column":10}},"43":{"start":{"line":55,"column":31},"end":{"line":55,"column":138}},"44":{"start":{"line":56,"column":12},"end":{"line":56,"column":39}},"45":{"start":{"line":57,"column":12},"end":{"line":57,"column":78}},"46":{"start":{"line":58,"column":30},"end":{"line":58,"column":163}},"47":{"start":{"line":59,"column":25},"end":{"line":59,"column":66}},"48":{"start":{"line":60,"column":12},"end":{"line":64,"column":15}},"49":{"start":{"line":61,"column":16},"end":{"line":61,"column":25}},"50":{"start":{"line":63,"column":16},"end":{"line":63,"column":26}},"51":{"start":{"line":66,"column":8},"end":{"line":66,"column":23}},"52":{"start":{"line":68,"column":4},"end":{"line":70,"column":7}},"53":{"start":{"line":69,"column":8},"end":{"line":69,"column":26}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":2,"column":44},"end":{"line":2,"column":45}},"loc":{"start":{"line":2,"column":89},"end":{"line":9,"column":1}},"line":2},"1":{"name":"(anonymous_1)","decl":{"start":{"line":3,"column":36},"end":{"line":3,"column":37}},"loc":{"start":{"line":3,"column":63},"end":{"line":8,"column":5}},"line":3},"2":{"name":"fulfilled","decl":{"start":{"line":4,"column":17},"end":{"line":4,"column":26}},"loc":{"start":{"line":4,"column":34},"end":{"line":4,"column":99}},"line":4},"3":{"name":"rejected","decl":{"start":{"line":5,"column":17},"end":{"line":5,"column":25}},"loc":{"start":{"line":5,"column":33},"end":{"line":5,"column":99}},"line":5},"4":{"name":"step","decl":{"start":{"line":6,"column":17},"end":{"line":6,"column":21}},"loc":{"start":{"line":6,"column":30},"end":{"line":6,"column":151}},"line":6},"5":{"name":"(anonymous_5)","decl":{"start":{"line":6,"column":76},"end":{"line":6,"column":77}},"loc":{"start":{"line":6,"column":95},"end":{"line":6,"column":121}},"line":6},"6":{"name":"(anonymous_6)","decl":{"start":{"line":17,"column":23},"end":{"line":17,"column":24}},"loc":{"start":{"line":17,"column":30},"end":{"line":21,"column":5}},"line":17},"7":{"name":"(anonymous_7)","decl":{"start":{"line":19,"column":30},"end":{"line":19,"column":31}},"loc":{"start":{"line":19,"column":36},"end":{"line":19,"column":39}},"line":19},"8":{"name":"(anonymous_8)","decl":{"start":{"line":22,"column":16},"end":{"line":22,"column":17}},"loc":{"start":{"line":22,"column":22},"end":{"line":22,"column":26}},"line":22},"9":{"name":"(anonymous_9)","decl":{"start":{"line":25,"column":9},"end":{"line":25,"column":10}},"loc":{"start":{"line":25,"column":16},"end":{"line":27,"column":5}},"line":25},"10":{"name":"(anonymous_10)","decl":{"start":{"line":28,"column":16},"end":{"line":28,"column":17}},"loc":{"start":{"line":28,"column":57},"end":{"line":30,"column":5}},"line":28},"11":{"name":"(anonymous_11)","decl":{"start":{"line":38,"column":40},"end":{"line":38,"column":41}},"loc":{"start":{"line":38,"column":46},"end":{"line":71,"column":1}},"line":38},"12":{"name":"(anonymous_12)","decl":{"start":{"line":39,"column":55},"end":{"line":39,"column":56}},"loc":{"start":{"line":39,"column":61},"end":{"line":52,"column":6}},"line":39},"13":{"name":"(anonymous_13)","decl":{"start":{"line":39,"column":93},"end":{"line":39,"column":94}},"loc":{"start":{"line":39,"column":106},"end":{"line":52,"column":5}},"line":39},"14":{"name":"(anonymous_14)","decl":{"start":{"line":40,"column":34},"end":{"line":40,"column":35}},"loc":{"start":{"line":40,"column":55},"end":{"line":50,"column":9}},"line":40},"15":{"name":"(anonymous_15)","decl":{"start":{"line":44,"column":24},"end":{"line":44,"column":25}},"loc":{"start":{"line":44,"column":30},"end":{"line":46,"column":13}},"line":44},"16":{"name":"(anonymous_16)","decl":{"start":{"line":46,"column":21},"end":{"line":46,"column":22}},"loc":{"start":{"line":46,"column":33},"end":{"line":49,"column":13}},"line":46},"17":{"name":"(anonymous_17)","decl":{"start":{"line":53,"column":40},"end":{"line":53,"column":41}},"loc":{"start":{"line":53,"column":46},"end":{"line":67,"column":6}},"line":53},"18":{"name":"(anonymous_18)","decl":{"start":{"line":53,"column":78},"end":{"line":53,"column":79}},"loc":{"start":{"line":53,"column":91},"end":{"line":67,"column":5}},"line":53},"19":{"name":"(anonymous_19)","decl":{"start":{"line":54,"column":34},"end":{"line":54,"column":35}},"loc":{"start":{"line":54,"column":55},"end":{"line":65,"column":9}},"line":54},"20":{"name":"(anonymous_20)","decl":{"start":{"line":60,"column":24},"end":{"line":60,"column":25}},"loc":{"start":{"line":60,"column":30},"end":{"line":62,"column":13}},"line":60},"21":{"name":"(anonymous_21)","decl":{"start":{"line":62,"column":21},"end":{"line":62,"column":22}},"loc":{"start":{"line":62,"column":33},"end":{"line":64,"column":13}},"line":62},"22":{"name":"(anonymous_22)","decl":{"start":{"line":68,"column":10},"end":{"line":68,"column":11}},"loc":{"start":{"line":68,"column":16},"end":{"line":70,"column":5}},"line":68}},"branchMap":{"0":{"loc":{"start":{"line":2,"column":16},"end":{"line":9,"column":1}},"type":"binary-expr","locations":[{"start":{"line":2,"column":17},"end":{"line":2,"column":21}},{"start":{"line":2,"column":25},"end":{"line":2,"column":39}},{"start":{"line":2,"column":44},"end":{"line":9,"column":1}}],"line":2},"1":{"loc":{"start":{"line":3,"column":16},"end":{"line":3,"column":34}},"type":"binary-expr","locations":[{"start":{"line":3,"column":16},"end":{"line":3,"column":17}},{"start":{"line":3,"column":22},"end":{"line":3,"column":33}}],"line":3},"2":{"loc":{"start":{"line":6,"column":32},"end":{"line":6,"column":148}},"type":"cond-expr","locations":[{"start":{"line":6,"column":46},"end":{"line":6,"column":67}},{"start":{"line":6,"column":70},"end":{"line":6,"column":148}}],"line":6}},"s":{"0":1,"1":2,"2":0,"3":0,"4":0,"5":0,"6":0,"7":0,"8":2,"9":0,"10":2,"11":1,"12":1,"13":1,"14":1,"15":0,"16":0,"17":0,"18":0,"19":1,"20":0,"21":0,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":0,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":0,"50":1,"51":1,"52":1,"53":1},"f":{"0":2,"1":2,"2":0,"3":0,"4":2,"5":0,"6":0,"7":0,"8":0,"9":0,"10":0,"11":1,"12":1,"13":1,"14":1,"15":0,"16":1,"17":1,"18":1,"19":1,"20":0,"21":1,"22":1},"b":{"0":[1,1,1],"1":[2,2],"2":[2,0]},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"9f0426de688a5f4383d7e3fc5766f1e2567b87b6","contentHash":"86118a8b3a28234b418ce24cdc189b6e_11.2.1"},"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Providers\\handlers\\basiccreds.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\Providers\\handlers\\basiccreds.js","statementMap":{"0":{"start":{"line":4,"column":8},"end":{"line":4,"column":33}},"1":{"start":{"line":5,"column":8},"end":{"line":5,"column":33}},"2":{"start":{"line":8,"column":8},"end":{"line":8,"column":121}},"3":{"start":{"line":9,"column":8},"end":{"line":9,"column":62}},"4":{"start":{"line":12,"column":8},"end":{"line":12,"column":21}},"5":{"start":{"line":17,"column":0},"end":{"line":17,"column":56}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":3,"column":4},"end":{"line":3,"column":5}},"loc":{"start":{"line":3,"column":36},"end":{"line":6,"column":5}},"line":3},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":4},"end":{"line":7,"column":5}},"loc":{"start":{"line":7,"column":28},"end":{"line":10,"column":5}},"line":7},"2":{"name":"(anonymous_2)","decl":{"start":{"line":11,"column":4},"end":{"line":11,"column":5}},"loc":{"start":{"line":11,"column":33},"end":{"line":13,"column":5}},"line":11},"3":{"name":"(anonymous_3)","decl":{"start":{"line":14,"column":4},"end":{"line":14,"column":5}},"loc":{"start":{"line":14,"column":77},"end":{"line":15,"column":5}},"line":14}},"branchMap":{},"s":{"0":2,"1":2,"2":1,"3":1,"4":0,"5":1},"f":{"0":2,"1":1,"2":0,"3":0},"b":{},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"0d17b40382659ef6cc197d1d2143b1aa5562a155","contentHash":"5f5828eb3848888ce2eb2e579d63b1fb_11.2.1"},"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\StoreTests\\artifactItemStoreTests.js":{"path":"c:\\vsts-rm-extensions\\Extensions\\ArtifactEngine\\StoreTests\\artifactItemStoreTests.js","statementMap":{"0":{"start":{"line":2,"column":12},"end":{"line":2,"column":28}},"1":{"start":{"line":3,"column":15},"end":{"line":3,"column":32}},"2":{"start":{"line":4,"column":15},"end":{"line":4,"column":35}},"3":{"start":{"line":5,"column":28},"end":{"line":5,"column":65}},"4":{"start":{"line":6,"column":0},"end":{"line":12,"column":3}},"5":{"start":{"line":7,"column":4},"end":{"line":11,"column":7}},"6":{"start":{"line":8,"column":32},"end":{"line":8,"column":75}},"7":{"start":{"line":9,"column":8},"end":{"line":9,"column":61}},"8":{"start":{"line":10,"column":8},"end":{"line":10,"column":50}},"9":{"start":{"line":13,"column":0},"end":{"line":22,"column":3}},"10":{"start":{"line":14,"column":4},"end":{"line":21,"column":7}},"11":{"start":{"line":15,"column":32},"end":{"line":15,"column":75}},"12":{"start":{"line":16,"column":27},"end":{"line":16,"column":52}},"13":{"start":{"line":17,"column":8},"end":{"line":17,"column":36}},"14":{"start":{"line":18,"column":8},"end":{"line":18,"column":48}},"15":{"start":{"line":19,"column":8},"end":{"line":19,"column":48}},"16":{"start":{"line":20,"column":8},"end":{"line":20,"column":50}},"17":{"start":{"line":23,"column":0},"end":{"line":33,"column":3}},"18":{"start":{"line":24,"column":4},"end":{"line":32,"column":7}},"19":{"start":{"line":25,"column":32},"end":{"line":25,"column":75}},"20":{"start":{"line":26,"column":28},"end":{"line":26,"column":53}},"21":{"start":{"line":27,"column":8},"end":{"line":27,"column":37}},"22":{"start":{"line":28,"column":28},"end":{"line":28,"column":53}},"23":{"start":{"line":29,"column":8},"end":{"line":29,"column":37}},"24":{"start":{"line":30,"column":8},"end":{"line":30,"column":67}},"25":{"start":{"line":31,"column":8},"end":{"line":31,"column":50}},"26":{"start":{"line":34,"column":0},"end":{"line":42,"column":3}},"27":{"start":{"line":35,"column":4},"end":{"line":41,"column":7}},"28":{"start":{"line":36,"column":32},"end":{"line":36,"column":75}},"29":{"start":{"line":37,"column":27},"end":{"line":37,"column":52}},"30":{"start":{"line":38,"column":8},"end":{"line":38,"column":36}},"31":{"start":{"line":39,"column":8},"end":{"line":39,"column":48}},"32":{"start":{"line":40,"column":8},"end":{"line":40,"column":87}},"33":{"start":{"line":43,"column":0},"end":{"line":49,"column":3}},"34":{"start":{"line":44,"column":4},"end":{"line":48,"column":7}},"35":{"start":{"line":45,"column":32},"end":{"line":45,"column":75}},"36":{"start":{"line":46,"column":8},"end":{"line":46,"column":49}},"37":{"start":{"line":47,"column":8},"end":{"line":47,"column":74}},"38":{"start":{"line":50,"column":0},"end":{"line":62,"column":3}},"39":{"start":{"line":51,"column":4},"end":{"line":61,"column":7}},"40":{"start":{"line":52,"column":32},"end":{"line":52,"column":75}},"41":{"start":{"line":53,"column":28},"end":{"line":53,"column":53}},"42":{"start":{"line":54,"column":8},"end":{"line":54,"column":37}},"43":{"start":{"line":55,"column":28},"end":{"line":55,"column":53}},"44":{"start":{"line":56,"column":8},"end":{"line":56,"column":37}},"45":{"start":{"line":57,"column":8},"end":{"line":57,"column":49}},"46":{"start":{"line":58,"column":8},"end":{"line":58,"column":49}},"47":{"start":{"line":59,"column":8},"end":{"line":59,"column":49}},"48":{"start":{"line":60,"column":8},"end":{"line":60,"column":88}},"49":{"start":{"line":63,"column":0},"end":{"line":72,"column":3}},"50":{"start":{"line":64,"column":4},"end":{"line":71,"column":7}},"51":{"start":{"line":65,"column":32},"end":{"line":65,"column":75}},"52":{"start":{"line":66,"column":28},"end":{"line":66,"column":53}},"53":{"start":{"line":67,"column":8},"end":{"line":67,"column":37}},"54":{"start":{"line":68,"column":8},"end":{"line":68,"column":49}},"55":{"start":{"line":69,"column":8},"end":{"line":69,"column":49}},"56":{"start":{"line":70,"column":8},"end":{"line":70,"column":74}},"57":{"start":{"line":73,"column":0},"end":{"line":82,"column":3}},"58":{"start":{"line":74,"column":4},"end":{"line":81,"column":7}},"59":{"start":{"line":75,"column":32},"end":{"line":75,"column":75}},"60":{"start":{"line":76,"column":28},"end":{"line":76,"column":53}},"61":{"start":{"line":77,"column":8},"end":{"line":77,"column":37}},"62":{"start":{"line":78,"column":8},"end":{"line":78,"column":49}},"63":{"start":{"line":79,"column":8},"end":{"line":79,"column":81}},"64":{"start":{"line":80,"column":8},"end":{"line":80,"column":129}},"65":{"start":{"line":80,"column":62},"end":{"line":80,"column":92}},"66":{"start":{"line":83,"column":0},"end":{"line":90,"column":3}},"67":{"start":{"line":84,"column":4},"end":{"line":89,"column":7}},"68":{"start":{"line":85,"column":32},"end":{"line":85,"column":75}},"69":{"start":{"line":86,"column":28},"end":{"line":86,"column":53}},"70":{"start":{"line":87,"column":8},"end":{"line":87,"column":37}},"71":{"start":{"line":88,"column":8},"end":{"line":88,"column":81}},"72":{"start":{"line":91,"column":0},"end":{"line":100,"column":3}},"73":{"start":{"line":92,"column":4},"end":{"line":99,"column":7}},"74":{"start":{"line":93,"column":32},"end":{"line":93,"column":75}},"75":{"start":{"line":94,"column":28},"end":{"line":94,"column":53}},"76":{"start":{"line":95,"column":8},"end":{"line":95,"column":37}},"77":{"start":{"line":96,"column":8},"end":{"line":96,"column":49}},"78":{"start":{"line":97,"column":8},"end":{"line":97,"column":81}},"79":{"start":{"line":98,"column":8},"end":{"line":98,"column":117}},"80":{"start":{"line":98,"column":62},"end":{"line":98,"column":92}},"81":{"start":{"line":101,"column":0},"end":{"line":110,"column":3}},"82":{"start":{"line":102,"column":4},"end":{"line":109,"column":7}},"83":{"start":{"line":103,"column":32},"end":{"line":103,"column":75}},"84":{"start":{"line":104,"column":28},"end":{"line":104,"column":53}},"85":{"start":{"line":105,"column":8},"end":{"line":105,"column":37}},"86":{"start":{"line":106,"column":8},"end":{"line":106,"column":49}},"87":{"start":{"line":107,"column":8},"end":{"line":107,"column":84}},"88":{"start":{"line":108,"column":8},"end":{"line":108,"column":117}},"89":{"start":{"line":108,"column":62},"end":{"line":108,"column":92}},"90":{"start":{"line":111,"column":0},"end":{"line":120,"column":3}},"91":{"start":{"line":112,"column":4},"end":{"line":119,"column":7}},"92":{"start":{"line":113,"column":32},"end":{"line":113,"column":75}},"93":{"start":{"line":114,"column":28},"end":{"line":114,"column":53}},"94":{"start":{"line":115,"column":8},"end":{"line":115,"column":37}},"95":{"start":{"line":116,"column":8},"end":{"line":116,"column":49}},"96":{"start":{"line":117,"column":8},"end":{"line":117,"column":81}},"97":{"start":{"line":118,"column":8},"end":{"line":118,"column":120}},"98":{"start":{"line":118,"column":65},"end":{"line":118,"column":95}},"99":{"start":{"line":121,"column":0},"end":{"line":130,"column":3}},"100":{"start":{"line":122,"column":4},"end":{"line":129,"column":7}},"101":{"start":{"line":123,"column":32},"end":{"line":123,"column":75}},"102":{"start":{"line":124,"column":28},"end":{"line":124,"column":53}},"103":{"start":{"line":125,"column":8},"end":{"line":125,"column":37}},"104":{"start":{"line":126,"column":8},"end":{"line":126,"column":49}},"105":{"start":{"line":127,"column":8},"end":{"line":127,"column":83}},"106":{"start":{"line":128,"column":8},"end":{"line":128,"column":120}},"107":{"start":{"line":128,"column":65},"end":{"line":128,"column":95}},"108":{"start":{"line":131,"column":0},"end":{"line":140,"column":3}},"109":{"start":{"line":132,"column":4},"end":{"line":139,"column":7}},"110":{"start":{"line":133,"column":32},"end":{"line":133,"column":75}},"111":{"start":{"line":134,"column":28},"end":{"line":134,"column":53}},"112":{"start":{"line":135,"column":8},"end":{"line":135,"column":37}},"113":{"start":{"line":136,"column":8},"end":{"line":136,"column":49}},"114":{"start":{"line":137,"column":8},"end":{"line":137,"column":80}},"115":{"start":{"line":138,"column":8},"end":{"line":138,"column":120}},"116":{"start":{"line":138,"column":65},"end":{"line":138,"column":95}},"117":{"start":{"line":141,"column":0},"end":{"line":151,"column":3}},"118":{"start":{"line":142,"column":4},"end":{"line":150,"column":7}},"119":{"start":{"line":143,"column":32},"end":{"line":143,"column":75}},"120":{"start":{"line":144,"column":27},"end":{"line":144,"column":52}},"121":{"start":{"line":145,"column":8},"end":{"line":145,"column":36}},"122":{"start":{"line":146,"column":8},"end":{"line":146,"column":48}},"123":{"start":{"line":147,"column":8},"end":{"line":147,"column":48}},"124":{"start":{"line":148,"column":8},"end":{"line":148,"column":34}},"125":{"start":{"line":149,"column":8},"end":{"line":149,"column":50}},"126":{"start":{"line":152,"column":0},"end":{"line":161,"column":3}},"127":{"start":{"line":153,"column":4},"end":{"line":160,"column":7}},"128":{"start":{"line":154,"column":32},"end":{"line":154,"column":75}},"129":{"start":{"line":155,"column":27},"end":{"line":155,"column":52}},"130":{"start":{"line":156,"column":8},"end":{"line":156,"column":36}},"131":{"start":{"line":157,"column":8},"end":{"line":157,"column":48}},"132":{"start":{"line":158,"column":8},"end":{"line":158,"column":80}},"133":{"start":{"line":159,"column":8},"end":{"line":159,"column":71}},"134":{"start":{"line":162,"column":0},"end":{"line":171,"column":3}},"135":{"start":{"line":163,"column":4},"end":{"line":170,"column":7}},"136":{"start":{"line":164,"column":32},"end":{"line":164,"column":75}},"137":{"start":{"line":165,"column":27},"end":{"line":165,"column":52}},"138":{"start":{"line":166,"column":8},"end":{"line":166,"column":36}},"139":{"start":{"line":167,"column":8},"end":{"line":167,"column":48}},"140":{"start":{"line":168,"column":8},"end":{"line":168,"column":83}},"141":{"start":{"line":169,"column":8},"end":{"line":169,"column":71}},"142":{"start":{"line":172,"column":0},"end":{"line":181,"column":3}},"143":{"start":{"line":173,"column":4},"end":{"line":180,"column":7}},"144":{"start":{"line":174,"column":32},"end":{"line":174,"column":75}},"145":{"start":{"line":175,"column":27},"end":{"line":175,"column":52}},"146":{"start":{"line":176,"column":8},"end":{"line":176,"column":36}},"147":{"start":{"line":177,"column":8},"end":{"line":177,"column":48}},"148":{"start":{"line":178,"column":8},"end":{"line":178,"column":80}},"149":{"start":{"line":179,"column":8},"end":{"line":179,"column":72}},"150":{"start":{"line":182,"column":0},"end":{"line":191,"column":3}},"151":{"start":{"line":183,"column":4},"end":{"line":190,"column":7}},"152":{"start":{"line":184,"column":32},"end":{"line":184,"column":75}},"153":{"start":{"line":185,"column":27},"end":{"line":185,"column":52}},"154":{"start":{"line":186,"column":8},"end":{"line":186,"column":36}},"155":{"start":{"line":187,"column":8},"end":{"line":187,"column":48}},"156":{"start":{"line":188,"column":8},"end":{"line":188,"column":79}},"157":{"start":{"line":189,"column":8},"end":{"line":189,"column":72}},"158":{"start":{"line":192,"column":0},"end":{"line":201,"column":3}},"159":{"start":{"line":193,"column":4},"end":{"line":200,"column":7}},"160":{"start":{"line":194,"column":32},"end":{"line":194,"column":75}},"161":{"start":{"line":195,"column":27},"end":{"line":195,"column":52}},"162":{"start":{"line":196,"column":8},"end":{"line":196,"column":36}},"163":{"start":{"line":197,"column":8},"end":{"line":197,"column":48}},"164":{"start":{"line":198,"column":8},"end":{"line":198,"column":82}},"165":{"start":{"line":199,"column":8},"end":{"line":199,"column":72}},"166":{"start":{"line":202,"column":0},"end":{"line":207,"column":3}},"167":{"start":{"line":203,"column":4},"end":{"line":206,"column":7}},"168":{"start":{"line":204,"column":32},"end":{"line":204,"column":75}},"169":{"start":{"line":205,"column":8},"end":{"line":205,"column":72}}},"fnMap":{"0":{"name":"(anonymous_0)","decl":{"start":{"line":6,"column":38},"end":{"line":6,"column":39}},"loc":{"start":{"line":6,"column":44},"end":{"line":12,"column":1}},"line":6},"1":{"name":"(anonymous_1)","decl":{"start":{"line":7,"column":57},"end":{"line":7,"column":58}},"loc":{"start":{"line":7,"column":63},"end":{"line":11,"column":5}},"line":7},"2":{"name":"(anonymous_2)","decl":{"start":{"line":13,"column":38},"end":{"line":13,"column":39}},"loc":{"start":{"line":13,"column":44},"end":{"line":22,"column":1}},"line":13},"3":{"name":"(anonymous_3)","decl":{"start":{"line":14,"column":69},"end":{"line":14,"column":70}},"loc":{"start":{"line":14,"column":75},"end":{"line":21,"column":5}},"line":14},"4":{"name":"(anonymous_4)","decl":{"start":{"line":23,"column":39},"end":{"line":23,"column":40}},"loc":{"start":{"line":23,"column":45},"end":{"line":33,"column":1}},"line":23},"5":{"name":"(anonymous_5)","decl":{"start":{"line":24,"column":58},"end":{"line":24,"column":59}},"loc":{"start":{"line":24,"column":64},"end":{"line":32,"column":5}},"line":24},"6":{"name":"(anonymous_6)","decl":{"start":{"line":34,"column":51},"end":{"line":34,"column":52}},"loc":{"start":{"line":34,"column":57},"end":{"line":42,"column":1}},"line":34},"7":{"name":"(anonymous_7)","decl":{"start":{"line":35,"column":54},"end":{"line":35,"column":55}},"loc":{"start":{"line":35,"column":60},"end":{"line":41,"column":5}},"line":35},"8":{"name":"(anonymous_8)","decl":{"start":{"line":43,"column":51},"end":{"line":43,"column":52}},"loc":{"start":{"line":43,"column":57},"end":{"line":49,"column":1}},"line":43},"9":{"name":"(anonymous_9)","decl":{"start":{"line":44,"column":64},"end":{"line":44,"column":65}},"loc":{"start":{"line":44,"column":70},"end":{"line":48,"column":5}},"line":44},"10":{"name":"(anonymous_10)","decl":{"start":{"line":50,"column":51},"end":{"line":50,"column":52}},"loc":{"start":{"line":50,"column":57},"end":{"line":62,"column":1}},"line":50},"11":{"name":"(anonymous_11)","decl":{"start":{"line":51,"column":52},"end":{"line":51,"column":53}},"loc":{"start":{"line":51,"column":58},"end":{"line":61,"column":5}},"line":51},"12":{"name":"(anonymous_12)","decl":{"start":{"line":63,"column":51},"end":{"line":63,"column":52}},"loc":{"start":{"line":63,"column":57},"end":{"line":72,"column":1}},"line":63},"13":{"name":"(anonymous_13)","decl":{"start":{"line":64,"column":72},"end":{"line":64,"column":73}},"loc":{"start":{"line":64,"column":78},"end":{"line":71,"column":5}},"line":64},"14":{"name":"(anonymous_14)","decl":{"start":{"line":73,"column":42},"end":{"line":73,"column":43}},"loc":{"start":{"line":73,"column":48},"end":{"line":82,"column":1}},"line":73},"15":{"name":"(anonymous_15)","decl":{"start":{"line":74,"column":40},"end":{"line":74,"column":41}},"loc":{"start":{"line":74,"column":46},"end":{"line":81,"column":5}},"line":74},"16":{"name":"(anonymous_16)","decl":{"start":{"line":80,"column":57},"end":{"line":80,"column":58}},"loc":{"start":{"line":80,"column":62},"end":{"line":80,"column":92}},"line":80},"17":{"name":"(anonymous_17)","decl":{"start":{"line":83,"column":42},"end":{"line":83,"column":43}},"loc":{"start":{"line":83,"column":48},"end":{"line":90,"column":1}},"line":83},"18":{"name":"(anonymous_18)","decl":{"start":{"line":84,"column":72},"end":{"line":84,"column":73}},"loc":{"start":{"line":84,"column":78},"end":{"line":89,"column":5}},"line":84},"19":{"name":"(anonymous_19)","decl":{"start":{"line":91,"column":42},"end":{"line":91,"column":43}},"loc":{"start":{"line":91,"column":48},"end":{"line":100,"column":1}},"line":91},"20":{"name":"(anonymous_20)","decl":{"start":{"line":92,"column":58},"end":{"line":92,"column":59}},"loc":{"start":{"line":92,"column":64},"end":{"line":99,"column":5}},"line":92},"21":{"name":"(anonymous_21)","decl":{"start":{"line":98,"column":57},"end":{"line":98,"column":58}},"loc":{"start":{"line":98,"column":62},"end":{"line":98,"column":92}},"line":98},"22":{"name":"(anonymous_22)","decl":{"start":{"line":101,"column":42},"end":{"line":101,"column":43}},"loc":{"start":{"line":101,"column":48},"end":{"line":110,"column":1}},"line":101},"23":{"name":"(anonymous_23)","decl":{"start":{"line":102,"column":61},"end":{"line":102,"column":62}},"loc":{"start":{"line":102,"column":67},"end":{"line":109,"column":5}},"line":102},"24":{"name":"(anonymous_24)","decl":{"start":{"line":108,"column":57},"end":{"line":108,"column":58}},"loc":{"start":{"line":108,"column":62},"end":{"line":108,"column":92}},"line":108},"25":{"name":"(anonymous_25)","decl":{"start":{"line":111,"column":42},"end":{"line":111,"column":43}},"loc":{"start":{"line":111,"column":48},"end":{"line":120,"column":1}},"line":111},"26":{"name":"(anonymous_26)","decl":{"start":{"line":112,"column":54},"end":{"line":112,"column":55}},"loc":{"start":{"line":112,"column":60},"end":{"line":119,"column":5}},"line":112},"27":{"name":"(anonymous_27)","decl":{"start":{"line":118,"column":60},"end":{"line":118,"column":61}},"loc":{"start":{"line":118,"column":65},"end":{"line":118,"column":95}},"line":118},"28":{"name":"(anonymous_28)","decl":{"start":{"line":121,"column":42},"end":{"line":121,"column":43}},"loc":{"start":{"line":121,"column":48},"end":{"line":130,"column":1}},"line":121},"29":{"name":"(anonymous_29)","decl":{"start":{"line":122,"column":56},"end":{"line":122,"column":57}},"loc":{"start":{"line":122,"column":62},"end":{"line":129,"column":5}},"line":122},"30":{"name":"(anonymous_30)","decl":{"start":{"line":128,"column":60},"end":{"line":128,"column":61}},"loc":{"start":{"line":128,"column":65},"end":{"line":128,"column":95}},"line":128},"31":{"name":"(anonymous_31)","decl":{"start":{"line":131,"column":42},"end":{"line":131,"column":43}},"loc":{"start":{"line":131,"column":48},"end":{"line":140,"column":1}},"line":131},"32":{"name":"(anonymous_32)","decl":{"start":{"line":132,"column":53},"end":{"line":132,"column":54}},"loc":{"start":{"line":132,"column":59},"end":{"line":139,"column":5}},"line":132},"33":{"name":"(anonymous_33)","decl":{"start":{"line":138,"column":60},"end":{"line":138,"column":61}},"loc":{"start":{"line":138,"column":65},"end":{"line":138,"column":95}},"line":138},"34":{"name":"(anonymous_34)","decl":{"start":{"line":141,"column":36},"end":{"line":141,"column":37}},"loc":{"start":{"line":141,"column":42},"end":{"line":151,"column":1}},"line":141},"35":{"name":"(anonymous_35)","decl":{"start":{"line":142,"column":62},"end":{"line":142,"column":63}},"loc":{"start":{"line":142,"column":68},"end":{"line":150,"column":5}},"line":142},"36":{"name":"(anonymous_36)","decl":{"start":{"line":152,"column":53},"end":{"line":152,"column":54}},"loc":{"start":{"line":152,"column":59},"end":{"line":161,"column":1}},"line":152},"37":{"name":"(anonymous_37)","decl":{"start":{"line":153,"column":49},"end":{"line":153,"column":50}},"loc":{"start":{"line":153,"column":55},"end":{"line":160,"column":5}},"line":153},"38":{"name":"(anonymous_38)","decl":{"start":{"line":162,"column":53},"end":{"line":162,"column":54}},"loc":{"start":{"line":162,"column":59},"end":{"line":171,"column":1}},"line":162},"39":{"name":"(anonymous_39)","decl":{"start":{"line":163,"column":51},"end":{"line":163,"column":52}},"loc":{"start":{"line":163,"column":57},"end":{"line":170,"column":5}},"line":163},"40":{"name":"(anonymous_40)","decl":{"start":{"line":172,"column":53},"end":{"line":172,"column":54}},"loc":{"start":{"line":172,"column":59},"end":{"line":181,"column":1}},"line":172},"41":{"name":"(anonymous_41)","decl":{"start":{"line":173,"column":49},"end":{"line":173,"column":50}},"loc":{"start":{"line":173,"column":55},"end":{"line":180,"column":5}},"line":173},"42":{"name":"(anonymous_42)","decl":{"start":{"line":182,"column":53},"end":{"line":182,"column":54}},"loc":{"start":{"line":182,"column":59},"end":{"line":191,"column":1}},"line":182},"43":{"name":"(anonymous_43)","decl":{"start":{"line":183,"column":48},"end":{"line":183,"column":49}},"loc":{"start":{"line":183,"column":54},"end":{"line":190,"column":5}},"line":183},"44":{"name":"(anonymous_44)","decl":{"start":{"line":192,"column":53},"end":{"line":192,"column":54}},"loc":{"start":{"line":192,"column":59},"end":{"line":201,"column":1}},"line":192},"45":{"name":"(anonymous_45)","decl":{"start":{"line":193,"column":51},"end":{"line":193,"column":52}},"loc":{"start":{"line":193,"column":57},"end":{"line":200,"column":5}},"line":193},"46":{"name":"(anonymous_46)","decl":{"start":{"line":202,"column":53},"end":{"line":202,"column":54}},"loc":{"start":{"line":202,"column":59},"end":{"line":207,"column":1}},"line":202},"47":{"name":"(anonymous_47)","decl":{"start":{"line":203,"column":51},"end":{"line":203,"column":52}},"loc":{"start":{"line":203,"column":57},"end":{"line":206,"column":5}},"line":203}},"branchMap":{},"s":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1,"48":1,"49":1,"50":1,"51":1,"52":1,"53":1,"54":1,"55":1,"56":1,"57":1,"58":1,"59":1,"60":1,"61":1,"62":1,"63":1,"64":1,"65":1,"66":1,"67":1,"68":1,"69":1,"70":1,"71":1,"72":1,"73":1,"74":1,"75":1,"76":1,"77":1,"78":1,"79":1,"80":1,"81":1,"82":1,"83":1,"84":1,"85":1,"86":1,"87":1,"88":1,"89":1,"90":1,"91":1,"92":1,"93":1,"94":1,"95":1,"96":1,"97":1,"98":1,"99":1,"100":1,"101":1,"102":1,"103":1,"104":1,"105":1,"106":1,"107":1,"108":1,"109":1,"110":1,"111":1,"112":1,"113":1,"114":1,"115":1,"116":1,"117":1,"118":1,"119":1,"120":1,"121":1,"122":1,"123":1,"124":1,"125":1,"126":1,"127":1,"128":1,"129":1,"130":1,"131":1,"132":1,"133":1,"134":1,"135":1,"136":1,"137":1,"138":1,"139":1,"140":1,"141":1,"142":1,"143":1,"144":1,"145":1,"146":1,"147":1,"148":1,"149":1,"150":1,"151":1,"152":1,"153":1,"154":1,"155":1,"156":1,"157":1,"158":1,"159":1,"160":1,"161":1,"162":1,"163":1,"164":1,"165":1,"166":1,"167":1,"168":1,"169":1},"f":{"0":1,"1":1,"2":1,"3":1,"4":1,"5":1,"6":1,"7":1,"8":1,"9":1,"10":1,"11":1,"12":1,"13":1,"14":1,"15":1,"16":1,"17":1,"18":1,"19":1,"20":1,"21":1,"22":1,"23":1,"24":1,"25":1,"26":1,"27":1,"28":1,"29":1,"30":1,"31":1,"32":1,"33":1,"34":1,"35":1,"36":1,"37":1,"38":1,"39":1,"40":1,"41":1,"42":1,"43":1,"44":1,"45":1,"46":1,"47":1},"b":{},"_coverageSchema":"332fd63041d2c1bcb487cc26dd0d5f7d97098a6c","hash":"f6120b5adc38a41e30c2928890f57e292ffeb3fc","contentHash":"3e3e297822f1d78541ecfa37daf4b2d1_11.2.1"}} \ No newline at end of file diff --git a/Extensions/ArtifactEngine/E2ETests/jenkins.e2e.ts b/Extensions/ArtifactEngine/E2ETests/jenkins.e2e.ts index fc5c01a24..7c9060fb0 100644 --- a/Extensions/ArtifactEngine/E2ETests/jenkins.e2e.ts +++ b/Extensions/ArtifactEngine/E2ETests/jenkins.e2e.ts @@ -8,7 +8,7 @@ import * as providers from "../Providers" import { BasicCredentialHandler } from "../Providers/typed-rest-client/handlers/basiccreds"; var nconf = require('nconf'); -var tl = require('vsts-task-lib/task'); +var tl = require('azure-pipelines-task-lib/task'); nconf.argv() .env() @@ -26,13 +26,13 @@ describe('E2E Tests', () => { processorOptions.retryLimit = 2; processorOptions.verbose = true; - var itemsUrl = "http://rmcdpjenkins2.southindia.cloudapp.azure.com:8080/job/ReleaseManagement/job/RMCDP/job/ArtifactEngineTests/job/SmallProject/10/api/json?tree=artifacts[*]"; + var itemsUrl = "http://rmcdpjenkins3.southindia.cloudapp.azure.com:8080/job/ReleaseManagement/job/RMCDP/job/ArtifactEngineTests/job/SmallProject/3/api/json?tree=artifacts[*]"; var variables = { "endpoint": { - "url": "http://rmcdpjenkins2.southindia.cloudapp.azure.com:8080" + "url": "http://rmcdpjenkins3.southindia.cloudapp.azure.com:8080" }, "definition": "ReleaseManagement/job/RMCDP/job/ArtifactEngineTests/job/SmallProject", - "version": "10" + "version": "3" }; var handler = new BasicCredentialHandler(nconf.get('JENKINS:USERNAME'), nconf.get('JENKINS:PASSWORD') || tl.getVariable('JENKINS:PASSWORD')); @@ -68,7 +68,7 @@ describe('E2E Tests', () => { processorOptions.retryLimit = 2; processorOptions.verbose = true; - var itemsUrl = "http://rmcdpjenkins2.southindia.cloudapp.azure.com:8080/job/ReleaseManagement/job/RMCDP/job/ArtifactEngineTests/job/SmallProject/10/artifact/*zip*/"; + var itemsUrl = "http://rmcdpjenkins3.southindia.cloudapp.azure.com:8080/job/ReleaseManagement/job/RMCDP/job/ArtifactEngineTests/job/SmallProject/3/artifact/*zip*/"; var handler = new BasicCredentialHandler(nconf.get('JENKINS:USERNAME'), nconf.get('JENKINS:PASSWORD') || tl.getVariable('JENKINS:PASSWORD')); var zipProvider = new providers.ZipProvider(itemsUrl, handler, { ignoreSslError: false }); var dropLocation = path.join(nconf.get('DROPLOCATION'), "jenkinsDropWithMultipleFiles.zip"); @@ -97,7 +97,7 @@ describe('E2E Tests', () => { processorOptions.retryLimit = 2; processorOptions.verbose = true; - var itemsUrl = "http://rmcdpjenkins2.southindia.cloudapp.azure.com:8080///job/noexistant//8/artifact/*zip*/"; + var itemsUrl = "http://rmcdpjenkins3.southindia.cloudapp.azure.com:8080///job/noexistant//8/artifact/*zip*/"; var handler = new BasicCredentialHandler(nconf.get('JENKINS:USERNAME'), nconf.get('JENKINS:PASSWORD') || tl.getVariable('JENKINS:PASSWORD')); var zipProvider = new providers.ZipProvider(itemsUrl, handler, { ignoreSslError: false }); var dropLocation = path.join(nconf.get('DROPLOCATION'), "jenkinsDropWithMultipleFiles.zip"); diff --git a/Extensions/ArtifactEngine/E2ETests/vsts.e2e.ts b/Extensions/ArtifactEngine/E2ETests/vsts.e2e.ts index 4f9e14748..35bf20a7c 100644 --- a/Extensions/ArtifactEngine/E2ETests/vsts.e2e.ts +++ b/Extensions/ArtifactEngine/E2ETests/vsts.e2e.ts @@ -8,7 +8,7 @@ import * as providers from "../Providers" import { PersonalAccessTokenCredentialHandler } from "../Providers/typed-rest-client/handlers/personalaccesstoken"; var nconf = require('nconf'); -var tl = require('vsts-task-lib/task'); +var tl = require('azure-pipelines-task-lib/task'); nconf.argv() .env() diff --git a/Extensions/ArtifactEngine/Engine/artifactEngine.ts b/Extensions/ArtifactEngine/Engine/artifactEngine.ts index d5b630cc0..2d40df96f 100644 --- a/Extensions/ArtifactEngine/Engine/artifactEngine.ts +++ b/Extensions/ArtifactEngine/Engine/artifactEngine.ts @@ -1,6 +1,6 @@ import * as path from 'path'; -var tl = require('vsts-task-lib/task'); +var tl = require('azure-pipelines-task-lib/task'); import * as models from '../Models'; import * as ci from './cilogger'; diff --git a/Extensions/ArtifactEngine/Engine/cilogger.ts b/Extensions/ArtifactEngine/Engine/cilogger.ts index 77d8d1fb9..e66c591d9 100644 --- a/Extensions/ArtifactEngine/Engine/cilogger.ts +++ b/Extensions/ArtifactEngine/Engine/cilogger.ts @@ -1,4 +1,4 @@ -var tl = require('vsts-task-lib'); +var tl = require('azure-pipelines-task-lib'); var packagejson = require('../package.json'); const area: string = 'artifact-engine'; diff --git a/Extensions/ArtifactEngine/Engine/logger.ts b/Extensions/ArtifactEngine/Engine/logger.ts index 615c1a1d3..3a782c54d 100644 --- a/Extensions/ArtifactEngine/Engine/logger.ts +++ b/Extensions/ArtifactEngine/Engine/logger.ts @@ -2,7 +2,7 @@ import { ItemType } from '../Models'; import { TicketState } from '../Models/ticketState'; import { ArtifactItemStore } from '../Store/artifactItemStore'; -var tl = require('vsts-task-lib'); +var tl = require('azure-pipelines-task-lib'); import * as ci from './cilogger'; export class Logger { diff --git a/Extensions/ArtifactEngine/PerfTests/jenkins.perf.ts b/Extensions/ArtifactEngine/PerfTests/jenkins.perf.ts index 58da7b97a..dd1725877 100644 --- a/Extensions/ArtifactEngine/PerfTests/jenkins.perf.ts +++ b/Extensions/ArtifactEngine/PerfTests/jenkins.perf.ts @@ -30,13 +30,13 @@ describe('Perf Tests', () => { processorOptions.retryLimit = 4; processorOptions.verbose = true; - var itemsUrl = "http://rmcdpjenkins2.southindia.cloudapp.azure.com:8080/job/ReleaseManagement/job/RMCDP/job/ArtifactEngineTests/job/LargeSizeProject/5/api/json?tree=artifacts[*]"; + var itemsUrl = "http://rmcdpjenkins3.southindia.cloudapp.azure.com:8080/job/ReleaseManagement/job/RMCDP/job/ArtifactEngineTests/job/LargeSizeProject/2/api/json?tree=artifacts[*]"; var variables = { "endpoint": { - "url": "http://rmcdpjenkins2.southindia.cloudapp.azure.com:8080" + "url": "http://rmcdpjenkins3.southindia.cloudapp.azure.com:8080" }, "definition": "ReleaseManagement/job/RMCDP/job/ArtifactEngineTests/job/LargeSizeProject", - "version": "5" + "version": "2" }; var handler = new BasicCredentialHandler(nconf.get('JENKINS:USERNAME'), nconf.get('JENKINS:PASSWORD')); @@ -67,13 +67,13 @@ describe('Perf Tests', () => { processorOptions.retryLimit = 4; processorOptions.verbose = true; - var itemsUrl = "http://rmcdpjenkins2.southindia.cloudapp.azure.com:8080/job/ReleaseManagement/job/RMCDP/job/ArtifactEngineTests/job/LargeVolumeProject/6/api/json?tree=artifacts[*]"; + var itemsUrl = "http://rmcdpjenkins3.southindia.cloudapp.azure.com:8080/job/ReleaseManagement/job/RMCDP/job/ArtifactEngineTests/job/LargeVolumeProject/1/api/json?tree=artifacts[*]"; var variables = { "endpoint": { - "url": "http://rmcdpjenkins2.southindia.cloudapp.azure.com:8080" + "url": "http://rmcdpjenkins3.southindia.cloudapp.azure.com:8080" }, "definition": "ReleaseManagement/job/RMCDP/job/ArtifactEngineTests/job/LargeVolumeProject", - "version": "6" + "version": "1" }; var handler = new BasicCredentialHandler(nconf.get('JENKINS:USERNAME'), nconf.get('JENKINS:PASSWORD')); @@ -104,7 +104,7 @@ describe('Perf Tests', () => { processorOptions.retryLimit = 2; processorOptions.verbose = true; - var itemsUrl = "http://rmcdpjenkins2.southindia.cloudapp.azure.com:8080/job/ReleaseManagement/job/RMCDP/job/ArtifactEngineTests/job/LargeVolumeProject/6/artifact/*zip*/"; + var itemsUrl = "http://rmcdpjenkins3.southindia.cloudapp.azure.com:8080/job/ReleaseManagement/job/RMCDP/job/ArtifactEngineTests/job/LargeVolumeProject/1/artifact/*zip*/"; var handler = new BasicCredentialHandler(nconf.get('JENKINS:USERNAME'), nconf.get('JENKINS:PASSWORD')); var zipProvider = new providers.ZipProvider(itemsUrl, handler, { ignoreSslError: false }); var dropLocation = path.join(nconf.get('DROPLOCATION'), "jenkinsDropWithMultipleFiles.zip"); diff --git a/Extensions/ArtifactEngine/Providers/filesystemProvider.ts b/Extensions/ArtifactEngine/Providers/filesystemProvider.ts index 9ee98e62e..1e6e79177 100644 --- a/Extensions/ArtifactEngine/Providers/filesystemProvider.ts +++ b/Extensions/ArtifactEngine/Providers/filesystemProvider.ts @@ -5,7 +5,7 @@ import * as models from '../Models'; import { Logger } from '../Engine/logger'; import { ArtifactItemStore } from '../Store/artifactItemStore'; -var tl = require('vsts-task-lib'); +var tl = require('azure-pipelines-task-lib'); export class FilesystemProvider implements models.IArtifactProvider { diff --git a/Extensions/ArtifactEngine/Providers/webClient.ts b/Extensions/ArtifactEngine/Providers/webClient.ts index 35c75b960..29331b9da 100644 --- a/Extensions/ArtifactEngine/Providers/webClient.ts +++ b/Extensions/ArtifactEngine/Providers/webClient.ts @@ -1,6 +1,6 @@ // restrict usage of typed-rest-client to this file import * as httpm from './typed-rest-client/HttpClient'; -var tl = require('vsts-task-lib/task'); +var tl = require('azure-pipelines-task-lib/task'); var packagejson = require('../package.json'); diff --git a/Extensions/ArtifactEngine/Providers/webClientFactory.ts b/Extensions/ArtifactEngine/Providers/webClientFactory.ts index 99eb9bc6a..2184183b7 100644 --- a/Extensions/ArtifactEngine/Providers/webClientFactory.ts +++ b/Extensions/ArtifactEngine/Providers/webClientFactory.ts @@ -11,7 +11,7 @@ export class WebClientFactory { } private static initializeProxy(options) { - // try get proxy setting from environment variable set by VSTS-Task-Lib if there is no proxy setting in the options + // try get proxy setting from environment variable set by azure-pipelines-task-lib if there is no proxy setting in the options if (!options.proxy || !options.proxy.proxyUrl) { if (global['_vsts_task_lib_proxy']) { let proxyFromEnv: any = { @@ -25,7 +25,7 @@ export class WebClientFactory { } } - // try get cert setting from environment variable set by VSTS-Task-Lib if there is no cert setting in the options + // try get cert setting from environment variable set by azure-pipelines-task-lib if there is no cert setting in the options if (!options.cert) { if (global['_vsts_task_lib_cert']) { let certFromEnv: any = { @@ -39,7 +39,7 @@ export class WebClientFactory { } } - // try get ignore SSL error setting from environment variable set by VSTS-Task-Lib if there is no ignore SSL error setting in the options + // try get ignore SSL error setting from environment variable set by azure-pipelines-task-lib if there is no ignore SSL error setting in the options if (!options.ignoreSslError) { options.ignoreSslError = !!global['_vsts_task_lib_skip_cert_validation']; } diff --git a/Extensions/ArtifactEngine/Providers/webProvider.ts b/Extensions/ArtifactEngine/Providers/webProvider.ts index 1bfcbdeba..dc6706a49 100644 --- a/Extensions/ArtifactEngine/Providers/webProvider.ts +++ b/Extensions/ArtifactEngine/Providers/webProvider.ts @@ -14,7 +14,7 @@ import { IRequestHandler, IRequestOptions } from './typed-rest-client/Interfaces import { HttpClientResponse } from './typed-rest-client/HttpClient'; var handlebars = require('handlebars'); -var tl = require('vsts-task-lib/task'); +var tl = require('azure-pipelines-task-lib/task'); export class WebProvider implements IArtifactProvider { diff --git a/Extensions/ArtifactEngine/ProvidersTests/filesystemProviderTests.ts b/Extensions/ArtifactEngine/ProvidersTests/filesystemProviderTests.ts index 0b900cf79..4e56afd33 100644 --- a/Extensions/ArtifactEngine/ProvidersTests/filesystemProviderTests.ts +++ b/Extensions/ArtifactEngine/ProvidersTests/filesystemProviderTests.ts @@ -32,7 +32,7 @@ mockery.enable({ import * as providers from '../Providers'; import { ArtifactItemStore } from '../Store/artifactItemStore'; -var tl = require("vsts-task-lib"); +var tl = require("azure-pipelines-task-lib"); describe('Unit Tests', () => { describe('filesystemProvider tests', () => { diff --git a/Extensions/ArtifactEngine/Strings/resources.resjson/de-DE/resources.resjson b/Extensions/ArtifactEngine/Strings/resources.resjson/de-DE/resources.resjson index ae0704fa8..d1724c796 100644 --- a/Extensions/ArtifactEngine/Strings/resources.resjson/de-DE/resources.resjson +++ b/Extensions/ArtifactEngine/Strings/resources.resjson/de-DE/resources.resjson @@ -8,5 +8,5 @@ "loc.messages.SkippingItem": "Die Verarbeitung des Elements \"%s\" wird übersprungen.", "loc.messages.UnhandledRejection": "artifact-engine: nicht verarbeitete Zurückweisung %s", "loc.messages.UnhandledException": "artifact-engine: Ausnahmefehler %s", - "loc.messages.FailedRequest": "Failed request: (statusCode)" + "loc.messages.FailedRequest": "Fehlerhafte Anforderung: (statusCode)" } \ No newline at end of file diff --git a/Extensions/ArtifactEngine/Strings/resources.resjson/es-ES/resources.resjson b/Extensions/ArtifactEngine/Strings/resources.resjson/es-ES/resources.resjson index cf8ec00ed..a0d8430ed 100644 --- a/Extensions/ArtifactEngine/Strings/resources.resjson/es-ES/resources.resjson +++ b/Extensions/ArtifactEngine/Strings/resources.resjson/es-ES/resources.resjson @@ -8,5 +8,5 @@ "loc.messages.SkippingItem": "Procesamiento de %s omitido", "loc.messages.UnhandledRejection": "artifact-engine: rechazo no controlado: %s", "loc.messages.UnhandledException": "artifact-engine: excepción no controlada: %s", - "loc.messages.FailedRequest": "Failed request: (statusCode)" + "loc.messages.FailedRequest": "Error en la solicitud: (statusCode)" } \ No newline at end of file diff --git a/Extensions/ArtifactEngine/Strings/resources.resjson/fr-FR/resources.resjson b/Extensions/ArtifactEngine/Strings/resources.resjson/fr-FR/resources.resjson index 60399a7b5..3196943cd 100644 --- a/Extensions/ArtifactEngine/Strings/resources.resjson/fr-FR/resources.resjson +++ b/Extensions/ArtifactEngine/Strings/resources.resjson/fr-FR/resources.resjson @@ -8,5 +8,5 @@ "loc.messages.SkippingItem": "Traitement de l’élément ignoré %s", "loc.messages.UnhandledRejection": "artifact-engine : rejet non géré %s", "loc.messages.UnhandledException": "artifact-engine : exception non gérée %s", - "loc.messages.FailedRequest": "Failed request: (statusCode)" + "loc.messages.FailedRequest": "Échec de la demande : (statusCode)" } \ No newline at end of file diff --git a/Extensions/ArtifactEngine/Strings/resources.resjson/it-IT/resources.resjson b/Extensions/ArtifactEngine/Strings/resources.resjson/it-IT/resources.resjson index f0ceb9abb..9f4ebb764 100644 --- a/Extensions/ArtifactEngine/Strings/resources.resjson/it-IT/resources.resjson +++ b/Extensions/ArtifactEngine/Strings/resources.resjson/it-IT/resources.resjson @@ -8,5 +8,5 @@ "loc.messages.SkippingItem": "Elaborazione dell'elemento %s ignorata", "loc.messages.UnhandledRejection": "artifact-engine: rifiuto non gestito %s", "loc.messages.UnhandledException": "artifact-engine: eccezione non gestita %s", - "loc.messages.FailedRequest": "Failed request: (statusCode)" + "loc.messages.FailedRequest": "Richiesta non riuscita: (statusCode)" } \ No newline at end of file diff --git a/Extensions/ArtifactEngine/Strings/resources.resjson/ja-JP/resources.resjson b/Extensions/ArtifactEngine/Strings/resources.resjson/ja-JP/resources.resjson index 808958091..46c4da1f6 100644 --- a/Extensions/ArtifactEngine/Strings/resources.resjson/ja-JP/resources.resjson +++ b/Extensions/ArtifactEngine/Strings/resources.resjson/ja-JP/resources.resjson @@ -8,5 +8,5 @@ "loc.messages.SkippingItem": "項目 %s の処理をスキップしました", "loc.messages.UnhandledRejection": "artifact-engine: ハンドルされない拒否 %s", "loc.messages.UnhandledException": "artifact-engine: ハンドルされない例外 %s", - "loc.messages.FailedRequest": "Failed request: (statusCode)" + "loc.messages.FailedRequest": "失敗した要求: (statusCode)" } \ No newline at end of file diff --git a/Extensions/ArtifactEngine/Strings/resources.resjson/ko-KR/resources.resjson b/Extensions/ArtifactEngine/Strings/resources.resjson/ko-KR/resources.resjson index 92126d1dc..1cc504d23 100644 --- a/Extensions/ArtifactEngine/Strings/resources.resjson/ko-KR/resources.resjson +++ b/Extensions/ArtifactEngine/Strings/resources.resjson/ko-KR/resources.resjson @@ -8,5 +8,5 @@ "loc.messages.SkippingItem": "항목 %s의 처리를 건너뜀", "loc.messages.UnhandledRejection": "artifact-engine: 처리되지 않은 거부 %s", "loc.messages.UnhandledException": "artifact-engine: 처리되지 않은 예외 %s", - "loc.messages.FailedRequest": "Failed request: (statusCode)" + "loc.messages.FailedRequest": "실패한 요청: (statusCode)" } \ No newline at end of file diff --git a/Extensions/ArtifactEngine/Strings/resources.resjson/ru-RU/resources.resjson b/Extensions/ArtifactEngine/Strings/resources.resjson/ru-RU/resources.resjson index a17ac7f91..9fe6c8bec 100644 --- a/Extensions/ArtifactEngine/Strings/resources.resjson/ru-RU/resources.resjson +++ b/Extensions/ArtifactEngine/Strings/resources.resjson/ru-RU/resources.resjson @@ -8,5 +8,5 @@ "loc.messages.SkippingItem": "Пропущена обработка элемента %s", "loc.messages.UnhandledRejection": "artifact-engine: необработанное отклонение %s", "loc.messages.UnhandledException": "artifact-engine: необработанное исключение %s", - "loc.messages.FailedRequest": "Failed request: (statusCode)" + "loc.messages.FailedRequest": "Сбой запроса: (statusCode)" } \ No newline at end of file diff --git a/Extensions/ArtifactEngine/Strings/resources.resjson/zh-CN/resources.resjson b/Extensions/ArtifactEngine/Strings/resources.resjson/zh-CN/resources.resjson index 671611e3f..acc6ef7db 100644 --- a/Extensions/ArtifactEngine/Strings/resources.resjson/zh-CN/resources.resjson +++ b/Extensions/ArtifactEngine/Strings/resources.resjson/zh-CN/resources.resjson @@ -8,5 +8,5 @@ "loc.messages.SkippingItem": "已跳过处理项目 %s", "loc.messages.UnhandledRejection": "项目引擎: 未处理的拒绝 %s", "loc.messages.UnhandledException": "项目引擎: 未处理的异常 %s", - "loc.messages.FailedRequest": "Failed request: (statusCode)" + "loc.messages.FailedRequest": "请求失败: (statusCode)" } \ No newline at end of file diff --git a/Extensions/ArtifactEngine/Strings/resources.resjson/zh-TW/resources.resjson b/Extensions/ArtifactEngine/Strings/resources.resjson/zh-TW/resources.resjson index 47f8aa3d3..c2d303f63 100644 --- a/Extensions/ArtifactEngine/Strings/resources.resjson/zh-TW/resources.resjson +++ b/Extensions/ArtifactEngine/Strings/resources.resjson/zh-TW/resources.resjson @@ -8,5 +8,5 @@ "loc.messages.SkippingItem": "已跳過處理項目 %s", "loc.messages.UnhandledRejection": "artifact-engine: 未處理的拒絕 %s", "loc.messages.UnhandledException": "artifact-engine: 未處理的例外狀況 %s", - "loc.messages.FailedRequest": "Failed request: (statusCode)" + "loc.messages.FailedRequest": "失敗的要求: (statusCode)" } \ No newline at end of file diff --git a/Extensions/ArtifactEngine/npm-shrinkwrap.json b/Extensions/ArtifactEngine/npm-shrinkwrap.json index da9b9478a..8fa885eed 100644 --- a/Extensions/ArtifactEngine/npm-shrinkwrap.json +++ b/Extensions/ArtifactEngine/npm-shrinkwrap.json @@ -1,6 +1,6 @@ { "name": "artifact-engine", - "version": "0.1.25", + "version": "0.1.27", "lockfileVersion": 1, "requires": true, "dependencies": { @@ -55,18 +55,19 @@ "integrity": "sha512-Pv2HGRE4gWLs31In7nsyXEH4uVVsd0HNV9i2dyASvtDIlOtSTr1eczPLDpdEuyv5LWH5LT20GIXwPjkshKWI1g==", "dev": true, "requires": { - "@types/events": "1.2.0", - "@types/node": "6.0.31" + "@types/events": "*", + "@types/node": "*" } }, "align-text": { "version": "0.1.4", "resolved": "https://registry.npmjs.org/align-text/-/align-text-0.1.4.tgz", "integrity": "sha1-DNkKVhCT810KmSVsIrcGlDP60Rc=", + "optional": true, "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } }, "amdefine": { @@ -74,6 +75,12 @@ "resolved": "https://registry.npmjs.org/amdefine/-/amdefine-1.0.1.tgz", "integrity": "sha1-SlKCrBZHKek2Gbz9OtFR+BfOkfU=" }, + "ansi-regex": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz", + "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8=", + "dev": true + }, "assert": { "version": "1.4.1", "resolved": "https://registry.npmjs.org/assert/-/assert-1.4.1.tgz", @@ -94,6 +101,34 @@ "resolved": "https://registry.npmjs.org/async/-/async-1.5.2.tgz", "integrity": "sha1-7GphrlZIDAw8skHJVhjiCJL5Zyo=" }, + "azure-pipelines-task-lib": { + "version": "2.8.0", + "resolved": "https://registry.npmjs.org/azure-pipelines-task-lib/-/azure-pipelines-task-lib-2.8.0.tgz", + "integrity": "sha512-PR8oap9z2j+o455W3PwAfB4SX1p4GdJc9OHQaQV0V+iQS1IBY6dVgcNSQMkHAXb0V1bbuLOFBLanXPe5eSgGTQ==", + "requires": { + "minimatch": "3.0.4", + "mockery": "^1.7.0", + "q": "^1.1.2", + "semver": "^5.1.0", + "shelljs": "^0.3.0", + "uuid": "^3.0.1" + }, + "dependencies": { + "minimatch": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz", + "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==", + "requires": { + "brace-expansion": "^1.1.7" + } + }, + "mockery": { + "version": "1.7.0", + "resolved": "https://registry.npmjs.org/mockery/-/mockery-1.7.0.tgz", + "integrity": "sha1-9O3g2HUMHJcnwnLqLGBiniyaHE8=" + } + } + }, "balanced-match": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz", @@ -104,22 +139,24 @@ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.8.tgz", "integrity": "sha1-wHshHHyVLsH479Uad+8NHTmQopI=", "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, "camelcase": { "version": "1.2.1", "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-1.2.1.tgz", - "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=" + "integrity": "sha1-m7UwTS4LVmmLLHWLCKPqqdqlijk=", + "optional": true }, "center-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/center-align/-/center-align-0.1.3.tgz", "integrity": "sha1-qg0yYptu6XIgBBHL1EYckHvCt60=", + "optional": true, "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, "chai": { @@ -128,28 +165,36 @@ "integrity": "sha1-TQJjewZ/6Vi9v906QOxW/vc3Mkc=", "dev": true, "requires": { - "assertion-error": "1.1.0", - "deep-eql": "0.1.3", - "type-detect": "1.0.0" + "assertion-error": "^1.0.1", + "deep-eql": "^0.1.3", + "type-detect": "^1.0.0" } }, "cliui": { "version": "2.1.0", "resolved": "https://registry.npmjs.org/cliui/-/cliui-2.1.0.tgz", "integrity": "sha1-S0dXYP+AJkx2LDoXGQMukcf+oNE=", + "optional": true, "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", + "center-align": "^0.1.1", + "right-align": "^0.1.1", "wordwrap": "0.0.2" }, "dependencies": { "wordwrap": { "version": "0.0.2", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.2.tgz", - "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=" + "integrity": "sha1-t5Zpu0LstAn4PVg8rVLKF+qhZD8=", + "optional": true } } }, + "code-point-at": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz", + "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c=", + "dev": true + }, "commander": { "version": "2.3.0", "resolved": "https://registry.npmjs.org/commander/-/commander-2.3.0.tgz", @@ -216,7 +261,7 @@ "integrity": "sha1-87IWfZBoxGmKjVH092CjmlTYGOs=", "dev": true, "requires": { - "samsam": "1.3.0" + "samsam": "1.x" } }, "glob": { @@ -225,9 +270,21 @@ "integrity": "sha1-4xPusknHr/qlxHUoaw4RW1mDlGc=", "dev": true, "requires": { - "graceful-fs": "2.0.3", - "inherits": "2.0.1", - "minimatch": "3.0.2" + "graceful-fs": "~2.0.0", + "inherits": "2", + "minimatch": "~0.2.11" + }, + "dependencies": { + "minimatch": { + "version": "0.2.14", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-0.2.14.tgz", + "integrity": "sha1-x054BXT2PG+aCQ6Q775u9TpqdWo=", + "dev": true, + "requires": { + "lru-cache": "2", + "sigmund": "~1.0.0" + } + } } }, "graceful-fs": { @@ -247,10 +304,10 @@ "resolved": "https://registry.npmjs.org/handlebars/-/handlebars-4.0.10.tgz", "integrity": "sha1-PTDHGLCaPZbyPqTMH0A8TTup/08=", "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" } }, "inherits": { @@ -265,10 +322,26 @@ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw==", "dev": true }, + "invert-kv": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/invert-kv/-/invert-kv-1.0.0.tgz", + "integrity": "sha1-EEqOSqym09jNFXqO+L+rLXo//bY=", + "dev": true + }, "is-buffer": { "version": "1.1.5", "resolved": "https://registry.npmjs.org/is-buffer/-/is-buffer-1.1.5.tgz", - "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=" + "integrity": "sha1-Hzsm72E7IUuIy8ojzGwB2Hlh7sw=", + "optional": true + }, + "is-fullwidth-code-point": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz", + "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=", + "dev": true, + "requires": { + "number-is-nan": "^1.0.0" + } }, "isarray": { "version": "0.0.1", @@ -316,14 +389,25 @@ "version": "3.2.2", "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-3.2.2.tgz", "integrity": "sha1-MeohpzS6ubuw8yRm2JOupR5KPGQ=", + "optional": true, "requires": { - "is-buffer": "1.1.5" + "is-buffer": "^1.1.5" } }, "lazy-cache": { "version": "1.0.4", "resolved": "https://registry.npmjs.org/lazy-cache/-/lazy-cache-1.0.4.tgz", - "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=" + "integrity": "sha1-odePw6UEdMuAhF07O24dpJpEbo4=", + "optional": true + }, + "lcid": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/lcid/-/lcid-1.0.0.tgz", + "integrity": "sha1-MIrMr6C8SDo4Z7S28rlQYlHRuDU=", + "dev": true, + "requires": { + "invert-kv": "^1.0.0" + } }, "lodash": { "version": "4.17.10", @@ -346,14 +430,21 @@ "longest": { "version": "1.0.1", "resolved": "https://registry.npmjs.org/longest/-/longest-1.0.1.tgz", - "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=" + "integrity": "sha1-MKCy2jj3N3DoKUoNIuZiXtd9AJc=", + "optional": true + }, + "lru-cache": { + "version": "2.7.3", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-2.7.3.tgz", + "integrity": "sha1-bUUk6LlV+V1PW1iFHOId1y+06VI=", + "dev": true }, "minimatch": { "version": "3.0.2", "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.2.tgz", "integrity": "sha1-DzmKcwDqRB6cNIyD2Yq4ydv5xAo=", "requires": { - "brace-expansion": "1.1.8" + "brace-expansion": "^1.0.0" } }, "minimist": { @@ -367,7 +458,15 @@ "integrity": "sha1-HXMHam35hs2TROFecfzAWkyavxI=", "dev": true, "requires": { - "minimist": "0.0.10" + "minimist": "0.0.8" + }, + "dependencies": { + "minimist": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-0.0.8.tgz", + "integrity": "sha1-hX/Kv8M5fSYluCKCYuhqp6ARsF0=", + "dev": true + } } }, "mocha": { @@ -393,7 +492,7 @@ "integrity": "sha1-Emy70vggZJXnKxWZFNOXuOoXoig=", "dev": true, "requires": { - "mocha": "2.3.3" + "mocha": "*" } }, "mockery": { @@ -420,10 +519,50 @@ "integrity": "sha512-fKiXMQrpP7CYWJQzKkPPx9hPgmq+YLDyxcG9N8RpiE9FoCkCbzD0NyW0YhE3xn3Aupe7nnDeIx4PFzYehpHT9Q==", "dev": true, "requires": { - "async": "1.5.2", - "ini": "1.3.5", - "secure-keys": "1.0.0", - "yargs": "3.10.0" + "async": "^1.4.0", + "ini": "^1.3.0", + "secure-keys": "^1.0.0", + "yargs": "^3.19.0" + }, + "dependencies": { + "camelcase": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-2.1.1.tgz", + "integrity": "sha1-fB0W1nmhu+WcoCys7PsBHiAfWh8=", + "dev": true + }, + "cliui": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-3.2.0.tgz", + "integrity": "sha1-EgYBU3qRbSmUD5NNo7SNWFo5IT0=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1", + "wrap-ansi": "^2.0.0" + } + }, + "window-size": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.4.tgz", + "integrity": "sha1-+OGqHuWlPsW/FR/6CXQqatdpeHY=", + "dev": true + }, + "yargs": { + "version": "3.32.0", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.32.0.tgz", + "integrity": "sha1-AwiOnr+edWtpdRYR0qXvWRSCyZU=", + "dev": true, + "requires": { + "camelcase": "^2.0.1", + "cliui": "^3.0.3", + "decamelize": "^1.1.1", + "os-locale": "^1.4.0", + "string-width": "^1.0.1", + "window-size": "^0.1.4", + "y18n": "^3.2.0" + } + } } }, "nise": { @@ -432,11 +571,11 @@ "integrity": "sha512-9JX3YwoIt3kS237scmSSOpEv7vCukVzLfwK0I0XhocDSHUANid8ZHnLEULbbSkfeMn98B2y5kphIWzZUylESRQ==", "dev": true, "requires": { - "@sinonjs/formatio": "2.0.0", - "just-extend": "1.1.27", - "lolex": "2.7.0", - "path-to-regexp": "1.7.0", - "text-encoding": "0.6.4" + "@sinonjs/formatio": "^2.0.0", + "just-extend": "^1.1.27", + "lolex": "^2.3.2", + "path-to-regexp": "^1.7.0", + "text-encoding": "^0.6.4" } }, "nock": { @@ -445,15 +584,15 @@ "integrity": "sha512-u9QOLOZP0DlcKzmAzCuX5PRsIhbiRJupR7hJn1cCCT7VW3ZKUrEH/oxGEtVA8Xbu4EmzH9d/VK0x/3FxCGRrRg==", "dev": true, "requires": { - "chai": "3.5.0", - "debug": "2.6.9", - "deep-equal": "1.0.1", - "json-stringify-safe": "5.0.1", - "lodash": "4.17.10", - "mkdirp": "0.5.0", + "chai": ">=1.9.2 <4.0.0", + "debug": "^2.2.0", + "deep-equal": "^1.0.0", + "json-stringify-safe": "^5.0.1", + "lodash": "~4.17.2", + "mkdirp": "^0.5.0", "propagate": "0.4.0", - "qs": "6.5.2", - "semver": "5.5.0" + "qs": "^6.0.2", + "semver": "^5.3.0" }, "dependencies": { "debug": { @@ -473,49 +612,56 @@ } } }, + "number-is-nan": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz", + "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0=", + "dev": true + }, "nyc": { "version": "11.9.0", "resolved": "https://registry.npmjs.org/nyc/-/nyc-11.9.0.tgz", "integrity": "sha512-w8OdJAhXL5izerzZMdqzYKMj/pgHJyY3qEPYBjLLxrhcVoHEY9pU5ENIiZyCgG9OR7x3VcUMoD40o6PtVpfR4g==", "dev": true, "requires": { - "archy": "1.0.0", - "arrify": "1.0.1", - "caching-transform": "1.0.1", - "convert-source-map": "1.5.1", - "debug-log": "1.0.1", - "default-require-extensions": "1.0.0", - "find-cache-dir": "0.1.1", - "find-up": "2.1.0", - "foreground-child": "1.5.6", - "glob": "7.1.2", - "istanbul-lib-coverage": "1.2.0", - "istanbul-lib-hook": "1.1.0", - "istanbul-lib-instrument": "1.10.1", - "istanbul-lib-report": "1.1.3", - "istanbul-lib-source-maps": "1.2.3", - "istanbul-reports": "1.4.0", - "md5-hex": "1.3.0", - "merge-source-map": "1.1.0", - "micromatch": "3.1.10", - "mkdirp": "0.5.1", - "resolve-from": "2.0.0", - "rimraf": "2.6.2", - "signal-exit": "3.0.2", - "spawn-wrap": "1.4.2", - "test-exclude": "4.2.1", + "archy": "^1.0.0", + "arrify": "^1.0.1", + "caching-transform": "^1.0.0", + "convert-source-map": "^1.5.1", + "debug-log": "^1.0.1", + "default-require-extensions": "^1.0.0", + "find-cache-dir": "^0.1.1", + "find-up": "^2.1.0", + "foreground-child": "^1.5.3", + "glob": "^7.0.6", + "istanbul-lib-coverage": "^1.1.2", + "istanbul-lib-hook": "^1.1.0", + "istanbul-lib-instrument": "^1.10.0", + "istanbul-lib-report": "^1.1.3", + "istanbul-lib-source-maps": "^1.2.3", + "istanbul-reports": "^1.4.0", + "md5-hex": "^1.2.0", + "merge-source-map": "^1.1.0", + "micromatch": "^3.1.10", + "mkdirp": "^0.5.0", + "resolve-from": "^2.0.0", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.1", + "spawn-wrap": "^1.4.2", + "test-exclude": "^4.2.0", "yargs": "11.1.0", - "yargs-parser": "8.1.0" + "yargs-parser": "^8.0.0" }, "dependencies": { "align-text": { "version": "0.1.4", "bundled": true, "dev": true, + "optional": true, "requires": { - "kind-of": "3.2.2", - "longest": "1.0.1", - "repeat-string": "1.6.1" + "kind-of": "^3.0.2", + "longest": "^1.0.1", + "repeat-string": "^1.5.2" } }, "amdefine": { @@ -538,7 +684,7 @@ "bundled": true, "dev": true, "requires": { - "default-require-extensions": "1.0.0" + "default-require-extensions": "^1.0.0" } }, "archy": { @@ -591,9 +737,9 @@ "bundled": true, "dev": true, "requires": { - "chalk": "1.1.3", - "esutils": "2.0.2", - "js-tokens": "3.0.2" + "chalk": "^1.1.3", + "esutils": "^2.0.2", + "js-tokens": "^3.0.2" } }, "babel-generator": { @@ -601,14 +747,14 @@ "bundled": true, "dev": true, "requires": { - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "detect-indent": "4.0.0", - "jsesc": "1.3.0", - "lodash": "4.17.10", - "source-map": "0.5.7", - "trim-right": "1.0.1" + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "detect-indent": "^4.0.0", + "jsesc": "^1.3.0", + "lodash": "^4.17.4", + "source-map": "^0.5.7", + "trim-right": "^1.0.1" } }, "babel-messages": { @@ -616,7 +762,7 @@ "bundled": true, "dev": true, "requires": { - "babel-runtime": "6.26.0" + "babel-runtime": "^6.22.0" } }, "babel-runtime": { @@ -624,8 +770,8 @@ "bundled": true, "dev": true, "requires": { - "core-js": "2.5.6", - "regenerator-runtime": "0.11.1" + "core-js": "^2.4.0", + "regenerator-runtime": "^0.11.0" } }, "babel-template": { @@ -633,11 +779,11 @@ "bundled": true, "dev": true, "requires": { - "babel-runtime": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "lodash": "4.17.10" + "babel-runtime": "^6.26.0", + "babel-traverse": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "lodash": "^4.17.4" } }, "babel-traverse": { @@ -645,15 +791,15 @@ "bundled": true, "dev": true, "requires": { - "babel-code-frame": "6.26.0", - "babel-messages": "6.23.0", - "babel-runtime": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "debug": "2.6.9", - "globals": "9.18.0", - "invariant": "2.2.4", - "lodash": "4.17.10" + "babel-code-frame": "^6.26.0", + "babel-messages": "^6.23.0", + "babel-runtime": "^6.26.0", + "babel-types": "^6.26.0", + "babylon": "^6.18.0", + "debug": "^2.6.8", + "globals": "^9.18.0", + "invariant": "^2.2.2", + "lodash": "^4.17.4" } }, "babel-types": { @@ -661,10 +807,10 @@ "bundled": true, "dev": true, "requires": { - "babel-runtime": "6.26.0", - "esutils": "2.0.2", - "lodash": "4.17.10", - "to-fast-properties": "1.0.3" + "babel-runtime": "^6.26.0", + "esutils": "^2.0.2", + "lodash": "^4.17.4", + "to-fast-properties": "^1.0.3" } }, "babylon": { @@ -682,13 +828,13 @@ "bundled": true, "dev": true, "requires": { - "cache-base": "1.0.1", - "class-utils": "0.3.6", - "component-emitter": "1.2.1", - "define-property": "1.0.0", - "isobject": "3.0.1", - "mixin-deep": "1.3.1", - "pascalcase": "0.1.1" + "cache-base": "^1.0.1", + "class-utils": "^0.3.5", + "component-emitter": "^1.2.1", + "define-property": "^1.0.0", + "isobject": "^3.0.1", + "mixin-deep": "^1.2.0", + "pascalcase": "^0.1.1" }, "dependencies": { "define-property": { @@ -696,7 +842,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { @@ -704,7 +850,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -712,7 +858,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -720,9 +866,9 @@ "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "isobject": { @@ -742,7 +888,7 @@ "bundled": true, "dev": true, "requires": { - "balanced-match": "1.0.0", + "balanced-match": "^1.0.0", "concat-map": "0.0.1" } }, @@ -751,16 +897,16 @@ "bundled": true, "dev": true, "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "dependencies": { "extend-shallow": { @@ -768,7 +914,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -783,15 +929,15 @@ "bundled": true, "dev": true, "requires": { - "collection-visit": "1.0.0", - "component-emitter": "1.2.1", - "get-value": "2.0.6", - "has-value": "1.0.0", - "isobject": "3.0.1", - "set-value": "2.0.0", - "to-object-path": "0.3.0", - "union-value": "1.0.0", - "unset-value": "1.0.0" + "collection-visit": "^1.0.0", + "component-emitter": "^1.2.1", + "get-value": "^2.0.6", + "has-value": "^1.0.0", + "isobject": "^3.0.1", + "set-value": "^2.0.0", + "to-object-path": "^0.3.0", + "union-value": "^1.0.0", + "unset-value": "^1.0.0" }, "dependencies": { "isobject": { @@ -806,9 +952,9 @@ "bundled": true, "dev": true, "requires": { - "md5-hex": "1.3.0", - "mkdirp": "0.5.1", - "write-file-atomic": "1.3.4" + "md5-hex": "^1.2.0", + "mkdirp": "^0.5.1", + "write-file-atomic": "^1.1.4" } }, "camelcase": { @@ -823,8 +969,8 @@ "dev": true, "optional": true, "requires": { - "align-text": "0.1.4", - "lazy-cache": "1.0.4" + "align-text": "^0.1.3", + "lazy-cache": "^1.0.3" } }, "chalk": { @@ -832,11 +978,11 @@ "bundled": true, "dev": true, "requires": { - "ansi-styles": "2.2.1", - "escape-string-regexp": "1.0.5", - "has-ansi": "2.0.0", - "strip-ansi": "3.0.1", - "supports-color": "2.0.0" + "ansi-styles": "^2.2.1", + "escape-string-regexp": "^1.0.2", + "has-ansi": "^2.0.0", + "strip-ansi": "^3.0.0", + "supports-color": "^2.0.0" } }, "class-utils": { @@ -844,10 +990,10 @@ "bundled": true, "dev": true, "requires": { - "arr-union": "3.1.0", - "define-property": "0.2.5", - "isobject": "3.0.1", - "static-extend": "0.1.2" + "arr-union": "^3.1.0", + "define-property": "^0.2.5", + "isobject": "^3.0.0", + "static-extend": "^0.1.1" }, "dependencies": { "define-property": { @@ -855,7 +1001,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "isobject": { @@ -871,8 +1017,8 @@ "dev": true, "optional": true, "requires": { - "center-align": "0.1.3", - "right-align": "0.1.3", + "center-align": "^0.1.1", + "right-align": "^0.1.1", "wordwrap": "0.0.2" }, "dependencies": { @@ -894,8 +1040,8 @@ "bundled": true, "dev": true, "requires": { - "map-visit": "1.0.0", - "object-visit": "1.0.1" + "map-visit": "^1.0.0", + "object-visit": "^1.0.0" } }, "commondir": { @@ -933,8 +1079,8 @@ "bundled": true, "dev": true, "requires": { - "lru-cache": "4.1.3", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "which": "^1.2.9" } }, "debug": { @@ -965,7 +1111,7 @@ "bundled": true, "dev": true, "requires": { - "strip-bom": "2.0.0" + "strip-bom": "^2.0.0" } }, "define-property": { @@ -973,8 +1119,8 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "1.0.2", - "isobject": "3.0.1" + "is-descriptor": "^1.0.2", + "isobject": "^3.0.1" }, "dependencies": { "is-accessor-descriptor": { @@ -982,7 +1128,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -990,7 +1136,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -998,9 +1144,9 @@ "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "isobject": { @@ -1020,7 +1166,7 @@ "bundled": true, "dev": true, "requires": { - "repeating": "2.0.1" + "repeating": "^2.0.0" } }, "error-ex": { @@ -1028,7 +1174,7 @@ "bundled": true, "dev": true, "requires": { - "is-arrayish": "0.2.1" + "is-arrayish": "^0.2.1" } }, "escape-string-regexp": { @@ -1046,13 +1192,13 @@ "bundled": true, "dev": true, "requires": { - "cross-spawn": "5.1.0", - "get-stream": "3.0.0", - "is-stream": "1.1.0", - "npm-run-path": "2.0.2", - "p-finally": "1.0.0", - "signal-exit": "3.0.2", - "strip-eof": "1.0.0" + "cross-spawn": "^5.0.1", + "get-stream": "^3.0.0", + "is-stream": "^1.1.0", + "npm-run-path": "^2.0.0", + "p-finally": "^1.0.0", + "signal-exit": "^3.0.0", + "strip-eof": "^1.0.0" }, "dependencies": { "cross-spawn": { @@ -1060,9 +1206,9 @@ "bundled": true, "dev": true, "requires": { - "lru-cache": "4.1.3", - "shebang-command": "1.2.0", - "which": "1.3.0" + "lru-cache": "^4.0.1", + "shebang-command": "^1.2.0", + "which": "^1.2.9" } } } @@ -1072,13 +1218,13 @@ "bundled": true, "dev": true, "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -1086,7 +1232,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -1094,7 +1240,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -1104,8 +1250,8 @@ "bundled": true, "dev": true, "requires": { - "assign-symbols": "1.0.0", - "is-extendable": "1.0.1" + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -1113,7 +1259,7 @@ "bundled": true, "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -1123,14 +1269,14 @@ "bundled": true, "dev": true, "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -1138,7 +1284,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -1146,7 +1292,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -1154,7 +1300,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -1162,7 +1308,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -1170,9 +1316,9 @@ "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "kind-of": { @@ -1187,10 +1333,10 @@ "bundled": true, "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -1198,7 +1344,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -1208,9 +1354,9 @@ "bundled": true, "dev": true, "requires": { - "commondir": "1.0.1", - "mkdirp": "0.5.1", - "pkg-dir": "1.0.0" + "commondir": "^1.0.1", + "mkdirp": "^0.5.1", + "pkg-dir": "^1.0.0" } }, "find-up": { @@ -1218,7 +1364,7 @@ "bundled": true, "dev": true, "requires": { - "locate-path": "2.0.0" + "locate-path": "^2.0.0" } }, "for-in": { @@ -1231,8 +1377,8 @@ "bundled": true, "dev": true, "requires": { - "cross-spawn": "4.0.2", - "signal-exit": "3.0.2" + "cross-spawn": "^4", + "signal-exit": "^3.0.0" } }, "fragment-cache": { @@ -1240,7 +1386,7 @@ "bundled": true, "dev": true, "requires": { - "map-cache": "0.2.2" + "map-cache": "^0.2.2" } }, "fs.realpath": { @@ -1268,12 +1414,12 @@ "bundled": true, "dev": true, "requires": { - "fs.realpath": "1.0.0", - "inflight": "1.0.6", - "inherits": "2.0.3", - "minimatch": "3.0.4", - "once": "1.4.0", - "path-is-absolute": "1.0.1" + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.0.4", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" } }, "globals": { @@ -1291,10 +1437,10 @@ "bundled": true, "dev": true, "requires": { - "async": "1.5.2", - "optimist": "0.6.1", - "source-map": "0.4.4", - "uglify-js": "2.8.29" + "async": "^1.4.0", + "optimist": "^0.6.1", + "source-map": "^0.4.4", + "uglify-js": "^2.6" }, "dependencies": { "source-map": { @@ -1302,7 +1448,7 @@ "bundled": true, "dev": true, "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" } } } @@ -1312,7 +1458,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "has-flag": { @@ -1325,9 +1471,9 @@ "bundled": true, "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "1.0.0", - "isobject": "3.0.1" + "get-value": "^2.0.6", + "has-values": "^1.0.0", + "isobject": "^3.0.0" }, "dependencies": { "isobject": { @@ -1342,8 +1488,8 @@ "bundled": true, "dev": true, "requires": { - "is-number": "3.0.0", - "kind-of": "4.0.0" + "is-number": "^3.0.0", + "kind-of": "^4.0.0" }, "dependencies": { "is-number": { @@ -1351,7 +1497,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -1359,7 +1505,7 @@ "bundled": true, "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -1369,7 +1515,7 @@ "bundled": true, "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -1389,8 +1535,8 @@ "bundled": true, "dev": true, "requires": { - "once": "1.4.0", - "wrappy": "1.0.2" + "once": "^1.3.0", + "wrappy": "1" } }, "inherits": { @@ -1403,7 +1549,7 @@ "bundled": true, "dev": true, "requires": { - "loose-envify": "1.3.1" + "loose-envify": "^1.0.0" } }, "invert-kv": { @@ -1416,7 +1562,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-arrayish": { @@ -1434,7 +1580,7 @@ "bundled": true, "dev": true, "requires": { - "builtin-modules": "1.1.1" + "builtin-modules": "^1.0.0" } }, "is-data-descriptor": { @@ -1442,7 +1588,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-descriptor": { @@ -1450,9 +1596,9 @@ "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" }, "dependencies": { "kind-of": { @@ -1472,7 +1618,7 @@ "bundled": true, "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "is-fullwidth-code-point": { @@ -1485,7 +1631,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "is-odd": { @@ -1493,7 +1639,7 @@ "bundled": true, "dev": true, "requires": { - "is-number": "4.0.0" + "is-number": "^4.0.0" }, "dependencies": { "is-number": { @@ -1508,7 +1654,7 @@ "bundled": true, "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" }, "dependencies": { "isobject": { @@ -1558,7 +1704,7 @@ "bundled": true, "dev": true, "requires": { - "append-transform": "0.4.0" + "append-transform": "^0.4.0" } }, "istanbul-lib-instrument": { @@ -1566,13 +1712,13 @@ "bundled": true, "dev": true, "requires": { - "babel-generator": "6.26.1", - "babel-template": "6.26.0", - "babel-traverse": "6.26.0", - "babel-types": "6.26.0", - "babylon": "6.18.0", - "istanbul-lib-coverage": "1.2.0", - "semver": "5.5.0" + "babel-generator": "^6.18.0", + "babel-template": "^6.16.0", + "babel-traverse": "^6.18.0", + "babel-types": "^6.18.0", + "babylon": "^6.18.0", + "istanbul-lib-coverage": "^1.2.0", + "semver": "^5.3.0" } }, "istanbul-lib-report": { @@ -1580,10 +1726,10 @@ "bundled": true, "dev": true, "requires": { - "istanbul-lib-coverage": "1.2.0", - "mkdirp": "0.5.1", - "path-parse": "1.0.5", - "supports-color": "3.2.3" + "istanbul-lib-coverage": "^1.1.2", + "mkdirp": "^0.5.1", + "path-parse": "^1.0.5", + "supports-color": "^3.1.2" }, "dependencies": { "supports-color": { @@ -1591,7 +1737,7 @@ "bundled": true, "dev": true, "requires": { - "has-flag": "1.0.0" + "has-flag": "^1.0.0" } } } @@ -1601,11 +1747,11 @@ "bundled": true, "dev": true, "requires": { - "debug": "3.1.0", - "istanbul-lib-coverage": "1.2.0", - "mkdirp": "0.5.1", - "rimraf": "2.6.2", - "source-map": "0.5.7" + "debug": "^3.1.0", + "istanbul-lib-coverage": "^1.1.2", + "mkdirp": "^0.5.1", + "rimraf": "^2.6.1", + "source-map": "^0.5.3" }, "dependencies": { "debug": { @@ -1623,7 +1769,7 @@ "bundled": true, "dev": true, "requires": { - "handlebars": "4.0.11" + "handlebars": "^4.0.3" } }, "js-tokens": { @@ -1641,7 +1787,7 @@ "bundled": true, "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } }, "lazy-cache": { @@ -1655,7 +1801,7 @@ "bundled": true, "dev": true, "requires": { - "invert-kv": "1.0.0" + "invert-kv": "^1.0.0" } }, "load-json-file": { @@ -1663,11 +1809,11 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "4.1.11", - "parse-json": "2.2.0", - "pify": "2.3.0", - "pinkie-promise": "2.0.1", - "strip-bom": "2.0.0" + "graceful-fs": "^4.1.2", + "parse-json": "^2.2.0", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0", + "strip-bom": "^2.0.0" } }, "locate-path": { @@ -1675,8 +1821,8 @@ "bundled": true, "dev": true, "requires": { - "p-locate": "2.0.0", - "path-exists": "3.0.0" + "p-locate": "^2.0.0", + "path-exists": "^3.0.0" }, "dependencies": { "path-exists": { @@ -1694,14 +1840,15 @@ "longest": { "version": "1.0.1", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "loose-envify": { "version": "1.3.1", "bundled": true, "dev": true, "requires": { - "js-tokens": "3.0.2" + "js-tokens": "^3.0.0" } }, "lru-cache": { @@ -1709,8 +1856,8 @@ "bundled": true, "dev": true, "requires": { - "pseudomap": "1.0.2", - "yallist": "2.1.2" + "pseudomap": "^1.0.2", + "yallist": "^2.1.2" } }, "map-cache": { @@ -1723,7 +1870,7 @@ "bundled": true, "dev": true, "requires": { - "object-visit": "1.0.1" + "object-visit": "^1.0.0" } }, "md5-hex": { @@ -1731,7 +1878,7 @@ "bundled": true, "dev": true, "requires": { - "md5-o-matic": "0.1.1" + "md5-o-matic": "^0.1.1" } }, "md5-o-matic": { @@ -1744,7 +1891,7 @@ "bundled": true, "dev": true, "requires": { - "mimic-fn": "1.2.0" + "mimic-fn": "^1.0.0" } }, "merge-source-map": { @@ -1752,7 +1899,7 @@ "bundled": true, "dev": true, "requires": { - "source-map": "0.6.1" + "source-map": "^0.6.1" }, "dependencies": { "source-map": { @@ -1767,19 +1914,19 @@ "bundled": true, "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" }, "dependencies": { "kind-of": { @@ -1799,7 +1946,7 @@ "bundled": true, "dev": true, "requires": { - "brace-expansion": "1.1.11" + "brace-expansion": "^1.1.7" } }, "minimist": { @@ -1812,8 +1959,8 @@ "bundled": true, "dev": true, "requires": { - "for-in": "1.0.2", - "is-extendable": "1.0.1" + "for-in": "^1.0.2", + "is-extendable": "^1.0.1" }, "dependencies": { "is-extendable": { @@ -1821,7 +1968,7 @@ "bundled": true, "dev": true, "requires": { - "is-plain-object": "2.0.4" + "is-plain-object": "^2.0.4" } } } @@ -1844,18 +1991,18 @@ "bundled": true, "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "fragment-cache": "0.2.1", - "is-odd": "2.0.0", - "is-windows": "1.0.2", - "kind-of": "6.0.2", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "fragment-cache": "^0.2.1", + "is-odd": "^2.0.0", + "is-windows": "^1.0.2", + "kind-of": "^6.0.2", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "arr-diff": { @@ -1880,10 +2027,10 @@ "bundled": true, "dev": true, "requires": { - "hosted-git-info": "2.6.0", - "is-builtin-module": "1.0.0", - "semver": "5.5.0", - "validate-npm-package-license": "3.0.3" + "hosted-git-info": "^2.1.4", + "is-builtin-module": "^1.0.0", + "semver": "2 || 3 || 4 || 5", + "validate-npm-package-license": "^3.0.1" } }, "npm-run-path": { @@ -1891,7 +2038,7 @@ "bundled": true, "dev": true, "requires": { - "path-key": "2.0.1" + "path-key": "^2.0.0" } }, "number-is-nan": { @@ -1909,9 +2056,9 @@ "bundled": true, "dev": true, "requires": { - "copy-descriptor": "0.1.1", - "define-property": "0.2.5", - "kind-of": "3.2.2" + "copy-descriptor": "^0.1.0", + "define-property": "^0.2.5", + "kind-of": "^3.0.3" }, "dependencies": { "define-property": { @@ -1919,7 +2066,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } @@ -1929,7 +2076,7 @@ "bundled": true, "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.0" }, "dependencies": { "isobject": { @@ -1944,7 +2091,7 @@ "bundled": true, "dev": true, "requires": { - "isobject": "3.0.1" + "isobject": "^3.0.1" }, "dependencies": { "isobject": { @@ -1959,7 +2106,7 @@ "bundled": true, "dev": true, "requires": { - "wrappy": "1.0.2" + "wrappy": "1" } }, "optimist": { @@ -1967,8 +2114,8 @@ "bundled": true, "dev": true, "requires": { - "minimist": "0.0.8", - "wordwrap": "0.0.3" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" } }, "os-homedir": { @@ -1981,9 +2128,9 @@ "bundled": true, "dev": true, "requires": { - "execa": "0.7.0", - "lcid": "1.0.0", - "mem": "1.1.0" + "execa": "^0.7.0", + "lcid": "^1.0.0", + "mem": "^1.1.0" } }, "p-finally": { @@ -1996,7 +2143,7 @@ "bundled": true, "dev": true, "requires": { - "p-try": "1.0.0" + "p-try": "^1.0.0" } }, "p-locate": { @@ -2004,7 +2151,7 @@ "bundled": true, "dev": true, "requires": { - "p-limit": "1.2.0" + "p-limit": "^1.1.0" } }, "p-try": { @@ -2017,7 +2164,7 @@ "bundled": true, "dev": true, "requires": { - "error-ex": "1.3.1" + "error-ex": "^1.2.0" } }, "pascalcase": { @@ -2030,7 +2177,7 @@ "bundled": true, "dev": true, "requires": { - "pinkie-promise": "2.0.1" + "pinkie-promise": "^2.0.0" } }, "path-is-absolute": { @@ -2053,9 +2200,9 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "4.1.11", - "pify": "2.3.0", - "pinkie-promise": "2.0.1" + "graceful-fs": "^4.1.2", + "pify": "^2.0.0", + "pinkie-promise": "^2.0.0" } }, "pify": { @@ -2073,7 +2220,7 @@ "bundled": true, "dev": true, "requires": { - "pinkie": "2.0.4" + "pinkie": "^2.0.0" } }, "pkg-dir": { @@ -2081,7 +2228,7 @@ "bundled": true, "dev": true, "requires": { - "find-up": "1.1.2" + "find-up": "^1.0.0" }, "dependencies": { "find-up": { @@ -2089,8 +2236,8 @@ "bundled": true, "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } } } @@ -2110,9 +2257,9 @@ "bundled": true, "dev": true, "requires": { - "load-json-file": "1.1.0", - "normalize-package-data": "2.4.0", - "path-type": "1.1.0" + "load-json-file": "^1.0.0", + "normalize-package-data": "^2.3.2", + "path-type": "^1.0.0" } }, "read-pkg-up": { @@ -2120,8 +2267,8 @@ "bundled": true, "dev": true, "requires": { - "find-up": "1.1.2", - "read-pkg": "1.1.0" + "find-up": "^1.0.0", + "read-pkg": "^1.0.0" }, "dependencies": { "find-up": { @@ -2129,8 +2276,8 @@ "bundled": true, "dev": true, "requires": { - "path-exists": "2.1.0", - "pinkie-promise": "2.0.1" + "path-exists": "^2.0.0", + "pinkie-promise": "^2.0.0" } } } @@ -2145,8 +2292,8 @@ "bundled": true, "dev": true, "requires": { - "extend-shallow": "3.0.2", - "safe-regex": "1.1.0" + "extend-shallow": "^3.0.2", + "safe-regex": "^1.1.0" } }, "repeat-element": { @@ -2164,7 +2311,7 @@ "bundled": true, "dev": true, "requires": { - "is-finite": "1.0.2" + "is-finite": "^1.0.0" } }, "require-directory": { @@ -2198,7 +2345,7 @@ "dev": true, "optional": true, "requires": { - "align-text": "0.1.4" + "align-text": "^0.1.1" } }, "rimraf": { @@ -2206,7 +2353,7 @@ "bundled": true, "dev": true, "requires": { - "glob": "7.1.2" + "glob": "^7.0.5" } }, "safe-regex": { @@ -2214,7 +2361,7 @@ "bundled": true, "dev": true, "requires": { - "ret": "0.1.15" + "ret": "~0.1.10" } }, "semver": { @@ -2232,10 +2379,10 @@ "bundled": true, "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "split-string": "3.1.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" }, "dependencies": { "extend-shallow": { @@ -2243,7 +2390,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -2253,7 +2400,7 @@ "bundled": true, "dev": true, "requires": { - "shebang-regex": "1.0.0" + "shebang-regex": "^1.0.0" } }, "shebang-regex": { @@ -2276,14 +2423,14 @@ "bundled": true, "dev": true, "requires": { - "base": "0.11.2", - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "map-cache": "0.2.2", - "source-map": "0.5.7", - "source-map-resolve": "0.5.1", - "use": "3.1.0" + "base": "^0.11.1", + "debug": "^2.2.0", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "map-cache": "^0.2.2", + "source-map": "^0.5.6", + "source-map-resolve": "^0.5.0", + "use": "^3.1.0" }, "dependencies": { "define-property": { @@ -2291,7 +2438,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -2299,7 +2446,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -2309,9 +2456,9 @@ "bundled": true, "dev": true, "requires": { - "define-property": "1.0.0", - "isobject": "3.0.1", - "snapdragon-util": "3.0.1" + "define-property": "^1.0.0", + "isobject": "^3.0.0", + "snapdragon-util": "^3.0.1" }, "dependencies": { "define-property": { @@ -2319,7 +2466,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "is-accessor-descriptor": { @@ -2327,7 +2474,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -2335,7 +2482,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -2343,9 +2490,9 @@ "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "isobject": { @@ -2365,7 +2512,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.2.0" } }, "source-map": { @@ -2378,11 +2525,11 @@ "bundled": true, "dev": true, "requires": { - "atob": "2.1.1", - "decode-uri-component": "0.2.0", - "resolve-url": "0.2.1", - "source-map-url": "0.4.0", - "urix": "0.1.0" + "atob": "^2.0.0", + "decode-uri-component": "^0.2.0", + "resolve-url": "^0.2.1", + "source-map-url": "^0.4.0", + "urix": "^0.1.0" } }, "source-map-url": { @@ -2395,12 +2542,12 @@ "bundled": true, "dev": true, "requires": { - "foreground-child": "1.5.6", - "mkdirp": "0.5.1", - "os-homedir": "1.0.2", - "rimraf": "2.6.2", - "signal-exit": "3.0.2", - "which": "1.3.0" + "foreground-child": "^1.5.6", + "mkdirp": "^0.5.0", + "os-homedir": "^1.0.1", + "rimraf": "^2.6.2", + "signal-exit": "^3.0.2", + "which": "^1.3.0" } }, "spdx-correct": { @@ -2408,8 +2555,8 @@ "bundled": true, "dev": true, "requires": { - "spdx-expression-parse": "3.0.0", - "spdx-license-ids": "3.0.0" + "spdx-expression-parse": "^3.0.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-exceptions": { @@ -2422,8 +2569,8 @@ "bundled": true, "dev": true, "requires": { - "spdx-exceptions": "2.1.0", - "spdx-license-ids": "3.0.0" + "spdx-exceptions": "^2.1.0", + "spdx-license-ids": "^3.0.0" } }, "spdx-license-ids": { @@ -2436,7 +2583,7 @@ "bundled": true, "dev": true, "requires": { - "extend-shallow": "3.0.2" + "extend-shallow": "^3.0.0" } }, "static-extend": { @@ -2444,8 +2591,8 @@ "bundled": true, "dev": true, "requires": { - "define-property": "0.2.5", - "object-copy": "0.1.0" + "define-property": "^0.2.5", + "object-copy": "^0.1.0" }, "dependencies": { "define-property": { @@ -2453,7 +2600,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } } } @@ -2463,8 +2610,8 @@ "bundled": true, "dev": true, "requires": { - "is-fullwidth-code-point": "2.0.0", - "strip-ansi": "4.0.0" + "is-fullwidth-code-point": "^2.0.0", + "strip-ansi": "^4.0.0" }, "dependencies": { "ansi-regex": { @@ -2477,7 +2624,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } } } @@ -2487,7 +2634,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "2.1.1" + "ansi-regex": "^2.0.0" } }, "strip-bom": { @@ -2495,7 +2642,7 @@ "bundled": true, "dev": true, "requires": { - "is-utf8": "0.2.1" + "is-utf8": "^0.2.0" } }, "strip-eof": { @@ -2513,11 +2660,11 @@ "bundled": true, "dev": true, "requires": { - "arrify": "1.0.1", - "micromatch": "3.1.10", - "object-assign": "4.1.1", - "read-pkg-up": "1.0.1", - "require-main-filename": "1.0.1" + "arrify": "^1.0.1", + "micromatch": "^3.1.8", + "object-assign": "^4.1.0", + "read-pkg-up": "^1.0.1", + "require-main-filename": "^1.0.1" }, "dependencies": { "arr-diff": { @@ -2535,16 +2682,16 @@ "bundled": true, "dev": true, "requires": { - "arr-flatten": "1.1.0", - "array-unique": "0.3.2", - "extend-shallow": "2.0.1", - "fill-range": "4.0.0", - "isobject": "3.0.1", - "repeat-element": "1.1.2", - "snapdragon": "0.8.2", - "snapdragon-node": "2.1.1", - "split-string": "3.1.0", - "to-regex": "3.0.2" + "arr-flatten": "^1.1.0", + "array-unique": "^0.3.2", + "extend-shallow": "^2.0.1", + "fill-range": "^4.0.0", + "isobject": "^3.0.1", + "repeat-element": "^1.1.2", + "snapdragon": "^0.8.1", + "snapdragon-node": "^2.0.1", + "split-string": "^3.0.2", + "to-regex": "^3.0.1" }, "dependencies": { "extend-shallow": { @@ -2552,7 +2699,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -2562,13 +2709,13 @@ "bundled": true, "dev": true, "requires": { - "debug": "2.6.9", - "define-property": "0.2.5", - "extend-shallow": "2.0.1", - "posix-character-classes": "0.1.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "debug": "^2.3.3", + "define-property": "^0.2.5", + "extend-shallow": "^2.0.1", + "posix-character-classes": "^0.1.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -2576,7 +2723,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "0.1.6" + "is-descriptor": "^0.1.0" } }, "extend-shallow": { @@ -2584,7 +2731,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "is-accessor-descriptor": { @@ -2592,7 +2739,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2600,7 +2747,7 @@ "bundled": true, "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2610,7 +2757,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2618,7 +2765,7 @@ "bundled": true, "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2628,9 +2775,9 @@ "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "0.1.6", - "is-data-descriptor": "0.1.4", - "kind-of": "5.1.0" + "is-accessor-descriptor": "^0.1.6", + "is-data-descriptor": "^0.1.4", + "kind-of": "^5.0.0" } }, "kind-of": { @@ -2645,14 +2792,14 @@ "bundled": true, "dev": true, "requires": { - "array-unique": "0.3.2", - "define-property": "1.0.0", - "expand-brackets": "2.1.4", - "extend-shallow": "2.0.1", - "fragment-cache": "0.2.1", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "array-unique": "^0.3.2", + "define-property": "^1.0.0", + "expand-brackets": "^2.1.4", + "extend-shallow": "^2.0.1", + "fragment-cache": "^0.2.1", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.1" }, "dependencies": { "define-property": { @@ -2660,7 +2807,7 @@ "bundled": true, "dev": true, "requires": { - "is-descriptor": "1.0.2" + "is-descriptor": "^1.0.0" } }, "extend-shallow": { @@ -2668,7 +2815,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -2678,10 +2825,10 @@ "bundled": true, "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-number": "3.0.0", - "repeat-string": "1.6.1", - "to-regex-range": "2.1.1" + "extend-shallow": "^2.0.1", + "is-number": "^3.0.0", + "repeat-string": "^1.6.1", + "to-regex-range": "^2.1.0" }, "dependencies": { "extend-shallow": { @@ -2689,7 +2836,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } } } @@ -2699,7 +2846,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-data-descriptor": { @@ -2707,7 +2854,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.0" } }, "is-descriptor": { @@ -2715,9 +2862,9 @@ "bundled": true, "dev": true, "requires": { - "is-accessor-descriptor": "1.0.0", - "is-data-descriptor": "1.0.0", - "kind-of": "6.0.2" + "is-accessor-descriptor": "^1.0.0", + "is-data-descriptor": "^1.0.0", + "kind-of": "^6.0.2" } }, "is-number": { @@ -2725,7 +2872,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" }, "dependencies": { "kind-of": { @@ -2733,7 +2880,7 @@ "bundled": true, "dev": true, "requires": { - "is-buffer": "1.1.6" + "is-buffer": "^1.1.5" } } } @@ -2753,19 +2900,19 @@ "bundled": true, "dev": true, "requires": { - "arr-diff": "4.0.0", - "array-unique": "0.3.2", - "braces": "2.3.2", - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "extglob": "2.0.4", - "fragment-cache": "0.2.1", - "kind-of": "6.0.2", - "nanomatch": "1.2.9", - "object.pick": "1.3.0", - "regex-not": "1.0.2", - "snapdragon": "0.8.2", - "to-regex": "3.0.2" + "arr-diff": "^4.0.0", + "array-unique": "^0.3.2", + "braces": "^2.3.1", + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "extglob": "^2.0.4", + "fragment-cache": "^0.2.1", + "kind-of": "^6.0.2", + "nanomatch": "^1.2.9", + "object.pick": "^1.3.0", + "regex-not": "^1.0.0", + "snapdragon": "^0.8.1", + "to-regex": "^3.0.2" } } } @@ -2780,7 +2927,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } }, "to-regex": { @@ -2788,10 +2935,10 @@ "bundled": true, "dev": true, "requires": { - "define-property": "2.0.2", - "extend-shallow": "3.0.2", - "regex-not": "1.0.2", - "safe-regex": "1.1.0" + "define-property": "^2.0.2", + "extend-shallow": "^3.0.2", + "regex-not": "^1.0.2", + "safe-regex": "^1.1.0" } }, "to-regex-range": { @@ -2799,8 +2946,8 @@ "bundled": true, "dev": true, "requires": { - "is-number": "3.0.0", - "repeat-string": "1.6.1" + "is-number": "^3.0.0", + "repeat-string": "^1.6.1" }, "dependencies": { "is-number": { @@ -2808,7 +2955,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "3.2.2" + "kind-of": "^3.0.2" } } } @@ -2824,9 +2971,9 @@ "dev": true, "optional": true, "requires": { - "source-map": "0.5.7", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" }, "dependencies": { "yargs": { @@ -2835,9 +2982,9 @@ "dev": true, "optional": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" } } @@ -2854,10 +3001,10 @@ "bundled": true, "dev": true, "requires": { - "arr-union": "3.1.0", - "get-value": "2.0.6", - "is-extendable": "0.1.1", - "set-value": "0.4.3" + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^0.4.3" }, "dependencies": { "extend-shallow": { @@ -2865,7 +3012,7 @@ "bundled": true, "dev": true, "requires": { - "is-extendable": "0.1.1" + "is-extendable": "^0.1.0" } }, "set-value": { @@ -2873,10 +3020,10 @@ "bundled": true, "dev": true, "requires": { - "extend-shallow": "2.0.1", - "is-extendable": "0.1.1", - "is-plain-object": "2.0.4", - "to-object-path": "0.3.0" + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.1", + "to-object-path": "^0.3.0" } } } @@ -2886,8 +3033,8 @@ "bundled": true, "dev": true, "requires": { - "has-value": "0.3.1", - "isobject": "3.0.1" + "has-value": "^0.3.1", + "isobject": "^3.0.0" }, "dependencies": { "has-value": { @@ -2895,9 +3042,9 @@ "bundled": true, "dev": true, "requires": { - "get-value": "2.0.6", - "has-values": "0.1.4", - "isobject": "2.1.0" + "get-value": "^2.0.3", + "has-values": "^0.1.4", + "isobject": "^2.0.0" }, "dependencies": { "isobject": { @@ -2932,7 +3079,7 @@ "bundled": true, "dev": true, "requires": { - "kind-of": "6.0.2" + "kind-of": "^6.0.2" }, "dependencies": { "kind-of": { @@ -2947,8 +3094,8 @@ "bundled": true, "dev": true, "requires": { - "spdx-correct": "3.0.0", - "spdx-expression-parse": "3.0.0" + "spdx-correct": "^3.0.0", + "spdx-expression-parse": "^3.0.0" } }, "which": { @@ -2956,7 +3103,7 @@ "bundled": true, "dev": true, "requires": { - "isexe": "2.0.0" + "isexe": "^2.0.0" } }, "which-module": { @@ -2980,8 +3127,8 @@ "bundled": true, "dev": true, "requires": { - "string-width": "1.0.2", - "strip-ansi": "3.0.1" + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" }, "dependencies": { "is-fullwidth-code-point": { @@ -2989,7 +3136,7 @@ "bundled": true, "dev": true, "requires": { - "number-is-nan": "1.0.1" + "number-is-nan": "^1.0.0" } }, "string-width": { @@ -2997,9 +3144,9 @@ "bundled": true, "dev": true, "requires": { - "code-point-at": "1.1.0", - "is-fullwidth-code-point": "1.0.0", - "strip-ansi": "3.0.1" + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" } } } @@ -3014,9 +3161,9 @@ "bundled": true, "dev": true, "requires": { - "graceful-fs": "4.1.11", - "imurmurhash": "0.1.4", - "slide": "1.1.6" + "graceful-fs": "^4.1.11", + "imurmurhash": "^0.1.4", + "slide": "^1.1.5" } }, "y18n": { @@ -3034,18 +3181,18 @@ "bundled": true, "dev": true, "requires": { - "cliui": "4.1.0", - "decamelize": "1.2.0", - "find-up": "2.1.0", - "get-caller-file": "1.0.2", - "os-locale": "2.1.0", - "require-directory": "2.1.1", - "require-main-filename": "1.0.1", - "set-blocking": "2.0.0", - "string-width": "2.1.1", - "which-module": "2.0.0", - "y18n": "3.2.1", - "yargs-parser": "9.0.2" + "cliui": "^4.0.0", + "decamelize": "^1.1.1", + "find-up": "^2.1.0", + "get-caller-file": "^1.0.1", + "os-locale": "^2.0.0", + "require-directory": "^2.1.1", + "require-main-filename": "^1.0.1", + "set-blocking": "^2.0.0", + "string-width": "^2.0.0", + "which-module": "^2.0.0", + "y18n": "^3.2.1", + "yargs-parser": "^9.0.2" }, "dependencies": { "ansi-regex": { @@ -3063,9 +3210,9 @@ "bundled": true, "dev": true, "requires": { - "string-width": "2.1.1", - "strip-ansi": "4.0.0", - "wrap-ansi": "2.1.0" + "string-width": "^2.1.1", + "strip-ansi": "^4.0.0", + "wrap-ansi": "^2.0.0" } }, "strip-ansi": { @@ -3073,7 +3220,7 @@ "bundled": true, "dev": true, "requires": { - "ansi-regex": "3.0.0" + "ansi-regex": "^3.0.0" } }, "yargs-parser": { @@ -3081,7 +3228,7 @@ "bundled": true, "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" } } } @@ -3091,7 +3238,7 @@ "bundled": true, "dev": true, "requires": { - "camelcase": "4.1.0" + "camelcase": "^4.1.0" }, "dependencies": { "camelcase": { @@ -3108,8 +3255,17 @@ "resolved": "https://registry.npmjs.org/optimist/-/optimist-0.6.1.tgz", "integrity": "sha1-2j6nRob6IaGaERwybpDrFaAZZoY=", "requires": { - "minimist": "0.0.10", - "wordwrap": "0.0.3" + "minimist": "~0.0.1", + "wordwrap": "~0.0.2" + } + }, + "os-locale": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/os-locale/-/os-locale-1.4.0.tgz", + "integrity": "sha1-IPnxeuKe00XoveWDsT0gCYA8FNk=", + "dev": true, + "requires": { + "lcid": "^1.0.0" } }, "path-to-regexp": { @@ -3141,14 +3297,16 @@ "repeat-string": { "version": "1.6.1", "resolved": "https://registry.npmjs.org/repeat-string/-/repeat-string-1.6.1.tgz", - "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=" + "integrity": "sha1-jcrkcOHIirwtYA//Sndihtp15jc=", + "optional": true }, "right-align": { "version": "0.1.3", "resolved": "https://registry.npmjs.org/right-align/-/right-align-0.1.3.tgz", "integrity": "sha1-YTObci/mo1FWiSENJOFMlhSGE+8=", + "optional": true, "requires": { - "align-text": "0.1.4" + "align-text": "^0.1.1" } }, "samsam": { @@ -3179,22 +3337,28 @@ "resolved": "https://registry.npmjs.org/shelljs/-/shelljs-0.3.0.tgz", "integrity": "sha1-NZbmMHp4FUT1kfN9phg2DzHbV7E=" }, + "sigmund": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/sigmund/-/sigmund-1.0.1.tgz", + "integrity": "sha1-P/IfGYytIXX587eBhT/ZTQ0ZtZA=", + "dev": true + }, "sinon": { "version": "4.0.1", "resolved": "https://registry.npmjs.org/sinon/-/sinon-4.0.1.tgz", "integrity": "sha512-4qIY0pCWCvGCJpV/1JkFu9kbsNEZ9O34cG1oru/c7OCDtrEs50Gq/VjkA2ID5ZwLyoNx1i1ws118oh/p6fVeDg==", "dev": true, "requires": { - "diff": "3.5.0", + "diff": "^3.1.0", "formatio": "1.2.0", - "lodash.get": "4.4.2", - "lolex": "2.7.0", - "native-promise-only": "0.8.1", - "nise": "1.4.1", - "path-to-regexp": "1.7.0", - "samsam": "1.3.0", + "lodash.get": "^4.4.2", + "lolex": "^2.1.3", + "native-promise-only": "^0.8.1", + "nise": "^1.1.1", + "path-to-regexp": "^1.7.0", + "samsam": "^1.1.3", "text-encoding": "0.6.4", - "type-detect": "4.0.8" + "type-detect": "^4.0.0" }, "dependencies": { "diff": { @@ -3216,7 +3380,27 @@ "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.4.4.tgz", "integrity": "sha1-66T12pwNyZneaAMti092FzZSA2s=", "requires": { - "amdefine": "1.0.1" + "amdefine": ">=0.0.4" + } + }, + "string-width": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz", + "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=", + "dev": true, + "requires": { + "code-point-at": "^1.0.0", + "is-fullwidth-code-point": "^1.0.0", + "strip-ansi": "^3.0.0" + } + }, + "strip-ansi": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz", + "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=", + "dev": true, + "requires": { + "ansi-regex": "^2.0.0" } }, "supports-color": { @@ -3254,9 +3438,9 @@ "integrity": "sha1-KcVzMUgFe7Th913zW3qcty5qWd0=", "optional": true, "requires": { - "source-map": "0.5.6", - "uglify-to-browserify": "1.0.2", - "yargs": "3.10.0" + "source-map": "~0.5.1", + "uglify-to-browserify": "~1.0.0", + "yargs": "~3.10.0" }, "dependencies": { "source-map": { @@ -3283,48 +3467,39 @@ } }, "uuid": { - "version": "3.2.1", - "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.2.1.tgz", - "integrity": "sha512-jZnMwlb9Iku/O3smGWvZhauCf6cvvpKi4BKRiliS3cxnI+Gz9j5MEpTz2UFuXiKPJocb7gnsLHwiS05ige5BEA==" - }, - "vsts-task-lib": { - "version": "2.2.1", - "resolved": "https://registry.npmjs.org/vsts-task-lib/-/vsts-task-lib-2.2.1.tgz", - "integrity": "sha512-FYllK73r1K7+sPUtWKZ4tihskJgpGB3YdNX4qr1YO0cmhFAWHm9FfEVxmKdlNeIyDtu3NyRb4wVUz0Gwi5LyGA==", - "requires": { - "minimatch": "3.0.2", - "mockery": "1.7.0", - "q": "1.5.1", - "semver": "5.5.0", - "shelljs": "0.3.0", - "uuid": "3.2.1" - }, - "dependencies": { - "mockery": { - "version": "1.7.0", - "resolved": "https://registry.npmjs.org/mockery/-/mockery-1.7.0.tgz", - "integrity": "sha1-9O3g2HUMHJcnwnLqLGBiniyaHE8=" - } - } + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.3.2.tgz", + "integrity": "sha512-yXJmeNaw3DnnKAOKJE51sL/ZaYfWJRl1pK9dr19YFCu0ObS231AB1/LbqTKRAQ5kw8A90rA6fr4riOUpTZvQZA==" }, "window-size": { "version": "0.1.0", "resolved": "https://registry.npmjs.org/window-size/-/window-size-0.1.0.tgz", - "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=" + "integrity": "sha1-VDjNLqk7IC76Ohn+iIeu58lPnJ0=", + "optional": true }, "wordwrap": { "version": "0.0.3", "resolved": "https://registry.npmjs.org/wordwrap/-/wordwrap-0.0.3.tgz", "integrity": "sha1-o9XabNXAvAAI03I0u68b7WMFkQc=" }, + "wrap-ansi": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-2.1.0.tgz", + "integrity": "sha1-2Pw9KE3QV5T+hJc8rs3Rz4JP3YU=", + "dev": true, + "requires": { + "string-width": "^1.0.1", + "strip-ansi": "^3.0.1" + } + }, "xml2js": { "version": "0.4.19", "resolved": "https://registry.npmjs.org/xml2js/-/xml2js-0.4.19.tgz", "integrity": "sha512-esZnJZJOiJR9wWKMyuvSE1y6Dq5LCuJanqhxslH2bxM6duahNZ+HMpCLhBQGZkbX6xRf8x1Y2eJlgt2q3qo49Q==", "dev": true, "requires": { - "sax": "1.2.4", - "xmlbuilder": "9.0.7" + "sax": ">=0.6.0", + "xmlbuilder": "~9.0.1" } }, "xmlbuilder": { @@ -3333,14 +3508,21 @@ "integrity": "sha1-Ey7mPS7FVlxVfiD0wi35rKaGsQ0=", "dev": true }, + "y18n": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-3.2.1.tgz", + "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", + "dev": true + }, "yargs": { "version": "3.10.0", "resolved": "https://registry.npmjs.org/yargs/-/yargs-3.10.0.tgz", "integrity": "sha1-9+572FfdfB0tOMDnTvvWgdFDH9E=", + "optional": true, "requires": { - "camelcase": "1.2.1", - "cliui": "2.1.0", - "decamelize": "1.2.0", + "camelcase": "^1.0.2", + "cliui": "^2.1.0", + "decamelize": "^1.0.0", "window-size": "0.1.0" } } diff --git a/Extensions/ArtifactEngine/package.json b/Extensions/ArtifactEngine/package.json index 84f6e0a70..fb9255d2f 100644 --- a/Extensions/ArtifactEngine/package.json +++ b/Extensions/ArtifactEngine/package.json @@ -1,6 +1,6 @@ { "name": "artifact-engine", - "version": "0.1.26", + "version": "0.1.27", "description": "Artifact Engine to download artifacts from jenkins, teamcity, vsts", "repository": { "type": "git", @@ -18,7 +18,7 @@ "dependencies": { "handlebars": "4.0.10", "minimatch": "3.0.2", - "vsts-task-lib": "2.2.1", + "azure-pipelines-task-lib": "2.8.0", "tunnel": "0.0.4" }, "devDependencies": { diff --git a/Extensions/ArtifactEngine/xliff/de-DE.xlf b/Extensions/ArtifactEngine/xliff/de-DE.xlf index 6054efa9f..0be0465c7 100644 --- a/Extensions/ArtifactEngine/xliff/de-DE.xlf +++ b/Extensions/ArtifactEngine/xliff/de-DE.xlf @@ -19,7 +19,7 @@ Failed request: (statusCode) - Fehlerhafte Anforderung: (statusCode) + Fehlerhafte Anforderung: (statusCode) diff --git a/Extensions/ArtifactEngine/xliff/es-ES.xlf b/Extensions/ArtifactEngine/xliff/es-ES.xlf index c893dc858..3c831a349 100644 --- a/Extensions/ArtifactEngine/xliff/es-ES.xlf +++ b/Extensions/ArtifactEngine/xliff/es-ES.xlf @@ -19,7 +19,7 @@ Failed request: (statusCode) - Error en la solicitud: (statusCode) + Error en la solicitud: (statusCode) diff --git a/Extensions/ArtifactEngine/xliff/fr-FR.xlf b/Extensions/ArtifactEngine/xliff/fr-FR.xlf index 7f5f8d278..6bf69ecc3 100644 --- a/Extensions/ArtifactEngine/xliff/fr-FR.xlf +++ b/Extensions/ArtifactEngine/xliff/fr-FR.xlf @@ -19,7 +19,7 @@ Failed request: (statusCode) - Échec de la demande : (statusCode) + Échec de la demande : (statusCode) diff --git a/Extensions/ArtifactEngine/xliff/it-IT.xlf b/Extensions/ArtifactEngine/xliff/it-IT.xlf index 83250c7d1..360011726 100644 --- a/Extensions/ArtifactEngine/xliff/it-IT.xlf +++ b/Extensions/ArtifactEngine/xliff/it-IT.xlf @@ -19,7 +19,7 @@ Failed request: (statusCode) - Richiesta non riuscita: (statusCode) + Richiesta non riuscita: (statusCode) diff --git a/Extensions/ArtifactEngine/xliff/ja-JP.xlf b/Extensions/ArtifactEngine/xliff/ja-JP.xlf index 50abf8938..82e52e067 100644 --- a/Extensions/ArtifactEngine/xliff/ja-JP.xlf +++ b/Extensions/ArtifactEngine/xliff/ja-JP.xlf @@ -19,7 +19,7 @@ Failed request: (statusCode) - 失敗した要求: (statusCode) + 失敗した要求: (statusCode) diff --git a/Extensions/ArtifactEngine/xliff/ko-KR.xlf b/Extensions/ArtifactEngine/xliff/ko-KR.xlf index ce792e3a6..264c847e2 100644 --- a/Extensions/ArtifactEngine/xliff/ko-KR.xlf +++ b/Extensions/ArtifactEngine/xliff/ko-KR.xlf @@ -19,7 +19,7 @@ Failed request: (statusCode) - 실패한 요청: (statusCode) + 실패한 요청: (statusCode) diff --git a/Extensions/ArtifactEngine/xliff/ru-RU.xlf b/Extensions/ArtifactEngine/xliff/ru-RU.xlf index 28440dba3..5eaf340cb 100644 --- a/Extensions/ArtifactEngine/xliff/ru-RU.xlf +++ b/Extensions/ArtifactEngine/xliff/ru-RU.xlf @@ -19,7 +19,7 @@ Failed request: (statusCode) - Сбой запроса: (statusCode) + Сбой запроса: (statusCode) diff --git a/Extensions/ArtifactEngine/xliff/zh-CN.xlf b/Extensions/ArtifactEngine/xliff/zh-CN.xlf index 06c9d4c6b..1d0f7a169 100644 --- a/Extensions/ArtifactEngine/xliff/zh-CN.xlf +++ b/Extensions/ArtifactEngine/xliff/zh-CN.xlf @@ -19,7 +19,7 @@ Failed request: (statusCode) - 请求失败: (statusCode) + 请求失败: (statusCode) diff --git a/Extensions/ArtifactEngine/xliff/zh-TW.xlf b/Extensions/ArtifactEngine/xliff/zh-TW.xlf index 5d77d8230..7e8349ee7 100644 --- a/Extensions/ArtifactEngine/xliff/zh-TW.xlf +++ b/Extensions/ArtifactEngine/xliff/zh-TW.xlf @@ -19,7 +19,7 @@ Failed request: (statusCode) - 失敗的要求: (statusCode) + 失敗的要求: (statusCode) diff --git a/Extensions/BitBucket/Src/Tasks/DownloadArtifactsBitbucket/ThirdPartyNotices.txt b/Extensions/BitBucket/Src/Tasks/DownloadArtifactsBitbucket/ThirdPartyNotices.txt index dad9772ea..a38ab8d6a 100644 --- a/Extensions/BitBucket/Src/Tasks/DownloadArtifactsBitbucket/ThirdPartyNotices.txt +++ b/Extensions/BitBucket/Src/Tasks/DownloadArtifactsBitbucket/ThirdPartyNotices.txt @@ -2,7 +2,7 @@ THIRD-PARTY SOFTWARE NOTICES AND INFORMATION Do Not Translate or Localize -This Visual Studio Team Services Extension is based on or incorporates material from the projects listed below (Third Party IP). The original copyright notice and the license under which Microsoft received such Third Party IP, are set forth below. Such licenses and notices are provided for informational purposes only. Microsoft licenses the Third Party IP to you under the licensing terms for the Visual Studio Team Services Extension. Microsoft reserves all other rights not expressly granted under this agreement, whether by implication, estoppel or otherwise. +This Azure DevOps Extension is based on or incorporates material from the projects listed below (Third Party IP). The original copyright notice and the license under which Microsoft received such Third Party IP, are set forth below. Such licenses and notices are provided for informational purposes only. Microsoft licenses the Third Party IP to you under the licensing terms for the Azure DevOps Extension. Microsoft reserves all other rights not expressly granted under this agreement, whether by implication, estoppel or otherwise. 1. balanced-match (https://github.com/juliangruber/balanced-match) 2. brace-expansion (https://github.com/juliangruber/brace-expansion) diff --git a/Extensions/BitBucket/Src/mp_terms.md b/Extensions/BitBucket/Src/mp_terms.md index c9e668569..620151800 100644 --- a/Extensions/BitBucket/Src/mp_terms.md +++ b/Extensions/BitBucket/Src/mp_terms.md @@ -1,6 +1,6 @@ **MICROSOFT SOFTWARE LICENSE TERMS** -**[MICROSOFT VISUAL STUDIO TEAM SERVICES TOOLS AND EXTENSIONS]** +**[MICROSOFT AZURE DEVOPS TOOLS AND EXTENSIONS]** These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. They apply to the software named above. The terms also apply to any Microsoft services or updates for the software, except to the extent those have different terms. diff --git a/Extensions/BitBucket/Src/readme.md b/Extensions/BitBucket/Src/readme.md index 8b3b51456..d6e4e18d9 100644 --- a/Extensions/BitBucket/Src/readme.md +++ b/Extensions/BitBucket/Src/readme.md @@ -1,8 +1,8 @@ # Bitbucket® artifacts for Release management -This extension is an integration point for Bitbucket® with Release management in VS Team Services. With this extension, you can deploy sources from Bitbucket® repositories using Release management. +This extension is an integration point for Bitbucket® with Release management in Azure DevOps. With this extension, you can deploy sources from Bitbucket® repositories using Release management. -**Note:** This extension work only with VS Team Services and TFS "18" RC onwards. +**Note:** This extension work only with Azure DevOps and TFS "18" RC onwards. ## Usage This extension provides a service endpoint to connect to Bitbucket® account. Once connected, you can link a repositories from the Bitbucket® and deploy the same using Release management orchestration service. diff --git a/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/Strings/resources.resjson/en-US/resources.resjson b/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/Strings/resources.resjson/en-US/resources.resjson new file mode 100644 index 000000000..2495c1be7 --- /dev/null +++ b/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/Strings/resources.resjson/en-US/resources.resjson @@ -0,0 +1,28 @@ +{ + "loc.friendlyName": "Download Artifacts - CircleCI", + "loc.helpMarkDown": "", + "loc.description": "Download artifacts from CircleCI build", + "loc.instanceNameFormat": "Download Artifacts - CircleCI V0", + "loc.input.label.connection": "CircleCI Connection", + "loc.input.help.connection": "CircleCI connection", + "loc.input.label.definition": "Build Configuration", + "loc.input.help.definition": "Select the build configuration", + "loc.input.label.version": "Build", + "loc.input.help.version": "Build Id", + "loc.input.label.itemPattern": "Item Pattern", + "loc.input.help.itemPattern": "Minimatch pattern to filter files to be downloaded. To download all files within artifact drop use drop/**", + "loc.input.label.downloadPath": "Destination directory", + "loc.input.help.downloadPath": "Path on the agent machine where the artifact will be downloaded", + "loc.input.label.downloadCommitsAndWorkItems": "Download Commits and WorkItems", + "loc.input.help.downloadCommitsAndWorkItems": "Enables downloading the commits and workitem details associated with the CircleCI build", + "loc.messages.DownloadArtifacts": "Downloading artifacts from : %s", + "loc.messages.GettingCommitsFromSingleBuild": "Downloading commits associated with the build %s", + "loc.messages.ArtifactsSuccessfullyDownloaded": "Successfully downloaded artifacts to %s", + "loc.messages.DownloadingCircleCICommitsBetween": "Downloading commits between builds %s to %s", + "loc.messages.WritingCommitsTo": "Writing commits to file %s", + "loc.messages.RetryingOperation": "Error: in %s, so retrying => retries pending : %s", + "loc.messages.CouldNotWriteToFile": "Could not save content to file. Failed with an error %s", + "loc.messages.UploadingAttachment": "Uploading %s as attachment", + "loc.messages.SuccessfullyUploadedCommitsAttachment": "Successfully uploaded commits attachment", + "loc.messages.BranchNotFound": "Branch not found" +} \ No newline at end of file diff --git a/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/circleCI.handlebars.txt b/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/circleCI.handlebars.txt new file mode 100644 index 000000000..168708220 --- /dev/null +++ b/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/circleCI.handlebars.txt @@ -0,0 +1,11 @@ +[ +{{#this}} + { + "path" : "{{this.path}}", + "itemType": "file", + "metadata" : { + "downloadUrl": "{{this.url}}" + } + }{{#unless @last}},{{/unless}} +{{/this}} +] \ No newline at end of file diff --git a/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/commitsdownloader.ts b/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/commitsdownloader.ts new file mode 100644 index 000000000..5f3021f21 --- /dev/null +++ b/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/commitsdownloader.ts @@ -0,0 +1,236 @@ +import * as Q from 'q'; +import * as os from 'os'; +import * as path from 'path'; +import * as fs from 'fs'; +import * as tl from 'vsts-task-lib/task'; + +import * as providers from 'artifact-engine/Providers'; +import { HttpClientResponse } from 'artifact-engine/Providers/typed-rest-client/HttpClient'; + +export class CommitsDownloader { + private webProvider: providers.WebProvider; + private retryLimit: number; + + constructor(webProvider: providers.WebProvider) { + this.webProvider = webProvider; + let retryLimitValue: string = tl.getVariable("VSTS_HTTP_RETRY"); + this.retryLimit = (!!retryLimitValue && !isNaN(parseInt(retryLimitValue))) ? parseInt(retryLimitValue) : 4; + tl.debug("RetryLimit set to: " + this.retryLimit); + } + + public DownloadFromSingleBuildAndSave(buildId: string): Q.Promise { + let defer: Q.Deferred = Q.defer(); + + console.log(tl.loc("GettingCommitsFromSingleBuild", buildId)); + this.GetCommitsFromSingleBuild(buildId).then((commits: string) => { + this.UploadCommits(commits).then(() => { + defer.resolve(commits); + }, (error) => { + defer.reject(error); + }); + }, (error) => { + defer.reject(error); + }); + + return defer.promise; + } + + public DownloadFromBuildRangeAndSave(startBuildId: string, endBuildId: string): Q.Promise { + let defer: Q.Deferred = Q.defer(); + + console.log(tl.loc("DownloadingCircleCICommitsBetween", startBuildId, endBuildId)); + this.GetCommits(startBuildId, endBuildId).then((commits: string) => { + this.UploadCommits(commits).then(() => { + defer.resolve(commits); + }, (error) => { + defer.reject(error); + }); + }, (error) => { + defer.reject(error); + }); + + return defer.promise; + } + + private GetCommitsFromSingleBuild(buildId: string): Q.Promise { + let connection = tl.getInput("connection", true); + let definitionId = tl.getInput("definition", true); + var endpointUrl = tl.getEndpointUrl(connection, false); + let defer = Q.defer(); + let url: string = `${endpointUrl}/api/v1.1/project/${definitionId}/${buildId}`; + url = url.replace(/([^:]\/)\/+/g, "$1"); + + this.executeWithRetries("getCommitsFromSingleBuild", (url, headers) => { return this.webProvider.webClient.get(url, headers) }, url, { 'Accept': 'application/json' }).then((res: HttpClientResponse) => { + if (res && res.message.statusCode === 200) { + res.readBody().then((body: string) => { + let jsonResult = JSON.parse(body); + let commits = []; + if (!!jsonResult) { + jsonResult.all_commit_details.forEach(c => { + let commit = { + "Id": c.commit, + "Message": c.subject, + "Author": { + "displayName": c.author_name + }, + "DisplayUri": c.commit_url, + "Timestamp": c.author_date + }; + + commits.push(commit); + }); + } + + tl.debug("Downloaded " + commits.length + " commits"); + defer.resolve(JSON.stringify(commits)); + }, (error) => { + defer.reject(error); + }); + } + }, (error) => { + defer.reject(error); + }); + + return defer.promise; + } + + private GetCommits(startBuildId: string, endBuildId: string): Q.Promise { + let connection = tl.getInput("connection", true); + let definitionId = tl.getInput("definition", true); + var endpointUrl = tl.getEndpointUrl(connection, false); + let defer = Q.defer(); + let url: string = `${endpointUrl}/api/v1.1/project/${definitionId}/${startBuildId}`; + url = url.replace(/([^:]\/)\/+/g, "$1"); + let commits = []; + + this.executeWithRetries("getCommits", (url, headers) => { return this.webProvider.webClient.get(url, headers) }, url, { 'Accept': 'application/json' }).then((res: HttpClientResponse) => { + if (res && res.message.statusCode === 200) { + res.readBody().then((body: string) => { + let jsonResult = JSON.parse(body); + let branch; + if (!!jsonResult) { + branch = jsonResult.branch; + } + else { + defer.reject(tl.loc("BranchNotFound")); + return; + } + + let buildsUrl = `${endpointUrl}/api/v1.1/project/${definitionId}/tree/${branch}`; + buildsUrl = buildsUrl.replace(/([^:]\/)\/+/g, "$1"); + this.webProvider.webClient.get(buildsUrl, { 'Accept': 'application/json' }).then((res: HttpClientResponse) => { + res.readBody().then((body: string) => { + let builds = JSON.parse(body); + let commitsIdsMap = {}; + if (!!builds) { + builds.forEach(build => { + if (Number(build.build_num) <= Number(endBuildId) && Number(build.build_num) >= Number(startBuildId) && build.all_commit_details[0]) { + build.all_commit_details.forEach(c => { + let commit = { + "Id": c.commit, + "Message": c.subject, + "Author": { + "displayName": c.author_name + }, + "DisplayUri": c.commit_url, + "Timestamp": c.author_date + }; + + if (!commitsIdsMap[commit.Id]) { + commits.push(commit); + commitsIdsMap[commit.Id] = true; + } + }); + } + }); + } + + tl.debug("Downloaded " + commits.length + " commits"); + defer.resolve(JSON.stringify(commits)); + }, (error) => { + defer.reject(error); + }); + + }, (error) => { + defer.reject(error); + }); + }); + } + }); + + return defer.promise; + } + + private UploadCommits(commits: string): Q.Promise { + let defer: Q.Deferred = Q.defer();1 + let commitsFilePath = path.join(os.tmpdir(), this.GetCommitsFileName()); + + console.log(tl.loc("WritingCommitsTo", commitsFilePath)); + this.WriteContentToFileAndUploadAsAttachment(commits, commitsFilePath).then(() => { + console.log(tl.loc("SuccessfullyUploadedCommitsAttachment")); + defer.resolve(null); + }, (error) => { + defer.reject(error); + }); + + return defer.promise; + } + + private GetCommitsFileName(): string { + let fileName: string = "commits.json"; + let commitfileName: string = tl.getInput("artifactDetailsFileNameSuffix", false); + + if (commitfileName) { + fileName = `commits_${commitfileName}`; + } + + return fileName; + } + + private WriteContentToFileAndUploadAsAttachment(content: string, filePath: string): Q.Promise { + let defer = Q.defer(); + + // ensure it has .json extension + if (path.extname(filePath) !== ".json") { + filePath = `${filePath}.json`; + } + + fs.writeFile(filePath, content, (err) => { + if (err) { + console.log(tl.loc("CouldNotWriteToFile", err)); + defer.reject(err); + return; + } + + console.log(tl.loc("UploadingAttachment", filePath)); + console.log(`##vso[task.uploadfile]${filePath}`); + defer.resolve(null); + }); + + return defer.promise; + } + + private executeWithRetries(operationName: string, operation: (string, any) => Promise, url, headers): Promise { + var executePromise = new Promise((resolve, reject) => { + this.executeWithRetriesImplementation(operationName, operation, this.retryLimit, url, headers, resolve, reject); + }); + + return executePromise; + } + + private executeWithRetriesImplementation(operationName: string, operation: (string, any) => Promise, currentRetryCount, url, headers, resolve, reject) { + operation(url, headers).then((result) => { + resolve(result); + }).catch((error) => { + if (currentRetryCount <= 0) { + tl.error(tl.loc("OperationFailed", operationName, error)); + reject(error); + } + else { + console.log(tl.loc('RetryingOperation', operationName, currentRetryCount)); + currentRetryCount = currentRetryCount - 1; + setTimeout(() => this.executeWithRetriesImplementation(operationName, operation, currentRetryCount, url, headers, resolve, reject), 4 * 1000); + } + }); + } +} \ No newline at end of file diff --git a/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/download.ts b/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/download.ts new file mode 100644 index 000000000..f79b5b39e --- /dev/null +++ b/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/download.ts @@ -0,0 +1,123 @@ +var path = require('path') + +import * as tl from 'vsts-task-lib/task'; +import * as engine from 'artifact-engine/Engine'; +import * as providers from 'artifact-engine/Providers'; +import * as webHandlers from 'artifact-engine/Providers/typed-rest-client/Handlers'; + +import {CommitsDownloader} from "./commitsdownloader" + +tl.setResourcePath(path.join(__dirname, 'task.json')); + +var taskJson = require('./task.json'); +const area: string = 'DownloadCircleCIArtifacts'; + +function getDefaultProps() { + var hostType = (tl.getVariable('SYSTEM.HOSTTYPE') || "").toLowerCase(); + return { + hostType: hostType, + definitionName: '[NonEmail:' + (hostType === 'release' ? tl.getVariable('RELEASE.DEFINITIONNAME') : tl.getVariable('BUILD.DEFINITIONNAME')) + ']', + processId: hostType === 'release' ? tl.getVariable('RELEASE.RELEASEID') : tl.getVariable('BUILD.BUILDID'), + processUrl: hostType === 'release' ? tl.getVariable('RELEASE.RELEASEWEBURL') : (tl.getVariable('SYSTEM.TEAMFOUNDATIONSERVERURI') + tl.getVariable('SYSTEM.TEAMPROJECT') + '/_build?buildId=' + tl.getVariable('BUILD.BUILDID')), + taskDisplayName: tl.getVariable('TASK.DISPLAYNAME'), + jobid: tl.getVariable('SYSTEM.JOBID'), + agentVersion: tl.getVariable('AGENT.VERSION'), + agentOS: tl.getVariable('AGENT.OS'), + agentName: tl.getVariable('AGENT.NAME'), + version: taskJson.version + }; +} + +function publishEvent(feature, properties: any): void { + try { + var splitVersion = (process.env.AGENT_VERSION || '').split('.'); + var major = parseInt(splitVersion[0] || '0'); + var minor = parseInt(splitVersion[1] || '0'); + let telemetry = ''; + if (major > 2 || (major == 2 && minor >= 120)) { + telemetry = `##vso[telemetry.publish area=${area};feature=${feature}]${JSON.stringify(Object.assign(getDefaultProps(), properties))}`; + } + else { + if (feature === 'reliability') { + let reliabilityData = properties; + telemetry = "##vso[task.logissue type=error;code=" + reliabilityData.issueType + ";agentVersion=" + tl.getVariable('Agent.Version') + ";taskId=" + area + "-" + JSON.stringify(taskJson.version) + ";]" + reliabilityData.errorMessage + } + } + console.log(telemetry);; + } + catch (err) { + tl.warning("Failed to log telemetry, error: " + err); + } +} + +async function main(): Promise { + var promise = new Promise(async (resolve, reject) => { + let connection = tl.getInput("connection", true); + let definitionId = tl.getInput("definition", true); + let buildId = tl.getInput("version", true); + let itemPattern = tl.getInput("itemPattern", false); + let downloadPath = tl.getInput("downloadPath", true); + + var endpointUrl = tl.getEndpointUrl(connection, false); + var itemsUrl = `${endpointUrl}/api/v1.1/project/${definitionId}/${buildId}/artifacts`; + itemsUrl = itemsUrl.replace(/([^:]\/)\/+/g, "$1"); + console.log(tl.loc("DownloadArtifacts", itemsUrl)); + + var templatePath = path.join(__dirname, 'circleCI.handlebars.txt'); + var username = tl.getEndpointAuthorizationParameter(connection, 'username', false); + var circleciVariables = { + "endpoint": { + "url": endpointUrl + } + }; + var handler = new webHandlers.BasicCredentialHandler(username, ""); + var webProvider = new providers.WebProvider(itemsUrl, templatePath, circleciVariables, handler); + var fileSystemProvider = new providers.FilesystemProvider(downloadPath); + + var downloader = new engine.ArtifactEngine(); + var downloaderOptions = new engine.ArtifactEngineOptions(); + downloaderOptions.itemPattern = itemPattern ? itemPattern : '**'; + var debugMode = tl.getVariable('System.Debug'); + downloaderOptions.verbose = debugMode ? debugMode.toLowerCase() != 'false' : false; + var parallelLimit : number = +tl.getVariable("release.artifact.download.parallellimit"); + + if(parallelLimit){ + downloaderOptions.parallelProcessingLimit = parallelLimit; + } + + await downloader.processItems(webProvider, fileSystemProvider, downloaderOptions).then((result) => { + console.log(tl.loc('ArtifactsSuccessfullyDownloaded', downloadPath)); + resolve(); + }).catch((error) => { + reject(error); + }); + + let downloadCommitsFlag: boolean = tl.getBoolInput("downloadCommitsAndWorkItems", true); + if (downloadCommitsFlag) { + var webProviderForDownloaingCommits = new providers.WebProvider(itemsUrl, templatePath, circleciVariables, handler); + downloadCommits(webProviderForDownloaingCommits); + } + }); + + return promise; +} + +function downloadCommits(webProvider: providers.WebProvider): void { + let currentCircleCIBuild = tl.getInput("version", true); + let startBuildIdStr = tl.getInput("previousVersion", false) || ""; + + if (startBuildIdStr && parseInt(currentCircleCIBuild) > parseInt(startBuildIdStr)) { + new CommitsDownloader(webProvider).DownloadFromBuildRangeAndSave(startBuildIdStr, currentCircleCIBuild); + } else { + new CommitsDownloader(webProvider).DownloadFromSingleBuildAndSave(currentCircleCIBuild); + } +} + +main() + .then((result) => { + tl.setResult(tl.TaskResult.Succeeded, ""); + }) + .catch((err) => { + publishEvent('reliability', { issueType: 'error', errorMessage: JSON.stringify(err, Object.getOwnPropertyNames(err)) }); + tl.setResult(tl.TaskResult.Failed, err); + }); \ No newline at end of file diff --git a/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/icon.png b/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/icon.png new file mode 100644 index 000000000..7b08529ec Binary files /dev/null and b/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/icon.png differ diff --git a/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/package.json b/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/package.json new file mode 100644 index 000000000..4379f3ef6 --- /dev/null +++ b/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/package.json @@ -0,0 +1,11 @@ +{ + "name": "DownloadCircleCIArtifacts", + "main": "download.js", + "license": "MIT", + "dependencies": { + "vsts-task-lib": "2.2.1", + "artifact-engine": "0.1.26", + "@types/node": "^6.0.101", + "underscore": "1.9.1" + } +} diff --git a/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/task.json b/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/task.json new file mode 100644 index 000000000..7d04f16d8 --- /dev/null +++ b/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/task.json @@ -0,0 +1,110 @@ +{ + "id": "83751EE5-0AEF-4EC3-915F-DFB71B7157E7", + "name": "DownloadCircleCIArtifacts", + "friendlyName": "Download Artifacts - CircleCI", + "description": "Download artifacts from CircleCI build", + "helpMarkDown": "", + "category": "Utility", + "author": "ms-vscs-rm", + "preview": true, + "version": { + "Major": 0, + "Minor": 152, + "Patch": 2 + }, + "demands": [], + "inputs": [ + { + "name": "connection", + "type": "connectedService:circle-ci", + "label": "CircleCI Connection", + "defaultValue": "", + "required": true, + "helpMarkDown": "CircleCI connection" + }, + { + "name": "definition", + "type": "pickList", + "label": "Build Configuration", + "defaultValue": "", + "required": true, + "properties": { + "EditableOptions": "True" + }, + "helpMarkDown": "Select the build configuration" + }, + { + "name": "version", + "type": "pickList", + "label": "Build", + "defaultValue": "", + "required": true, + "properties": { + "EditableOptions": "True" + }, + "helpMarkDown": "Build Id" + }, + { + "name": "itemPattern", + "type": "string", + "label": "Item Pattern", + "defaultValue": "**", + "required": false, + "helpMarkDown": "Minimatch pattern to filter files to be downloaded. To download all files within artifact drop use drop/**" + }, + { + "name": "downloadPath", + "type": "string", + "label": "Destination directory", + "defaultValue": "$(System.ArtifactsDirectory)", + "required": true, + "helpMarkDown": "Path on the agent machine where the artifact will be downloaded" + }, + { + "name": "downloadCommitsAndWorkItems", + "type": "boolean", + "label": "Download Commits and WorkItems", + "defaultValue": true, + "required": false, + "groupName": "advanced", + "helpMarkDown": "Enables downloading the commits and workitem details associated with the CircleCI build" + } + ], + "dataSourceBindings": [ + { + "endpointId": "$(connection)", + "target": "definition", + "dataSourceName": "Projects", + "resultTemplate": "{ \"Value\" : \"{{{vcs_type}}}/{{{username}}}/{{{reponame}}}\", \"DisplayValue\" : \"{{{vcs_type}}}/{{{username}}}/{{{reponame}}}\" }" + }, + { + "endpointId": "$(connection)", + "target": "version", + "dataSourceName": "Builds", + "parameters": { + "definition": "$(definition)" + }, + "resultTemplate": "{ \"Value\" : \"{{{defaultResultKey}}}\", \"DisplayValue\" : \"{{{defaultResultKey}}}\" }" + } + ], + "instanceNameFormat": "Download Artifacts - CircleCI", + "execution": { + "Node": { + "target": "download.js", + "argumentFormat": "" + } + }, + "messages": { + "DownloadArtifacts": "Downloading artifacts from : %s", + "GettingCommitsFromSingleBuild": "Downloading commits associated with the build %s", + "ArtifactsSuccessfullyDownloaded": "Successfully downloaded artifacts to %s", + "DownloadingCircleCICommitsBetween": "Downloading commits between builds %s to %s", + "WritingCommitsTo": "Writing commits to file %s", + "RetryingOperation": "Error: in %s, so retrying => retries pending : %s", + "CouldNotWriteToFile": "Could not save content to file. Failed with an error %s", + "UploadingAttachment": "Uploading %s as attachment", + "SuccessfullyUploadedCommitsAttachment": "Successfully uploaded commits attachment", + "BranchNotFound": "Branch not found" + } + } + \ No newline at end of file diff --git a/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/tsconfig.json b/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/tsconfig.json new file mode 100644 index 000000000..79a868c8d --- /dev/null +++ b/Extensions/CircleCI/Src/Tasks/DownloadCircleCIArtifacts/tsconfig.json @@ -0,0 +1,9 @@ +{ + "compilerOptions": { + "target": "ES6", + "module": "commonjs" + }, + "exclude": [ + "node_modules" + ] +} \ No newline at end of file diff --git a/Extensions/CircleCI/Src/images/Add_CircleCI_Artifact.png b/Extensions/CircleCI/Src/images/Add_CircleCI_Artifact.png new file mode 100644 index 000000000..ccb8e4b32 Binary files /dev/null and b/Extensions/CircleCI/Src/images/Add_CircleCI_Artifact.png differ diff --git a/Extensions/CircleCI/Src/images/Add_CircleCI_Connection.png b/Extensions/CircleCI/Src/images/Add_CircleCI_Connection.png new file mode 100644 index 000000000..5b41d0f01 Binary files /dev/null and b/Extensions/CircleCI/Src/images/Add_CircleCI_Connection.png differ diff --git a/Extensions/CircleCI/Src/images/icon-circleci-logo.png b/Extensions/CircleCI/Src/images/icon-circleci-logo.png new file mode 100644 index 000000000..83403da8b Binary files /dev/null and b/Extensions/CircleCI/Src/images/icon-circleci-logo.png differ diff --git a/Extensions/CircleCI/Src/mp_terms.md b/Extensions/CircleCI/Src/mp_terms.md new file mode 100644 index 000000000..620151800 --- /dev/null +++ b/Extensions/CircleCI/Src/mp_terms.md @@ -0,0 +1,56 @@ +**MICROSOFT SOFTWARE LICENSE TERMS** + +**[MICROSOFT AZURE DEVOPS TOOLS AND EXTENSIONS]** + +These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. They apply to the software named above. The terms also apply to any Microsoft services or updates for the software, except to the extent those have different terms. + +--- + +**IF YOU COMPLY WITH THESE LICENSE TERMS, YOU HAVE THE RIGHTS BELOW.** + +1. **INSTALLATION AND USE RIGHTS.** + You may install and use any number of copies of the software. + +2. **TERMS FOR SPECIFIC COMPONENTS.** + + **a. Third Party Components.** The software may include third party components with separate legal notices or governed by other agreements, as may be described in the ThirdPartyNotices file(s) accompanying the software. Even if such components are governed by other agreements, the disclaimers and the limitations on and exclusions of damages below also apply. + +3. **DATA.** The software may collect information about you and your use of the software, and send that to Microsoft. Microsoft may use this information to provide services and improve our products and services. You may opt-out of many of these scenarios, but not all, as described in the product documentation. There are also some features in the software that may enable you and Microsoft to collect data from users of your applications. If you use these features, you must comply with applicable law, including providing appropriate notices to users of your applications and you should provide a copy of Microsoft’s privacy statement to your users. The Microsoft privacy statement is located [here](https://go.microsoft.com/fwlink/?LinkID=824704). You can learn more about data collection and use in the help documentation and our privacy statement. Your use of the software operates as your consent to these practices. + +4. **SCOPE OF LICENSE.** The software is licensed, not sold. This agreement only gives you some rights to use the software. Microsoft reserves all other rights. Unless applicable law gives you more rights despite this limitation, you may use the software only as expressly permitted in this agreement. In doing so, you must comply with any technical limitations in the software that only allow you to use it in certain ways. You may not + + - work around any technical limitations in the software; + - reverse engineer, decompile or disassemble the software, or otherwise attempt to derive the source code for the software except, and only to the extent required by third party licensing terms governing the use of certain open source components that may be included in the software; + - remove, minimize, block or modify any notices of Microsoft or its suppliers in the software; + - use the software in any way that is against the law; or + - share, publish, rent or lease the software, or provide the software as a stand-alone hosted as solution for others to use, or transfer the software or this agreement to any third party. + +5. **EXPORT RESTRICTIONS.** You must comply with all domestic and international export laws and regulations that apply to the software, which include restrictions on destinations, end users, and end use. For further information on export restrictions, visit www.microsoft.com/exporting. + +6. **SUPPORT SERVICES.** Because this software is “as is,” we may not provide support services for it. + +7. **ENTIRE AGREEMENT.** This agreement, and the terms for supplements, updates, Internet-based services and support services that you use, are the entire agreement for the software and support services. + +8. **APPLICABLE LAW.** If you acquired the software in the United States, Washington law applies to interpretation of and claims for breach of this agreement, and the laws of the state where you live apply to all other claims. If you acquired the software in any other country, its laws apply. + +9. **CONSUMER RIGHTS; REGIONAL VARIATIONS.** This agreement describes certain legal rights. You may have other rights, including consumer rights, under the laws of your state or country. Separate and apart from your relationship with Microsoft, you may also have rights with respect to the party from which you acquired the software. This agreement does not change those other rights if the laws of your state or country do not permit it to do so. For example, if you acquired the software in one of the below regions, or mandatory country law applies, then the following provisions apply to you: + + **a. Australia.** You have statutory guarantees under the Australian Consumer Law and nothing in this agreement is intended to affect those rights. + + **b. Canada.** If you acquired this software in Canada, you may stop receiving updates by turning off the automatic update feature, disconnecting your device from the Internet (if and when you re-connect to the Internet, however, the software will resume checking for and installing updates), or uninstalling the software. The product documentation, if any, may also specify how to turn off updates for your specific device or software. + + **c. Germany and Austria.** + + (i) Warranty. The properly licensed software will perform substantially as described in any Microsoft materials that accompany the software. However, Microsoft gives no contractual guarantee in relation to the licensed software. + + (ii) Limitation of Liability. In case of intentional conduct, gross negligence, claims based on the Product Liability Act, as well as, in case of death or personal or physical injury, Microsoft is liable according to the statutory law. + + Subject to the foregoing clause (ii), Microsoft will only be liable for slight negligence if Microsoft is in breach of such material contractual obligations, the fulfillment of which facilitate the due performance of this agreement, the breach of which would endanger the purpose of this agreement and the compliance with which a party may constantly trust in (so-called "cardinal obligations"). In other cases of slight negligence, Microsoft will not be liable for slight negligence. + +10. **DISCLAIMER OF WARRANTY. THE SOFTWARE IS LICENSED “AS-IS.” YOU BEAR THE RISK OF USING IT. MICROSOFT GIVES NO EXPRESS WARRANTIES, GUARANTEES OR CONDITIONS. TO THE EXTENT PERMITTED UNDER YOUR LOCAL LAWS, MICROSOFT EXCLUDES THE IMPLIED WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NON-INFRINGEMENT.** + +11. **LIMITATION ON AND EXCLUSION OF DAMAGES. YOU CAN RECOVER FROM MICROSOFT AND ITS SUPPLIERS ONLY DIRECT DAMAGES UP TO U.S. $5.00. YOU CANNOT RECOVER ANY OTHER DAMAGES, INCLUDING CONSEQUENTIAL, LOST PROFITS, SPECIAL, INDIRECT OR INCIDENTAL DAMAGES.** + +This limitation applies to (a) anything related to the software, services, content (including code) on third party Internet sites, or third party applications; and (b) claims for breach of contract, breach of warranty, guarantee or condition, strict liability, negligence, or other tort to the extent permitted by applicable law. + +It also applies even if Microsoft knew or should have known about the possibility of the damages. The above limitation or exclusion may not apply to you because your country may not allow the exclusion or limitation of incidental, consequential or other damages. diff --git a/Extensions/CircleCI/Src/readme.md b/Extensions/CircleCI/Src/readme.md new file mode 100644 index 000000000..4e9e12a93 --- /dev/null +++ b/Extensions/CircleCI/Src/readme.md @@ -0,0 +1,24 @@ +# CircleCI™ artifacts for Release pipeline + +This extension is an integration point for CircleCI™ with Release pipeline in Azure DevOps Services. With this extension, you can deploy artifacts from CircleCI™ builds using Release pipeline. + +**Note:** This extension work only with Azure DevOps Services and Azure DevOps Server "18" RC onwards. + +## Usage +This extension provides a service endpoint to connect to CircleCI™ account. Once connected, you can link a build artifact from the CircleCI™ project and deploy the same using Release pipeline orchestration service. + +### Connecting to a CircleCI™ project +Go to project settings -> *Service connections* tab and create a New Service Connection of type CircleCI™ + +![Creating a CircleCI™ service connection](images/Add_CircleCI_Connection.png) + + +### Linking a CircleCI™ build +Once you have set up the service connection, you would be able to link a CircleCI build artifact in your release pipeline. + +![Linking CircleCI™ artifact](images/Add_CircleCI_Artifact.png) + +[Learn more about artifacts in Release Pipeline](https://msdn.microsoft.com/library/vs/alm/release/author-release-definition/understanding-artifacts). Also you can use [Azure Pipeline Extensions on Github](https://github.com/Microsoft/azure-pipelines-extensions/issues) to report any issues. + +**Note:** CircleCI™ is trademark owned by **Circle Internet Services, Inc**. + diff --git a/Extensions/CircleCI/Src/vss-extension.json b/Extensions/CircleCI/Src/vss-extension.json new file mode 100644 index 000000000..bea0b231d --- /dev/null +++ b/Extensions/CircleCI/Src/vss-extension.json @@ -0,0 +1,302 @@ +{ + "manifestVersion": 1.0, + "id": "vss-services-circleci-extension", + "name": "CircleCI artifacts for Release Pipeline", + "publisher": "ms-vscs-rm", + "version": "0.152.3", + "public": true, + "description": "Tool for connecting with CircleCI", + "_description.comment": "The below format to define artifact extensions is currently in preview and may change in future.", + "categories": [ "Build and release", "Azure pipelines" ], + "Tags": [ "CircleCI", "Release", "DevOps", "Artifacts", "Pipelines" ], + "targets": [ + { + "id": "Microsoft.VisualStudio.Services" + } + ], + "demands": [ "contribution/ms.vss-releaseartifact.artifact-types" ], + "icons": { + "default": "images\\icon-circleci-logo.png" + }, + "repository": { + "type": "git", + "uri": "https://github.com/Microsoft/azure-pipelines-extensions/" + }, + "branding": { + "color": "#3B3E43", + "theme": "dark" + }, + "screenshots": [ + { + "path": "images/Add_CircleCI_Connection.png" + }, + { + "path": "images/Add_CircleCI_Artifact.png" + } + ], + "content": { + "details": { + "path": "readme.md" + }, + "license": { + "path": "mp_terms.md" + } + }, + "files": [ + { + "path": "images/Add_CircleCI_Connection.png", + "addressable": true + }, + { + "path": "images/Add_CircleCI_Artifact.png", + "addressable": true + }, + { + "path": "Tasks/DownloadCircleCIArtifacts" + } + ], + "contributions": [ + { + "id": "circleCI-connection-type", + "description": "i18n:Service Endpoint type for CircleCI connections", + "_description.comment": "Don't Localize the word 'CircleCI'", + "type": "ms.vss-endpoint.service-endpoint-type", + "targets": [ + "ms.vss-endpoint.endpoint-types" + ], + "properties": { + "name": "circle-CI", + "displayName": "CircleCI", + "url": { + "isVisible": "false", + "value": "https://circleci.com" + }, + "authenticationSchemes": [ + { + "type": "ms.vss-endpoint.endpoint-auth-scheme-basic", + "inputDescriptors": [ + { + "id": "username", + "name": "PAT", + "description": "Personal API Token", + "inputMode": "passwordbox", + "isConfidential": true, + "validation": { + "isRequired": true, + "dataType": "string" + } + }, + { + "id": "password", + "name": "Password", + "inputMode": "none", + "isConfidential": true, + "validation": { + "isRequired": false, + "dataType": "string" + }, + "values": { + "inputId": "passwordInput", + "defaultValue": "", + "isDisabled": true + } + } + ] + } + ], + "dataSources": [ + { + "name": "TestConnection", + "endpointUrl": "{{endpoint.url}}/api/v1.1/me", + "resultSelector": "jsonpath:$.login" + }, + { + "name": "Projects", + "endpointUrl": "{{endpoint.url}}api/v1.1/projects", + "resultSelector": "jsonpath:$[*]" + }, + { + "name": "Builds", + "endpointUrl": "{{endpoint.url}}api/v1.1/project/{{definition}}", + "resultSelector": "jsonpath:$[*].build_num" + }, + { + "name": "LatestBuild", + "endpointUrl": "{{endpoint.url}}api/v1.1/project/{{definition}}?limit=1&filter=completed", + "resultSelector": "jsonpath:$[*].build_num" + }, + { + "name": "Artifacts", + "endpointUrl": "{{endpoint.url}}api/v1.1/project/{{definition}}/{{version}}/artifacts", + "resultSelector": "jsonpath:$[*]" + } + ], + "helpMarkDown": "Learn More" + } + }, + { + "id": "circleci-task", + "type": "ms.vss-distributed-task.task", + "targets": [ + "ms.vss-distributed-task.tasks" + ], + "properties": { + "name": "Tasks/DownloadCircleCIArtifacts" + } + }, + { + "id": "circleci-artifact-type", + "description": "i18n:CircleCI Artifact", + "_description.comment": "Don't Localize the word 'CircleCI'", + "type": "ms.vss-releaseartifact.release-artifact-type", + "targets": [ + "ms.vss-releaseartifact.artifact-types" + ], + "properties": { + "name": "CircleCI", + "displayName": "i18n:CircleCI", + "_displayName.comment": "Don't Localize the word 'CircleCI'", + "endpointTypeId": "circle-CI", + "uniqueSourceIdentifier": "{{connection}}:{{project}}:{{definition}}", + "downloadTaskId": "83751EE5-0AEF-4EC3-915F-DFB71B7157E7", + "artifactType": "Build", + "IsCommitsTraceabilitySupported": true, + "inputDescriptors": [ + { + "id": "connection", + "name": "Service Endpoint", + "description": "Service Endpoint Id", + "inputMode": "Combo", + "isConfidential": false, + "hasDynamicValueInformation": true, + "validation": { + "isRequired": true, + "dataType": "string", + "maxLength": 300 + } + }, + { + "id": "definition", + "name": "Project", + "description": "Project", + "inputMode": "Combo", + "isConfidential": false, + "hasDynamicValueInformation": true, + "dependencyInputIds": [ + "connection" + ], + "validation": { + "isRequired": true, + "dataType": "string", + "maxLength": 300 + } + }, + { + "id": "defaultVersionType", + "name": "Default version", + "description": "The default version will be deployed when new releases are created. The version can be changed for manually created releases at the time of release creation", + "inputMode": "Combo", + "isConfidential": false, + "hasDynamicValueInformation": false, + "values": { + "inputId": "defaultVersionTypeValues", + "defaultValue": "latestType", + "possibleValues": [ + { + "value": "latestType", + "displayValue": "Latest" + }, + { + "value": "specificVersionType", + "displayValue": "Specific build" + }, + { + "value": "selectDuringReleaseCreationType", + "displayValue": "Specify at the time of release creation" + } + ], + "isLimitedToPossibleValues": true + }, + "validation": { + "isRequired": true, + "dataType": "string" + } + }, + { + "id": "defaultVersionSpecific", + "name": "Build", + "description": "Build to use", + "inputMode": "combo", + "isConfidential": false, + "hasDynamicValueInformation": true, + "dependencyInputIds": [ + "connection", + "definition", + "defaultVersionType" + ], + "validation": { + "isRequired": true, + "dataType": "string", + "maxLength": 300 + }, + "properties": { + "visibleRule": "defaultVersionType == specificVersionType" + } + }, + { + "id": "artifacts", + "name": "Artifacts", + "description": "Build Artifacts", + "inputMode": "none", + "isConfidential": false, + "hasDynamicValueInformation": true, + "dependencyInputIds": [ + "connection", + "definition", + "versions" + ], + "validation": { + "isRequired": false, + "dataType": "string", + "maxLength": 300 + } + } + ], + "dataSourceBindings": [ + { + "target": "definition", + "dataSourceName": "Projects", + "resultTemplate": "{ Value : \"{{{vcs_type}}}/{{{username}}}/{{{reponame}}}\", DisplayValue : \"{{{vcs_type}}}/{{{username}}}/{{{reponame}}}\" }" + }, + { + "target": "versions", + "dataSourceName": "Builds", + "resultTemplate": "{ Value : \"{{{defaultResultKey}}}\", DisplayValue : \"{{{defaultResultKey}}}\" }" + }, + { + "target": "defaultVersionSpecific", + "dataSourceName": "Builds", + "resultTemplate": "{ Value : \"{{{defaultResultKey}}}\", DisplayValue : \"{{{defaultResultKey}}}\" }" + }, + { + "target": "latestVersion", + "dataSourceName": "LatestBuild", + "resultTemplate": "{ Value : \"{{{defaultResultKey}}}\", DisplayValue : \"{{{defaultResultKey}}}\" }" + }, + { + "target": "artifactDetails", + "resultTemplate": "{ Name: \"{{version}}\", StreamType: \"zip\", downloadUrl : \"{{endpoint.url}}downloadArtifacts.html?buildTypeId={{definition}}&buildId={{version}}\" }" + }, + { + "target": "artifacts", + "dataSourceName": "Artifacts", + "resultTemplate": "{ Value : \"{{{path}}}\", DisplayValue : \"{{path}}\", data: { itemType: \"file\" } }" + } + ], + "browsableArtifactTypeMapping": { + "folder": "artifactItems" + } + } + } + ] +} diff --git a/Extensions/ExternalTfs/Src/Tasks/DownloadArtifactsTfsGit/ThirdPartyNotices.txt b/Extensions/ExternalTfs/Src/Tasks/DownloadArtifactsTfsGit/ThirdPartyNotices.txt index dad9772ea..a38ab8d6a 100644 --- a/Extensions/ExternalTfs/Src/Tasks/DownloadArtifactsTfsGit/ThirdPartyNotices.txt +++ b/Extensions/ExternalTfs/Src/Tasks/DownloadArtifactsTfsGit/ThirdPartyNotices.txt @@ -2,7 +2,7 @@ THIRD-PARTY SOFTWARE NOTICES AND INFORMATION Do Not Translate or Localize -This Visual Studio Team Services Extension is based on or incorporates material from the projects listed below (Third Party IP). The original copyright notice and the license under which Microsoft received such Third Party IP, are set forth below. Such licenses and notices are provided for informational purposes only. Microsoft licenses the Third Party IP to you under the licensing terms for the Visual Studio Team Services Extension. Microsoft reserves all other rights not expressly granted under this agreement, whether by implication, estoppel or otherwise. +This Azure DevOps Extension is based on or incorporates material from the projects listed below (Third Party IP). The original copyright notice and the license under which Microsoft received such Third Party IP, are set forth below. Such licenses and notices are provided for informational purposes only. Microsoft licenses the Third Party IP to you under the licensing terms for the Azure DevOps Extension. Microsoft reserves all other rights not expressly granted under this agreement, whether by implication, estoppel or otherwise. 1. balanced-match (https://github.com/juliangruber/balanced-match) 2. brace-expansion (https://github.com/juliangruber/brace-expansion) diff --git a/Extensions/ExternalTfs/Src/Tasks/DownloadArtifactsTfsVersionControl/ThirdPartyNotices.txt b/Extensions/ExternalTfs/Src/Tasks/DownloadArtifactsTfsVersionControl/ThirdPartyNotices.txt index dad9772ea..a38ab8d6a 100644 --- a/Extensions/ExternalTfs/Src/Tasks/DownloadArtifactsTfsVersionControl/ThirdPartyNotices.txt +++ b/Extensions/ExternalTfs/Src/Tasks/DownloadArtifactsTfsVersionControl/ThirdPartyNotices.txt @@ -2,7 +2,7 @@ THIRD-PARTY SOFTWARE NOTICES AND INFORMATION Do Not Translate or Localize -This Visual Studio Team Services Extension is based on or incorporates material from the projects listed below (Third Party IP). The original copyright notice and the license under which Microsoft received such Third Party IP, are set forth below. Such licenses and notices are provided for informational purposes only. Microsoft licenses the Third Party IP to you under the licensing terms for the Visual Studio Team Services Extension. Microsoft reserves all other rights not expressly granted under this agreement, whether by implication, estoppel or otherwise. +This Azure DevOps Extension is based on or incorporates material from the projects listed below (Third Party IP). The original copyright notice and the license under which Microsoft received such Third Party IP, are set forth below. Such licenses and notices are provided for informational purposes only. Microsoft licenses the Third Party IP to you under the licensing terms for the Azure DevOps Extension. Microsoft reserves all other rights not expressly granted under this agreement, whether by implication, estoppel or otherwise. 1. balanced-match (https://github.com/juliangruber/balanced-match) 2. brace-expansion (https://github.com/juliangruber/brace-expansion) diff --git a/Extensions/ExternalTfs/Src/Tasks/DownloadExternalBuildArtifacts/Strings/resources.resjson/en-US/resources.resjson b/Extensions/ExternalTfs/Src/Tasks/DownloadExternalBuildArtifacts/Strings/resources.resjson/en-US/resources.resjson index 08d1b2723..392b11c2e 100644 --- a/Extensions/ExternalTfs/Src/Tasks/DownloadExternalBuildArtifacts/Strings/resources.resjson/en-US/resources.resjson +++ b/Extensions/ExternalTfs/Src/Tasks/DownloadExternalBuildArtifacts/Strings/resources.resjson/en-US/resources.resjson @@ -3,8 +3,8 @@ "loc.helpMarkDown": "", "loc.description": "Download artifacts from external VSTS/TFS build", "loc.instanceNameFormat": "Download Artifacts - External Build", - "loc.input.label.connection": "Team Foundation Server/Team Services connection", - "loc.input.help.connection": "Team Foundation Server/Team Services connection", + "loc.input.label.connection": "Team Foundation Server/Azure DevOps connection", + "loc.input.help.connection": "Team Foundation Server/Azure DevOps connection", "loc.input.label.project": "Project", "loc.input.help.project": "Select the project", "loc.input.label.definition": "Build Definition", @@ -18,4 +18,4 @@ "loc.messages.DownloadArtifacts": "Downloading artifacts from : %s", "loc.messages.ArtifactsSuccessfullyDownloaded": "Successfully downloaded artifacts to %s", "loc.messages.UnsupportedArtifactType": "Unsupported artifact type: %s" -} \ No newline at end of file +} diff --git a/Extensions/ExternalTfs/Src/Tasks/DownloadExternalBuildArtifacts/task.json b/Extensions/ExternalTfs/Src/Tasks/DownloadExternalBuildArtifacts/task.json index 4c521e51f..336d93cac 100644 --- a/Extensions/ExternalTfs/Src/Tasks/DownloadExternalBuildArtifacts/task.json +++ b/Extensions/ExternalTfs/Src/Tasks/DownloadExternalBuildArtifacts/task.json @@ -17,10 +17,10 @@ { "name": "connection", "type": "connectedService:externaltfs", - "label": "Team Foundation Server/Team Services connection", + "label": "Team Foundation Server/Azure DevOps connection", "defaultValue": "", "required": true, - "helpMarkDown": "Team Foundation Server/Team Services connection" + "helpMarkDown": "Team Foundation Server/Azure DevOps connection" }, { "name": "project", @@ -111,4 +111,4 @@ "ArtifactsSuccessfullyDownloaded": "Successfully downloaded artifacts to %s", "UnsupportedArtifactType": "Unsupported artifact type: %s" } -} \ No newline at end of file +} diff --git a/Extensions/ExternalTfs/Src/mp_terms.md b/Extensions/ExternalTfs/Src/mp_terms.md index c9e668569..620151800 100644 --- a/Extensions/ExternalTfs/Src/mp_terms.md +++ b/Extensions/ExternalTfs/Src/mp_terms.md @@ -1,6 +1,6 @@ **MICROSOFT SOFTWARE LICENSE TERMS** -**[MICROSOFT VISUAL STUDIO TEAM SERVICES TOOLS AND EXTENSIONS]** +**[MICROSOFT AZURE DEVOPS TOOLS AND EXTENSIONS]** These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. They apply to the software named above. The terms also apply to any Microsoft services or updates for the software, except to the extent those have different terms. diff --git a/Extensions/ExternalTfs/Src/readme.md b/Extensions/ExternalTfs/Src/readme.md index fca325473..2a7874de7 100644 --- a/Extensions/ExternalTfs/Src/readme.md +++ b/Extensions/ExternalTfs/Src/readme.md @@ -1,28 +1,28 @@ # TFS artifacts for Release Management -With this extension, you can deploy artifacts from external TFS or VS Team Services. The artifacts could be any of the following from VS Team Services or TFS: +With this extension, you can deploy artifacts from external TFS or Azure Devops. The artifacts could be any of the following from Azure Devops or TFS: 1. Build 2. Xaml Build 3. Git 4. Team Foundation Version Control -These Build/Code artifacts could be from different TFS or VS Team Services accounts or from different collections from the same account. +These Build/Code artifacts could be from different TFS or VS Azure Devops accounts or from different collections from the same account. -**Note:** This extension work only with VS Team Services and TFS "17" U2 onwards. +**Note:** This extension work only with Azure Devops and TFS "17" U2 onwards. ## Usage -This extension provides a service endpoint to connect to an external TFS or VS Team Services Collection. Once connected, you can link an artifact from this TFS / VS Team Services. +This extension provides a service endpoint to connect to an external TFS or Azure Devops Collection. Once connected, you can link an artifact from this TFS / Azure Devops. -### Connecting to an External TFS/VS-Team-Services account & collection +### Connecting to an External TFS/Azure Devops account & collection When using Basic Authentication scheme, enable [Basic Auth on TFS](https://github.com/Microsoft/tfs-cli/blob/master/docs/configureBasicAuth.md) -![Creating an external TFS/VS-Team-Services service endpoint connection](images/screen1.png) -![Creating an external TFS/VS-Team-Services service endpoint connection](images/screen2.png) +![Creating an external TFS/Azure Devops service endpoint connection](images/screen1.png) +![Creating an external TFS/Azure Devops service endpoint connection](images/screen2.png) **Note:** You would need to provide the URL to an external account with 'Collection' name in the URL. E.g. https://fabfiber.visualstudio.com/DefaultCollection ### Linking an external artifact (Build in this example) -Once you have set up the service endpoint connection, you would be able to link an external TFS/VS-Team-Services build artifact in your release definition -![Linking an external TFS/VS-Team-Services artifact](images/screen3.png) +Once you have set up the service endpoint connection, you would be able to link an external TFS/Azure Devops build artifact in your release definition +![Linking an external TFS/Azure Devops artifact](images/screen3.png) ### Known Issues @@ -43,13 +43,13 @@ Workaround - Run agent as admin user(either interactively or as service) when wo ### FAQs -**1. Can I use an external TFS build artifact that is not accessible from my VS Team Services account?** +**1. Can I use an external TFS build artifact that is not accessible from my Azure Devops account?** Yes you can. However, the agent that deploys the external TFS Build artifact needs to have access to the linked artifact (External TFS build artifact). **2 Can I use a build from another collection of my current TFS?** -Yes. To do this, you would need to add a service endpoint connection to required collection. Once done, you could link an artifact from this collection as an external TFS/VS-Team-Services artifact. +Yes. To do this, you would need to add a service endpoint connection to required collection. Once done, you could link an artifact from this collection as an external TFS/Azure Devops artifact. **3. Can I link Xaml Build from my external TFS account?** diff --git a/Extensions/ExternalTfs/Src/vss-extension.json b/Extensions/ExternalTfs/Src/vss-extension.json index c08a1df11..98800e84d 100644 --- a/Extensions/ExternalTfs/Src/vss-extension.json +++ b/Extensions/ExternalTfs/Src/vss-extension.json @@ -4,7 +4,7 @@ "version": "15.145.0", "name": "TFS artifacts for Release Management", "publisher": "ms-vscs-rm", - "description": "Deploy external TFS/ VS-Team-Services artifacts using Release Management", + "description": "Deploy external TFS/ Azure DevOps artifacts using Release Management", "_description.comment": "The below format to define artifact extensions is currently in preview and may change in future.", "public": true, "categories": [ "Build and release" ], diff --git a/Extensions/IISWebAppDeploy/Src/CHANGELOG.md b/Extensions/IISWebAppDeploy/Src/CHANGELOG.md index fecb2c4f0..cbfe94be9 100644 --- a/Extensions/IISWebAppDeploy/Src/CHANGELOG.md +++ b/Extensions/IISWebAppDeploy/Src/CHANGELOG.md @@ -2,6 +2,14 @@ All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/). +## [1.5.4] 12th June 2019 +### Added +- Fixed issue in which password was getting displayed in the Azure Web app deploy task. + +## [1.5.3] 9th May 2019 +### Added +- Fixed issue in which starting a remote ps job failed because of incorrect encoding. Original Issue: https://github.com/microsoft/azure-pipelines-tasks/issues/9766 + ## [1.5.1] 4th October 2018 ### Added - Fixing issue of RD save button disabled with version 2.* diff --git a/Extensions/IISWebAppDeploy/Src/README.md b/Extensions/IISWebAppDeploy/Src/README.md index b0de010f7..e44a5e461 100644 --- a/Extensions/IISWebAppDeploy/Src/README.md +++ b/Extensions/IISWebAppDeploy/Src/README.md @@ -9,7 +9,7 @@ Using Windows Remote Management (WinRM), connect to the host machine(s) where II To easily **setup WinRM** on the **host machines**, follow the directions for the **[domain-joined machines](https://www.visualstudio.com/en-us/docs/release/examples/other-servers/net-to-vm)** or the **[workgroup machines](https://www.visualstudio.com/en-us/docs/release/examples/other-servers/net-to-workgroup-vm)**. -The **Visual Studio Team Services** accounts that are using the **preview tasks** wiz. **IIS Web Application Deployment** or **SQL Server Database Deployment**, should move to this extension. All **future enhancements** to the IIS Web App Deployment task or to the SQL Server Database Deployment task will be provided in this extension. +The **Azure DevOps** accounts that are using the **preview tasks** wiz. **IIS Web Application Deployment** or **SQL Server Database Deployment**, should move to this extension. All **future enhancements** to the IIS Web App Deployment task or to the SQL Server Database Deployment task will be provided in this extension. ## **Usage** diff --git a/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppDeploy/Main.ps1 b/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppDeploy/Main.ps1 index 02be48300..efb494655 100644 --- a/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppDeploy/Main.ps1 +++ b/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppDeploy/Main.ps1 @@ -15,6 +15,12 @@ param ( [string]$deployInParallel ) +if ([Console]::InputEncoding -is [Text.UTF8Encoding] -and [Console]::InputEncoding.GetPreamble().Length -ne 0) +{ + Write-Verbose "Resetting input encoding." + [Console]::InputEncoding = New-Object Text.UTF8Encoding $false +} + $env:CURRENT_TASK_ROOTDIR = Split-Path -Parent $MyInvocation.MyCommand.Path . $env:CURRENT_TASK_ROOTDIR\TelemetryHelper\TelemetryHelper.ps1 diff --git a/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppDeploy/task.json b/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppDeploy/task.json index 3feb2792d..1f635a9f4 100644 --- a/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppDeploy/task.json +++ b/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppDeploy/task.json @@ -16,7 +16,7 @@ "version": { "Major": 1, "Minor": 4, - "Patch": 5 + "Patch": 6 }, "demands": [ ], diff --git a/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV1/Main.ps1 b/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV1/Main.ps1 index ac0aa86c0..ec1222170 100644 --- a/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV1/Main.ps1 +++ b/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV1/Main.ps1 @@ -30,6 +30,12 @@ param ( [string]$deployInParallel ) +if ([Console]::InputEncoding -is [Text.UTF8Encoding] -and [Console]::InputEncoding.GetPreamble().Length -ne 0) +{ + Write-Verbose "Resetting input encoding." + [Console]::InputEncoding = New-Object Text.UTF8Encoding $false +} + $currentTaskVersionRootDir = Split-Path -Parent $MyInvocation.MyCommand.Path $env:CURRENT_TASK_ROOTDIR = $currentTaskVersionRootDir diff --git a/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV1/README_IISAppMgmt.md b/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV1/README_IISAppMgmt.md index 734e7fedf..fc384fdb2 100644 --- a/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV1/README_IISAppMgmt.md +++ b/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV1/README_IISAppMgmt.md @@ -20,7 +20,7 @@ There should be a IIS web server already installed and configured on the pre-exi To dynamically deploy IIS on machines, use the [PowerShell on Target Machines]((https://github.com/Microsoft/azure-pipelines-tasks/tree/master/Tasks/PowerShellOnTargetMachinesV3)) task and run the ConfigureWebServer.ps1 script on it from the [Fabrikamfiber GitHub Repo](https://github.com/fabrikamfiber/customerservice/tree/master/DeployTemplate). This script will also install the Web Deploy on the machines and is needed for deploying the IIS Web Apps. -###WinRM setup +### WinRM setup This task uses the [Windows Remote Management](https://msdn.microsoft.com/en-us/library/aa384426.aspx) (WinRM) to access domain-joined or workgroup, on-premises physical or virtual machines. #### Windows Remote Management (WinRM) Setup for On-premises Physical or Virtual Machines diff --git a/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV1/task.json b/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV1/task.json index e0267bf11..bcc22a809 100644 --- a/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV1/task.json +++ b/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV1/task.json @@ -16,7 +16,7 @@ "version": { "Major": 1, "Minor": 3, - "Patch": 5 + "Patch": 6 }, "demands": [ ], diff --git a/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV2/AppCmdOnTargetMachines.ps1 b/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV2/AppCmdOnTargetMachines.ps1 index b7ca23313..0c9713cce 100644 --- a/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV2/AppCmdOnTargetMachines.ps1 +++ b/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV2/AppCmdOnTargetMachines.ps1 @@ -148,6 +148,36 @@ function Test-AppPoolExist return $false } +function Get-AppPoolState +{ + param( + [string]$appPoolName + ) + + $appCmdPath, $iisVersion = Get-AppCmdLocation -regKeyPath $AppCmdRegKey + $appCmdArgs = [string]::Format(' list apppool /name:"{0}"',$appPoolName) + $command = "`"$appCmdPath`" $appCmdArgs" + + Write-Verbose "Checking application pool state. Running command : $command" + + $appPoolInfo = Run-Command -command $command -failOnErr $false + + $appPoolName = $appPoolName.Replace('`', '``').Replace('"', '`"').Replace('$', '`$') + if($null -ne $appPoolInfo -and $appPoolInfo -like "*`"$appPoolName`"*") + { + $found = $appPoolInfo -match 'state:([A-Z])\w+' + if ($found) { + $stateInfo = $matches[0] + if ($stateInfo) { + return ($stateInfo -Split ":")[1] + } + } + } + + Write-Verbose "Application Pool (`"$appPoolName`") does not exists" + return $null +} + function Enable-SNI { param( @@ -737,6 +767,20 @@ function Start-Stop-Recycle-ApplicationPool { $appCmdArgs = [string]::Format('{0} apppool /apppool.name:"{1}"', $action, $appPoolName) $command = "`"$appCmdPath`" $appCmdArgs" + $appPoolState = Get-AppPoolState -appPoolName $appPoolName + + if ($appPoolState) + { + if ((($appPoolState -like "Started") -and $action -like "start") -or (($appPoolState -like "Stopped") -and $action -like "stop")) { + Write-verbose "Application pool '$appPoolName' is already in state of the action '$action'. Hence skipping the operation." + return + } + } + else + { + Write-Verbose "Unable to detect the state of application pool '$appPoolName'" + } + Write-Verbose "Performing action '$action' on application pool '$appPoolName'. Running command $command" Run-Command -command $command } diff --git a/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV2/Main.ps1 b/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV2/Main.ps1 index 6b4366ef3..84614764f 100644 --- a/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV2/Main.ps1 +++ b/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV2/Main.ps1 @@ -63,6 +63,12 @@ param ( [string]$deployInParallel ) +if ([Console]::InputEncoding -is [Text.UTF8Encoding] -and [Console]::InputEncoding.GetPreamble().Length -ne 0) +{ + Write-Verbose "Resetting input encoding." + [Console]::InputEncoding = New-Object Text.UTF8Encoding $false +} + $currentTaskVersionRootDir = Split-Path -Parent $MyInvocation.MyCommand.Path $env:CURRENT_TASK_ROOTDIR = $currentTaskVersionRootDir @@ -75,6 +81,7 @@ try { $appCmdCommands = Escape-SpecialChars -str $appCmdCommands $invokeMain = "" + $invokeMainLog = "" $action = "" switch ($iisDeploymentType) @@ -86,6 +93,12 @@ try { -hostNameWithOutSNI $hostNameWithOutSNI -hostNameWithHttp $hostNameWithHttp -hostNameWithSNI $hostNameWithSNI -sslCertThumbPrint $sslCertThumbPrint ` -createOrUpdateAppPool $createOrUpdateAppPoolForWebsite -appPoolName $appPoolNameForWebsite -dotNetVersion $dotNetVersionForWebsite -pipeLineMode $pipeLineModeForWebsite -appPoolIdentity $appPoolIdentityForWebsite -appPoolUsername $appPoolUsernameForWebsite -appPoolPassword $appPoolPasswordForWebsite ` -configureAuthentication $configureAuthenticationForWebsite -anonymousAuthentication $anonymousAuthenticationForWebsite -basicAuthentication $basicAuthenticationForWebsite -windowsAuthentication $windowsAuthenticationForWebsite -appCmdCommands $appCmdCommands + + $invokeMainLog = Set-IISWebsite -actionIISWebsite $actionIISWebsite -websiteName $websiteName -startStopWebsiteName $startStopWebsiteName -physicalPath $websitePhysicalPath -physicalPathAuth $websitePhysicalPathAuth -physicalPathAuthUserName $websiteAuthUserName -physicalPathAuthUserPassword **** ` + -addBinding $addBinding -bindings $bindings -protocol $protocol -ipAddress $ipAddress -port $port -serverNameIndication $serverNameIndication ` + -hostNameWithOutSNI $hostNameWithOutSNI -hostNameWithHttp $hostNameWithHttp -hostNameWithSNI $hostNameWithSNI -sslCertThumbPrint $sslCertThumbPrint ` + -createOrUpdateAppPool $createOrUpdateAppPoolForWebsite -appPoolName $appPoolNameForWebsite -dotNetVersion $dotNetVersionForWebsite -pipeLineMode $pipeLineModeForWebsite -appPoolIdentity $appPoolIdentityForWebsite -appPoolUsername $appPoolUsernameForWebsite -appPoolPassword **** ` + -configureAuthentication $configureAuthenticationForWebsite -anonymousAuthentication $anonymousAuthenticationForWebsite -basicAuthentication $basicAuthenticationForWebsite -windowsAuthentication $windowsAuthenticationForWebsite -appCmdCommands $appCmdCommands $action = $actionIISWebsite } @@ -94,17 +107,27 @@ try { $invokeMain = Set-IISWebApplication -parentWebsiteName $parentWebsiteNameForApplication -virtualPath $virtualPathForApplication -physicalPath $physicalPathForApplication -physicalPathAuth $applicationPhysicalPathAuth -physicalPathAuthUserName $applicationAuthUserName -physicalPathAuthUserPassword $applicationAuthUserPassword ` -createOrUpdateAppPool $createOrUpdateAppPoolForApplication -appPoolName $appPoolNameForApplication -dotNetVersion $dotNetVersionForApplication -pipeLineMode $pipeLineModeForApplication -appPoolIdentity $appPoolIdentityForApplication -appPoolUsername $appPoolUsernameForApplication -appPoolPassword $appPoolPasswordForApplication ` -appCmdCommands $appCmdCommands + + $invokeMainLog = Set-IISWebApplication -parentWebsiteName $parentWebsiteNameForApplication -virtualPath $virtualPathForApplication -physicalPath $physicalPathForApplication -physicalPathAuth $applicationPhysicalPathAuth -physicalPathAuthUserName $applicationAuthUserName -physicalPathAuthUserPassword **** ` + -createOrUpdateAppPool $createOrUpdateAppPoolForApplication -appPoolName $appPoolNameForApplication -dotNetVersion $dotNetVersionForApplication -pipeLineMode $pipeLineModeForApplication -appPoolIdentity $appPoolIdentityForApplication -appPoolUsername $appPoolUsernameForApplication -appPoolPassword **** ` + -appCmdCommands $appCmdCommands } "IISVirtualDirectory" { $invokeMain = Set-IISVirtualDirectory -parentWebsiteName $parentWebsiteNameForVD -virtualPath $virtualPathForVD -physicalPath $physicalPathForVD -PhysicalPathAuth $vdPhysicalPathAuth ` -physicalPathAuthUserName $vdAuthUserName -physicalPathAuthUserPassword $vdAuthUserPassword -appCmdCommands $appCmdCommands + + $invokeMainLog = Set-IISVirtualDirectory -parentWebsiteName $parentWebsiteNameForVD -virtualPath $virtualPathForVD -physicalPath $physicalPathForVD -PhysicalPathAuth $vdPhysicalPathAuth ` + -physicalPathAuthUserName $vdAuthUserName -physicalPathAuthUserPassword **** -appCmdCommands $appCmdCommands } "IISApplicationPool" { $invokeMain = Set-IISApplicationPool -actionIISApplicationPool $actionIISApplicationPool -appPoolName $appPoolName -startStopRecycleAppPoolName $startStopRecycleAppPoolName -dotNetVersion $dotNetVersion ` -pipeLineMode $pipeLineMode -appPoolIdentity $appPoolIdentity -appPoolUsername $appPoolUsername -appPoolPassword $appPoolPassword -appCmdCommands $appCmdCommands + + $invokeMainLog = Set-IISApplicationPool -actionIISApplicationPool $actionIISApplicationPool -appPoolName $appPoolName -startStopRecycleAppPoolName $startStopRecycleAppPoolName -dotNetVersion $dotNetVersion ` + -pipeLineMode $pipeLineMode -appPoolIdentity $appPoolIdentity -appPoolUsername $appPoolUsername -appPoolPassword **** -appCmdCommands $appCmdCommands $action = $actionIISApplicationPool } @@ -115,7 +138,7 @@ try { } $msDeployScript = Get-Content ./AppCmdOnTargetMachines.ps1 | Out-String - Write-Verbose "Executing main funnction in AppCmdOnTargetMachines : $invokeMain" + Write-Verbose "Executing main funnction in AppCmdOnTargetMachines : $invokeMainLog" $script = [string]::Format("{0} {1} ( {2} )", $msDeployScript, [Environment]::NewLine, $invokeMain) Run-RemoteDeployment -machinesList $machinesList -scriptToRun $script -adminUserName $adminUserName -adminPassword $adminPassword -winrmProtocol $winrmProtocol -testCertificate $testCertificate -deployInParallel $deployInParallel -iisDeploymentType $iisDeploymentType -action $action diff --git a/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV2/README_IISAppMgmt.md b/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV2/README_IISAppMgmt.md index 8681d016f..f71395be1 100644 --- a/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV2/README_IISAppMgmt.md +++ b/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV2/README_IISAppMgmt.md @@ -20,7 +20,7 @@ There should be a IIS web server already installed and configured on the pre-exi To dynamically deploy IIS on machines, use the [PowerShell on Target Machines]((https://github.com/Microsoft/azure-pipelines-tasks/tree/master/Tasks/PowerShellOnTargetMachinesV3)) task and run the ConfigureWebServer.ps1 script on it from the [Fabrikamfiber GitHub Repo](https://github.com/fabrikamfiber/customerservice/tree/master/DeployTemplate). This script will also install the Web Deploy on the machines and is needed for deploying the IIS Web Apps. -###WinRM setup +### WinRM setup This task uses the [Windows Remote Management](https://msdn.microsoft.com/en-us/library/aa384426.aspx) (WinRM) to access domain-joined or workgroup, on-premises physical or virtual machines. #### Windows Remote Management (WinRM) Setup for On-premises Physical or Virtual Machines diff --git a/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV2/task.json b/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV2/task.json index 6f7577c65..8168d3419 100644 --- a/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV2/task.json +++ b/Extensions/IISWebAppDeploy/Src/Tasks/IISWebAppMgmt/IISWebAppMgmtV2/task.json @@ -16,7 +16,7 @@ "version": { "Major": 2, "Minor": 0, - "Patch": 2 + "Patch": 4 }, "preview": true, "demands": [ diff --git a/Extensions/IISWebAppDeploy/Src/Tasks/SqlDacpacDeploy/DeployToSqlServer.ps1 b/Extensions/IISWebAppDeploy/Src/Tasks/SqlDacpacDeploy/DeployToSqlServer.ps1 index 9a284b9f5..193cb0452 100644 --- a/Extensions/IISWebAppDeploy/Src/Tasks/SqlDacpacDeploy/DeployToSqlServer.ps1 +++ b/Extensions/IISWebAppDeploy/Src/Tasks/SqlDacpacDeploy/DeployToSqlServer.ps1 @@ -241,3 +241,21 @@ function Main RunRemoteDeployment @remoteDeploymentArgs } + +function GetSHA256String { + [CmdletBinding()] + param( + [Parameter(Mandatory=$false)] + [string] $inputString) + + if ($inputString) { + $hashHandler = [System.Security.Cryptography.HashAlgorithm]::Create('sha256') + $hash = $hashHandler.ComputeHash([System.Text.Encoding]::UTF8.GetBytes($inputString.ToLower())) + + $hashString = [System.BitConverter]::ToString($hash) + $hashString = $hashString.Replace('-', '').ToLower() + return $hashString; + } + + return "" +} diff --git a/Extensions/IISWebAppDeploy/Src/Tasks/SqlDacpacDeploy/Main.ps1 b/Extensions/IISWebAppDeploy/Src/Tasks/SqlDacpacDeploy/Main.ps1 index ffc1baeff..6358bd08b 100644 --- a/Extensions/IISWebAppDeploy/Src/Tasks/SqlDacpacDeploy/Main.ps1 +++ b/Extensions/IISWebAppDeploy/Src/Tasks/SqlDacpacDeploy/Main.ps1 @@ -22,6 +22,12 @@ param ( [string]$deployInParallel ) +if ([Console]::InputEncoding -is [Text.UTF8Encoding] -and [Console]::InputEncoding.GetPreamble().Length -ne 0) +{ + Write-Verbose "Resetting input encoding." + [Console]::InputEncoding = New-Object Text.UTF8Encoding $false +} + $env:CURRENT_TASK_ROOTDIR = Split-Path -Parent $MyInvocation.MyCommand.Path . $env:CURRENT_TASK_ROOTDIR\TelemetryHelper\TelemetryHelper.ps1 @@ -33,6 +39,13 @@ if ($taskType -ne "dacpac") $targetMethod = "server" } +# Telemetry for SQL Dacpac deployment +$encodedServerName = GetSHA256String($serverName) +$encodedDatabaseName = GetSHA256String($databaseName) +$telemetryJsonContent = -join("{`"serverName`": `"$encodedServerName`",", + "`"databaseName`": `"$encodedDatabaseName`"}") +Write-Host "##vso[telemetry.publish area=SqlTelemetry;feature=SqlDacpacDeploy]$telemetryJsonContent" + $sqlMainArgs = @{ machinesList=$machinesList adminUserName=$adminUserName diff --git a/Extensions/IISWebAppDeploy/Src/Tasks/SqlDacpacDeploy/task.json b/Extensions/IISWebAppDeploy/Src/Tasks/SqlDacpacDeploy/task.json index 808b8f1d2..2c5664b22 100644 --- a/Extensions/IISWebAppDeploy/Src/Tasks/SqlDacpacDeploy/task.json +++ b/Extensions/IISWebAppDeploy/Src/Tasks/SqlDacpacDeploy/task.json @@ -16,7 +16,7 @@ "version": { "Major": 1, "Minor": 3, - "Patch": 9 + "Patch": 11 }, "demands": [ ], diff --git a/Extensions/IISWebAppDeploy/Src/vss-extension.json b/Extensions/IISWebAppDeploy/Src/vss-extension.json index ed47a72a9..37b92b03d 100644 --- a/Extensions/IISWebAppDeploy/Src/vss-extension.json +++ b/Extensions/IISWebAppDeploy/Src/vss-extension.json @@ -2,7 +2,7 @@ "manifestVersion": 1, "extensionId": "iiswebapp", "name": "IIS Web App Deployment Using WinRM", - "version": "1.5.1", + "version": "1.5.4", "publisher": "ms-vscs-rm", "description": "Using WinRM connect to the host Computer, to deploy a Web project using Web Deploy or a SQL DB using sqlpackage.exe.", "public": true, diff --git a/Extensions/IISWebAppDeploy/Tests/Tasks/IISWebAppMgmt/IISWebAppMgmtV2/L0AppcmdAdditionalActions.ps1 b/Extensions/IISWebAppDeploy/Tests/Tasks/IISWebAppMgmt/IISWebAppMgmtV2/L0AppcmdAdditionalActions.ps1 index ba9f8e29a..2f01de697 100644 --- a/Extensions/IISWebAppDeploy/Tests/Tasks/IISWebAppMgmt/IISWebAppMgmtV2/L0AppcmdAdditionalActions.ps1 +++ b/Extensions/IISWebAppDeploy/Tests/Tasks/IISWebAppMgmt/IISWebAppMgmtV2/L0AppcmdAdditionalActions.ps1 @@ -41,7 +41,7 @@ Register-Mock Run-Command { } Start-Stop-Recycle-ApplicationPool -appPoolName $appPoolName -action $action -Assert-WasCalled -Command Run-Command -Times 1 +Assert-WasCalled -Command Run-Command -Times 2 Assert-WasCalled -Command Run-Command -- -command "`"appcmdPath`" start apppool /apppool.name:`"Sample App Pool`"" # Test 4 : Stop Application Pool @@ -53,7 +53,7 @@ Register-Mock Run-Command { } Start-Stop-Recycle-ApplicationPool -appPoolName $appPoolName -action $action -Assert-WasCalled -Command Run-Command -Times 1 +Assert-WasCalled -Command Run-Command -Times 2 Assert-WasCalled -Command Run-Command -- -command "`"appcmdPath`" stop apppool /apppool.name:`"Sample App Pool`"" # Test 5 : Recycle Application Pool @@ -65,5 +65,5 @@ Register-Mock Run-Command { } Start-Stop-Recycle-ApplicationPool -appPoolName $appPoolName -action $action -Assert-WasCalled -Command Run-Command -Times 1 +Assert-WasCalled -Command Run-Command -Times 2 Assert-WasCalled -Command Run-Command -- -command "`"appcmdPath`" recycle apppool /apppool.name:`"Sample App Pool`"" diff --git a/Extensions/ServiceNow/Src/Tasks/CreateAndQueryChangeRequest/icon.png b/Extensions/ServiceNow/Src/Tasks/CreateAndQueryChangeRequest/CreateAndQueryChangeRequestV0/icon.png similarity index 100% rename from Extensions/ServiceNow/Src/Tasks/CreateAndQueryChangeRequest/icon.png rename to Extensions/ServiceNow/Src/Tasks/CreateAndQueryChangeRequest/CreateAndQueryChangeRequestV0/icon.png diff --git a/Extensions/ServiceNow/Src/Tasks/CreateAndQueryChangeRequest/task.json b/Extensions/ServiceNow/Src/Tasks/CreateAndQueryChangeRequest/CreateAndQueryChangeRequestV0/task.json similarity index 88% rename from Extensions/ServiceNow/Src/Tasks/CreateAndQueryChangeRequest/task.json rename to Extensions/ServiceNow/Src/Tasks/CreateAndQueryChangeRequest/CreateAndQueryChangeRequestV0/task.json index 740ef84b0..9b167d605 100644 --- a/Extensions/ServiceNow/Src/Tasks/CreateAndQueryChangeRequest/task.json +++ b/Extensions/ServiceNow/Src/Tasks/CreateAndQueryChangeRequest/CreateAndQueryChangeRequestV0/task.json @@ -15,7 +15,7 @@ "version": { "Major": 0, "Minor": 1, - "Patch": 0 + "Patch": 1 }, "instanceNameFormat": "ServiceNow change management", "groups": [ @@ -209,13 +209,13 @@ "EndpointId": "$(ServiceNowConnection)", "EndpointUrl": "$(endpoint.url)/api/now/import/x_mioms_azpipeline_change_request_import", "Method": "POST", - "Body": "{ \"u_correlation_id\": \"{{#newGuid}}{{/newGuid}}\",\"u_x_mioms_azpi_eline_metadata\": \"Release: $(RELEASE.RELEASEWEBURL) \\r\\n EnvironmentName: $(RELEASE.ENVIRONMENTNAME) \\r\\n Requested By : $(RELEASE.DEPLOYMENT.REQUESTEDFOR)\", \"u_short_description\": \"$(shortdescription)\", \"u_description\": \"$(description)\", \"u_category\": \"$(category)\", \"u_priority\": \"$(priority)\", \"u_risk\": \"$(risk)\", \"u_impact\": \"$(impact)\", \"u_cmdb_ci\": \"$(configurationitem)\", \"u_assignment_group\": \"$(assignmentgroup)\", \"u_requested_by_date\": \"{{toDateTimeFormat '$(RELEASE.DEPLOYMENT.STARTTIME)' 'yyyy-MM-dd HH:mm:ss'}}\", \"u_start_date\": \"{{#if schedulestarttime}}{{toDateTimeFormat '$(schedulestarttime)' 'yyyy-MM-dd HH:mm:ss'}}{{/if}}\", \"u_end_date\": \"{{#if scheduleendtime}}{{toDateTimeFormat '$(scheduleendtime)' 'yyyy-MM-dd HH:mm:ss'}}{{/if}}\" {{#if otherParameters}}{{toCommaSeparatedKeyValueList otherParameters true}}{{/if}} }", + "Body": "{ \"u_correlation_id\": \"{{#newGuid}}{{/newGuid}}\",\"u_x_mioms_azpi_eline_metadata\": \"Release: $(RELEASE.RELEASEWEBURL) \\r\\n EnvironmentName: $(RELEASE.ENVIRONMENTNAME) \\r\\n Requested By : {{#equals '$(RELEASE.REASON)' 'Schedule' 1}}Scheduled release{{else}}$(RELEASE.DEPLOYMENT.REQUESTEDFOR){{/equals}}\", \"u_short_description\": \"$(shortdescription)\", \"u_description\": \"$(description)\", \"u_category\": \"$(category)\", \"u_priority\": \"$(priority)\", \"u_risk\": \"$(risk)\", \"u_impact\": \"$(impact)\", \"u_cmdb_ci\": \"$(configurationitem)\", \"u_assignment_group\": \"$(assignmentgroup)\", \"u_requested_by_date\": \"{{toDateTimeFormat '$(RELEASE.DEPLOYMENT.STARTTIME)' 'yyyy-MM-dd HH:mm:ss'}}\", \"u_start_date\": \"{{#if schedulestarttime}}{{toDateTimeFormat '$(schedulestarttime)' 'yyyy-MM-dd HH:mm:ss'}}{{/if}}\", \"u_end_date\": \"{{#if scheduleendtime}}{{toDateTimeFormat '$(scheduleendtime)' 'yyyy-MM-dd HH:mm:ss'}}{{/if}}\" {{#if otherParameters}}{{toCommaSeparatedKeyValueList otherParameters true}}{{/if}} }", "Headers": "{\"Content-Type\":\"application/json\", \"Accept\":\"application/json\"}", "WaitForCompletion": "false", "Expression": "eq(jsonpath('$.result[0].status')[0], 'inserted')" }, "ExecutionOptions": { - "OutputVariables": "{\"CHANGE_SYSTEM_ID\" : \"jsonpath('$.result[0].sys_id')[0]\", \"CHANGE_REQUEST_NUMBER\" : \"jsonpath('$.result[0].display_value')[0]\"}", + "OutputVariables": "{\"CHANGE_SYSTEM_ID\" : \"jsonpath('$.result[0].sys_id')[0]\"}", "SkipSectionExpression": "eq(isNullOrEmpty(variables['CHANGE_SYSTEM_ID']), false)" } }, @@ -229,6 +229,7 @@ "Expression": "eq(jsonpath('$.result.state')[0], '$(DesiredExitStatus)')" }, "ExecutionOptions": { + "OutputVariables": "{\"CHANGE_REQUEST_NUMBER\" : \"jsonpath('$.result.number')[0]\"}", "SkipSectionExpression": "eq(isNullOrEmpty(variables['CHANGE_SYSTEM_ID']), true)" } } @@ -245,4 +246,4 @@ "description": "System Id of the change request created in ServiceNow" } ] -} +} \ No newline at end of file diff --git a/Extensions/ServiceNow/Src/Tasks/UpdateChangeRequest/icon.png b/Extensions/ServiceNow/Src/Tasks/CreateAndQueryChangeRequest/CreateAndQueryChangeRequestV1/icon.png similarity index 100% rename from Extensions/ServiceNow/Src/Tasks/UpdateChangeRequest/icon.png rename to Extensions/ServiceNow/Src/Tasks/CreateAndQueryChangeRequest/CreateAndQueryChangeRequestV1/icon.png diff --git a/Extensions/ServiceNow/Src/Tasks/CreateAndQueryChangeRequest/CreateAndQueryChangeRequestV1/task.json b/Extensions/ServiceNow/Src/Tasks/CreateAndQueryChangeRequest/CreateAndQueryChangeRequestV1/task.json new file mode 100644 index 000000000..d9c9517ee --- /dev/null +++ b/Extensions/ServiceNow/Src/Tasks/CreateAndQueryChangeRequest/CreateAndQueryChangeRequestV1/task.json @@ -0,0 +1,426 @@ +{ + "id": "539E1E16-0680-4F8E-85D0-95B6FDE76E8C", + "name": "CreateAndQueryChangeRequest", + "friendlyName": "ServiceNow Change Management", + "description": "Gate on status of new change request or an existing change request in ServiceNow.", + "author": "Microsoft", + "helpMarkDown": "", + "category": "Utility", + "visibility": [ + "Release" + ], + "runsOn": [ + "ServerGate" + ], + "version": { + "Major": 1, + "Minor": 150, + "Patch": 0 + }, + "instanceNameFormat": "ServiceNow change management", + "groups": [{ + "name": "schedule", + "displayName": "Schedule of change request", + "isExpanded": false, + "visibleRule": "changeRequestAction = createNew" + }, + { + "name": "optionalInputs", + "displayName": "Optional inputs", + "isExpanded": false, + "visibleRule": "changeRequestAction = createNew && changeType = Normal" + }, + { + "name": "advancedInputs", + "displayName": "Advanced", + "isExpanded": false + }, + { + "name": "completionOptions", + "displayName": "Success criteria", + "isExpanded": true + } + ], + "inputs": [{ + "name": "ServiceNowConnection", + "type": "connectedService:ServiceNow", + "label": "ServiceNow connection", + "defaultValue": "", + "required": "true", + "helpMarkDown": "Connection to the ServiceNow instance used for change management." + }, + { + "name": "changeRequestAction", + "type": "pickList", + "label": "Action", + "required": "false", + "helpMarkDown": "Gate on status of new change request or an existing change request.", + "properties": { + "EditableOptions": "False" + }, + "options": { + "createNew": "Create new change request", + "useExisting": "Use existing change request" + }, + "defaultValue": "createNew" + }, + { + "name": "changeQueryCriteria", + "type": "pickList", + "label": "Change query criteria", + "required": "true", + "helpMarkDown": "Choose criteria for querying change request. Must uniquely identify the change request. Gate would fail if multiple matching change requests are found.", + "properties": { + "EditableOptions": "false" + }, + "options": { + "changeRequestNumber": "Change request number", + "queryString": "Query string" + }, + "defaultValue": "changeRequestNumber", + "visibleRule": "changeRequestAction = useExisting" + }, + { + "name": "changeRequestNumber", + "type": "string", + "label": "Change request number", + "required": "true", + "helpMarkDown": "Change request to use. Must be a valid change request number in ServiceNow.", + "visibleRule": "changeRequestAction = useExisting && changeQueryCriteria = changeRequestNumber" + }, + { + "name": "queryString", + "type": "string", + "label": "Query string", + "required": "true", + "helpMarkDown": "ServiceNow URL query parameter (sysparm_query) eg. number=CHG0030207.", + "visibleRule": "changeRequestAction = useExisting && changeQueryCriteria = queryString" + }, + { + "name": "changeType", + "type": "pickList", + "label": "Change type", + "required": "false", + "helpMarkDown": "Type of the change request.", + "properties": { + "EditableOptions": "False" + }, + "options": { + "Normal": "Normal", + "Standard": "Standard", + "Emergency": "Emergency" + }, + "defaultValue": "Normal", + "visibleRule": "changeRequestAction = createNew" + }, + { + "name": "standardChangeTemplate", + "type": "pickList", + "label": "Standard change template", + "required": "false", + "helpMarkDown": "Choose or type change template name for the change request.", + "properties": { + "EditableOptions": "True" + }, + "defaultValue": "", + "visibleRule": "changeRequestAction = createNew && changeType = Standard" + }, + { + "name": "shortdescription", + "type": "string", + "label": "Short description", + "required": "true", + "defaultValue": "Deployment to $(Release.EnvironmentName) of Release $(Release.ReleaseName)", + "helpMarkDown": "Short description of the change request.", + "visibleRule": "changeRequestAction = createNew" + }, + { + "name": "workNotes", + "type": "string", + "label": "Work notes", + "required": "false", + "defaultValue": "Deployment to $(Release.EnvironmentName) of Release $(Release.ReleaseName) \\r\\n Release: $(RELEASE.RELEASEWEBURL)", + "helpMarkDown": "Work notes to be added for the change request.", + "visibleRule": "changeRequestAction = useExisting" + }, + { + "name": "description", + "type": "string", + "label": "Description", + "required": "false", + "defaultValue": "Deployment to $(Release.EnvironmentName) of Release $(Release.ReleaseName)", + "helpMarkDown": "Description of the change request.", + "groupName": "optionalInputs" + }, + { + "name": "category", + "type": "pickList", + "label": "Category", + "required": "false", + "defaultValue": "", + "helpMarkDown": "Choose or type category (label or value) of the change request.", + "properties": { + "EditableOptions": "True" + }, + "groupName": "optionalInputs" + }, + { + "name": "priority", + "type": "pickList", + "label": "Priority", + "required": "false", + "defaultValue": "", + "helpMarkDown": "Choose or type priority (label or value) of the change request.", + "properties": { + "EditableOptions": "True" + }, + "groupName": "optionalInputs" + }, + { + "name": "risk", + "type": "pickList", + "label": "Risk", + "required": "false", + "defaultValue": "", + "helpMarkDown": "Choose or type risk (label or value) of the change request.", + "properties": { + "EditableOptions": "True" + }, + "groupName": "optionalInputs" + }, + { + "name": "impact", + "type": "pickList", + "label": "Impact", + "required": "false", + "defaultValue": "", + "helpMarkDown": "Choose or type impact (label or value) of the change request.", + "properties": { + "EditableOptions": "True" + }, + "groupName": "optionalInputs" + }, + { + "name": "configurationitem", + "type": "pickList", + "label": "Configuration item", + "required": "false", + "defaultValue": "", + "helpMarkDown": "Choose or type configuration item (display name or sys_id) defined in ServiceNow that is affected by this pipeline.", + "properties": { + "EditableOptions": "True" + }, + "groupName": "optionalInputs" + }, + { + "name": "assignmentgroup", + "type": "pickList", + "label": "Assignment group", + "required": "false", + "defaultValue": "", + "helpMarkDown": "Choose or type group of ServiceNow users who can approve and update the change request.", + "properties": { + "EditableOptions": "True" + }, + "groupName": "optionalInputs" + }, + { + "name": "schedulestarttime", + "type": "string", + "label": "Planned start date", + "required": "false", + "defaultValue": "", + "helpMarkDown": "Planned start time of the change request in UTC (yyyy-MM-ddTHH:mm:ssZ format). eg. 2018-01-31T07:56:59Z", + "groupName": "schedule" + }, + { + "name": "scheduleendtime", + "type": "string", + "label": "Planned end date", + "required": "false", + "defaultValue": "", + "helpMarkDown": "Planned end time of the change request in UTC (yyyy-MM-ddTHH:mm:ssZ format). eg. 2018-01-31T07:56:59Z", + "groupName": "schedule" + }, + { + "name": "otherParameters", + "type": "multiLine", + "label": "Additional change request parameters", + "defaultValue": "", + "required": "false", + "helpMarkDown": "Additional change request properties to set. Specified as Key-value pairs in json format, name being the field name (not label) prefixed with 'u_' in ServiceNow and a valid value. Invalid properties are ignored.", + "properties": { + "editorExtension": "ms.vss-services-azure.azure-servicebus-message-grid" + }, + "groupName": "advancedInputs" + }, + { + "name": "DesiredExitStatus", + "type": "pickList", + "label": "Desired status of change request", + "required": "true", + "groupName": "completionOptions", + "helpMarkDown": "Choose or type status of change request that indicates the change request is ready to be implemented. Gate would succeed when the the change request status is same as the provided value.", + "properties": { + "EditableOptions": "True" + } + } + ], + "dataSourceBindings": [{ + "target": "standardChangeTemplate", + "endpointId": "$(ServiceNowConnection)", + "dataSourceName": "StandardChangeTemplate", + "resultTemplate": "{ \"Value\" : \"{{sys_id}}\", \"DisplayValue\" : \"{{sys_name}}\" }" + }, + { + "target": "priority", + "endpointId": "$(ServiceNowConnection)", + "dataSourceName": "Priority" + }, + { + "target": "risk", + "endpointId": "$(ServiceNowConnection)", + "dataSourceName": "Risk" + }, + { + "target": "impact", + "endpointId": "$(ServiceNowConnection)", + "dataSourceName": "Impact" + }, + { + "target": "category", + "endpointId": "$(ServiceNowConnection)", + "dataSourceName": "Category" + }, + { + "target": "DesiredExitStatus", + "endpointId": "$(ServiceNowConnection)", + "dataSourceName": "State" + }, + { + "target": "configurationitem", + "endpointId": "$(ServiceNowConnection)", + "dataSourceName": "Configuration Item" + }, + { + "target": "assignmentgroup", + "endpointId": "$(ServiceNowConnection)", + "dataSourceName": "Assignment Group" + } + ], + "execution": { + "HttpRequestChain": { + "Execute": [ + { + "RequestInputs": { + "EndpointId": "$(ServiceNowConnection)", + "EndpointUrl": "$(endpoint.url)/api/now/import/x_mioms_azpipeline_change_request_import", + "Method": "POST", + "Body": "{ \"u_correlation_id\": \"{{#newGuid}}{{/newGuid}}\",\"u_type\": \"$(changeType)\",\"u_x_mioms_azpi_eline_metadata\": \"Release: $(RELEASE.RELEASEWEBURL) \\r\\n EnvironmentName: $(RELEASE.ENVIRONMENTNAME) \\r\\n Requested By : {{#equals '$(RELEASE.REASON)' 'Schedule' 1}}Scheduled release{{else}}$(RELEASE.DEPLOYMENT.REQUESTEDFOR){{/equals}}\", \"u_short_description\": \"$(shortdescription)\"{{#equals changeType 'Normal' 1}}{{#if description}}, \"u_description\": \"$(description)\"{{/if}}{{#if category}}, \"u_category\": \"$(category)\"{{/if}}{{#if priority}}, \"u_priority\": \"$(priority)\"{{/if}}{{#if risk}}, \"u_risk\": \"$(risk)\"{{/if}}{{#if impact}}, \"u_impact\": \"$(impact)\"{{/if}}{{#if configurationitem}}, \"u_cmdb_ci\": \"$(configurationitem)\" {{/if}}{{#if assignmentgroup}}, \"u_assignment_group\": \"$(assignmentgroup)\"{{/if}}{{/equals}}, \"u_requested_by_date\": \"{{toDateTimeFormat '$(RELEASE.DEPLOYMENT.STARTTIME)' 'yyyy-MM-dd HH:mm:ss'}}\", \"u_start_date\": \"{{#if schedulestarttime}}{{toDateTimeFormat '$(schedulestarttime)' 'yyyy-MM-dd HH:mm:ss'}}{{/if}}\", \"u_end_date\": \"{{#if scheduleendtime}}{{toDateTimeFormat '$(scheduleendtime)' 'yyyy-MM-dd HH:mm:ss'}}{{/if}}\" {{#if otherParameters}}{{toCommaSeparatedKeyValueList otherParameters true}}{{/if}}{{#equals changeType 'Standard' 1}}{{#if standardChangeTemplate}} , \"template_id\": \"$(standardChangeTemplate)\" {{/if}}{{/equals}} }", + "Headers": "{\"Content-Type\":\"application/json\", \"Accept\":\"application/json\"}", + "WaitForCompletion": "false", + "Expression": "eq(jsonpath('$.result[0].status')[0], 'inserted')" + }, + "ExecutionOptions": { + "OutputVariables": "{\"CHANGE_SYSTEM_ID\" : \"jsonpath('$.result[0].sys_id')[0]\"}", + "SkipSectionExpression": "or(eq(eq(taskInputs['changeRequestAction'], 'createNew'), false), and(eq(taskInputs['changeRequestAction'], 'createNew'), eq(isNullOrEmpty(variables['CHANGE_SYSTEM_ID']), false)))" + } + }, + { + "RequestInputs": { + "EndpointId": "$(ServiceNowConnection)", + "EndpointUrl": "$(endpoint.url)/api/now/table/change_request/$(CHANGE_SYSTEM_ID)?sysparm_fields=state,number&&sysparm_display_value=true", + "Method": "GET", + "Headers": "{\"Content-Type\":\"application/json\", \"Accept\":\"application/json\"}", + "WaitForCompletion": "false", + "Expression": "eq(jsonpath('$.result.state')[0], '$(DesiredExitStatus)')" + }, + "ExecutionOptions": { + "OutputVariables": "{\"CHANGE_REQUEST_NUMBER\" : \"jsonpath('$.result.number')[0]\"}", + "SkipSectionExpression": "or(eq(eq(taskInputs['changeRequestAction'], 'createNew'), false), and(eq(taskInputs['changeRequestAction'], 'createNew'), eq(isNullOrEmpty(variables['CHANGE_SYSTEM_ID']), true)))" + } + }, + { + "RequestInputs": { + "EndpointId": "$(ServiceNowConnection)", + "EndpointUrl": "$(endpoint.url)/api/now/table/change_request?number=$(changeRequestNumber)&sysparm_fields=number,sys_id,correlation_id&&sysparm_display_value=true", + "Method": "GET", + "Headers": "{\"Content-Type\":\"application/json\", \"Accept\":\"application/json\"}", + "WaitForCompletion": "false", + "Expression": "eq(count(root['result']), 1)" + }, + "ExecutionOptions": { + "OutputVariables": "{\"CHANGE_REQUEST_NUMBER\" : \"jsonpath('$.result[0].number')[0]\", \"CHANGE_CORRELATION_ID\" : \"jsonpath('$.result[0].correlation_id')[0]\"}", + "SkipSectionExpression": "or(eq(eq(taskInputs['changeRequestAction'], 'useExisting'), false), and( eq(taskInputs['changeRequestAction'], 'useExisting'), eq(eq(taskInputs['changeQueryCriteria'], 'changeRequestNumber'), false)),and( eq(taskInputs['changeRequestAction'], 'useExisting'), eq(taskInputs['changeQueryCriteria'], 'changeRequestNumber'),eq(isNullOrEmpty(variables['CHANGE_REQUEST_NUMBER']), false)))" + } + }, + { + "RequestInputs": { + "EndpointId": "$(ServiceNowConnection)", + "EndpointUrl": "$(endpoint.url)/api/now/table/change_request?sysparm_query=$(queryString)&sysparm_fields=number,sys_id,correlation_id&&sysparm_display_value=true", + "Method": "GET", + "Headers": "{\"Content-Type\":\"application/json\", \"Accept\":\"application/json\"}", + "WaitForCompletion": "false", + "Expression": "eq(count(root['result']), 1)" + }, + "ExecutionOptions": { + "OutputVariables": "{\"CHANGE_REQUEST_NUMBER\" : \"jsonpath('$.result[0].number')[0]\", \"CHANGE_CORRELATION_ID\" : \"jsonpath('$.result[0].correlation_id')[0]\"}", + "SkipSectionExpression": "or(eq(eq(taskInputs['changeRequestAction'], 'useExisting'), false), and( eq(taskInputs['changeRequestAction'], 'useExisting'), eq(eq(taskInputs['changeQueryCriteria'], 'queryString'), false)),and( eq(taskInputs['changeRequestAction'], 'useExisting'), eq(taskInputs['changeQueryCriteria'], 'queryString'),eq(isNullOrEmpty(variables['CHANGE_REQUEST_NUMBER']), false)))" + } + }, + { + "RequestInputs": { + "EndpointId": "$(ServiceNowConnection)", + "EndpointUrl": "$(endpoint.url)/api/now/import/x_mioms_azpipeline_change_request_import", + "Method": "POST", + "Body": "{ \"u_correlation_id\": \"$(CHANGE_CORRELATION_ID)\", \"u_number\" : \"$(CHANGE_REQUEST_NUMBER)\", \"u_work_notes\" : \"$(workNotes)\" {{#if otherParameters}}{{toCommaSeparatedKeyValueList otherParameters true}}{{/if}} }", + "Headers": "{\"Content-Type\":\"application/json\", \"Accept\":\"application/json\"}", + "WaitForCompletion": "false", + "Expression": "eq(jsonpath('$.result[0].status')[0], 'updated')" + }, + "ExecutionOptions": { + "OutputVariables": "{\"CHANGE_REQUEST_NUMBER\" : \"jsonpath('$.result[0].number')[0]\", \"CHANGE_SYSTEM_ID\" : \"jsonpath('$.result[0].sys_id')[0]\"}", + "SkipSectionExpression": "or(eq(eq(taskInputs['changeRequestAction'], 'useExisting'), false), and(eq(taskInputs['changeRequestAction'], 'useExisting'), eq(isNullOrEmpty(variables['CHANGE_SYSTEM_ID']), false)))" + } + }, + { + "RequestInputs": { + "EndpointId": "$(ServiceNowConnection)", + "EndpointUrl": "$(endpoint.url)/api/now/table/change_request?sysparm_query=number=$(changeRequestNumber)&sysparm_fields=sys_id,state,number&&sysparm_display_value=true", + "Method": "GET", + "Headers": "{\"Content-Type\":\"application/json\", \"Accept\":\"application/json\"}", + "WaitForCompletion": "false", + "Expression": "and(eq(count(root['result']), 1), eq(jsonpath('$.result[0].state')[0], '$(DesiredExitStatus)'))" + }, + "ExecutionOptions": { + "OutputVariables": "{ \"CHANGE_REQUEST_NUMBER\" : \"jsonpath('$.result[0].number')[0]\", \"CHANGE_SYSTEM_ID\" : \"jsonpath('$.result[0].sys_id')[0]\"}", + "SkipSectionExpression": "or(eq(eq(taskInputs['changeRequestAction'], 'useExisting'), false), and(eq(taskInputs['changeRequestAction'], 'useExisting'), eq(eq(taskInputs['changeQueryCriteria'], 'changeRequestNumber'), false)))" + } + }, + { + "RequestInputs": { + "EndpointId": "$(ServiceNowConnection)", + "EndpointUrl": "$(endpoint.url)/api/now/table/change_request?sysparm_query=$(queryString)&sysparm_fields=sys_id,state,number&&sysparm_display_value=true", + "Method": "GET", + "Headers": "{\"Content-Type\":\"application/json\", \"Accept\":\"application/json\"}", + "WaitForCompletion": "false", + "Expression": "and(eq(count(root['result']), 1), eq(jsonpath('$.result[0].state')[0], '$(DesiredExitStatus)'))" + }, + "ExecutionOptions": { + "OutputVariables": "{\"CHANGE_REQUEST_NUMBER\" : \"jsonpath('$.result[0].number')[0]\", \"CHANGE_SYSTEM_ID\" : \"jsonpath('$.result[0].sys_id')[0]\"}", + "SkipSectionExpression": "or(eq(eq(taskInputs['changeRequestAction'], 'useExisting'), false), and(eq(taskInputs['changeRequestAction'], 'useExisting'), eq(eq(taskInputs['changeQueryCriteria'], 'queryString'), false)))" + } + } + ] + } + }, + "OutputVariables": [{ + "name": "CHANGE_REQUEST_NUMBER", + "description": "Number of the change request" + }, + { + "name": "CHANGE_SYSTEM_ID", + "description": "Sys_id of the change request" + } + ] +} \ No newline at end of file diff --git a/Extensions/ServiceNow/Src/Tasks/UpdateChangeRequest/UpdateChangeRequestV0/icon.png b/Extensions/ServiceNow/Src/Tasks/UpdateChangeRequest/UpdateChangeRequestV0/icon.png new file mode 100644 index 000000000..878a3486c Binary files /dev/null and b/Extensions/ServiceNow/Src/Tasks/UpdateChangeRequest/UpdateChangeRequestV0/icon.png differ diff --git a/Extensions/ServiceNow/Src/Tasks/UpdateChangeRequest/task.json b/Extensions/ServiceNow/Src/Tasks/UpdateChangeRequest/UpdateChangeRequestV0/task.json similarity index 88% rename from Extensions/ServiceNow/Src/Tasks/UpdateChangeRequest/task.json rename to Extensions/ServiceNow/Src/Tasks/UpdateChangeRequest/UpdateChangeRequestV0/task.json index da42cc496..981d04c19 100644 --- a/Extensions/ServiceNow/Src/Tasks/UpdateChangeRequest/task.json +++ b/Extensions/ServiceNow/Src/Tasks/UpdateChangeRequest/UpdateChangeRequestV0/task.json @@ -15,7 +15,7 @@ "version": { "Major": 0, "Minor": 1, - "Patch": 0 + "Patch": 1 }, "instanceNameFormat": "Update ServiceNow Change Request", "groups": [ @@ -105,11 +105,11 @@ { "RequestInputs": { "EndpointId": "$(ServiceNowConnection)", - "EndpointUrl": "$(endpoint.url)/api/now/table/change_request?sysparm_query=number=$(ChangeRequestNumber)&sysparm_fields=correlation_id,number", + "EndpointUrl": "$(endpoint.url)/api/now/table/change_request?sysparm_query=number=$(ChangeRequestNumber)^ORDERBYDESCsys_created_on&sysparm_fields=sys_created_on,correlation_id,number", "Method": "GET", "Headers": "{\"Content-Type\":\"application/json\", \"Accept\":\"application/json\"}", "WaitForCompletion": "false", - "Expression": "eq(jsonpath('$.result[0].number')[0], '$(ChangeRequestNumber)')" + "Expression": "and(eq(count(root['result']), 1), eq(jsonpath('$.result[0].number')[0], '$(ChangeRequestNumber)'))" }, "ExecutionOptions": { "OutputVariables": "{\"CHANGE_CORRELATION_ID\" : \"jsonpath('$.result[0].correlation_id')[0]\"}" @@ -120,7 +120,7 @@ "EndpointId": "$(ServiceNowConnection)", "EndpointUrl": "$(endpoint.url)/api/now/import/x_mioms_azpipeline_change_request_import", "Method": "POST", - "Body": "{\"u_correlation_id\": \"$(CHANGE_CORRELATION_ID)\",\"u_state\": \"$(NewStatus)\"{{#equals '$(NewStatus)' 'Closed'}}, \"u_close_code\": \"$(CloseCode)\", \"u_close_notes\": \"$(CloseNotes)\"{{/equals}} {{#if otherParameters}}{{toCommaSeparatedKeyValueList otherParameters true}}{{/if}} }", + "Body": "{\"u_correlation_id\": \"$(CHANGE_CORRELATION_ID)\",\"u_number\": \"$(ChangeRequestNumber)\",\"u_state\": \"$(NewStatus)\"{{#equals '$(NewStatus)' 'Closed' 1}}, \"u_close_code\": \"$(CloseCode)\", \"u_close_notes\": \"$(CloseNotes)\"{{/equals}} {{#if otherParameters}}{{toCommaSeparatedKeyValueList otherParameters true}}{{/if}} }", "Headers": "{\"Content-Type\":\"application/json\", \"Accept\":\"application/json\"}", "WaitForCompletion": "false", "Expression": "eq(jsonpath('$.result[0].status')[0], 'updated')" @@ -133,5 +133,4 @@ ] } } -} - +} \ No newline at end of file diff --git a/Extensions/ServiceNow/Src/Tasks/UpdateChangeRequest/UpdateChangeRequestV1/icon.png b/Extensions/ServiceNow/Src/Tasks/UpdateChangeRequest/UpdateChangeRequestV1/icon.png new file mode 100644 index 000000000..878a3486c Binary files /dev/null and b/Extensions/ServiceNow/Src/Tasks/UpdateChangeRequest/UpdateChangeRequestV1/icon.png differ diff --git a/Extensions/ServiceNow/Src/Tasks/UpdateChangeRequest/UpdateChangeRequestV1/task.json b/Extensions/ServiceNow/Src/Tasks/UpdateChangeRequest/UpdateChangeRequestV1/task.json new file mode 100644 index 000000000..110bb3ea5 --- /dev/null +++ b/Extensions/ServiceNow/Src/Tasks/UpdateChangeRequest/UpdateChangeRequestV1/task.json @@ -0,0 +1,144 @@ +{ + "id": "37AC13CA-AEAD-4E19-A5AC-E5366051FC1C", + "name": "UpdateServiceNowChangeRequest", + "friendlyName": "Update ServiceNow Change Request", + "description": "Update ServiceNow change request", + "author": "Microsoft", + "helpMarkDown": "", + "category": "Utility", + "visibility": [ + "Release" + ], + "runsOn": [ + "Server" + ], + "version": { + "Major": 1, + "Minor": 150, + "Patch": 0 + }, + "instanceNameFormat": "Update ServiceNow Change Request", + "groups": [{ + "name": "advancedInputs", + "displayName": "Advanced", + "isExpanded": true + }], + + "inputs": [{ + "name": "ServiceNowConnection", + "type": "connectedService:ServiceNow", + "label": "ServiceNow connection", + "defaultValue": "", + "required": "true", + "helpMarkDown": "Connection to the ServiceNow instance used for change management." + }, + { + "name": "ChangeRequestNumber", + "type": "string", + "label": "Change request number", + "defaultValue": "", + "required": true, + "helpMarkDown": "Change request to update. Must be a valid change request number in ServiceNow." + }, + { + "name": "UpdateStatus", + "type": "boolean", + "label": "Update status", + "required": "false", + "defaultValue": true, + "helpMarkDown": "Select this option to update status of the change request." + }, + { + "name": "NewStatus", + "type": "pickList", + "label": "Updated status of change request", + "required": "true", + "helpMarkDown": "Choose or type status to set for the change request.", + "properties": { + "EditableOptions": "True" + }, + "visibleRule": "UpdateStatus = true" + }, + { + "name": "CloseCode", + "type": "pickList", + "label": "Close code", + "required": "true", + "helpMarkDown": "Choose or type close code (label or value) for the change request", + "properties": { + "EditableOptions": "True" + }, + "visibleRule": "UpdateStatus = true && NewStatus = Closed" + }, + { + "name": "CloseNotes", + "type": "text", + "label": "Close notes", + "required": "true", + "defaultValue": "", + "helpMarkDown": "Notes to be added as closure information to the change request", + "visibleRule": "UpdateStatus = true && NewStatus = Closed" + }, + { + "name": "WorkNotes", + "type": "text", + "label": "Work notes", + "required": "false", + "defaultValue": "", + "groupName": "advancedInputs", + "helpMarkDown": "Work notes to be added for update of the change request." + }, + { + "name": "otherParameters", + "type": "multiLine", + "label": "Additional change request parameters", + "required": "false", + "groupName": "advancedInputs", + "helpMarkDown": "Additional change request properties to set. Specified as Key-value pairs in json format, name being the field name (not label) prefixed with 'u_' in ServiceNow and a valid value. Invalid properties are ignored.", + "properties": { + "editorExtension": "ms.vss-services-azure.azure-servicebus-message-grid" + } + } + ], + "dataSourceBindings": [{ + "target": "NewStatus", + "endpointId": "$(ServiceNowConnection)", + "dataSourceName": "State" + }, + { + "target": "CloseCode", + "endpointId": "$(ServiceNowConnection)", + "dataSourceName": "Close code" + } + ], + + "execution": { + "HttpRequestChain": { + "Execute": [{ + "RequestInputs": { + "EndpointId": "$(ServiceNowConnection)", + "EndpointUrl": "$(endpoint.url)/api/now/table/change_request?sysparm_query=number=$(ChangeRequestNumber)&sysparm_fields=number,correlation_id", + "Method": "GET", + "Headers": "{\"Content-Type\":\"application/json\", \"Accept\":\"application/json\"}", + "WaitForCompletion": "false", + "Expression": "eq(count(root['result']), 1)" + }, + "ExecutionOptions": { + "OutputVariables": "{\"CHANGE_CORRELATION_ID\" : \"jsonpath('$.result[0].correlation_id')[0]\"}" + } + }, + { + "RequestInputs": { + "EndpointId": "$(ServiceNowConnection)", + "EndpointUrl": "$(endpoint.url)/api/now/import/x_mioms_azpipeline_change_request_import", + "Method": "POST", + "Body": "{\"u_number\": \"$(ChangeRequestNumber)\",\"u_correlation_id\": \"$(CHANGE_CORRELATION_ID)\",\"u_work_notes\": \"$(WorkNotes)\"{{#equals UpdateStatus 'true'}},\"u_state\": \"$(NewStatus)\"{{#equals '$(NewStatus)' 'Closed' 1}}, \"u_close_code\": \"$(CloseCode)\", \"u_close_notes\": \"$(CloseNotes)\"{{/equals}}{{/equals}}{{#if otherParameters}}{{toCommaSeparatedKeyValueList otherParameters true}}{{/if}} }", + "Headers": "{\"Content-Type\":\"application/json\", \"Accept\":\"application/json\"}", + "WaitForCompletion": "false", + "Expression": "eq(jsonpath('$.result[0].status')[0], 'updated')" + } + } + ] + } + } +} \ No newline at end of file diff --git a/Extensions/ServiceNow/Src/images/release_gate.png b/Extensions/ServiceNow/Src/images/release_gate.png index 67b181c27..1573d8ab2 100644 Binary files a/Extensions/ServiceNow/Src/images/release_gate.png and b/Extensions/ServiceNow/Src/images/release_gate.png differ diff --git a/Extensions/ServiceNow/Src/images/servicenow_connection.png b/Extensions/ServiceNow/Src/images/servicenow_connection.png index 2da379461..5a6460983 100644 Binary files a/Extensions/ServiceNow/Src/images/servicenow_connection.png and b/Extensions/ServiceNow/Src/images/servicenow_connection.png differ diff --git a/Extensions/ServiceNow/Src/readme.md b/Extensions/ServiceNow/Src/readme.md index afcd06204..fa18613f7 100644 --- a/Extensions/ServiceNow/Src/readme.md +++ b/Extensions/ServiceNow/Src/readme.md @@ -6,39 +6,53 @@ Specific change management subprocesses include change risk assessment, change s With change management, your organization can reduce the risks associated with change, while speeding up the deployments with Azure Pipelines. This extension enables integration of ServiceNow Change Management with Azure Pipelines. -It includes a [release gate](https://docs.microsoft.com/en-us/azure/devops/pipelines/release/approvals/gates?view=vsts) to create a change request in ServiceNow and hold the pipeline till the change management process signals the implementation. -An agentless task to close (update state of) the change request after the deployment is also provided. +It includes +- A [release gate](https://docs.microsoft.com/en-us/azure/devops/pipelines/release/approvals/gates?view=vsts) to hold the pipeline till the change management process signals implementation for a change request. You can create a new change request for every deployment or use an existing change request. +- An agentless task to update a change request during the deployment process. It is typically used as the last task in the stage. -The deployment process in Azure Pipelines helps in automation of the deployment and complement the controls offered by ServiceNow. +The deployment process in Azure Pipelines helps automate the deployment and complement the controls offered by ServiceNow. ## Usage #### Integration requires the [Azure Pipelines](https://store.servicenow.com/sn_appstore_store.do#!/store/application/fa788cb5dbb5630040669c27db961940) application to be installed on the ServiceNow instance. - A service account that has been created in ServiceNow and granted the `x_mioms_azpipeline.pipelinesExecution` role would be used for all the communication. +A service account (user) must be created in ServiceNow and granted the `x_mioms_azpipeline.pipelinesExecution` role. This user would be used for all the communication. #### Create service connection for ServiceNow in Azure Pipelines. Provide username and password for the service account configured previously. ![ServiceNow connection](images/servicenow_connection.png) +Use **Verify connection** before using it in the gate or task. +You must have a compatible Azure Pipelines application installed on the ServiceNow instance. +It is recommended to use the latest version application and gate/task. + #### Configure a release gate for ServiceNow Change Management. ![Release definition](images/release_definition.png) ![Release gate](images/release_gate.png) -A new change request would be created for each run of the pipeline. -Inputs provided in the gate would be set as properties of the change request in ServiceNow. +**Gate** can be configured to **create a new change request** for every run of the pipeline or **use an existing request**. +Inputs provided in the gate are used as properties for the new change request in ServiceNow, if applicable. **Inputs for Gate**: +- **ServiceNow connection**: Connection to the ServiceNow instance used for change management. +- **Action**: Gate on status of new change request or an existing change request. +- **Change type**: Type of the change request. +- **Standard change template**: Change template name for the change request. - **Short description**: A summary of the change. +- **Change query criteria**: Criteria for querying change request. Must uniquely identify the change request. Gate would fail if multiple matching change requests are found. +- **query string/ change request number**: Change request to use. + +Additional properties can be set in the created change request using the following inputs. Note: Available inputs change based on the selected change type. + - **Description**: A detailed description of the change. -- **Category**: The category of the change `eg. Hardware, Network, Software`. +- **Category**: The category of the change eg. Hardware, Network, Software. - **Priority**: Priority of the change. - **Risk**: The risk level for the change. - **Impact**: The effect that the change has on business. - **Configuration Item**: Configuration item (CI) that the change applies to. - **Assignment group**: The group that the change is assigned to. -- **Schedule of change request**: Schedule of the change. Date and time should be in UTC and format should be `yyyy-MM-ddTHH:mm:ssZ. eg. 2018-01-31T07:56:59Z.` -- **Additional change request parameters**: Additional properties of the change request to set. `Name must be field name (not label) prefixed with 'u_' eg. u_backout_plan`. Value must be a valid, accepted value in ServiceNow. Invalid entries are ignored. +- **Schedule of change request**: Schedule of the change as honored by the ServiceNow workflow. Date and time should be in UTC and format should be `yyyy-MM-ddTHH:mm:ssZ. eg. 2018-01-31T07:56:59Z.` +- **Additional change request parameters**: Additional properties of the change request to set. Name must be field name (not label) prefixed with 'u_' `eg. u_backout_plan`. Value must be a valid, accepted value in ServiceNow. Invalid entries are ignored. **Gate Success Criteria** : - **Desired state**: The gate would succeed and the pipeline continues when the change request status is same as the provided value. @@ -46,18 +60,20 @@ Inputs provided in the gate would be set as properties of the change request in **Gate Output Variables** : ServiceNow gate produces output variables.  You must specify reference name to be able to use these output variables in the deployment workflow. Gate variables can be accessed by using `"PREDEPLOYGATE"` as a `prefix`. For eg. when reference name is set to 'gate1', then the change number can be obtained as `$(PREDEPLOYGATE.gate1.CHANGE_REQUEST_NUMBER)`. -- **CHANGE_REQUEST_NUMBER** : Number of the change request created in ServiceNow. -- **CHANGE_SYSTEM_ID** : SystemId of the change request created in ServiceNow. +- **CHANGE_REQUEST_NUMBER** : Number of the change request. +- **CHANGE_SYSTEM_ID** : Sys Id of the change request. -#### Add a task to update the status of the change +#### Add a task to update the change request ![Update task](images/agentless_task.png) **Inputs for Update change request task**: - -- **Change request number**: Number of the change request that you want to update. -- **Updated status of change request** : Status of the change request that you want to update. +- **ServiceNow connection**: Connection to the ServiceNow instance used for change management. +- **Change request number**: Number of the change request to update. +- **Update status**: Select this option to update status of the change request. +- **Updated status of change request** : Status to set for the change request. This input is available if `Update status` is selected. - **Close code and notes**: Closure information for the change request. +- **Work notes**: Work notes for the change request, - **Additional change request parameters**: Additional properties of the change request to set. ## Steps to add mapping for custom fields in Import set transform map : diff --git a/Extensions/ServiceNow/Src/vss-extension.json b/Extensions/ServiceNow/Src/vss-extension.json index 9971de804..473e2cb0a 100644 --- a/Extensions/ServiceNow/Src/vss-extension.json +++ b/Extensions/ServiceNow/Src/vss-extension.json @@ -3,7 +3,7 @@ "id": "vss-services-servicenowchangerequestmanagement", "name": "ServiceNow Change Management", "publisher": "ms-vscs-rm", - "version": "0.0.3", + "version": "3.150.0", "public": true, "description": "Integrate ServiceNow Change Management with Azure Pipelines", "categories": [ @@ -83,6 +83,17 @@ "helpText": "Url of the ServiceNow instance to connect to." }, "dataSources": [ + { + "name": "TestConnection", + "endpointUrl": "{{endpoint.url}}/api/x_mioms_azpipeline/app_version?app_major_version=3", + "resultSelector": "jsonpath:$.result" + }, + { + "name": "StandardChangeTemplate", + "endpointUrl": "{{endpoint.url}}/api/now/table/sys_template?sysparm_query=table=change_request^active=true&sysparm_fields=sys_id,sys_name", + "resultSelector": "jsonpath:$.result[*]", + "resultTemplate": "{ \"Value\" : \"{{sys_id}}\", \"DisplayValue\" : \"{{sys_name}}\" }" + }, { "name": "Priority", "endpointUrl": "{{endpoint.url}}/api/now/table/sys_choice?sysparm_query=element=priority^name={{table}}&sysparm_fields=label", @@ -106,8 +117,11 @@ }, { "name": "Impact", - "endpointUrl": "{{endpoint.url}}/api/now/table/sys_choice?sysparm_query=element=Impact^ORDERBYDESCvalue&sysparm_fields=label", - "resultSelector": "jsonpath:$.result[*].label" + "endpointUrl": "{{endpoint.url}}/api/now/table/sys_choice?sysparm_query=element=Impact^name={{table}}^ORDERBYDESCvalue&sysparm_fields=label", + "resultSelector": "jsonpath:$.result[*].label", + "callbackContextTemplate": "{\"table\": \"task\"}", + "callbackRequiredTemplate": "{{#equals table \"change_request\"}}{{isEqualNumber result.count 0}}{{else}}false{{/equals}}", + "initialContextTemplate": "{\"table\": \"change_request\"}" }, { "name": "Category", @@ -164,7 +178,7 @@ ] } ], - "helpMarkDown": "Learn More" + "helpMarkDown": "Learn More about ServiceNow integration" } }, { diff --git a/Extensions/TeamCity/Src/mp_terms.md b/Extensions/TeamCity/Src/mp_terms.md index c9e668569..620151800 100644 --- a/Extensions/TeamCity/Src/mp_terms.md +++ b/Extensions/TeamCity/Src/mp_terms.md @@ -1,6 +1,6 @@ **MICROSOFT SOFTWARE LICENSE TERMS** -**[MICROSOFT VISUAL STUDIO TEAM SERVICES TOOLS AND EXTENSIONS]** +**[MICROSOFT AZURE DEVOPS TOOLS AND EXTENSIONS]** These license terms are an agreement between Microsoft Corporation (or based on where you live, one of its affiliates) and you. They apply to the software named above. The terms also apply to any Microsoft services or updates for the software, except to the extent those have different terms. diff --git a/Extensions/TeamCity/Src/readme.md b/Extensions/TeamCity/Src/readme.md index 537899ece..519d54aeb 100644 --- a/Extensions/TeamCity/Src/readme.md +++ b/Extensions/TeamCity/Src/readme.md @@ -1,19 +1,19 @@ # TeamCity™ artifacts for Release management -This extension is an integration point for TeamCity™ with Release management in VS Team Services. With this extension, you can deploy artifacts from TeamCity™ builds using Release management. +This extension is an integration point for TeamCity™ with Release management in Azure DevOps. With this extension, you can deploy artifacts from TeamCity™ builds using Release management. -**Note:** This extension work only with VS Team Services and TFS "15" RC onwards. +**Note:** This extension work only with Azure DevOps and TFS "15" RC onwards. ## Usage This extension provides a service endpoint to connect to TeamCity™ account. Once connected, you can link a build artifact from the TeamCity™ project and deploy the same using Release management orchestration service. ### Connecting to a TeamCity™ project -Go to project settings -> Services tab and create a New Service Endpoint of type **TeamCity&trade": +Go to project settings -> Services tab and create a New Service Endpoint of type TeamCity™: ![Creating a TeamCity™ endpoint connection](images/screen1.png) ### Linking a TeamCity™ build -Once you have set up the service endpoint connection, you would be able to link an external TFS/VS-Team-Services build artifact in your release definition +Once you have set up the service endpoint connection, you would be able to link an TeamCity™ build artifact in your release definition ![Linking TeamCity™ artifact](images/screen2.png) [Learn more about artifacts in Release Management](https://msdn.microsoft.com/library/vs/alm/release/author-release-definition/understanding-artifacts). Also you can use [Azure Pipeline Extensions on Github](https://github.com/Microsoft/azure-pipelines-extensions/issues) to report any issues. diff --git a/Extensions/TwitterSentimentAnalysis/Src/Tasks/TwitterSentimentAnalysis/task.json b/Extensions/TwitterSentimentAnalysis/Src/Tasks/TwitterSentimentAnalysis/task.json index 959fe3973..44ef5948a 100644 --- a/Extensions/TwitterSentimentAnalysis/Src/Tasks/TwitterSentimentAnalysis/task.json +++ b/Extensions/TwitterSentimentAnalysis/Src/Tasks/TwitterSentimentAnalysis/task.json @@ -17,7 +17,7 @@ "version": { "Major": 0, "Minor": 0, - "Patch": 3 + "Patch": 4 }, "instanceNameFormat": "Twitter Sentiment Analysis", "groups": [ @@ -99,7 +99,11 @@ "southeastasia": "Southeast Asia", "eastasia": "East Asia", "australiaeast": "Australia East", - "brazilsouth": "Brazil South" + "brazilsouth": "Brazil South", + "canadacentral": "Canada Central" + }, + "properties": { + "EditableOptions": "True" }, "required": true, "groupName": "cognitiveServiceInputs", @@ -136,4 +140,4 @@ } } } -} \ No newline at end of file +} diff --git a/Extensions/TwitterSentimentAnalysis/Src/vss-extension.json b/Extensions/TwitterSentimentAnalysis/Src/vss-extension.json index 30006ab64..f8c8e211e 100644 --- a/Extensions/TwitterSentimentAnalysis/Src/vss-extension.json +++ b/Extensions/TwitterSentimentAnalysis/Src/vss-extension.json @@ -3,7 +3,7 @@ "id": "vss-services-twittersentimentanalysis", "name": "Twitter Sentiment Analysis", "publisher": "ms-vscs-rm", - "version": "0.0.5", + "version": "0.0.6", "public": true, "description": "Gate your releases based on sentiment of tweets for a hashtag.", "_description.comment": "The below format to define extensions is currently in preview and may change in future.", diff --git a/README.md b/README.md index 483cc28ec..a647fc34f 100644 --- a/README.md +++ b/README.md @@ -16,4 +16,10 @@ You'll have to run `gulp build` and `gulp test` before you start packaging. - `gulp package` will package all the extensions and stores them in "_package" folder. - `gulp package --publisher=` will package all the extensions under a new publisher name that you specify in "_package" folder. -- `gulp package --extension=` will package the single extension you mention, and stores it in "_package" folder. +- `gulp package --extension=` will package the single extension you mention, and stores it in "_package" folder. + +## Updating Feed + +Feed with various nugets to consume resides at [this location](https://1essharedassets.visualstudio.com/1esPkgs/_packaging?_a=feed&feed=vsts_rm_extensions) + +Feed can be updated/republished by executing [this build definition](https://dev.azure.com/mseng/AzureDevOps/_build?definitionId=6226&_a=summary) diff --git a/ServerTaskHelper/VstsServerTaskHelper.SampleClient/SampleServiceBusMessageBody.txt b/ServerTaskHelper/VstsServerTaskHelper.SampleClient/SampleServiceBusMessageBody.txt new file mode 100644 index 000000000..09069d9e2 --- /dev/null +++ b/ServerTaskHelper/VstsServerTaskHelper.SampleClient/SampleServiceBusMessageBody.txt @@ -0,0 +1,22 @@ +Sample Message body: + +{ + "JobId": "$(system.jobId)", + "PlanId": "$(system.planId)", + "scheduleBuildRequesterAlias": "$(scheduleBuildRequesterAlias)", + "requesterEmail": "$(Release.requestedForEmail)", + "requesterName": "$(Release.requestedFor)", + "requesterId": "$(Release.requestedForId)", + "TimelineId": "$(system.timelineId)", + "ProjectId": "$(system.teamProjectId)", + "VstsUrl": "$(system.CollectionUri)", + "AuthToken": "$(system.AccessToken)", + "ReleaseProperties": { + "ReleaseId": "$(Release.releaseId)", + "ReleaseName": "$(Release.releaseName)", + "ReleaseDefinitionName": "$(Release.definitionName)", + "ReleaseEnvironmentName": "$(Release.environmentName)", + "ReleaseEnvironmentUri": "$(release.environmentUri)", + "ReleaseUri": "$(release.releaseUri)" + } +} diff --git a/docs/authoring/PartialArtifactsDownload.md b/docs/authoring/PartialArtifactsDownload.md new file mode 100644 index 000000000..ae57a91d7 --- /dev/null +++ b/docs/authoring/PartialArtifactsDownload.md @@ -0,0 +1,26 @@ +# Supporting Partial Download of Artifacts + +Partial download of artifacts is now supported in release pipelines. +This doc describes what the artifact extension author needs to do to get this feature. + +1. Provide a data source with the name "artifacts". +2. Provide a data source with the name "artifactItems". + +### Role of the above 2 data sources in this feature. + + +#### artifacts +This data source is expected to return the list of artifacts that the corresponding artifact has published. For instance, in the below picture, the artifact _rogoyal-test has published 3 artifacts i.e drop1, drop2, drop3. These 3 artifacts are listed here are the result of the "artifacts" data source. + +![artifacts](./images/artifacts.png) + +Note: All the artifacts in this example are of type "folder" and hence are expand-able. This takes us to the next data source. + +#### artifactItems +This data source returns the child items of a given artifact. For example, in the below picture, drop1 artifact item has 2 children items i.e Application Tier and Tools. + +![artifactItems](./images/artifactItems.PNG) + +Note: Even the 2 children items here are also of type folder, expanding them is not supported. Right now we support only 2 levels of folder hierarchy. + +Since we need to know which data source to call for different types of artifact items, you need to specify the "artifactType" field in the "data" dictionary of the "artifacts" data source response. Corresponding to the artifactType, you need to specify the data source binding of the artifact's children in the "browsableArtifactTypeMapping" dictionary. You can take a look at the team city extension [here](https://github.com/Microsoft/azure-pipelines-extensions/blob/a87e4580ac9fa2ded6155b2d8cc334948ba05c12/Extensions/TeamCity/Src/vss-extension.json#L300). diff --git a/docs/authoring/artifactextension.md b/docs/authoring/artifactextension.md index 32c4d113c..452fed362 100644 --- a/docs/authoring/artifactextension.md +++ b/docs/authoring/artifactextension.md @@ -244,8 +244,8 @@ In order to describe the salient properties within artifact source contribution, | `connection` | Endpoint used to connect to the artifact source | `true` | | `definition` | Artifact source definition (e.g. Build definition in case of *VSTS Build*, Repo in case of *TF Git/ GitHub*, Package in case of *VSTS Package Management*) | `true` | | `defaultVersionType` | Default version type specified for the artifact source. It can be one of the [supported default version types](#defaultVersionTypes). In case this input is not specified, then the default value will be `selectDuringReleaseCreationType`. | `false` -| `defaultVersionSpecific` | Specific version in case `defaultVersionType` is `specificVersionType` | `false` -| `branch` | Branch input in case `defaultVersionType` is `latestFromBranchType` | `false` +| `defaultVersionSpecific` | Specific version in case `defaultVersionType` is `specificVersionType` as defined [here](#defaultVersionSpecific) | `false` +| `branch` | Branch input in case `defaultVersionType` is `latestFromBranchType` as defined [here](#branch) | `false` | `artifacts` | First level contents from latest version of a specific artifact source (e.g. Artifacts in a *VSTS Build*, Root files/folders in case of *VSTS Git/GitHub* repo) | `false` ||| @@ -253,11 +253,110 @@ In order to describe the salient properties within artifact source contribution, | Default Version Type Value | Description | | ------------- |:-------------:| | `latestType` | Latest artifact version | -| `selectDuringReleaseCreationType` | Specify at the time or release creation ** | +| `selectDuringReleaseCreationType` | Specify at the time or release creation | | `specificVersionType` | Specific version of artifact is provided | | `latestFromBranchType` | Latest artifact version from a specific branch | -** *In case of auto-triggered release, the latest version will be picked up.* +*In case of auto-triggered release, the latest version will be picked up.* + +Here's an example of how the supported default versions can be specified: +``` +{ + "id": "defaultVersionType", + "name": "i18n:Default version", + "description": "i18n:The default version will be deployed when new releases are created. The version can be changed for manually created releases at the time of release creation", + "inputMode": "combo", + "isConfidential": false, + "hasDynamicValueInformation": false, + "validation": { + "isRequired": true, + "dataType": "string" + }, + "values": { + "inputId": "defaultVersionTypeValues", + "defaultValue": "selectDuringReleaseCreationType", + "isLimitedToPossibleValues": true, + "possibleValues": [ + { + "value": "latestType", + "displayValue": "i18n:Latest" + }, + { + "value": "selectDuringReleaseCreationType", + "displayValue": "i18n:Specify at the time of release creation" + }, + { + "value": "specificVersionType", + "displayValue": "i18n:Specific version" + }, + { + "value": "latestFromBranchType", + "displayValue": "i18n:Latest from specific branch", + "data": { + "visibleRule": "{expression}" + } + } + ] + } + }, +``` + +Note that a visibleRule can be specified as part of data within individual possible values of defaultVersionType inputs (like in the case of latestFromBranchType above). The expression can use the operators == || && and use any of the inputs that are bound to values in the evaluation. + +### Default version specific input : + +In case of specificVersionType, defaultVersionSpecific input is expected to be defined in the following way: +``` + { + "id": "defaultVersionSpecific", + "name": "i18n: Version", + "description": "i18n: Default to specific version", + "inputMode": "Combo", + "isConfidential": false, + "hasDynamicValueInformation": true, + "validation": { + "isRequired": true, + "dataType": "string" + }, + "dependencyInputIds": [ + "connection", + "definition", + "defaultVersionType", + {additional inputs} + ], + "properties": { + "visibleRule": "defaultVersionType == specificVersionType" + } + }, +``` +A data source binding can be defined targeting defaultVersionSpecific input in order to populate the drop-down with appropriate values. + +### Branch input : +In case of latestFromBranchType, branch input is expected to be defined in the following way: +``` + { + "id": "branch", + "name": "i18n: Branch", + "description": "i18n: The latest artifact from selected branch will be included in release.", + "inputMode": "Combo", + "isConfidential": false, + "hasDynamicValueInformation": true, + "validation": { + "isRequired": true, + "dataType": "string" + }, + "dependencyInputIds": [ + "connection", + "definition", + "defaultVersionType", + {additional inputs} + ], + "properties": { + "visibleRule": "defaultVersionType == latestFromBranchType" + } + }, +``` +A data source binding can be defined targeting branch input in order to populate the drop-down with appropriate values. ### Well-known targets for data source bindings : | Target | Description | Required | diff --git a/docs/authoring/endpoints/dataSources.md b/docs/authoring/endpoints/dataSources.md index f1802294b..b4f6f40a6 100644 --- a/docs/authoring/endpoints/dataSources.md +++ b/docs/authoring/endpoints/dataSources.md @@ -67,7 +67,7 @@ Result selector can also be an XPATH query. For e.g. *Azure Classic* endpoint ty "resultSelector": "xpath://Site/Name" } ``` - + ## Data source bindings In order to refer to data sources defined by endpoint type in tasks, data source bindings are used. For e.g. *AzureRmWebAppDeployment* task defines data source binding referring to the above data source : @@ -237,6 +237,8 @@ Here’s the result after applying the data source binding corresponding to `Slo } ``` +**Note**: In case your response is an arrary of strings like `['value1','value2']` you can use template like `"{ Value : "{{defaultResultKey}}", DisplayValue : "{{defaultResultKey}}" }"`.`defaultResultKey` will take on values `value1`, `value2` e.t.c + ## Test service endpoint To avoid creating or updating a service endpoint with incorrect values for the inputs, we support a “Test” action in service endpoint UI. Upon choosing to “Test” an endpoint, we internally invoke query on a data source with a specific name – `TestConnection`. For e.g. *Azure RM* endpoint type defines the following `TestConnection` data source: @@ -267,9 +269,9 @@ For e.g. below is a dataSourceBinding for querying alert rules defined in Micros { "target": "alertRules", "endpointId": "$(connectedServiceNameARM)", - "endpointUrl": "{{endpoint.url}}subscriptions/{{endpoint.subscriptionId}}/resourcegroups/$(ResourceGroupName)/providers/microsoft.insights/alertrules?api-version=2016-03-01&$filter=targetResourceUri eq /subscriptions/{{endpoint.subscriptionId}}/resourceGroups/$(ResourceGroupName)/providers/$(ResourceType)/$(resourceName)", + "endpointUrl": "{{{endpoint.url}}}subscriptions/{{{endpoint.subscriptionId}}}/resourcegroups/$(ResourceGroupName)/providers/microsoft.insights/alertrules?api-version=2016-03-01&$filter=targetResourceUri eq /subscriptions/{{{endpoint.subscriptionId}}}/resourceGroups/$(ResourceGroupName)/providers/$(ResourceType)/$(resourceName)", "resultSelector": "jsonpath:$.value[?(@.properties.isEnabled == true)]", - "resultTemplate": "{ \"Value\" : \"{{name}}\", \"DisplayValue\":\"{{name}}\"}" + "resultTemplate": "{ \"Value\" : \"{{{name}}}\", \"DisplayValue\":\"{{{name}}}\"}" } ] -``` \ No newline at end of file +``` diff --git a/docs/authoring/images/artifactItems.PNG b/docs/authoring/images/artifactItems.PNG new file mode 100644 index 000000000..af2660f66 Binary files /dev/null and b/docs/authoring/images/artifactItems.PNG differ diff --git a/docs/authoring/images/artifacts.png b/docs/authoring/images/artifacts.png new file mode 100644 index 000000000..0a850fe17 Binary files /dev/null and b/docs/authoring/images/artifacts.png differ diff --git a/externals.json b/externals.json index 5a1dbe57b..1ac291bdc 100644 --- a/externals.json +++ b/externals.json @@ -10,6 +10,7 @@ }, "no-cache": [ "Ansible", + "DownloadCircleCIArtifacts", "DownloadTeamCityArtifacts", "DownloadExternalBuildArtifacts", "DownloadArtifactsTfsVersionControl", diff --git a/package-lock.json b/package-lock.json index 8f67fb362..0fdbbdfbc 100644 --- a/package-lock.json +++ b/package-lock.json @@ -947,6 +947,13 @@ } } }, + "chownr": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.1.tgz", + "integrity": "sha512-j38EvO5+LHX84jlo6h4UzmOwi0UgW61WRyPtJz4qaadK5eY3BTS5TY/S1Stc3Uk2lIM6TPevAlULiEJwie860g==", + "dev": true, + "optional": true + }, "class-utils": { "version": "0.3.6", "resolved": "https://registry.npmjs.org/class-utils/-/class-utils-0.3.6.tgz", @@ -1615,9 +1622,9 @@ } }, "extend": { - "version": "3.0.1", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.1.tgz", - "integrity": "sha1-p1Xqe8Gt/MWjHOfnYtuq3F5jZEQ=", + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", + "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", "dev": true }, "extend-shallow": { @@ -2181,6 +2188,16 @@ } } }, + "fs-minipass": { + "version": "1.2.6", + "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.6.tgz", + "integrity": "sha512-crhvyXcMejjv3Z5d2Fa9sf5xLYVCF5O1c71QxbVnbLsmYMBEvDAftewesN/HhY03YRoA7zOMxjNGrF5svGaaeQ==", + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, "fs-mkdirp-stream": { "version": "1.0.0", "resolved": "https://registry.npmjs.org/fs-mkdirp-stream/-/fs-mkdirp-stream-1.0.0.tgz", @@ -2259,9 +2276,7 @@ }, "chownr": { "version": "1.0.1", - "bundled": true, - "dev": true, - "optional": true + "bundled": true }, "code-point-at": { "version": "1.1.0", @@ -2314,8 +2329,6 @@ "fs-minipass": { "version": "1.2.5", "bundled": true, - "dev": true, - "optional": true, "requires": { "minipass": "^2.2.1" } @@ -2426,12 +2439,12 @@ "minimist": { "version": "0.0.8", "bundled": true, - "dev": true + "dev": true, + "optional": true }, "minipass": { "version": "2.2.4", "bundled": true, - "dev": true, "requires": { "safe-buffer": "^5.1.1", "yallist": "^3.0.0" @@ -2440,8 +2453,6 @@ "minizlib": { "version": "1.1.0", "bundled": true, - "dev": true, - "optional": true, "requires": { "minipass": "^2.2.1" } @@ -2450,6 +2461,7 @@ "version": "0.5.1", "bundled": true, "dev": true, + "optional": true, "requires": { "minimist": "0.0.8" } @@ -2626,8 +2638,7 @@ }, "safe-buffer": { "version": "5.1.1", - "bundled": true, - "dev": true + "bundled": true }, "safer-buffer": { "version": "2.1.2", @@ -2692,21 +2703,6 @@ "dev": true, "optional": true }, - "tar": { - "version": "4.4.1", - "bundled": true, - "dev": true, - "optional": true, - "requires": { - "chownr": "^1.0.1", - "fs-minipass": "^1.2.5", - "minipass": "^2.2.4", - "minizlib": "^1.1.0", - "mkdirp": "^0.5.0", - "safe-buffer": "^5.1.1", - "yallist": "^3.0.2" - } - }, "util-deprecate": { "version": "1.0.2", "bundled": true, @@ -2729,8 +2725,7 @@ }, "yallist": { "version": "3.0.2", - "bundled": true, - "dev": true + "bundled": true } } }, @@ -3248,7 +3243,7 @@ }, "readable-stream": { "version": "1.0.34", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-1.0.34.tgz", "integrity": "sha1-Elgg40vIQtLyqq+v5MKRbuMsFXw=", "dev": true, "requires": { @@ -3260,13 +3255,13 @@ }, "string_decoder": { "version": "0.10.31", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-0.10.31.tgz", "integrity": "sha1-YuIDvEF2bGwoyfyEMB2rHFMQ+pQ=", "dev": true }, "through2": { "version": "0.6.5", - "resolved": "http://registry.npmjs.org/through2/-/through2-0.6.5.tgz", + "resolved": "https://registry.npmjs.org/through2/-/through2-0.6.5.tgz", "integrity": "sha1-QaucZ7KdVyCQcUEOHXp6lozTrUg=", "dev": true, "requires": { @@ -3336,7 +3331,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -3351,7 +3346,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -4276,7 +4271,7 @@ }, "readable-stream": { "version": "2.3.6", - "resolved": "http://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", + "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.6.tgz", "integrity": "sha512-tQtKA9WIAhBF3+VLAseyMqZeBjW0AHJoxOtYqSUZNJxauErmLbVm2FW1y+J/YA9dUrAC39ITejlZWhVIwawkKw==", "dev": true, "requires": { @@ -4291,7 +4286,7 @@ }, "string_decoder": { "version": "1.1.1", - "resolved": "http://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", + "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz", "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==", "dev": true, "requires": { @@ -5105,6 +5100,34 @@ "integrity": "sha1-G8K8cWWM3KVxJHVoQ2NhWwtPaVs=", "dev": true }, + "minipass": { + "version": "2.3.5", + "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.3.5.tgz", + "integrity": "sha512-Gi1W4k059gyRbyVUZQ4mEqLm0YIUiGYfvxhF6SIlk3ui1WVxMTGfGdQ2SInh3PDrRTVvPKgULkpJtT4RH10+VA==", + "dev": true, + "requires": { + "safe-buffer": "^5.1.2", + "yallist": "^3.0.0" + }, + "dependencies": { + "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==", + "dev": true + } + } + }, + "minizlib": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.2.1.tgz", + "integrity": "sha512-7+4oTUOWKg7AuL3vloEWekXY2/D20cevzsrNT2kGWm+39J9hGTCBv8VI5Pm5lXZ/o3/mdR4f8rflAPhnQb8mPA==", + "dev": true, + "optional": true, + "requires": { + "minipass": "^2.2.1" + } + }, "mixin-deep": { "version": "1.3.1", "resolved": "https://registry.npmjs.org/mixin-deep/-/mixin-deep-1.3.1.tgz", @@ -6482,12 +6505,6 @@ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=", "dev": true }, - "extend": { - "version": "3.0.2", - "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz", - "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==", - "dev": true - }, "qs": { "version": "6.5.2", "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz", @@ -7030,6 +7047,31 @@ "then-request": "^2.0.1" } }, + "tar": { + "version": "4.4.8", + "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.8.tgz", + "integrity": "sha512-LzHF64s5chPQQS0IYBn9IN5h3i98c12bo4NCO7e0sGM2llXQ3p2FGC5sdENN4cTW48O915Sh+x+EXx7XW96xYQ==", + "dev": true, + "optional": true, + "requires": { + "chownr": "^1.1.1", + "fs-minipass": "^1.2.5", + "minipass": "^2.3.4", + "minizlib": "^1.1.1", + "mkdirp": "^0.5.0", + "safe-buffer": "^5.1.2", + "yallist": "^3.0.2" + }, + "dependencies": { + "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==", + "dev": true, + "optional": true + } + } + }, "then-request": { "version": "2.2.0", "resolved": "https://registry.npmjs.org/then-request/-/then-request-2.2.0.tgz", @@ -7756,6 +7798,12 @@ "integrity": "sha1-bRX7qITAhnnA136I53WegR4H+kE=", "dev": true }, + "yallist": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.0.3.tgz", + "integrity": "sha512-S+Zk8DEWE6oKpV+vI3qWkaK+jSbIK86pCwe2IF/xwIpQ8jEuxpw9NyaGjmp9+BoJv5FV2piqCDcoCtStppiq2A==", + "dev": true + }, "yargs": { "version": "4.8.1", "resolved": "https://registry.npmjs.org/yargs/-/yargs-4.8.1.tgz",